aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/glibc/glibc-2.3.2/10_cvs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/glibc/glibc-2.3.2/10_cvs.patch')
-rw-r--r--recipes/glibc/glibc-2.3.2/10_cvs.patch177118
1 files changed, 177118 insertions, 0 deletions
diff --git a/recipes/glibc/glibc-2.3.2/10_cvs.patch b/recipes/glibc/glibc-2.3.2/10_cvs.patch
new file mode 100644
index 0000000000..0c3ecdcb40
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.2/10_cvs.patch
@@ -0,0 +1,177118 @@
+--- glibc-2.3.2/CANCEL-FILE-WAIVE 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/CANCEL-FILE-WAIVE 2003-09-02 05:24:58.000000000 -0400
+@@ -0,0 +1,33 @@
++mkdtemp.os
++tmpnam.os
++tmpnam_r.os
++__assert.os
++assert.os
++assert-perr.os
++gconv_builtin.os
++gconv_simple.os
++gconv.os
++iconv.os
++strfmon.os
++strfmon_l.os
++argp-xinl.os
++iofdopen.os
++printf_fp.os
++printf_fphex.os
++printf_size.os
++strxfrm.os
++strxfrm_l.os
++strcoll.os
++strcoll_l.os
++alphasort.os
++alphasort64.os
++set-freeres.os
++btowc.os
++wctob.os
++mblen.os
++strops.os
++wstrops.os
++fmemopen.os
++closedir.os
++hsearch.os
++hsearch_r.os
+--- glibc-2.3.2/ChangeLog 2003-02-28 20:10:14.000000000 -0500
++++ glibc-2.3.2/ChangeLog 2003-09-20 09:40:33.000000000 -0400
+@@ -1,3 +1,5919 @@
++2003-09-19 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/Makefile ($(objpfx)librtld.os): Create link map also for
++ final build to ease quality control.
++
++ * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): If compiled for
++ ld.so, don't include NULL buffer pointer handling.
++
++2003-09-19 Jakub Jelinek <jakub@redhat.com>
++
++ * dlfcn/dlopen.c (dlopen): Add static_link_warning.
++
++2003-09-18 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/memstream.c (open_memstream): Use _IO_init instead of
++ _IO_old_init.
++
++2003-09-17 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/wordexp.c (eval_expr_val): Use strtol since we
++ have to recognize octal and hexadecimal numbers as well. Simplify
++ function, signs are handled in strtol.
++ * posix/wordexp-test.c: Add tests for octal and hexadecimal
++ numbers in arithmetic expressions.
++
++2003-09-17 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/Makefile (distribute): Add tst-alignmod.c.
++ (tests): Add tst-align.
++ (modules-names): Add tst-alignmod.
++ (CFLAGS-tst-align.c, CFLAGS-tst-alignmod.c): Add
++ $(stack-align-test-flags).
++ ($(objpfx)tst-align): Depend on libdl.
++ ($(objpfx)tst-align.out): Depend on tst-alignmod.so.
++ * elf/tst-align.c: New file.
++ * elf/tst-alignmod.c: New file.
++ * misc/Makefile (CFLAGS-tst-tsearch.c): Add $(stack-align-test-flags).
++ * misc/tst-tsearch.c: Include tst-stack-align.h.
++ (stack_align_check): New array.
++ (cmp_fn, walk_action): Use TEST_STACK_ALIGN ().
++ (main): Report error if stack was not enough aligned
++ in cmp_fn or walk_action.
++ * stdlib/Makefile (CFLAGS-tst-qsort.c): Add $(stack-align-test-flags).
++ * stdlib/tst-qsort.c: Include tst-stack-align.h.
++ (align_check): New var.
++ (compare): Use TEST_STACK_ALIGN () macro.
++ (main): Report error if stack was not enough aligned in compare.
++ * sysdeps/i386/i686/Makefile (stack-align-test-flags): Remove
++ unneeded -mpreferred-stack-boundary=4.
++ * sysdeps/x86_64/tst-stack-align.h: New file.
++
++ * libio/memstream.c (_IO_wmem_jumps): Remove unused structure.
++ (_IO_wmem_sync, _IO_wmem_finish): Remove unused functions.
++
++2003-09-17 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/arm/dl-machine.h (CALL_ROUTINE): Deleted.
++ (BX): Define.
++ (ELF_MACHINE_RUNTIME_TRAMPOLINE): Optimise a little.
++
++ * sysdeps/arm/sysdep.h (DO_RET): New.
++
++ * sysdeps/unix/sysv/linux/arm/vfork.S: Add #error if __NR_vfork
++ required but not defined. Improve test of error code.
++
++2003-09-17 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/Makefile (stack-align-test-flags): Add
++ -malign-double -mpreferred-stack-boundary=4.
++
++2003-09-17 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/posix/utimes.c (__utimes): Truncate instead of round.
++ * sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise.
++
++2003-09-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/Makefile (sysdep-CFLAGS): If not in math or csu
++ subdir, add -mpreferred-stack-boundary=4, with few exceptions.
++
++2003-09-17 Jakub Jelinek <jakub@redhat.com>
++
++ * Makeconfig (stack-align-test-flags): Set.
++ * stdlib/Makefile (CFLAGS-tst-bsearch.c): Add
++ $(stack-align-test-flags).
++ * stdlib/tst-bsearch.c: Include tst-stack-align.h.
++ (align_check): New var.
++ (comp): Use TEST_STACK_ALIGN macro.
++ (do_test): Fail if align_check != 1.
++ * sysdeps/generic/tst-stack-align.h: New file.
++ * sysdeps/i386/i686/Makefile (stack-align-test-flags): Add -msse.
++ * sysdeps/i386/i686/tst-stack-align.h: New file.
++
++2003-09-17 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/clone.S: Make sure child gets a
++ stack which is aligned (mod 16).
++
++2003-09-17 Uwe Reimann <Uwe_Reimann@gmx.net>
++ Hans-Peter Nilsson <hp@axis.com>
++
++ * sysdeps/cris/dl-machine.h (elf_machine_type_class): Classify
++ R_CRIS_GLOB_DAT as ELF_RTYPE_CLASS_PLT. Clarify comment.
++
++2003-09-17 Jakub Jelinek <jakub@redhat.com>
++
++ * dirent/scandir.c: Include bits/libc-lock.h.
++ (struct scandir_cancel_struct): New type.
++ (cancel_handler): New function.
++ (SCANDIR): Add __libc_cleanup_{push,pop}, save state into
++ scandir_cancel_struct.
++
++2003-09-16 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/Dist: Remove internal_statvfs.c.
++ * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
++ Add internal_statvfs.
++ * sysdeps/unix/sysv/linux/fstatvfs.c: Call __internal_statvfs
++ instead of including "internal_statvfs.c".
++ * sysdeps/unix/sysv/linux/statvfs.c: Likewise.
++ * sysdeps/unix/sysv/linux/internal_statvfs.c: Make it a real function.
++ Add code to avoid the stat calls on all the reported mount points
++ when we can determine mismatch in advance.
++ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add AUTOFS_SUPER_MAGIC and
++ USBDEVFS_SUPER_MAGIC.
++
++2003-09-16 Jakub Jelinek <jakub@redhat.com>
++
++ * posix/Versions (sched_getaffinity, sched_setaffinity): Change
++ from GLIBC_2.3.2 to GLIBC_2.3.3 symbol version.
++
++2003-09-16 Bruno Haible <bruno@clisp.org>
++
++ * intl/tst-gettext2.sh: Set GCONV_PATH and LOCPATH only after
++ invoking msgfmt, not before.
++
++2003-09-15 Jakub Jelinek <jakub@redhat.com>
++
++ * argp/argp.h (argp_parse, __argp_parse): Remove __THROW.
++ * argp/Makefile (CFLAGS-argp-help.c, CFLAGS-argp-parse.c): Add
++ $(uses-callbacks).
++ * dirent/Makefile (CFLAGS-scandir.c, CFLAGS-scandir64.c): Likewise.
++ * elf/Makefile (CFLAGS-dl-iterate-phdr.c,
++ CFLAGS-dl-iterate-phdr-static.c): Add $(uses-callbacks).
++ * elf/dl-iteratephdr.c (cancel_handler): New function.
++ (__dl_iterate_phdr): Add __libc_cleanup_{push,pop}.
++ * elf/link.h (dl_iterate_phdr): Remove __THROW.
++ * io/Makefile (CFLAGS-fts.c): Merge into one assignment.
++ Add $(uses-callbacks).
++ (CFLAGS-ftw.c, CFLAGS-ftw64.c): Add $(uses-callbacks).
++ * misc/Makefile (CFLAGS-tsearch.c, CFLAGS-lsearch.c): Change
++ $(exceptions) to $(uses-callbacks).
++ * Makeconfig (uses-callbacks): Set to $(exceptions).
++ * posix/Makefile (CFLAGS-glob.c, CFLAGS-glob64.c): Add
++ $(uses-callbacks).
++ * stdlib/Makefile (CFLAGS-bsearch.c, CFLAGS-msort.c, CFLAGS-qsort.c):
++ Likewise.
++
++2003-09-15 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/m68k/setjmp.c: Add hidden_def.
++
++2003-09-14 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/memstream.c (open_memstream): Don't allow wide char operations.
++
++ * dirent/dirent.h: Remove __THROW from scandir.
++
++2003-09-14 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/unix/sysv/linux/arm/mmap.S: Use sys_mmap2 if it's known
++ to be available.
++
++ * sysdeps/unix/sysv/linux/arm/mmap64.S: Optimise code a little.
++
++ * sysdeps/arm/memset.S: Rewrite.
++
++2003-09-12 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New.
++ (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and
++ __SLONGWORD_TYPE otherwise.
++
++2003-09-14 Ulrich Drepper <drepper@redhat.com>
++
++ * io/Makefile (CFLAGS-ftw.c): Add -fexceptions.
++ (CFLAGS-ftw64.c): Likewise.
++
++2003-09-13 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/Makefile (CFLAGS-nscd_getpw_r.c): Add -fexceptions.
++ (CFLAGS-nscd_getgr_r.c): Likewise.
++ (CFLAGS-nscd_gethst_r.c): Likewise.
++
++2003-09-12 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/if_index.c: Use only non-cancelable
++ interfaces.
++
++ * grp/Makefile (CFLAGS-getgrgid_r.c, CFLAGS-getgrnam_r.c,
++ CFLAGS-fgetgrent.c, CFLAGS-fgetgrent_r.c, CFLAGS-putgrent.c,
++ CFLAGS-initgroups.c, CFLAGS-getgrgid.c): Add -fexceptions.
++ * inet/Makefile (CFLAGS-either_ntoh.c, CFLAGS-either_hton.c,
++ CFLAGS-getnetgrent.c, CFLAGS-getnetgrent_r.c): Likewise.
++ * io/Makefile (CFLAGS-posix_fallocate.c, CFLAGS-posix_fallocate64.c):
++ Likewise.
++ * misc/Makefile (CFLAGS-err.c): Likewise.
++ * posix/Makefile (CFLAGS-getaddrinfo.c, CFLAGS-spawn.c,
++ CFLAGS-spawnp.c, CFLAGS-spawni.c, CFLAGS-pause.c, CFLAGS-glob.c,
++ CFLAGS-glob64.c): Likewise.
++ * pwd/Makefile (CFLAGS-getpw.c): Likewise.
++ * shadow/Makefile (CFLAGS-fgetspent.c, CFLAGS-fgetspent_r.c,
++ CFLAGS-putspent.c, CFLAGS-getspnam.c, CFLAGS-getspnam_r.c): Likewise.
++ * stdio-common/Makefile (CFLAGS-cuserid.c): Likewise.
++ * sunrpc/Makefile (CFLAGS-openchild.c): Likewise.
++
++ * stdlib/Makefile (CFLAGS-mkstemp.c): Remove definition.
++
++ * libio/stdio.h: Remove __THROW from cuserid prototype.
++
++ * locale/loadarchive.c: Use only non-cancelable interfaces.
++ * resolv/herror.c (herror): Likewise.
++
++ * malloc/hooks.c: Before using IO stream mark stream so it uses
++ only non-cancelable interfaces.
++ * malloc/malloc.c: Likewise.
++ * posix/getopt.c: Likewise.
++
++
++2003-09-11 Jakub Jelinek <jakub@redhat.com>
++
++ * Makerules (LDFLAGS-c.so): Remove -u __register_frame.
++
++2003-09-12 Ulrich Drepper <drepper@redhat.com>
++
++ * stdio-common/stdio_ext.h: Mark most functions with __THROW.
++
++ * misc/err.h: Remove __THROW from all prototypes.
++
++ * posix/getopt.h (__THROW): Define if not already defined. Add
++ __THROW to the getopt functions.
++
++2003-09-11 Ulrich Drepper <drepper@redhat.com>
++
++ * io/Makefile (CFLAGS-lockf.c): Add -fexceptions.
++ (CFLAGS-fts.c): Likewise.
++ * io/fcntl.h: Remove __THROW from lockf prototypes.
++ * io/fts.h: Remove most __THROW.
++
++2003-09-11 H.J. Lu <hongjiu.lu@intel.com>
++
++ * elf/tls-macros.h (TLS_IE): Add a stop bit for ia64.
++ (TLS_LD): Likewise.
++ (TLS_GD): Likewise.
++
++2003-09-11 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/fileops.c (_IO_new_file_overflow): Add INTUSE to
++ _IO_free_backup_area call.
++
++2003-09-10 Chris Demetriou <cgd@broadcom.com>
++
++ * sysdeps/unix/sysv/linux/mips/pread64.c (__libc_pread64): Fix
++ syscall invocation.
++ * sysdeps/unix/sysv/linux/mips/pwrite64.c (__libc_pwrite64): Likewise.
++ * sysdeps/unix/sysv/linux/mips/pread.c (__libc_pread): Likewise.
++ Also, only assert off_t size is 4 for N32 and O32, and clean up
++ white space.
++ * sysdeps/unix/sysv/linux/mips/pwrite.c (__libc_pwrite): Likewise.
++
++2003-09-10 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr):
++ Don't use c_ispeed under [! _HAVE_STRUCT_TERMIOS_C_ISPEED].
++ Don't use c_ospeed under [! _HAVE_STRUCT_TERMIOS_C_OSPEED].
++ * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
++ Reported by Daniel Jacobowitz <drow@mvista.com>.
++
++2003-09-10 Jakub Jelinek <jakub@redhat.com>
++
++ * string/Makefile (strop-tests): Add memccpy.
++ * string/test-memccpy.c: New test.
++
++2003-09-09 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT): Add
++ siginfo_t * argument before, change into struct ucontext *.
++ (SIGCONTEXT_EXTRA_ARGS): Define to _si,.
++ (GET_PC, GET_FRAME, GET_STACK): Adjust for ctx being a pointer
++ instead of structure.
++ * sysdeps/unix/sysv/linux/x86_64/register-dump.h (REGISTER_DUMP):
++ Likewise.
++
++2003-09-09 Ulrich Drepper <drepper@redhat.com>
++
++ * string/stratcliff.c (main): Check memccpy.
++
++2003-04-11 Jes Sorensen <jes@wildopensource.com>
++
++ * sysdeps/ia64/memccpy.S: When recovering for src_aligned and the
++ character is found during recovery, use correct register when
++ determining the position of the found character.
++
++2003-04-01 Jes Sorensen <jes@wildopensource.com>
++
++ * sysdeps/ia64/memccpy.S: Use speculatively loads for readahead to
++ avoid segfaults when reading from unmapped pages. For aligned
++ reload and continue, for misaligned, roll back and use byte copy.
++ Save ar.ec on entry and restore on exit.
++
++2003-09-09 Chris Demetriou <cgd@broadcom.com>
++
++ * sysdeps/unix/mips/sysdep.h (PSEUDO_END): Undef before defining.
++
++2003-09-08 Chris Demetriou <cgd@broadcom.com>
++
++ * sysdeps/mips/mips64/n32/Implies: Move ieee754/ldbl-128 to
++ the top of the list.
++ * sysdeps/mips/mips64/n64/Implies: Likewise.
++
++2003-09-08 Roland McGrath <roland@frob.com>
++
++ * sysdeps/unix/sysv/linux/speed.c
++ (cfsetospeed): Only set c_ospeed under [_HAVE_STRUCT_TERMIOS_C_OSPEED].
++ (cfsetispeed): Only set c_ispeed under [_HAVE_STRUCT_TERMIOS_C_ISPEED].
++ * sysdeps/unix/sysv/linux/bits/termios.h
++ (_HAVE_STRUCT_TERMIOS_C_ISPEED, _HAVE_STRUCT_TERMIOS_C_OSPEED): Define.
++ * sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
++
++2003-09-08 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/x86_64/register-dump.h: Undo last change.
++ * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: Likewise.
++
++2003-09-08 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/bits/types.h (__quad_t): Make long int if 64-bit.
++ (__u_quad_t): Make unsigned long int if 64-bit.
++ (__SQUAD_TYPE): Make long int if 64-bit.
++ (__UQUAD_TYPE): Make unsigned long int if 64-bit.
++ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove.
++
++2003-09-08 Ulrich Drepper <drepper@redhat.com>
++
++ * Makefile (tests): Run check-c++-types.sh if possible.
++ * scripts/check-c++-types.h: New file.
++ * scripts/data/c++-types-i386-linux-gnu.data: New file.
++
++2003-09-08 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
++ Use struct sigcontext.
++
++ * sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT):
++ Use struct sigcontext.
++ (GET_PC): Adopt.
++ (GET_FRAME): Likewise.
++ (GET_STACK): Likewise.
++
++2003-09-08 Wolfram Gloger <wg@malloc.de>
++
++ * malloc/malloc.c (sYSMALLOc): Move foreign sbrk accounting into
++ contiguous case. Bug report from Prem Gopalan <prem@mazunetworks.com>.
++ (mALLOPt): Avoid requirement of C99.
++
++2003-09-08 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/bug-ftell.c: Include <sys/types.h>.
++ (main): Mark cp as const.
++
++2003-09-07 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/syscalls.list (fcntl): Remove.
++ * sysdeps/unix/sysv/linux/x86_64/fcntl.c: Remove.
++
++2003-09-05 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Fill in c_ispeed
++ and c_ospeed fields.
++ * sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Set c_ospeed field.
++ (cfsetispeed): Set c_ispeed field.
++ * sysdeps/unix/sysv/linux/tcsetattr.c (IBAUD0): Define unconditionally
++ to match corresponding speed.c code.
++
++2003-09-06 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/wfileops.c (_IO_wfile_underflow): Mark beginning of the
++ narrow character buffer.
++ * libio/Makefile: Add rules to build and run bug-ftell.
++ * libio/bug-ftell.c: New file.
++
++ * stdio-common/vfprintf.c: Don't use the first grouping number twice.
++
++ * stdio-common/vfscanf.c (vfscanf): Fix recognition of characters
++ matching the decimal point and possibly leading the thousands
++ separator. This caused the recognition of thousands separators to
++ always fail.
++
++2003-09-05 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/fileops.c (_IO_new_file_overflow): Handle switching to
++ write mode from read in backup buffer.
++ * libio/Makefile (tests): Add bug-ungetc2.
++ * libio/bug-ungetc2.c: New file.
++
++2003-09-05 Roland McGrath <roland@redhat.com>
++
++ * nss/getXXbyYY.c (FUNCTION_NAME): Remove unused variable.
++
++2003-09-04 Roland McGrath <roland@frob.com>
++
++ * sysdeps/mach/hurd/mmap.c (__mmap): If io_map fails with MIG_BAD_ID,
++ EOPNOTSUPP, or ENOSYS, change it to ENODEV.
++
++2003-09-04 H.J. Lu <hongjiu.lu@intel.com>
++
++ * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h (MINSIGSTKSZ):
++ Fix a typo.
++
++2003-09-05 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/i386/bits/string.h (__memrchr): Do addition in assembler
++ to make it conforming C.
++ * sysdeps/i386/i486/bits/string.h (__memrchr): Likewise.
++
++ * sysdeps/unix/sysv/linux/i386/fcntl.c (__fcntl_nocancel): Change
++ prototype to use variable argument lists and get the possible one
++ argument via va_arg.
++ * sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/fcntl.c: New.
++
++2003-09-04 Ulrich Drepper <drepper@redhat.com>
++
++ * posix/unistd.h: Add back __THROW to sysconf, pathconf, fpathconf.
++
++ * sysdeps/unix/sysv/linux/pathconf.c (__statfs_filesize_max):
++ Report correct value for vxfs.
++ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define VXFS_SUPER_MAGIC.
++
++ * gmon/gmon.c: Use only not-cancelable syscalls to write profiling
++ data.
++
++ * sysdeps/generic/utmp_file.c: Use not-cancelable syscalls all
++ over the place. It would be allowed to have these functions as
++ cancellation points but the cleanup would be ugly and a lot of
++ work.
++
++ * sysdeps/generic/not-cancel.h (fcntl_not_cancel): Define.
++ * sysdeps/unix/sysv/linux/not-cancel.h (fcntl_not_cancel): Define.
++
++ * include/fcntl.h (__fcntl_nocancel): Declare.
++ * sysdeps/unix/sysv/linux/fcntl.c: New file.
++ * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Only enable
++ cancellation if absolutely needed.
++ (__fcntl_nocancel): Define.
++
++ * posix/unistd.h (gethostid): Remove __THROW. Clarify comment.
++ * sysdeps/unix/sysv/linux/Makefile (CFLAGS-gethostid.c): Add
++ -fexceptions.
++ * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Use
++ extend_alloca.
++
++ * resolv/res_init.c (__res_nclose): Use close_not_cancel_no_status
++ instead of __close.
++
++ * nss/getXXbyYY.c (FUNCTION_NAME): Add a few casts. Remove
++ unnecessary errno handling.
++
++ * nss/getXXbyYY_r.c (INTERNAL): Use better variable name.
++ Initialize it in all cases. Change it to be a bit more like the
++ code we had before.
++
++2003-09-04 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/fileops.c (_IO_file_read, _IO_new_file_write): Add
++ __builtin_expect.
++ (_IO_file_open): Likewise. Use close_not_cancel.
++
++2003-09-04 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/libio.h: Define _IO_FLAGS2_NOTCANCEL.
++ * libio/fileops.c [_LIBC]: Remove close macro.
++ (_IO_file_open): If _IO_FLAGS2_NOTCANCEL is set, use open_not_cancel.
++ (_IO_new_file_open): Recognize 'c' flag in mode string.
++ (_IO_file_read): If _IO_FLAGS2_NOTCANCEL is set use read_not_cancel.
++ (_IO_new_file_write): If _IO_FLAGS2_NOTCANCEL is set use
++ write_not_cancel.
++ * iconv/gconv_conf.c: Use fopen with 'c' mode flag.
++ * inet/rcmd.c: Likewise.
++ * inet/ruserpass.c: Likewise.
++ * intl/localealias.c: Likewise.
++ * malloc/mtrace.c: Likewise.
++ * misc/getpass.c: Likewise.
++ * misc/getttyent.c: Likewise.
++ * misc/mntent_r.c: Likewise.
++ * misc/getusershell.c: Likewise.
++ * nss/nsswitch.c: Likewise.
++ * resolv/res_hconf.c: Likewise.
++ * resolv/res_init.c: Likewise.
++ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
++ * time/getdate.c: Likewise.
++ * time/tzfile.c: Likewise.
++ * misc/fstab.h: Undo last change.
++ * misc/mntent.h: Likewise.
++ * misc/Makefile: Remove CFLAGS-mntent_r.c, CFLAGS-mntent.c, and
++ CFLAGS-fstab.c definition.
++
++2003-09-04 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/unwind.h (_Unwind_GetBSP): Add prototype.
++
++2003-09-03 Ulrich Drepper <drepper@redhat.com>
++
++ * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid
++ returning ERANGE if this wasn't intended.
++
++2003-09-03 Jakub Jelinek <jakub@redhat.com>
++
++ * intl/loadmsgcat.c (open, close, read, mmap, munmap): Define as
++ function-like macros.
++
++2003-09-03 Ulrich Drepper <drepper@redhat.com>
++
++ * grp/Makefile (CFLAGS-getgrent_r.c): Add -fexceptions.
++ (CFLAGS-getgrent.c): Likewise.
++ * pwd/Makefile (CFLAGS-getpwent_r.c): Add -fexceptions.
++ (CFLAGS-getpwent.c): Likewise.
++ * shadow/Makefile (CFLAGS-getspent_r.c): Add -fexceptions.
++ (CFLAGS-getspent.c): Likewise.
++
++ * inet/Makefile: Add -fexceptions to CFLAGS for the various
++ getXXent and getXXbyYY functions.
++
++ * locale/loadlocale.c: Use not-cancelable variants of open, close,
++ and read.
++
++2003-09-02 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove
++ rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait, rt_sigqueueinfo and
++ rt_sigpending.
++ * sysdeps/unix/sysv/linux/alpha/sigaction.c (__syscall_rt_sigaction):
++ New prototype.
++ * sysdeps/unix/sysv/linux/arm/syscalls.list (__syscall_*): Remove
++ unused __syscall_ stubs.
++ * sysdeps/unix/sysv/linux/arm/Makefile (sysdep_routines): Remove
++ rt_*.
++ * sysdeps/unix/sysv/linux/cris/Makefile: Removed.
++ * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
++ (__syscall_recvfrom, __syscall_sendto): Remove unused aliases.
++ * sysdeps/unix/sysv/linux/mips/syscalls.list (__syscall_*): Remove
++ unused __syscall_ stubs.
++ * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Remove rt_*.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
++ (__syscall_*): Remove unused __syscall_ stubs.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
++ (__syscall_*): Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/Makefile (sysdep_routines): Remove
++ rt_*.
++ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (__syscall_*):
++ Remove unused __syscall_ stubs.
++ * sysdeps/unix/sysv/linux/sh/Makefile (sysdep_routines): Remove rt_*.
++ * sysdeps/unix/sysv/linux/rt_sigaction.c: Removed.
++ * sysdeps/unix/sysv/linux/rt_sigpending.c: Removed.
++ * sysdeps/unix/sysv/linux/rt_sigprocmask.c: Removed.
++ * sysdeps/unix/sysv/linux/rt_sigqueueinfo.c: Removed.
++ * sysdeps/unix/sysv/linux/rt_sigreturn.c: Removed.
++ * sysdeps/unix/sysv/linux/rt_sigsuspend.c: Removed.
++ * sysdeps/unix/sysv/linux/rt_sigtimedwait.c: Removed.
++ * sysdeps/unix/sysv/linux/s_pread64.c: Removed.
++ * sysdeps/unix/sysv/linux/s_pwrite64.c: Removed.
++ * sysdeps/unix/sysv/linux/alpha/gethostname.c: Remove unused
++ __syscall_* prototypes.
++ * sysdeps/unix/sysv/linux/alpha/ipc_priv.h: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise.
++ * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/chown.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/fchown.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/getuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setgid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setregid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pread.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/ptrace.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/ioctl.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/xstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/pwrite.c: Likewise.
++ * sysdeps/unix/sysv/linux/execve.c: Likewise.
++ * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise.
++ * sysdeps/unix/sysv/linux/reboot.c: Likewise.
++ * sysdeps/unix/sysv/linux/_exit.c: Likewise.
++ * sysdeps/unix/sysv/linux/ftruncate64.c: Likewise.
++ * sysdeps/unix/sysv/linux/pwrite64.c: Likewise.
++ * sysdeps/unix/sysv/linux/fxstat64.c: Likewise.
++ * sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise.
++ * sysdeps/unix/sysv/linux/readahead.c: Likewise.
++ * sysdeps/unix/sysv/linux/getcwd.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigwait.c: Likewise.
++ * sysdeps/unix/sysv/linux/getdents.c: Likewise.
++ * sysdeps/unix/sysv/linux/readv.c: Likewise.
++ * sysdeps/unix/sysv/linux/getpriority.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigaction.c: Likewise.
++ * sysdeps/unix/sysv/linux/ipc_priv.h: Likewise.
++ * sysdeps/unix/sysv/linux/llseek.c: Likewise.
++ * sysdeps/unix/sysv/linux/sysctl.c: Likewise.
++ * sysdeps/unix/sysv/linux/lxstat64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mmap64.c: Likewise.
++ * sysdeps/unix/sysv/linux/ustat.c: Likewise.
++ * sysdeps/unix/sysv/linux/poll.c: Likewise.
++ * sysdeps/unix/sysv/linux/pread64.c: Likewise.
++ * sysdeps/unix/sysv/linux/writev.c: Likewise.
++ * sysdeps/unix/sysv/linux/pread.c: Likewise.
++ * sysdeps/unix/sysv/linux/ptrace.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigpending.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigqueue.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
++ * sysdeps/unix/sysv/linux/truncate64.c: Likewise.
++ * sysdeps/unix/sysv/linux/xmknod.c: Likewise.
++ * sysdeps/unix/sysv/linux/xstat64.c: Likewise.
++
++2003-09-02 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Revert last change.
++ * sysdeps/unix/sysv/linux/powerpc/syscalls.list: New file.
++ * sysdeps/unix/sysv/linux/sparc/syscalls.list: New file.
++
++2003-09-02 Ulrich Drepper <drepper@redhat.com>
++
++ * stdio-common/Makefile (CFLAGS-vprintf.c): Add -fexceptions.
++
++ * intl/loadmsgcat.c: For _LIBC, call not cancelable versions of
++ open, close, and read.
++
++ * sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Also define
++ *_nocancel name.
++
++ * sysdeps/unix/sysv/linux/i386/syscalls.list: Add waitpid.
++
++ * libio/Makefile (CFLAGS-oldtmpfile.c): Add -fexceptions.
++ * sysdeps/generic/tmpfile.c (tmpfile): Use __unlink instead of remove.
++ * libio/oldtmpfile.c (__old_tmpfile): Likewise.
++
++ * misc/Makefile (CFLAGS-getusershell.c): Add -fexceptions.
++
++ * io/Makefile (CFLAGS-statfs.c): Add -fexceptions.
++ (CFLAGS-fstatfs.c): Likewise.
++ (CFLAGS-statvfs.c): Likewise.
++ (CFLAGS-fstatvfs.c): Likewise.
++
++2003-09-01 Ulrich Drepper <drepper@redhat.com>
++
++ * misc/Makefile (CFLAGS-getsysstats.c): Add -fexceptions.
++ * posix/unistd.h: Remove __THROW from pathconf, fpathconf,
++ sysconf.
++ * posix/Makefile (CFLAGS-sysconf.c): Add -fexceptions.
++ (CFLAGS-pathconf.c): Likewise.
++ (CFLAGS-fpathconf.c): Likewise.
++
++ * misc/Makefile (CFLAGS-fstab.c): Add -fexceptions.
++ * misc/fstab.h: Remove all __THROW.
++ * misc/Makefile (CFLAGS-mntent.c): Add -fexceptions.
++ (CFLAGS-mntent_r.c): Likewise.
++ * misc/mntent.h: Remove most __THROW.
++
++ * misc/Makefile (CFLAGS-mkstemp.c): Add -fexceptions.
++ (CFLAGS-mkstemp64.c): Likewise.
++
++ * sysdeps/generic/wordexp.c (parse_comm): Disable cancellation
++ around call to exec_comm.
++ * posix/wordexp.h: Remove __THROW from wordexp.
++ * posix/Makefile (CFLAGS-wordexp.c): Add -fexceptions.
++
++ * sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Use
++ not-cancelable functions.
++
++ * libio/Makefile (CFLAGS-oldiofopen.c): Add -fexceptions.
++ (CFLAGS-iofopen.c): Likewise.
++ (CFLAGS-iofopen64.c): Likewise.
++
++ * stdlib/fmtmsg.c (fmtmsg): Disable cancellation around output
++ functions.
++ * stdlib/Makefile (CFLAGS-fmtmsg.c): Add -fexceptions.
++ * stdlib/fmtmsg.h: Remove __THROW from fmtmsg.
++
++ * stdlib/stdlib.h: Remove __THROW from posix_openpt and getpt.
++ * login/Makefile (CFLAGS-getpt.c): Add -fexceptions.
++
++2003-09-01 Thorsten Kukuk <kukuk@suse.de>
++
++ * nis/nss_compat/compat-spwd.c (getspnam_plususer): Return
++ NSS_STATUS_SUCCESS if entry was found.
++ (getspent_next_file): Store user in blacklist after entry
++ was found, use innetgr.
++
++2003-09-01 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c: New.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c: New.
++
++ * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Fix tls offset
++ computation for TCB_AT_TP. Support l_firstbyte_offset != 0 for
++ DTV_AT_TP, optimize.
++
++2003-08-31 Kaz Kojima <kkojima@rr.iij4u.or.jp>
++
++ * sysdeps/unix/sysv/linux/sh/Versions: Add posix_fadvise64 and
++ posix_fallocate64 at GLIBC_2.3.3.
++ * sysdeps/unix/sysv/linux/sh/sysdep.h (PSEUDO_ERRVAL): Define.
++ (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise.
++
++2003-08-08 H.J. Lu <hongjiu.lu@intel.com>
++
++ * sysdeps/unix/sysv/linux/ia64/syscalls.list: Remove __syscall_
++ functions.
++
++2003-08-31 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/libioP.h (_IO_acquire_lock_fct): Define as inline function.
++ Code by Richard Henderson.
++
++2003-08-31 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/unix/sysv/linux/arm/Versions: Add posix_fadvise64 and
++ posix_fallocate64 at GLIBC_2.3.3.
++
++2003-08-31 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET.
++ * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp.
++
++2003-08-30 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/sysdep.h (cfi_window_save, CFI_WINDOW_SAVE): Define.
++ * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Allow file to be
++ included multiple times.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Pass
++ ptid, tls, ctid arguments to the kernel.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c (__getpagesize):
++ Use INTERNAL_SYSCALL instead of __syscall_getpagesize.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
++ (__libc_sigaction): Use INLINE_SYSCALL instead of
++ __syscall_rt_sigaction.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list
++ (__syscall_getgroups, __syscall_getpagesize, __syscall__llseek,
++ __syscall_setfsgid, __syscall_setfsuid, __syscall_setgid,
++ __syscall_setgroups, __syscall_setregid, __syscall_setreuid,
++ __syscall_ipc, __syscall_setuid, __syscall_rt_sigaction,
++ __syscall_rt_sigpending, __syscall_rt_sigprocmask,
++ __syscall_rt_sigqueueinfo, __syscall_rt_sigsuspend,
++ __syscall_rt_sigtimedwait): Remove unneeded syscall stubs.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (sysdep_routines):
++ Remove rt_sigsuspend, rt_sigprocmask, rt_sigtimedwait,
++ rt_sigqueueinfo, rt_sigaction and rt_sigpending.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
++ (__CLONE_SYSCALL_STRING): Define.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/socket.S (__socket): Add
++ CFI directives.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
++ (__CLONE_SYSCALL_STRING): Define.
++ * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_CLONE_SYSCALL):
++ Define.
++ * sysdeps/unix/sysv/linux/sparc/system.c: New file.
++
++2003-08-30 Ulrich Drepper <drepper@redhat.com>
++
++ * sunrpc/rpc/clnt.h: Remove a few __THROW.
++ * sunrpc/Makefile (CFLAGS-auth_unix.c): Add -fexceptions.
++ (CFLAGS-key_call.c): Likewise.
++ (CFLAGS-pmap_rmt.c): Likewise.
++ (CFLAGS-clnt_perr.c): Likewise.
++ * sunrpc/rpc/auth.h: Remove serveral __THROW.
++
++ * inet/Makefile (CFLAGS-gethstbyad_r.c): Add -fexceptions.
++ (CFLAGS-gethstbynm_r.c): Likewise.
++ (CFLAGS-gethstbynm2_r.c): Likewise.
++ (CFLAGS-rcmd.c): Likewise.
++ * resolv/Makefile (CFLAGS-res_hconf.c): Add -fexceptions.
++
++ * argp/Makefile (CFLAGS-argp-help.c): Add -fexceptions.
++ (CFLAGS-argp-fmtstream.c): Likewise.
++ * argp/argp.h: Remove a number of __THROW.
++
++ * misc/sys/syslog.h (vsyslog): Remove __THROW.
++
++ * misc/Makefile (CFLAGS-getpass.c): Add -fexceptions.
++ * misc/getpass.c (getpass): Add cleanup handler to ensure the
++ stream is closed even if the thread is canceled.
++ (call_fclose): New function.
++ * posix/unistd.h: Remove __THROW from getpass prototype.
++
++ * posix/Makefile (CFLAGS-getopt.c): Add -fexceptions.
++
++ * signal/signal.h (psignal): Remove __THROW.
++ * stdio-common/Makefile (CFLAGS-psignal.c): Add -fexceptions.
++
++ * misc/Makefile (CFLAGS-error.c): Define.
++ * misc/error.c (error): Disable cancellation handling around the
++ actual output. The message should in any case be printed.
++ (error_at_line): Likewise.
++
++ * misc/error.h: Protect parameter names with leading __.
++
++2003-08-28 Carlos O'Donell <carlos@baldric.uwo.ca>
++
++ * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop.
++
++2003-08-29 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/iofgetpos64.c (_IO_new_fgetpos64): Move lock release to the
++ end.
++
++2003-08-29 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/stdio.h: Remove a few more __THROW.
++
++2003-08-29 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c,
++ fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c,
++ getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c,
++ iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c,
++ iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c,
++ iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c,
++ ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c,
++ oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c,
++ oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c,
++ putwchar.c and rewind.c with exceptions.
++ * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock,
++ _IO_release_lock): Define.
++ * libio/fileops.c (_IO_new_file_underflow): Use it.
++ * libio/fputc.c (fputc): Likewise.
++ * libio/fputwc.c (fputwc): Likewise.
++ * libio/freopen64.c (freopen64):
++ * libio/freopen.c (freopen): Likewise.
++ * libio/fseek.c (fseek): Likewise.
++ * libio/fseeko64.c (fseeko64): Likewise.
++ * libio/fseeko.c (fseeko): Likewise.
++ * libio/ftello64.c (ftello64): Likewise.
++ * libio/ftello.c (ftello): Likewise.
++ * libio/fwide.c (fwide): Likewise.
++ * libio/getc.c (_IO_getc): Likewise.
++ * libio/getchar.c (getchar): Likewise.
++ * libio/getwc.c (_IO_getwc): Likewise.
++ * libio/getwchar.c (getwchar): Likewise.
++ * libio/iofclose.c (_IO_new_fclose):
++ * libio/iofflush.c (_IO_fflush): Likewise.
++ * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise.
++ * libio/iofgetpos.c (_IO_new_fgetpos): Likewise.
++ * libio/iofgets.c (_IO_fgets): Likewise.
++ * libio/iofgetws.c (fgetws): Likewise.
++ * libio/iofputs.c (_IO_fputs): Likewise.
++ * libio/iofputws.c (fputws): Likewise.
++ * libio/iofread.c (_IO_fread): Likewise.
++ * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise.
++ * libio/iofsetpos.c (_IO_new_fsetpos): Likewise.
++ * libio/ioftell.c (_IO_ftell): Likewise.
++ * libio/iofwrite.c (_IO_fwrite): Likewise.
++ * libio/iogetdelim.c (_IO_getdelim): Likewise.
++ * libio/iogets.c (_IO_gets): Likewise.
++ * libio/ioputs.c (_IO_puts): Likewise.
++ * libio/ioseekoff.c (_IO_seekoff): Likewise.
++ * libio/ioseekpos.c (_IO_seekpos): Likewise.
++ * libio/iosetbuffer.c (_IO_setbuffer): Likewise.
++ * libio/iosetvbuf.c (_IO_setvbuf): Likewise.
++ * libio/ioungetc.c (_IO_ungetc): Likewise.
++ * libio/ioungetwc.c (ungetwc): Likewise.
++ * libio/oldiofclose.c (_IO_old_fclose): Likewise.
++ * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise.
++ * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise.
++ * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise.
++ * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise.
++ * libio/peekc.c (_IO_peekc_locked): Likewise.
++ * libio/putc.c (_IO_putc): Likewise.
++ * libio/putchar.c (putchar): Likewise.
++ * libio/putwc.c (putwc): Likewise.
++ * libio/putwchar.c (putwchar): Likewise.
++ * libio/rewind.c (rewind): Likewise.
++ * libio/wfileops.c (_IO_wfile_underflow): Likewise.
++
++2003-08-29 Ulrich Drepper <drepper@redhat.com>
++
++ * signal/signal.h: sighold, sigrelse, sigignore, sigset were
++ available in XPG4.2.
++
++2003-08-27 Phil Knirsch <pknirsch@redhat.com>
++ Jakub Jelinek <jakub@redhat.com>
++
++ * sunrpc/svc.c (svc_getreqset): Fix fds_bits reading on 64-bit
++ big endian arches. Don't read beyond end of fds_bits array.
++
++2003-04-27 Bruno Haible <bruno@clisp.org>
++
++ * manual/message.texi (Advanced gettext functions): Add information
++ about Korean, Portuguese, Latvian. Gaeilge is also known as Irish.
++ Add section about Lithuanian, reported by Ricardas Cepas
++ <rch@richard.eu.org>.
++ Add information about Croatian.
++ Ukrainian is like Russian, reported by Andy Rysin <arysin@yahoo.com>.
++ Remove remark about continuation lines that is not true for PO files.
++ Fix formula for Slovenian, reported by Roman Maurer
++ <roman.maurer@amis.net>.
++
++2003-08-27 Ulrich Drepper <drepper@redhat.com>
++
++ * math/math_private.h: Declare __copysignf.
++ * sysdeps/ieee754/flt-32/s_scalbnf.c: Use __copysignf instead of
++ copysignf.
++
++ * sysdeps/x86_64/fpu/bits/mathinline.h: Define __signbitf,
++ __signbit, and __signbitl inline functions.
++
++ * sysdeps/unix/sysv/linux/x86_64/__start_context.S: Use
++ HIDDEN_JUMPTARGET instead of JUMPTARGET to call exit().
++
++ * sysdeps/x86_64/bsd-_setjmp.S [PIC]: Jump to __GI___sigsetjmp.
++ * sysdeps/x86_64/setjmp.S: Add libc_hidden_def for __sigsetjmp.
++
++2003-08-27 Jakub Jelinek <jakub@redhat.com>
++
++ * inet/inet_mkadr.c (inet_makeaddr): Optimize.
++
++2003-08-27 Ulrich Drepper <drepper@redhat.com>
++
++ * include/stdio.h: Add declarations for __builtin_fwrite and
++ __builtin_fwrite_unlocked.
++
++2003-08-27 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/opendir.c (__opendir): Make sure even struct dirent64
++ fits into allocation. Add padding on 32-bit arches so that
++ dirp->data is enough aligned for struct dirent64.
++ Avoid clearing of the buffer, just clear DIR structure.
++
++2003-08-26 Ulrich Drepper <drepper@redhat.com>
++
++ * nss/nsswitch.c: Add libc_hidden_def for __nss_lookup_function.
++ * nss/nsswitch.h: Add libc_hidden_proto for __nss_lookup_function.
++
++2003-08-26 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/elf/Makefile: New file.
++
++2003-08-26 Jakub Jelinek <jakub@redhat.com>
++
++ * login/programs/utmpdump.c (print_entry): Cast tv_usec to long
++ to match format string.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c (union semun): Add
++ __old_buf.
++ (__new_semctl): Shut up warning.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h
++ (_dl_string_hwcap): Add __attribute__ ((always_inline)).
++
++2003-08-26 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/ldconfig.c (search_dir): When checking for GNU-style .so
++ link file use the real file name, not the resolved name we got by
++ following the symlinks.
++
++2003-08-25 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/oldfileops.c (_IO_old_file_init): Initialize _mode field
++ if the object size is large enough.
++
++2003-08-25 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/ldconfig.c (search_dir): Treat symlink as regular file
++ if it won't point to itself unless it is .so symlink for the linker.
++
++2003-08-25 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/libio.h (_IO_fwide): In the mode==0 optimization, don't
++ use _mode if _IO_fwide_maybe_incompatible.
++ * libio/iofwide.c (_IO_fwide): Move the test for mode == 0 after
++ the compatibility test.
++
++2003-08-25 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/cache.c (save_cache): Don't write beyond end of file_entries
++ buffer.
++ Duplicate last old cache entry if the count would be odd.
++
++2003-08-25 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/posix_fadvise64.c: Cast arguments of
++ __LONG_LONG_PAIR to long.
++
++2003-08-25 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_ERRVAL): Define.
++ (PSEUDO_END_ERRVAL, ret_ERRVAL): Likewise.
++
++2003-08-18 Alfred M. Szmidt <ams@kemisten.nu>
++
++ * sysdeps/generic/bits/libc-lock.h (__libc_cleanup_pop): Redefine
++ and use __libc_cleanup_region_end instead.
++
++2003-08-25 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/ldconfig.c (search_dir): Revert patch of 2003-7-21.
++
++2003-08-22 Ulrich Drepper <drepper@redhat.com>
++
++ * io/fcntl.h (posix_fallocate): Change type of third parameter to
++ off_t.
++ (posix_fallocate64): Change type of third parameter to off64_t.
++ * sysdeps/generic/posix_fallocate.c: Adjust for type change.
++ * sysdeps/posix/posix_fallocate.c: Likewise.
++ * sysdeps/generic/posix_fallocate64.c: Likewise.
++ * sysdeps/posix/posix_fallocate64.c: Likewise. Add compatibility
++ code for 32-bit platforms.
++ * sysdeps/unix/sysv/linux/i386/Versions: Add new version for
++ posix_fallocate64.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-32/Versions: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise.
++
++2003-08-19 Ulrich Drepper <drepper@redhat.com>
++
++ * string/bits/string2.h (__STRING2_COPY_TYPE): Add attribute to
++ the type, not to name.
++
++ * stdio-common/test-vfprintf.c (main): Don't write temporary file
++ into source directory.
++
++ * malloc/malloc.c (_int_free): Add cheap test for some invalid
++ block sizes.
++
++ * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo in
++ syscall name.
++
++2003-08-18 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Fold EISDIR error
++ into EINVAL.
++
++2003-08-18 H.J. Lu <hongjiu.lu@intel.com>
++
++ * sysdeps/ia64/dl-machine.h (elf_machine_rela): Use _dl_reloc_bad_type.
++ (elf_machine_lazy_rel): Likewise.
++
++2003-08-18 Art Haas <ahaas@airmail.net>
++
++ * malloc/malloc.h: Remove unneeded ';' where closing the C++
++ extern block.
++
++2003-08-18 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/ia64/dl-fptr.h (ELF_MACHINE_LOAD_ADDRESS): Support
++ loading big binaries where @gprel(sym) cannot be handled in 'add'
++ but instead has to be used with 'movl'.
++
++2003-08-17 Juergen Kreileder <jk@blackdown.de>
++ Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/x86_64/bits/byteswap.h: New file.
++
++2003-08-17 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Fix typo.
++
++2003-08-16 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc32/sysdep.h (PSEUDO_ERRVAL,
++ PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
++ * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_ERRVAL,
++ PSEUDO_RET_ERRVAL, ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
++ * sysdeps/unix/alpha/sysdep.h (PSEUDO_ERRVAL,
++ ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
++ * sysdeps/unix/mips/sysdep.h (PSEUDO_ERRVAL,
++ ret_ERRVAL, PSEUDO_END_ERRVAL): Define.
++ * sysdeps/unix/sparc/sysdep.h (PSEUDO_ERRVAL,
++ ret_ERRVAL): Define.
++ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_ERRVAL,
++ PSEUDO_END_ERRVAL, ret_ERRVAL): Define.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PSEUDO_ERRVAL,
++ PSEUDO_END_ERRVAL, ret_ERRVAL): Define.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (PSEUDO_ERRVAL):
++ Define.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_ERRVAL,
++ PSEUDO_END_ERRVAL, ret_ERRVAL): Define.
++ * sysdeps/unix/sysdep.h (PSEUDO_END_ERRVAL): Define.
++
++ * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64,
++ posix_fadvise64_64): Remove.
++ * sysdeps/unix/sysv/linux/alpha/syscalls.list (posix_fadvise64): Add
++ V flag.
++ * sysdeps/unix/sysv/linux/ia64/syscalls.list (posix_fadvise64):
++ Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
++ (posix_fadvise64): Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
++ (posix_fadvise64): Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
++ (posix_fadvise64): Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/syscalls.list (posix_fadvise64):
++ Likewise.
++ * sysdeps/unix/sysv/linux/i386/posix_fadvise64_64.S: Moved to...
++ * sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: ...here.
++ (__posix_fadvise64_l64): Fix a typo in fadvise64 syscall invocation.
++ (__posix_fadvise64_l32): New function.
++ * sysdeps/unix/sysv/linux/i386/Makefile: Revert last change.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions (libc): Export
++ posix_fadvise64@@GLIBC_2.3.3.
++ * sysdeps/unix/sysv/linux/s390/s390-32/Versions (libc): Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (libc): Likewise.
++ * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Return
++ error value.
++ * sysdeps/unix/sysv/linux/posix_fadvise64.c: New file.
++
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
++ (SYSCALL_ERROR_HANDLER): Use TLS errno/__libc_errno if USE___THREAD.
++
++2003-08-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/sparc/sparc32/dl-machine.h (WEAKADDR): Remove.
++ (elf_machine_matches_host): Remove weak extern stuff.
++ Use GL(dl_hwcap) unconditionally and GL(dl_hwcap_mask) if SHARED.
++ (elf_machine_runtime_setup, sparc_fixup_plt): Remove weak extern
++ stuff. Use GL(dl_hwcap) unconditionally.
++
++2003-08-16 Alan Modra <amodra@bigpond.net.au>
++
++ * sysdeps/powerpc/powerpc64/elf/start.S: Add a nop after
++ __libc_start_main branch.
++
++2003-08-16 Jakub Jelinek <jakub@redhat.com>,
++ Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/generic/posix_fadvise.c (posix_fadvise): Return ENOSYS
++ instead of setting errno.
++ * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise.
++
++2003-08-16 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/generic/posix_fadvise.c (posix_fadvise): Adjust prototype.
++ * sysdeps/generic/posix_fadvise64.c (posix_fadvise64): Likewise.
++
++2003-08-15 Ulrich Drepper <drepper@redhat.com>
++
++ * io/fcntl.h (posix_fadvise64): Change type of third parameter to
++ off_t.
++ * sysdeps/unix/sysv/linux/posix_fadvise.c: Adjust definition.
++ * sysdeps/unix/make-syscalls.sh: Recognize V prefix to the parameter
++ description indicating the error value is returned, not -1.
++ * sysdeps/unix/sysv/linux/kernel-features.h: Add definition of
++ __ASSUME_FADVISE64_64_SYSCALL.
++ * sysdeps/unix/sysv/linux/syscalls.list: Don't define madvise and
++ posix_madvise in one file. Have posix_madvise defined with error
++ value returned.
++ Define posix_fadvise64_64 entry. Add version info to posix_fadvise64
++ entry.
++ * sysdeps/unix/sysv/linux/i386/posix_fadvise.S: New file.
++ * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_ERRVAL,
++ PSEUDO_END_ERRVAL, and ret_ERRVAL.
++ * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/i386/Versions [GLIBC_2.3.3]: Add
++ posix_fadvise64.
++
++ * posix/Makefile (routines): Add posix_madvise.
++ * sysdeps/generic/madvise.c: Don't define posix_madvise.
++ * sysdeps/generic/posix_madvise.c: New file.
++ * sysdeps/unix/sysv/aix/posix_madvise.c: New file.
++ * sysdeps/unix/sysv/linux/i386/Makefile [subdir=io] (subdir_routines):
++ Add posix_fadvise64_64.
++
++2003-08-15 Jakub Jelinek <jakub@redhat.com>
++
++ * assert/assert.h (assert_perror): Use __builtin_expect for gcc >=
++ 3.0, not for !gcc or gcc < 3.0.
++
++2003-08-11 Carlos O'Donell <carlos@baldric.uwo.ca>
++
++ * dlfcn/default.c (main): Cast dlsym loaded value to same type as main.
++ Address passed to test_in_mod1 and test_in_mod2 without casting.
++ * dlfcn/defaultmod1.c: Change prototype of test_in_mod1.
++ (test_in_mod1): Cast dlsym loaded value to same type as mainp.
++ * dlfcn/defaultmod2.c: Change prototype of test_in_mod2.
++ (test_in_mod2): Cast dlsym loaded value to same type as mainp.
++
++2003-08-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/sparc/sparc32/elf/configure.in (libc_cv_sparc32_tls):
++ Change quotes before using [].
++
++ * sysdeps/unix/sysv/linux/sparc/sys/user.h: New file.
++
++ * sysdeps/sparc/sparc32/bits/atomic.h (__sparc32_atomic_lock):
++ Renamed to...
++ (__sparc32_atomic_locks): ...this. Change into 64-byte array.
++ (__sparc32_atomic_do_lock, __sparc32_atomic_do_unlock): Add addr
++ argument. Select one of 64 locks from address bits.
++ (atomic_compare_and_exchange_val_acq,
++ atomic_compare_and_exchange_bool_acq): Pass memory address to
++ __sparc32_atomic_do_{,un}lock.
++
++2003-08-14 Ulrich Drepper <drepper@redhat.com>
++
++ * assert/assert.h (assert): Use !! in front of expression to allow
++ use of pointers.
++
++ * iconvdata/cp932.c: Fixed checking of a few border of code areas.
++ Changed conversion of JIS X 0201 from using a table to calculating.
++ * iconvdata/euc-jp-ms.c: Fixed conversion table and rewrote
++ conversion routine. Changed CHARSET_NAME definition from EUCJP-MS to
++ EUC-JP-MS.
++ * iconvdata/tst-tables.sh: Add CP932 and EUC-JP-MS.
++ * iconvdata/CP932.irreversible: New file.
++ * iconvdata/EUC-JP-MS.irreversible: New file.
++ Patch by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>.
++
++2003-08-13 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/syscalls.list: Add time syscall.
++
++ * elf/Makefile: Use LC_ALL=C in a few cases where we call external
++ text processing tools.
++
++ * sysdeps/pthread/aio_misc.h (struct waitlist): Don't add caller_pid
++ element unless BROKEN_THREAD_SIGNALS is defined.
++ (struct requestlist): Likewise.
++ * sysdeps/pthread/aio_misc.c (__aio_enqueue_request): Don't fill in
++ caller_pid of new request unless BROKEN_THREAD_SIGNALS is defined.
++ * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise.
++ * sysdeps/pthread/aio_notify.c (__aio_notify_only): Remove caller_pid
++ parameter unless BROKEN_THREAD_SIGNALS is defined. Adjust callers.
++ Pass current PID to __aio_sigqueue.
++ * sysdeps/pthread/lio_listio.c (lio_listio): Adjust __aio_notify_only
++ call. Don't initialize caller_pid field of waitlist element.
++
++2003-08-12 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/libioP.h (_IO_vtable_offset): Define.
++ * libio/freopen.c (freopen): Use it.
++ * libio/ioputs.c (_IO_puts): Likewise.
++ * libio/freopen64.c (freopen64): Likewise.
++ * libio/genops.c (__underflow, __uflow, _IO_flush_all_lockp):
++ Likewise.
++ * libio/iofclose.c (_IO_new_fclose): Likewise.
++ * libio/iofputs.c (_IO_fputs): Likewise.
++ * libio/ioftell.c (_IO_ftell): Likewise.
++ * libio/iofwrite.c (_IO_fwrite): Likewise.
++ * libio/ioseekoff.c (_IO_seekoff_unlocked): Likewise.
++ * libio/iosetbuffer.c (_IO_setbuffer): Likewise.
++ * stdio-common/vfprintf.c (ORIENT, vfprintf): Likewise.
++ * stdio-common/vfscanf.c (ORIENT): Likewise.
++
++2003-08-11 Ulrich Drepper <drepper@redhat.com>
++
++ * assert/assert.h: Use __builtin_expect in assert and
++ assert_perror definitions if possible.
++
++2003-08-07 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/ldsodefs.h (_rtld_global): Add
++ _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
++ * elf/rtld.c (rtld_lock_default_lock_recursive,
++ rtld_lock_default_unlock_recursive): New functions.
++ (dl_main): Initialize _dl_rtld_lock_recursive and
++ _dl_rtld_unlock_recursive.
++
++2003-08-05 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to
++ config_file directories instead of prepending.
++
++2003-08-02 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_CLONE_STOPPED.
++
++2003-08-01 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/bits/libc-lock.h
++ (__libc_cleanup_push,__libc_cleanup_pop): Define even here.
++
++2003-08-01 Roland McGrath <roland@frob.com>
++
++ * sysdeps/mach/hurd/getdents.c: Just use sysdeps/generic/getdents.c.
++
++2003-07-31 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/bits/types.h (__ssize_t): Use __SSIZE_T_TYPE
++ instead of __SWORD_TYPE.
++ * sysdeps/generic/bits/typesizes.h (__SSIZE_T_TYPE): Define.
++ * sysdeps/mach/hurd/bits/typesizes.h (__SSIZE_T_TYPE): Define.
++ * sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h (__SSIZE_T_TYPE):
++ Define.
++ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE):
++ Define.
++ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE):
++ Define.
++ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file.
++
++ * dlfcn/dlerror.c (once): New.
++ (dlerror): Call __libc_once.
++ (_dlerror_run): Remove once.
++
++ * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext):
++ Sync with 2.5.7 and 2.5.73 kernel changes.
++
++ * dlfcn/eval.c (funcall): Add noinline attribute to shut up warnings.
++ * elf/rtld.c (dl_main): Cast ElfW(Addr) arguments with %Zx/%Zd
++ formats to size_t.
++ * elf/dl-lookup.c (_dl_debug_bindings): Likewise.
++ * elf/tst-tls6.c (do_test): Use %zd format for l_tls_modid.
++ * elf/tst-tls8.c (do_test): Use %zd format for modid1 and modid2.
++ * gmon/tst-sprofil.c (main): Add parens to shut up warning.
++ * iconv/tst-iconv3.c (main): Use %td instead of %zd for pointer
++ difference argument.
++ * stdio-common/tst-wc-printf.c (main): Cast arguments with %C
++ format to wint_t.
++ * stdlib/tst-limits.c (main): For WORD_BIT and LONG_BIT, use
++ %d format and cast expected value to int.
++ * sysdeps/generic/libc-start.c (STATIC): Add
++ __attribute__((always_inline) if LIBC_START_MAIN is already defined.
++ * sysdeps/powerpc/fpu/w_sqrt.c (a_nan, a_inf): Change from uint32_t
++ to ieee_float_shape_type.
++ (__sqrt): Avoid type punning.
++ * sysdeps/powerpc/fpu/w_sqrtf.c (a_nan, a_inf): Change from uint32_t
++ to ieee_float_shape_type.
++ (__sqrtf): Avoid type punning.
++ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Don't define
++ refsym if in dl-conflict.c.
++ * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise.
++ * sysdeps/unix/sysv/linux/i386/semctl.c (union semun): Add __old_buf.
++ (__new_semctl): Shut up warning.
++ * sysdeps/unix/sysv/linux/semctl.c (union semun): Add __old_buf.
++ (__new_semctl): Shut up warning.
++ * sysdeps/unix/sysv/linux/shmctl.c (__new_shmctl): Wrap long lines.
++ Change old into union of __old_shmid_ds and __old_shminfo structs.
++ Adjust all users.
++ * wcsmbs/wcsmbs-tst1.c (main): Cast arguments with %C format to wint_t.
++
++ * sysdeps/unix/sysv/linux/utimes.c (__utimes): Fix actime and
++ modtime computation.
++ * sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
++ * sysdeps/posix/utimes.c (__utimes): Likewise.
++
++2003-07-30 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/dl-reloc.c (_dl_allocate_static_tls): Don't return any value,
++ call dl_signal_error directly. If already relocated, call
++ GL(dl_init_static_tls) directly, otherwise queue it for later.
++ (CHECK_STATIC_TLS): Undo 2003-07-24 change.
++ * elf/rtld.c (dl_main): Initialize GL(dl_init_static_tls).
++ * elf/dl-open.c (dl_open_worker): Call GL_dl_init_static_tls
++ for all static TLS initializations delayed in _dl_allocate_static_tls.
++ * elf/dl-support.c (_dl_init_static_tls): New variable.
++ * include/link.h (struct link_map): Add l_need_tls_init.
++ * sysdeps/generic/ldsodefs.h (_rtld_global): Add _dl_init_static_tls.
++ (_dl_nothread_init_static_tls): New prototype.
++ (_dl_allocate_static_tls): Adjust prototype.
++
++ * elf/tls-macros.h (VAR_INT_DEF): Add alignment directive.
++
++2003-07-31 Alexandre Oliva <aoliva@redhat.com>
++
++ * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela,
++ elf_machine_rel_relative, elf_machine_rela_relative): Don't assume
++ reloc_addr is aligned.
++ * sysdeps/alpha/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela,
++ elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
++ * sysdeps/cris/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/hppa/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela,
++ elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
++ * sysdeps/ia64/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/m68k/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/mips/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/powerpc/powerpc64/dl-machine.h
++ (elf_machine_rela_relative, elf_machine_rela): Adjust.
++ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/sh/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++ * sysdeps/x86_64/dl-machine.h (elf_machine_rela,
++ elf_machine_rela_relative): Adjust.
++
++2003-07-29 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Restore
++ alignment of TCB used before the last change so that it matches
++ ld's output for IE code.
++
++2003-07-29 Jakub Jelinek <jakub@redhat.com>
++
++ * include/ctype.h (__ctype_b_loc, __ctype_toupper_loc,
++ __ctype_tolower_loc): Avoid "dereferencing type-punned pointer will
++ break strict-aliasing rules" warnings.
++
++2003-07-29 Roland McGrath <roland@redhat.com>
++
++ * elf/Makefile: Revert accidental changes in last commit.
++ * elf/dl-support.c: Likewise.
++
++ * rt/tst-timer2.c: New file.
++ * rt/Makefile (tests): Add it.
++
++2003-07-25 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/dl-support.c (_dl_hwcap): Add nocommon attribute.
++
++2003-07-29 Roland McGrath <roland@redhat.com>
++
++ * elf/Makefile (tests) [$(build-shared) = yes]:
++ Depend on $(test-modules).
++ * dlfcn/Makefile: Likewise.
++
++2003-07-28 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/generic/bits/types.h (__STD_TYPE): New macro.
++ Use that instead of `typedef' when using __*_TYPE macros in rhs.
++
++ * elf/tst-tls14.c [USE_TLS && HAVE___THREAD]: Conditionalize on this.
++ * elf/tst-tlsmod14a.c: Likewise.
++
++ * sysdeps/unix/sysv/linux/sys/sysctl.h: Include <linux/compiler.h>
++ before <linux/sysctl.h>.
++
++2003-07-27 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/syscalls.list: time syscall never fails.
++ * sysdeps/unix/sysv/linux/x86_64/time.S: time syscall never fails.
++ * sysdeps/unix/sysv/i386/time.S: time syscall never fails.
++ * sysdeps/unix/syscalls.list: umask syscall never fails.
++
++2003-07-27 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/init-first.c: Mark init as used.
++
++2003-07-25 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/a.out.h: Replace with i386 version.
++ Include bits/a.out.h.
++ * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
++ bits/a.out.h.
++ * sysdeps/unix/sysv/linux/bits/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/i386/bits/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/m68k/bits/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/x86_64/bits/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/alpha/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/alpha/bits/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/sparc/a.out.h: New file.
++ * sysdeps/unix/sysv/linux/sparc/bits/a.out.h: New file.
++
++2003-07-24 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/pthread/aio_cancel.c (aio_cancel): Return AIO_ALLDONE
++ if aiocbp != NULL and has already completed. Return -1/EINVAL if
++ aiocbp->aio_fildes does not match fildes.
++
++2003-07-24 Ulrich Drepper <drepper@redhat.com>
++
++ * timezone/zic.c (rpytime): Replace cheap overflow check with a
++ functioning one.
++
++ * include/link.h (struct link_map): Add l_tls_firstbyte_offset field.
++ * sysdeps/generic/dl-tls.c [TLS_TCB_AT_TP] (_dl_determine_tlsoffset):
++ Fix calculation of offsets to take misalignment of first byte in
++ file into account.
++ * elf/dl-load.c (_dl_map_object_from_fd): Initialize
++ l_tls_firstbyte_offset field.
++ * elf/rtld.c (_dl_start_final, _dl_start, dl_main): Likewise.
++ * elf/dl-reloc.c (_dl_allocate_static_tls): Change return type to int.
++ Take l_tls_firstbyte_offset information into account.
++ (CHECK_STATIC_TLS): _dl_allocate_static_tls can fail now.
++ * sysdeps/generic/ldsodefs.h: Adjust _dl_allocate_static_tls prototype.
++ * elf/Makefile: Add rules to build and run tst-tls14.
++ * elf/tst-tls14.c: New file.
++ * elf/tst-tlsmod14a.c: New file.
++ * elf/tst-tlsmod14b.c: New file.
++
++2003-07-23 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/pthread/lio_listio.c (LIO_OPCODE_BASE): Define.
++ (lio_listio): Use it.
++ * sysdeps/pthread/lio_listio64.c: Include lio_listio.c instead of
++ after few defines to avoid duplication.
++
++2003-07-22 Jakub Jelinek <jakub@redhat.com>
++
++ * include/stdio.h (__libc_fatal): Add libc_hidden_proto.
++ * include/dlfcn.h (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose):
++ Likewise.
++ * elf/dl-libc.c (__libc_dlopen_mode, __libc_dlsym, __libc_dlclose):
++ Add libc_hidden_def.
++ * sysdeps/generic/libc_fatal.c (__libc_fatal): Likewise.
++ * sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise.
++ * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Likewise.
++ * elf/Versions (libc): Export __libc_dlopen_mode@@GLIBC_PRIVATE,
++ __libc_dlsym@@GLIBC_PRIVATE and __libc_dlclose@@GLIBC_PRIVATE.
++ * libio/Versions (libc): Export __libc_fatal@@GLIBC_PRIVATE.
++ * sysdeps/generic/unwind-dw2.c: Readd #ifs removed during last
++ change.
++ * sysdeps/generic/unwind.inc: Removed.
++
++ * include/resolv.h (__resp): Declare. Define to __libc_resp
++ if in libc.so.
++ (_res): If USE___THREAD, define to (*__resp).
++ * resolv/res_libc.c (_res): Normal .bss variable with compat_symbol
++ even if USE___THREAD.
++ (__resp): New __thread variable.
++ (__libc_resp): New alias.
++ * resolv/Versions (libc): Export _res@GLIBC_2.0 even if
++ USE_TLS && HAVE___THREAD. Export __resp@@GLIBC_PRIVATE.
++ * sysdeps/generic/res-state.c (__res_state): Return __resp
++ if USE___THREAD.
++
++2003-07-22 H.J. Lu <hongjiu.lu@intel.com>
++
++ * elf/dl-support.c (_dl_hwcap): New variable.
++ (_dl_aux_init): Initialize GL(dl_hwcap) for static binaries.
++
++ * sysdeps/i386/fpu/fclrexcpt.c: Include <unistd.h>, <ldsodefs.h>
++ and <dl-procinfo.h>.
++ (__feclearexcept): Clear MXCSR if needed.
++ * sysdeps/i386/fpu/fsetexcptflg.c: Likewise.
++
++ * sysdeps/i386/fpu_control.h (_FPU_GETCW, _FPU_SETCW): Document
++ that newer hardware needs more than these macros.
++
++ * sysdeps/i386/setfpucw.c: New file.
++
++2003-07-22 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/Makefile (CFLAGS-ldconfig.c): Define IS_IN_ldconfig.
++ * elf/ldconfig.c: Include dl-procinfo.c.
++ (PROCINFO_CLASS): Define.
++ * sysdeps/generic/ldsodefs.h (PROCINFO_CLASS): Define.
++ * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: New file.
++ * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: New file.
++ * sysdeps/unix/sysv/linux/i386/dl-procinfo.c (PROCINFO_CLASS):
++ Define if not yet defined. Use it instead of EXTERN. Undefine
++ at the end of the file.
++ * sysdeps/unix/sysv/linux/arm/dl-procinfo.c (PROCINFO_CLASS):
++ Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c
++ (PROCINFO_CLASS): Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c
++ (PROCINFO_CLASS): Likewise.
++
++2003-07-22 H.J. Lu <hongjiu.lu@intel.com>
++
++ * elf/ldconfig.c (main): Issue a fatal error if relative path
++ is used to build cache.
++
++2003-07-22 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/readlib.c (process_file): Avoid possible overflow in assignment.
++
++2003-07-21 Art Haas <ahaas@airmail.net>
++
++ * manual/charset.texi (Converting a Character): Fix example code so a
++ valid pointer is returned.
++
++2003-07-22 Andreas Jaeger <aj@suse.de>
++
++ * elf/readlib.c (process_file): Check that file is a shared
++ object.
++
++ * elf/sofini.c (__FRAME_END__): Use attribute used so that gcc
++ will not optimize it away.
++ (__DTOR_END__): Likewise.
++ (__CTOR_END__): Likewise.
++
++ * include/libc-symbols.h (_elf_set_element): Use attribute used so
++ that gcc will not optimize it away.
++ (link_warning): Likewise.
++
++2003-07-22 Ulrich Drepper <drepper@redhat.com>
++
++ * wcsmbs/wcpncpy.c (__wcpncpy): Correct destination pointer handling.
++ * wcsmbs/Makefile (tests): Add tst-wcpncpy.
++ * wcsmbs/tst-wcpncpy.c: New file.
++
++2003-07-21 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_STOPPED): Define.
++
++ * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Reverse use of
++ stmxcsr and ldmxcsr.
++
++ * Makerules (build-module-helper): Add -z defs unless explicitly said
++ not to do it.
++ * dlfcn/Makefile: Define various *-no-z-defs variables for test DSOs
++ which has undefined symbols.
++ * elf/Makefile: Likewise.
++
++ * sysdeps/i386/fpu/fedisblxcpt.c: Use dl_hwcap, not dl_hwcap_mask.
++ * sysdeps/i386/fpu/feenablxcpt.c: Likewise.
++ * sysdeps/i386/fpu/feholdexcpt.c: Likewise.
++ * sysdeps/i386/fpu/fesetround.c: Likewise.
++ * sysdeps/i386/fpu/ftestexcept.c: Likewise.
++
++2003-07-21 HJ Lu <hongjiu.lu@intel.com>
++
++ * elf/ldconfig.c (search_dir): Treat symlink as regular file
++ if it won't point to itself.
++
++2003-07-20 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/ia64/hp-timing.h (REPEAT_READ): Cast to long int not to int.
++
++2003-07-20 Andreas Jaeger <aj@suse.de>
++
++ * iconvdata/cp932.c (BODY): STANDARD_ERR_HANDLER is now called
++ STANDARD_TO_LOOP_ERR_HANDLER.
++ * iconvdata/euc-jp-ms.c (BODY): Likewise.
++
++2003-07-19 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/bits/sched.h (__CPU_ZERO): Fix typo.
++
++ * sysdeps/unix/sysv/linux/syscalls.list: Remove affinity syscalls.
++
++2003-07-16 Daniel Jacobowitz <drow@mvista.com>
++ Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/mips/bits/shm.h (SHMLBA): Define to
++ 256K, remove unneeded declaration of __getpagesize.
++
++2003-07-16 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/unix/sysv/linux/futimes.c: Include <string.h>.
++
++2003-07-15 Ulrich Drepper <drepper@redhat.com>
++
++ * io/test-utime.c (main): Make test yet more robust.
++
++2003-07-14 Ulrich Drepper <drepper@redhat.com>
++
++ More cancellation handling fixups.
++ * sysdeps/unix/sysv/linux/not-cancel.h: Add waitpid_not_cancel.
++ * sysdeps/generic/not-cancel.h: Likewise.
++ * catgets/open_catalog.c: Use not-cancelable syscalls.
++ * time/Makefile (CFLAGS-getdate.c): Add -fexceptions.
++ * sysdeps/unix/sysv/linux/llseek.c: Must not be cancelable.
++ * sysdeps/unix/syscalls.list: Don't mark lseek as cancelable.
++ * dlfcn/dlfcn.h: Mark dlopen with __THROW again.
++ * io/fcntl.h: Don't mark posix_fallocate with __THROW.
++ * libio/fileops.c: Use not-cancelable syscalls for fclose.
++ * libio/iopopen.c: Use no-cancelable syscalls.
++ * libio/stdio.h: Mark popen and pclose with __THROW again.
++ * misc/Makefile (CFLAGS-syslog.c): Add -fexceptions.
++ * misc/syslog.c: Fix locking and cancellation cleanup handling.
++ * posix/unistd.h: Mark ttyname and ttyname_r again with __THROW.
++ * stdio-common/Makefile (CFLAGS-tmpfile.c, CFLAGS-tmpfile64.c,
++ CFLAGS-tempname.c): Add -fexceptions.
++ * stdlib/Makefile (CFLAGS-mkstemp.c): Add -fexceptions.
++ * string/string.h: Mark strerror and strerror_r with _THROW again.
++ * sysdeps/generic/unwind.inc: New file. Copied from gcc.
++ * sysdeps/generic/unwind-dw2.c: Update from gcc version. Remove
++ #ifs since we now need all the code compiled.
++ * sysdeps/posix/spawni.c: Use close_not_cancel instead of close.
++ * sysdeps/unix/closedir.c: Use not-cancelable syscalls.
++ * sysdeps/unix/opendir.c: Likewise.
++
++ * iconvdata/Makefile (modules): Add CP932 and EUC-JP-MS.
++ Add rule for EUC-JP-MS dependency.
++ * iconvdata/cp932.c: New file.
++ * iconvdata/eucjp-ms.c: New file.
++ * iconvdata/gconv-modules: Add entries for CP932 and EUC-JP-MS.
++ Patch by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>.
++
++2003-07-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S (__socket): Add
++ cfi directives.
++
++2003-07-14 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h
++ (__ASSUME_FIXED_CLONE_SYSCALL): New macro.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Use it.
++
++ * sysdeps/unix/sysv/linux/utimes.c: Include sysdep.h.
++
++2003-07-14 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_TGKILL for Alpha appropriately.
++
++2003-07-12 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/bits/statfs.h (_STATFS_F_FRSIZE): Define.
++ * sysdeps/unix/sysv/linux/alpha/bits/statfs.h (_STATFS_F_FRSIZE):
++ Likewise.
++ * sysdeps/unix/sysv/linux/s390/bits/statfs.h (_STATFS_F_FRSIZE):
++ Likewise.
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_UTIMES for x86 and kernels > 2.5.75.
++
++ * sysdeps/unix/sysv/linux/futimes.c (__futimes): Handle case with
++ second parameter == NULL.
++ * sysdeps/unix/sysv/linux/utimes.c: New file.
++
++2003-07-12 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/futimes.c: Include kernel-features.h.
++ * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Fix
++ a typo.
++
++2003-07-12 Ulrich Drepper <drepper@redhat.com>
++
++ * time/sys/time.h: Namespace cleanup.
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_UTIMES for the architectures which always had the syscall.
++ * sysdeps/unix/sysv/linux/futimes.c: New file.
++
++2003-07-12 Kaz Kojima <kkojima@rr.iij4u.or.jp>
++
++ * sysdeps/unix/sysv/linux/sh/socket.S: Save and restore the PR
++ register across CENABLE and CDISABLE.
++
++2003-07-11 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sigwait.c: Include string.h.
++ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
++ * sysdeps/unix/sysv/linux/sleep.c (__sleep): Cast value to unsigned
++ int before assigning to max to avoid warnings.
++
++2003-07-11 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S (__socket): Add
++ cfi directives.
++ * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise.
++
++2003-07-10 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/elf/start.S: Set section flags of
++ .data.rel.ro.local to "aw".
++
++2003-07-10 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/m68k/Makefile: Remove CLFAGS-.oS addition.
++ * Makeconfig (CFLAGS-.oS): Use PIC-ccflag instead of pic-ccflag.
++ (PIC-ccflag): Define.
++
++2003-07-04 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/s390/s390-32/elf/start.S: Emit position independent code
++ if PIC.
++ * sysdeps/s390/s390-64/elf/start.S: Likewise.
++
++2003-07-07 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address)
++ into .data.rel.ro.local section if PIC to avoid DT_TEXTREL.
++
++2003-07-07 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Version
++ __ASSUME_CORRECT_SI_PID and __ASSUME_TGKILL if possible.
++
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Adjust for
++ compilation with HAVE_AUX_SECURE defined.
++
++2003-07-05 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/alpha/elf/initfini.c: Avoid .ent/.end.
++
++2003-07-03 Ulrich Drepper <drepper@redhat.com>
++
++ * configure.in: Also check for .cfi_rel_offset pseudo-op.
++
++2003-07-03 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/prof-freq.c (__profile_frequency): Fix a
++ typo.
++
++2003-07-03 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_AT_CLKTCK):
++ Define.
++ * sysdeps/unix/sysv/linux/prof-freq.h: New file.
++
++2003-07-02 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Protect new_sysinfo
++ decl and use with #ifdef NEED_DL_SYSINFO.
++
++2003-07-02 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't set
++ GL(dl_sysinfo) unles GL(dl_sysinfo_dso) is also set.
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_VSYSCALL only for 2.5.69 and up since this is when the
++ vsyscall DSO was added.
++
++ * posix/bits/posix1_lim.h (_POSIX_NGROUPS_MAX): Define to 8 or 0
++ depending on selected standard.
++ (NGROUPS_MAX): Define to 8 if not defined.
++
++2003-07-02 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: New file.
++
++2003-05-04 H.J. Lu <hongjiu.lu@intel.com>
++
++ * malloc/arena.c (arena_get2): Add atomic_write_barrier.
++ * malloc/thread-m.h: Include <atomic.h>.
++ (atomic_full_barrier): Provide default.
++ (atomic_read_barrier): Likewise.
++ (atomic_write_barrier): Likewise.
++ * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define.
++
++2003-06-30 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET.
++
++2003-06-30 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int):
++ Invert the sense of the return value.
++ (__arch_exchange_16_int): Fix paste-o.
++ (__arch_exchange_{32,64}_int): Fix think-o.
++
++ * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly.
++
++2003-06-30 Richard Henderson <rth@redhat.com>
++
++ * include/sys/resource.h (__getrusage): Mark hidden.
++ * include/sys/time.h (__settimeofday, __setitimer, __utimes): Likewise.
++ * include/sys/wait.h (__wait4): Likewise.
++
++2003-06-17 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/unix/sysv/linux/mips/xstatconv.c: Handle STAT_IS_KERNEL_STAT
++ case.
++ (xstat_conv): Rename to __xstat_conv and remove static inline.
++ (xstat64_conv): Likewise.
++
++2003-06-29 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sleep.c (__sleep): Handle parameter
++ values which cannot be handled in one nanosleep call.
++
++2003-06-25 Alfred M. Szmidt <ams@kemisten.nu>
++
++ * sysdeps/generic/bits/in.h (IPV6_HOPOPTS, IPV6_DSTOPTS): New macros.
++ (IPV6_RXHOPOPTS, IPV6_RXDSTOPTS): Use them.
++
++ * sysdeps/generic/ifreq.h (__if_nextreq) [_HAVE_SA_LEN]: Typo fix.
++
++2003-06-04 Thorsten Kukuk <kukuk@suse.de>
++
++ * sysdeps/unix/sysv/linux/net/if_arp.h: Sync with kernel header,
++ fix typo.
++
++2003-06-26 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/unix/sysv/linux/xstatconv.h [!STAT_IS_KERNEL_STAT]:
++ Conditionalize function definitions that use struct kernel_stat.
++ * sysdeps/unix/sysv/linux/fxstat.c: Remove __syscall_fstat extern.
++ * sysdeps/unix/sysv/linux/lxstat.c: Remove __syscall_lstat extern.
++ * sysdeps/unix/sysv/linux/xstat.c: Remove __syscall_stat extern.
++
++2003-06-28 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Add real
++ implementation.
++
++2003-06-07 Thorsten Kukuk <kukuk@suse.de>
++
++ * nis/nss_compat/compat-grp.c: Remove unused nis_first variable.
++ (getgrent_next_file): Don't store group name to early in blacklist.
++
++ * nis/nss_compat/compat-pwd.c (internal_getpwuid_r): Save strlen result
++ and use memcpy instead of strcpy.
++
++2003-06-28 Ulrich Drepper <drepper@redhat.com>
++
++ * nis/nss_compat/compat-grp.c: Optimize several little things. Use
++ stream unlocked.
++ * nis/nss_compat/compat-initgroups.c: Likewise.
++ * nis/nss_compat/compat-pwd.c: Likewise.
++ * nis/nss_compat/compat-spwd.c: Likewise.
++
++2003-06-27 Thorsten Kukuk <kukuk@suse.de>
++
++ * nis/nss_compat/compat-initgroups.c: Don't use our own NIS/NIS+
++ functions, dlopen corresponding NSS module instead.
++
++2003-06-27 Jeroen Dekkers <jeroen@dekkers.cx>
++
++ * sysdeps/mach/hurd/alpha/init-first.c: Remove call to __libc_init.
++ * sysdeps/mach/hurd/i386/init-first.c: Likewise.
++ * sysdeps/mach/hurd/mips/init-first.c: Likewise.
++ * sysdeps/mach/hurd/powerpc/init-first.c: Likewise.
++
++2003-06-27 Ulrich Drepper <drepper@redhat.com>
++
++ * rt/Makefile (CFLAGS-librt-cancellation.c): Define.
++
++2003-06-26 Roland McGrath <roland@frob.com>
++
++ * sysdeps/mach/configure.in: Barf rather than define NO_CREATION_TIME.
++ * sysdeps/mach/configure: Regenerated.
++ * sysdeps/mach/hurd/times.c (times_init): Function removed.
++ (__times): Assume `creation_time' field is available.
++ * sysdeps/mach/hurd/Makefile [$(subdir) = csu] (sysdep_routines):
++ Don't append set-init.
++ * sysdeps/mach/hurd/set-init.c: File removed.
++
++2003-06-26 Roland McGrath <roland@redhat.com>
++
++ * elf/elf.h (AT_SECURE): New macro.
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Grok it,
++ set __libc_enable_secure.
++ (_dl_show_auxv): Add AT_SECURE to name table.
++ * elf/dl-support.c (_dl_aux_init): Grok AT_SECURE, set
++ __libc_enable_secure and __libc_enable_secure_decided.
++ * sysdeps/unix/sysv/linux/ldsodefs.h
++ [__ASSUME_AT_SECURE] (HAVE_AUX_SECURE): Define it.
++ * sysdeps/unix/sysv/linux/kernel-features.h
++ [__LINUX_KERNEL_VERSION >= 132426] (__ASSUME_AT_SECURE): Define it.
++
++2003-06-26 Ulrich Drepper <drepper@redhat.com>
++
++ * io/test-utime.c: If _STATBUF_ST_NSEC is defined, adjust lower
++ boundary test to take rounding of nanoseconds into account.
++
++ * sysdeps/unix/sysv/linux/bits/stat.h: Define _STATBUF_ST_NSEC.
++ * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise.
++ * sysdeps/unix/sysv/linux/m68k/bits/stat.h: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/bits/stat.h: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/bits/stat.h: Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/bits/stat.h: Likewise.
++
++2003-06-26 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/m68k/fpu/bits/mathinline.h: Don't inline frexp.
++ * sysdeps/m68k/fpu/s_frexp.c: Put implementation here.
++ * sysdeps/m68k/fpu/s_frexpl.c: Fix to handle unnormalized numbers.
++
++2003-06-17 Thorsten Kukuk <kukuk@suse.de>
++
++ * nis/Makefile: Remove NIS/NIS+ files from nss_compat module.
++ * nis/nss_compat/compat-grp.c: Don't use our own NIS/NIS+ functions,
++ dlopen corresponding NSS module instead.
++ * nis/nss_compat/compat-pwd.c: Likewise.
++ * nis/nss_compat/compat-spwd.c: Likewise.
++ * nis/nss_compat/compat-initgroups.c: Disabled for now.
++ * nss/Versions: Export __nss_lookup_function.
++
++2003-06-19 Daniel Jacobowitz <drow@mvista.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features
++ for the SH architecture.
++
++2003-06-25 Thorsten Kukuk <kukuk@suse.de>
++
++ * csu/Makefile: Use CPPFLAGS to find correct linux/version.h.
++
++2003-06-25 Andreas Jaeger <aj@suse.de>
++
++ * stdlib/tst-strtod.c (main): Declare constant long double as
++ suggested by Jakub Jelinek and Andreas Schwab.
++
++ * posix/tst-nanosleep.c: Include <time.h> for nanosleep
++ declaration.
++
++ * stdio-common/tst-fphex.c: Fix format string.
++
++ * posix/transbug.c: Include <string.h> for memset and strlen
++ declarations.
++
++ * stdio-common/tst-sprintf.c: Include <stdlib.h> for free declaration.
++
++ * stdlib/tst-strtod.c (main): Pass long double value.
++
++ * test-skeleton.c: Include <time.h> for nanosleep declaration.
++
++2003-06-25 Ulrich Drepper <drepper@redhat.com>
++
++ * include/time.h: Don't define CLOCK_IDFIELD_SIZE if _ISOMAC is
++ defined.
++
++2003-06-11 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/Versions (libc): Add _dl_open_hook@GLIBC_PRIVATE.
++ * elf/dl-libc.c (struct dl_open_hook): New.
++ (_dl_open_hook): New variable.
++ (do_dlsym_private): New function.
++ (__libc_dlopen_mode) [!SHARED]: Lookup _dl_open_hook@GLIBC_PRIVATE
++ and initialize it if found.
++ (__libc_dlopen_mode) [SHARED]: If _dl_open_hook is non-NULL,
++ call dlopen_mode hook.
++ (__libc_dlsym) [SHARED]: If _dl_open_hook is non-NULL,
++ call dlsym hook.
++ (__libc_dlclose) [SHARED]: If _dl_open_hook is non-NULL,
++ call dlclose hook.
++
++2003-06-25 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/cris/sysdep.h (INLINE_SYSCALL): Cast
++ result to long int so that extensions to long long int work.
++ Patch by Uwe Reimann <libc-alpha@pulsar.homelinux.net>.
++
++2003-06-19 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/ldconfig.c (main): Use add_system_dir instead of add_dir.
++ * sysdeps/generic/dl-cache.h (add_system_dir): Define.
++ * sysdeps/unix/sysv/linux/x86_64/dl-cache.h: Include sparc
++ dl-cache.h.
++ * sysdeps/unix/sysv/linux/s390/dl-cache.h: New file.
++ * sysdeps/unix/sysv/linux/mips/dl-cache.h: New file.
++ * sysdeps/unix/sysv/linux/powerpc/dl-cache.h: New file.
++ * sysdeps/unix/sysv/linux/sparc/dl-cache.h: New file.
++
++2003-06-19 Jakub Jelinek <jakub@redhat.com>
++
++ * test-skeleton.c (timeout_handler): If waitpid returned 0,
++ retry once after a second. If killed == 0, assume
++ WTERMSIG (status) == SIGKILL.
++
++2003-06-18 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Catch uninitialized
++ elements in the table instead of printing an empty name string.
++
++2003-06-05 Roland McGrath <roland@redhat.com>
++
++ * elf/elf.h (PT_GNU_STACK): New macro.
++
++2003-06-24 Ulrich Drepper <drepper@redhat.com>
++
++ * include/time.h: Define CLOCK_IDFIELD_SIZE.
++ * sysdeps/posix/clock_getres.c: Recognize thread CPU clock IDs.
++ * sysdeps/unix/clock_gettime.c: Likewise.
++ * sysdeps/unix/clock_settime.c: Likewise.
++ * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Adjust for new
++ clock id for thread CPU clocks.
++
++ * sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Add support
++ for the fstatfs64 syscall.
++ * sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Add support for
++ the statfs64 syscall.
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_STATFS64 appropriately.
++
++ * sysdeps/unix/sysv/linux/internal_statvfs.c: Use f_frsize field
++ from statfs structure if it has been filled in.
++
++ * sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_frsize
++ field.
++ (struct statfs64): Likewise.
++ * sysdeps/unix/sysv/linux/alpha/bits/statfs.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise.
++
++2003-06-24 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/syscalls.list (pread, pwrite): Use
++ the 64-bit syscall name.
++
++ * sysdeps/alpha/setjmp.S (_setjmp, setjmp): Mark .prologue.
++
++ * sysdeps/alpha/fpu/bits/mathinline.h: Honor
++ __LIBC_INTERNAL_MATH_INLINES. Implement __signbitf, __signbit.
++
++ * sysdeps/unix/sysv/linux/alpha/clone.S: Use HIDDEN_JUMPTARGET.
++ * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Use
++ libc_hidden_def.
++ * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/setfpucw.c: Use libc_hidden_proto
++ on them.
++
++ * sysdeps/alpha/bits/atomic.h: New file.
++
++2003-06-24 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/m68k/fpu/libm-test-ulps: Update.
++
++2003-06-24 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/stat.h (_STAT_VER_LINUX): Avoid
++ redeclaration with 32-bit code.
++
++2003-05-19 Ed Connell <ed.connell@sas.com>
++
++ * sysdeps/unix/sysv/linux/i386/getcontext.S (getcontext): Retain
++ floating point mask.
++ * sysdeps/i386/fpu/fegetenv.c (fegetenv): Likewise.
++
++2003-06-23 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/aio_misc.h: Mark __aio_requests_mutex,
++ __aio_enqueue_request, __aio_find_req, __aio_find_req_fd,
++ __aio_free_request, __aio_notify, and __aio_sigqueue as hidden.
++
++ * sysdeps/pthread/aio_suspend.c (aio_suspend): Set errno to the result
++ of pthread_cond_wait if there was an error. Use pthread_cleanup_*
++ instead of __libc_cleanup_region_*.
++
++2003-06-20 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/unix/make-syscalls.sh: Implement ! prefix for strong aliases.
++ * sysdeps/unix/sysv/linux/alpha/syscalls.list (open, open64): New.
++
++2003-06-20 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/unix/alpha/sysdep.h (INLINE_SYSCALL1): Use __builtin_expect.
++ * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ST_INO_64_BIT)
++ Unset for alpha.
++ (__ASSUME_TIMEVAL64): Set for alpha.
++ * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Remove
++ adjtimex, osf_sigprocmask, old_adjtimex.
++ * sysdeps/unix/sysv/linux/alpha/adjtime.c: Use INLINE_SYSCALL,
++ __ASSUME_TIMEVAL64. Reorg tv64 functions to avoid uninit variable.
++ * sysdeps/unix/sysv/linux/alpha/getitimer.S: Use __ASSUME_TIMEVAL64.
++ * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/select.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Streamline
++ PIC code sequence.
++ * sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/sigaction.c: New file.
++ * sysdeps/unix/sysv/linux/alpha/sigprocmask.c: Use INLINE_SYSCALL.
++ * sysdeps/unix/sysv/linux/alpha/ustat.c: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/xmknod.c: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove osf_sigprocmask,
++ sys_ustat, sys_mknod, adjtimex, old_adjtimex.
++ * sysdeps/unix/sysv/linux/alpha/sysdep.h (INLINE_SYSCALL): Don't
++ defer to __syscall_name; error for rt_sigaction.
++ * sysdeps/unix/sysv/linux/alpha/xstatconv.c: Include kernel_stat.h.
++
++2003-06-18 Ulrich Drepper <drepper@redhat.com>
++
++ * malloc/malloc.c (public_mALLINFo): Initialize malloc if it
++ hasn't happened yet.
++
++ * sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
++ Fix completely broken implementation. The second parameter is of
++ type struct ucontext*.
++
++ * sysdeps/x86_64/dl-machine.h (elf_machine_runtime_setup): Always
++ inline.
++
++ * sysdeps/i386/i686/dl-hash.h: Don't inline _dl_elf_hash.
++ * sysdeps/generic/dl-hash.h: Likewise.
++
++ * sysdeps/generic/memcmp.c: Remove inline from
++ memcmp_common_alignment and memcmp_not_common_alignment definition.
++
++ * intl/localealias.c (read_alias_file): Determine whether line is
++ read incompletely early, before we modify the line.
++
++2003-06-17 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela)
++ <case R_PPC64_DTPREL64>: Don't segfault on undefined symbols.
++
++2003-06-17 Paul Mackerras <paulus@samba.org>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: New file.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: New file.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: New file.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: New file.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: New file.
++ * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Adjust.
++
++2003-06-17 Jakub Jelinek <jakub@redhat.com>
++
++ * posix/regcomp.c (build_word_op): Use alnum instead of alpha class.
++
++2003-06-17 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): nanosleep
++ takes care of enabling cancellation.
++
++ * sysdeps/pthread/aio_suspend.c (aio_suspend): Make aio_suspend
++ cancelable. It's not correct to disable cancellation. Instead of
++ a cleanup handler.
++
++ * sysdeps/unix/sysv/linux/sigtimedwait.c: If SIGCANCEL is defined
++ and part of the incoming set, create a temporary set without this
++ signal.
++ * sysdeps/unix/sysv/linux/sigwait.c: Likewise.
++ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
++
++ * sysdeps/unix/sysv/linux/sleep.c: Use CANCELLATION_P if defined before
++ returning because seconds==0. Add __builtin_expect.
++
++2003-06-16 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/socket.S: Add unwind information.
++
++ * sysdeps/unix/sysv/linux/wait.c (__libc_wait): Fix type of result
++ variable.
++
++2003-06-16 Thorsten Kukuk <kukuk@suse.de>
++
++ * include/libc-symbols.h: Add static_link_warning macro.
++ * grp/initgroups.c: Print linker warning if this function
++ is called in a static linked binary.
++ * nss/getXXbyYY.c: Likewise.
++ * nss/getXXbyYY_r.c: Likewise.
++ * nss/getXXent.c: Likewise.
++ * nss/getXXent_r.c: Likewise.
++ * sysdeps/posix/getaddrinfo.c: Likewise.
++
++2003-06-16 Bruno Haible <bruno@clisp.org>
++
++ * iconvdata/gconv-modules (ISO-8859-15): Add aliases ISO_8859-15,
++ LATIN-9.
++ (ISO-8859-16): Add aliases ISO_8859-16:2001, ISO_8859-16.
++ (IBM1047): Add alias IBM-1047.
++ (GBK): Add aliases MS936, WINDOWS-936.
++
++2003-06-16 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Define even if
++ defined __ASSUME_STAT64_SYSCALL && defined XSTAT_IS_XSTAT64.
++ (__xstat64_conv): Change xstat_conv to __xstat_conv.
++
++2003-06-16 Ulrich Drepper <drepper@redhat.com>
++
++ * locale/iso-639.def: Update from current official ISO 639.
++
++ * math/tgmath.h (__TGMATH_UNARY_IMAG_ONLY): Removed.
++
++2003-06-15 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Correct setting
++ of MXCSR.
++ * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise.
++ * sysdeps/i386/fpu/feholdexcpt.c (feholdexcept): Likewise.
++ Reported by Arnaud Desitter <arnaud.desitter@geography.oxford.ac.uk>.
++
++ * math/tgmath.h (carg): Handle real arguments.
++ (conj): Likewise.
++ (cproj): Likewise.
++ (cimag): Likewise.
++ (creal): Likewise.
++
++ * math/Makefile (CFLAGS-test-tgmath-ret.c): New.
++ (tests): Add test-tgmath-ret.
++ * math/test-tgmath-ret.c: New file.
++
++ * math/tgmath.h (ilogb): Return always an int.
++
++2003-06-16 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/rtld.c (dl_main): Use l_map_start not l_addr in Phdr
++ computation so that prelinking works.
++
++2003-06-15 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/dl-iteratephdr.c (__dl_iterate_phdr): Don't skip dynamic
++ linker's map.
++ * elf/rtld.c (dl_main): Initialize l_phdr and l_phnum of of the
++ dynamic linker's map.
++
++ Fix cancellation point handling wrt exception based cleanup.
++ * io/Makefile: Compile fcntl.c, poll.c, and lockf.c with exceptions.
++ * misc/Makefile: Compile pselect.c, readv.c, writev.c, and usleep.c
++ with exceptions.
++ * posix/Makefile: Compile pread.c, pread64.c, pwrite.c, pwrite64.c,
++ sleep.c, wait.c, waitid.c, and waitpid.c with exceptions.
++ * rt/Makefile: Compile aio_suspend.c and clock_nanosleep.c with
++ exceptions.
++ * signal/Makefile: Compile sigpause.c, sigsuspend.c, sigtimedwait.c,
++ sigwait.c, and sigwaitinfo.c with exceptions.
++ * stdlib/Makefile: Compile system.c with exceptions.
++ * sysvipc/Makefile: Compile msgrcv.c and msgsnd.c with exceptions.
++ * termios/Makefile: Compile tcdrain.c with exceptions.
++ * sysdeps/generic/lockf.c: Add comment explaining the cancellation
++ situation.
++ * sysdeps/generic/pselect.c: Likewise.
++ * sysdeps/posix/sigpause.c: Likewise.
++ * sysdeps/posix/system.c: Likewise.
++ * sysdeps/posix/waitid.c: Likewise.
++ * sysdeps/unix/sysv/linux/sleep.c: Likewise.
++ * sysdeps/unix/sysv/linux/usleep.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/sysdep.h: Major rewrite of
++ INTERNAL_SYSCALL to not use push inside asm statement so that
++ unwind info is correct around the syscall.
++ * sysdeps/unix/clock_nanosleep.c: Add cancellation support.
++ * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise.
++
++2003-06-15 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
++ Add CFI directives.
++
++2003-06-15 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/unix/sysv/linux/mips/Makefile: Add missing endif and
++ create $(objpfx).
++
++2003-06-14 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/check_pf.c (__check_pf): Use __close,
++ not close.
++
++ * inet/inet6_option.c (inet6_option_alloc): Add libc_hidden_def.
++ * include/netinet/in.h (inet6_option_alloc): Add libc_hidden_proto
++ definition.
++
++ * inet/netinet/ip6.h (IP6OPT_PAD1, IP6OPT_PADN): Define.
++ * inet/netinet/in.h: Add prototypes for inet6_option_* functions.
++ * inet/Makefile (routines): Add inet6_option.
++ * inet/inet6_option.c: New file.
++ * inet/Versions [GLIBC_2.3.3] (libc): Add inet6_option_space,
++ inet6_option_init, inet6_option_append, inet6_option_alloc,
++ inet6_option_next, and inet6_option_find.
++
++2003-06-13 Ulrich Drepper <drepper@redhat.com>
++
++ * inet/netinet/ip6.h (struct ip6_ext): Define.
++
++ * sysdeps/unix/sysv/linux/sys/param.h (howmany): Optimize for gcc.
++
++ Fixing gcc 3.3 warnings, part II.
++ * argp/argp-help.c (hol_entry_long_iterate): Always inline.
++ * elf/dl-load.c (cache_rpath): Don't inline.
++ * iconvdata/cns11642l2.h: Always inline all functions.
++ * iconvdata/iso-ir-165.h: Likewise.
++ * locale/Makefile (aux): Add coll-lookup.
++ * locale/coll-lookup.c: New file.
++ * locale/coll-lookup.h (collidx_table_lookup): Do not define here.
++ (collseq_table_lookup): Likewise.
++ * locale/weightwc.h: Adjust collidx_table_lookup calls for name change.
++ * posix/fnmatch_loop.c: Adjust collseq_table_lookup calls for name
++ change.
++ * posix/regcomp.c: Likewise.
++ * posix/regexec.c: Likewise.
++ * locale/programs/3level.h (*_get): Always inline.
++ * locale/programs/locfile.h: Move definition of handle_copy to...
++ * locale/programs/locfile.c: ...here.
++ * locale/programs/ld-collate.c (obstack_int32_grow): Always inline.
++ (obstack_int32_grow_fast): Likewise.
++ (utf8_encode): Likewise.
++ (find_element): Avoid aliasing problems.
++ (insert_value): Likewise.
++ (collate_read): Likewise.
++ * nss/getent.c (print_hosts): Don't inline
++ (print_networks): Likewise.
++ (print_shadow): Likewise.
++ (build_doc): Likewise.
++ * nss/nss_files/files-parse.c [ENTDATA] (parser_stclass): Don't
++ inline.
++ * posix/regcomp.c (re_set_fastmap): Always inline.
++ (seek_collating_symbol_entry): Likewise.
++ (lookup_collation_sequence_value): Likewise.
++ (build_range_exp): Likewise.
++ (build_collating_symbol): Likewise.
++ * posix/regexec.c (acquire_init_state_context): Don't inline.
++ (clean_state_log_if_need): Likewise.
++ * resolv/res_send.c (eConsIovec): Rewrite to not return struct and
++ adjust all callers.
++ (evConsTime): Likewise.
++ (evAddTime): Likewise.
++ (evSubTime): Likewise.
++ (evNowTime): Likewise.
++ (evTimeSpec): Removed.
++ (__libc_res_nsend): Avoid aliasing problem.
++ * sysdeps/unix/sysv/linux/ifreq.h: Move old_siocgifconf definition to..
++ * sysdeps/unix/sysv/linux/ifreq.c: ...here.
++ * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_string_hwcap):
++ Always inline.
++ (_dl_string_platform): Likewise.
++ * wctype/wchar-lookup.h (wctype_table_lookup): Always inline.
++ (wcwidth_table_lookup): Likewise.
++ (wctrans_table_lookup): Likewise.
++
++ * sysdeps/unix/sysv/linux/sys/epoll.h: Include <stdint.h>.
++
++2003-06-12 Ulrich Drepper <drepper@redhat.com>
++
++ * wcsmbs/wchar.h: Define wint_t in std namespace, too [PR libc/5034].
++
++2003-05-29 Jim Meyering <jim@meyering.net>
++
++ * time/strftime.c (my_strftime) [!defined _NL_CURRENT
++ && HAVE_STRFTIME]: Use underlying_strftime for %r.
++ Suggested by Daniel Yacob <locales@geez.org>.
++
++2003-06-12 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Replace
++ @got notation with @toc.
++ * sysdeps/powerpc/powerpc64/sysdep.h (CALL_MCOUNT): Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Likewise.
++
++2003-06-12 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date also
++ if only PF_INET address is needed.
++
++ * nss/getXXbyYY_r.c: Make sure we always return a nonzero value in
++ case of an error.
++
++ * scripts/config.guess: Update from upstream version.
++ * scripts/config.sub: Likewise.
++
++2003-06-12 Jakub Jelinek <jakub@redhat.com>
++
++ * locale/programs/ld-time.c (time_output): Also copy the era format,
++ not only the name.
++
++2003-06-12 H.J. Lu <hongjiu.lu@intel.com>
++
++ * posix/transbug.c (run_test): Return 1 for failure.
++ (do_test): Compare only if run_test is successful.
++
++2003-06-12 Simon Josefsson <jas@extundo.com>
++
++ * argp/argp.h [!__THROW]: Define if undefined.
++
++2003-06-12 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/cris/sysdep.h: Fix handling of syscalls with
++ more than four parameters.
++ Patch by Uwe Reimann <libc-alpha@pulsar.homelinux.net>.
++
++2003-06-12 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file.
++ * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: New file.
++ * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: New file.
++
++ * stdio-common/printf-parsemb.c: Include stdlib.h and sys/param.h.
++
++2003-06-12 Roland McGrath <roland@redhat.com>
++
++ * Makerules ($(objpfx)stubs): Rewrite sed magic.
++
++2003-02-28 Isamu Hasegawa <isamu@yamato.ibm.com>
++
++ * posix/regcomp.c (parse_expression): Deliver translation to
++ build_word_op, and build_charclass.
++ (build_charclass): Apply translation for character classes too.
++ (build_word_op): Deliver translation to build_charclass.
++ * posix/transbug.c: New file.
++ * posix/Makefile (tests): Add transbug.
++
++2003-06-04 Paolo Bonzini <bonzini@gnu.org>
++
++ * posix/regexec.c (group_nodes_into_DFAstates): Check for
++ NEXT_ENDBUF_CONSTRAINT. Move check for constraints which do a
++ 'continue' before the others.
++
++2003-06-11 Ulrich Drepper <drepper@redhat.com>
++
++ * dirent/scandir.c (SCANDIR): Reset errno after calling selector
++ function [PR libc/5045].
++
++ * sysdeps/i386/bits/byteswap.h (__bswap_32): Use bswap instruction
++ also for P4.
++
++ * time/tzfile.c: Add a couple of __builtin_expect.
++
++ Remove warnings gcc 3.3 shows.
++ * argp/argp-help.c (hol_entry_short_iterate): Don't inline.
++ * elf/dl-load.c (fillin_rpath): Likewise.
++ (add_path): Likewise.
++ * elf/dl-version.c (find_needed): Always inline.
++ * elf/do-lookup.c (FCT): Don't inline.
++ * iconv/Makefile: Extend vpath to intl subdir.
++ (iconvconfig-modules): Add hash-string.
++ * iconv/gconv_charset.h (strip): Don't inline.
++ (upstr): Always inline.
++ Move __gconv_compare_alias prototype to...
++ * iconv/gconv_int.h: ...here.
++ * iconv/gconv_db.c: Don't include gconv_charset.h.
++ * iconv/gconv_conf.c (add_alias): Don't inline.
++ (insert_module): Likewise.
++ * iconv/gconv_simple.c (internal_ucs4_loop): Always inline.
++ (internal_ucs4_loop_unaligned): Likewise.
++ (internal_ucs4_loop_single): Likewise.
++ (ucs4_internal_loop): Likewise.
++ (ucs4_internal_loop_unaligned): Likewise.
++ (ucs4_internal_loop_single): Likewise.
++ (internal_ucs4le_loop): Always inline.
++ (internal_ucs4le_loop_unaligned): Likewise.
++ (internal_ucs4le_loop_single): Likewise.
++ (ucs4le_internal_loop): Likewise.
++ (ucs4le_internal_loop_unaligned): Likewise.
++ (ucs4le_internal_loop_single): Likewise.
++ * iconv/loop.c: Always inline the defined functions.
++ * iconvdata/cns11642.h: Likewise.
++ * iconvdata/cns11642l1.h: Likewise.
++ * iconvdata/euc-kr.c: Likewise.
++ * iconvdata/gb2312.h: Likewise.
++ * iconvdata/jis0201.h: Likewise.
++ * iconvdata/jis0208.h: Likewise.
++ * iconvdata/jis0212.h: Likewise.
++ * iconvdata/jisx0213.h: Likewise.
++ * iconvdata/ksc5601.h: Likewise.
++ * iconvdata/utf-7.c (base64): Don't inline.
++ * include/libc-symbols.h (symbol_set_first_element): Add cast
++ (symbol_set_end_p): Likewise.
++ * include/set-hooks (RUN_HOOK): Likewise.
++ * inet/Makefile (aux): Add ifreq.
++ * intl/Makefile (aux): Add some entries from routines. Add
++ hash-string.
++ * intl/hash-string.c: New file.
++ * intl/hash-string.h: Remove hash_string definition. Declare
++ __hash_string.
++ * iconv/gconv_cache.c (find_module_idx): Adjust hash_string caller.
++ * iconv/iconvconfig.c (new_name): Likewise.
++ * intl/dcigettext.c (_nl_find_msg): Likewise.
++ * intl/loadmsgcat.c (_nl_load_domain): Likewise.
++ * io/ftw.c (open_dir_stream): Always inline.
++ (process_entry): Don't inline.
++ * locale/findlocale.c: Include gconv_int.h.
++ * locale/setlocale.c (new_composite_name): Don't inline.
++ * locale/weight.h (findidx): Always inline.
++ * locale/weightwc.h (findidx): Likewise.
++ * locale/programs/linereader.c (lr_ignore_rest): Define here.
++ * locale/programs/linereader.h (lr_ignore_rest): Don't define here,
++ just declare it.
++ (lr_getc): Always inline.
++ (lr_ungetc): Likewise.
++ * nss/nss_files/files-parse.c (parse_list): Likewise.
++ * stdio-common/Makefile (aux): Add printf-parsemb and
++ printf-parsewc.
++ * stdio-common/_itoa.h (_itoa_word): Always inline.
++ (_fitoa_word, _fitoa): Don't define here, only declare.
++ * stdio-common/_itoa.c (_iftoa_word): Add here.
++ (_fitoa): Likewise.
++ * stdio-common/_itowa.h (_itowa_word): Always inline.
++ * stdio-common/printf-parse.h (read_int): Don't inline.
++ (find_spec): Don't define.
++ Declare __find_specmb and __find_specwc.
++ (parse_one_spec): Don't define.
++ Declare __parse_one_specmb and __parse_one_specwc.
++ * stdio-common/printf-parsemb.c: New file.
++ * stdio-common/printf-parsewc.c: New file.
++ * stdio-common/vfprintf.c: Update calls to find_spec and
++ parse_one_spec for new names.
++ * stdio-common/printf-prs.c: Likewise. Define DONT_NEED_READ_INT.
++ * stdlib/Makefile (aux): Add grouping and groupingwc.
++ * stdlib/grouping.c: New file.
++ * stdlib/groupingwc.c: New file.
++ * stdlib/grouping.h (correctly_grouped_prefix): Don't define here.
++ Just prototype.
++ * stdlib/rpmatch.c (try): Don't inline.
++ * stdlib/strtod.c (round_and_return): Don't line.
++ (str_to_mpn): Likewise.
++ (__mpn_lshift_1): Always inline. Optimize only for constant count.
++ Adjust for name change of correctly_grouped_prefix.
++ * sysdeps/generic/strtol.c: Adjust for name change of
++ correctly_grouped_prefix.
++ * string/strxfrm.c (utf8_encode): Don't inline.
++ * sysdeps/generic/dl-cache.c: Define _dl_cache_libcmp.
++ * sysdeps/generic/dl-cache.h: Just declare _dl_cache_libcmp.
++ * sysdeps/generic/ifreq.c: New file.
++ * sysdeps/unix/sysv/linux/ifreq.c: New file.
++ * sysdeps/generic/ifreq.h (__ifreq): Only declare here.
++ * sysdeps/unix/sysv/linux/ifreq.h: Likewise.
++ * sysdeps/generic/ldsodefs.h (_dl_name_match_p): Always inline.
++ * sysdeps/generic/unwind-dw2-fde.c (start_fde_sort): Don't inline.
++ (fde_split): Likewise.
++ (fde_merge): Likewise.
++ (end_fde_sort): Likewise.
++ (init_object): Likewise.
++ (binary_search_unencoded_fdes): Likewise.
++ (binary_search_single_encoding_fdes): Likewise.
++ (binary_search_mixed_encoding_fdes): Likewise.
++ * sysdeps/generic/wordexp.c (w_addchar): Don't inline.
++ * sysdeps/i386/dl-machine.c (elf_machine_runtime_setup): Always inline.
++ * sysdeps/posix/sprofil.c (profil_count): Don't inline.
++ * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
++ Add xstatconv.
++ * sysdeps/unix/sysv/linux/xstatconv.h: New file.
++ * sysdeps/unix/sysv/linux/xstatconv.c: Don't inline the function.
++ Export them. Prepend __ to name.
++ * sysdeps/unix/sysv/linux/Dist: Add xstatconv.h.
++ * sysdeps/unix/sysv/linux/fxstat.c: Adjust for name change of
++ conversion functions.
++ * sysdeps/unix/sysv/linux/fxstat64.c: Likewise.
++ * sysdeps/unix/sysv/linux/lxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/lxstat64.c: Likewise.
++ * sysdeps/unix/sysv/linux/xstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/xstat64.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise.
++ * sysdeps/unix/sysv/linux/pathconf.c (__statfs_link_max,
++ __statfs_filesize_max, __statfs_symlinks): Define here. __ prepended
++ to name. Change callers.
++ * sysdeps/unix/sysv/linux/pathconf.h (__statfs_link_max,
++ __statfs_filesize_max, __statfs_symlinks): Don't define here, just
++ declare.
++ * sysdeps/unix/sysv/linux/fpathconf.c: Change all callers.
++ * time/tzfile.c (decode): Always inline.
++ * wcsmbs/wcsnrtombs.c: Change type of inbuf to unsigned char*.
++ Remove cast in tomb function call.
++ * wcsmbs/wcsrtombs.c Likewise.
++ * wcsmbs/wcstob.c: Introduce new temp variable to take pointer in
++ tomb function call.
++
++2003-06-10 Ulrich Drepper <drepper@redhat.com>
++
++ * po/zh_CN.po: Update from translation team.
++
++2003-06-10 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/bits/in.h (IPV6_V6ONLY, IPV6_JOIN_ANYCAST,
++ IPV6_LEAVE_ANYCAST, IPV6_IPSEC_POLICY, IPV6_XFRM_POLICY): Define.
++
++2003-06-10 Ulrich Drepper <drepper@redhat.com>
++
++ * inet/Makefile (aux): Add check_pf.
++ * include/ifaddrs.h: Add prototype for __check_pf.
++ * sysdeps/generic/check_pf.c: New file.
++ * sysdeps/unix/sysv/linux/check_pf.c: New file.
++ * sysdeps/unix/sysv/linux/ifaddrs.h (__no_netlink_support): Renamed
++ from no_netlink_support. Export.
++ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't call getifaddrs,
++ call __check_pf.
++
++ * sysdeps/generic/ifaddrs.h: Add libc_hidden_def.
++
++ * sysdeps/posix/getaddrinfo.c (getaddrinfo): Don't leak memory
++ from getifaddr calls.
++
++2003-06-09 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h
++ (__ASSUME_SETRESGID_SYSCALL): Define.
++ * sysdeps/unix/sysv/linux/setegid.c: Use __ASSUME_SETRESGID_SYSCALL
++ instead of __ASSUME_SETRESUID_SYSCALL.
++ (setegid): Only use setresgid32 inline syscall if __NR_setresgid32 is
++ defined.
++ * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Only use setresgid32
++ inline syscall if __NR_setresuid32 is defined.
++ * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use
++ __ASSUME_SETRESGID_SYSCALL instead of __ASSUME_SETRESUID_SYSCALL.
++ * sysdeps/unix/sysv/linux/i386/setregid.c: Backout last changes.
++ * sysdeps/unix/sysv/linux/i386/setreuid.c: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c (setegid): Protect
++ code handling non-existant setresgid32 syscall with
++ #if __ASSUME_SETRESGID_SYSCALL == 0.
++
++2003-06-09 Andreas Schwab <schwab@suse.de>
++
++ * sunrpc/Makefile (generated): Remove rpc-proto.c, rpc-proto.d.
++ ($(rpcsvc:%.x=$(objpfx)x%$o)): Don't depend on
++ $(objpfx)rpc-proto.d.
++ (rpcsvc-dt-files, rpcsvc-depfiles): Define. Include
++ $(rpcsvc-depfiles) instead of $(objpfx)rpc-proto.d.
++ ($(objpfx)rpc-proto.d, $(objpfx)rpc-proto.c): Remove rules.
++
++2003-06-08 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/seteuid.c (seteuid): Use setresuid32
++ syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is
++ defined drop compatibility code.
++ * sysdeps/unix/sysv/linux/setegid.c (setegid): Use setresgid32
++ syscall directly if possible. If __ASSUME_SETRESUID_SYSCALL is
++ defined drop compatibility code.
++ * sysdeps/unix/sysv/linux/i386/seteuid.c (seteuid): Use
++ setresuid32 syscall directly if possible.
++ * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Use
++ setresgid32 syscall directly if possible.
++ * sysdeps/unix/sysv/linux/i386/setregid.c (__setregid): Make POSIX
++ compliant. Don't change sgid.
++ * sysdeps/unix/sysv/linux/i386/setreuid.c (__setreuid): Make POSIX
++ compliant. Don't change suid.
++
++ * config.h.in: Add have-forced-unwind.
++ * configure.in: Add AC_SUBST(libc_cv_forced_unwind).
++
++2003-06-07 Ulrich Drepper <drepper@redhat.com>
++
++ * test-skeleton.c (main): If EXPECTED_STATUS is defined check that
++ returned status from child matches.
++
++ * Makeconfig (gnulib): Add -lgcc_eh once again.
++
++2003-06-06 Ulrich Drepper <drepper@redhat.com>
++
++ * test-skeleton.c (main): Use TEMP_FAILURE_RETRY with waitpid.
++
++ * sysdeps/unix/sysv/linux/i386/sysdep.h (ASMFMT_2): Only allow
++ %edx for first parameter. This means no pushl and therefore the
++ unwind info isn't screwed up.
++
++2003-06-04 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/alpha/dl-machine.h (RTLD_START): Fix top-of-stack backtrace.
++ * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
++ * sysdeps/alpha/elf/start.S: Likewise. Remove pointless allocation.
++ * sysdeps/unix/sysv/linux/alpha/rt_sigaction.S: Use standard ldgp
++ entry sequence and explicit relocs. Add unwind info for sigreturn
++ and rt_sigreturn.
++ * configure.in (libc_cv_asm_cfi_directives): Test .cfi_remember_state.
++
++ * sysdeps/unix/sysv/linux/alpha/syscalls.list (semtimedop): New.
++ Annotate some parameters.
++ * sysdeps/unix/sysv/linux/alpha/sysdep.h (__NR_semtimedop): New.
++
++ * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Fix typo in conversion.
++
++ * include/libc-symbols.h (symbol_set_declare): Use arrays
++ of unspecified size.
++
++2003-06-04 Jakub Jelinek <jakub@redhat.com>
++
++ * config.make.in (ASFLAGS-config): New.
++ * Makeconfig (ASFLAGS): Append $(ASFLAGS-config).
++ * configure.in (libc_cv_as_noexecstack): New check.
++ (ASFLAGS_config): Substitute.
++
++2003-06-04 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/fpu/bits/mathinline.h (log1p, asinh, acosh, atanh,
++ hypot, logb): Protect with #ifdef __FAST_MATH__.
++
++2003-06-04 Thorsten Kukuk <kukuk@suse.de>
++
++ * sysdeps/i386/fpu/bits/mathinline.h (ldexpf, ldexpl): Protect with
++ #ifdef __FAST_MATH__.
++
++2003-06-03 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/glob.c [HAVE_D_TYPE] (glob_in_dir): Also allow
++ DT_LNK entries if GLOB_ONLYDIR is set [PR libc/5043].
++ * posix/globtest.sh: Adjust for this change.
++
++ * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname
++ to get the actual PID value used in the records passed up.
++ (getifaddrs): Don't initialize nh.pid here.
++
++2003-06-02 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_receive): Minor
++ optimization.
++
++ * po/zh_CN.po: Update from translation team.
++
++ * posix/getconf.c (main): Also recognize names without the
++ _POSIX_ prefix.
++
++ * elf/Makefile (CFLAGS-dl-lookup.c): Define.
++
++2003-06-02 Bernd Schmidt <bernds@redhat.com>
++
++ * sysdeps/i386/fpu/bits/mathinline.h (sqrt, __sqrtl, ldexp,
++ ldexpf, ldexpl): Only define if __FAST_MATH__.
++
++2003-06-02 Richard C. Bilson <rcbilson@plg.uwaterloo.ca>
++
++ Replace hard-coded offsets into struct sigcontext with generated file.
++ * sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: New file.
++ * sysdeps/unix/sysv/linux/ia64/Makefile
++ [$(subdir) = stdlib] (gen-as-const-headers): Add it.
++ * sysdeps/unix/sysv/linux/ia64/ucontext_i.h: Include it instead of
++ defining SC_* macros here.
++
++2003-06-02 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/bits/sched.h (CLONE_PID): Remove.
++
++2003-06-01 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/dl-machine.h: Include <sysdep.h>.
++
++2003-06-01 Ulrich Drepper <drepper@redhat.com>
++
++ * test-skeleton.c (main): Request getopt to not reorder the
++ command line.
++
++ * elf/Makefile (CFLAGS-dl-runtime.c): Define.
++
++ * wcsmbs/wcpncpy.c (__wcpncpy): Fix broken implementation to match
++ stpncpy.
++
++2003-05-31 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h (SA_NOCLDWAIT): Define.
++
++2003-05-31 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_plt_conflict):
++ New function.
++ (elf_machine_rela) <case R_PPC64_JMP_SLOT>: Avoid
++ RESOLVE_CONFLICT_FIND_MAP. If RESOLVE_CONFLICT_FIND_MAP is defined,
++ call elf_machine_plt_conflict instead of elf_machine_fixup_plt.
++
++2003-05-31 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/i386/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Add
++ CFI directives.
++
++ * csu/Makefile: Fix Makefile warnings regarding Scrt1.o.
++
++ * libio/fileops.c (_IO_file_open): Don't mark as inline.
++
++ * sysdeps/ia64/elf/initfini.c (gmon_initializer): Mark with
++ attribute used.
++
++2003-05-30 Ulrich Drepper <drepper@redhat.com>
++
++ * scripts/config.guess: Update from master copy.
++ * scripts/config.sub: Likewise.
++
++2003-05-30 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/mips/mips64/bsd-_setjmp.S: Include <sys/asm.h> for
++ SETUP_GP64 and friends.
++ * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Fix register
++ names in internal_syscall{6,7}.
++ * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pread.c [_MIPS_SIM == _ABI64]: Fix
++ number of syscall arguments.
++ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
++
++2003-05-30 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/x86_64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
++ Add CFI directives.
++
++ * sysdeps/unix/sysv/linux/x86_64/sigaction.c (RESTORE2): Add CFI
++ directives.
++
++ * sysdeps/generic/sysdep.h: Add CFI_* macros for C files.
++
++ * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_ERROR_HANDLER):
++ Add CFI directives.
++
++2003-05-30 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc32/elf/start.S: Make code compilable with
++ SHARED.
++
++2003-05-11 Andreas Schwab <schwab@suse.de>
++
++ * Makerules: Always use -MP together with -MD.
++ (sed-remove-dotot): Substitute $(..) also at start of line.
++ ($(stdio_lim:h=st)): Use -MD instead of SUNPRO_DEPENDENCIES.
++ Generated defines with a single compiler call.
++ Use $(sed-remove-dotdot).
++ * mach/Makefile ($(objpfx)mach-syscalls.mk): Use -MD instead
++ of DEPENDENCIES_OUTPUT, and use $(sed-remove-objpfx).
++ * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h):
++ Use -MD instead of SUNPRO_DEPENDENCIES, and use $(sed-remove-objpfx).
++ * sysdeps/unix/sysv/linux/mips/Makefile
++ ($(objpfx)syscall-%.h): Likewise.
++
++2003-05-28 Roland McGrath <roland@redhat.com>
++
++ * malloc/malloc.h [! __GNUC__] (__const): Define if undefined.
++
++2003-05-26 Aldy Hernandez <aldyh@redhat.com>
++
++ * soft-fp/soft-fp.h (FP_EX_UNDERFLOW): Define to 0.
++
++2003-05-28 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/setcontext.S: Pass fourth argument to
++ rt_sigprocmask system call.
++ * sysdeps/unix/sysv/linux/ia64/ucontext_i.h (SC_MASK): Fix value.
++ From Peter A. Buhr <pabuhr@plg2.math.uwaterloo.ca>.
++
++2003-05-28 Ulrich Drepper <drepper@redhat.com>
++
++ * include/libc-symbols.h: Define hidden attribute for real also if
++ LIBC_NONSHARED is defined. Patch by Jakub Jelinek.
++
++ * csu/Makefile: Add rules to build Scrt1.o.
++ * sysdeps/i386/elf/start.S: Make code compilable with SHARED.
++ * sysdeps/x86_64/elf/start.S: Likewise.
++
++2003-05-27 Jakub Jelinek <jakub@redhat.com>
++
++ * stdio-common/vfprintf.c (process_arg, process_string_arg): Use
++ pa_int/pa_u_int instead of pa_short_int, pa_u_short_int and pa_char.
++ * stdio-common/printf-parse.h (union printf_arg): Remove pa_char,
++ pa_short_int, pa_u_short_int and pa_float.
++
++2003-05-26 Jakub Jelinek <jakub@redhat.com>
++
++ * libio/strops.c (_IO_str_init_static): Change into a wrapper around
++ _IO_str_init_static_internal.
++ (_IO_str_init_static_internal): Moved from _IO_str_init_static,
++ change size argument to _IO_size_t, don't limit sprintf to 64M.
++ (_IO_str_init_readonly): Call _IO_str_init_static_internal.
++ * libio/wstrops.c (_IO_wstr_init_static): Change size argument to
++ _IO_size_t, don't limit swprintf to 256M.
++ (_IO_wstr_init_readonly): Remove.
++ * libio/libioP.h (_IO_str_init_static_internal, _IO_wstr_init_static):
++ Adjust prototypes.
++ (_IO_wstr_init_readonly): Remove prototype.
++ * libio/iovsprintf.c (_IO_vsprintf): Use
++ _IO_str_init_static_internal instead of INTUSE(_IO_str_init_static).
++ * libio/iovsscanf.c (_IO_vsscanf): Likewise.
++ * libio/memstream.c (open_memstream): Likewise.
++ * libio/obprintf.c (_IO_obstack_vfprintf): Likewise.
++ * libio/vasprintf.c (_IO_vasprintf): Likewise.
++ * libio/vsnprintf.c (_IO_vsnprintf): Likewise.
++ * stdio-common/tst-sprintf.c (main): Add new test.
++
++2003-05-26 Ulrich Drepper <drepper@redhat.com>
++
++ * stdio-common/vfprintf.c (vfprintf): Be bug-compatible with some
++ other implementation in respect of multiple uses of parameter with
++ different types.
++
++2003-05-25 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_FUTEX_REQUEUE for >= 2.5.70.
++
++2003-05-22 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: Add CFI
++ directives.
++ * sysdeps/unix/sysv/linux/x86_64/time.S: Likewise.
++ * sysdeps/x86_64/strtok.S: Likewise.
++
++2003-05-20 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Change SI_ASYNCNL
++ to -60 and define SI_TKILL.
++
++2003-05-21 H.J. Lu <hongjiu.lu@intel.com>
++
++ * math/test-fenv.c (feexcp_nomask_test): Fix comment.
++ (feexcp_mask_test): Likewise.
++
++2003-05-21 Ulrich Drepper <drepper@redhat.com>
++
++ * locale/programs/locale.c (main): Fix typo in last patch.
++
++ * csu/elf-init.c: Mark __preinit_array_start, __preinit_array_end,
++ __init_array_start, __init_array_end, __fini_array_start, and
++ __fini_array_end as hidden.
++
++2003-05-21 Petter Reinholdtsen <pere@hungry.com>
++
++ * locale/programs/locale.c (main): Report an error if setlocale()
++ fails [PR libc/2254].
++
++2003-05-21 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/system.c: New file.
++
++2003-05-21 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (LOADARGS_0,
++ LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5,
++ LOADARGS_6): Don't error if syscall argument is a string literal.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (LOADARGS_0,
++ LOADARGS_1, LOADARGS_2, LOADARGS_3, LOADARGS_4, LOADARGS_5,
++ LOADARGS_6): Likewise.
++
++2003-05-21 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/generic/sysdep.h (cfi_offset, cfi_startproc,
++ cfi_endproc, cfi_def_cfa, cfi_def_ccfa_register,
++ cfi_def_cfa_offset, cfi_adjust_cfa_offset, cfi_offset): Define.
++
++ * sysdeps/x86_64/sysdep.h (CALL_MCOUNT): Add cfi directives.
++ (ENTRY): Likewise.
++ (END): Likewise.
++
++ * configure.in: Test for asm cfi directives.
++
++ * config.h.in: Add HAVE_ASM_CFI_DIRECTIVES.
++
++2003-05-17 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/syscall.S: Revert last patch.
++
++ * rt/tst-clock_nanosleep.c: Include <time.h> for clock_nanosleep.
++
++2003-05-16 Ulrich Drepper <drepper@redhat.com>
++
++ * rt/Makefile (tests): Add tst-clock_nanosleep.
++ * rt/tst-clock_nanosleep.c: New file.
++ * posix/Makefile (tests): Add tst-nanosleep.
++ * posix/tst-nanosleep.c: New file.
++
++ * sysdeps/unix/clock_nanosleep.c (CPUCLOCK_P): Fix definition.
++
++ * include/features.h (__USE_XOPEN2K): Define also for
++ _POSIX_C_SOURCE>=200112L.
++
++ * sysdeps/unix/sysv/linux/sigwaitinfo.c (do_sigwaitinfo): Fold
++ SI_TKILL code into SI_USER.
++ * sysdeps/unix/sysv/linux/sigtimedwait.c (do_sigtimedwait): Likewise.
++
++ * sysdeps/posix/sigpause.c (do_sigpause): Use sigdelset after all.
++
++2003-05-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow):
++ Remove sym argument, always use refsym.
++ (__process_machine_rela): Adjust callers.
++ * sysdeps/powerpc/powerpc64/dl-machine.c (_dl_reloc_overflow):
++ Likewise.
++ * sysdeps/powerpc/powerpc32/dl-machine.h (_dl_reloc_overflow):
++ Adjust prototype.
++ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
++
++2003-05-15 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Fix typo
++ (DL_NEED_SYSINFO -> NEED_DL_SYSINFO). If aux value is not known
++ print numeric values.
++
++2003-05-12 Thorsten Kukuk <kukuk@suse.de>
++
++ * inet/netinet/igmp.h: Sync with Linux Kernel 2.5.69 and *BSD.
++
++2003-05-14 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/unix/sysv/linux/ia64/umount.c: New file.
++
++2003-05-14 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope
++ even if no DT_NEEDED is present.
++
++2003-05-13 David Mosberger <davidm@hpl.hp.com>
++
++ * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix the fix from
++ 2003-03-27: setjmp is NOT a leaf-routine (due to the call to
++ __sigjmp_save) so we can't keep the saved unat value in a scratch
++ register (r16). Use loc2 instead.
++
++2003-05-13 Ulrich Drepper <drepper@redhat.com>
++
++ * csu/Makefile: Do compile elf-init with PIC flag since in dynamic
++ binaries it has to be relocatable.
++
++ * sysdeps/unix/sysv/linux/waitpid.c: Use waitpid syscall is available.
++
++2003-05-12 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/bits/atomic.h
++ (__arch_compare_and_exchange_bool_8_rel): Define.
++ (__arch_compare_and_exchange_bool_16_rel): Define.
++ (__ARCH_REL_INSTR): Define if not already defined.
++ (__arch_atomic_exchange_and_add_32): Add "memory" to clobber list.
++ (__arch_atomic_decrement_if_positive_32):
++ Add "memory" to clobber list.
++ (__arch_compare_and_exchange_val_32_acq): Remove release sync.
++ (__arch_compare_and_exchange_val_32_rel): Define.
++ (__arch_atomic_exchange_32): Remove.
++ (__arch_atomic_exchange_32_acq): Define.
++ (__arch_atomic_exchange_32_rel): Define.
++ (atomic_compare_and_exchange_val_rel): Define.
++ (atomic_exchange_acq): Use __arch_atomic_exchange_*_acq forms.
++ (atomic_exchange_rel): Define.
++ * sysdeps/powerpc/powerpc32/bits/atomic.h
++ (__arch_compare_and_exchange_bool_32_acq): Remove release sync.
++ (__arch_compare_and_exchange_bool_32_rel): Define.
++ (__arch_compare_and_exchange_bool_64_rel): Define.
++ (__arch_compare_and_exchange_val_64_rel): Define.
++ (__arch_atomic_exchange_64): Remove.
++ (__arch_atomic_exchange_64_acq): Define.
++ (__arch_atomic_exchange_64_rel): Define.
++ * sysdeps/powerpc/powerpc64/bits/atomic.h
++ (__arch_compare_and_exchange_bool_32_rel): Define.
++ (__arch_compare_and_exchange_bool_64_acq): Remove release sync.
++ (__arch_compare_and_exchange_bool_64_rel): Define.
++ (__arch_compare_and_exchange_val_64_acq): Remove release sync.
++ (__arch_compare_and_exchange_val_64_rel): Define.
++ (__arch_atomic_exchange_64): Remove.
++ (__arch_atomic_exchange_64_acq): Define.
++ (__arch_atomic_exchange_64_rel): Define.
++ (__arch_atomic_exchange_and_add_64): Add "memory" to clobber list.
++ (__arch_atomic_decrement_if_positive_64):
++ Add "memory" to clobber list.
++ [!UP](__ARCH_REL_INSTR): Define as lwsync.
++
++2003-05-11 Andreas Schwab <schwab@suse.de>
++
++ * io/Makefile ($(objpfx)ftwtest.out): Use absolute file names.
++
++2003-05-11 Ulrich Drepper <drepper@redhat.com>
++
++ * time/tst-strftime.c (do_test): Add tests for - flag.
++
++2003-05-11 Jim Meyering <jim@meyering.net>
++
++ * time/strftime.c (my_strftime): Let the `-' (no-pad) flag affect
++ the space-padded-by-default conversion specifiers, %e, %k, %l.
++
++2003-05-11 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/generic/sched_setaffinity.c: Fix parameter name.
++
++2003-05-10 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/bits/sched.h: Define cpu_set_t only if not
++ already defined and when really needed.
++ * sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
++
++2003-05-09 Thorsten Kukuk <kukuk@suse.de>
++
++ * sysdeps/unix/sysv/linux/netinet/igmp.h: Don't include kernel
++ headers, add defines from kernel header, move it from here...
++ * inet/netinet/igmp.h: ... to here.
++ * inet/Makefile (headers): Add netinet/igmp.h.
++ * sysdeps/unix/sysv/linux/Makefile: Remove netinet/igmp.h.
++ * sysdeps/unix/sysv/linux/Dist: Remove netinet/igmp.h.
++
++2003-05-10 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/lio_listio64.c (lio_listio64): If SIG == NULL,
++ use dummy sigevent structure with SIGEV_NONE [PR libc/5015].
++
++2003-05-09 Thorsten Kukuk <kukuk@suse.de>
++
++ * libio/bits/stdio.h: Sync prototypes with libio/stdio.h
++ (remove __THROW from possible cancellation points).
++
++2003-05-10 Ulrich Drepper <drepper@redhat.com>
++
++ * posix/sched.h (CPU_SETSIZE): Define.
++
++2003-05-09 Ulrich Drepper <drepper@redhat.com>
++
++ * Makeconfig (gnulib): Remove -lgcc_eh again.
++
++ * posix/sched.h: Change prototypes of sched_getaffinity and
++ sched_setaffinity. Define CPU_SET, CPU_CLR, CPU_ISSET, and CPU_ZERO.
++ * sysdeps/generic/sched_getaffinity.c: Adjust definition.
++ * sysdeps/generic/sched_setaffinity.c: Likewise.
++ * sysdeps/generic/bits/sched.h: Define __CPU_SETSIZE, __NCPUBITS,
++ __CPUELT, __CPUMASK, cpu_set_t, __cpu_mask, __CPU_ZERO, __CPU_SET,
++ __CPU_CLR, and __CPU_ISSET.
++ * sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
++ * sysdeps/unix/sysv/linux/sched_getaffinity.c: New file.
++ * sysdeps/unix/sysv/linux/sched_setaffinity.c: New file.
++
++ * include/atomic.h (atomic_exchange_acq): Renamed from atomic_exchange.
++ (atomic_exchange_rel): New #define.
++ * sysdeps/ia64/bits/atomic.h: Likewise.
++ * sysdeps/i386/i486/bits/atomic.h (atomic_exchange_acq): Renamed from
++ atomic_exchange.
++ * sysdeps/m68k/m68020/bits/atomic.h: Likewise.
++ * sysdeps/powerpc/bits/atomic.h: Likewise.
++ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: Likewise.
++ * sysdeps/sparc/sparc64/bits/atomic.h: Likewise.
++ * sysdeps/x86_64/bits/atomic.h: Likewise.
++ * csu/tst-atomic.c: Use atomic_exchange_acq instead of atomic_exchange.
++
++ * sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c: New file.
++
++2003-05-08 Ulrich Drepper <drepper@redhat.com>
++
++ * malloc/thread-m.h: Remove special handling of thread_atfork if
++ HAVE_register_atfork_malloc is defined.
++
++2003-05-07 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/syscall.S: Add DWARF2 unwind
++ information.
++
++2003-05-06 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/oldiofdopen.c (_IO_old_fdopen): Use _IO_old_init not _IO_init.
++ * libio/oldiofopen.c (_IO_old_fopen): Likewise.
++ * libio/libioP.h: Declare _IO_old_init.
++ * libio/genops.c (_IO_no_init): Split in two. New function
++ _IO_old_init.
++
++2003-05-05 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/enbl-secure.c (__libc_enable_secure_decided): New
++ variable.
++ (__libc_init_secure): Don't do anything if __libc_enable_secure_decided
++ is nonzero.
++ * include/unistd.h: Declare __libc_enable_secure_decided.
++ * elf/dl-support.c (_dl_aux_init): Recognize AT_UID, AT_EUID, AT_GID,
++ and AT_EGID. If all found, set __libc_enable_secure and
++ __libc_enable_secure_decided.
++
++ * sysdeps/generic/libc-start.c [!SHARED]: Call
++ __libc_check_standard_fds after __libc_init_first.
++
++2003-05-05 Roland McGrath <roland@redhat.com>
++
++ * Makerules (common-before-compile): New variable.
++ ($(common-objpfx)%.make): Depend on that instead of $(before-compile).
++ ($(common-objpfx)%.h $(common-objpfx)%.h.d): Likewise. Move this rule
++ to after all setting of before-compile.
++
++2003-05-05 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/ia64/bits/atomic.h (__arch_compare_and_exchange_val_8_acq,
++ __arch_compare_and_exchange_val_16_acq): Cast 0 to mem's type.
++ * sysdeps/powerpc/powerpc32/bits/atomic.h
++ (__arch_compare_and_exchange_val_64_acq): Likewise.
++ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
++ (__arch_compare_and_exchange_val_8_acq,
++ __arch_compare_and_exchange_val_16_acq,
++ __arch_compare_and_exchange_val_64_acq): Likewise.
++ * sysdeps/sparc/sparc64/bits/atomic.h
++ (__arch_compare_and_exchange_val_8_acq,
++ __arch_compare_and_exchange_val_16_acq): Likewise.
++ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq,
++ __arch_compare_and_exchange_val_16_acq,
++ __arch_compare_and_exchange_val_64_acq): Likewise.
++ * sysdeps/unix/sysv/linux/sh/bits/atomic.h
++ (__arch_compare_and_exchange_val_64_acq): Likewise.
++ * sysdeps/s390/s390-64/backtrace.c (__backtrace): Add cast to shut
++ up warning.
++ * sysdeps/s390/fpu/fegetenv.c (fegetenv): Likewise.
++
++ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
++ (INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0):
++ Return long instead of int.
++ (INTERNAL_SYSCALL_ERROR_P): Cast val to unsigned long, replace
++ 0xfffff001u with -4095UL.
++
++2003-05-05 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/x86_64/fpu_control.h: New from i386.
++
++ * sysdeps/unix/sysv/linux/x86_64/sysdep.h (__NR_semtimedop):
++ Define if not defined.
++
++ * sunrpc/Makefile (generated-dirs): New variable.
++ * resolv/Makefile (generated): New variable.
++
++2003-05-04 Roland McGrath <roland@redhat.com>
++
++ * csu/Makefile ($(csu-dummies) target rule): Don't use a temp C file.
++ Depend on $(before-compile).
++
++ * csu/Makefile ($(objpfx)crt%.o): Replace implicit rule with a static
++ pattern rule. The implicit rule could be ruled out when $(objpfx)
++ didn't exist at the time of its consideration (ugh!).
++
++ * Makerules (+make-deps): Fix target matching.
++ Use $(sed-remove-dotdot).
++
++2003-05-03 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/nscd.c (main): Parse config file right after parsing
++ parameters. Then, if get_stats is true, call receive_print_stats.
++ Drop parameter from nscd_init call.
++ (get_stats): New variable.
++ (parse_opt): Set get_stats, don't call receive_print_stats here.
++ * nscd/nscd.h: Declare dbs, stat_user, and stat_uid. Adjust nscd_init
++ prototype.
++ * nscd/connections.c (stat_user, stat_uid): New variables.
++ (dbs): Make global.
++ (nscd_init): Don't read configuration file here. Drop parameter.
++ (handle_request): Cleanup handling of non-database lookup requests.
++ * nscd/nscd_conf.c (nscd_parse_file): Recognize stat-user entry.
++ Get UID of the specified user. Use xstrdup instead of strdup.
++ * nscd/nscd_stat.c (receive_print_stats): Check UID. If not zero,
++ check stat_user.
++ * nscd/Makefile (nscd-modules): Add xstrdup.
++ * nscd/nscd.conf: Document stat-user entry.
++
++2003-05-03 H.J. Lu <hongjiu.lu@intel.com>
++
++ * sysdeps/unix/sysv/linux/ia64/sysdep.h (__NR_semtimedop): Define
++ if not defined.
++
++2003-04-22 Roland McGrath <roland@redhat.com>
++
++ * elf/elf.h (AT_SYSINFO_EHDR): New macro, replaces AT_SYSINFO_EH_FRAME.
++ * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
++ dl_sysinfo_eh_frame member, add dl_sysinfo_dso member instead.
++ * elf/dl-support.c: Update defn.
++ * sysdeps/generic/libc-start.c: Don't call __register_frame_info_bases.
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [NEED_DL_SYSINFO]:
++ Set GL(dl_sysinfo_dso) from AT_SYSINFO_EHDR.
++ (_dl_show_auxv): Grok AT_SYSINFO_EHDR, not AT_SYSINFO_EH_FRAME.
++ * elf/rtld.c (dl_main) [NEED_DL_SYSINFO]: If GL(dl_sysinfo_dso) is
++ set, set up a link_map for the preloaded, prelinked object.
++
++2003-05-03 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/gnu/Makefile (generated): Append errlist-compat.c here, ...
++ * stdio-common/Makefile: ... not here.
++
++ * csu/Makefile ($(objpfx)initfini.s): Depend on $(before-compile).
++ * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise.
++
++2003-05-02 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/semtimedop.c: New file.
++
++ * sysdeps/unix/sysv/linux/alpha/ipc_priv.h (IPCOP_semtimedop): Define.
++
++ * sysdeps/generic/dl-fptr.c (_dl_make_fptr): Use 0 not NULL for
++ comparing ftab elements.
++ (_dl_unmap): Fix typo in test.
++ (_dl_make_fptr): Fix typos introduced in last change.
++
++ * sysdeps/generic/dl-fptr.c: Put back one optimization from the
++ original patch. Use non-exported symbols. Mark translatable
++ strings. Pretty printing.
++
++2003-05-02 Roland McGrath <roland@redhat.com>
++
++ * Makerules (do-stamp): Do $(make-target-directory).
++
++2003-04-07 H.J. Lu <hjl@gnu.org>
++
++ * sysdeps/generic/dl-fptr.c: Modify to remove the lock.
++
++2003-04-03 H.J. Lu <hjl@gnu.org>
++
++ * sysdeps/ia64/dl-fptr.c: Moved to ...
++ * sysdeps/generic/dl-fptr.c: Here.
++
++ * sysdeps/generic/dl-fptr.h: New.
++ * sysdeps/ia64/dl-fptr.h: New.
++
++ * sysdeps/ia64/dl-symaddr.c: Moved to ...
++ * sysdeps/generic/dl-symaddr.c: here.
++
++ * sysdeps/ia64/dl-machine.h: Include <dl-fptr.h>.
++ (IA64_BOOT_FPTR_TABLE_LEN): Removed.
++ (ia64_fdesc): Likewise.
++ (ia64_fdesc_table): Likewise.
++ (__ia64_make_fptr): Likewise.
++ (__ia64_init_bootstrap_fdesc_table): Replace __ia64_boot_fptr_table
++ with _dl_boot_fptr_table.
++ (elf_machine_runtime_setup): Replace `struct ia64_fdesc' with
++ `struct fdesc'.
++ (elf_machine_rela): Replace __ia64_make_fptr with _dl_make_fptr.
++
++2003-05-01 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/generic/bp-thunks.h: Protect includes with [!__ASSEMBLER__].
++ * sysdeps/unix/sysv/linux/i386/bp-thunks.h: Likewise.
++
++ * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h):
++ Use $(make-target-directory).
++ * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Likewise.
++
++ * Makerules (compile-mkdep-flags): New variable, pass -MD -MF $@.d.
++ (compile-command.S): Don't use ifndef. Append $(compile-mkdep-flags).
++ (compile-command.s, compile-command.c): Likewise.
++ ($(objpfx)%.d): All such pattern rules removed.
++ ($(+sysdir_pfx)sysd-rules): Don't generate them.
++ ($(common-objpfx)dummy.d): Target removed.
++ (make-dummy-dep): Variable removed.
++ (generate-md5): Likewise.
++ (%.d: %.dt): New pattern rule.
++ (+depfiles): Use $(wildcard) function to get just existing *.d files
++ and .d files for existing *.dt files.
++ (common-clean): Remove all *.d and *.dt files.
++ (before-compile): Add $(objpfx). when it doesn't exist,
++ regardless of $(no_deps).
++ * elf/rtld-Rules ($(objpfx)rtld-%.d): All such pattern rules removed.
++ (rtld-depfiles): Use .os.d instead of .d names.
++ Include existing *.d files and .d files for existing *.dt files.
++
++ * Makerules ($(common-objpfx)%.make): Protect with [! subdir].
++ Use -MD, -MT and -MF flags instead of SUNPRO_DEPENDENCIES variable.
++
++ * sysdeps/unix/Makefile ($(common-objpfx)s-%.d): Remove compat.h hack.
++ Do s-*.d includes only if we have some syscall routines in this subdir.
++
++ * include/libc-symbols.h (libc_freeres_ptr): Use %nobits instead of
++ @nobits. The former is accepted by gas on any ELF platform.
++
++2003-05-01 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/semtimedop.c: New file.
++
++ * malloc/malloc.c (mSTATs): Call ptmalloc_init if necessary.
++
++2003-04-29 Andreas Schwab <schwab@suse.de>
++
++ * string/test-strcat.c (do_one_test): Fix attribute name.
++
++2003-04-30 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (ucontext): Make
++ uc_flags long for all ABIs.
++
++2003-04-30 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h
++ (DR_CONTROL_RESERVED): Use correct value for 64-bit.
++ Reported by Andrew Derrick Balsa <andrebalsa@mailingaddress.org>.
++ Add bi-arch support.
++
++2003-04-30 Ulrich Drepper <drepper@redhat.com>
++
++ * malloc/malloc.c (mEMALIGn): Define alias __memalign_internal.
++ (__posix_memalign): Use __memalign_internal instead of memalign.
++
++2003-04-29 Roland McGrath <roland@redhat.com>
++
++ * configure.in: Search for AUTOCONF unconditionally.
++ Just don't complain about missing it under --without-cvs.
++
++ * include/libc-symbols.h (__symbol_set_attribute): New macro,
++ give hidden for [SHARED] and weak for [! SHARED].
++ (symbol_set_declare): Use that. Never need weak_extern these days.
++ * Makerules ($(common-objpfx)shlib.lds): Go back to using PROVIDE.
++ Depend on $(..)Makerules.
++
++2003-04-29 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Use __ protected
++ variants of socket, bind, recvmsg, and sendto.
++
++ * sysdeps/i386/fpu/ftestexcept.c: Also check SSE status word.
++
++ * include/signal.h: Use libc_hidden_proto for sigaddset and sigdelset.
++ * signal/sigaddset.c: Add libc_hidden_def.
++ * signal/sigdelset.c: Likewise.
++
++2003-04-29 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/i486/string-inlines.c (__memcpy_g, __strchr_g): Move
++ to the end of the file.
++
++ * configure.in: Change __oline__ to $LINENO.
++ (HAVE_BUILTIN_REDIRECTION): New check.
++ * config.h.in (HAVE_BUILTIN_REDIRECTION): Add.
++ * include/libc-symbols.h (libc_hidden_builtin_proto,
++ libc_hidden_builtin_def, libc_hidden_builtin_weak,
++ libc_hidden_builtin_ver): Define.
++ * include/string.h (memchr, memcpy, memmove, memset, strcat, strchr,
++ strcmp, strcpy, strcspn, strlen, strncmp, strncpy, strpbrk, strrchr,
++ strspn, strstr): Add libc_hidden_builtin_proto.
++ * intl/plural.y: Include string.h.
++ * sysdeps/alpha/alphaev6/memchr.S (memchr): Add
++ libc_hidden_builtin_def.
++ * sysdeps/alpha/alphaev6/memcpy.S (memcpy): Likewise.
++ * sysdeps/alpha/alphaev6/memset.S (memset): Likewise.
++ * sysdeps/alpha/alphaev67/strcat.S (strcat): Likewise.
++ * sysdeps/alpha/alphaev67/strchr.S (strchr): Likewise.
++ * sysdeps/alpha/alphaev67/strlen.S (strlen): Likewise.
++ * sysdeps/alpha/alphaev67/strrchr.S (strrchr): Likewise.
++ * sysdeps/alpha/memchr.S (memchr): Likewise.
++ * sysdeps/alpha/memset.S (memset): Likewise.
++ * sysdeps/alpha/strcat.S (strcat): Likewise.
++ * sysdeps/alpha/strchr.S (strchr): Likewise.
++ * sysdeps/alpha/strcmp.S (strcmp): Likewise.
++ * sysdeps/alpha/strcpy.S (strcpy): Likewise.
++ * sysdeps/alpha/strlen.S (strlen): Likewise.
++ * sysdeps/alpha/strncmp.S (strncmp): Likewise.
++ * sysdeps/alpha/strncpy.S (strncpy): Likewise.
++ * sysdeps/alpha/strrchr.S (strrchr): Likewise.
++ * sysdeps/arm/memset.S (memset): Likewise.
++ * sysdeps/arm/strlen.S (strlen): Likewise.
++ * sysdeps/generic/memchr.c (memchr): Likewise.
++ * sysdeps/generic/memcpy.c (memcpy): Likewise.
++ * sysdeps/generic/memmove.c (memmove): Likewise.
++ * sysdeps/generic/memset.c (memset): Likewise.
++ * sysdeps/generic/strcat.c (strcat): Likewise.
++ * sysdeps/generic/strchr.c (strchr): Likewise.
++ * sysdeps/generic/strcmp.c (strcmp): Likewise.
++ * sysdeps/generic/strcpy.c (strcpy): Likewise.
++ * sysdeps/generic/strcspn.c (strcspn): Likewise.
++ * sysdeps/generic/strlen.c (strlen): Likewise.
++ * sysdeps/generic/strncmp.c (strncmp): Likewise.
++ * sysdeps/generic/strncpy.c (strncpy): Likewise.
++ * sysdeps/generic/strpbrk.c (strpbrk): Likewise.
++ * sysdeps/generic/strrchr.c (strrchr): Likewise.
++ * sysdeps/generic/strspn.c (strspn): Likewise.
++ * sysdeps/generic/strstr.c (strstr): Likewise.
++ * sysdeps/i386/i486/strcat.S (strcat): Likewise.
++ * sysdeps/i386/i486/strlen.S (strlen): Likewise.
++ * sysdeps/i386/i586/memcpy.S (memcpy): Likewise.
++ * sysdeps/i386/i586/memset.S (memset): Likewise.
++ * sysdeps/i386/i586/strchr.S (strchr): Likewise.
++ * sysdeps/i386/i586/strcpy.S (strcpy): Likewise.
++ * sysdeps/i386/i586/strlen.S (strlen): Likewise.
++ * sysdeps/i386/i686/memcpy.S (memcpy): Likewise.
++ * sysdeps/i386/i686/memmove.S (memmove): Likewise.
++ * sysdeps/i386/i686/memset.S (memset): Likewise.
++ * sysdeps/i386/i686/strcmp.S (strcmp): Likewise.
++ * sysdeps/i386/memchr.S (memchr): Likewise.
++ * sysdeps/i386/memset.c (memset): Likewise.
++ * sysdeps/i386/strchr.S (strchr): Likewise.
++ * sysdeps/i386/strcspn.S (strcspn): Likewise.
++ * sysdeps/i386/strlen.c (strlen): Likewise.
++ * sysdeps/i386/strpbrk.S (strpbrk): Likewise.
++ * sysdeps/i386/strrchr.S (strrchr): Likewise.
++ * sysdeps/i386/strspn.S (strspn): Likewise.
++ * sysdeps/ia64/memchr.S (memchr): Likewise.
++ * sysdeps/ia64/memcpy.S (memcpy): Likewise.
++ * sysdeps/ia64/memmove.S (memmove): Likewise.
++ * sysdeps/ia64/memset.S (memset): Likewise.
++ * sysdeps/ia64/strcat.S (strcat): Likewise.
++ * sysdeps/ia64/strchr.S (strchr): Likewise.
++ * sysdeps/ia64/strcmp.S (strcmp): Likewise.
++ * sysdeps/ia64/strcpy.S (strcpy): Likewise.
++ * sysdeps/ia64/strlen.S (strlen): Likewise.
++ * sysdeps/ia64/strncmp.S (strncmp): Likewise.
++ * sysdeps/ia64/strncpy.S (strncpy): Likewise.
++ * sysdeps/m68k/memchr.S (memchr): Likewise.
++ * sysdeps/m68k/strchr.S (strchr): Likewise.
++ * sysdeps/mips/mips64/memcpy.S (memcpy): Likewise.
++ * sysdeps/mips/mips64/memset.S (memset): Likewise.
++ * sysdeps/mips/memcpy.S (memcpy): Likewise.
++ * sysdeps/mips/memset.S (memset): Likewise.
++ * sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
++ * sysdeps/powerpc/powerpc32/strchr.S (strchr): Likewise.
++ * sysdeps/powerpc/powerpc32/strcmp.S (strcmp): Likewise.
++ * sysdeps/powerpc/powerpc32/strcpy.S (strcpy): Likewise.
++ * sysdeps/powerpc/powerpc32/strlen.S (strlen): Likewise.
++ * sysdeps/powerpc/powerpc64/memcpy.S (memcpy): Likewise.
++ * sysdeps/powerpc/powerpc64/memset.S (memset): Likewise.
++ * sysdeps/powerpc/powerpc64/strchr.S (strchr): Likewise.
++ * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Likewise.
++ * sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Likewise.
++ * sysdeps/powerpc/powerpc64/strlen.S (strlen): Likewise.
++ * sysdeps/powerpc/strcat.c (strcat): Likewise.
++ * sysdeps/sparc/sparc32/memchr.S (memchr): Likewise.
++ * sysdeps/sparc/sparc32/memcpy.S (memcpy): Likewise.
++ * sysdeps/sparc/sparc32/memset.S (memset): Likewise.
++ * sysdeps/sparc/sparc32/strcat.S (strcat): Likewise.
++ * sysdeps/sparc/sparc32/strchr.S (strchr, strrchr): Likewise.
++ * sysdeps/sparc/sparc32/strcmp.S (strcmp): Likewise.
++ * sysdeps/sparc/sparc32/strcpy.S (strcpy): Likewise.
++ * sysdeps/sparc/sparc32/strlen.S (strlen): Likewise.
++ * sysdeps/sparc/sparc64/sparcv9b/memcpy.S (memcpy, memmove): Likewise.
++ * sysdeps/sparc/sparc64/memchr.S (memchr): Likewise.
++ * sysdeps/sparc/sparc64/memcpy.S (memcpy, memmove): Likewise.
++ * sysdeps/sparc/sparc64/memset.S (memset): Likewise.
++ * sysdeps/sparc/sparc64/strcat.S (strcat): Likewise.
++ * sysdeps/sparc/sparc64/strchr.S (strchr, strrchr): Likewise.
++ * sysdeps/sparc/sparc64/strcmp.S (strcmp): Likewise.
++ * sysdeps/sparc/sparc64/strcpy.S (strcpy): Likewise.
++ * sysdeps/sparc/sparc64/strcspn.S (strcspn): Likewise.
++ * sysdeps/sparc/sparc64/strlen.S (strlen): Likewise.
++ * sysdeps/sparc/sparc64/strncmp.S (strncmp): Likewise.
++ * sysdeps/sparc/sparc64/strncpy.S (strncpy): Likewise.
++ * sysdeps/sparc/sparc64/strpbrk.S (strpbrk): Likewise.
++ * sysdeps/sparc/sparc64/strspn.S (strspn): Likewise.
++ * sysdeps/sh/memcpy.S (memcpy): Likewise.
++ * sysdeps/sh/memset.S (memset): Likewise.
++ * sysdeps/sh/strlen.S (strlen): Likewise.
++ * sysdeps/s390/s390-32/memchr.S (memchr): Likewise.
++ * sysdeps/s390/s390-32/memcpy.S (memcpy): Likewise.
++ * sysdeps/s390/s390-32/memset.S (memset): Likewise.
++ * sysdeps/s390/s390-32/strcmp.S (strcmp): Likewise.
++ * sysdeps/s390/s390-32/strcpy.S (strcpy): Likewise.
++ * sysdeps/s390/s390-32/strncpy.S (strncpy): Likewise.
++ * sysdeps/s390/s390-64/memchr.S (memchr): Likewise.
++ * sysdeps/s390/s390-64/memcpy.S (memcpy): Likewise.
++ * sysdeps/s390/s390-64/memset.S (memset): Likewise.
++ * sysdeps/s390/s390-64/strcmp.S (strcmp): Likewise.
++ * sysdeps/s390/s390-64/strcpy.S (strcpy): Likewise.
++ * sysdeps/s390/s390-64/strncpy.S (strncpy): Likewise.
++ * sysdeps/x86_64/memcpy.S (memcpy): Likewise.
++ * sysdeps/x86_64/memset.S (memset): Likewise.
++ * sysdeps/x86_64/strcat.S (strcat): Likewise.
++ * sysdeps/x86_64/strchr.S (strchr): Likewise.
++ * sysdeps/x86_64/strcmp.S (strcmp): Likewise.
++ * sysdeps/x86_64/strcpy.S (strcpy): Likewise.
++ * sysdeps/x86_64/strcspn.S (strcspn): Likewise.
++ * sysdeps/x86_64/strlen.S (strlen): Likewise.
++ * sysdeps/x86_64/strspn.S (strspn): Likewise.
++ * string/string-inlines.c: Move...
++ * sysdeps/generic/string-inlines.c: ...here.
++ (__memcpy_g, __strchr_g): Remove.
++ (__NO_INLINE__): Define before including <string.h>,
++ undefine after. Include bits/string.h and bits/string2.h.
++ * sysdeps/i386/i486/string-inlines.c: New file.
++ * sysdeps/i386/string-inlines.c: New file.
++ * sysdeps/i386/i486/Versions: Remove.
++ All GLIBC_2.1.1 symbols moved...
++ * sysdeps/i386/Versions (libc): ...here.
++
++2003-04-29 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/i386/fpu/Makefile: New file.
++ * sysdeps/i386/fpu/fedisblxcpt.c: Also set SSE control word.
++ * sysdeps/i386/fpu/feenablxcpt.c: Likewise.
++ * sysdeps/i386/fpu/feholdexcpt.c: Likewise.
++ * sysdeps/i386/fpu/fesetround.c: Also set SSE rounding mode
++ [PR libc/4987].
++
++2003-04-28 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/nscd_getgr_r.c: Compact code a bit. Add some __builtin_expect.
++ * nscd/nscd_getpw_r.c: Likewise.
++ * nscd/nscd_gethst_r.c: Likewise.
++
++2003-04-27 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/pwdcache.c: Initialize .version element in result.
++ * nscd/grpcache.c: Likewise.
++ * nscd/pwdcache.c: Likewise.
++
++2003-04-27 Andreas Schwab <schwab@suse.de>
++
++ * Makeconfig ($(common-objpfx)sysd-sorted): Fix for running in
++ subdirectory.
++
++2003-04-27 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/unix/sysv/linux/m68k/semtimedop.S: New file.
++
++2003-04-27 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/connections.c (client_queued): New variable.
++ (nscd_run): Revamp the loop. Don't call poll except for cleanup
++ threads. Keep track of the number of delays caused because of busy
++ worker threads.
++ * nscd/nscd.h: Declare client_queued.
++ * nscd/nscd_stat.c: Transmit and print client_queued information.
++
++ * locale/programs/locale.c (show_info): Use '\177' instead of CHAR_MAX.
++
++ * Makerules ($(common-objpfx)shlib.lds): Don't use PROVIDE to
++ define __start_libc_freeres_ptrs and __stop___libc_freeres_ptrs.
++
++2003-04-26 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/dl-close.c [USE_TLS && TLS_TCB_AT_TP] (_dl_close): Reimplement
++ tracking of freed memory in static TLS block.
++ * elf/Makefile: Add rules to build and run tst-tls13.
++ * elf/tst-tls13.c: New file.
++ * elf/tst-tlsmod13.c: New file.
++ * elf/tst-tlsmod13a.c: New file.
++
++ * elf/tst-tls8.c: Adjust types of variables to avoid warnings.
++
++ * elf/dl-reloc.c: Pretty printing.
++
++2003-04-26 Roland McGrath <roland@redhat.com>
++
++ * Makerules ($(common-objpfx)shlib.lds): New target.
++ (common-generated): Add it.
++ (build-shlib, build-module): Use that instead of generating every time.
++ ($(common-objpfx)libc.so): Depend on it.
++ (lib%.so rule): Likewise.
++ (build-module-helper-objlist): Remove %.lds.
++ (LDSEDCMD-c.so): Variable removed.
++ * iconvdata/extra-module.mk ($(objpfx)$(mod).so):
++ Depend on $(common-objpfx)shlib.lds.
++ * dlfcn/Makefile ($(test-modules)): Likewise.
++
++2003-04-26 Roland McGrath <roland@frob.com>
++
++ * sysdeps/mach/hurd/tmpfile.c: Remove USE_IN_LIBIO conditionals.
++
++2003-04-26 Andreas Schwab <schwab@suse.de>
++
++ * elf/dl-close.c (remove_slotinfo): Fix missing parens.
++
++2003-04-25 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/cache.c (cache_search): Keep track of how many chain links
++ we searched and update table statistics.
++ (cache_add): Keep track of how many values are in the table.
++ (prune_cache): Likewise. Keep track of locking success.
++ Print messages about removed entries in separate pass.
++ * nscd/connections.c (handle_request): Don't print debug message here.
++ The caller will do it. Keep track of locking success.
++ (nscd_run): Print debug message. Also print PID of the client process.
++ * nscd/nscd.c (start_time): New variable.
++ (main): Remember start time.
++ * nscd/nscd.h: Declare start_time.
++ (struct database): Add more members for new statistics.
++ * nscd/nscd_stat.c: Add support for sending, receiving, and printing
++ of new statistics.
++
++ * sysdeps/posix/getaddrinfo.c: Include <stdbool.h>.
++
++2003-04-22 Jakub Jelinek <jakub@redhat.com>
++
++ * include/link.h (NO_TLS_OFFSET): Define to 0 if not defined.
++ * elf/dl-close.c (_dl_close): Use NO_TLS_OFFSET.
++ * elf/dl-object.c (_dl_new_object): Initialize l_tls_offset to
++ NO_TLS_OFFSET.
++ * elf/rtld.c (_dl_start_final, _dl_start): Likewise.
++ * elf/dl-reloc.c (CHECK_STATIC_TLS): Use NO_TLS_OFFSET.
++ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Likewise.
++ * sysdeps/powerpc/dl-tls.h (TLS_TPREL_VALUE): Don't subtract
++ TLS_TCB_SIZE.
++
++2003-04-24 Ulrich Drepper <drepper@redhat.com>
++
++ * nss/getent.c: Implement alternative host database lookup via
++ getaddrinfo.
++
++ * include/ifaddrs.h: New file.
++ * include/netdb.h: Move definitions of AI_V4MAPPED, AI_ALL, and
++ AI_ADDRCONFIG...
++ * resolv/netdb.h: ...here.
++ * sysdeps/gnu/ifaddrs.c. Use libc_hidden_def where appropriate.
++ * sysdeps/unix/sysv/linux/ifaddrs.c: Likewise.
++ * sysdeps/posix/getaddrinfo.c: Implement AI_V4MAPPED, AI_ALL, and
++ AI_ADDRCONFIG.
++
++2003-04-24 Roland McGrath <roland@redhat.com>
++
++ * elf/dl-reloc.c (_dl_allocate_static_tls): Add internal_function.
++
++2003-04-24 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/dl-reloc.c (allocate_static_tls): Rename to...
++ (_dl_allocate_static_tls): ... this function. No longer static.
++ (CHECK_STATIC_TLS): Adjust.
++ * sysdeps/generic/ldsodefs.h (_dl_allocate_static_tls): New prototype.
++ * sysdeps/powerpc/powerpc32/dl-machine.h (__process_machine_rela):
++ Add SYM_MAP argument.
++ (elf_machine_rela): Adjust caller. Declare SYM_MAP unconditionally.
++ Check if SYM_MAP != NULL for R_PPC_DTPREL32. Only handle 32-bit
++ TLS relocs here. #ifdef out relocs which never appear in
++ .gnu.conflict section from dl-conflict.c processing.
++ * sysdeps/powerpc/powerpc32/dl-machine.c (__process_machine_rela):
++ Add SYM_MAP argument. Handle 16-bit TLS relocs here.
++
++ * sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): #ifdef
++ out relocs which never appear in .gnu.conflict section from
++ dl-conflict.c processing.
++ * sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela): Likewise.
++ * sysdeps/x86_64/dl-machine.h (elf_machine_rela): Likewise.
++ * sysdeps/i386/dl-machine.h (elf_machine_rela): Likewise.
++ Use r_type in RESOLVE macro.
++
++2003-04-23 Ulrich Drepper <drepper@redhat.com>
++
++ * nis/ypclnt.c (__yp_bind): Expect YPDB parameter to always be !=
++ NULL. Remove code made redundant by this assumption.
++ (__yp_unbind): Add call to free. Adjust all callers.
++
++ * nis/ypclnt.c (yp_all): Free the dom_binding object after
++ unbinding it.
++
++ * grp/initgroups.c (getgrouplist): Don't copy too much into the
++ user buffer if more groups are found than fit into it.
++
++ * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Use
++ extend_alloca.
++
++2003-04-23 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/posix/getaddrinfo.c (gaih_inet): Check for rc == ERANGE,
++ not rc == errno. Use extend_alloca.
++
++ * elf/tst-tls12.c (main): Fix declaration.
++ * elf/tst-tls10.c (dummy): Make hidden instead of static.
++ * elf/tst-tlsmod7.c (dummy): Likewise.
++ * elf/tst-tlsmod8.c (dummy): Likewise.
++ * elf/tst-tlsmod9.c (dummy): Likewise.
++
++2003-04-22 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/not-cancel.h: Put parens around macro args.
++ (open_not_cancel): Make last argument non-optional.
++ * sysdeps/generic/check_fds.c (check_one_fd): Update caller.
++ * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Likewise.
++ * iconv/gconv_cache.c (__gconv_load_cache): Likewise.
++
++ * include/tls.h: Protect against multiple inclusion.
++
++2003-04-22 Ulrich Drepper <drepper@redhat.com>
++
++ * nscd/nscd-client.h: Add declaration for __nscd_open_socket.
++ * nscd/nscd_gethst_r.c (__nscd_open_socket): Renamed from
++ open_socket. Not static anymore.
++ (nscd_gethst_r): Use __nscd_open_socket.
++ * nscd/nscd_getgr_r.c (open_socket): Removed.
++ (nscd_getgr_r): Use __nscd_open_socket.
++ * nscd/nscd_getpw_r.c (open_socket): Removed.
++ (nscd_getpw_r): Use __nscd_open_socket.
++
++ * nscd/nscd.c (main): Change type of fdn to long int and use strtol.
++ * nscd/connections.c (handle_request): Add cast to avoid warning.
++
++2003-04-21 Ulrich Drepper <drepper@redhat.com>
++
++ * signal/sigfillset.c: Moved to...
++ * sysdeps/generic/sigfillset.c: ...here. If SIGCANCEL is defined
++ do not set the corresponding bit.
++
++ * sysdeps/unix/sysv/linux/sigprocmask.c: Prevent changing mask for
++ SIGCANCEL.
++ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Define SI_TKILL.
++ * sysdeps/unix/sysv/linux/bits/siginfo.h: Define SI_TKILL.
++ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Define SI_TKILL.
++ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Define SI_TKILL.
++ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Define SI_TKILL.
++
++2003-04-20 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/not-cancel.h (open_not_cancel): Cast
++ first syscall parameter to const char*.
++
++2003-04-19 Ulrich Drepper <drepper@redhat.com>
++
++ * intl/Makefile ($(objpfx)msgs.h): Use C locale for sed run.
++
++ * configure.in: Add AC_PROG_CXX.
++ * config.make.in (CXX): Define.
++
++ * sysdeps/i386/i686/hp-timing.h (HP_TIMING_PRINT): Change type of
++ __len to size_t to avoid warnings.
++
++2003-04-18 Jes Sorensen <jes@wildopensource.com>
++
++ * libc/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Sync with Linux
++ 2.5.67.
++ * libc/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
++
++2003-04-19 Ulrich Drepper <drepper@redhat.com>
++
++ * stdlib/cxa_finalize.c (__cxa_finalize): Don't call
++ UNREGISTER_ATFORK if d == NULL.
++
++ * catgets/nl_types.h: Remove __THROW marker from cancellation points.
++ * dirent/dirent.h: Likewise.
++ * dlfcn/dlfcn.h: Likewise.
++ * grp/grp.h: Likewise.
++ * iconv/iconv.h: Likewise.
++ * io/fcntl.h: Likewise.
++ * io/ftw.h: Likewise.
++ * libio/stdio.h: Likewise.
++ * misc/sys/mman.h: Likewise.
++ * misc/sys/select.h: Likewise.
++ * misc/sys/syslog.h: Likewise.
++ * misc/sys/uio.h: Likewise.
++ * posix/spawn.h: Likewise.
++ * posix/unistd.h: Likewise.
++ * posix/sys/wait.h: Likewise.
++ * pwd/pwd.h: Likewise.
++ * resolv/netdb.h: Likewise.
++ * rt/aio.h: Likewise.
++ * shadow/shadow.h: Likewise.
++ * signal/signal.h: Likewise.
++ * socket/sys/socket.h: Likewise.
++ * stdlib/stdlib.h: Likewise.
++ * streams/stropts.h: Likewise.
++ * string/string.h: Likewise.
++ * sysdeps/gnu/utmpx.h: Likewise.
++ * sysvipc/sys/msg.h: Likewise.
++ * termios/termios.h: Likewise.
++ * time/time.h: Likewise.
++ * wcsmbs/wchar.h: Likewise.
++ * iconv/gconv_cache.c: Include <not-cancel.h> and use non-cancelable
++ functions.
++ * misc/daemon.c: Likewise.
++ * sysdeps/generic/backtracesymsfd.c: Likewise.
++ * sysdeps/generic/check_fds.c: Likewise.
++ * sysdeps/unix/sysv/linux/gethostid.c: Likewise.
++ * sysdeps/unix/sysv/linux/not-cancel.h: New file.
++ * sysdeps/generic/not-cancel.h: New file.
++ * csu/Makefile (distribute): Add not-cancel.h.
++ * sysdeps/unix/sysv/linux/fatal-prepare.h: New file.
++ * sysdeps/unix/sysv/linux/Makefile: Define FATAL_PREPARE_INCLUDE
++ for assert.c and assert-perr.c to include <fatal-prepare.h>.
++ * sysdeps/unix/sysv/linux/Dist: Add fatal-prepare.h.
++
++ * sysdeps/posix/remove.c (remove): Rewrite. No need to restore
++ errno and unlink first.
++
++ * io/ftw.c (ftw_dir): In all places assume fchdir is available.
++
++2003-04-18 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/libc_fatal.c (__libc_fatal): Use
++ INTERNAL_SYSCALL instead of INLINE_SYSCALL.
++
++2003-04-17 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/Makefile: Remove db2 directory handling.
++
++ * malloc/Makefile (CFLAGS-malloc.c): Define DEFAULT_TOP_PAD to 128k.
++ * sysdeps/unix/sysv/linux/Makefile (CFLAGS-malloc.c): Add to, not
++ replace.
++
++ * signal/Makefile (tests): Add tst-sigsimple.
++ * signal/tst-sigsimple.c: New file.
++
++2003-04-16 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/Makefile (distribute): Add tst-tlsmod{[7-9],1[0-2]}.c and
++ tst-tls10.h.
++ (tests): Add tst-tls1[0-2].
++ (modules-names): Add tst-tlsmod{[7-8],1[0-2]}.
++ ($(objpfx)tst-tlsmod8.so): Depend on tst-tlsmod7.so.
++ ($(objpfx)tst-tlsmod10.so): Depend on tst-tlsmod9.so.
++ ($(objpfx)tst-tlsmod12.so): Depend on tst-tlsmod11.so.
++ ($(objpfx)tst-tls10): Depend on tst-tlsmod8.so.
++ ($(objpfx)tst-tls11): Depend on tst-tlsmod10.so.
++ ($(objpfx)tst-tls12): Depend on tst-tlsmod12.so.
++ * elf/tst-tls10.c: New test.
++ * elf/tst-tls11.c: New test.
++ * elf/tst-tls12.c: New test.
++ * elf/tst-tls10.h: New file.
++ * elf/tst-tlsmod7.c: New file.
++ * elf/tst-tlsmod8.c: New file.
++ * elf/tst-tlsmod9.c: New file.
++ * elf/tst-tlsmod10.c: New file.
++ * elf/tst-tlsmod11.c: New file.
++ * elf/tst-tlsmod12.c: New file.
++
++2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/bits/atomic.h: Moved ppc32/64 specific code to ...
++ * sysdeps/powerpc/powerpc32/bits/atomic.h: New file.
++ * sysdeps/powerpc/powerpc64/bits/atomic.h: New file.
++
++2003-04-17 Ulrich Drepper <drepper@redhat.com>
++
++ * posix/regex.h: Include <sys/types.h>.
++
++ * signal/sigrelse.c (sigrelse): Use sigdelset and not __sigdelset.
++ The signal number must be checked.
++ * signal/sighold.c (sighold): Use sigaddset and not __sigaddset.
++ The signal number must be checked [PR libc/5004].
++
++ * sysdeps/unix/sysv/linux/system.c: If compiled without threads
++ don't do anything fancy.
++
++ * sysdeps/generic/bits/libc-lock.h: Define
++ __rtld_lock_define_initialized_recursive.
++
++ * nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry
++ contacting nscd if NOT_USENSCD_NAME > 0.
++ * nss/nsswitch.c (__nss_disable_nscd): New function.
++ * nss/nsswitch.h: Declare it.
++ * nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd.
++ * nscd/nscd.c (main): Call __nss_disable_nscd.
++
++2003-04-16 Ulrich Drepper <drepper@redhat.com>
++
++ * stdio-common/perror.c (perror): We don't need to set the offset
++ to _IO_pos_bad, this is how streams are initialized.
++
++ * locale/programs/ld-time.c (TESTARR_ELEM): Make i unsigned.
++ (time_output): If necessary, allocate new buffer for .name string if
++ padding is required.
++
++ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Check lengths
++ before copying. This might leave holes in the list. Adjust
++ pointers if necessary.
++ (netlink_receive): Allocate only one block.
++ (free_netlink_handle): Adjust appropriately.
++ (getifaddrs): Lots of cleanups.
++
++ * string/test-strncpy.c (do_one_test): Mark start and stop as
++ possibly unused.
++ * string/test-memchr.c: Likewise.
++ * string/test-memcmp.c: Likewise.
++ * string/test-memcpy.c: Likewise.
++ * string/test-memmove.c: Likewise.
++ * string/test-memset.c: Likewise.
++ * string/test-strcat.c: Likewise.
++ * string/test-strchr.c: Likewise.
++ * string/test-strcmp.c: Likewise.
++ * string/test-strcpy.c: Likewise.
++ * string/test-strlen.c: Likewise.
++ * string/test-strncmp.c: Likewise.
++ * string/test-strpbrk.c: Likewise.
++ * string/test-strrchr.c: Likewise.
++ * string/test-strspn.c: Likewise.
++
++2003-04-15 Roland McGrath <roland@redhat.com>
++
++ * libio/fileops.c (_IO_file_close_it): Macro tweak to avoid warning.
++
++ * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO]: Add decl for
++ INTUSE(__register_frame_info_bases).
++
++2003-04-15 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/elf.h: Define AT_SYSINFO_EH_FRAME.
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle
++ AT_SYSINFO_EH_FRAME. Adjust string width.
++ (_dl_show_auxv):Display AT_SYSINFO_EH_FRAME value.
++ * sysdeps/generic/ldsodefs.h [NEED_DL_SYSINFO] (struct rtld_global):
++ Add _dl_sysinfo_eh_frame field.
++ * elf/dl-support.c [NEED_DL_SYSINFO]: Define _dl_sysinfo_eh_frame.
++ * sysdeps/generic/libc-start.c [NEED_DL_SYSINFO] Define eh_obj
++ variable.
++ [NEED_DL_SYSINFO] (LIBC_START_MAIN): Call __register_frame_info_bases
++ if _dl_sysinfo_eh_frame is non-NULL.
++
++ * Makeconfig (gnulib): Add -lgcc_eh.
++
++ * config.h.in: Define HAVE_FORCED_UNWIND.
++
++2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/strcmp.S: Convert to full 64-bit.
++ * sysdeps/powerpc/powerpc64/strcpy.S: Likewise.
++
++2003-04-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Avoid
++ checking R_PPC_RELATIVE, R_PPC_NONE and whether relocation is
++ against local symbol in conflict processing.
++
++2003-04-15 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/bits/atomic.h
++ [__powerpc64] (__arch_compare_and_exchange_val_64_acq): Define.
++ [! __powerpc64] (__arch_compare_and_exchange_val_64_acq): Defined
++ as abort stub.
++ (__arch_compare_and_exchange_val_32_acq): Define.
++ (atomic_compare_and_exchange_val_acq): Define.
++
++2003-04-15 Ulrich Drepper <drepper@redhat.com>
++
++ * include/atomic.h: Pretty printing.
++
++2003-04-14 Ulrich Drepper <drepper@redhat.com>
++
++ * stdio-common/vfscanf.c: Add casts to avoid warnings.
++
++2003-04-14 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/i486/bits/atomic.h: Rename LOCK to LOCK_PREFIX.
++ * sysdeps/x86_64/bits/atomic.h: Likewise.
++
++2003-04-14 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/sysdep.h: Change PUSHARGS_1 and
++ POPARGS_1 to emit labels for the mov instructions.
++
++2003-04-14 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (ret_NOERRNO): Define.
++
++2003-04-14 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/generic/unwind-dw2.c (_Unwind_GetCFA): Add a cast to silence
++ compiler warning.
++
++ * sysdeps/generic/unwind-pe.h: Fix decl hacks broken in merge.
++
++2003-04-14 Ulrich Drepper <drepper@redhat.com>
++
++ * string/strxfrm.c (STRXFRM): Terminate rulearr at correct
++ position. Reported by jreiser@BitWagon.com.
++
++2003-04-13 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/unwind-dw2-fde.c: Update from recent gcc version.
++ * sysdeps/generic/unwind-dw2-fde.h: Likewise.
++ * sysdeps/generic/unwind-dw2.c: Likewise.
++ * sysdeps/generic/unwind-pe.h: Likewise.
++
++2003-04-13 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/sysv/linux/mips/profil-counter: New.
++ * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Port to n32/n64.
++ * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: New.
++ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Port to n32/n64.
++ (mcontext_t): Make it match the 32-bit mips kernel in o32.
++ * sysdeps/unix/sysv/linux/mips/sys/user.h: Bring in constants from
++ the mips and mips64 headers.
++ (struct user): Port to n32/n64.
++
++2003-04-12 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_init): Add cast to
++ avoid warning.
++
++ * sysdeps/unix/sysv/linux/i386/sigaction.c (__libc_sigaction): If
++ __ASSUME_VSYSCALL is defined don't add restorer.
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_VSYSCALL for 2.5.53.
++
++2003-04-11 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/libc-start.c: Cleanup MAIN_AUXVEC_ARG handling.
++ Remove HAVE_CANCELBUF code. Replace with code using the new
++ initializers for unwind-based cleanup handling.
++ * sysdeps/generic/unwind.h: Update from latest gcc version.
++ * sysdeps/unix/sysv/linux/i386/sysdep.h: Define labels in a few
++ places to allow unwind data generation.
++ * sysdeps/i386/bits/setjmp.h: Allow file to be included multiple times.
++ * sysdeps/x86_64/bits/setjmp.h: Likewise.
++ * sysdeps/sh/bits/setjmp.h: Likewise.
++ * sysdeps/powerpc/bits/setjmp.h: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: Likewise.
++ * sysdeps/alpha/bits/setjmp.h: Likewise.
++
++2003-04-11 Roland McGrath <roland@redhat.com>
++
++ * csu/tst-empty.c: New file.
++ * csu/Makefile (tests, tests-static): Add it.
++
++2003-04-11 Jakub Jelinek <jakub@redhat.com>
++
++ * string/test-strcmp.c (do_random_tests): Test whether return value
++ has been promoted to wordsize if the ABI requires caller to do so.
++ * string/test-strncmp.c (do_random_tests): Likewise.
++ * string/test-memcmp.c (do_random_tests): Likewise.
++
++ * sysdeps/powerpc/powerpc64/strcmp.S (strcmp): Sign extend rRTN
++ before returning.
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c
++ (__fe_nomask_env): Try prctl even if __ASSUME_NEW_PRCTL_SYSCALL
++ is not defined, but the prctl constants are.
++
++ * string/tester.c (test_strcmp): Fix a typo.
++
++2003-04-09 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD definition.
++ * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise.
++
++2003-04-08 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/sys/regdef.h (t4,t5,t6,t7): Renamed to t0..t3 on
++ NewABI.
++ (ta0, ta1, ta2, ta3): Defined to t4..t7 on o32, and a4..a7 on
++ NewABI.
++ * sysdeps/mips/mips64/memcpy.S: Adjust register naming
++ conventions.
++ * sysdeps/mips/mips64/memset.S: Likewise.
++ * sysdeps/unix/mips/sysdep.S (__syscall_error) [_LIBC_REENTRANT]:
++ Use t0 instead of t4 as temporary.
++
++2003-04-07 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/ldconfig.c (parse_conf): Ignore leading whitespace. Use
++ feof_unlocked instead of feof.
++ (add_dir): Ignore trailing whitespace.
++
++2003-04-07 Jakub Jelinek <jakub@redhat.com>
++
++ * posix/bug-regex4.c (main): Cap RANGE and STOP arguments to
++ sum of SIZE1 and SIZE2 arguments.
++
++2003-04-06 Ulrich Drepper <drepper@redhat.com>
++
++ * iconv/iconv_prog.c (process_block): Don't print message about
++ invalid input if the -c option is used.
++ (main): Correctly append IGNORE string for -c option.
++
++2002-04-06 Kaz Kojima <kkojima@rr.iij4u.or.jp>
++
++ * sysdeps/sh/bits/atomic.h: Moved to ...
++ * sysdeps/unix/sysv/linux/sh/bits/atomic.h: ... here. Add comments.
++ (__arch_compare_and_exchange_val_*_acq): Add parens around macro
++ arguments.
++ (atomic_bit_set, atomic_bit_test_set): Likewise.
++ (atomic_exchange_and_add): Likewise. Don't evaluate VALUE argument
++ twice.
++ (atomic_add, atomic_add_negative, atomic_add_zero): Likewise.
++
++2003-04-06 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/swapcontext.S: Rewrite register
++ restoration as done for setcontext yesterday.
++
++2003-04-06 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/rtld.c: Revert 2003-03-14 change.
++ * elf/dl-conflict.c (_dl_resolve_conflicts): Move
++ #if ! ELF_MACHINE_NO_RELA conditional into the routine.
++
++2003-04-05 Ulrich Drepper <drepper@redhat.com>
++
++ * sunrpc/xdr.c (xdr_string): Catch nodesize == 0 [PR libc/4999].
++
++ * sysdeps/ieee754/ldbl-96/e_gammal_r.c (__ieee754_gammal_r):
++ Always initialize *signgamp before returning an error.
++
++2003-04-05 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/setcontext.S: Rewrite to avoid writing
++ below the stack pointer even if switching to the same context we are
++ running right now.
++
++2003-04-05 Ulrich Drepper <drepper@redhat.com>
++
++ * catgets/gencat.c (read_input_file): Make sure that \n is not
++ alone on the line before testing for continuation.
++
++ * math/test-tgmath.c (compile_test): Initialize c.
++
++2003-04-05 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c: New.
++ * sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c: New.
++ * sysdeps/unix/sysv/linux/kernel-features.h: fcntl64 is available
++ on mips n32.
++ * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Explain why
++ XSTAT_IS_XSTAT64 must not be used for mips n64. Use 64-bit data
++ structure on n32 as well.
++ * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use POSIX-compliant
++ data types on n32 and n64.
++
++2003-04-05 Ulrich Drepper <drepper@redhat.com>
++
++ * libio/fileops.c (_IO_new_file_fopen): Don't free step data right
++ after getting them.
++
++ * malloc/thread-m.h [PTHREAD_MUTEX_INITIALIZER]: If
++ HAVE_register_atfork_malloc is defined use __register_atfork_malloc
++ instead of __register_atfork.
++
++2003-04-05 Jakub Jelinek <jakub@redhat.com>
++
++ * stdio-common/reg-printf.c (__register_printf_function): Calloc
++ instead of malloc __printf_arginfo_table and __printf_function_table.
++ Reported by John Reiser <jreiser@BitWagon.com>.
++
++2003-04-04 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/strchr.S: 64-bit optimizations.
++ * sysdeps/powerpc/powerpc64/strlen.S: 64-bit optimizations.
++
++ * sysdeps/powerpc/fpu/bits/mathdef.h (FLT_EVAL_METHOD): Undef before
++ defining.
++
++2003-04-04 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (struct flock): Adjust
++ for n64 abi.
++
++2003-04-03 Roland McGrath <roland@redhat.com>
++
++ * configure.in: Fix up use of compilation flags to match the build:
++ For .s files, $ASFLAGS;
++ For .S files, $CPPFLAGS $ASFLAGS;
++ For .c files, $CFLAGS $CPPFLAGS;
++ when linking, add $LDFLAGS.
++ * configure: Regenerated.
++
++2003-04-03 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Reverse test
++ for atomic_compare_and_exchange_bool_acq failure.
++
++2003-04-03 Ulrich Drepper <drepper@redhat.com>
++
++ * posix/unistd.h: Define _POSIX_VERSION, _POSIX2_VERSION,
++ _POSIX2_C_BIND, _POSIX2_C_DEV, _POSIX2_SW_DEV, and
++ _POSXI2_LOCALEDEF to 200112L. Remove _POSIX2_C_VERSION.
++ Remove declaration of pthread_atfork.
++
++2003-04-02 Ulrich Drepper <drepper@redhat.com>
++
++ * locale/iso-639.def: Add many more languages from the current ISO 639.
++
++ * sysdeps/unix/sysv/linux/ipc_priv.h: Define IPCOP_semtimedop.
++ * sysdeps/generic/semtimedop.c: New file.
++ * sysdeps/unix/sysv/linux/i386/semtimedop.S: New file.
++ * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add semtimedop.
++ * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise.
++ * sysvipc/Makefile (routines): Add semtimedop.
++ * sysvipc/Versions [GLIBC_2.3.3] (glibc): Add semtimedop.
++ * sysvipc/sys/sem.h: Declare semtimedop.
++
++2003-04-02 Daniel Jacobowitz <drow@mvista.com>
++
++ * configure.in: Check for __register_frame_info in both
++ -lgcc and -lgcc_eh.
++ * configure: Regenerated.
++
++2003-04-01 Roland McGrath <roland@redhat.com>
++
++ * scripts/abilist.awk: Allow dots in soname suffix.
++
++ * scripts/abilist.awk (emit): Fix bailout condition.
++
++2003-04-01 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Use the
++ IA-64 version.
++
++ * elf/tls-macros.h [__ia64__] (TLS_IE, TLS_LD, TLS_GD): Add gp
++ register as input to asm.
++
++2003-04-01 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h (sigevent_t): Fix a typo.
++
++2003-04-01 Andreas Jaeger <aj@suse.de>
++
++ * configure.in: Output as/ld as name if version is too old.
++
++2003-03-31 Daniel Jacobowitz <drow@mvista.com>
++
++ * configure.in: Don't require an installed C library in the test
++ for ".set" assembler support.
++
++2003-03-31 Roland McGrath <roland@redhat.com>
++
++ * signal/tst-sigset.c: New file.
++ * signal/Makefile (tests): Add it.
++
++2003-03-31 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Define to 65.
++ * sysdeps/unix/sysv/linux/hppa/bits/signum.h (_NSIG): Likewise.
++ * sysdeps/unix/sysv/linux/sparc/bits/signum.h (_NSIG): Likewise.
++ * sysdeps/unix/sysv/linux/bits/signum.h (_NSIG): Likewise.
++ (__SIGRTMAX): Adjust accordingly.
++ * sysdeps/gnu/siglist.c: If OLD2_SIGLIST_SIZE is defined define
++ second compatibility symbol set.
++ * sysdeps/unix/sysv/linux/siglist.h (OLD2_SIGLIST_SIZE): Define.
++
++2003-03-31 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/m68k/m68020/bits/atomic.h (atomic_increment_and_test):
++ Define.
++ (atomic_decrement_and_test): Fix test.
++
++2003-03-31 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/sparc/sparc32/bits/atomic.h: New file.
++ * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h: New file.
++ * sysdeps/sparc/sparc64/bits/atomic.h: New file.
++ * sysdeps/sparc/sparc32/atomicity.h: Removed.
++ * sysdeps/sparc/sparc32/sparcv9/atomicity.h: Removed.
++ * sysdeps/sparc/sparc64/atomicity.h: Removed.
++
++2003-03-30 Roland McGrath <roland@redhat.com>
++
++ * scripts/abilist.awk: Grok .opd foo plus .text .foo as "foo F" alone.
++
++ * intl/po2test.sed: Anchor substitution regexps to fix last change.
++
++2003-03-29 Paolo Bonzini <bonzini@gnu.org>
++
++ * intl/po2test.sed: Unify the transformations for msgid and msgstr
++ and remove a useless s/// command.
++
++2003-03-27 David Mosberger <davidm@hpl.hp.com>
++
++ * sysdeps/ia64/dl-machine.h (RTLD_START): Wrap ".save rp, r0"
++ directive into empty .prologue region to ensure that call-chain
++ is terminated even for the first instruction.
++
++ * sysdeps/ia64/elf/start.S (_start): Use ".save rp, r0" idiom
++ to terminate call-chain right from the get-go.
++
++ * sysdeps/unix/sysv/linux/ia64/fork.S (fork): Remove unnecessary
++ stop bit between compare & branch.
++
++2003-03-29 Ulrich Drepper <drepper@redhat.com>
++
++ * stdlib/strtod.c (INTERNAL): Recognize first digit after decimal
++ point correctly [PR libc/4993].
++
++ * sysdeps/unix/sysv/linux/ifaddrs.c (getifaddrs): Avoid
++ netlink_open calls if netlink is known to not be available.
++
++2003-03-29 Alexandre Oliva <aoliva@redhat.com>
++
++ * configure.in: Add mips64* support.
++ * sysdeps/mips/bits/endian.h: Make it bi-endian.
++ * sysdeps/mips/mipsel/bits/endian.h: Removed.
++ * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed.
++ * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed.
++ * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32.
++ * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32.
++ * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64.
++ * sysdeps/mips/Implies: Moved wordsize-32 to...
++ * sysdeps/mips/mips32/Implies: New file.
++ * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO,
++ ret_NOERRNO): New.
++ (ret, PSEUDO_END): Moved past END.
++ (PSEUDO): Moved to...
++ * sysdeps/unix/mips/mips32/sysdep.h: New file.
++ * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO.
++ * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to...
++ * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file.
++ * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.
++
++ * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start):
++ Re-introduce ENTRY.
++
++2003-03-28 Thorsten Kukuk <kukuk@suse.de>
++
++ * sysdeps/unix/sysv/linux/ifaddrs.c: New file.
++ * inet/test-ifaddrs.c: Allow AF_PACKET.
++ * sysdeps/unix/sysv/linux/kernel-features.h: Add
++ __ASSUME_NETLINK_SUPPORT.
++
++2003-03-28 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/vismain.c (do_test): Comment out tests which fail in the moment.
++
++2003-03-26 H.J. Lu <hjl@gnu.org>
++
++ * elf/vismod.h (getvarlocal1): Return const char **.
++ (getvarinmod1): Likewise.
++ (getvaritcpt1): Likewise.
++ (getvarlocal2): Likewise.
++ (getvarinmod2): Likewise.
++ (getvaritcpt2): Likewise.
++ (getvaritcpt3): Likewise.
++ * elf/vismain.c (do_test): Adjusted.
++ * elf/vismod1.c (getvarlocal1): Return address.
++ (getvarinmod1): Likewise.
++ (getvaritcpt1): Likewise.
++ * elf/vismod2.c (getvarlocal2): Likewise.
++ (getvarinmod2): Likewise.
++ (getvaritcpt2): Likewise.
++ * elf/vismod3.c (getvaritcpt3): Likewise.
++
++2003-03-28 Roland McGrath <roland@redhat.com>
++
++ * elf/vismain.c (do_test): Print both addresses when they don't match.
++
++ * scripts/abilist.awk: If given -v filename_regexp and/or -v
++ libname_regexp when parsing names, then produce output only
++ for those matching the given regexps. In combine mode, save all
++ stanzas for a final sorting by stanza header at the end.
++ Emit a blank line between stanzas.
++
++ * scripts/abilist.awk: When given -v combine=1, do parse_names and
++ emit a single output stream with lib name in stanza header lines.
++
++ * scripts/abilist.awk: Emit A for all *ABS* regardless of type.
++
++2003-03-27 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/powerpc/bits/atomic.h [! __powerpc64__]
++ (__arch_atomic_decrement_if_positive_64): Fix bogus definition.
++
++2003-03-28 Kaz Kojima <kkojima@rr.iij4u.or.jp>
++
++ * sysdeps/sh/bits/atomic.h (__arch_compare_and_exchange_val_8_acq):
++ Return old value. Make asm output reg constraint earlyclobber.
++ Renamed from...
++ (__arch_compare_and_exchange_8_acq): ... this.
++ (__arch_compare_and_exchange_val_16_acq):
++ Return old value. Make asm output reg constraint earlyclobber.
++ Renamed from...
++ (__arch_compare_and_exchange_16_acq): ... this.
++ (__arch_compare_and_exchange_val_32_acq):
++ Return old value. Make asm output reg constraint earlyclobber.
++ Renamed from...
++ (__arch_compare_and_exchange_32_acq): ... this.
++ (__arch_compare_and_exchange_val_64_acq):
++ Renamed from...
++ (__arch_compare_and_exchange_64_acq): ... this.
++ (atomic_exchange_and_add): Use local variables and
++ __arch_compare_and_exchange_val_64_acq.
++ (atomic_add): Likewise.
++ (atomic_add_negative, atomic_add_zero): Use local variables.
++
++2003-03-28 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/mips/sysdep.S: Include sys/asm.h.
++
++2003-03-27 Ulrich Drepper <drepper@redhat.com>
++
++ * Makefile: Remove libmd5crypt goal.
++
++2003-03-25 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Restore
++ special handling of relocations against local symbols.
++
++2003-03-27 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/bits/atomic.h
++ (__arch_compare_and_exchange_bool_32_acq): Move to [!__powerpc64__].
++ [__powerpc64__] (__arch_compare_and_exchange_bool_32_acq):
++ Define PPC64 specific version.
++ [__powerpc64__] (__arch_compare_and_exchange_bool_64_acq):
++ Change (mem) constraint to "b".
++ [__powerpc64__] (__arch_atomic_exchange_and add_64):
++ Replace addi with add. Change (value) contraint to "r".
++ Change (mem) constraint to "b".
++ [__powerpc64__] (__arch_atomic_decrement_if_positive_64): New macro.
++ (__arch_atomic_exchange_32): Change (mem) constraint to "b".
++ (__arch_atomic_exchange_and_add_32): Change (mem) constraint to "b".
++ (__arch_atomic_decrement_if_positive_32): New macro.
++ (atomic_decrement_if_positive): Use __arch* macros.
++
++2003-03-27 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/ia64/fpu/libm-test-ulps: Update.
++
++2003-03-27 Roland McGrath <roland@redhat.com>
++
++ * scripts/rpm2dynsym.sh: New file.
++ * Makefile (distribute): Add it.
++
++2003-03-27 David Mosberger <davidm@hpl.hp.com>
++
++ * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's
++ ar.unat before returning. Add missing .mem.offset directives
++ to ensure file gets assembled without warnings.
++ * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
++
++2003-03-27 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) <_SC_MONOTONIC_CLOCK>:
++ Return -1 instead of 0 if clock_getres failed.
++
++2003-03-27 Roland McGrath <roland@redhat.com>
++
++ * scripts/abilist.awk: If variable `parse_names' is set, grok the file
++ header lines and write out foo.symlist files for each foo.so.NN listed.
++
++ * libio/libioP.h (_IO_wfile_jumps): Remove attribute_hidden.
++ This symbol is exported, and we don't want to hide it.
++ Add libc_hidden_proto instead.
++ (_IO_file_jumps): Add libc_hidden_proto.
++ * libio/wfileops.c (_IO_wfile_jumps): Add libc_hidden_data_def.
++ Remove INTVARDEF.
++ * libio/fileops.c (_IO_file_jumps): Likewise.
++ * libio/stdfiles.c: Don't use INTUSE on them.
++ * libio/iofdopen.c (_IO_new_fdopen): Likewise.
++ * libio/iofopen.c (__fopen_internal): Likewise.
++ * libio/freopen.c (freopen): Likewise.
++ * libio/freopen64.c (freopen64): Likewise.
++ * libio/iovdprintf.c (_IO_vdprintf): Likewise.
++
++ * Makerules (check-abi) [$(enable-check-abi) = warn]:
++ Ignore exit status from diff.
++ * configure.in (enable_check_abi): Document possible value "warn".
++ Change default to no for now.
++ * configure: Regenerated.
++
++ * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Emit stub_warning
++ macro calls and a #include <stub-tag.h> at the end.
++ * Makerules ($(objpfx)stubs): Tweak sed commands.
++
++ * sysdeps/unix/sysv/linux/syscalls.list: Use - rather than EXTRA in
++ caller column for *xattr syscalls, since they are in sysdeps/generic.
++
++ * sysdeps/unix/sysv/linux/i386/setfsuid.c: setfsgid -> setfsuid
++ * sysdeps/unix/sysv/linux/i386/setfsgid.c: setfsuid -> setfsgid
++
++2003-03-26 Roland McGrath <roland@redhat.com>
++
++ * Makerules (check-abi-config): Use /thread instead of /tls when
++ use-thread and not just use-tls is set.
++
++ * Makerules (update-abi): Put quotes around $(update-abi-config).
++
++ * elf/Makefile (check-abi): Depend on check-abi-ld.
++ (update-abi): Depend on update-abi-ld.
++
++2003-03-26 GOTO Masanori <gotom@debian.or.jp>
++
++ * sysdeps/unix/sysv/linux/i386/setfsuid.c: Use INTERNAL_SYSCALL and
++ do not check for errors (unless testing for 32bit variant).
++ * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise.
++
++2003-03-27 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET_NOERRNO): Use
++ unconditional mov. Remove nop.
++
++ * sysdeps/unix/sysv/linux/kernel-features.h
++ (__ASSUME_VFORK_SYSCALL): Define for kernel 2.4 on arm.
++ * sysdeps/unix/sysv/linux/arm/vfork.S: Elide compatibility code
++ when __ASSUME_VFORK_SYSCALL is defined.
++ * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise for
++ __ASSUME_MMAP2_SYSCALL.
++ * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise for
++ __ASSUME_REALTIME_SIGNALS.
++
++2003-03-26 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_COPY): Define to 2
++ only if DL_NO_COPY_RELOCS is not defined.
++ * sysdeps/ia64/dl-lookupcfg.h: Define DL_NO_COPY_RELOCS.
++
++2003-03-26 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/make-syscalls.sh: When an undefined syscall has
++ SOURCE=-, append its symbol names to make variable unix-stub-syscalls.
++ * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls]
++ (sysdep_routines): Add stub-syscalls.
++ ($(objpfx)stub-syscalls.c): New target.
++ (generated): Add stub-syscalls.c.
++
++ * tls.make.c: Also define use-tls according to USE_TLS macro.
++
++2003-03-26 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h (struct siginfo): Avoid
++ no-op padding element.
++ * sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
++
++2003-03-26 GOTO Masanori <gotom@debian.or.jp>
++
++ * sysdeps/unix/sysv/linux/i386/getgroups.c: Fix the error
++ condition check for the return value of getgroups32.
++
++2003-03-26 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PSEUDO_NOERRNO):
++ Fix a typo.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PSEUDO_NOERRNO,
++ PSEUDO_END_NOERRNO): Define.
++ * sysdeps/unix/sysdep.h (PSEUDO_END_NOERRNO): Fix a typo.
++ Define to PSEUDO_END.
++
++2003-03-26 Ulrich Drepper <drepper@redhat.com>
++
++ * abilist/librt.abilist: Add new timer interfaces for 64-bit archs.
++
++2003-03-25 Jiro SEKIBA <jir@yamato.ibm.com>
++
++ * iconvdata/euc-tw.c (from_euc_tw): Fix return value of TO_LOOP.
++ * iconvdata/bug-iconv4.c: New file.
++ * iconvdata/Makefile (tests): Add bug-iconv4.
++
++2003-03-25 H.J. Lu <hjl@gnu.org>
++
++ * elf/dl-lookup.c (_dl_lookup_symbol): Avoid looking up protected
++ symbols twice.
++ (_dl_lookup_versioned_symbol): Likewise.
++
++2003-03-26 Jakub Jelinek <jakub@redhat.com>
++
++ * csu/tst-atomic.c (do_test): Add some new
++ atomic_compare_and_exchange_val_acq, atomic_add_zero,
++ atomic_compare_and_exchange_bool_acq and atomic_add_negative tests.
++ * include/atomic.h (atomic_add_negative, atomic_add_zero):
++ Prefix local variable so that it doesn't clash with the one
++ in atomic_exchange_and_add.
++ * sysdeps/ia64/bits/atomic.h (atomic_exchange): Fix for long/void *
++ pointers.
++ (atomic_exchange_and_add): Implement using __sync_fetch_and_add_?i.
++ * sysdeps/powerpc/bits/atomic.h (atomic_exchange_and_add): Force
++ value into register.
++ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_64_acq):
++ Cast newval to long.
++ * sysdeps/x86_64/bits/atomic.h
++ (__arch_compare_and_exchange_val_64_acq): Cast newval and oldval to
++ long.
++ (atomic_exchange): Cast newvalue to long if sizeof == 8.
++ (atomic_exchange_and_add): Cast value to long if sizeof == 8.
++ (atomic_add, atomic_add_negative, atomic_add_zero): Likewise.
++ (atomic_bit_set): Shift 1L up in all cases to shut up warnings.
++
++2003-03-21 Martin Schwidefsky <schwidefskyde.ibm.com>
++
++ * sysdeps/s390/s390-32/backtrace.c (__backtrace): Remove high order
++ bit from backtrace addresses.
++
++2003-03-21 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/unix/sysv/linux/i386/chown.c: Don't define any versioned
++ __chown symbols.
++
++2003-03-25 Roland McGrath <roland@redhat.com>
++
++ * config.make.in (enable-check-abi): New variable from configure.
++ * configure.in (enable_check_abi): New substituted variable,
++ controlled by --{enable,disable}-check-abi (default yes).
++ * configure: Regenerated.
++ * Makerules [$(enable-check-abi) = yes] (tests): Put this condition
++ on check-abi dependency.
++
++2003-03-26 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/m68k/m68020/bits/atomic.h: Fix typos.
++ * include/atomic.h: Likewise.
++
++ * sysdeps/unix/sysv/linux/m68k/sysdep.h: Define ret_NOERRNO.
++
++2003-03-25 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/powerpc/bits/atomic.h (__arch_atomic_exchange_32): New macro.
++ (__arch_atomic_exchange_64): New macro.
++ (atomic_exchange): Use them.
++ (__arch_atomic_exchange_and_add_32): New macro.
++ (__arch_atomic_exchange_and_add_64): New macro.
++ (atomic_exchange_and_add): Use them.
++ Original patch from Steven Munroe <sjmunroe@us.ibm.com>.
++
++2003-03-25 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/sgidefs.h (_MIPS_ISA_MIPS32, _MIPS_ISA_MIPS64):
++ Define.
++ * sysdeps/mips/sys/asm.h: Test _MIPS_ISA against them on all
++ ISA tests.
++ (ALSZ, ALMASK, SZREG, REG_S, REG_L): Define based on ABI, not ISA.
++ (PTR_ADD, etc): Test _MIPS_SZPTR instead of _MIPS_SZLONG.
++ * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR
++ to decide whether to add padding.
++ * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Use _MIPS_SZPTR
++ to decide whether to add padding.
++ * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h (struct
++ old_kernel_sigaction): Likewise.
++
++2003-03-25 Ulrich Drepper <drepper@redhat.com>
++
++ * csu/tst-atomic.c: Adjust tests to what atomic_add_negative and
++ atomic_add_zero were supposed to do.
++ * include/atomic.h: Adjust atomic_add_negative and atomic_add_zero
++ to x86 behavior.
++
++ * sysdeps/generic/bits/typesizes.h (__TIMER_T_TYPE): Define as void*.
++ This matches the new timer implementation.
++ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__TIMER_T_TYPE):
++ Likewise.
++ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__TIMER_T_TYPE):
++ Likewise.
++ * sysdeps/unix/sysv/linux/bits/siginfo.h (struct siginfo): Adjust
++ timer info for what the kernel provides these days.
++ (struct sigevent): Add _tid field.
++ Define SIGEV_THREAD_ID.
++ Remove struct __pthread_attr_s forward declaration.
++ * sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
++
++ * Versions.def (librt): Add GLIBC_2.3.3.
++
++ * abilist/libpthread.abilist: Update for nptl.
++
++2003-03-24 Jon Grimm <jgrimm@us.ibm.com>
++
++ * inet/netinet/in.h: Add IPPROTO_SCTP.
++
++2003-03-24 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sys/epoll.h (EPOLLET): Define.
++
++2003-03-24 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL):
++ Remove a1 from clobber list.
++
++2003-03-24 Ulrich Drepper <drepper@redhat.com>
++
++ * timezone/antarctica: Update from tzdata2003a.
++ * timezone/asia: Likewise.
++ * timezone/australasia: Likewise.
++ * timezone/europe: Likewise.
++ * timezone/iso3166.tab: Likewise.
++ * timezone/northamerica: Likewise.
++ * timezone/southamerica: Likewise.
++ * timezone/zone.tab: Likewise.
++
++2003-03-24 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/sysdep.h (PSEUDO_END_NOERRNO): Fix typo.
++
++2003-03-23 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/sysdep.h (ret_NOERRNO): Avoid
++ unwanted expansion by definining to ret. Patch by Ian Wienand.
++
++ * sysdeps/unix/make-syscalls.sh: Recognize 'E' in first position of
++ the parameter description to denote no error checking. Generate
++ appropriate pseudo asm code.
++ * sysdeps/unix/syscalls.list: Mark getgid, getpid, getuid with 'E'.
++ * sysdeps/unix/sysv/linux/syscalls.list: Mark getegid, geteuid,
++ getpgrp, and getppid with 'E'.
++ * sysdeps/powerpc/powerpc32/sysdep.h: Define PSEUDO_NOERRNO,
++ PSEUDO_END_NOERRNO, and ret_NOERRNO.
++ * sysdeps/powerpc/powerpc64/sysdep.h: Likewise.
++ * sysdeps/unix/sysdep.h: Likewise.
++ * sysdeps/unix/alpha/sysdep.h: Likewise.
++ * sysdeps/unix/sparc/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/cris/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/hppa/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
++
++2003-03-23 Roland McGrath <roland@redhat.com>
++
++ * Makeconfig (+includes): Don't use $(last-includes).
++
++2003-03-22 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/sysv/linux/configure.in: Update mips64 patterns.
++ * sysdeps/unix/sysv/linux/configure: Rebuilt.
++
++2003-03-23 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/alpha/fpu/libm-test-ulps: Update.
++ * sysdeps/arm/libm-test-ulps: Update.
++ * sysdeps/hppa/fpu/libm-test-ulps: Update.
++ * sysdeps/ia64/fpu/libm-test-ulps: Update.
++ * sysdeps/mips/fpu/libm-test-ulps: Update.
++ * sysdeps/powerpc/nofpu/libm-test-ulps: Update.
++ * sysdeps/powerpc/fpu/libm-test-ulps: Update.
++ * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update.
++ * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update.
++ * sysdeps/sh/sh4/fpu/libm-test-ulps: Update.
++ * sysdeps/s390/fpu/libm-test-ulps: Update.
++ * sysdeps/x86_64/fpu/libm-test-ulps: Update.
++
++2003-03-22 Roland McGrath <roland@redhat.com>
++
++ * include/atomic.h: Put parens around all macro arguments.
++ (__atomic_val_bysize, __atomic_bool_bysize): New macros.
++ (atomic_compare_and_exchange_val_acq): Use it.
++ (atomic_compare_and_exchange_bool_acq): Likewise.
++ (atomic_increment_and_test): Invert sense of test.
++ (atomic_decrement_and_test): Likewise.
++ * csu/tst-atomic.c: Update those tests to match.
++
++2003-03-22 Jakub Jelinek <jakub@redhat.com>
++
++ * include/atomic.h (atomic_compare_and_exchange_val_acq): Add comment.
++ Don't define if __arch_compare_and_exchange_val_32_acq is not defined.
++ (atomic_compare_and_exchange_bool_acq): Add comment. Don't use
++ __oldval variable in the macro, since it might be macro argument.
++ (atomic_decrement_if_positive): Initialize __memp, remove setting
++ of non-existent variable.
++ (atomic_bit_test_set): Cast 1 to __typeof (*mem) before shifting.
++ * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Implement
++ using atomic_compare_and_exchange_val_acq.
++ (atomic_decrement_if_positive, atomic_bit_test_set): Define.
++ * sysdeps/s390/bits/atomic.h (__arch_compare_and_exchange_val_8_acq):
++ Renamed from...
++ (__arch_compare_and_exchange_bool_8_acq): ... this.
++ (__arch_compare_and_exchange_val_16_acq): Renamed from...
++ (__arch_compare_and_exchange_bool_16_acq): ... this.
++ (__arch_compare_and_exchange_val_32_acq): Return old value. Renamed
++ from...
++ (__arch_compare_and_exchange_bool_32_acq): ... this.
++ (__arch_compare_and_exchange_val_64_acq): Return old value. Renamed
++ from...
++ (__arch_compare_and_exchange_bool_64_acq): ... this.
++ (__arch_compare_and_exchange_val_32_acq): Use __typeof for local
++ variables types instead of assuming int.
++ Change prefix of local variables to __arch.
++ * sysdeps/generic/bits/atomic.h (arch_compare_and_exchange_acq):
++ Remove.
++ (atomic_compare_and_exchange_val_acq,
++ atomic_compare_and_exchange_bool_acq): Define.
++
++ * csu/tst-atomic.c: New test.
++ * csu/tst-atomic-long.c: New test.
++ * csu/Makefile (tests): Add tst-atomic and tst-atomic-long.
++
++ * malloc/memusagestat.c (main): Kill warning if uint64_t is ulong.
++
++ * sysdeps/s390/Versions: Add trailing newline.
++
++ * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Kill warning
++ if INTERNAL_SYSCALL_ERROR_P doesn't use its first argument.
++
++2003-03-22 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/m68k/fpu/libm-test-ulps: Update.
++
++ * sysdeps/m68k/m68020/bits/atomic.h: New file.
++ * sysdeps/m68k/m68020/atomicity.h: Removed.
++
++2003-03-22 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/elf/ldsodefs.h: Add mips-specific elf64 relocation
++ data structures and macros. Protect from multiple inclusion.
++
++ * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Fix harmless
++ typo in #if test.
++
++2003-03-21 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/i386/fpu/libm-test-ulps: Update.
++
++ * math/libm-test.inc (tgamma_test): Recompute some constants with
++ 36 digits precision.
++ (lgamma_test): Likewise.
++ (ccos_test): Likewise.
++ (ccosh_test): Likewise.
++ (clog10_test): Likewise.
++ (csin_test): Likewise.
++ (csinh_test): Likewise.
++ (ctan_test): Likewise.
++ (ctanh_test): Likewise.
++
++2003-03-19 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Regenerated.
++
++2003-03-21 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/i386/i486/bits/atomic.h (atomic_bit_set): Use "ir"
++ constraint to permit non-constant BIT argument.
++ (atomic_bit_test_set): Likewise.
++ * sysdeps/x86_64/bits/atomic.h (atomic_bit_test_set): Likewise.
++ (atomic_bit_set): Likewise. Use 1UL in case that BIT might be >= 32.
++ For quadword case, use "i" constraint if __builtin_constant_p and < 32
++ or "r" constraint otherwise.
++
++ * configure.in: Move AC_PROG_CC and other program-finding before all
++ the version checks.
++ * configure: Regenerated.
++
++2003-03-21 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/mips64/memcpy.S: Fix porting bug that broke
++ unaligned copying of 8-15 bytes. From Chris Demetriou
++ <cgd@broadcom.com>. Fix label names.
++ * sysdeps/mips/mips64/memset.S: Fix label names. Make similar
++ change as to memcpy.S.
++ * sysdeps/mips/memcpy.S: Formatting changes.
++ * sysdeps/mips/memset.S: Likewise.
++
++2003-03-21 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/arm/sysdep.h (CALL_MCOUNT): Add trailing semicolon.
++
++2003-03-21 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/mips64/memcpy.S, sysdeps/mips/mips64/memset.S: New.
++ * sysdeps/mips/memcpy.S, sysdeps/mips/memset.S: Update comments.
++
++2003-03-21 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/i386/i486/bits/atomic.h
++ (__arch_compare_and_exchange_val_64_acq): Rewrite abort-calling
++ version of the macro to avoid compile-time warnings.
++ [! __PIC__] (__arch_compare_and_exchange_64_acq): Rename to above.
++ (atomic_exchange_and_add, atomic_add): Fix name and usage of it.
++ (atomic_increment, atomic_decrement): Likewise.
++
++2003-03-21 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/x86_64/bits/atomic.h: Don't use matching memory constraints.
++ * sysdeps/i386/i486/bits/atomic.h: Likewise.
++
++2003-03-21 Roland McGrath <roland@redhat.com>
++
++ * include/atomic.h (atomic_compare_and_exchange_bool_acq): Typo fix.
++
++2003-03-20 Ulrich Drepper <drepper@redhat.com>
++
++ * include/atomic.h: Define atomic_compare_and_exchange_val_acq,
++ atomic_compare_and_exchange_val_rel,
++ atomic_compare_and_exchange_bool_acq, and
++ atomic_compare_and_exchange_bool_rel instead of
++ atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel.
++ * sysdeps/i386/i486/bits/atomic.h: Define
++ __arch_compare_and_exchange_val_*_acq instead of
++ __arch_compare_and_exchange_*_acq.
++ * sysdeps/x86_64/bits/atomic.h: Likewise.
++ * sysdeps/ia64/bits/atomic.h: Define
++ __arch_compare_and_exchange_bool_*_acq instead of
++ __arch_compare_and_exchange_*_acq.
++ * sysdeps/powerpc/bits/atomic.h: Likewise.
++ * sysdeps/s390/bits/atomic.h: Likewise.
++ * gmon/mcount.c: Adjust for new form of compare&exchange macros.
++ * malloc/set-freeres.c: Likewise.
++ * nscd/cache.c: Likewise.
++ * stdlib/cxa_finalize.c: Likewise.
++ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
++
++2003-03-20 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs.
++ * sysdeps/mips/mips64/setjmp_aux.c (__sigsetjmp_aux): Adjust.
++ * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise.
++
++ * sysdeps/unix/sysv/linux/mips/pread.c: Don't break up offset
++ into high and low halves on n64.
++ * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise.
++ * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise.
++
++2003-03-20 Ulrich Drepper <drepper@redhat.com>
++
++ * include/atomic.h (atomic_decrement_if_positive): Adjust for the
++ correct atomic_compare_and_exchange_acq semantics.
++
++2003-03-20 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/ieee754.h: Remove excess #endif.
++
++2003-03-20 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/powerpc/bits/atomic.h (atomic_exchange): Remove unused
++ variable. Remove superfluous memory clobber.
++
++ * include/atomic.h: Syntax braino fix.
++
++ * posix/tst-nice.c (do_test): Use %m formats instead of printing errno
++ in decimal. Don't bail if niced at start. Just check that nice call
++ bumps the total at all.
++
++2003-03-20 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers,
++ including pc, gp, sp and fp, as long long.
++ * sysdeps/mips/mips64/setjmp.S: Pass gp to __sigsetjmp_aux.
++ * sysdeps/mips/mips64/setjmp_aux.c: Adjust type of arguments.
++ Add gp argument, and set gp in the jmpbuf to it.
++ * sysdeps/mips/setjmp_aux.c: Revert to o32-only.
++
++2003-03-20 Ulrich Drepper <drepper@redhat.com>
++
++ * include/atomic.h: Define atomic_exchange and
++ atomic_decrement_if_positive if not already defined. Add some
++ __builtin_expect.
++ * sysdeps/i386/i486/bits/atomic.h: Define atomic_exchange.
++ * sysdeps/x86_64/bits/atomic.h: Likewise.
++ * sysdeps/ia64/bits/atomic.h: Pretty printing. Define atomic_exchange.
++ * sysdeps/powerpc/bits/atomic.h: Pretty printing. Define
++ atomic_exchange, atomic_exchange_and_add, and
++ atomic_decrement_if_positive
++
++2003-03-20 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: Sign-extend
++ with a single instruction.
++
++ * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_MASK): Define
++ properly for n64.
++ (elf_machine_runtime_setup): Cast link_map pointer to Elf Addr
++ type.
++ (elf_machine_rel, elf_machine_rel_relative): Cast symidx to Elf
++ Word before comparing with gotsym. Take reloc_addr argument as
++ void*. Remove the code added for the compiler to drop any
++ alignment assumptions.
++
++2003-03-19 Ulrich Drepper <drepper@redhat.com>
++
++ * Makefile (distribute): Add include/atomic.h and bits/atomic.h.
++ * include/atomic.h: New file.
++ * sysdeps/i386/i486/bits/atomic.h: New file.
++ * sysdeps/x86_64/bits/atomic.h: New file.
++ * sysdeps/s390/bits/atomic.h: New file.
++ * sysdeps/sh/bits/atomic.h: New file.
++ * sysdeps/ia64/bits/atomic.h: New file.
++ * sysdeps/powerpc/bits/atomic.h: New file.
++ * sysdeps/generic/bits/atomic.h: New file.
++ * sysdeps/i386/i486/atomicity.h: Removed.
++ * sysdeps/x86_64/atomicity.h: Removed.
++ * sysdeps/s390/s390-32/atomicity.h: Removed.
++ * sysdeps/s390/s390-64/atomicity.h: Removed.
++ * sysdeps/ia64/atomicity.h: Removed.
++ * sysdeps/powerpc/powerpc32/atomicity.h: Removed.
++ * sysdeps/powerpc/powerpc64/atomicity.h: Removed.
++ * elf/dl-profile.c: Use atomic.h instead of atomicity.h. Adjust
++ use of macros from atomicity.h to new names and semantics.
++ * gmon_mcount.c: Likewise.
++ * malloc/set-freeres.c: Likewise.
++ * nscd/cache.c: Likewise.
++ * stdlib/cxa_finalize.c: Likewise.
++ * sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
++
++2003-03-19 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/ieee754.h: New file, suitable to replace both
++ ../ieee754/ieee754.h and ../ieee754/ldbl-128/ieee754.h, kept
++ mips-specific for now.
++
++2003-03-19 Ulrich Drepper <drepper@redhat.com>
++
++ * stdlib/strtod.c (INTERNAL): While eating trailing zeros handle
++ hexdigits correctly. Reported by Fred Tydeman <tydeman@tybor.com>.
++ * stdlib/tst-strtod.c: Add test for the bug.
++
++ * posix/tst-nice.c (do_test): Remove invalid of return value.
++ Don't run test if initial level != 0.
++
++2003-03-19 Amos Waterland <apw@us.ibm.com>
++
++ * posix/tst-nice.c: New file.
++ * posix/Makefile (tests): Add tst-nice.
++
++2003-03-18 Roland McGrath <roland@redhat.com>
++
++ * abilist: New directory of libfoo.abilist files maintained using
++ scripts/merge-abilist.awk and "make update-abi" rules.
++ * Makefile (distribute): Add abilist/*.abilist.
++ * Makerules [$(build-shared) = yes] [$(subdir)] (tests):
++ Depend on check-abi.
++
++ * configure.in: Move $critic_missing check after all AC_CHECK_PROG_VER.
++ * configure: Regenerated.
++
++ * sysdeps/unix/sysv/linux/syscalls.list (posix_fadvise64): Fix name.
++
++2003-03-18 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/posix/sysconf.c (__sysconf): Handle _SC_MONOTONIC_CLOCK
++ correctly.
++
++2003-03-18 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/memcpy.S: New file.
++
++2003-03-18 Ulrich Drepper <drepper@redhat.com>
++
++ * Versions.def: Add GLIBC_2.3.3 for libpthread.
++
++2003-03-17 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/libc-start.c [!SHARED &&
++ !LIBC_START_MAIN_AUXVEC_ARG]: Compute beginning of auxvec correctly.
++
++2003-03-17 Roland McGrath <roland@redhat.com>
++
++ * include/ctype.h: Revert last change.
++
++2003-03-17 Ulrich Drepper <drepper@redhat.com>
++
++ * argp/tst-argp1.c: Use test-skeleton.c.
++ * locale/tst-C-locale.c: Likewise.
++
++2003-03-17 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/mips64/Implies: Move wordsize-64 to...
++ * sysdeps/mips/mips64/n64/Implies: New file.
++ * sysdeps/mips/mips64/n64/Makefile: New file.
++ * sysdeps/mips/mips64/n64/el/bits/endian.h: New file.
++ * sysdeps/mips/mips64/n32/Implies: New file.
++ * sysdeps/mips/mips64/n32/Makefile: New file.
++ * sysdeps/mips/mips64/n32/el/bits/endian.h: New file.
++ * sysdeps/unix/mips/mips64/n32/sysdep.h: New file.
++ * sysdeps/unix/mips/mips64/n64/sysdep.h: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file.
++
++ * sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use
++ lib64 for mips64/n64 and lib32 for mips64/n32.
++ (ldd_rewrite_script): Needed for all mips64 configurations.
++ * sysdeps/unix/sysv/linux/configure: Rebuilt.
++ * sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed: New file.
++ * sysdeps/unix/sysv/linux/mips/mips64/Dist: New file.
++
++ * sysdeps/mips/machine-gmon.h (MCOUNT): Define for N32 and N64 as
++ well.
++
++ * sysdeps/unix/sysv/linux/mips/configure.in: New. Pre-process
++ asm/unistd.h into asm-unistd.h.
++ * sysdeps/unix/sysv/linux/mips/configure: Generated.
++ * sysdeps/unix/sysv/linux/mips/Makefile: Do custom processing
++ of syscall list.
++ * sysdeps/unix/sysv/linux/mips/sys/syscall.h: New file.
++ * sysdeps/unix/sysv/linux/mips/clone.S: Don't include
++ asm/unistd.h.
++
++ * sysdeps/unix/sysv/linux/mips/sys/ptrace.h: New file.
++ * sysdeps/unix/sysv/linux/mips/ptrace.c: New file. Use long
++ long type for registers on n32.
++
++ * sysdeps/mips/bits/wordsize.h: New file, appropriate for all
++ 3 ABIs.
++ * sysdeps/mips/mips64/gmp-mparam.h: New file. Define
++ BITS_PER_LONGINT to __WORDSIZE, to match all 3 ABIs.
++ * sysdeps/mips/setjmp_aux.c (STRINGXP, REGS, PTRS): New macros.
++ (__sigsetjmp_aux): Use them. Adjust for all 3 ABIs.
++ * sysdeps/mips/elf/start.S: Adjust for all 3 ABIs.
++ * sysdeps/unix/mips/brk.S: Likewise.
++ * sysdeps/unix/mips/sysdep.S: Likewise.
++ * sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
++ * sysdeps/mips/bits/setjmp.h (__jmp_buf): Likewise.
++ * sysdeps/mips/sys/ucontext.h: Likewise.
++ * sysdeps/unix/sysv/linux/mips/sys/profcs.h: Likewise.
++ * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Likewise.
++ * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Likewise.
++ * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise.
++ * sysdeps/mips/mips64/bsd-setjmp.S: Likewise.
++ * sysdeps/mips/mips64/setjmp.S: Likewise.
++ * sysdeps/mips/mips64/bits/setjmp.h: Deleted, obsolete.
++ * sysdeps/mips/mips64/soft-fp/sfp-machine.h: Use long long for
++ 64-bit types.
++
++2003-03-16 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Define tv here,
++ not at function level.
++ * sysdeps/unix/clock_gettime.c (HANDLE_REALTIME): Likewise.
++
++2003-03-15 Roland McGrath <roland@redhat.com>
++
++ * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r): int -> size_t
++ * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise.
++ * nis/nss_nis/nis-alias.c (_nss_nis_getaliasbyname_r): Likewise.
++ * nis/nis_table.c (__create_ib_request): Likewise.
++
++ * posix/fnmatch_loop.c: Add casts for signedness.
++ * nss/nss_files/files-hosts.c: Likewise.
++ * nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise.
++ * gmon/gmon.c (write_call_graph): Use u_long for FROM_LEN.
++ * nscd/nscd_getgr_r.c (nscd_getgr_r): Use nscd_ssize_t for CNT.
++
++ * configure.in (libc_cv_visibility_attribute): Use AC_TRY_COMMAND,
++ get errors into the log file.
++ (libc_cv_broken_visibility_attribute): Likewise.
++ (libc_cv_broken_alias_attribute): Likewise.
++ (libc_cv_asm_weak_directive): Likewise.
++ (libc_cv_need_minus_P): Likewise.
++ (libc_cv_dot_text): Likewise.
++ (libc_cv_asm_global_directive): Likewise.
++ (libc_cv_asm_type_prefix): Likewise.
++ * configure: Regenerated.
++
++ * nscd/cache.c (cache_search): Give first arg type `request_type'.
++ * nscd/nscd.h: Update decl.
++
++ * nscd/nscd_getpw_r.c (nscd_getpw_r): Add casts for signedness.
++ * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise.
++ * elf/dl-close.c (_dl_close): Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown): int -> size_t
++ * io/fts.c (fts_build): Likewise.
++ * elf/cache.c (add_to_cache): Likewise.
++ * locale/programs/locarchive.c (show_archive_content): Likewise.
++
++ * posix/fnmatch.c (fnmatch): Tweak __builtin_expect use.
++
++ * include/ctype.h (__ctype_b_loc): Tweak type punning to make gcc 3.3
++ happy.
++ (__ctype_toupper_loc, __ctype_tolower_loc): Likewise.
++
++2003-03-15 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/system.c: Use the generic Linux
++ code for most parts.
++
++2003-03-15 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/system.c: Moved to ...
++ * sysdeps/unix/sysv/linux/system.c: ... here.
++ (FORK): Don't #define if already #define'd.
++ * sysdeps/unix/sysv/linux/s390/system.c: File removed.
++ * sysdeps/unix/sysv/linux/kernel-features.h [__powerpc__]:
++ (__ASSUME_CLONE_THREAD_FLAGS): Define for kernel >= 2.5.64.
++
++ * dlfcn/tst-dlinfo.c: New file.
++ * dlfcn/Makefile (tests): Add tst-dlinfo.
++ ($(objpfx)tst-dlinfo): New target.
++
++ * dlfcn/dlinfo.c: New file.
++ * dlfcn/Makefile (libdl-routines): Add it.
++ * dlfcn/Versions (libdl: GLIBC_2.3.3): Add dlinfo.
++ * dlfcn/dlfcn.h [__USE_GNU]: Declare dlinfo.
++ [__USE_GNU] (RTLD_DI_*): New enum constants.
++ [__USE_GNU] (Dl_serpath, Dl_serinfo): New types.
++ * elf/dl-load.c (cache_rpath): New inline function.
++ (_dl_map_object): Use it.
++ (_dl_rtld_di_serinfo): New function.
++ * sysdeps/generic/ldsodefs.h: Declare it.
++ * elf/Versions (ld: GLIBC_PRIVATE): Add it.
++
++ * sysdeps/powerpc/elf/libc-start.c (AUX_VECTOR_INIT): Define it.
++ (LIBC_START_MAIN, LIBC_START_MAIN_AUXVEC_ARG, MAIN_AUXVEC_ARG)
++ (INIT_MAIN_ARGS): Define, and #include <sysdeps/generic/libc-start.c>.
++ (__libc_start_main): Just call the generic one for most of the work.
++
++ * sysdeps/generic/libc-start.c [LIBC_START_MAIN]: If defined, define a
++ static function by that name instead of BP_SYM (__libc_start_main).
++ [LIBC_START_MAIN_AUXVEC_ARG]: Take AUXVEC as argument.
++ [MAIN_AUXVEC_ARG]: Pass 4th argument to MAIN.
++ [INIT_MAIN_ARGS]: Give INIT the same args as MAIN.
++
++ * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start) [DL_PLATFORM_AUXV]:
++ Use this macro for extra AT_* cases.
++ * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_PLATFORM_AUXV):
++ New macro, guts from ...
++ (__aux_init_cache): ... here, function removed.
++ (DL_PLATFORM_INIT): Don't define this.
++
++ * sysdeps/powerpc/powerpc32/memset.S: Put __cache_line_size in bss.
++ * sysdeps/powerpc/powerpc64/memset.S: Likewise.
++
++ * Versions.def (libthread_db): Add GLIBC_2.3.3 set.
++
++2003-03-14 Roland McGrath <roland@redhat.com>
++
++ * dlfcn/dlerror.c (dlerror): If objname is "", don't put ": " after it.
++
++2003-03-14 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/Makefile (syscall-%.h): Fix a typo.
++
++ * sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Include
++ sysdeps/posix/pause.c instead of sysdeps/unix/common/pause.c.
++
++2003-03-14 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/fpu/bits/mathdef.h: New.
++ (__NO_LONG_DOUBLE_MATH): Define for o32.
++
++ * sysdeps/mips/sys/asm.h: Formatting changes.
++ (PTR, PTRSIZE, PTRLOG): Adjust for all 3 ABIs.
++ (CPADD): Define for all of them.
++ (SETUP_GP, SETUP_GPX, SETUP_GPX_L, SAVE_GP, SETUP_GP64,
++ SETUP_GPX64, SETUP_GPX64_L, RESTORE_GP64, USE_ALT_CP,
++ NARGSAVE): Define per ABI spec.
++ (END): Don't redefine.
++ (LONG_SLL, LONG_SLLV, LONG_SRL, LONG_SRLV, LONG_SRA,
++ LONG_SRAV): Remove duplicate definitions.
++ (PTR_ADD, PTR_ADDI, PTR_ADDU, PTR_ADDIU, PTR_SUB, PTR_SUBI,
++ PTR_SUBU, PTR_SUBIU, PTR_L, PTR_S, PTR_SLL, PTR_SLLV, PTR_SRL,
++ PTR_SRLV, PTR_SRA, PTR_SRAV, PTR_SCALESHIFT): Define for n32.
++ (PTR_LA): Define for all 3 ABIs.
++
++ * sysdeps/mips/dl-machine.h: Include sys/asm.h.
++ (elf_machine_matches_host): Prevent linking of o32 and n32
++ together.
++ (elf_machine_dynamic): Document assumption on $gp.
++ (STRINGXP, STRINGXV, STRINGV_): New macros.
++ (elf_machine_load_address): Use them to stringize PTR_LA and
++ PTR_SUBU.
++ (ELF_DL_FRAME_SIZE, ELF_DL_SAVE_ARG_REGS,
++ ELF_DL_RESTORE_ARG_REGS, IFABIO32): New macros used in...
++ (_dl_runtime_resolve): Adjust it for all 3 ABIs.
++ (__dl_runtime_resolve): Cast the symtab initializer to the
++ right type.
++ (RTLD_START): Use it. Adjust it for all 3 ABIs.
++ (elf_machine_rel): Mark as always_inline in RTLD_BOOTSTRAP.
++ Handle 64-bit R_MIPS_REL composite relocation and accept
++ R_MIPS_64 relocations to shift addend size to 64 bits.
++ Document assumption regarding local GOT entries. Document
++ backward-compatibility departing from the ABI behavior in
++ applying relocations that reference section symbols, no longer
++ used. Support relocations to mis-aligned offsets.
++ * sysdeps/mips/mips64/dl-machine.h: Deleted, obsolete.
++
++ * sysdeps/unix/sysv/linux/mips/readelflib.c: New file.
++
++ * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h
++ (_KERNEL_NSIG_BPW): Define in terms of _MIPS_SZLONG.
++ * sysdeps/unix/sysv/linux/mips/sigaction.c: Define restore and
++ restore_rt functions. Use them.
++
++ * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't
++ .set mips2 on new abis.
++
++2003-03-13 Ulrich Drepper <drepper@redhat.com>
++
++ * posix/getconf.c: Recognize POSIX2_SYMLINKS.
++ * sysdeps/generic/bits/confname.h: Define _PC_2_SYMLINKS.
++ * sysdeps/posix/fpathconf.c: Handle _PC_2_SYMLINKS.
++ * sysdeps/posix/pathconf.c: Likewise.
++ * sysdeps/unix/sysv/linux/fpathconf.c: Likewise.
++ * sysdeps/unix/sysv/linux/pathconf.c: Likewise.
++ * sysdeps/unix/sysv/linux/pathconf.h: Define statfs_symlinks.
++
++ * sysdeps/unix/sysv/linux/linux_fsinfo.h: Define some more magic
++ words.
++
++2003-03-14 Alexandre Oliva <aoliva@redhat.com>
++
++ * include/gmp.h: Include/gmp-mparam.h.
++ * stdlib/strtod.c: Include gmp-mparam.h before gmp.h and
++ gmp-impl.h.
++
++ * elf/dl-conflict.c: Don't compile _dl_resolve_conflicts if
++ ELF_MACHINE_NO_RELA is set.
++ * elf/rtld.c (dl_main): No prelink support for REL-only.
++
++ * sysdeps/generic/ldconfig.h (FLAG_MIPS64_LIBN32,
++ FLAG_MIPS64_LIBN64): Define.
++ * elf/cache.c (print_entry): Handle mips64 n32 and n64.
++
++ * sysdeps/mips/memcpy.S: Map t0-3 to a4-7 on new abis.
++ * sysdeps/mips/memset.S: Likewise.
++ * sysdeps/mips/sys/regdef.h: Alias a4-7 or t0-3 to $8-11
++ depending on the ABI.
++
++ * sysdeps/mips/atomicity.h (exchange_and_add, atomic_add):
++ Don't .set mips2 on new abi.
++ (compare_and_swap): Likewise. Support 64-bit longs on n64.
++
++ * stdlib/fpioconst.h: Include gmp.h with angle brackets.
++
++2003-03-13 Roland McGrath <roland@redhat.com>
++
++ * elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs
++ found. Reported by Alexandre Oliva <aoliva@redhat.com>.
++
++2003-03-13 Alexandre Oliva <aoliva@redhat.com>
++
++ * stdio-common/_itoa.c (_itoa_base_table): Make 64-bit
++ literals long long.
++ * stdlib/fpioconst.c: Likewise.
++ * stdlib/strtod.c: Likewise.
++
++ * sysdeps/mips/add_n.S: Use L macro for local labels.
++ * sysdeps/mips/addmul_1.S: Likewise.
++ * sysdeps/mips/lshift.S: Likewise.
++ * sysdeps/mips/memcpy.S: Likewise.
++ * sysdeps/mips/memset.S: Likewise.
++ * sysdeps/mips/mul_1.S: Likewise.
++ * sysdeps/mips/rshift.S: Likewise.
++ * sysdeps/mips/sub_n.S: Likewise.
++ * sysdeps/mips/submul_1.S: Likewise.
++ * sysdeps/mips/mips64/add_n.S: Likewise.
++ * sysdeps/mips/mips64/addmul_1.S: Likewise.
++ * sysdeps/mips/mips64/lshift.S: Likewise.
++ * sysdeps/mips/mips64/mul_1.S: Likewise.
++ * sysdeps/mips/mips64/rshift.S: Likewise.
++ * sysdeps/mips/mips64/sub_n.S: Likewise.
++ * sysdeps/mips/mips64/submul_1.S: Likewise.
++ * sysdeps/unix/mips/sysdep.h: Define L() according to ABI
++ conventions. Define END as in sys/asm.h.
++ * sysdeps/unix/mips/sysdep.S: Likewise.
++ * sysdeps/unix/mips/wait.S: Likewise.
++ * sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
++
++ * sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double):
++ Cast shifted values that may be too narrow to mp_limb_t.
++ * sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double):
++ Likewise.
++ * sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float):
++ Likewise.
++ * sysdeps/ieee754/ldbl-128/ldbl2mpn.c
++ (__mpn_extract_long_double): Likewise.
++ * sysdeps/ieee754/ldbl-128/mpn2ldbl.c
++ (__mpn_construct_long_double): Likewise.
++ * sysdeps/ieee754/ldbl-96/ldbl2mpn.c
++ (__mpn_extract_long_double): Likewise.
++ * sysdeps/ieee754/ldbl-96/mpn2ldbl.c
++ (__mpn_construct_long_double): Likewise.
++
++2003-03-13 Roland McGrath <roland@redhat.com>
++
++ * elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line
++ entries in the map file match too.
++
++2003-03-13 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local
++ label .Lthread_start since current binutils don't allow branches
++ to globally visible symbols.
++
++2003-03-13 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/sysdep.h (BREAK_INSN_1, BREAK_INSN,
++ ASM_OUTARGS_0, ASM_OUTARGS_1, ASM_OUTARGS_2, ASM_OUTARGS_3,
++ ASM_OUTARGS_4, ASM_OUTARGS_5, ASM_OUTARGS_6): Define.
++ (INTERNAL_SYSCALL, INLINE_SYSCALL): Use it. Make syscall arguments
++ clobbered by the syscall.
++ (ASM_ARGS_1, ASM_ARGS_2, ASM_ARGS_3, ASM_ARGS_4, ASM_ARGS_5,
++ ASM_ARGS_6): Change constraints from r to index of corresponding
++ output register.
++ * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Swap
++ ptid and ctid to match kernel.
++ * sysdeps/unix/sysv/linux/ia64/system.c (FORK): Likewise.
++
++2003-03-12 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/elf/configure.in: Remove
++ AC_DEFINE(PI_STATIC_AND_HIDDEN). Not supported for PowerPC64.
++ * sysdeps/powerpc/powerpc64/elf/configure: Regenerated.
++
++2003-03-11 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela):
++ Check SYM_MAP rather than SYM as definedness check.
++ Handle R_PPC64_ADDR32, R_PPC64_ADDR30, and R_PPC64_REL64 relocs.
++ Don't handle R_PPC64_REL24 reloc.
++ Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h
++ [USE_TLS] (elf_machine_type_class): Match all the TLS relocs in a
++ block, so we cover all the TPREL16* flavors without 6 ||s.
++ [USE_TLS] (elf_machine_tprel): New function.
++ (elf_machine_rela) [USE_TLS]: Use elf_machine_tprel for TPREL64 reloc,
++ and handle TPREL16 relocs too. Return rather than break for DTPREL64.
++ Mostly from Steven Munroe <sjmunroe@us.ibm.com>.
++
++2003-03-11 Ralf Baechle <ralf@linux-mips.org>
++
++ * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start): Use jal
++ instead of jalr to invoke subroutine so restoring the $gp register
++ will work properly.
++
++2003-03-11 Martin Schwidefsky <schwidefsky@de.ibm.com>
++
++ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (__NR_pread64): Define
++ to __NR_pread if not defined.
++ (__NR_pwrite64): Define to __NR_pwrite if not defined.
++
++2003-03-11 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/system.c: New file.
++ * sysdeps/unix/sysv/linux/kernel-features.h
++ (__ASSUME_CLONE_THREAD_FLAGS): Define for IA-64 and s390* with
++ kernel >= 2.5.64.
++
++2003-03-11 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): If CNT == 1,
++ allocate space even for the trailing '/'.
++ Reported by John Reiser <jreiser@BitWagon.com>.
++
++ * sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_6, ASM_ARGS_6,
++ ASM_CLOBBERS_6): Define.
++ (ASM_CLOBBERS_5): Use ASM_CLOBBERS_6.
++ * sysdeps/unix/sysv/linux/ia64/clone2.S (__clone2): Reorder arguments
++ to match IA-32 order.
++ * sysdeps/unix/sysv/linux/i386/clone.S: Fix comment.
++
++2003-03-10 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7.
++ Copy extra params for NPTL to registers used in clone syscall.
++
++2003-03-10 Martin Schwidefsky <schwidefsky@de.ibm.com>
++
++ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Correct system
++ call names for pread and pwrite.
++
++2003-03-10 Roland McGrath <roland@redhat.com>
++
++ * dlfcn/Makefile (libdl-routines): Add dladdr1.
++ * dlfcn/dladdr1.c: New file.
++ * dlfcn/dlfcn.h [__USE_GNU]: Declare dladdr1.
++ [__USE_GNU] (RTLD_DL_SYMENT, RTLD_DL_LINKMAP): New enum constants.
++ * elf/dl-addr.c (_dl_addr): Take new args, a struct link_map ** and
++ a const ElfNN_Sym ** to fill in.
++ * include/dlfcn.h: Update decl. Include <link.h>.
++ * dlfcn/dladdr.c (dladdr): Update caller.
++ * malloc/mtrace.c (tr_where): Likewise.
++ * sysdeps/generic/elf/backtracesyms.c: Likewise.
++ * sysdeps/generic/elf/backtracesymsfd.c: Likewise.
++ * dlfcn/Versions (libdl: GLIBC_2.3.3): New set, add dladdr1.
++ * Versions.def (libdl): Define GLIBC_2.3.3 set.
++
++ * sysdeps/unix/make-syscalls.sh: Generate $(compile-syscall) for
++ assembler command.
++ * sysdeps/unix/Makefile (compile-syscall): New variable.
++ Pass -g0 to compiler for assembling syscall stubs from stdin.
++
++ * sysdeps/i386/sysdep.h [HAVE_CPP_ASM_DEBUGINFO]
++ (STABS_CURRENT_FILE, STABS_CURRENT_FILE1, STABS_FUN, STABS_FUN_END):
++ Define these to do nothing.
++
++ * configure.in: New check for -g on .S files.
++ * configure: Regenerated.
++ * config.make.in (have-cpp-asm-debuginfo): New variable.
++ * config.h.in (HAVE_CPP_ASM_DEBUGINFO): New #undef.
++ * Makeconfig (ASFLAGS): New variable, if undefined and
++ $(have-cpp-asm-debuginfo), take options matching -g% from $(CFLAGS).
++ * Makerules (compile.S, COMPILE.S): Use $(ASFLAGS).
++
++2003-03-09 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Take 3 new args
++ used by NPTL on new kernels. From Paul Mackerras <paulus@samba.org>.
++
++2003-03-09 Ulrich Drepper <drepper@redhat.com>
++
++ * po/fi.po: Update from translation team.
++ * po/ca.po: Likewise.
++ * po/da.po: Likewise.
++
++2003-03-08 Ulrich Drepper <drepper@redhat.com>
++
++ * rt/tst-aio7.c (do_test): Change BYTES into a #define.
++
++2003-03-07 Ulrich Drepper <drepper@redhat.com>
++
++ * rt/tst-aio7.c (do_test): Give BUFF permanent extent, too.
++
++ * sysdeps/powerpc/fpu/w_sqrt.c: Fix comment.
++
++2003-03-07 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/s390/s390-32/sysdep.h (L): Use .Lfoo instead of foo.
++ * sysdeps/s390/s390-64/sysdep.h (L): Likewise.
++
++2003-03-04 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/unix/sysv/linux/mips/syscalls.list: Remove unneeded
++ stubs, we have INLINE_SYSCALL.
++ * sysdeps/unix/sysv/linux/mips/bits/mman.h: Define MAP_POPULATE,
++ MAP_NONBLOCK.
++
++2003-03-06 Roland McGrath <roland@redhat.com>
++
++ * rt/tst-aio7.c (do_test): Revert last change. Instead, give CB1
++ permanent extent and add a comment about testing its implicit teardown.
++
++2003-03-06 Martin Schwidefsky <schwidefsky@de.ibm.com>
++
++ * rt/tst-aio7.c (do_test): Cancel i/o on CB1 before it's out of scope.
++
++2003-03-05 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/dl-tls.c (_dl_allocate_tls_storage): Fix
++ reversed __builtin_expect expectation.
++
++2003-03-05 Roland McGrath <roland@redhat.com>
++
++ * stdio-common/sscanf.c: Use prototype defn with ... syntax.
++ * libio/swscanf.c: Likewise.
++ * libio/swprintf.c: Likewise.
++
++2003-03-04 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h: Include <dl-tls.h>.
++ (elf_machine_rela): Always use RESOLVE_MAP, needed for
++ R_PPC64_JMP_SLOT as well as TLS cases.
++ (BIT_INSERT): Move parenthesis where it ought to have been.
++ Reported by Steven Munroe <sjmunroe@us.ibm.com>.
++
++ * posix/confstr.c (confstr): Correct STRING_LEN values for
++ _CS_GNU_LIBC_VERSION and _CS_GNU_LIBPTHREAD_VERSION, add missing
++ break. Reported by Alexandre Julliard <julliard@winehq.com>.
++
++2003-03-04 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/ia64/fpu/libm-test-ulps: Regenerated.
++
++2003-03-04 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/x86_64/clone.S: Add support for the new
++ clone parameters.
++
++ * po/sv.po: Update from translation team.
++
++2003-03-04 Andreas Jaeger <aj@suse.de>
++ Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Fix comments.
++
++2003-03-03 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/generic/dl-sysdep.h: Add double include protection.
++
++ * po/tr.po: Update from translation team.
++
++ * elf/dl-load.c (_dl_map_object_from_fd): Determine whether there
++ are holes between the segments. Only call mprotect to set
++ proection to PROT_NONE if there are some.
++
++ * elf/dl-load.c (struct filebuf): Actually use FILEBUF_SIZE.
++ Update comment.
++
++ * include/sched.h (__clone2): Use ... instead of adding all the
++ new parameters.
++
++2003-03-03 Roland McGrath <roland@redhat.com>
++
++ * elf/dl-load.c (struct filebuf): Fix typo in last change.
++
++ * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define
++ PI_STATIC_AND_HIDDEN.
++
++2003-03-03 Ian Wienand <ianw@gelato.unsw.edu.au>
++
++ * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone
++ flags.
++ * include/sched.h: Update clone2 prototype.
++
++2003-03-03 Andreas Jaeger <aj@suse.de>
++
++ * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition.
++ (llrint): Use it to correct return type.
++ (lrint): Likewise.
++ (lround): Likewise.
++ (llround): Likewise.
++
++2003-03-03 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/dl-load.c (struct filebuf): For 64-bit platforms use 640
++ byte filebuf size.
++
++ * libio/fileops.c (_IO_new_file_fopen): Close stillborn descriptor
++ if ccs parameter isn't valid. Reported by Andreas Schwab.
++
++2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
++
++ * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Add support
++ for system call numbers > 255.
++ * sysdeps/unix/sysv/linux/s390/s390-32/syscall.h (DO_CALL,
++ INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0,
++ INTERNAL_SYSCALL): Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/syscall.h (DO_CALL,
++ INLINE_SYSCALL, INTERNAL_SYSCALL_DIRECT, INTERNAL_SYSCALL_SVC0,
++ INTERNAL_SYSCALL): Likewise.
++
++2003-03-03 Martin Schwidefsky <schwidefsky@de.ibm.com>
++
++ * sysdeps/generic/dl-tls.c (_dl_deallocate_tls): Don't free the dtv
++ array if it is the initial dtv.
++
++2003-03-03 Ulrich Drepper <drepper@redhat.com>
++
++ * po/es.po: Update from translation team.
++ * po/fr.po: Likewise.
++ * po/gl.po: Likewise.
++ * po/sk.po: Likewise.
++ * po/sv.po: Likewise.
++
++ * sysdeps/unix/sysv/linux/syscalls.list: Add remap_file_pages entry.
++ * misc/sys/mman.h: Add prototype for remap_file_pages.
++ * sysdeps/generic/remap_file_pages.c: New file.
++ * misc/Makefile (routines): Add remap_file_pages.
++ * misc/Versions [libc:GLIBC_2.3.3]: Add remap_file_pages.
++
++ * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_POPULATE
++ and MAP_NONBLOCK.
++ * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise
++ * sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise.
++ * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise.
++ * sysdeps/unix/sysv/linux/ia64/bits/mman.h: Likewise.
++ * sysdeps/unix/sysv/linux/hppa/bits/mman.h: Likewise.
++ * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise.
++ * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
++
++2003-03-03 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Revert last change.
++ * sysdeps/ia64/dl-machine.h: Likewise.
++ * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Remove const from
++ argument type.
++ * sysdeps/ia64/dl-lookupcfg.h: Update decl.
++
++ * sysdeps/wordsize-64/strtol_l.c (strtoll_l): Define as weak alias.
++ * sysdeps/wordsize-64/strtoul_l.c (strtoull_l): Define as weak alias.
++ * locale/Versions (libc: GLIBC_2.3): Move those to ...
++ * sysdeps/wordsize-32/Versions (libc: GLIBC_2.3): ... here, new file.
++ * sysdeps/wordsize-64/Versions (libc: GLIBC_2.3.3) Likewise.
++ * Versions.def (libc): Add GLIBC_2.3.3 set.
++
++ * sysdeps/ia64/dl-fptr.c (__ia64_make_fptr): Add const to MAP arg.
++ * sysdeps/ia64/dl-machine.h: Update decl.
++
++2003-03-03 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/clock_settime.c (HANDLE_REALTIME): Add missing brace.
++
++2003-03-02 Roland McGrath <roland@redhat.com>
++
++ * scripts/abilist.awk: Reject data items with apparent 0 size.
++
++ * scripts/merge-abilist.awk: Restore hack to elide pattern foo.*/bar
++ after foo.* as if it were a duplicate.
++
++ * sysdeps/unix/sysv/linux/ia64/brk.S: Add .type and .size for __curbrk.
++
++2003-03-02 Ulrich Drepper <drepper@redhat.com>
++
++ * elf/dl-load.c (struct filebuf): Reduce buf array to 512 bytes.
++
++ * sysdeps/generic/bits/time.h: Define CLOCK_MONOTONIC.
++ * sysdeps/posix/clock_getres.c: Define code for CLOCK_REALTIME only
++ if not already defined. Use SYSDEP_GETRES to allow other files to
++ provide alternative implementations.
++ * sysdeps/unix/sysv/linux/clock_getres.c: New file
++ * sysdeps/unix/clock_gettime.c: Define code for CLOCK_REALTIME only
++ if not already defined. Use SYSDEP_GETTIME to allow other files to
++ provide alternative implementations.
++ * sysdeps/unix/sysv/linux/clock_gettime.c: New file.
++ * sysdeps/unix/clock_settime.c: Define code for CLOCK_REALTIME only
++ if not already defined. Use SYSDEP_GETTIME to allow other files to
++ provide alternative implementations.
++ * sysdeps/unix/sysv/linux/clock_settime.c: New file.
++ * sysdeps/unix/clock_nanosleep.c: Use SYSDEP_NANOSLEEP to allow
++ other files to provide alternative implementations. Rearrange
++ tests for invalid parameters.
++ * sysdeps/unix/sysv/linux/clock_nanosleep.c: New file.
++ * sysdeps/unix/sysv/linux/sysconf.c: New file.
++ * sysdeps/unix/sysv/linux/kernel-features.h: Define
++ __ASSUME_POSIX_TIMERS for Linux 2.5.63 and up.
++ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
++ _POSIX_MONOTONIC_CLOCK.
++
++2003-03-02 Roland McGrath <roland@redhat.com>
++
++ * scripts/merge-abilist.awk: More checks for bogus input.
++ Uniquify duplicate config names.
++
++ * scripts/abilist.awk: Don't distinguish weak symbols in normal output.
++
++ * sysdeps/powerpc/powerpc32/dl-machine.c (_dl_reloc_overflow): Renamed
++ from dl_reloc_overflow, make global.
++ (__process_machine_rela): Update callers.
++ * sysdeps/powerpc/powerpc32/dl-machine.h: Declare _dl_reloc_overflow.
++ Add attribute_hidden to __process_machine_rela decl.
++ (elf_machine_type_class, elf_machine_rela): Handle 16-bit TLS relocs.
++
++ * sysdeps/generic/libc-start.c (__libc_start_main): Don't assign const
++ variable.
++
++ * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_fixup_plt):
++ Don't use weak_extern for dl_rtld_map. Instead check only if [SHARED].
++ (elf_machine_rela): Clean up.
++
++ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Clean up.
++
++ PowerPC TLS support contributed by Paul Mackerras <paulus@samba.org>.
++ * sysdeps/powerpc/powerpc32/elf/configure.in: New file.
++ * sysdeps/powerpc/powerpc32/elf/configure: New generated file.
++ * elf/tls-macros.h [__powerpc__ && !__powerpc64__]
++ (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define them.
++ * sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Support
++ new relocs for TLS.
++
++ * sysdeps/powerpc/dl-tls.h (TLS_TP_OFFSET, TLS_DTV_OFFSET): Move these
++ macros out of [SHARED].
++ (TLS_TPREL_VALUE, TLS_DTPREL_VALUE): New macros.
++
++ * elf/elf.h: Define R_PPC_* relocs for TLS support.
++ Clean up R_PPC64_* macro definition comments.
++
++ * configure.in: In "running configure fragment for" message,
++ omit $srcdir from the name if we prepended it.
++ * configure: Regenerated.
++
++ * elf/dl-reloc.c (allocate_static_tls): Fix calculations.
++ From Jakub Jelinek <jakub@redhat.com>.
++
++ * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Revert last change,
++ which duplicated the O_DIRECT defn.
++
++2003-03-01 GOTO Masanori <gotom@debian.or.jp>
++
++ * stdlib/stdlib.h: Add missing __USE_BSD enclosure for BSD derived
++ random functions.
++
++2003-03-01 Andreas Schwab <schwab@suse.de>
++
++ * resolv/Makefile (tests): Don't depend on
++ $(objpfx)mtrace-tst-leaks when cross compiling.
++
++ * sysdeps/m68k/dl-machine.h (_dl_start_user): Access
++ __libc_stack_end through GOT since it is a global symbol.
++
+ 2003-03-01 GOTO Masanori <gotom@debian.or.jp>
+
+ * argp/argp.h: Fix a typo.
+@@ -5561,6 +11477,16 @@
+ (common-mostlyclean, common-clean): Clean up rtld-* files.
+ * sysdeps/unix/make-syscalls.sh: Add rtld-*.os target name to rules.
+
++2003-05-20 Jakub Jelinek <jakub@redhat.com>
++
++ * elf/dynamic-link.h (elf_get_dynamic_info): Add temp argument.
++ If temp != NULL, copy dynamic entries which need relocation to temp
++ array before relocating.
++ (DL_RO_DYN_TEMP_CNT): Define.
++ * elf/dl-load.c (_dl_map_object_from_fd): Adjust caller.
++ * elf/rtld.c (_dl_start): Likewise.
++ (dl_main): Likewise. Add dyn_temp static variable.
++
+ 2002-10-11 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/generic/dl-tls.c (__tls_get_addr): After freeing block in
+--- glibc-2.3.2/Makeconfig 2003-01-06 00:31:36.000000000 -0500
++++ glibc-2.3.2/Makeconfig 2003-09-19 22:37:01.000000000 -0400
+@@ -83,6 +83,12 @@
+ # Get the values defined by options to `configure'.
+ include $(common-objpfx)config.make
+
++# What flags to give to sources which call user provided callbacks
++uses-callbacks = $(exceptions)
++
++# What flags to give to tests which test stack alignment
++stack-align-test-flags =
++
+ # We have a special subdir for each binary format.
+ # For now, only ELF is fully supported.
+ ifeq ($(elf),yes)
+@@ -505,7 +511,7 @@
+ link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F:%-bp=%)),$(common-objpfx)$(lib)_b.a)
+
+ ifndef gnulib
+-gnulib := -lgcc
++gnulib := -lgcc -lgcc_eh
+ endif
+ ifeq ($(elf),yes)
+ +preinit = $(addprefix $(csu-objpfx),crti.o)
+@@ -621,7 +627,7 @@
+ +includes = -I$(..)include -I. \
+ $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \
+ $(libio-include) $(includes) \
+- $(+sysdep-includes) $(last-includes) $(sysincludes)
++ $(+sysdep-includes) $(sysincludes)
+
+ # Since libio has several internal header files, we use a -I instead
+ # of many little headers in the include directory.
+@@ -669,6 +675,8 @@
+ libtype.os := lib%_pic.a
+ # This can be changed by a sysdep makefile
+ pic-ccflag = -fPIC
++# This one should always stay like this unless there is a very good reason.
++PIC-ccflag = -fPIC
+ endif
+ ifeq (yes,$(build-profile))
+ # Under --enable-profile, we will build a static library of profiled objects.
+@@ -711,11 +719,20 @@
+ # Must build the routines as PIC, though, because they can end up in (users')
+ # shared objects. We don't want to use CFLAGS-os because users may, for
+ # example, make that processor-specific.
+-CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
++CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
+ CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
+ libtype.oS = lib%_nonshared.a
+ endif
+
++# The assembler can generate debug information too.
++ifndef ASFLAGS
++ifeq ($(have-cpp-asm-debuginfo),yes)
++ASFLAGS := $(filter -g%,$(CFLAGS))
++else
++ASFLAGS :=
++endif
++endif
++ASFLAGS += $(ASFLAGS-config)
+
+ +gnu-stabs = $(shell echo>&2 '*** BARF ON ME')
+
+@@ -921,11 +938,11 @@
+ all-Depend-files = $(wildcard $(..)*/Depend)
+ $(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \
+ $(common-objpfx)sysd-dirs $(..)Makeconfig
+- { { dirs='$(patsubst $(..)%/Depend,$(..)%,$(filter %/Depend,$^))';\
++ { { dirs='$(patsubst $(..)%/Depend,%,$(filter %/Depend,$^))'; \
+ for d in $$dirs; do \
+ while read on; do \
+ echo "depend $$d $$on"; \
+- done < $$d/Depend; \
++ done < $(..)$$d/Depend; \
+ done; \
+ for f in $(all-subdirs); do \
+ echo $$f; \
+--- glibc-2.3.2/Makefile 2003-02-21 01:22:51.000000000 -0500
++++ glibc-2.3.2/Makefile 2003-09-19 22:37:01.000000000 -0400
+@@ -228,6 +228,18 @@
+ tests-clean:
+ @$(MAKE) subdir_testclean no_deps=t
+
++tests: $(objpfx)c++-types-check.out
++ifneq ($(CXX),no)
++ifneq (,$(wildcard scripts/data/c++-types-$(base-machine)-$(config-os).data))
++$(objpfx)c++-types-check.out: scripts/data/c++-types-$(base-machine)-$(config-os).data
++ scripts/check-c++-types.sh $^ $(CXX) $(filter-out -std=gnu99,$(CFLAGS)) $(CPPFLAGS) > $@
++else
++$(objpfx)c++-types-check.out:
++ @echo 'WARNING C++ tests not run; create a c++-types-XXX file'
++ @echo "not run" > $@
++endif
++endif
++
+ # The realclean target is just like distclean for the parent, but we want
+ # the subdirs to know the difference in case they care.
+ realclean distclean: parent-clean
+@@ -274,6 +286,7 @@
+ include/shlib-compat.h include/pthread.h Versions.def \
+ cppflags-iterator.mk tls.make.c \
+ include/stubs-prologue.h include/gnu/stubs.h \
++ include/atomic.h bits/atomic.h \
+ INTERFACE CONFORMANCE NAMESPACE LICENSES \
+ $(addprefix scripts/, \
+ rellns-sh config.sub config.guess \
+@@ -282,7 +295,11 @@
+ gen-sorted.awk abi-versions.awk abilist.awk \
+ firstversions.awk documented.sh cpp \
+ output-format.sed gen-as-const.awk \
+- merge-abilist.awk extract-abilist.awk)
++ merge-abilist.awk extract-abilist.awk \
++ rpm2dynsym.sh \
++ ) \
++ $(wildcard scripts/data/*.data) \
++ $(wildcard abilist/*.abilist)
+
+ distribute := $(strip $(distribute))
+ generated := $(generated) stubs.h
+@@ -318,12 +335,6 @@
+ iconvdata/% localedata/% po/% manual/%:
+ $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+
+-# This is a special goal for people making binary distributions. Normally
+-# everybody uses the DES based crypt library but for the distribution we
+-# need the only-MD5 based one as well.
+-md5-crypt/libmd5crypt:
+- $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+-
+ # glibc 2.0 contains some header files which aren't used with glibc 2.1
+ # anymore.
+ # These rules should remove those headers
+--- glibc-2.3.2/Makefile.in 2000-11-15 18:03:08.000000000 -0500
++++ glibc-2.3.2/Makefile.in 2002-11-16 08:53:55.000000000 -0500
+@@ -1,4 +1,4 @@
+-# Generated from $Id: Makefile.in,v 1.7 2000/11/15 23:03:08 drepper Exp $.
++# Generated from $Id: Makefile.in,v 1.6 1998/02/26 14:51:55 drepper Exp $.
+
+ srcdir = @srcdir@
+
+--- glibc-2.3.2/Makerules 2003-02-22 18:23:31.000000000 -0500
++++ glibc-2.3.2/Makerules 2003-09-19 22:37:01.000000000 -0400
+@@ -125,29 +125,9 @@
+ endif # avoid-generated
+ endif # $(versioning) = yes
+
+-
+-# Generating headers for assembly constants.
+-# We need this defined early to get into before-compile before
+-# it's used in sysd-rules, below.
+-$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
+- %.sym $(before-compile)
+- $(AWK) -f $< $(filter %.sym,$^) \
+- | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \
+- -MD -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \
+- | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T
+- sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
+- $(@:.h=.h.d)T > $(@:.h=.h.d)T2
+- rm -f $(@:.h=.h.d)T
+- mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d)
+- mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
+-vpath %.sym $(sysdirs)
+-before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
+-
+-
+-# When we have no deps pass doing it, then make sure the subdirectory
+-# for object files gets created.
+-ifdef no_deps
++# Make sure the subdirectory for object files gets created.
+ ifdef objpfx
++ifeq (,$(wildcard $(objpfx).))
+ before-compile += $(objpfx).
+ $(objpfx).:
+ $(make-target-directory)
+@@ -166,26 +146,59 @@
+ $(before-compile):
+ endif
+
++# We don't want $(common-objpfx) files to depend on miscellaneous stuff
++# in subdirs.
++ifdef subdir
++common-before-compile := $(filter-out $(objpfx)%,$(before-compile))
++else
++common-before-compile = $(before-compile)
++endif
++
++ifndef subdir
+ # If a makefile needs to do something conditional on something that
+ # can only be figured out from headers, write a FOO.make.c input
+ # file that uses cpp contructs and contains @@@ LINE @@@ for each LINE
+ # to emit in the generated makefile, and use -include $(common-objpfx)FOO.make.
+-$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(before-compile)
++#
++# We only generate these in the top-level makefile, to avoid any weirdness
++# from subdir-specific makefile tweaks creeping in on an update.
++$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
+ rm -f $@T $@.dT
+ (echo '# Generated from $*.make.c by Makerules.'; \
+- SUNPRO_DEPENDENCIES='$@.dT $$(common-objpfx)$*.make' \
+ $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \
++ -MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
+ | sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
+ echo 'common-generated += $(@F)'; \
+ sed $(sed-remove-objpfx) $(sed-remove-dotdot) $@.dT; \
+ rm -f $@.dT) > $@T
+ mv -f $@T $@
++endif
+
+ ifdef subdir
+-sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g'
++sed-remove-dotdot := -e 's@ *\.\.\/\([^ \]*\)@ $$(..)\1@g' \
++ -e 's@^\.\.\/\([^ \]*\)@$$(..)\1@g'
+ else
+-sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g'
++sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \
++ -e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g'
+ endif
++
++
++# Generating headers for assembly constants.
++# We need this defined early to get into before-compile before
++# it's used in sysd-rules, below.
++$(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
++ %.sym $(common-before-compile)
++ $(AWK) -f $< $(filter %.sym,$^) \
++ | $(CC) -S -o - $(CFLAGS) $(CPPFLAGS) -x c - \
++ -MD -MP -MF $(@:.h=.h.d)T -MT '$(@:.h=.h.d) $(@:.h.d=.h)' \
++ | sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$$/#define \1 \2/p' > $(@:.h.d=.h)T
++ sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
++ $(@:.h=.h.d)T > $(@:.h=.h.d)T2
++ rm -f $(@:.h=.h.d)T
++ mv -f $(@:.h=.h.d)T2 $(@:.h=.h.d)
++ mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
++vpath %.sym $(sysdirs)
++before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
+
+ # Generate an ordered list of implicit rules which find the source files in
+ # each sysdep directory. The old method was to use vpath to search all the
+@@ -193,15 +206,6 @@
+ # later directory would be chosen over a .c file in an earlier directory,
+ # which does not preserve the desired sysdeps ordering behavior.
+
+-# When making the list of .d files to include, we can't know which ones
+-# have source in .s files, and thus do not in fact need a .d file.
+-# So we must define rules to make .d files for .s files.
+-define make-dummy-dep
+-$(addprefix ln $(common-objpfx)dummy.d ,$(filter-out $(wildcard $@),$@))
+-endef
+-$(common-objpfx)dummy.d:
+- echo '# .s files cannot contain includes, so they need no deps.' > $@
+-
+ # It matters that this set of rules, for compiling from sources in
+ # the current directory (the $srcdir/$subdir) come before the
+ # generated sysdep rules in included from sysd-rules below. When
+@@ -212,21 +216,18 @@
+ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+-$(objpfx)%.d: %.S $(before-compile); $(+make-deps)
+
+ define o-iterator-doit
+ $(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
+ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+-$(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep)
+
+ define o-iterator-doit
+ $(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
+ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+-$(objpfx)%.d: %.c $(before-compile); $(+make-deps)
+
+ # Omit the objpfx rules when building in the source tree, because
+ # objpfx is empty and so these rules just override the ones above.
+@@ -238,21 +239,18 @@
+ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+-$(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps)
+
+ define o-iterator-doit
+ $(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
+ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+-$(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep)
+
+ define o-iterator-doit
+ $(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+ endef
+ object-suffixes-left := $(all-object-suffixes)
+ include $(o-iterator)
+-$(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps)
+ endif
+
+ # System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard
+@@ -301,26 +299,6 @@
+ echo "\$$(objpfx)ptw-%$$o: $$dir/%.c \$$(before-compile); \
+ \$$(compile-command.c)"; \
+ done; \
+- $(open-check-inhibit-asm) \
+- echo "\$$(objpfx)%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
+- \$$(make-dummy-dep)"; \
+- echo "\$$(objpfx)rtld-%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
+- \$$(make-dummy-dep)"; \
+- echo "\$$(objpfx)ptw-%.d: $$dir/%.s \$$(common-objpfx)dummy.d; \
+- \$$(make-dummy-dep)"; \
+- echo "\$$(objpfx)%.d: $$dir/%.S \$$(before-compile); \
+- \$$(+make-deps)"; \
+- echo "\$$(objpfx)rtld-%.d: $$dir/%.S \$$(before-compile); \
+- \$$(+make-deps)"; \
+- echo "\$$(objpfx)ptw-%.d: $$dir/%.S \$$(before-compile); \
+- \$$(+make-deps)"; \
+- $(close-check-inhibit-asm) \
+- echo "\$$(objpfx)%.d: $$dir/%.c \$$(before-compile); \
+- \$$(+make-deps)"; \
+- echo "\$$(objpfx)rtld-%.d: $$dir/%.c \$$(before-compile); \
+- \$$(+make-deps)"; \
+- echo "\$$(objpfx)ptw-%.d: $$dir/%.c \$$(before-compile); \
+- \$$(+make-deps)"; \
+ echo "\$$(objpfx)m_%.S: $$dir/s_%.S; \$$(+make-include-of-dep)"; \
+ echo "\$$(objpfx)m_%.c: $$dir/s_%.c; \$$(+make-include-of-dep)"; \
+ done; \
+@@ -383,32 +361,20 @@
+ endif # $(versioning) = yes
+ endif # sysd-sorted-done
+
+-
+-ifndef compile-command.S
+-compile-command.S = $(compile.S) $(OUTPUT_OPTION)
+-endif
+-ifndef compile-command.s
+-compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION)
+-endif
+-ifndef compile-command.c
+-compile-command.c = $(compile.c) $(OUTPUT_OPTION)
+-endif
++# Generate .dT files as we compile.
++compile-mkdep-flags = -MD -MP -MF $@.dt
++compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)
++compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) $(compile-mkdep-flags)
++compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
+
+ # GCC can grok options after the file name, and it looks nicer that way.
+ compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
+-compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@))
+-COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) $(ASFLAGS-$(suffix $@))
++compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
++ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
++COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
++ $(ASFLAGS) $(ASFLAGS-$(suffix $@))
+ COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS)
+
+-# If we want to generate MD5 checksums for the sources do this now.
+-ifeq ($(md5),yes)
+-generate-md5 = ; rm -f $(@:.d=.md5); \
+-$(CC) -E $< $(CFLAGS) $(CPPFLAGS) $($(patsubst .%,%,$(suffix $(<F)))-CPPFLAGS) | \
+-sed '/^\#/d;/^[[:space:]]*$$/d' | md5sum > $(@:.d=.md5)
+-else
+-generate-md5 =
+-endif
+-
+ # We need this for the output to go in the right place. It will default to
+ # empty if make was configured to work with a cc that can't grok -c and -o
+ # together. You can't compile the C library with such a compiler.
+@@ -418,14 +384,16 @@
+ # the dependency run for C sources. But having it for assembly sources can
+ # get the wrong predefines.
+ S-CPPFLAGS = -DASSEMBLER $(asm-CPPFLAGS)
++
+ define +make-deps
+ $(make-target-directory)
+ $(+mkdep) $< $(if $(filter %.c,$<),$(CFLAGS)) \
+- $(CPPFLAGS) $($(patsubst .%,%,$(suffix $(<F)))-CPPFLAGS) | sed \
+--e 's,$(subst .,\.,$*)\.o,$(foreach o,$(all-object-suffixes),$(@:.d=$o)) $@,' \
+-$(sed-remove-objpfx) > $(@:.d=.T)
++ $(CPPFLAGS) $($(patsubst .%,%,$(suffix $(<F)))-CPPFLAGS) | sed -e\
++'s,$(subst .,\.,$(@F:.d=.o)),$(foreach o,$(all-object-suffixes),$(@:.d=$o)) $@,' \
++$(sed-remove-objpfx) $(sed-remove-dotdot) > $(@:.d=.T)
+ mv -f $(@:.d=.T) $@ $(generate-md5)
+ endef
++
+ ifneq (,$(objpfx))
+ # Continuation lines here are dangerous because they introduce spaces!
+ define sed-remove-objpfx
+@@ -509,17 +477,23 @@
+ ifeq (yes,$(elf))
+ # binutils only position loadable notes into the first page for binaries,
+ # not for shared objects
+-define build-shlib
+-$(build-shlib-helper) \
+- -o $@.new $(csu-objpfx)abi-note.o -Wl,--verbose \
+- $(LDLIBS-$(@F:lib%.so=%).so) 2>&1 | \
+- sed -e '/^=========/,/^=========/!d;/^=========/d' \
++$(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
++ $(LINK.o) -shared -Wl,-O1 \
++ $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS.so) \
++ -Wl,--verbose 2>&1 | \
++ sed > $@T \
++ -e '/^=========/,/^=========/!d;/^=========/d' \
+ -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+- $(LDSEDCMD-$(@F:lib%.so=%).so) > $@.lds
+-rm -f $@.new
+-$(build-shlib-helper) -o $@ -T $@.lds \
++ -e 's/^.*\*(\.dynbss).*$$/& \
++ PROVIDE(__start___libc_freeres_ptrs = .); \
++ *(__libc_freeres_ptrs) \
++ PROVIDE(__stop___libc_freeres_ptrs = .);/'
++ mv -f $@T $@
++common-generated += shlib.lds
++
++define build-shlib
++$(build-shlib-helper) -o $@ -T $(common-objpfx)shlib.lds \
+ $(csu-objpfx)abi-note.o $(build-shlib-objlist)
+-rm -f $@.lds
+ endef
+ else
+ ifneq (,$(findstring aix,$(config-os)))
+@@ -547,6 +521,7 @@
+ else
+ define build-module-helper
+ $(LINK.o) -shared $(static-libgcc) $(sysdep-LDFLAGS) $(config-LDFLAGS) \
++ $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \
+ -B$(csu-objpfx) $(load-map-file) \
+ $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \
+ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
+@@ -559,16 +534,8 @@
+ # binutils only position loadable notes into the first page for binaries,
+ # not for shared objects
+ define build-module
+-$(build-module-helper) \
+- -o $@.new $(csu-objpfx)abi-note.o -Wl,--verbose \
+- $(LDLIBS-$(@F:lib%.so=%).so) 2>&1 | \
+- sed -e '/^=========/,/^=========/!d;/^=========/d' \
+- -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
+- > $@.lds
+-rm -f $@.new
+-$(build-module-helper) -o $@ -T $@.lds \
++$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \
+ $(csu-objpfx)abi-note.o $(build-module-objlist)
+-rm -f $@.lds
+ endef
+ else
+ ifneq (,$(findstring aix,$(config-os)))
+@@ -590,7 +557,7 @@
+
+ build-module-helper-objlist = \
+ $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
+- $(filter-out $(map-file) $(+preinit) $(+postinit),$^))
++ $(filter-out %.lds $(map-file) $(+preinit) $(+postinit),$^))
+ whole-archive := -Wl,--whole-archive
+
+ build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
+@@ -605,8 +572,6 @@
+ LDLIBS-c.so += $(gnulib)
+ # Give libc.so an entry point and make it directly runnable itself.
+ LDFLAGS-c.so += -e __libc_main
+-# Force the backward compatibility EH functions to be linked.
+-LDFLAGS-c.so += -u __register_frame
+ # Pre-link the objects of libc_pic.a so that we can locally resolve
+ # COMMON symbols before we link against ld.so. This is because ld.so
+ # contains some of libc_pic.a already, which will prevent the COMMONs
+@@ -616,12 +581,12 @@
+ $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
+ $(LINK.o) -nostdlib -nostartfiles -r -o $@ \
+ $(LDFLAGS-c_pic.os) -Wl,-d -Wl,--whole-archive $^
+-LDSEDCMD-c.so = -e 's/^.*\*(\.dynbss).*$$/& __start___libc_freeres_ptrs = .; *(__libc_freeres_ptrs) __stop___libc_freeres_ptrs = .;/'
+ # Use our own special initializer and finalizer files for libc.so.
+ $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
+ $(common-objpfx)libc_pic.os \
+ $(elfobjdir)/sofini.os \
+- $(elfobjdir)/interp.os $(elfobjdir)/ld.so
++ $(elfobjdir)/interp.os $(elfobjdir)/ld.so \
++ $(common-objpfx)shlib.lds
+ $(build-shlib)
+ ifeq ($(versioning),yes)
+ $(common-objpfx)libc.so: $(common-objpfx)libc.map
+@@ -689,6 +654,15 @@
+ +depfiles := $(addprefix $(objpfx),\
+ $(filter-out $(addsuffix .d,$(omit-deps)),\
+ $(+depfiles)))
++all-dt-files := $(foreach o,$(object-suffixes-for-libc),$(+depfiles:.d=$o.dt))
+++depfiles := $(patsubst %.dt,%.d,$(wildcard $(all-dt-files))) \
++ $(wildcard $(all-dt-files:.dt=.d))
++
++# This is a funny rule in that it removes its input file.
++%.d: %.dt
++ @sed $(sed-remove-objpfx) $< > $(@:.d=.T) && \
++ mv -f $(@:.d=.T) $@ && \
++ rm -f $<
+
+ # Avoid the .h.d files for any .sym files whose .h files don't exist yet.
+ # They will be generated when they're needed, and trying too early won't work.
+@@ -762,6 +736,7 @@
+ $(objpfx)stamp$o: $(o-objects); $$(do-stamp)
+ endef
+ define do-stamp
++$(make-target-directory)
+ echo '$(patsubst $(objpfx)%,$(addsuffix /,$(subdir))%,$^)' > $@T
+ mv -f $@T $@
+ endef
+@@ -1188,15 +1163,23 @@
+ LC_ALL=C \
+ $(AWK) -f $< -v 'config=$(check-abi-config)' \
+ $(filter %.abilist,$^) \
+- | diff -pu0 - $(filter %.symlist,$^)
++ | { diff -pu0 - $(filter %.symlist,$^) $(check-abi-warn) ; }
+ endef
++ifeq ($(enable-check-abi),warn)
++check-abi-warn = || echo '*** WARNING: $*.so failed ABI check'
++endif
+
+ ifeq ($(firstword $(sysd-sorted-done) f)$(firstword $(generating) f),tf)
+ -include $(common-objpfx)tls.make
+-config-tls-yes := tls
+-config-tls-no := notls
++config-tls := notls
++ifeq ($(use-tls),yes)
++config-tls := tls
++endif
++ifeq ($(use-thread),yes)
++config-tls := thread
++endif
+ check-abi-config := \
+- $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls-$(use-thread))
++ $(config-machine)-$(config-vendor)-$(config-os)/$(config-tls)
+ endif
+
+ update-abi-%: $(..)scripts/merge-abilist.awk $(..)abilist/%.abilist \
+@@ -1211,7 +1194,7 @@
+ endef
+ else
+ define update-abi
+-LC_ALL=C $(AWK) -v config=$(update-abi-config) -f $^ \
++LC_ALL=C $(AWK) -v config='$(update-abi-config)' -f $^ \
+ > $(..)abilist/$*.abilist.new
+ @if cmp -s $(..)abilist/$*.abilist.new $(..)abilist/$*.abilist 2> /dev/null; \
+ then rm -f $(..)abilist/$*.abilist.new; \
+@@ -1233,19 +1216,23 @@
+ update-abi: subdir_update-abi
+ endif
+
+-# Enable this when all the .abilist files are in place.
+-#tests: check-abi
+-
+ ifeq ($(subdir),elf)
+ check-abi: check-abi-libc
+ update-abi: update-abi-libc
+ common-generated += libc.symlist
+ endif
+
++ifeq ($(build-shared),yes)
++ifneq ($(enable-check-abi),no)
++ifdef subdir
++tests: check-abi
++endif
++endif
++endif
++
+ endif
+
+ # There's no good place to put this - here will do.
+-# The dependencies are wrong if it's run from the top level.
+ ifeq ($(filter %posix, $(sysdirs)),)
+ L_tmpnam = 1
+ TMP_MAX = 0
+@@ -1263,24 +1250,20 @@
+ $(stdio_lim:h=st): $(..)stdio-common/stdio_lim.h.in $(..)Rules \
+ $(common-objpfx)config.make
+ $(make-target-directory)
+- echo '#include "$(..)posix/bits/posix1_lim.h"' | \
+- SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \
+- $(CC) $(+includes) -E -dM -xc - -o $(@:st=hT)
+- echo '#include "$(..)misc/sys/uio.h"' | \
+- SUNPRO_DEPENDENCIES='$(@:st=dT) $@' \
+- $(CC) -D_LIBC=1 $(+includes) -E -dM -xc - | cat - >> $(@:st=hT)
+-ifdef sed-remove-objpfx
+- sed $(sed-remove-objpfx) $(@:st=dT) > $(@:st=dt)
+- cat $(@:st=dt) >> $(@:st=d)
+-else
+- cat $(@:st=dT) >> $(@:st=d)
+-endif
++ { echo '#include "$(..)posix/bits/posix1_lim.h"'; \
++ echo '#define _LIBC 1'; \
++ echo '#include "$(..)misc/sys/uio.h"'; } | \
++ $(CC) -E -dM -MD -MP -MF $(@:st=dT) -MT '$(@:st=h) $(@:st=d)' \
++ $(+includes) -xc - -o $(@:st=hT)
++ sed $(sed-remove-objpfx) $(sed-remove-dotdot) \
++ $(@:st=dT) > $(@:st=dt)
++ mv -f $(@:st=dt) $(@:st=d)
+ fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \
+ filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \
+ iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \
+ fopen_max=$${fopen_max:-16}; \
+ filename_max=$${filename_max:-1024}; \
+- if [ -z $$iov_max ]; then \
++ if [ -z "$$iov_max" ]; then \
+ define_iov_max="# undef IOV_MAX"; \
+ else \
+ define_iov_max="# define IOV_MAX $$iov_max"; \
+@@ -1355,8 +1338,8 @@
+
+ # Also remove the dependencies and generated source files.
+ common-clean: common-mostlyclean
+- -rm -f $(addprefix $(objpfx),$(generated)) $(+depfiles)
+- -rm -f $(objpfx)rtld-*.d
++ -rm -f $(addprefix $(objpfx),$(generated))
++ -rm -f $(objpfx)*.d $(objpfx)*.dt
+ -rm -fr $(addprefix $(objpfx),$(generated-dirs))
+ -rm -f $(addprefix $(common-objpfx),$(common-generated))
+ -rm -f $(objpfx)distinfo
+@@ -1370,17 +1353,23 @@
+ .PHONY: stubs # The parent Makefile calls this target.
+ stubs: $(objpfx)stubs
+ endif
+-s = $(sysdep_dir)/generic
+ $(objpfx)stubs: $(+depfiles)
++ifneq (,$(strip $(+depfiles)))
+ # Use /dev/null since `...` might expand to empty.
+- (s=`cd $s && $(PWD_P)`; \
+- $(patsubst %/,cd % &&,$(objpfx)) \
+- sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
+- `sed -n -e '\@ $s/[^ ]*\.c@{; s@^.* $s/\([^ ]*\.c\).*$$@'"$$s"'/\1@; h; }' \
+- -e '/stub-tag\.h/{; g; p; }' \
+- $(patsubst $(objpfx)%,%,$^) /dev/null` \
+- /dev/null) > $@T
++ c=`($(patsubst %/,cd % &&,$(objpfx)) \
++ sed -n -e 's@\$$(common-objpfx)@$(common-objpfx)@g' \
++ -e 's@\$$(objpfx)@$(objpfx)@g' \
++ -e '/stub-tag\.h/{; g; s/./&/p; }' \
++ -e '/:/{x; s/^.*$$//; x; }' \
++ -e 's/^.*://;s/\\$$//;s/^ *\([^ ][^ ]*\) .*$$/\1/' \
++ -e '/^[^ ][^ ]*$$/{G;s/^.*\n\(..*\)/\1/;s/\n//;h; }' \
++ $(patsubst $(objpfx)%,%,$^)) | sort | uniq`; \
++ sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
++ $$c /dev/null > $@T
+ mv -f $@T $@
++else
++ > $@
++endif
+
+ # Make the distribution tar file.
+
+--- glibc-2.3.2/NEWS 2003-01-13 04:26:13.000000000 -0500
++++ glibc-2.3.2/NEWS 2003-04-24 20:05:56.000000000 -0400
+@@ -1,10 +1,24 @@
+-GNU C Library NEWS -- history of user-visible changes. 2003-1-12
+-Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc.
++GNU C Library NEWS -- history of user-visible changes. 2003-4-24
++Copyright (C) 1992-2002,2003 Free Software Foundation, Inc.
+ See the end for copying conditions.
+
+ Please send GNU C library bug reports using the `glibcbug' script to
+ <bugs@gnu.org>. Please send questions and suggestions to <bug-glibc@gnu.org>.
+
++Version 2.3.3
++
++* New functions `dladdr1' and `dlinfo' in <dlfcn.h> provide more ways to
++ interrogate the dynamic linker, compatible with the Solaris interface.
++
++* ELF thread-local storage support (TLS) now works on PowerPC and PowerPC64;
++ implemented by Paul Mackerras, Steven Munroe, and Roland McGrath.
++
++* getifaddrs new uses on Linux the netlink interface to get the information.
++ Implemented by Thorsten Kukuk.
++
++* getaddrinfo now implements AI_V4MAPPED, AI_ALL, and AI_ADDRCONF.
++ Implemented by Ulrich Drepper.
++
+ Version 2.3.2
+
+ * Thread-safe interfaces for many functions that access locale data
+--- glibc-2.3.2/README-alpha 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/README-alpha 2002-11-16 08:53:55.000000000 -0500
+@@ -0,0 +1,287 @@
++ GNU libc SNAPSHOT SYSTEM
++ (general info)
++ Updated 1997-9-26
++
++WHAT ARE GNU libc SNAPSHOTS
++---------------------------
++
++Snapshots are an "image" of the main glibc development tree, captured at a
++particular random instant in time. When you use the snapshots, you should be
++able to maintain a local copy of libc that is no more than one day older than
++the official source tree used by the libc maintainers.
++
++The primary purpose of providing snapshots is to widen the group of motivated
++developers that would like to help test, debug, and enhance glibc, by providing
++you with access to the "latest and greatest" source. This has several
++advantages, and several disadvantages.
++
++ First the advantages:
++
++ o Once we have a large base of motivated testers using the snapshots,
++ this should provide good coverage across all currently supported
++ glibc hosts and targets. If a new bug is introduced in glibc due to
++ fixing another bug or ongoing development, it should become
++ obvious much more quickly and get fixed before the next general
++ net release. This should help to reduce the chances of glibc being
++ released to the general public with a major bug that went unnoticed
++ during the release cycle testing because they are machine dependent.
++ We hope to greatly improve glibc's stability and reliability by
++ involving more people and more execution environments in the
++ prerelease testing.
++
++ o With access to the latest source, any diffs that you send to fix
++ bugs or add new features should be much easier for the glibc team
++ to merge into the official source base (after suitable review
++ of course). This encourages us to merge your changes quicker,
++ while they are still "fresh".
++
++ o Once your diffs are merged, you can obtain a new copy of glibc
++ containing your changes almost immediately. Thus you do not
++ have to maintain local copies of your changes for any longer
++ than it takes to get them merged into the official source base.
++ This encourages you to send in changes quicker.
++
++ And the disadvantages:
++
++ o The snapshot you get will be largely untested and of unknown quality.
++ It may fail to configure or compile. It may have serious bugs.
++ You should always keep a copy of the last known working version
++ before updating to the current snapshot, or at least be able to
++ regenerate a working version if the latest snapshot is unusable
++ in your environment for some reason.
++
++ If a production version of glibc has a bug and a snapshot has the fix,
++ and you care about stability, you should put only the fix for that
++ particular problem into your production version. Of course, if you
++ are eager to test glibc, you can use the snapshot versions in your
++ daily work, but users who have not been consulted about whether they
++ feel like testing glibc should generally have something which is at
++ least as bug free as the last released version.
++
++ o Providing timely response to your questions, bug reports, and
++ submitted patches will require the glibc development team to allocate
++ time from an already thin time budget. Please try to help us make
++ this time as productive as possible. See the section below about
++ how to submit changes.
++
++
++WHO SHOULD TRY THE SNAPSHOTS
++----------------------------
++
++Remember, these are snapshots not tested versions. So if you use
++these versions you should be able to
++
++ o make sure your system stays usable
++
++ o locate and hopefully fix problems
++
++ o to port glibc to a new target yourself
++
++You should not use the snapshots if
++
++ o your system is needed in a production environment which needs
++ stability
++
++ o you expect us to fix your problems since you somehow depend on them.
++ You must be willing to fix the problems yourself, we don't want to
++ see "I have problems, fix this" messages.
++
++
++HOW TO GET THE SNAPSHOTS
++------------------------
++
++At the moment we provide a full snapshot weekly (every sunday), so
++that users getting a snapshot for the first time, or updating after
++a long period of not updating, can get the latest version in a single
++operation. Along with the full snapshot, we will provide incremental
++diffs on a nearly daily basis (whenever code changes). Each daily
++diff will be relative to the source tree after applying all previous
++daily diffs. The daily diffs are for people who have relatively low
++bandwidth ftp or uucp connections.
++
++The files will be available via anonymous ftp from alpha.gnu.org, in
++directory /gnu/libc and on linux.kernel.org in /pub/software/libs/glibc. The
++directories should look something like:
++
++ libc-970921.tar.gz
++ libc-970917-970922.diff.gz
++ libc-970922-970925.diff.gz
++ .
++ .
++ .
++
++Please note that the snapshots on alpha.gnu.org and on
++linux.kernel.org are not always in sync. Patches to some files might
++appear a day a diff earlier or later on alpha than on kernel.
++Use always alpha or always kernel but don't mix them.
++
++There are sometimes additionally test releases of the add-ons available in
++these directories. If a new version of an add-on is available it is normally
++required for the corresponding snapshot so always pay attention for these.
++
++Note that we provide GNU gzip compressed files only. You can ftp gzip
++from ftp.gnu.org in directory pub/gnu.
++
++In some cases the dates for diffs and snapshots do not match like in the
++example above. The full release is for 970921 but the patch is for
++970917-970922. This only means that nothing changed between 970917 and 970922
++and that you have to use this patch on top of the 970921 snapshot since the
++patch is made on 970922.
++
++Also, as the gcc developers did with their gcc snapshot system, even though we
++will make the snapshots available on a publically accessible ftp area, we ask
++that recipients not widely publicise their availability. The motivation for
++this request is not to hoard them, but to avoid the situation where the
++general glibc user base naively attempts to use the snapshots, has trouble with
++them, complains publically, and the reputation of glibc declines because of a
++perception of instability or lack of quality control.
++
++
++GLIBC TEST SUITE
++----------------
++
++A test suite is distributed as an integral part of the snapshots. A simple
++"make check" in your build directory is sufficient to run the tests. glibc
++should pass all tests and if any fails, please report it. A failure might not
++originate from a bug in glibc but also from bugs in the tools, e.g. with gcc
++2.7.2.x the math tests fail some of the tests because of compiler bugs.
++
++Note that the test suite is still in its infancy. The tests themselves only
++cover a small portion of libc features, and where tests do exist for a feature
++they are not exhaustive. New tests are welcome.
++
++
++GETTING HELP, GLIBC DISCUSSIONS, etc
++------------------------------------
++
++People who want to help with glibc and who test out snapshots
++regularly should get on the libc-alpha@sourceware.cygnus.com mailing
++list by sending an email to libc-alpha-subscribe@sourceware.cygnus.com.
++This list is meant (as the name suggests) for the discussion of test
++releases and also reports for them. People who are on this list are
++welcome to post questions of general interest.
++
++People who are not only willing to test the snapshots but instead
++really want to help developing glibc should contact
++libc-hacker-subscribe@sourceware.cygnus.com.org to be put on the developers
++mailing list. This list is really only meant for developers. No
++questions about installation problems or other simple topics are
++wanted nor will they be answered.
++
++Do *not* send any questions about the snapshots or patches specific to the
++snapshots to bug-glibc@gnu.org. Nobody there will have any idea what
++you are talking about and it will just cause confusion.
++
++
++BUG REPORTS
++-----------
++
++Send bug reports directly to Ulrich Drepper <drepper@gnu.org>. Please
++do *not* use the glibcbug script for reporting bugs in the snapshots.
++glibcbug should only be used for problems with the official released versions.
++We don't like bug reports in the bug database because otherwise the impression
++of instability or lack of quality control of glibc as a whole might manifest
++in people's mind.
++
++Note that since no testing is done on the snapshots, and snapshots may even be
++made when glibc is in an inconsistent state, it may not be unusual for an
++occasional snapshot to have a very obvious bug, such as failure to compile on
++*any* machine. It is likely that such bugs will be fixed by the next
++snapshot, so it really isn't necessary to report them unless they persist for
++a couple of days.
++
++Missing files should always be reported, since they usually mean there is a
++problem with the snapshot-generating process and we won't know about them
++unless someone tells us.
++
++Bugs which are non-obvious, such as failure to compile on only a specific
++machine, a new machine dependent or obscure bug (particularly one not detected
++by the testsuite), etc should be reported when you discover them, or have a
++suggested patch to fix them.
++
++
++FORMAT FOR PATCHES
++------------------
++
++If you have a fix for a bug, or an enhancement to submit, send your patch to
++Ulrich Drepper <drepper@gnu.org>. Here are some simple guidelines for
++submitting patches:
++
++ o Use "unified diffs" for patches. A typical command for generating
++ context diffs is "diff -ru glibc-old glibc-patched".
++
++ o Use the "minimalist approach" for patches. That is, each patch
++ should address only one particular bug, new feature, etc. Do not
++ save up many unrelated changes and submit them all in one big
++ patch, since in general, the larger the patch the more difficult
++ it is for us to decide if the patch is either correct or
++ desirable. And if we find something about the patch that needs
++ to be corrected before it can be installed, we would have to reject
++ the entire patch, which might contain changes which otherwise would
++ be accepted if submitted separately.
++
++ o Submit a sample ChangeLog entry with your patch. See the existing
++ glibc ChangeLog for examples of what a ChangeLog entry should look
++ like. The emacs command ^X4A will create a ChangeLog entry header
++ for you.
++
++
++BUILDING SNAPSHOTS
++------------------
++
++The `best' way to build glibc is to use an extra directory, e.g.:
++tar xzf libc-970921.tar.gz
++mkdir build-glibc
++cd build-glibc
++../libc-970921/configure ...
++
++In this way you can easily clean up (since `make clean' doesn't work at
++the moment) and rebuild glibc.
++
++
++NECESSARY TOOLS
++---------------
++
++For the recommended versions of gcc, binutils, make, texinfo, gettext,
++autoconf and other tools which might be especially needed when using patches,
++please read the file INSTALL.
++
++
++HOW CAN YOU HELP
++----------------
++
++It helps already a lot if you just install glibc on your system and try to
++solve any problems. You might want to look at the file `PROJECTS' and help
++with one of those projects, fix some bugs (see `BUGS' or the bug database),
++port to an unsupported platform, ...
++
++
++FURTHER DOCUMENTATION
++---------------------
++
++A lot of questions are answered in the FAQ. The files `INSTALL', `README' and
++`NOTES' contain the most important documentation. Furthermore glibc has its
++own 700+ pages info documentation, ...
++
++
++
++And finally a word of caution: The libc is one of the most fundamental parts
++of your system - and these snapshots are untested and come without any
++guarantee or warranty. You might be lucky and everything works or you might
++crash your system. If you install a glibc snapshot as primary library, you
++should have a backup somewhere.
++
++On many systems it is also a problem to replace the libc while the system is
++running. In the worst case on broken OSes some systems crash. On better
++systems you can move the old libc aside but removing it will cause problems
++since there are still processes using this libc image and so you might have to
++check the filesystem to get rid of the libc data. One good alternative (which
++is also safer) is to use a chroot'ed environment.
++
++Thanks for your help and support.
++
++Thanks to Fred Fish from Cygnus for the original version of this text
++(for GDB).
++
++
++Ulrich Drepper
+--- glibc-2.3.2/README.template 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/README.template 2002-11-16 08:53:56.000000000 -0500
+@@ -0,0 +1,87 @@
++This directory contains the version VERSION release of the GNU C Library.
++Many bugs have been fixed since the last release.
++Some bugs surely remain.
++
++As of this release, the GNU C library is known to run on the following
++configurations:
++
++ *-*-gnu GNU Hurd
++ i[3456]86-*-linux-gnu Linux-2.x on Intel
++ m68k-*-linux-gnu Linux-2.x on Motorola 680x0
++ alpha*-*-linux-gnu Linux-2.x on DEC Alpha
++ powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems
++ powerpc64-*-linux-gnu Linux-2.4.19+ on 64-bit PowerPC systems
++ sparc-*-linux-gnu Linux-2.x on SPARC
++ sparc64-*-linux-gnu Linux-2.x on UltraSPARC 64-bit
++ arm-*-none ARM standalone systems
++ arm-*-linux Linux-2.x on ARM
++ arm-*-linuxaout Linux-2.x on ARM using a.out binaries
++ mips*-*-linux-gnu Linux-2.x on MIPS
++ ia64-*-linux-gnu Linux-2.x on ia64
++ s390-*-linux-gnu Linux-2.x on IBM S/390
++ s390x-*-linux-gnu Linux-2.4+ on IBM S/390 64-bit
++ sh-*-linux-gnu Linux-2.x on Super Hitachi
++ cris-*-linux-gnu Linux-2.4+ on CRIS
++ x86-64-*-linux-gnu Linux-2.4+ on x86-64
++
++Former releases of this library (version 1.09.1 and perhaps earlier
++versions) used to run on the following configurations:
++
++ alpha-dec-osf1
++ i[3456]86-*-bsd4.3
++ i[3456]86-*-isc2.2
++ i[3456]86-*-isc3
++ i[3456]86-*-sco3.2
++ i[3456]86-*-sco3.2v4
++ i[3456]86-*-sysv
++ i[3456]86-*-sysv4
++ i[3456]86-force_cpu386-none
++ i[3456]86-sequent-bsd
++ i960-nindy960-none
++ m68k-hp-bsd4.3
++ m68k-mvme135-none
++ m68k-mvme136-none
++ m68k-sony-newsos3
++ m68k-sony-newsos4
++ m68k-sun-sunos4
++ mips-dec-ultrix4
++ mips-sgi-irix4
++ sparc-sun-solaris2
++ sparc-sun-sunos4
++
++Since no one has volunteered to test and fix the above configurations,
++these are not supported at the moment. It's expected that these don't
++work anymore. Porting the library is not hard. If you are interested
++in doing a port, please contact the glibc maintainers by sending
++electronic mail to <bug-glibc@gnu.org>.
++
++There are some add-ons which can be used together with GNU libc. They
++are designed in a way to ease the installation by integrating them in
++the libc source tree. Simply get the add-ons you need and use the
++--enable-add-ons option of the `configure' script to tell where the
++add-ons are found. Please read the FAQ file for more details.
++
++See the file INSTALL to find out how to configure, build, install, and port
++the GNU C library. You might also consider reading the WWW pages for the
++GNU libc at http://www.gnu.org/software/libc/libc.html.
++
++The GNU C Library is completely documented by the Texinfo manual found
++in the `manual/' subdirectory. The manual is still being updated and
++contains some known errors and omissions; we regret that we do not
++have the resources to work on the manual as much as we would like.
++Please send comments on the manual to <bug-glibc-manual@gnu.org>, and
++not to the library bug-reporting address.
++
++The file NOTES contains a description of the feature-test macros used
++in the GNU C library, explaining how you can tell the library what
++facilities you want it to make available.
++
++We prefer to get bug reports sent using the `glibcbug' shell script which
++is installed together with the rest of the GNU libc to <bugs@gnu.org>.
++Simply run this shell script and fill in the information. Nevertheless
++you can still send bug reports to <bug-glibc@gnu.org> as normal electronic
++mails.
++
++The GNU C Library is free software. See the file COPYING.LIB for copying
++conditions, and LICENSES for notices about a few contributions that require
++these additional notices to be distributed.
+--- glibc-2.3.2/Versions.def 2002-12-10 14:05:17.000000000 -0500
++++ glibc-2.3.2/Versions.def 2003-04-12 11:39:41.000000000 -0400
+@@ -18,6 +18,7 @@
+ GLIBC_2.3
+ GLIBC_2.3.1
+ GLIBC_2.3.2
++ GLIBC_2.3.3
+ %ifdef USE_IN_LIBIO
+ HURD_CTHREADS_0.3
+ %endif
+@@ -32,6 +33,7 @@
+ libdl {
+ GLIBC_2.0
+ GLIBC_2.1
++ GLIBC_2.3.3
+ }
+ libm {
+ GLIBC_2.0
+@@ -71,6 +73,7 @@
+ GLIBC_2.2.3
+ GLIBC_2.2.6
+ GLIBC_2.3.2
++ GLIBC_2.3.3
+ GLIBC_PRIVATE
+ }
+ libresolv {
+@@ -82,6 +85,7 @@
+ GLIBC_2.1
+ GLIBC_2.2
+ GLIBC_2.3
++ GLIBC_2.3.3
+ }
+ libutil {
+ GLIBC_2.0
+@@ -96,6 +100,7 @@
+ GLIBC_2.1.3
+ GLIBC_2.2.3
+ GLIBC_2.3
++ GLIBC_2.3.3
+ }
+ libanl {
+ GLIBC_2.2.3
+--- glibc-2.3.2/abilist/ld.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/ld.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,35 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.0 A
++ _r_debug D 0x14
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __libc_memalign F
++ calloc F
++ free F
++ malloc F
++ realloc F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _dl_mcount F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _r_debug D 0x28
++GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3 A
++GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls
++ ___tls_get_addr F
++GLIBC_2.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread x86_64-.*-linux.*/tls
++ __tls_get_addr F
++GLIBC_2.3 s390-.*-linux.*/tls s390x-.*-linux.*/tls
++ __tls_get_offset F
+--- glibc-2.3.2/abilist/libBrokenLocale.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libBrokenLocale.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,13 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __ctype_get_mb_cur_max F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libanl.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libanl.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,13 @@
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.3 A
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ gai_cancel F
++ gai_error F
++ gai_suspend F
++ getaddrinfo_a F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libc.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libc.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,2231 @@
++GCC_3.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GCC_3.0 A
++ _Unwind_Find_FDE F
++ __deregister_frame_info_bases F
++ __register_frame_info_bases F
++ __register_frame_info_table_bases F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
++ __fpu_control D 0x2
++ vm86 F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.0 A
++ _IO_stderr_ D 0x50
++ _IO_stdin_ D 0x50
++ _IO_stdout_ D 0x50
++ __strtoq_internal F
++ __strtouq_internal F
++ _sys_errlist D 0x1ec
++ _sys_siglist D 0x80
++ res_init F
++ sys_errlist D 0x1ec
++ sys_sigabbrev D 0x80
++ sys_siglist D 0x80
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ getaliasbyname_r F
++ getaliasent_r F
++ getgrent_r F
++ getgrgid_r F
++ getgrnam_r F
++ gethostbyaddr_r F
++ gethostbyname2_r F
++ gethostbyname_r F
++ gethostent_r F
++ getnetbyaddr_r F
++ getnetbyname_r F
++ getnetent_r F
++ getprotobyname_r F
++ getprotobynumber_r F
++ getprotoent_r F
++ getpwent_r F
++ getpwnam_r F
++ getpwuid_r F
++ getrpcbyname_r F
++ getrpcbynumber_r F
++ getrpcent_r F
++ getservbyname_r F
++ getservbyport_r F
++ getservent_r F
++ getspent_r F
++ getspnam_r F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ _sys_nerr D 0x4
++ sys_nerr D 0x4
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_do_write F
++ _IO_fclose F
++ _IO_fdopen F
++ _IO_file_attach F
++ _IO_file_close_it F
++ _IO_file_fopen F
++ _IO_file_init F
++ _IO_file_overflow F
++ _IO_file_seekoff F
++ _IO_file_setbuf F
++ _IO_file_sync F
++ _IO_file_underflow F
++ _IO_file_write F
++ _IO_file_xsputn F
++ _IO_fopen F
++ _IO_popen F
++ _IO_proc_close F
++ _IO_proc_open F
++ fclose F
++ fdopen F
++ fopen F
++ pclose F
++ popen F
++ pthread_attr_init F
++ tmpfile F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ chown F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ fnmatch F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_fgetpos F
++ _IO_fsetpos F
++ fgetpos F
++ fopencookie F
++ fsetpos F
++ getrlimit F
++ localeconv F
++ msgctl F
++ semctl F
++ setrlimit F
++ shmctl F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ re_max_failures D 0x4
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ pthread_cond_broadcast F
++ pthread_cond_destroy F
++ pthread_cond_init F
++ pthread_cond_signal F
++ pthread_cond_wait F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ realpath F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_adjust_column F
++ _IO_default_doallocate F
++ _IO_default_finish F
++ _IO_default_pbackfail F
++ _IO_default_uflow F
++ _IO_default_xsgetn F
++ _IO_default_xsputn F
++ _IO_doallocbuf F
++ _IO_feof F
++ _IO_ferror F
++ _IO_fflush F
++ _IO_fgets F
++ _IO_file_close F
++ _IO_file_doallocate F
++ _IO_file_open F
++ _IO_file_read F
++ _IO_file_seek F
++ _IO_file_stat F
++ _IO_flockfile F
++ _IO_flush_all F
++ _IO_flush_all_linebuffered F
++ _IO_fprintf F
++ _IO_fputs F
++ _IO_fread F
++ _IO_free_backup_area F
++ _IO_ftell F
++ _IO_ftrylockfile F
++ _IO_funlockfile F
++ _IO_fwrite F
++ _IO_getc F
++ _IO_getline F
++ _IO_gets F
++ _IO_init F
++ _IO_init_marker F
++ _IO_link_in F
++ _IO_marker_delta F
++ _IO_marker_difference F
++ _IO_padn F
++ _IO_peekc_locked F
++ _IO_printf F
++ _IO_putc F
++ _IO_puts F
++ _IO_remove_marker F
++ _IO_seekmark F
++ _IO_seekoff F
++ _IO_seekpos F
++ _IO_setb F
++ _IO_setbuffer F
++ _IO_setvbuf F
++ _IO_sgetn F
++ _IO_sprintf F
++ _IO_sputbackc F
++ _IO_sscanf F
++ _IO_str_init_readonly F
++ _IO_str_init_static F
++ _IO_str_overflow F
++ _IO_str_pbackfail F
++ _IO_str_seekoff F
++ _IO_str_underflow F
++ _IO_sungetc F
++ _IO_switch_to_get_mode F
++ _IO_un_link F
++ _IO_ungetc F
++ _IO_unsave_markers F
++ _IO_vfprintf F
++ _IO_vfscanf F
++ _IO_vsprintf F
++ __adjtimex F
++ __argz_count F
++ __argz_next F
++ __argz_stringify F
++ __assert_fail F
++ __assert_perror_fail F
++ __bsd_getpgrp F
++ __check_rhosts_file D 0x4
++ __close F
++ __cmsg_nxthdr F
++ __connect F
++ __ctype_get_mb_cur_max F
++ __daylight D 0x4
++ __dcgettext F
++ __default_morecore F
++ __dgettext F
++ __dup2 F
++ __errno_location F
++ __fcntl F
++ __ffs F
++ __finite F
++ __finitef F
++ __finitel F
++ __fxstat F
++ __getdelim F
++ __getpagesize F
++ __getpgid F
++ __getpid F
++ __gettimeofday F
++ __gmtime_r F
++ __h_errno_location F
++ __isinf F
++ __isinff F
++ __isinfl F
++ __isnan F
++ __isnanf F
++ __isnanl F
++ __iswctype F
++ __ivaliduser F
++ __libc_calloc F
++ __libc_free F
++ __libc_init_first F
++ __libc_mallinfo F
++ __libc_malloc F
++ __libc_mallopt F
++ __libc_memalign F
++ __libc_pvalloc F
++ __libc_realloc F
++ __libc_start_main F
++ __libc_valloc F
++ __lseek F
++ __lxstat F
++ __mbrlen F
++ __mbrtowc F
++ __mempcpy F
++ __monstartup F
++ __nss_configure_lookup F
++ __nss_database_lookup F
++ __nss_group_lookup F
++ __nss_hosts_lookup F
++ __nss_next F
++ __nss_passwd_lookup F
++ __open F
++ __overflow F
++ __pipe F
++ __printf_fp F
++ __profile_frequency F
++ __read F
++ __res_randomid F
++ __sbrk F
++ __sched_get_priority_max F
++ __sched_get_priority_min F
++ __sched_getparam F
++ __sched_getscheduler F
++ __sched_setscheduler F
++ __sched_yield F
++ __secure_getenv F
++ __select F
++ __send F
++ __setpgid F
++ __sigaction F
++ __sigaddset F
++ __sigdelset F
++ __sigismember F
++ __sigpause F
++ __sigsetjmp F
++ __stpcpy F
++ __stpncpy F
++ __strcasecmp F
++ __strdup F
++ __strerror_r F
++ __strtod_internal F
++ __strtof_internal F
++ __strtok_r F
++ __strtol_internal F
++ __strtold_internal F
++ __strtoll_internal F
++ __strtoul_internal F
++ __strtoull_internal F
++ __sysv_signal F
++ __uflow F
++ __underflow F
++ __vfscanf F
++ __vsnprintf F
++ __vsscanf F
++ __wait F
++ __waitpid F
++ __wcstod_internal F
++ __wcstof_internal F
++ __wcstol_internal F
++ __wcstold_internal F
++ __wcstoll_internal F
++ __wcstoul_internal F
++ __wcstoull_internal F
++ __write F
++ __xmknod F
++ __xpg_basename F
++ __xstat F
++ _exit F
++ _libc_intl_domainname D 0x5
++ _longjmp F
++ _mcleanup F
++ _mcount F
++ _nl_msg_cat_cntr D 0x4
++ _obstack_allocated_p F
++ _obstack_begin F
++ _obstack_begin_1 F
++ _obstack_free F
++ _obstack_memory_used F
++ _obstack_newchunk F
++ _rpc_dtablesize F
++ _seterr_reply F
++ _setjmp F
++ _tolower F
++ _toupper F
++ a64l F
++ abort F
++ abs F
++ accept F
++ access F
++ acct F
++ addmntent F
++ adjtime F
++ adjtimex F
++ advance F
++ alarm F
++ alphasort F
++ argz_add F
++ argz_add_sep F
++ argz_append F
++ argz_count F
++ argz_create F
++ argz_create_sep F
++ argz_delete F
++ argz_extract F
++ argz_insert F
++ argz_next F
++ argz_replace F
++ argz_stringify F
++ asctime F
++ asctime_r F
++ asprintf F
++ atof F
++ atoi F
++ atol F
++ atoll F
++ authnone_create F
++ authunix_create F
++ authunix_create_default F
++ basename F
++ bcmp F
++ bcopy F
++ bdflush F
++ bind F
++ bindresvport F
++ bindtextdomain F
++ brk F
++ bsd_signal F
++ bsearch F
++ btowc F
++ bzero F
++ calloc F
++ callrpc F
++ canonicalize_file_name F
++ catclose F
++ catgets F
++ catopen F
++ cfgetispeed F
++ cfgetospeed F
++ cfmakeraw F
++ cfree F
++ cfsetispeed F
++ cfsetospeed F
++ cfsetspeed F
++ chdir F
++ chflags F
++ chmod F
++ chroot F
++ clearenv F
++ clearerr F
++ clearerr_unlocked F
++ clnt_broadcast F
++ clnt_create F
++ clnt_pcreateerror F
++ clnt_perrno F
++ clnt_perror F
++ clnt_spcreateerror F
++ clnt_sperrno F
++ clnt_sperror F
++ clntraw_create F
++ clnttcp_create F
++ clntudp_bufcreate F
++ clntudp_create F
++ clock F
++ close F
++ closedir F
++ closelog F
++ confstr F
++ connect F
++ copysign F
++ copysignf F
++ copysignl F
++ creat F
++ create_module F
++ ctermid F
++ ctime F
++ ctime_r F
++ cuserid F
++ daemon F
++ daylight D 0x4
++ dcgettext F
++ delete_module F
++ dgettext F
++ difftime F
++ dirfd F
++ dirname F
++ div F
++ dprintf F
++ drand48 F
++ drand48_r F
++ dup F
++ dup2 F
++ dysize F
++ ecvt F
++ ecvt_r F
++ endaliasent F
++ endfsent F
++ endgrent F
++ endhostent F
++ endmntent F
++ endnetent F
++ endnetgrent F
++ endprotoent F
++ endpwent F
++ endrpcent F
++ endservent F
++ endspent F
++ endttyent F
++ endusershell F
++ endutent F
++ envz_add F
++ envz_entry F
++ envz_get F
++ envz_merge F
++ envz_remove F
++ envz_strip F
++ erand48 F
++ erand48_r F
++ err F
++ error F
++ error_at_line F
++ error_message_count D 0x4
++ error_one_per_line D 0x4
++ errx F
++ ether_aton F
++ ether_aton_r F
++ ether_hostton F
++ ether_line F
++ ether_ntoa F
++ ether_ntoa_r F
++ ether_ntohost F
++ euidaccess F
++ execl F
++ execle F
++ execlp F
++ execv F
++ execve F
++ execvp F
++ exit F
++ fchdir F
++ fchflags F
++ fchmod F
++ fchown F
++ fcloseall F
++ fcntl F
++ fcvt F
++ fcvt_r F
++ fdatasync F
++ feof F
++ feof_unlocked F
++ ferror F
++ ferror_unlocked F
++ fexecve F
++ fflush F
++ fflush_unlocked F
++ ffs F
++ fgetc F
++ fgetgrent F
++ fgetgrent_r F
++ fgetpwent F
++ fgetpwent_r F
++ fgets F
++ fgetspent F
++ fgetspent_r F
++ fileno F
++ fileno_unlocked F
++ finite F
++ finitef F
++ finitel F
++ flock F
++ flockfile F
++ fork F
++ fpathconf F
++ fprintf F
++ fputc F
++ fputc_unlocked F
++ fputs F
++ fread F
++ free F
++ freeaddrinfo F
++ freopen F
++ frexp F
++ frexpf F
++ frexpl F
++ fscanf F
++ fseek F
++ fstatfs F
++ fsync F
++ ftell F
++ ftime F
++ ftok F
++ ftruncate F
++ ftrylockfile F
++ fts_children F
++ fts_close F
++ fts_open F
++ fts_read F
++ fts_set F
++ ftw F
++ funlockfile F
++ fwrite F
++ gcvt F
++ get_avphys_pages F
++ get_current_dir_name F
++ get_kernel_syms F
++ get_myaddress F
++ get_nprocs F
++ get_nprocs_conf F
++ get_phys_pages F
++ getaddrinfo F
++ getaliasbyname F
++ getaliasent F
++ getc F
++ getc_unlocked F
++ getchar F
++ getchar_unlocked F
++ getcwd F
++ getdelim F
++ getdirentries F
++ getdomainname F
++ getdtablesize F
++ getegid F
++ getenv F
++ geteuid F
++ getfsent F
++ getfsfile F
++ getfsspec F
++ getgid F
++ getgrent F
++ getgrgid F
++ getgrnam F
++ getgroups F
++ gethostbyaddr F
++ gethostbyname F
++ gethostbyname2 F
++ gethostent F
++ gethostid F
++ gethostname F
++ getitimer F
++ getline F
++ getlogin F
++ getlogin_r F
++ getmntent F
++ getmntent_r F
++ getnetbyaddr F
++ getnetbyname F
++ getnetent F
++ getnetgrent F
++ getnetgrent_r F
++ getopt F
++ getopt_long F
++ getopt_long_only F
++ getpagesize F
++ getpass F
++ getpeername F
++ getpgid F
++ getpgrp F
++ getpid F
++ getppid F
++ getpriority F
++ getprotobyname F
++ getprotobynumber F
++ getprotoent F
++ getpublickey F
++ getpw F
++ getpwent F
++ getpwnam F
++ getpwuid F
++ getresgid F
++ getresuid F
++ getrpcbyname F
++ getrpcbynumber F
++ getrpcent F
++ getrpcport F
++ getrusage F
++ gets F
++ getsecretkey F
++ getservbyname F
++ getservbyport F
++ getservent F
++ getsid F
++ getsockname F
++ getsockopt F
++ getspent F
++ getspnam F
++ getsubopt F
++ gettext F
++ gettimeofday F
++ getttyent F
++ getttynam F
++ getuid F
++ getusershell F
++ getutent F
++ getutent_r F
++ getutid F
++ getutid_r F
++ getutline F
++ getutline_r F
++ getw F
++ getwd F
++ glob F
++ glob_pattern_p F
++ globfree F
++ gmtime F
++ gmtime_r F
++ group_member F
++ gsignal F
++ gtty F
++ h_nerr D 0x4
++ hasmntopt F
++ hcreate F
++ hcreate_r F
++ hdestroy F
++ hdestroy_r F
++ herror F
++ hsearch F
++ hsearch_r F
++ hstrerror F
++ htonl F
++ htons F
++ index F
++ inet_addr F
++ inet_aton F
++ inet_lnaof F
++ inet_makeaddr F
++ inet_netof F
++ inet_network F
++ inet_nsap_addr F
++ inet_nsap_ntoa F
++ inet_ntoa F
++ inet_ntop F
++ inet_pton F
++ init_module F
++ initgroups F
++ initstate F
++ initstate_r F
++ innetgr F
++ insque F
++ ioctl F
++ iruserok F
++ isalnum F
++ isalpha F
++ isascii F
++ isatty F
++ isblank F
++ iscntrl F
++ isdigit F
++ isfdtype F
++ isgraph F
++ isinf F
++ isinff F
++ isinfl F
++ islower F
++ isnan F
++ isnanf F
++ isnanl F
++ isprint F
++ ispunct F
++ isspace F
++ isupper F
++ iswalnum F
++ iswalpha F
++ iswcntrl F
++ iswctype F
++ iswdigit F
++ iswgraph F
++ iswlower F
++ iswprint F
++ iswpunct F
++ iswspace F
++ iswupper F
++ iswxdigit F
++ isxdigit F
++ jrand48 F
++ jrand48_r F
++ kill F
++ killpg F
++ klogctl F
++ l64a F
++ labs F
++ lchown F
++ lckpwdf F
++ lcong48 F
++ lcong48_r F
++ ldexp F
++ ldexpf F
++ ldexpl F
++ ldiv F
++ lfind F
++ link F
++ listen F
++ llabs F
++ lldiv F
++ llseek F
++ localtime F
++ localtime_r F
++ lockf F
++ longjmp F
++ lrand48 F
++ lrand48_r F
++ lsearch F
++ lseek F
++ madvise F
++ mallinfo F
++ malloc F
++ malloc_get_state F
++ malloc_set_state F
++ malloc_stats F
++ malloc_trim F
++ malloc_usable_size F
++ mallopt F
++ mblen F
++ mbrlen F
++ mbrtowc F
++ mbsinit F
++ mbsnrtowcs F
++ mbsrtowcs F
++ mbstowcs F
++ mbtowc F
++ mcheck F
++ memalign F
++ memccpy F
++ memchr F
++ memcmp F
++ memcpy F
++ memfrob F
++ memmem F
++ memmove F
++ memset F
++ mkdir F
++ mkfifo F
++ mkstemp F
++ mktemp F
++ mktime F
++ mlock F
++ mlockall F
++ mmap F
++ modf F
++ modff F
++ modfl F
++ monstartup F
++ mount F
++ mprobe F
++ mprotect F
++ mrand48 F
++ mrand48_r F
++ mremap F
++ msgget F
++ msgrcv F
++ msgsnd F
++ msync F
++ mtrace F
++ munlock F
++ munlockall F
++ munmap F
++ muntrace F
++ nanosleep F
++ nfsservctl F
++ nice F
++ nl_langinfo F
++ nrand48 F
++ nrand48_r F
++ ntohl F
++ ntohs F
++ obstack_exit_failure D 0x4
++ obstack_free F
++ obstack_printf F
++ obstack_vprintf F
++ on_exit F
++ open F
++ open_memstream F
++ opendir F
++ openlog F
++ opterr D 0x4
++ optind D 0x4
++ optopt D 0x4
++ parse_printf_format F
++ pathconf F
++ pause F
++ perror F
++ personality F
++ pipe F
++ pmap_getmaps F
++ pmap_getport F
++ pmap_rmtcall F
++ pmap_set F
++ pmap_unset F
++ poll F
++ prctl F
++ printf F
++ profil F
++ pselect F
++ psignal F
++ pthread_attr_destroy F
++ pthread_attr_getdetachstate F
++ pthread_attr_getinheritsched F
++ pthread_attr_getschedparam F
++ pthread_attr_getschedpolicy F
++ pthread_attr_getscope F
++ pthread_attr_setdetachstate F
++ pthread_attr_setinheritsched F
++ pthread_attr_setschedparam F
++ pthread_attr_setschedpolicy F
++ pthread_attr_setscope F
++ pthread_condattr_destroy F
++ pthread_condattr_init F
++ pthread_equal F
++ pthread_exit F
++ pthread_getschedparam F
++ pthread_mutex_destroy F
++ pthread_mutex_init F
++ pthread_mutex_lock F
++ pthread_mutex_unlock F
++ pthread_self F
++ pthread_setcancelstate F
++ pthread_setcanceltype F
++ pthread_setschedparam F
++ ptrace F
++ putc F
++ putc_unlocked F
++ putchar F
++ putchar_unlocked F
++ putenv F
++ putpwent F
++ puts F
++ putspent F
++ pututline F
++ putw F
++ pvalloc F
++ qecvt F
++ qecvt_r F
++ qfcvt F
++ qfcvt_r F
++ qgcvt F
++ qsort F
++ query_module F
++ quotactl F
++ raise F
++ rand F
++ rand_r F
++ random F
++ random_r F
++ rcmd F
++ re_comp F
++ re_compile_fastmap F
++ re_compile_pattern F
++ re_exec F
++ re_match F
++ re_match_2 F
++ re_search F
++ re_search_2 F
++ re_set_registers F
++ re_set_syntax F
++ read F
++ readdir F
++ readdir_r F
++ readlink F
++ readv F
++ realloc F
++ reboot F
++ recv F
++ recvfrom F
++ recvmsg F
++ regcomp F
++ regerror F
++ regexec F
++ regfree F
++ register_printf_function F
++ registerrpc F
++ remove F
++ remque F
++ rename F
++ revoke F
++ rewind F
++ rewinddir F
++ rexec F
++ rexecoptions D 0x4
++ rindex F
++ rmdir F
++ rpmatch F
++ rresvport F
++ ruserok F
++ ruserpass F
++ sbrk F
++ scalbn F
++ scalbnf F
++ scalbnl F
++ scandir F
++ scanf F
++ sched_get_priority_max F
++ sched_get_priority_min F
++ sched_getparam F
++ sched_getscheduler F
++ sched_rr_get_interval F
++ sched_setparam F
++ sched_setscheduler F
++ sched_yield F
++ seed48 F
++ seed48_r F
++ seekdir F
++ select F
++ semget F
++ semop F
++ send F
++ sendmsg F
++ sendto F
++ setaliasent F
++ setbuf F
++ setbuffer F
++ setcontext F
++ setdomainname F
++ setegid F
++ setenv F
++ seteuid F
++ setfsent F
++ setfsgid F
++ setfsuid F
++ setgid F
++ setgrent F
++ setgroups F
++ sethostent F
++ sethostid F
++ sethostname F
++ setitimer F
++ setjmp F
++ setlinebuf F
++ setlocale F
++ setlogin F
++ setlogmask F
++ setmntent F
++ setnetent F
++ setnetgrent F
++ setpgid F
++ setpgrp F
++ setpriority F
++ setprotoent F
++ setpwent F
++ setregid F
++ setresgid F
++ setresuid F
++ setreuid F
++ setrpcent F
++ setservent F
++ setsid F
++ setsockopt F
++ setspent F
++ setstate F
++ setstate_r F
++ settimeofday F
++ setttyent F
++ setuid F
++ setusershell F
++ setutent F
++ setvbuf F
++ sgetspent F
++ sgetspent_r F
++ shmat F
++ shmdt F
++ shmget F
++ shutdown F
++ sigaction F
++ sigaddset F
++ sigaltstack F
++ sigandset F
++ sigblock F
++ sigdelset F
++ sigemptyset F
++ sigfillset F
++ siggetmask F
++ siginterrupt F
++ sigisemptyset F
++ sigismember F
++ siglongjmp F
++ signal F
++ sigorset F
++ sigpause F
++ sigpending F
++ sigprocmask F
++ sigreturn F
++ sigsetmask F
++ sigstack F
++ sigsuspend F
++ sigvec F
++ sigwait F
++ sleep F
++ snprintf F
++ socket F
++ socketpair F
++ sprintf F
++ srand F
++ srand48 F
++ srand48_r F
++ srandom F
++ srandom_r F
++ sscanf F
++ ssignal F
++ sstk F
++ statfs F
++ step F
++ stime F
++ stpcpy F
++ stpncpy F
++ strcasecmp F
++ strcat F
++ strchr F
++ strcmp F
++ strcoll F
++ strcpy F
++ strcspn F
++ strdup F
++ strerror F
++ strerror_r F
++ strfmon F
++ strfry F
++ strftime F
++ strlen F
++ strncasecmp F
++ strncat F
++ strncmp F
++ strncpy F
++ strndup F
++ strnlen F
++ strpbrk F
++ strptime F
++ strrchr F
++ strsep F
++ strsignal F
++ strspn F
++ strstr F
++ strtod F
++ strtof F
++ strtok F
++ strtok_r F
++ strtol F
++ strtold F
++ strtoll F
++ strtoq F
++ strtoul F
++ strtoull F
++ strtouq F
++ strxfrm F
++ stty F
++ svc_exit F
++ svc_fdset D 0x80
++ svc_getreq F
++ svc_getreqset F
++ svc_register F
++ svc_run F
++ svc_sendreply F
++ svc_unregister F
++ svcerr_auth F
++ svcerr_decode F
++ svcerr_noproc F
++ svcerr_noprog F
++ svcerr_progvers F
++ svcerr_systemerr F
++ svcerr_weakauth F
++ svcfd_create F
++ svcraw_create F
++ svctcp_create F
++ svcudp_bufcreate F
++ svcudp_create F
++ svcudp_enablecache F
++ swab F
++ swapoff F
++ swapon F
++ symlink F
++ sync F
++ syscall F
++ sysconf F
++ sysctl F
++ sysinfo F
++ syslog F
++ system F
++ tcdrain F
++ tcflow F
++ tcflush F
++ tcgetattr F
++ tcgetpgrp F
++ tcsendbreak F
++ tcsetattr F
++ tcsetpgrp F
++ tdelete F
++ telldir F
++ tempnam F
++ textdomain F
++ tfind F
++ time F
++ timegm F
++ timelocal F
++ times F
++ tmpnam F
++ tmpnam_r F
++ toascii F
++ tolower F
++ toupper F
++ towctrans F
++ towlower F
++ towupper F
++ tr_break F
++ truncate F
++ tsearch F
++ ttyname F
++ ttyname_r F
++ ttyslot F
++ twalk F
++ tzset F
++ ualarm F
++ ulckpwdf F
++ ulimit F
++ umask F
++ umount F
++ uname F
++ ungetc F
++ unlink F
++ unsetenv F
++ updwtmp F
++ uselib F
++ usleep F
++ ustat F
++ utime F
++ utimes F
++ utmpname F
++ valloc F
++ vasprintf F
++ vdprintf F
++ verr F
++ verrx F
++ vfork F
++ vfprintf F
++ vfscanf F
++ vhangup F
++ vlimit F
++ vprintf F
++ vscanf F
++ vsnprintf F
++ vsprintf F
++ vsscanf F
++ vsyslog F
++ vtimes F
++ vwarn F
++ vwarnx F
++ wait F
++ wait3 F
++ wait4 F
++ waitpid F
++ warn F
++ warnx F
++ wcpcpy F
++ wcpncpy F
++ wcrtomb F
++ wcscat F
++ wcschr F
++ wcscmp F
++ wcscoll F
++ wcscpy F
++ wcscspn F
++ wcsdup F
++ wcslen F
++ wcsncat F
++ wcsncmp F
++ wcsncpy F
++ wcsnrtombs F
++ wcspbrk F
++ wcsrchr F
++ wcsrtombs F
++ wcsspn F
++ wcsstr F
++ wcstod F
++ wcstof F
++ wcstok F
++ wcstol F
++ wcstold F
++ wcstombs F
++ wcstoq F
++ wcstoul F
++ wcstouq F
++ wcswidth F
++ wcsxfrm F
++ wctob F
++ wctomb F
++ wctrans F
++ wctype F
++ wcwidth F
++ wmemchr F
++ wmemcmp F
++ wmemcpy F
++ wmemmove F
++ wmemset F
++ write F
++ writev F
++ xdr_accepted_reply F
++ xdr_array F
++ xdr_authunix_parms F
++ xdr_bool F
++ xdr_bytes F
++ xdr_callhdr F
++ xdr_callmsg F
++ xdr_char F
++ xdr_cryptkeyarg F
++ xdr_cryptkeyarg2 F
++ xdr_cryptkeyres F
++ xdr_des_block F
++ xdr_double F
++ xdr_enum F
++ xdr_float F
++ xdr_free F
++ xdr_int F
++ xdr_key_netstarg F
++ xdr_key_netstres F
++ xdr_keybuf F
++ xdr_keystatus F
++ xdr_long F
++ xdr_netobj F
++ xdr_opaque F
++ xdr_opaque_auth F
++ xdr_pmap F
++ xdr_pmaplist F
++ xdr_pointer F
++ xdr_reference F
++ xdr_rejected_reply F
++ xdr_replymsg F
++ xdr_rmtcall_args F
++ xdr_rmtcallres F
++ xdr_short F
++ xdr_string F
++ xdr_u_char F
++ xdr_u_int F
++ xdr_u_long F
++ xdr_u_short F
++ xdr_union F
++ xdr_vector F
++ xdr_void F
++ xdr_wrapstring F
++ xdrmem_create F
++ xdrrec_create F
++ xdrrec_endofrecord F
++ xdrrec_eof F
++ xdrrec_skiprecord F
++ xdrstdio_create F
++ xencrypt F
++ xprt_register F
++ xprt_unregister F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __fork F
++ _nl_default_dirname D 0x12
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __bzero F
++ __clone F
++ clone F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls
++ __divdi3 F
++ __moddi3 F
++ __udivdi3 F
++ __umoddi3 F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ atexit F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++ __deregister_frame F
++ __frame_state_for F
++ __register_frame F
++ __register_frame_info_table F
++ __register_frame_table F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ __deregister_frame_info F
++ __register_frame_info F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ _IO_file_jumps D 0x54
++ _IO_list_all D 0x4
++ __after_morecore_hook D 0x4
++ __ctype32_b D 0x4
++ __ctype_b D 0x4
++ __ctype_tolower D 0x4
++ __ctype_toupper D 0x4
++ __curbrk D 0x4
++ __environ D 0x4
++ __free_hook D 0x4
++ __malloc_hook D 0x4
++ __malloc_initialize_hook D 0x4
++ __memalign_hook D 0x4
++ __morecore D 0x4
++ __progname D 0x4
++ __progname_full D 0x4
++ __rcmd_errstr D 0x4
++ __realloc_hook D 0x4
++ __timezone D 0x4
++ __tzname D 0x8
++ _environ D 0x4
++ _nl_domain_bindings D 0x4
++ _null_auth D 0xc
++ _obstack D 0x4
++ environ D 0x4
++ error_print_progname D 0x4
++ h_errlist D 0x14
++ loc1 D 0x4
++ loc2 D 0x4
++ locs D 0x4
++ mallwatch D 0x4
++ obstack_alloc_failed_handler D 0x4
++ optarg D 0x4
++ program_invocation_name D 0x4
++ program_invocation_short_name D 0x4
++ re_syntax_options D 0x4
++ rpc_createerr D 0x10
++ stderr D 0x4
++ stdin D 0x4
++ stdout D 0x4
++ svcauthdes_stats D 0xc
++ timezone D 0x4
++ tzname D 0x8
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls
++ ___brk_addr D 0x4
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ mcount F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls
++ ioperm F
++ iopl F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls
++ _errno D 0x4
++ _h_errno D 0x4
++ errno D 0x4
++ h_errno D 0x4
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 sh[34].*-.*-linux.*/notls
++ _res D 0x200
++GLIBC_2.0 m68.*-.*-linux.*/notls
++ _res D 0x1fe
++ cacheflush F
++GLIBC_2.0 m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __fpu_control D 0x4
++GLIBC_2.0 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
++ __ashldi3 F
++ __ashrdi3 F
++ __cmpdi2 F
++ __fixdfdi F
++ __fixsfdi F
++ __fixunsdfdi F
++ __fixunssfdi F
++ __floatdidf F
++ __floatdisf F
++ __lshrdi3 F
++ __ucmpdi2 F
++GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
++ __memcpy_by2 F
++ __memcpy_by4 F
++ __memcpy_g F
++ __mempcpy_by2 F
++ __mempcpy_by4 F
++ __mempcpy_byn F
++ __memset_ccn_by2 F
++ __memset_ccn_by4 F
++ __memset_gcn_by2 F
++ __memset_gcn_by4 F
++ __stpcpy_g F
++ __strcat_c F
++ __strcat_g F
++ __strchr_c F
++ __strchr_g F
++ __strchrnul_c F
++ __strchrnul_g F
++ __strcmp_gg F
++ __strcpy_g F
++ __strcspn_cg F
++ __strcspn_g F
++ __strlen_g F
++ __strncat_g F
++ __strncmp_g F
++ __strncpy_by2 F
++ __strncpy_by4 F
++ __strncpy_byn F
++ __strncpy_gg F
++ __strpbrk_cg F
++ __strpbrk_g F
++ __strrchr_c F
++ __strrchr_g F
++ __strspn_cg F
++ __strspn_g F
++ __strstr_cg F
++ __strstr_g F
++GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1.1 A
++GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _Exit F
++ __mempcpy_small F
++ __stpcpy_small F
++ __strcpy_small F
++ __strcspn_c1 F
++ __strcspn_c2 F
++ __strcspn_c3 F
++ __strpbrk_c2 F
++ __strpbrk_c3 F
++ __strsep_1c F
++ __strsep_2c F
++ __strsep_3c F
++ __strsep_g F
++ __strspn_c1 F
++ __strspn_c2 F
++ __strspn_c3 F
++ __strtok_r_1c F
++ __strverscmp F
++ getutmp F
++ getutmpx F
++ imaxabs F
++ imaxdiv F
++ strchrnul F
++ xdr_hyper F
++ xdr_int64_t F
++ xdr_longlong_t F
++ xdr_u_hyper F
++ xdr_u_longlong_t F
++ xdr_uint64_t F
++GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1.2 A
++GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __vfork F
++GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1.3 A
++GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __cxa_atexit F
++ __cxa_finalize F
++ __sigsuspend F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
++ scalbln F
++ scalblnf F
++ scalblnl F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.2 ia64-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ wordexp F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_fgetpos64 F
++ _IO_fsetpos64 F
++ __fxstat64 F
++ __lxstat64 F
++ __xstat64 F
++ fgetpos64 F
++ fsetpos64 F
++ getrlimit64 F
++ readdir64 F
++ readdir64_r F
++ scandir64 F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ glob64 F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ alphasort64 F
++ versionsort64 F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_file_finish F
++ _IO_getline_info F
++ __asprintf F
++ __backtrace F
++ __backtrace_symbols F
++ __backtrace_symbols_fd F
++ __duplocale F
++ __freelocale F
++ __isalnum_l F
++ __isalpha_l F
++ __isascii_l F
++ __isblank_l F
++ __iscntrl_l F
++ __isdigit_l F
++ __isgraph_l F
++ __islower_l F
++ __isprint_l F
++ __ispunct_l F
++ __isspace_l F
++ __isupper_l F
++ __iswalnum_l F
++ __iswalpha_l F
++ __iswblank_l F
++ __iswcntrl_l F
++ __iswctype_l F
++ __iswdigit_l F
++ __iswgraph_l F
++ __iswlower_l F
++ __iswprint_l F
++ __iswpunct_l F
++ __iswspace_l F
++ __iswupper_l F
++ __iswxdigit_l F
++ __isxdigit_l F
++ __libc_allocate_rtsig F
++ __libc_current_sigrtmax F
++ __libc_current_sigrtmin F
++ __libc_freeres F
++ __libc_sa_len F
++ __newlocale F
++ __poll F
++ __pread64 F
++ __pwrite64 F
++ __rawmemchr F
++ __signbit F
++ __signbitf F
++ __strcasecmp_l F
++ __strcasestr F
++ __strcoll_l F
++ __strfmon_l F
++ __strncasecmp_l F
++ __strtod_l F
++ __strtof_l F
++ __strtol_l F
++ __strtold_l F
++ __strtoll_l F
++ __strtoul_l F
++ __strtoull_l F
++ __strxfrm_l F
++ __toascii_l F
++ __tolower_l F
++ __toupper_l F
++ __towctrans F
++ __towctrans_l F
++ __towlower_l F
++ __towupper_l F
++ __wcscasecmp_l F
++ __wcscoll_l F
++ __wcsncasecmp_l F
++ __wcstod_l F
++ __wcstof_l F
++ __wcstol_l F
++ __wcstold_l F
++ __wcstoll_l F
++ __wcstoul_l F
++ __wcstoull_l F
++ __wcsxfrm_l F
++ __wctype_l F
++ _argp_unlock_xxx F
++ _authenticate F
++ _dl_mcount_wrapper F
++ _dl_mcount_wrapper_check F
++ addseverity F
++ argp_err_exit_status D 0x4
++ argp_error F
++ argp_failure F
++ argp_help F
++ argp_parse F
++ argp_state_help F
++ argp_usage F
++ authdes_create F
++ authdes_getucred F
++ authdes_pk_create F
++ backtrace F
++ backtrace_symbols F
++ backtrace_symbols_fd F
++ capget F
++ capset F
++ cbc_crypt F
++ clntunix_create F
++ creat64 F
++ des_setparity F
++ ecb_crypt F
++ endutxent F
++ fattach F
++ fdetach F
++ ffsl F
++ ffsll F
++ fgetc_unlocked F
++ fgets_unlocked F
++ fmtmsg F
++ fopen64 F
++ fputs_unlocked F
++ fread_unlocked F
++ freopen64 F
++ fseeko F
++ fseeko64 F
++ fstatfs64 F
++ fstatvfs F
++ fstatvfs64 F
++ ftello F
++ ftello64 F
++ ftruncate64 F
++ ftw64 F
++ fwrite_unlocked F
++ gai_strerror F
++ getcontext F
++ getdate F
++ getdate_err D 0x4
++ getdate_r F
++ getmsg F
++ getnameinfo F
++ getnetname F
++ getpmsg F
++ getpt F
++ getutxent F
++ getutxid F
++ getutxline F
++ globfree64 F
++ gnu_get_libc_release F
++ gnu_get_libc_version F
++ grantpt F
++ host2netname F
++ iconv F
++ iconv_close F
++ iconv_open F
++ if_freenameindex F
++ if_indextoname F
++ if_nameindex F
++ if_nametoindex F
++ in6addr_any D 0x10
++ in6addr_loopback D 0x10
++ isastream F
++ iswblank F
++ key_decryptsession F
++ key_decryptsession_pk F
++ key_encryptsession F
++ key_encryptsession_pk F
++ key_gendes F
++ key_get_conv F
++ key_secretkey_is_set F
++ key_setnet F
++ key_setsecret F
++ lockf64 F
++ lseek64 F
++ makecontext F
++ mempcpy F
++ mmap64 F
++ netname2host F
++ netname2user F
++ nftw F
++ nftw64 F
++ ntp_adjtime F
++ ntp_gettime F
++ open64 F
++ passwd2des F
++ pread F
++ pread64 F
++ printf_size F
++ printf_size_info F
++ ptsname F
++ ptsname_r F
++ putgrent F
++ putmsg F
++ putpmsg F
++ pututxline F
++ pwrite F
++ pwrite64 F
++ rawmemchr F
++ rtime F
++ sendfile F
++ setrlimit64 F
++ setutxent F
++ sighold F
++ sigignore F
++ sigqueue F
++ sigrelse F
++ sigset F
++ sigtimedwait F
++ sigwaitinfo F
++ statfs64 F
++ statvfs F
++ statvfs64 F
++ strcasestr F
++ strtoimax F
++ strtoumax F
++ strverscmp F
++ svcunix_create F
++ svcunixfd_create F
++ swapcontext F
++ sysv_signal F
++ tcgetsid F
++ tdestroy F
++ tmpfile64 F
++ truncate64 F
++ umount2 F
++ unlockpt F
++ updwtmpx F
++ user2netname F
++ utmpxname F
++ versionsort F
++ waitid F
++ wcscasecmp F
++ wcsncasecmp F
++ wcsnlen F
++ wcstoimax F
++ wcstoll F
++ wcstoull F
++ wcstoumax F
++ wcswcs F
++ wordfree F
++ xdecrypt F
++ xdr_authdes_cred F
++ xdr_authdes_verf F
++ xdr_getcredres F
++ xdr_int16_t F
++ xdr_int32_t F
++ xdr_int8_t F
++ xdr_netnamestr F
++ xdr_sizeof F
++ xdr_uint16_t F
++ xdr_uint32_t F
++ xdr_uint8_t F
++ xdr_unixcred F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ __key_decryptsession_pk_LOCAL D 0x4
++ __key_encryptsession_pk_LOCAL D 0x4
++ __key_gendes_LOCAL D 0x4
++ _sys_errlist D 0x1f4
++ _sys_siglist D 0x100
++ argp_program_bug_address D 0x4
++ argp_program_version D 0x4
++ argp_program_version_hook D 0x4
++ sys_errlist D 0x1f4
++ sys_sigabbrev D 0x100
++ sys_siglist D 0x100
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls
++ __signbitl F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
++| GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ _IO_2_1_stderr_ D 0x98
++ _IO_2_1_stdin_ D 0x98
++ _IO_2_1_stdout_ D 0x98
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ modify_ldt F
++GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ _IO_2_1_stderr_ D 0xa0
++ _IO_2_1_stdin_ D 0xa0
++ _IO_2_1_stdout_ D 0xa0
++GLIBC_2.1 s390-.*-linux.*/tls
++ __chown F
++GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.1 A
++GLIBC_2.2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ pivot_root F
++ posix_openpt F
++GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.2 A
++GLIBC_2.2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __nss_hostname_digits_dots F
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.3 A
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __rpc_thread_createerr F
++ __rpc_thread_svc_fdset F
++ __rpc_thread_svc_max_pollfd F
++ __rpc_thread_svc_pollfd F
++ sprofil F
++GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.4 A
++GLIBC_2.2.4 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ dl_iterate_phdr F
++ getgrouplist F
++ sockatmark F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++ __arch_prctl F
++ arch_prctl F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_adjust_wcolumn F
++ _IO_free_wbackup_area F
++ _IO_init_wmarker F
++ _IO_iter_begin F
++ _IO_iter_end F
++ _IO_iter_file F
++ _IO_iter_next F
++ _IO_least_wmarker F
++ _IO_list_lock F
++ _IO_list_resetlock F
++ _IO_list_unlock F
++ _IO_seekwmark F
++ _IO_sputbackwc F
++ _IO_sungetwc F
++ _IO_switch_to_main_wget_area F
++ _IO_switch_to_wbackup_area F
++ _IO_switch_to_wget_mode F
++ _IO_unsave_wmarkers F
++ _IO_wdefault_doallocate F
++ _IO_wdefault_finish F
++ _IO_wdefault_pbackfail F
++ _IO_wdefault_uflow F
++ _IO_wdefault_xsgetn F
++ _IO_wdefault_xsputn F
++ _IO_wdo_write F
++ _IO_wdoallocbuf F
++ _IO_wfile_overflow F
++ _IO_wfile_seekoff F
++ _IO_wfile_sync F
++ _IO_wfile_underflow F
++ _IO_wfile_xsputn F
++ _IO_wmarker_delta F
++ _IO_wsetb F
++ __assert F
++ __cyg_profile_func_enter F
++ __cyg_profile_func_exit F
++ __endmntent F
++ __fbufsize F
++ __flbf F
++ __fpending F
++ __fpurge F
++ __freadable F
++ __freading F
++ __fsetlocking F
++ __fwritable F
++ __fwriting F
++ __getmntent_r F
++ __nl_langinfo_l F
++ __open64 F
++ __res_init F
++ __res_nclose F
++ __res_ninit F
++ __res_state F
++ __setmntent F
++ __statfs F
++ __strndup F
++ __sysconf F
++ __sysctl F
++ __wctrans_l F
++ __woverflow F
++ __wuflow F
++ __wunderflow F
++ __xpg_sigpause F
++ _flushlbf F
++ bind_textdomain_codeset F
++ dcngettext F
++ dngettext F
++ fgetwc F
++ fgetwc_unlocked F
++ fgetws F
++ fgetws_unlocked F
++ fmemopen F
++ fputwc F
++ fputwc_unlocked F
++ fputws F
++ fputws_unlocked F
++ fwide F
++ fwprintf F
++ fwscanf F
++ getdirentries64 F
++ getloadavg F
++ getwc F
++ getwc_unlocked F
++ getwchar F
++ getwchar_unlocked F
++ iruserok_af F
++ mcheck_check_all F
++ mcheck_pedantic F
++ memrchr F
++ mincore F
++ mkdtemp F
++ mkstemp64 F
++ moncontrol F
++ ngettext F
++ posix_fadvise F
++ posix_fadvise64 F
++ posix_fallocate F
++ posix_fallocate64 F
++ posix_madvise F
++ posix_memalign F
++ posix_spawn F
++ posix_spawn_file_actions_addclose F
++ posix_spawn_file_actions_adddup2 F
++ posix_spawn_file_actions_addopen F
++ posix_spawn_file_actions_destroy F
++ posix_spawn_file_actions_init F
++ posix_spawnattr_destroy F
++ posix_spawnattr_getflags F
++ posix_spawnattr_getpgroup F
++ posix_spawnattr_getschedparam F
++ posix_spawnattr_getschedpolicy F
++ posix_spawnattr_getsigdefault F
++ posix_spawnattr_getsigmask F
++ posix_spawnattr_init F
++ posix_spawnattr_setflags F
++ posix_spawnattr_setpgroup F
++ posix_spawnattr_setschedparam F
++ posix_spawnattr_setschedpolicy F
++ posix_spawnattr_setsigdefault F
++ posix_spawnattr_setsigmask F
++ posix_spawnp F
++ putwc F
++ putwc_unlocked F
++ putwchar F
++ putwchar_unlocked F
++ rcmd_af F
++ rexec_af F
++ rresvport_af F
++ ruserok_af F
++ svc_getreq_common F
++ svc_getreq_poll F
++ svc_max_pollfd D 0x4
++ swprintf F
++ swscanf F
++ ungetwc F
++ vfwprintf F
++ vfwscanf F
++ vswprintf F
++ vswscanf F
++ vwprintf F
++ vwscanf F
++ wcschrnul F
++ wcsftime F
++ wmempcpy F
++ wprintf F
++ wscanf F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++ __ctype32_b D 0x8
++ __ctype32_tolower D 0x8
++ __ctype32_toupper D 0x8
++ __ctype_b D 0x8
++ __ctype_tolower D 0x8
++ __ctype_toupper D 0x8
++ _res D 0x238
++ _sys_errlist D 0x3e8
++ sys_errlist D 0x3e8
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_2_1_stderr_ D 0xe0
++ _IO_2_1_stdin_ D 0xe0
++ _IO_2_1_stdout_ D 0xe0
++ _IO_file_jumps D 0xa8
++ _IO_list_all D 0x8
++ _IO_wfile_jumps D 0xa8
++ __after_morecore_hook D 0x8
++ __curbrk D 0x8
++ __environ D 0x8
++ __free_hook D 0x8
++ __key_decryptsession_pk_LOCAL D 0x8
++ __key_encryptsession_pk_LOCAL D 0x8
++ __key_gendes_LOCAL D 0x8
++ __malloc_hook D 0x8
++ __malloc_initialize_hook D 0x8
++ __memalign_hook D 0x8
++ __morecore D 0x8
++ __progname D 0x8
++ __progname_full D 0x8
++ __rcmd_errstr D 0x8
++ __realloc_hook D 0x8
++ __timezone D 0x8
++ __tzname D 0x10
++ _environ D 0x8
++ _nl_domain_bindings D 0x8
++ _null_auth D 0x18
++ _obstack D 0x8
++ _res_hconf D 0x48
++ _sys_siglist D 0x200
++ argp_program_bug_address D 0x8
++ argp_program_version D 0x8
++ argp_program_version_hook D 0x8
++ environ D 0x8
++ error_print_progname D 0x8
++ h_errlist D 0x28
++ loc1 D 0x8
++ loc2 D 0x8
++ locs D 0x8
++ mallwatch D 0x8
++ obstack_alloc_failed_handler D 0x8
++ optarg D 0x8
++ program_invocation_name D 0x8
++ program_invocation_short_name D 0x8
++ re_syntax_options D 0x8
++ rpc_createerr D 0x20
++ stderr D 0x8
++ stdin D 0x8
++ stdout D 0x8
++ svc_pollfd D 0x8
++ svcauthdes_stats D 0x18
++ sys_sigabbrev D 0x200
++ sys_siglist D 0x200
++ timezone D 0x8
++ tzname D 0x10
++GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.2.6 A
++GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __nanosleep F
++GLIBC_2.2.6 ia64-.*-linux.*/tls
++ getunwind F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ __ctype32_tolower D 0x4
++ __ctype32_toupper D 0x4
++ _res_hconf D 0x30
++ svc_pollfd D 0x4
++GLIBC_2.2 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ _IO_wfile_jumps D 0x54
++GLIBC_2.2 ia64-.*-linux.*/tls
++ __clone2 F
++ __divdf3 F
++ __divsf3 F
++ __divtf3 F
++ __multi3 F
++ _inb F
++ _inl F
++ _inw F
++ _outb F
++ _outl F
++ _outw F
++ inb F
++ inl F
++ inw F
++ outb F
++ outw F
++ pciconfig_read F
++ pciconfig_write F
++GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls
++ ___brk_addr D 0x8
++GLIBC_2.2 sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ _nl_default_dirname D 0x20
++GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3.2 A
++ __register_atfork F
++ lchmod F
++ sched_getaffinity F
++ sched_setaffinity F
++ strptime_l F
++GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
++ epoll_create F
++ epoll_ctl F
++ epoll_wait F
++GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3.3 A
++ remap_file_pages F
++GLIBC_2.3.3 i.86-.*-linux.*/thread i.86-.*-linux.*/tls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
++ _sys_siglist D 0x104
++ sys_sigabbrev D 0x104
++ sys_siglist D 0x104
++GLIBC_2.3.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
++| GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ strtoll_l F
++ strtoull_l F
++GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3 A
++ __ctype_b_loc F
++ __ctype_tolower_loc F
++ __ctype_toupper_loc F
++ __isctype F
++ __strftime_l F
++ __uselocale F
++ __wcsftime_l F
++ duplocale F
++ fgetxattr F
++ flistxattr F
++ freeifaddrs F
++ freelocale F
++ fremovexattr F
++ fsetxattr F
++ futimes F
++ getifaddrs F
++ getxattr F
++ isalnum_l F
++ isalpha_l F
++ isblank_l F
++ iscntrl_l F
++ isctype F
++ isdigit_l F
++ isgraph_l F
++ islower_l F
++ isprint_l F
++ ispunct_l F
++ isspace_l F
++ isupper_l F
++ iswalnum_l F
++ iswalpha_l F
++ iswblank_l F
++ iswcntrl_l F
++ iswctype_l F
++ iswdigit_l F
++ iswgraph_l F
++ iswlower_l F
++ iswprint_l F
++ iswpunct_l F
++ iswspace_l F
++ iswupper_l F
++ iswxdigit_l F
++ isxdigit_l F
++ lgetxattr F
++ listxattr F
++ llistxattr F
++ lremovexattr F
++ lsetxattr F
++ lutimes F
++ newlocale F
++ nl_langinfo_l F
++ readahead F
++ removexattr F
++ sendfile64 F
++ setxattr F
++ strcasecmp_l F
++ strcoll_l F
++ strfmon_l F
++ strftime_l F
++ strncasecmp_l F
++ strtod_l F
++ strtof_l F
++ strtol_l F
++ strtold_l F
++ strtoul_l F
++ strxfrm_l F
++ tolower_l F
++ toupper_l F
++ towctrans_l F
++ towlower_l F
++ towupper_l F
++ uselocale F
++ wcscasecmp_l F
++ wcscoll_l F
++ wcsftime_l F
++ wcsncasecmp_l F
++ wcstod_l F
++ wcstof_l F
++ wcstol_l F
++ wcstold_l F
++ wcstoll_l F
++ wcstoul_l F
++ wcstoull_l F
++ wcsxfrm_l F
++ wctrans_l F
++ wctype_l F
++GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ _sys_errlist D 0x1f8
++ sys_errlist D 0x1f8
++GLIBC_2.3 ia64-.*-linux.*/tls powerpc64-.*-linux.*/thread s390x-.*-linux.*/tls x86_64-.*-linux.*/tls
++ _sys_errlist D 0x3f0
++ sys_errlist D 0x3f0
+--- glibc-2.3.2/abilist/libcrypt.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libcrypt.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,19 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ crypt F
++ crypt_r F
++ encrypt F
++ encrypt_r F
++ fcrypt F
++ setkey F
++ setkey_r F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2 s390x-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libdl.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libdl.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,33 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ dlopen F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ dladdr F
++ dlclose F
++ dlerror F
++ dlsym F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ dlvsym F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2 s390x-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3.3 A
++ dladdr1 F
++ dlinfo F
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libm.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libm.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,355 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _LIB_VERSION D 0x4
++ acos F
++ acosf F
++ acosh F
++ acoshf F
++ acoshl F
++ acosl F
++ asin F
++ asinf F
++ asinh F
++ asinhf F
++ asinhl F
++ asinl F
++ atan F
++ atan2 F
++ atan2f F
++ atan2l F
++ atanf F
++ atanh F
++ atanhf F
++ atanhl F
++ atanl F
++ cbrt F
++ cbrtf F
++ cbrtl F
++ ceil F
++ ceilf F
++ ceill F
++ copysign F
++ copysignf F
++ copysignl F
++ cos F
++ cosf F
++ cosh F
++ coshf F
++ coshl F
++ cosl F
++ drem F
++ dremf F
++ dreml F
++ erf F
++ erfc F
++ erfcf F
++ erfcl F
++ erff F
++ erfl F
++ exp F
++ expf F
++ expl F
++ expm1 F
++ expm1f F
++ expm1l F
++ fabs F
++ fabsf F
++ fabsl F
++ finite F
++ finitef F
++ finitel F
++ floor F
++ floorf F
++ floorl F
++ fmod F
++ fmodf F
++ fmodl F
++ frexp F
++ frexpf F
++ frexpl F
++ gamma F
++ gammaf F
++ gammal F
++ hypot F
++ hypotf F
++ hypotl F
++ ilogb F
++ ilogbf F
++ ilogbl F
++ j0 F
++ j0f F
++ j0l F
++ j1 F
++ j1f F
++ j1l F
++ jn F
++ jnf F
++ jnl F
++ ldexp F
++ ldexpf F
++ ldexpl F
++ lgamma F
++ lgamma_r F
++ lgammaf F
++ lgammaf_r F
++ lgammal F
++ lgammal_r F
++ log F
++ log10 F
++ log10f F
++ log10l F
++ log1p F
++ log1pf F
++ log1pl F
++ logb F
++ logbf F
++ logbl F
++ logf F
++ logl F
++ matherr F
++ modf F
++ modff F
++ modfl F
++ nextafter F
++ nextafterf F
++ nextafterl F
++ pow F
++ powf F
++ powl F
++ remainder F
++ remainderf F
++ remainderl F
++ rint F
++ rintf F
++ rintl F
++ scalb F
++ scalbf F
++ scalbl F
++ scalbn F
++ scalbnf F
++ scalbnl F
++ signgam D 0x4
++ significand F
++ significandf F
++ significandl F
++ sin F
++ sinf F
++ sinh F
++ sinhf F
++ sinhl F
++ sinl F
++ sqrt F
++ sqrtf F
++ sqrtl F
++ tan F
++ tanf F
++ tanh F
++ tanhf F
++ tanhl F
++ tanl F
++ y0 F
++ y0f F
++ y0l F
++ y1 F
++ y1f F
++ y1l F
++ yn F
++ ynf F
++ ynl F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ feclearexcept F
++ fegetenv F
++ fegetexceptflag F
++ feraiseexcept F
++ fesetenv F
++ fesetexceptflag F
++ feupdateenv F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __clog10 F
++ __clog10f F
++ __clog10l F
++ __finite F
++ __finitef F
++ __finitel F
++ __fpclassify F
++ __fpclassifyf F
++ __signbit F
++ __signbitf F
++ cabs F
++ cabsf F
++ cabsl F
++ cacos F
++ cacosf F
++ cacosh F
++ cacoshf F
++ cacoshl F
++ cacosl F
++ carg F
++ cargf F
++ cargl F
++ casin F
++ casinf F
++ casinh F
++ casinhf F
++ casinhl F
++ casinl F
++ catan F
++ catanf F
++ catanh F
++ catanhf F
++ catanhl F
++ catanl F
++ ccos F
++ ccosf F
++ ccosh F
++ ccoshf F
++ ccoshl F
++ ccosl F
++ cexp F
++ cexpf F
++ cexpl F
++ cimag F
++ cimagf F
++ cimagl F
++ clog F
++ clog10 F
++ clog10f F
++ clog10l F
++ clogf F
++ clogl F
++ conj F
++ conjf F
++ conjl F
++ cpow F
++ cpowf F
++ cpowl F
++ cproj F
++ cprojf F
++ cprojl F
++ creal F
++ crealf F
++ creall F
++ csin F
++ csinf F
++ csinh F
++ csinhf F
++ csinhl F
++ csinl F
++ csqrt F
++ csqrtf F
++ csqrtl F
++ ctan F
++ ctanf F
++ ctanh F
++ ctanhf F
++ ctanhl F
++ ctanl F
++ exp10 F
++ exp10f F
++ exp10l F
++ exp2 F
++ exp2f F
++ fdim F
++ fdimf F
++ fdiml F
++ fegetround F
++ feholdexcept F
++ fesetround F
++ fetestexcept F
++ fma F
++ fmaf F
++ fmal F
++ fmax F
++ fmaxf F
++ fmaxl F
++ fmin F
++ fminf F
++ fminl F
++ llrint F
++ llrintf F
++ llrintl F
++ llround F
++ llroundf F
++ llroundl F
++ log2 F
++ log2f F
++ log2l F
++ lrint F
++ lrintf F
++ lrintl F
++ lround F
++ lroundf F
++ lroundl F
++ nan F
++ nanf F
++ nanl F
++ nearbyint F
++ nearbyintf F
++ nearbyintl F
++ nexttoward F
++ nexttowardf F
++ nexttowardl F
++ pow10 F
++ pow10f F
++ pow10l F
++ remquo F
++ remquof F
++ remquol F
++ round F
++ roundf F
++ roundl F
++ scalbln F
++ scalblnf F
++ scalblnl F
++ sincos F
++ sincosf F
++ sincosl F
++ tgamma F
++ tgammaf F
++ tgammal F
++ trunc F
++ truncf F
++ truncl F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls
++ __fpclassifyl F
++ __signbitl F
++ exp2l F
++GLIBC_2.1 powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __fe_dfl_env D 0x8
++ __fe_enabled_env D 0x8
++ __fe_nomask_env F
++ __fe_nonieee_env D 0x8
++GLIBC_2.2.3 ia64-.*-linux.*/tls
++ GLIBC_2.2.3 A
++ matherrf F
++ matherrl F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ fedisableexcept F
++ feenableexcept F
++ fegetexcept F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls
++ __expl F
++ __expm1l F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libnsl.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libnsl.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,142 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __yp_check F
++ xdr_domainname F
++ xdr_keydat F
++ xdr_mapname F
++ xdr_peername F
++ xdr_valdat F
++ xdr_yp_buf F
++ xdr_ypbind_binding F
++ xdr_ypbind_resp F
++ xdr_ypbind_resptype F
++ xdr_ypbind_setdom F
++ xdr_ypdelete_args F
++ xdr_ypmap_parms F
++ xdr_ypmaplist F
++ xdr_yppush_status F
++ xdr_yppushresp_xfr F
++ xdr_ypreq_key F
++ xdr_ypreq_nokey F
++ xdr_ypreq_xfr F
++ xdr_ypresp_all F
++ xdr_ypresp_key_val F
++ xdr_ypresp_maplist F
++ xdr_ypresp_master F
++ xdr_ypresp_order F
++ xdr_ypresp_val F
++ xdr_ypresp_xfr F
++ xdr_ypstat F
++ xdr_ypupdate_args F
++ xdr_ypxfrstat F
++ yp_all F
++ yp_bind F
++ yp_first F
++ yp_get_default_domain F
++ yp_maplist F
++ yp_master F
++ yp_match F
++ yp_next F
++ yp_order F
++ yp_unbind F
++ yp_update F
++ ypbinderr_string F
++ yperr_string F
++ ypprot_err F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __free_fdresult F
++ __nis_default_access F
++ __nis_default_group F
++ __nis_default_owner F
++ __nis_default_ttl F
++ __nis_finddirectory F
++ __nis_hash F
++ __nisbind_connect F
++ __nisbind_create F
++ __nisbind_destroy F
++ __nisbind_next F
++ nis_add F
++ nis_add_entry F
++ nis_addmember F
++ nis_checkpoint F
++ nis_clone_directory F
++ nis_clone_object F
++ nis_clone_result F
++ nis_creategroup F
++ nis_destroy_object F
++ nis_destroygroup F
++ nis_dir_cmp F
++ nis_domain_of F
++ nis_domain_of_r F
++ nis_first_entry F
++ nis_free_directory F
++ nis_free_object F
++ nis_free_request F
++ nis_freenames F
++ nis_freeresult F
++ nis_freeservlist F
++ nis_freetags F
++ nis_getnames F
++ nis_getservlist F
++ nis_ismember F
++ nis_leaf_of F
++ nis_leaf_of_r F
++ nis_lerror F
++ nis_list F
++ nis_local_directory F
++ nis_local_group F
++ nis_local_host F
++ nis_local_principal F
++ nis_lookup F
++ nis_mkdir F
++ nis_modify F
++ nis_modify_entry F
++ nis_name_of F
++ nis_name_of_r F
++ nis_next_entry F
++ nis_perror F
++ nis_ping F
++ nis_print_directory F
++ nis_print_entry F
++ nis_print_group F
++ nis_print_group_entry F
++ nis_print_link F
++ nis_print_object F
++ nis_print_result F
++ nis_print_rights F
++ nis_print_table F
++ nis_read_obj F
++ nis_remove F
++ nis_remove_entry F
++ nis_removemember F
++ nis_rmdir F
++ nis_servstate F
++ nis_sperrno F
++ nis_sperror F
++ nis_sperror_r F
++ nis_stats F
++ nis_verifygroup F
++ nis_write_obj F
++ readColdStartFile F
++ writeColdStartFile F
++ xdr_cback_data F
++ xdr_obj_p F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ xdr_ypall F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libpthread.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libpthread.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,256 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ pthread_attr_init F
++ pthread_create F
++ sem_destroy F
++ sem_getvalue F
++ sem_init F
++ sem_post F
++ sem_trywait F
++ sem_wait F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ pthread_atfork F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ pthread_cond_broadcast F
++ pthread_cond_destroy F
++ pthread_cond_init F
++ pthread_cond_signal F
++ pthread_cond_timedwait F
++ pthread_cond_wait F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ _IO_flockfile F
++ _IO_ftrylockfile F
++ _IO_funlockfile F
++ __close F
++ __connect F
++ __errno_location F
++ __fcntl F
++ __fork F
++ __h_errno_location F
++ __lseek F
++ __open F
++ __pthread_getspecific F
++ __pthread_key_create F
++ __pthread_mutex_destroy F
++ __pthread_mutex_init F
++ __pthread_mutex_lock F
++ __pthread_mutex_trylock F
++ __pthread_mutex_unlock F
++ __pthread_mutexattr_destroy F
++ __pthread_mutexattr_init F
++ __pthread_mutexattr_settype F
++ __pthread_once F
++ __pthread_setspecific F
++ __read F
++ __send F
++ __sigaction F
++ __wait F
++ __write F
++ _pthread_cleanup_pop F
++ _pthread_cleanup_pop_restore F
++ _pthread_cleanup_push F
++ _pthread_cleanup_push_defer F
++ accept F
++ close F
++ connect F
++ fcntl F
++ flockfile F
++ fork F
++ fsync F
++ ftrylockfile F
++ funlockfile F
++ longjmp F
++ lseek F
++ msync F
++ nanosleep F
++ open F
++ pause F
++ pthread_attr_destroy F
++ pthread_attr_getdetachstate F
++ pthread_attr_getinheritsched F
++ pthread_attr_getschedparam F
++ pthread_attr_getschedpolicy F
++ pthread_attr_getscope F
++ pthread_attr_setdetachstate F
++ pthread_attr_setinheritsched F
++ pthread_attr_setschedparam F
++ pthread_attr_setschedpolicy F
++ pthread_attr_setscope F
++ pthread_cancel F
++ pthread_condattr_destroy F
++ pthread_condattr_init F
++ pthread_detach F
++ pthread_equal F
++ pthread_exit F
++ pthread_getschedparam F
++ pthread_getspecific F
++ pthread_join F
++ pthread_key_create F
++ pthread_key_delete F
++ pthread_kill F
++ pthread_kill_other_threads_np F
++ pthread_mutex_destroy F
++ pthread_mutex_init F
++ pthread_mutex_lock F
++ pthread_mutex_trylock F
++ pthread_mutex_unlock F
++ pthread_mutexattr_destroy F
++ pthread_mutexattr_getkind_np F
++ pthread_mutexattr_init F
++ pthread_mutexattr_setkind_np F
++ pthread_once F
++ pthread_self F
++ pthread_setcancelstate F
++ pthread_setcanceltype F
++ pthread_setschedparam F
++ pthread_setspecific F
++ pthread_sigmask F
++ pthread_testcancel F
++ raise F
++ read F
++ recv F
++ recvfrom F
++ recvmsg F
++ send F
++ sendmsg F
++ sendto F
++ sigaction F
++ siglongjmp F
++ sigwait F
++ system F
++ tcdrain F
++ vfork F
++ wait F
++ waitpid F
++ write F
++GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1.1 A
++GLIBC_2.1.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ sem_close F
++ sem_open F
++ sem_unlink F
++GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1.2 A
++GLIBC_2.1.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __vfork F
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 ia64-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __libc_allocate_rtsig F
++ __libc_current_sigrtmax F
++ __libc_current_sigrtmin F
++ pthread_attr_getguardsize F
++ pthread_attr_getstackaddr F
++ pthread_attr_getstacksize F
++ pthread_attr_setguardsize F
++ pthread_attr_setstackaddr F
++ pthread_attr_setstacksize F
++ pthread_getconcurrency F
++ pthread_mutexattr_gettype F
++ pthread_mutexattr_settype F
++ pthread_rwlock_destroy F
++ pthread_rwlock_init F
++ pthread_rwlock_rdlock F
++ pthread_rwlock_tryrdlock F
++ pthread_rwlock_trywrlock F
++ pthread_rwlock_unlock F
++ pthread_rwlock_wrlock F
++ pthread_rwlockattr_destroy F
++ pthread_rwlockattr_getkind_np F
++ pthread_rwlockattr_getpshared F
++ pthread_rwlockattr_init F
++ pthread_rwlockattr_setkind_np F
++ pthread_rwlockattr_setpshared F
++ pthread_setconcurrency F
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.3 A
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ pthread_getattr_np F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __open64 F
++ __pread64 F
++ __pthread_rwlock_destroy F
++ __pthread_rwlock_init F
++ __pthread_rwlock_rdlock F
++ __pthread_rwlock_tryrdlock F
++ __pthread_rwlock_trywrlock F
++ __pthread_rwlock_unlock F
++ __pthread_rwlock_wrlock F
++ __pwrite64 F
++ __res_state F
++ lseek64 F
++ open64 F
++ pread F
++ pread64 F
++ pthread_attr_getstack F
++ pthread_attr_setstack F
++ pthread_barrier_destroy F
++ pthread_barrier_init F
++ pthread_barrier_wait F
++ pthread_barrierattr_destroy F
++ pthread_barrierattr_init F
++ pthread_barrierattr_setpshared F
++ pthread_condattr_getpshared F
++ pthread_condattr_setpshared F
++ pthread_getcpuclockid F
++ pthread_mutex_timedlock F
++ pthread_mutexattr_getpshared F
++ pthread_mutexattr_setpshared F
++ pthread_rwlock_timedrdlock F
++ pthread_rwlock_timedwrlock F
++ pthread_spin_destroy F
++ pthread_spin_init F
++ pthread_spin_lock F
++ pthread_spin_trylock F
++ pthread_spin_unlock F
++ pthread_yield F
++ pwrite F
++ pwrite64 F
++ sem_timedwait F
++GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.2.6 A
++GLIBC_2.2.6 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __nanosleep F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3.2 A
++GLIBC_2.3.3 i.86-.*-linux.*/thread sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.3.3 A
++ pthread_barrierattr_getpshared F
++ pthread_condattr_getclock F
++ pthread_condattr_setclock F
++ pthread_timedjoin_np F
++ pthread_tryjoin_np F
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libresolv.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libresolv.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,95 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.0 A
++ dn_expand F
++ res_mkquery F
++ res_query F
++ res_querydomain F
++ res_search F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __b64_ntop F
++ __b64_pton F
++ __dn_comp F
++ __dn_count_labels F
++ __dn_skipname F
++ __fp_nquery F
++ __fp_query F
++ __fp_resstat F
++ __hostalias F
++ __loc_aton F
++ __loc_ntoa F
++ __p_cdname F
++ __p_cdnname F
++ __p_class F
++ __p_fqname F
++ __p_fqnname F
++ __p_option F
++ __p_query F
++ __p_secstodate F
++ __p_time F
++ __p_type F
++ __putlong F
++ __putshort F
++ __res_close F
++ __res_dnok F
++ __res_hnok F
++ __res_isourserver F
++ __res_mailok F
++ __res_nameinquery F
++ __res_ownok F
++ __res_queriesmatch F
++ __res_send F
++ __sym_ntop F
++ __sym_ntos F
++ __sym_ston F
++ _gethtbyaddr F
++ _gethtbyname F
++ _gethtbyname2 F
++ _gethtent F
++ _getlong F
++ _getshort F
++ _sethtent F
++ inet_net_ntop F
++ inet_net_pton F
++ inet_neta F
++ res_gethostbyaddr F
++ res_gethostbyname F
++ res_gethostbyname2 F
++ res_send_setqhook F
++ res_send_setrhook F
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ __p_class_syms D 0x54
++ __p_type_syms D 0x21c
++ _res_opcodes D 0x40
++GLIBC_2.0 ia64-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __p_class_syms D 0xa8
++ __p_type_syms D 0x438
++ _res_opcodes D 0x80
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ __dn_expand F
++ __res_hostalias F
++ __res_mkquery F
++ __res_nmkquery F
++ __res_nquery F
++ __res_nquerydomain F
++ __res_nsearch F
++ __res_nsend F
++ __res_query F
++ __res_querydomain F
++ __res_search F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3.2 A
++ __p_rcode F
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/librt.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/librt.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,44 @@
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.1 A
++GLIBC_2.1 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ aio_cancel F
++ aio_cancel64 F
++ aio_error F
++ aio_error64 F
++ aio_fsync F
++ aio_fsync64 F
++ aio_init F
++ aio_read F
++ aio_read64 F
++ aio_return F
++ aio_return64 F
++ aio_suspend F
++ aio_suspend64 F
++ aio_write F
++ aio_write64 F
++ lio_listio F
++ lio_listio64 F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ clock_getcpuclockid F
++ clock_getres F
++ clock_gettime F
++ clock_nanosleep F
++ clock_settime F
++ shm_open F
++ shm_unlink F
++ timer_create F
++ timer_delete F
++ timer_getoverrun F
++ timer_gettime F
++ timer_settime F
++GLIBC_2.2 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/abilist/libthread_db.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libthread_db.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,59 @@
++GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.1.3 A
++GLIBC_2.1.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ td_init F
++ td_log F
++ td_ta_clear_event F
++ td_ta_delete F
++ td_ta_enable_stats F
++ td_ta_event_addr F
++ td_ta_event_getmsg F
++ td_ta_get_nthreads F
++ td_ta_get_ph F
++ td_ta_get_stats F
++ td_ta_map_id2thr F
++ td_ta_map_lwp2thr F
++ td_ta_new F
++ td_ta_reset_stats F
++ td_ta_set_event F
++ td_ta_setconcurrency F
++ td_ta_thr_iter F
++ td_ta_tsd_iter F
++ td_thr_clear_event F
++ td_thr_dbresume F
++ td_thr_dbsuspend F
++ td_thr_event_enable F
++ td_thr_event_getmsg F
++ td_thr_get_info F
++ td_thr_getfpregs F
++ td_thr_getgregs F
++ td_thr_getxregs F
++ td_thr_getxregsize F
++ td_thr_set_event F
++ td_thr_setfpregs F
++ td_thr_setgregs F
++ td_thr_setprio F
++ td_thr_setsigpending F
++ td_thr_setxregs F
++ td_thr_sigsetmask F
++ td_thr_tsd F
++ td_thr_validate F
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.2.3 A
++GLIBC_2.2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ td_symbol_list F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2 s390x-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3.3 A
++ td_thr_tlsbase F
++GLIBC_2.3 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls powerpc64-.*-linux.*/thread s390-.*-linux.*/tls s390x-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls x86_64-.*-linux.*/tls
++ GLIBC_2.3 A
++ td_thr_tls_get_addr F
+--- glibc-2.3.2/abilist/libutil.abilist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/abilist/libutil.abilist 2003-04-01 23:39:52.000000000 -0500
+@@ -0,0 +1,18 @@
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++ GLIBC_2.0 A
++GLIBC_2.0 i.86-.*-linux.*/notls i.86-.*-linux.*/thread i.86-.*-linux.*/tls ia64-.*-linux.*/tls m68.*-.*-linux.*/notls powerpc-.*-linux.*/notls powerpc-.*-linux.*/thread powerpc-.*-linux.*/tls s390-.*-linux.*/tls sh[34].*-.*-linux.*/notls sh[34].*-.*-linux.*/thread sh[34].*-.*-linux.*/tls
++| GLIBC_2.2.5 x86_64-.*-linux.*/tls
++| GLIBC_2.2 s390x-.*-linux.*/tls
++| GLIBC_2.3 powerpc64-.*-linux.*/thread
++ forkpty F
++ login F
++ login_tty F
++ logout F
++ logwtmp F
++ openpty F
++GLIBC_2.2.5 x86_64-.*-linux.*/tls
++ GLIBC_2.2.5 A
++GLIBC_2.2 s390x-.*-linux.*/tls
++ GLIBC_2.2 A
++GLIBC_2.3 powerpc64-.*-linux.*/thread
++ GLIBC_2.3 A
+--- glibc-2.3.2/argp/Makefile 2002-12-04 14:45:21.000000000 -0500
++++ glibc-2.3.2/argp/Makefile 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1997, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -28,4 +28,8 @@
+
+ tests = argp-test tst-argp1
+
++CFLAGS-argp-help.c = $(uses-callbacks) -fexceptions
++CFLAGS-argp-parse.c = $(uses-callbacks)
++CFLAGS-argp-fmtstream.c = -fexceptions
++
+ include ../Rules
+--- glibc-2.3.2/argp/argp-help.c 2002-04-08 04:19:17.000000000 -0400
++++ glibc-2.3.2/argp/argp-help.c 2003-08-21 08:36:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Hierarchial argument parsing help output
+- Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Miles Bader <miles@gnu.ai.mit.edu>.
+
+@@ -521,7 +521,7 @@
+ free (hol);
+ }
+
+-static inline int
++static int
+ hol_entry_short_iterate (const struct hol_entry *entry,
+ int (*func)(const struct argp_option *opt,
+ const struct argp_option *real,
+@@ -547,6 +547,7 @@
+ }
+
+ static inline int
++__attribute ((always_inline))
+ hol_entry_long_iterate (const struct hol_entry *entry,
+ int (*func)(const struct argp_option *opt,
+ const struct argp_option *real,
+--- glibc-2.3.2/argp/argp.h 2003-02-28 20:09:18.000000000 -0500
++++ glibc-2.3.2/argp/argp.h 2003-09-19 22:37:01.000000000 -0400
+@@ -32,6 +32,10 @@
+ # define __const const
+ #endif
+
++#ifndef __THROW
++# define __THROW
++#endif
++
+ #ifndef __error_t_defined
+ typedef int error_t;
+ # define __error_t_defined
+@@ -376,11 +380,11 @@
+ extern error_t argp_parse (__const struct argp *__restrict __argp,
+ int __argc, char **__restrict __argv,
+ unsigned __flags, int *__restrict __arg_index,
+- void *__restrict __input) __THROW;
++ void *__restrict __input);
+ extern error_t __argp_parse (__const struct argp *__restrict __argp,
+ int __argc, char **__restrict __argv,
+ unsigned __flags, int *__restrict __arg_index,
+- void *__restrict __input) __THROW;
++ void *__restrict __input);
+
+ /* Global variables. */
+
+@@ -444,10 +448,10 @@
+ ARGP_HELP_*. */
+ extern void argp_help (__const struct argp *__restrict __argp,
+ FILE *__restrict __stream,
+- unsigned __flags, char *__restrict __name) __THROW;
++ unsigned __flags, char *__restrict __name);
+ extern void __argp_help (__const struct argp *__restrict __argp,
+ FILE *__restrict __stream, unsigned __flags,
+- char *__name) __THROW;
++ char *__name);
+
+ /* The following routines are intended to be called from within an argp
+ parsing routine (thus taking an argp_state structure as the first
+@@ -461,23 +465,23 @@
+ from the set ARGP_HELP_*. */
+ extern void argp_state_help (__const struct argp_state *__restrict __state,
+ FILE *__restrict __stream,
+- unsigned int __flags) __THROW;
++ unsigned int __flags);
+ extern void __argp_state_help (__const struct argp_state *__restrict __state,
+ FILE *__restrict __stream,
+- unsigned int __flags) __THROW;
++ unsigned int __flags);
+
+ /* Possibly output the standard usage message for ARGP to stderr and exit. */
+-extern void argp_usage (__const struct argp_state *__state) __THROW;
+-extern void __argp_usage (__const struct argp_state *__state) __THROW;
++extern void argp_usage (__const struct argp_state *__state);
++extern void __argp_usage (__const struct argp_state *__state);
+
+ /* If appropriate, print the printf string FMT and following args, preceded
+ by the program name and `:', to stderr, and followed by a `Try ... --help'
+ message, then exit (1). */
+ extern void argp_error (__const struct argp_state *__restrict __state,
+- __const char *__restrict __fmt, ...) __THROW
++ __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+ extern void __argp_error (__const struct argp_state *__restrict __state,
+- __const char *__restrict __fmt, ...) __THROW
++ __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+ /* Similar to the standard gnu error-reporting function error(), but will
+@@ -490,11 +494,11 @@
+ parsing but don't reflect a (syntactic) problem with the input. */
+ extern void argp_failure (__const struct argp_state *__restrict __state,
+ int __status, int __errnum,
+- __const char *__restrict __fmt, ...) __THROW
++ __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 4, 5)));
+ extern void __argp_failure (__const struct argp_state *__restrict __state,
+ int __status, int __errnum,
+- __const char *__restrict __fmt, ...) __THROW
++ __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 4, 5)));
+
+ /* Returns true if the option OPT is a valid short option. */
+--- glibc-2.3.2/argp/tst-argp1.c 2002-12-04 17:45:02.000000000 -0500
++++ glibc-2.3.2/argp/tst-argp1.c 2003-03-18 16:46:06.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+@@ -29,7 +29,7 @@
+ #define OPT_TOPLEVEL 304
+
+
+-static const struct argp_option options[] =
++static const struct argp_option test_options[] =
+ {
+ { NULL, 0, NULL, 0, "\
+ This is a test for threads so we allow ther user to selection the number of \
+@@ -89,12 +89,12 @@
+ /* Data structure to communicate with argp functions. */
+ static struct argp argp =
+ {
+- options, parse_opt
++ test_options, parse_opt
+ };
+
+
+-int
+-main (void)
++static int
++do_test (void)
+ {
+ int argc = 2;
+ char *argv[3] = { (char *) "tst-argp1", (char *) "--help", NULL };
+@@ -113,3 +113,6 @@
+ {
+ return ARGP_ERR_UNKNOWN;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/assert/assert.h 2001-07-07 15:20:51.000000000 -0400
++++ glibc-2.3.2/assert/assert.h 2003-08-21 08:36:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,1992,1994-1999,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1992,1994-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -84,16 +84,33 @@
+
+ __END_DECLS
+
+-# define assert(expr) \
++/* For the macro definition we use gcc's __builtin_expect if possible
++ to generate good code for the non-error case. gcc 3.0 is a good
++ enough estimate for when the feature became available. */
++# if __GNUC_PREREQ (3, 0)
++# define assert(expr) \
++ (__ASSERT_VOID_CAST (__builtin_expect (!!(expr), 1) ? 0 : \
++ (__assert_fail (__STRING(expr), __FILE__, __LINE__, \
++ __ASSERT_FUNCTION), 0)))
++# else
++# define assert(expr) \
+ (__ASSERT_VOID_CAST ((expr) ? 0 : \
+ (__assert_fail (__STRING(expr), __FILE__, __LINE__, \
+ __ASSERT_FUNCTION), 0)))
++# endif
+
+ # ifdef __USE_GNU
+-# define assert_perror(errnum) \
++# if __GNUC_PREREQ (3, 0)
++# define assert_perror(errnum) \
++ (__ASSERT_VOID_CAST (__builtin_expect (!(errnum), 1) ? 0 : \
++ (__assert_perror_fail ((errnum), __FILE__, __LINE__, \
++ __ASSERT_FUNCTION), 0)))
++# else
++# define assert_perror(errnum) \
+ (__ASSERT_VOID_CAST (!(errnum) ? 0 : \
+ (__assert_perror_fail ((errnum), __FILE__, __LINE__, \
+ __ASSERT_FUNCTION), 0)))
++# endif
+ # endif
+
+ /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
+--- glibc-2.3.2/autom4te.cache/output.0 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/autom4te.cache/output.0 2003-09-19 22:40:33.000000000 -0400
+@@ -0,0 +1,8515 @@
++@%:@! /bin/sh
++@%:@ From configure.in CVSid.
++@%:@ Guess values for system-dependent variables and create Makefiles.
++@%:@ Generated by GNU Autoconf 2.57 for GNU C Library (see version.h).
++@%:@
++@%:@ Report bugs to <glibc>.
++@%:@
++@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
++@%:@ Free Software Foundation, Inc.
++@%:@ This configure script is free software; the Free Software Foundation
++@%:@ gives unlimited permission to copy, distribute and modify it.
++## --------------------- ##
++## M4sh Initialization. ##
++## --------------------- ##
++
++# Be Bourne compatible
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
++fi
++
++# Support unset when possible.
++if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
++ as_unset=unset
++else
++ as_unset=false
++fi
++
++
++# Work around bugs in pre-3.0 UWIN ksh.
++$as_unset ENV MAIL MAILPATH
++PS1='$ '
++PS2='> '
++PS4='+ '
++
++# NLS nuisances.
++for as_var in \
++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
++ LC_TELEPHONE LC_TIME
++do
++ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
++ eval $as_var=C; export $as_var
++ else
++ $as_unset $as_var
++ fi
++done
++
++# Required to use basename.
++if expr a : '\(a\)' >/dev/null 2>&1; then
++ as_expr=expr
++else
++ as_expr=false
++fi
++
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++ as_basename=basename
++else
++ as_basename=false
++fi
++
++
++# Name of the executable.
++as_me=`$as_basename "$0" ||
++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
++ X"$0" : 'X\(//\)$' \| \
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X/"$0" |
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++
++
++# PATH needs CR, and LINENO needs CR and PATH.
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
++fi
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x$as_lineno_3" = "x$as_lineno_2" || {
++ # Find who we are. Look in the path if we contain no path at all
++ # relative or not.
++ case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++
++ ;;
++ esac
++ # We did not find ourselves, most probably we were run as `sh COMMAND'
++ # in which case we are not to be found in the path.
++ if test "x$as_myself" = x; then
++ as_myself=$0
++ fi
++ if test ! -f "$as_myself"; then
++ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
++ { (exit 1); exit 1; }; }
++ fi
++ case $CONFIG_SHELL in
++ '')
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for as_base in sh bash ksh sh5; do
++ case $as_dir in
++ /*)
++ if ("$as_dir/$as_base" -c '
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
++ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
++ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
++ CONFIG_SHELL=$as_dir/$as_base
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
++ fi;;
++ esac
++ done
++done
++;;
++ esac
++
++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
++ # uniformly replaced by the line number. The first 'sed' inserts a
++ # line-number line before each line; the second 'sed' does the real
++ # work. The second script uses 'N' to pair each line-number line
++ # with the numbered line, and appends trailing '-' during
++ # substitution so that $LINENO is not a special case at line end.
++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
++ sed '
++ N
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ t loop
++ s,-$,,
++ s,^['$as_cr_digits']*\n,,
++ ' >$as_me.lineno &&
++ chmod +x $as_me.lineno ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
++ { (exit 1); exit 1; }; }
++
++ # Don't try to exec as it changes $[0], causing all sort of problems
++ # (the dirname of $[0] is not the place where we might find the
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
++ # Exit status is that of the last command.
++ exit
++}
++
++
++case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
++ *c*,-n*) ECHO_N= ECHO_C='
++' ECHO_T=' ' ;;
++ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
++ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++esac
++
++if expr a : '\(a\)' >/dev/null 2>&1; then
++ as_expr=expr
++else
++ as_expr=false
++fi
++
++rm -f conf$$ conf$$.exe conf$$.file
++echo >conf$$.file
++if ln -s conf$$.file conf$$ 2>/dev/null; then
++ # We could just check for DJGPP; but this test a) works b) is more generic
++ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
++ if test -f conf$$.exe; then
++ # Don't use ln at all; we don't have any links
++ as_ln_s='cp -p'
++ else
++ as_ln_s='ln -s'
++ fi
++elif ln conf$$.file conf$$ 2>/dev/null; then
++ as_ln_s=ln
++else
++ as_ln_s='cp -p'
++fi
++rm -f conf$$ conf$$.exe conf$$.file
++
++if mkdir -p . 2>/dev/null; then
++ as_mkdir_p=:
++else
++ as_mkdir_p=false
++fi
++
++as_executable_p="test -f"
++
++# Sed expression to map a string onto a valid CPP name.
++as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
++
++# Sed expression to map a string onto a valid variable name.
++as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
++
++
++# IFS
++# We need space, tab and new line, in precisely that order.
++as_nl='
++'
++IFS=" $as_nl"
++
++# CDPATH.
++$as_unset CDPATH
++
++
++# Name of the host.
++# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
++# so uname gets run too.
++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
++
++exec 6>&1
++
++#
++# Initializations.
++#
++ac_default_prefix=/usr/local
++ac_config_libobj_dir=.
++cross_compiling=no
++subdirs=
++MFLAGS=
++MAKEFLAGS=
++SHELL=${CONFIG_SHELL-/bin/sh}
++
++# Maximum number of lines to put in a shell here document.
++# This variable seems obsolete. It should probably be removed, and
++# only ac_max_sed_lines should be used.
++: ${ac_max_here_lines=38}
++
++# Identity of this package.
++PACKAGE_NAME='GNU C Library'
++PACKAGE_TARNAME='c-library'
++PACKAGE_VERSION='(see version.h)'
++PACKAGE_STRING='GNU C Library (see version.h)'
++PACKAGE_BUGREPORT='glibc'
++
++ac_unique_file="include/features.h"
++ac_subdirs_all="$ac_subdirs_all "
++# Factoring default headers for most tests.
++ac_includes_default="\
++#include <stdio.h>
++#if HAVE_SYS_TYPES_H
++# include <sys/types.h>
++#endif
++#if HAVE_SYS_STAT_H
++# include <sys/stat.h>
++#endif
++#if STDC_HEADERS
++# include <stdlib.h>
++# include <stddef.h>
++#else
++# if HAVE_STDLIB_H
++# include <stdlib.h>
++# endif
++#endif
++#if HAVE_STRING_H
++# if !STDC_HEADERS && HAVE_MEMORY_H
++# include <memory.h>
++# endif
++# include <string.h>
++#endif
++#if HAVE_STRINGS_H
++# include <strings.h>
++#endif
++#if HAVE_INTTYPES_H
++# include <inttypes.h>
++#else
++# if HAVE_STDINT_H
++# include <stdint.h>
++# endif
++#endif
++#if HAVE_UNISTD_H
++# include <unistd.h>
++#endif"
++
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIB@&t@OBJS LTLIBOBJS'
++ac_subst_files=''
++
++# Initialize some variables set by options.
++ac_init_help=
++ac_init_version=false
++# The variables have the same names as the options, with
++# dashes changed to underlines.
++cache_file=/dev/null
++exec_prefix=NONE
++no_create=
++no_recursion=
++prefix=NONE
++program_prefix=NONE
++program_suffix=NONE
++program_transform_name=s,x,x,
++silent=
++site=
++srcdir=
++verbose=
++x_includes=NONE
++x_libraries=NONE
++
++# Installation directory options.
++# These are left unexpanded so users can "make install exec_prefix=/foo"
++# and all the variables that are supposed to be based on exec_prefix
++# by default will actually change.
++# Use braces instead of parens because sh, perl, etc. also accept them.
++bindir='${exec_prefix}/bin'
++sbindir='${exec_prefix}/sbin'
++libexecdir='${exec_prefix}/libexec'
++datadir='${prefix}/share'
++sysconfdir='${prefix}/etc'
++sharedstatedir='${prefix}/com'
++localstatedir='${prefix}/var'
++libdir='${exec_prefix}/lib'
++includedir='${prefix}/include'
++oldincludedir='/usr/include'
++infodir='${prefix}/info'
++mandir='${prefix}/man'
++
++ac_prev=
++for ac_option
++do
++ # If the previous option needs an argument, assign it.
++ if test -n "$ac_prev"; then
++ eval "$ac_prev=\$ac_option"
++ ac_prev=
++ continue
++ fi
++
++ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++
++ # Accept the important Cygnus configure options, so we can diagnose typos.
++
++ case $ac_option in
++
++ -bindir | --bindir | --bindi | --bind | --bin | --bi)
++ ac_prev=bindir ;;
++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
++ bindir=$ac_optarg ;;
++
++ -build | --build | --buil | --bui | --bu)
++ ac_prev=build_alias ;;
++ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
++ build_alias=$ac_optarg ;;
++
++ -cache-file | --cache-file | --cache-fil | --cache-fi \
++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
++ ac_prev=cache_file ;;
++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
++ cache_file=$ac_optarg ;;
++
++ --config-cache | -C)
++ cache_file=config.cache ;;
++
++ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ ac_prev=datadir ;;
++ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
++ | --da=*)
++ datadir=$ac_optarg ;;
++
++ -disable-* | --disable-*)
++ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
++ # Reject names that are not valid shell variable names.
++ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
++ { (exit 1); exit 1; }; }
++ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
++ eval "enable_$ac_feature=no" ;;
++
++ -enable-* | --enable-*)
++ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
++ # Reject names that are not valid shell variable names.
++ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
++ { (exit 1); exit 1; }; }
++ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "enable_$ac_feature='$ac_optarg'" ;;
++
++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
++ | --exec | --exe | --ex)
++ ac_prev=exec_prefix ;;
++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
++ | --exec=* | --exe=* | --ex=*)
++ exec_prefix=$ac_optarg ;;
++
++ -gas | --gas | --ga | --g)
++ # Obsolete; use --with-gas.
++ with_gas=yes ;;
++
++ -help | --help | --hel | --he | -h)
++ ac_init_help=long ;;
++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
++ ac_init_help=recursive ;;
++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
++ ac_init_help=short ;;
++
++ -host | --host | --hos | --ho)
++ ac_prev=host_alias ;;
++ -host=* | --host=* | --hos=* | --ho=*)
++ host_alias=$ac_optarg ;;
++
++ -includedir | --includedir | --includedi | --included | --include \
++ | --includ | --inclu | --incl | --inc)
++ ac_prev=includedir ;;
++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
++ | --includ=* | --inclu=* | --incl=* | --inc=*)
++ includedir=$ac_optarg ;;
++
++ -infodir | --infodir | --infodi | --infod | --info | --inf)
++ ac_prev=infodir ;;
++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
++ infodir=$ac_optarg ;;
++
++ -libdir | --libdir | --libdi | --libd)
++ ac_prev=libdir ;;
++ -libdir=* | --libdir=* | --libdi=* | --libd=*)
++ libdir=$ac_optarg ;;
++
++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
++ | --libexe | --libex | --libe)
++ ac_prev=libexecdir ;;
++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
++ | --libexe=* | --libex=* | --libe=*)
++ libexecdir=$ac_optarg ;;
++
++ -localstatedir | --localstatedir | --localstatedi | --localstated \
++ | --localstate | --localstat | --localsta | --localst \
++ | --locals | --local | --loca | --loc | --lo)
++ ac_prev=localstatedir ;;
++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
++ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ localstatedir=$ac_optarg ;;
++
++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
++ ac_prev=mandir ;;
++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
++ mandir=$ac_optarg ;;
++
++ -nfp | --nfp | --nf)
++ # Obsolete; use --without-fp.
++ with_fp=no ;;
++
++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
++ | --no-cr | --no-c | -n)
++ no_create=yes ;;
++
++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
++ no_recursion=yes ;;
++
++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
++ | --oldin | --oldi | --old | --ol | --o)
++ ac_prev=oldincludedir ;;
++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
++ oldincludedir=$ac_optarg ;;
++
++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
++ ac_prev=prefix ;;
++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
++ prefix=$ac_optarg ;;
++
++ -program-prefix | --program-prefix | --program-prefi | --program-pref \
++ | --program-pre | --program-pr | --program-p)
++ ac_prev=program_prefix ;;
++ -program-prefix=* | --program-prefix=* | --program-prefi=* \
++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
++ program_prefix=$ac_optarg ;;
++
++ -program-suffix | --program-suffix | --program-suffi | --program-suff \
++ | --program-suf | --program-su | --program-s)
++ ac_prev=program_suffix ;;
++ -program-suffix=* | --program-suffix=* | --program-suffi=* \
++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
++ program_suffix=$ac_optarg ;;
++
++ -program-transform-name | --program-transform-name \
++ | --program-transform-nam | --program-transform-na \
++ | --program-transform-n | --program-transform- \
++ | --program-transform | --program-transfor \
++ | --program-transfo | --program-transf \
++ | --program-trans | --program-tran \
++ | --progr-tra | --program-tr | --program-t)
++ ac_prev=program_transform_name ;;
++ -program-transform-name=* | --program-transform-name=* \
++ | --program-transform-nam=* | --program-transform-na=* \
++ | --program-transform-n=* | --program-transform-=* \
++ | --program-transform=* | --program-transfor=* \
++ | --program-transfo=* | --program-transf=* \
++ | --program-trans=* | --program-tran=* \
++ | --progr-tra=* | --program-tr=* | --program-t=*)
++ program_transform_name=$ac_optarg ;;
++
++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
++ | -silent | --silent | --silen | --sile | --sil)
++ silent=yes ;;
++
++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
++ ac_prev=sbindir ;;
++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
++ | --sbi=* | --sb=*)
++ sbindir=$ac_optarg ;;
++
++ -sharedstatedir | --sharedstatedir | --sharedstatedi \
++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
++ | --sharedst | --shareds | --shared | --share | --shar \
++ | --sha | --sh)
++ ac_prev=sharedstatedir ;;
++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
++ | --sha=* | --sh=*)
++ sharedstatedir=$ac_optarg ;;
++
++ -site | --site | --sit)
++ ac_prev=site ;;
++ -site=* | --site=* | --sit=*)
++ site=$ac_optarg ;;
++
++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
++ ac_prev=srcdir ;;
++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
++ srcdir=$ac_optarg ;;
++
++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
++ | --syscon | --sysco | --sysc | --sys | --sy)
++ ac_prev=sysconfdir ;;
++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
++ sysconfdir=$ac_optarg ;;
++
++ -target | --target | --targe | --targ | --tar | --ta | --t)
++ ac_prev=target_alias ;;
++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
++ target_alias=$ac_optarg ;;
++
++ -v | -verbose | --verbose | --verbos | --verbo | --verb)
++ verbose=yes ;;
++
++ -version | --version | --versio | --versi | --vers | -V)
++ ac_init_version=: ;;
++
++ -with-* | --with-*)
++ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
++ # Reject names that are not valid shell variable names.
++ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ { echo "$as_me: error: invalid package name: $ac_package" >&2
++ { (exit 1); exit 1; }; }
++ ac_package=`echo $ac_package| sed 's/-/_/g'`
++ case $ac_option in
++ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "with_$ac_package='$ac_optarg'" ;;
++
++ -without-* | --without-*)
++ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
++ # Reject names that are not valid shell variable names.
++ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ { echo "$as_me: error: invalid package name: $ac_package" >&2
++ { (exit 1); exit 1; }; }
++ ac_package=`echo $ac_package | sed 's/-/_/g'`
++ eval "with_$ac_package=no" ;;
++
++ --x)
++ # Obsolete; use --with-x.
++ with_x=yes ;;
++
++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
++ | --x-incl | --x-inc | --x-in | --x-i)
++ ac_prev=x_includes ;;
++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
++ x_includes=$ac_optarg ;;
++
++ -x-libraries | --x-libraries | --x-librarie | --x-librari \
++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
++ ac_prev=x_libraries ;;
++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
++ x_libraries=$ac_optarg ;;
++
++ -*) { echo "$as_me: error: unrecognized option: $ac_option
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; }
++ ;;
++
++ *=*)
++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
++ # Reject names that are not valid shell variable names.
++ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
++ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
++ { (exit 1); exit 1; }; }
++ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
++ eval "$ac_envvar='$ac_optarg'"
++ export $ac_envvar ;;
++
++ *)
++ # FIXME: should be removed in autoconf 3.0.
++ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
++ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
++ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
++ ;;
++
++ esac
++done
++
++if test -n "$ac_prev"; then
++ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
++ { echo "$as_me: error: missing argument to $ac_option" >&2
++ { (exit 1); exit 1; }; }
++fi
++
++# Be sure to have absolute paths.
++for ac_var in exec_prefix prefix
++do
++ eval ac_val=$`echo $ac_var`
++ case $ac_val in
++ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
++ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; };;
++ esac
++done
++
++# Be sure to have absolute paths.
++for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
++ localstatedir libdir includedir oldincludedir infodir mandir
++do
++ eval ac_val=$`echo $ac_var`
++ case $ac_val in
++ [\\/$]* | ?:[\\/]* ) ;;
++ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; };;
++ esac
++done
++
++# There might be people who depend on the old broken behavior: `$host'
++# used to hold the argument of --host etc.
++# FIXME: To remove some day.
++build=$build_alias
++host=$host_alias
++target=$target_alias
++
++# FIXME: To remove some day.
++if test "x$host_alias" != x; then
++ if test "x$build_alias" = x; then
++ cross_compiling=maybe
++ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
++ If a cross compiler is detected then cross compile mode will be used." >&2
++ elif test "x$build_alias" != "x$host_alias"; then
++ cross_compiling=yes
++ fi
++fi
++
++ac_tool_prefix=
++test -n "$host_alias" && ac_tool_prefix=$host_alias-
++
++test "$silent" = yes && exec 6>/dev/null
++
++
++# Find the source files, if location was not specified.
++if test -z "$srcdir"; then
++ ac_srcdir_defaulted=yes
++ # Try the directory containing this script, then its parent.
++ ac_confdir=`(dirname "$0") 2>/dev/null ||
++$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$0" : 'X\(//\)[^/]' \| \
++ X"$0" : 'X\(//\)$' \| \
++ X"$0" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$0" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ srcdir=$ac_confdir
++ if test ! -r $srcdir/$ac_unique_file; then
++ srcdir=..
++ fi
++else
++ ac_srcdir_defaulted=no
++fi
++if test ! -r $srcdir/$ac_unique_file; then
++ if test "$ac_srcdir_defaulted" = yes; then
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
++ { (exit 1); exit 1; }; }
++ else
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
++ { (exit 1); exit 1; }; }
++ fi
++fi
++(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
++ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
++ { (exit 1); exit 1; }; }
++srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
++ac_env_build_alias_set=${build_alias+set}
++ac_env_build_alias_value=$build_alias
++ac_cv_env_build_alias_set=${build_alias+set}
++ac_cv_env_build_alias_value=$build_alias
++ac_env_host_alias_set=${host_alias+set}
++ac_env_host_alias_value=$host_alias
++ac_cv_env_host_alias_set=${host_alias+set}
++ac_cv_env_host_alias_value=$host_alias
++ac_env_target_alias_set=${target_alias+set}
++ac_env_target_alias_value=$target_alias
++ac_cv_env_target_alias_set=${target_alias+set}
++ac_cv_env_target_alias_value=$target_alias
++ac_env_CC_set=${CC+set}
++ac_env_CC_value=$CC
++ac_cv_env_CC_set=${CC+set}
++ac_cv_env_CC_value=$CC
++ac_env_CFLAGS_set=${CFLAGS+set}
++ac_env_CFLAGS_value=$CFLAGS
++ac_cv_env_CFLAGS_set=${CFLAGS+set}
++ac_cv_env_CFLAGS_value=$CFLAGS
++ac_env_LDFLAGS_set=${LDFLAGS+set}
++ac_env_LDFLAGS_value=$LDFLAGS
++ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
++ac_cv_env_LDFLAGS_value=$LDFLAGS
++ac_env_CPPFLAGS_set=${CPPFLAGS+set}
++ac_env_CPPFLAGS_value=$CPPFLAGS
++ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
++ac_cv_env_CPPFLAGS_value=$CPPFLAGS
++ac_env_CPP_set=${CPP+set}
++ac_env_CPP_value=$CPP
++ac_cv_env_CPP_set=${CPP+set}
++ac_cv_env_CPP_value=$CPP
++ac_env_CXX_set=${CXX+set}
++ac_env_CXX_value=$CXX
++ac_cv_env_CXX_set=${CXX+set}
++ac_cv_env_CXX_value=$CXX
++ac_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_env_CXXFLAGS_value=$CXXFLAGS
++ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_cv_env_CXXFLAGS_value=$CXXFLAGS
++
++#
++# Report the --help message.
++#
++if test "$ac_init_help" = "long"; then
++ # Omit some internal or obsolete options to make the list less imposing.
++ # This message is too long to be a string in the A/UX 3.1 sh.
++ cat <<_ACEOF
++\`configure' configures GNU C Library (see version.h) to adapt to many kinds of systems.
++
++Usage: $0 [OPTION]... [VAR=VALUE]...
++
++To assign environment variables (e.g., CC, CFLAGS...), specify them as
++VAR=VALUE. See below for descriptions of some of the useful variables.
++
++Defaults for the options are specified in brackets.
++
++Configuration:
++ -h, --help display this help and exit
++ --help=short display options specific to this package
++ --help=recursive display the short help of all the included packages
++ -V, --version display version information and exit
++ -q, --quiet, --silent do not print \`checking...' messages
++ --cache-file=FILE cache test results in FILE [disabled]
++ -C, --config-cache alias for \`--cache-file=config.cache'
++ -n, --no-create do not create output files
++ --srcdir=DIR find the sources in DIR [configure dir or \`..']
++
++_ACEOF
++
++ cat <<_ACEOF
++Installation directories:
++ --prefix=PREFIX install architecture-independent files in PREFIX
++ [$ac_default_prefix]
++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
++ [PREFIX]
++
++By default, \`make install' will install all the files in
++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
++an installation prefix other than \`$ac_default_prefix' using \`--prefix',
++for instance \`--prefix=\$HOME'.
++
++For better control, use the options below.
++
++Fine tuning of the installation directories:
++ --bindir=DIR user executables [EPREFIX/bin]
++ --sbindir=DIR system admin executables [EPREFIX/sbin]
++ --libexecdir=DIR program executables [EPREFIX/libexec]
++ --datadir=DIR read-only architecture-independent data [PREFIX/share]
++ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
++ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
++ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
++ --libdir=DIR object code libraries [EPREFIX/lib]
++ --includedir=DIR C header files [PREFIX/include]
++ --oldincludedir=DIR C header files for non-gcc [/usr/include]
++ --infodir=DIR info documentation [PREFIX/info]
++ --mandir=DIR man documentation [PREFIX/man]
++_ACEOF
++
++ cat <<\_ACEOF
++
++System types:
++ --build=BUILD configure for building on BUILD [guessed]
++ --host=HOST cross-compile to build programs to run on HOST [BUILD]
++_ACEOF
++fi
++
++if test -n "$ac_init_help"; then
++ case $ac_init_help in
++ short | recursive ) echo "Configuration of GNU C Library (see version.h):";;
++ esac
++ cat <<\_ACEOF
++
++Optional Features:
++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --disable-sanity-checks really do not use threads (should not be used except
++ in special situations) @<:@default=yes@:>@
++ --enable-check-abi do "make check-abi" in "make check" (no/warn/yes)
++ @<:@default=no@:>@
++ --enable-shared build shared library @<:@default=yes if GNU ld &
++ ELF@:>@
++ --enable-profile build profiled library @<:@default=yes@:>@
++ --enable-omitfp build undebuggable optimized library
++ @<:@default=no@:>@
++ --enable-bounded build with runtime bounds checking
++ @<:@default=no@:>@
++ --disable-versioning do not include versioning information in the library
++ objects @<:@default=yes if supported@:>@
++ --enable-oldest-abi=ABI configure the oldest ABI supported @<:@e.g. 2.2@:>@
++ @<:@default=glibc default@:>@
++ --enable-add-ons@<:@=DIRS...@:>@
++ configure and build add-ons in DIR1,DIR2,... search
++ for add-ons if no parameter given
++ --disable-hidden-plt do not hide internal function calls to avoid PLT
++ --enable-static-nss build static NSS modules @<:@default=no@:>@
++ --disable-force-install don't force installation of files from this package,
++ even if they are older than the installed files
++ --enable-kernel=VERSION compile for compatibility with kernel not older than
++ VERSION
++ --enable-all-warnings enable all useful warnings gcc can issue
++
++Optional Packages:
++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
++ --with-gmp=DIRECTORY find GMP source code in DIRECTORY (not needed)
++ --with-gd=DIR find libgd include dir and library with prefix DIR
++ --with-gd-include=DIR find libgd include files in DIR
++ --with-gd-lib=DIR find libgd library files in DIR
++ --with-fp if using floating-point hardware @<:@default=yes@:>@
++ --with-binutils=PATH specify location of binutils (as and ld)
++ --with-elf if using the ELF object format
++ --with-xcoff if using the XCOFF object format
++ --without-cvs if CVS should not be used
++ --with-headers=PATH location of system headers to use (for example
++ /usr/src/linux/include) @<:@default=compiler
++ default@:>@
++ --with-tls enable support for TLS
++ --without-__thread do not use TLS features even when supporting them
++
++Some influential environment variables:
++ CC C compiler command
++ CFLAGS C compiler flags
++ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
++ nonstandard directory <lib dir>
++ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
++ headers in a nonstandard directory <include dir>
++ CPP C preprocessor
++ CXX C++ compiler command
++ CXXFLAGS C++ compiler flags
++
++Use these variables to override the choices made by `configure' or to help
++it to find libraries and programs with nonstandard names/locations.
++
++Report bugs to <glibc>.
++_ACEOF
++fi
++
++if test "$ac_init_help" = "recursive"; then
++ # If there are subdirs, report their specific --help.
++ ac_popdir=`pwd`
++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
++ test -d $ac_dir || continue
++ ac_builddir=.
++
++if test "$ac_dir" != .; then
++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
++ # A "../" for each directory in $ac_dir_suffix.
++ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
++else
++ ac_dir_suffix= ac_top_builddir=
++fi
++
++case $srcdir in
++ .) # No --srcdir option. We are building in place.
++ ac_srcdir=.
++ if test -z "$ac_top_builddir"; then
++ ac_top_srcdir=.
++ else
++ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
++ fi ;;
++ [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_srcdir=$srcdir$ac_dir_suffix;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
++# absolute.
++ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
++ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
++ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
++ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
++
++ cd $ac_dir
++ # Check for guested configure; otherwise get Cygnus style configure.
++ if test -f $ac_srcdir/configure.gnu; then
++ echo
++ $SHELL $ac_srcdir/configure.gnu --help=recursive
++ elif test -f $ac_srcdir/configure; then
++ echo
++ $SHELL $ac_srcdir/configure --help=recursive
++ elif test -f $ac_srcdir/configure.ac ||
++ test -f $ac_srcdir/configure.in; then
++ echo
++ $ac_configure --help
++ else
++ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
++ fi
++ cd "$ac_popdir"
++ done
++fi
++
++test -n "$ac_init_help" && exit 0
++if $ac_init_version; then
++ cat <<\_ACEOF
++GNU C Library configure (see version.h)
++generated by GNU Autoconf 2.57
++
++Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
++Free Software Foundation, Inc.
++This configure script is free software; the Free Software Foundation
++gives unlimited permission to copy, distribute and modify it.
++_ACEOF
++ exit 0
++fi
++exec 5>config.log
++cat >&5 <<_ACEOF
++This file contains any messages produced by compilers while
++running configure, to aid debugging if configure makes a mistake.
++
++It was created by GNU C Library $as_me (see version.h), which was
++generated by GNU Autoconf 2.57. Invocation command line was
++
++ $ $0 $@
++
++_ACEOF
++{
++cat <<_ASUNAME
++@%:@@%:@ --------- @%:@@%:@
++@%:@@%:@ Platform. @%:@@%:@
++@%:@@%:@ --------- @%:@@%:@
++
++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
++uname -m = `(uname -m) 2>/dev/null || echo unknown`
++uname -r = `(uname -r) 2>/dev/null || echo unknown`
++uname -s = `(uname -s) 2>/dev/null || echo unknown`
++uname -v = `(uname -v) 2>/dev/null || echo unknown`
++
++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
++
++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
++hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
++
++_ASUNAME
++
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ echo "PATH: $as_dir"
++done
++
++} >&5
++
++cat >&5 <<_ACEOF
++
++
++@%:@@%:@ ----------- @%:@@%:@
++@%:@@%:@ Core tests. @%:@@%:@
++@%:@@%:@ ----------- @%:@@%:@
++
++_ACEOF
++
++
++# Keep a trace of the command line.
++# Strip out --no-create and --no-recursion so they do not pile up.
++# Strip out --silent because we don't want to record it for future runs.
++# Also quote any args containing shell meta-characters.
++# Make two passes to allow for proper duplicate-argument suppression.
++ac_configure_args=
++ac_configure_args0=
++ac_configure_args1=
++ac_sep=
++ac_must_keep_next=false
++for ac_pass in 1 2
++do
++ for ac_arg
++ do
++ case $ac_arg in
++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
++ | -silent | --silent | --silen | --sile | --sil)
++ continue ;;
++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
++ esac
++ case $ac_pass in
++ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
++ 2)
++ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
++ if test $ac_must_keep_next = true; then
++ ac_must_keep_next=false # Got value, back to normal.
++ else
++ case $ac_arg in
++ *=* | --config-cache | -C | -disable-* | --disable-* \
++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
++ | -with-* | --with-* | -without-* | --without-* | --x)
++ case "$ac_configure_args0 " in
++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
++ esac
++ ;;
++ -* ) ac_must_keep_next=true ;;
++ esac
++ fi
++ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
++ # Get rid of the leading space.
++ ac_sep=" "
++ ;;
++ esac
++ done
++done
++$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
++$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
++
++# When interrupted or exit'd, cleanup temporary files, and complete
++# config.log. We remove comments because anyway the quotes in there
++# would cause problems or look ugly.
++# WARNING: Be sure not to use single quotes in there, as some shells,
++# such as our DU 5.0 friend, will then `close' the trap.
++trap 'exit_status=$?
++ # Save into config.log some information that might help in debugging.
++ {
++ echo
++
++ cat <<\_ASBOX
++@%:@@%:@ ---------------- @%:@@%:@
++@%:@@%:@ Cache variables. @%:@@%:@
++@%:@@%:@ ---------------- @%:@@%:@
++_ASBOX
++ echo
++ # The following way of writing the cache mishandles newlines in values,
++{
++ (set) 2>&1 |
++ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
++ *ac_space=\ *)
++ sed -n \
++ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
++ ;;
++ *)
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ ;;
++ esac;
++}
++ echo
++
++ cat <<\_ASBOX
++@%:@@%:@ ----------------- @%:@@%:@
++@%:@@%:@ Output variables. @%:@@%:@
++@%:@@%:@ ----------------- @%:@@%:@
++_ASBOX
++ echo
++ for ac_var in $ac_subst_vars
++ do
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
++ done | sort
++ echo
++
++ if test -n "$ac_subst_files"; then
++ cat <<\_ASBOX
++@%:@@%:@ ------------- @%:@@%:@
++@%:@@%:@ Output files. @%:@@%:@
++@%:@@%:@ ------------- @%:@@%:@
++_ASBOX
++ echo
++ for ac_var in $ac_subst_files
++ do
++ eval ac_val=$`echo $ac_var`
++ echo "$ac_var='"'"'$ac_val'"'"'"
++ done | sort
++ echo
++ fi
++
++ if test -s confdefs.h; then
++ cat <<\_ASBOX
++@%:@@%:@ ----------- @%:@@%:@
++@%:@@%:@ confdefs.h. @%:@@%:@
++@%:@@%:@ ----------- @%:@@%:@
++_ASBOX
++ echo
++ sed "/^$/d" confdefs.h | sort
++ echo
++ fi
++ test "$ac_signal" != 0 &&
++ echo "$as_me: caught signal $ac_signal"
++ echo "$as_me: exit $exit_status"
++ } >&5
++ rm -f core *.core &&
++ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ exit $exit_status
++ ' 0
++for ac_signal in 1 2 13 15; do
++ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
++done
++ac_signal=0
++
++# confdefs.h avoids OS command line length limits that DEFS can exceed.
++rm -rf conftest* confdefs.h
++# AIX cpp loses on an empty file, so make sure it contains at least a newline.
++echo >confdefs.h
++
++# Predefined preprocessor variables.
++
++cat >>confdefs.h <<_ACEOF
++@%:@define PACKAGE_NAME "$PACKAGE_NAME"
++_ACEOF
++
++
++cat >>confdefs.h <<_ACEOF
++@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
++_ACEOF
++
++
++cat >>confdefs.h <<_ACEOF
++@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
++_ACEOF
++
++
++cat >>confdefs.h <<_ACEOF
++@%:@define PACKAGE_STRING "$PACKAGE_STRING"
++_ACEOF
++
++
++cat >>confdefs.h <<_ACEOF
++@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
++_ACEOF
++
++
++# Let the site file select an alternate cache file if it wants to.
++# Prefer explicitly selected file to automatically selected ones.
++if test -z "$CONFIG_SITE"; then
++ if test "x$prefix" != xNONE; then
++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
++ else
++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
++ fi
++fi
++for ac_site_file in $CONFIG_SITE; do
++ if test -r "$ac_site_file"; then
++ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
++echo "$as_me: loading site script $ac_site_file" >&6;}
++ sed 's/^/| /' "$ac_site_file" >&5
++ . "$ac_site_file"
++ fi
++done
++
++if test -r "$cache_file"; then
++ # Some versions of bash will fail to source /dev/null (special
++ # files actually), so we avoid doing that.
++ if test -f "$cache_file"; then
++ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
++echo "$as_me: loading cache $cache_file" >&6;}
++ case $cache_file in
++ [\\/]* | ?:[\\/]* ) . $cache_file;;
++ *) . ./$cache_file;;
++ esac
++ fi
++else
++ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
++echo "$as_me: creating cache $cache_file" >&6;}
++ >$cache_file
++fi
++
++# Check that the precious variables saved in the cache have kept the same
++# value.
++ac_cache_corrupted=false
++for ac_var in `(set) 2>&1 |
++ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++ eval ac_old_set=\$ac_cv_env_${ac_var}_set
++ eval ac_new_set=\$ac_env_${ac_var}_set
++ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
++ eval ac_new_val="\$ac_env_${ac_var}_value"
++ case $ac_old_set,$ac_new_set in
++ set,)
++ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
++echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
++ ac_cache_corrupted=: ;;
++ ,set)
++ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
++echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
++ ac_cache_corrupted=: ;;
++ ,);;
++ *)
++ if test "x$ac_old_val" != "x$ac_new_val"; then
++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
++echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
++echo "$as_me: former value: $ac_old_val" >&2;}
++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
++echo "$as_me: current value: $ac_new_val" >&2;}
++ ac_cache_corrupted=:
++ fi;;
++ esac
++ # Pass precious variables to config.status.
++ if test "$ac_new_set" = set; then
++ case $ac_new_val in
++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *) ac_arg=$ac_var=$ac_new_val ;;
++ esac
++ case " $ac_configure_args " in
++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
++ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
++ esac
++ fi
++done
++if $ac_cache_corrupted; then
++ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
++echo "$as_me: error: changes in the environment can compromise the build" >&2;}
++ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
++echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++ ac_config_headers="$ac_config_headers config.h"
++
++ac_aux_dir=
++for ac_dir in scripts $srcdir/scripts; do
++ if test -f $ac_dir/install-sh; then
++ ac_aux_dir=$ac_dir
++ ac_install_sh="$ac_aux_dir/install-sh -c"
++ break
++ elif test -f $ac_dir/install.sh; then
++ ac_aux_dir=$ac_dir
++ ac_install_sh="$ac_aux_dir/install.sh -c"
++ break
++ elif test -f $ac_dir/shtool; then
++ ac_aux_dir=$ac_dir
++ ac_install_sh="$ac_aux_dir/shtool install -c"
++ break
++ fi
++done
++if test -z "$ac_aux_dir"; then
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++ac_config_guess="$SHELL $ac_aux_dir/config.guess"
++ac_config_sub="$SHELL $ac_aux_dir/config.sub"
++ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++
++if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
++ { { echo "$as_me:$LINENO: error: you must configure in a separate build directory" >&5
++echo "$as_me: error: you must configure in a separate build directory" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++# This will get text that should go into config.make.
++config_vars=
++
++# Check for a --with-gmp argument and set gmp-srcdir in config.make.
++
++# Check whether --with-gmp or --without-gmp was given.
++if test "${with_gmp+set}" = set; then
++ withval="$with_gmp"
++
++case "$with_gmp" in
++yes) { { echo "$as_me:$LINENO: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" >&5
++echo "$as_me: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" >&2;}
++ { (exit 1); exit 1; }; } ;;
++''|no) ;;
++*) config_vars="$config_vars
++gmp-srcdir = $withval" ;;
++esac
++
++fi;
++# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
++
++# Check whether --with-gd or --without-gd was given.
++if test "${with_gd+set}" = set; then
++ withval="$with_gd"
++ case "$with_gd" in
++yes|''|no) ;;
++*) libgd_include="-I$withval/include"
++ libgd_ldflags="-L$withval/lib" ;;
++esac
++
++fi;
++
++# Check whether --with-gd-include or --without-gd-include was given.
++if test "${with_gd_include+set}" = set; then
++ withval="$with_gd_include"
++ case "$with_gd_include" in
++''|no) ;;
++*) libgd_include="-I$withval" ;;
++esac
++
++fi;
++
++# Check whether --with-gd-lib or --without-gd-lib was given.
++if test "${with_gd_lib+set}" = set; then
++ withval="$with_gd_lib"
++ case "$with_gd_lib" in
++''|no) ;;
++*) libgd_ldflags="-L$withval" ;;
++esac
++
++fi;
++
++if test -n "$libgd_include"; then
++ config_vars="$config_vars
++CFLAGS-memusagestat.c = $libgd_include"
++fi
++if test -n "$libgd_ldflags"; then
++ config_vars="$config_vars
++libgd-LDFLAGS = $libgd_ldflags"
++fi
++
++
++# Check whether --with-fp or --without-fp was given.
++if test "${with_fp+set}" = set; then
++ withval="$with_fp"
++ with_fp=$withval
++else
++ with_fp=yes
++fi;
++
++
++# Check whether --with-binutils or --without-binutils was given.
++if test "${with_binutils+set}" = set; then
++ withval="$with_binutils"
++ path_binutils=$withval
++else
++ path_binutils=''
++fi;
++
++# Check whether --with-elf or --without-elf was given.
++if test "${with_elf+set}" = set; then
++ withval="$with_elf"
++ elf=$withval
++else
++ elf=no
++fi;
++
++# Check whether --with-xcoff or --without-xcoff was given.
++if test "${with_xcoff+set}" = set; then
++ withval="$with_xcoff"
++ xcoff=$withval
++else
++ xcoff=no
++fi;
++
++# Check whether --with-cvs or --without-cvs was given.
++if test "${with_cvs+set}" = set; then
++ withval="$with_cvs"
++ with_cvs=$withval
++else
++ with_cvs=yes
++fi;
++if test "$with_cvs" = yes; then
++ if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
++ then
++ with_cvs=no
++ fi
++fi
++
++
++
++# Check whether --with-headers or --without-headers was given.
++if test "${with_headers+set}" = set; then
++ withval="$with_headers"
++ sysheaders=$withval
++else
++ sysheaders=''
++fi;
++
++# Check whether --enable-sanity-checks or --disable-sanity-checks was given.
++if test "${enable_sanity_checks+set}" = set; then
++ enableval="$enable_sanity_checks"
++ enable_sanity=$enableval
++else
++ enable_sanity=yes
++fi;
++
++
++# Check whether --enable-check-abi or --disable-check-abi was given.
++if test "${enable_check_abi+set}" = set; then
++ enableval="$enable_check_abi"
++ enable_check_abi=$enableval
++else
++ enable_check_abi=no
++fi;
++
++static=yes
++# Check whether --enable-shared or --disable-shared was given.
++if test "${enable_shared+set}" = set; then
++ enableval="$enable_shared"
++ shared=$enableval
++else
++ shared=default
++fi;
++# Check whether --enable-profile or --disable-profile was given.
++if test "${enable_profile+set}" = set; then
++ enableval="$enable_profile"
++ profile=$enableval
++else
++ profile=yes
++fi;
++# Check whether --enable-omitfp or --disable-omitfp was given.
++if test "${enable_omitfp+set}" = set; then
++ enableval="$enable_omitfp"
++ omitfp=$enableval
++else
++ omitfp=no
++fi;
++# Check whether --enable-bounded or --disable-bounded was given.
++if test "${enable_bounded+set}" = set; then
++ enableval="$enable_bounded"
++ bounded=$enableval
++else
++ bounded=no
++fi;
++# Check whether --enable-versioning or --disable-versioning was given.
++if test "${enable_versioning+set}" = set; then
++ enableval="$enable_versioning"
++ enable_versioning=$enableval
++else
++ enable_versioning=yes
++fi;
++
++# Check whether --enable-oldest-abi or --disable-oldest-abi was given.
++if test "${enable_oldest_abi+set}" = set; then
++ enableval="$enable_oldest_abi"
++ oldest_abi=$enableval
++else
++ oldest_abi=no
++fi;
++if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
++ oldest_abi=default
++else
++ cat >>confdefs.h <<_ACEOF
++@%:@define GLIBC_OLDEST_ABI "$oldest_abi"
++_ACEOF
++
++fi
++
++
++# Check whether --enable-add-ons or --disable-add-ons was given.
++if test "${enable_add_ons+set}" = set; then
++ enableval="$enable_add_ons"
++ case "$enableval" in
++ yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
++ test "$add_ons" = "*" && add_ons= ;;
++ *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
++ esac
++else
++ add_ons=
++fi;
++
++
++# Check whether --with-tls or --without-tls was given.
++if test "${with_tls+set}" = set; then
++ withval="$with_tls"
++ usetls=$withval
++else
++ usetls=no
++fi;
++
++
++# Check whether --with-__thread or --without-__thread was given.
++if test "${with___thread+set}" = set; then
++ withval="$with___thread"
++ use__thread=$withval
++else
++ use__thread=yes
++fi;
++
++# Check whether --enable-hidden-plt or --disable-hidden-plt was given.
++if test "${enable_hidden_plt+set}" = set; then
++ enableval="$enable_hidden_plt"
++ hidden=$enableval
++else
++ hidden=yes
++fi;
++if test "x$hidden" = xno; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define NO_HIDDEN 1
++_ACEOF
++
++fi
++
++
++
++subdirs="$subdirs "
++add_ons_pfx=
++if test x"$add_ons" != x; then
++ for f in $add_ons; do
++ # Some sanity checks
++ if test "$f" = "crypt"; then
++ { { echo "$as_me:$LINENO: error:
++*** It seems that you're using an old \`crypt' add-on. crypt is now
++*** part of glibc and using the old add-on will not work with this
++*** release. Start again with fresh sources and without the old
++*** \`crypt' add-on." >&5
++echo "$as_me: error:
++*** It seems that you're using an old \`crypt' add-on. crypt is now
++*** part of glibc and using the old add-on will not work with this
++*** release. Start again with fresh sources and without the old
++*** \`crypt' add-on." >&2;}
++ { (exit 1); exit 1; }; }
++ fi
++ if test "$f" = "localedata"; then
++ { { echo "$as_me:$LINENO: error:
++*** It seems that you're using an old \`localedata' add-on. localedata
++*** is now part of glibc and using the old add-on will not work with
++*** this release. Start again with fresh sources and without the old
++*** \`localedata' add-on." >&5
++echo "$as_me: error:
++*** It seems that you're using an old \`localedata' add-on. localedata
++*** is now part of glibc and using the old add-on will not work with
++*** this release. Start again with fresh sources and without the old
++*** \`localedata' add-on." >&2;}
++ { (exit 1); exit 1; }; }
++ fi
++ # Test whether such a subdir really exists.
++ if test -d $srcdir/$f; then
++ add_ons_pfx="$add_ons_pfx $f/"
++ subdirs="$subdirs $f"
++ else
++ { { echo "$as_me:$LINENO: error: add-on directory \"$f\" does not exist" >&5
++echo "$as_me: error: add-on directory \"$f\" does not exist" >&2;}
++ { (exit 1); exit 1; }; }
++ fi
++ done
++fi
++
++# Check whether --enable-static-nss or --disable-static-nss was given.
++if test "${enable_static_nss+set}" = set; then
++ enableval="$enable_static_nss"
++ static_nss=$enableval
++else
++ static_nss=no
++fi;
++if test x"$static_nss" = xyes || test x"$shared" = xno; then
++ static_nss=yes
++ cat >>confdefs.h <<\_ACEOF
++@%:@define DO_STATIC_NSS 1
++_ACEOF
++
++fi
++
++# Check whether --enable-force-install or --disable-force-install was given.
++if test "${enable_force_install+set}" = set; then
++ enableval="$enable_force_install"
++ force_install=$enableval
++else
++ force_install=yes
++fi;
++
++
++# Check whether --enable-kernel or --disable-kernel was given.
++if test "${enable_kernel+set}" = set; then
++ enableval="$enable_kernel"
++ minimum_kernel=$enableval
++fi;
++if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
++ # Better nothing than this.
++ minimum_kernel=""
++else
++ if test "$minimum_kernel" = current; then
++ minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
++ fi
++fi
++
++# Check whether --enable-all-warnings or --disable-all-warnings was given.
++if test "${enable_all_warnings+set}" = set; then
++ enableval="$enable_all_warnings"
++ all_warnings=$enableval
++fi;
++
++
++# Make sure we can run config.sub.
++$ac_config_sub sun4 >/dev/null 2>&1 ||
++ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
++echo "$as_me: error: cannot run $ac_config_sub" >&2;}
++ { (exit 1); exit 1; }; }
++
++echo "$as_me:$LINENO: checking build system type" >&5
++echo $ECHO_N "checking build system type... $ECHO_C" >&6
++if test "${ac_cv_build+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_cv_build_alias=$build_alias
++test -z "$ac_cv_build_alias" &&
++ ac_cv_build_alias=`$ac_config_guess`
++test -z "$ac_cv_build_alias" &&
++ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
++echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
++ { (exit 1); exit 1; }; }
++ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
++ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
++echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
++ { (exit 1); exit 1; }; }
++
++fi
++echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6
++build=$ac_cv_build
++build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++
++
++echo "$as_me:$LINENO: checking host system type" >&5
++echo $ECHO_N "checking host system type... $ECHO_C" >&6
++if test "${ac_cv_host+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_cv_host_alias=$host_alias
++test -z "$ac_cv_host_alias" &&
++ ac_cv_host_alias=$ac_cv_build_alias
++ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
++ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
++echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
++ { (exit 1); exit 1; }; }
++
++fi
++echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6
++host=$ac_cv_host
++host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
++host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
++host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++
++
++
++# The way shlib-versions is used to generate soversions.mk uses a
++# fairly simplistic model for name recognition that can't distinguish
++# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
++# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
++# tell. This doesn't get used much beyond that, so it's fairly safe.
++case "$host_os" in
++linux*)
++ ;;
++gnu*)
++ host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
++ ;;
++esac
++
++# We keep the original values in `$config_*' and never modify them, so we
++# can write them unchanged into config.make. Everything else uses
++# $machine, $vendor, and $os, and changes them whenever convenient.
++config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
++
++# Don't allow vendor == "unknown"
++test "$config_vendor" = unknown && config_vendor=
++config_os="`echo $config_os | sed 's/^unknown-//'`"
++
++# Some configurations imply other options.
++case "$host_os" in
++gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
++ # These systems always use GNU tools.
++ gnu_ld=yes gnu_as=yes ;;
++esac
++case "$host_os" in
++# i586-linuxaout is mangled into i586-pc-linux-gnuaout
++linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
++ ;;
++gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
++ # These systems (almost) always use the ELF format.
++ elf=yes
++ ;;
++aix*)
++ # These systems are always xcoff
++ xcoff=yes
++ elf=no
++ ;;
++esac
++
++machine=$config_machine
++vendor=$config_vendor
++os=$config_os
++
++# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
++# Unify this here.
++if test "$machine" = rs6000; then
++ machine="powerpc"
++fi
++
++# Braindead PowerPC box with absolutely no FPU.
++case "$machine-$host_os" in
++ powerpc*-*soft)
++ with_fp=no
++ ;;
++esac
++
++###
++### I put this here to prevent those annoying emails from people who cannot
++### read and try to compile glibc on unsupported platforms. --drepper
++###
++### By using the undocumented --enable-hacker-mode option for configure
++### one can skip this test to make the configuration not fail for unsupported
++### platforms.
++###
++if test -z "$enable_hacker_mode"; then
++ case "$machine-$host_os" in
++ *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
++ ;;
++ *)
++ echo "*** The GNU C library is currently not available for this platform."
++ echo "*** So far nobody cared to port it and if there is no volunteer it"
++ echo "*** might never happen. So, if you have interest to see glibc on"
++ echo "*** this platform visit"
++ echo "*** http://www.gnu.org/software/libc/porting.html"
++ echo "*** and join the group of porters"
++ exit 1
++ ;;
++ esac
++fi
++
++# Expand the configuration machine name into a subdirectory by architecture
++# type and particular chip.
++case "$machine" in
++a29k | am29000) base_machine=a29k machine=a29k ;;
++alpha*) base_machine=alpha machine=alpha/$machine ;;
++arm*) base_machine=arm machine=arm/arm32/$machine ;;
++c3[012]) base_machine=cx0 machine=cx0/c30 ;;
++c4[04]) base_machine=cx0 machine=cx0/c40 ;;
++hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
++hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
++i[3456]86) base_machine=i386 machine=i386/$machine ;;
++ia64) base_machine=ia64 machine=ia64 ;;
++m680?0) base_machine=m68k machine=m68k/$machine ;;
++m68k) base_machine=m68k machine=m68k/m68020 ;;
++m88???) base_machine=m88k machine=m88k/$machine ;;
++m88k) base_machine=m88k machine=m88k/m88100 ;;
++mips64*) base_machine=mips64
++ case "$CC $CFLAGS $CPPFLAGS " in
++ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
++ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
++ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
++ *) mips_cc_abi=default ;;
++ esac
++ case $config_os in
++ *abin32*) mips_config_abi=n32 ;;
++ *abi64*|*abin64*) mips_config_abi=64 ;;
++ *abi32*|*abio32*) mips_config_abi=32 ;;
++ *) mips_config_abi=$mips_cc_abi ;;
++ esac
++ case $mips_config_abi in
++ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
++ n32) machine=mips/mips64/n32 ;;
++ 64) machine=mips/mips64/n64 ;;
++ 32) machine=mips/mips32/kern64 ;;
++ esac
++ machine=$machine/$config_machine
++ if test $mips_config_abi != $mips_cc_abi; then
++ # This won't make it to config.make, but we want to
++ # set this in case configure tests depend on it.
++ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
++ fi
++ ;;
++mips*) base_machine=mips machine=mips/mips32/$machine ;;
++powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
++powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
++s390) base_machine=s390 machine=s390/s390-32 ;;
++s390x) base_machine=s390 machine=s390/s390-64 ;;
++sh3*) base_machine=sh machine=sh/sh3 ;;
++sh4*) base_machine=sh machine=sh/sh4 ;;
++sparc | sparcv[67])
++ base_machine=sparc machine=sparc/sparc32 ;;
++sparcv8 | supersparc | hypersparc)
++ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
++sparcv8plus | sparcv8plusa | sparcv9)
++ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
++sparcv8plusb | sparcv9b)
++ base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
++sparc64 | ultrasparc)
++ base_machine=sparc machine=sparc/sparc64 ;;
++sparc64b | ultrasparc3)
++ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
++thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
++*) base_machine=$machine ;;
++esac
++
++
++if test "$base_machine" = "i386"; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define USE_REGPARMS 1
++_ACEOF
++
++fi
++
++# Compute the list of sysdep directories for this configuration.
++# This can take a while to compute.
++sysdep_dir=$srcdir/sysdeps
++echo "$as_me:$LINENO: checking sysdep dirs" >&5
++echo $ECHO_N "checking sysdep dirs... $ECHO_C" >&6
++# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
++os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
++
++case "$os" in
++gnu*)
++ base_os=mach/hurd ;;
++netbsd* | 386bsd* | freebsd* | bsdi*)
++ base_os=unix/bsd/bsd4.4 ;;
++osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
++ base_os=unix/bsd ;;
++sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
++ base_os=unix/sysv ;;
++irix6*)
++ base_os=unix/sysv/irix6/$os ;;
++solaris[2-9]*)
++ base_os=unix/sysv/sysv4 ;;
++hpux*)
++ base_os=unix/sysv/hpux/$os ;;
++aix4.3*)
++ base_os=unix/sysv/aix/aix4.3 ;;
++none)
++ base_os=standalone ;;
++*)
++ base_os='' ;;
++esac
++
++# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
++tail=$os
++ostry=$os
++while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
++ ostry="$ostry /$o"
++ tail=$o
++done
++o=`echo $tail | sed 's/[0-9]*$//'`
++if test $o != $tail; then
++ ostry="$ostry /$o"
++fi
++# For linux-gnu, try linux-gnu, then linux.
++o=`echo $tail | sed 's/-.*$//'`
++if test $o != $tail; then
++ ostry="$ostry /$o"
++fi
++
++# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
++base=
++tail=$base_os
++while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
++ set $b
++ base="$base /$1"
++ tail="$2"
++done
++
++# For sparc/sparc32, try sparc/sparc32 and then sparc.
++mach=
++tail=$machine
++while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
++ set $m
++ # Prepend the machine's FPU directory unless --without-fp.
++ if test "$with_fp" = yes; then
++ mach="$mach /$1/fpu"
++ else
++ mach="$mach /$1/nofpu"
++ fi
++ mach="$mach /$1"
++ tail="$2"
++done
++
++
++# Find what sysdep directories exist.
++sysnames=
++IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++for d in $add_ons_pfx ''; do
++ for b in $base ''; do
++ for m0 in $mach ''; do
++ for v in /$vendor ''; do
++ test "$v" = / && continue
++ for o in /$ostry ''; do
++ test "$o" = / && continue
++ for m in $mach ''; do
++ if test "$m0$b$v$o$m"; then
++ try="${d}sysdeps$m0$b$v$o$m"
++ test -n "$enable_debug_configure" &&
++ echo "$0 DEBUG: try $try" >&2
++ if test -d $srcdir/$try; then
++ sysnames="$sysnames $try"
++ { test -n "$o" || test -n "$b"; } && os_used=t
++ { test -n "$m" || test -n "$m0"; } && machine_used=t
++ fi
++ fi
++ done
++ done
++ done
++ done
++ done
++done
++IFS="$ac_save_ifs"
++
++if test -z "$os_used" && test "$os" != none; then
++ { { echo "$as_me:$LINENO: error: Operating system $os is not supported." >&5
++echo "$as_me: error: Operating system $os is not supported." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++if test -z "$machine_used" && test "$machine" != none; then
++ { { echo "$as_me:$LINENO: error: The $machine is not supported." >&5
++echo "$as_me: error: The $machine is not supported." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++# We have now validated the configuration.
++
++
++# If using ELF, look for an `elf' subdirectory of each machine directory.
++# We prepend these rather than inserting them whereever the machine appears
++# because things specified by the machine's ELF ABI should override
++# OS-specific things, and should always be the same for any OS on the
++# machine (otherwise what's the point of an ABI?).
++if test "$elf" = yes; then
++ elf_dirs=
++ for d in $add_ons_pfx ''; do
++ for m in $mach; do
++ if test -d $srcdir/${d}sysdeps$m/elf; then
++ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
++ fi
++ done
++ done
++ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
++fi
++
++
++# Expand the list of system names into a full list of directories
++# from each element's parent name and Implies file (if present).
++set $sysnames
++names=
++while test $# -gt 0; do
++ name=$1
++ shift
++
++ case " $names " in *" $name "*)
++ # Already in the list.
++ continue
++ esac
++
++ # Report each name as we discover it, so there is no long pause in output.
++ echo $ECHO_N "$name $ECHO_C" >&6
++
++ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
++
++ case $name in
++ /*) xsrcdir= ;;
++ *) xsrcdir=$srcdir/ ;;
++ esac
++ test -n "$enable_debug_configure" &&
++ echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2
++
++ if test -f $xsrcdir$name/Implies; then
++ # Collect more names from the `Implies' file (removing comments).
++ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
++ implied=
++ for x in $implied_candidate; do
++ found=no
++ if test -d $xsrcdir$name_base/$x; then
++ implied="$implied $name_base/$x";
++ found=yes
++ fi
++ for d in $add_ons_pfx ''; do
++ try="${d}sysdeps/$x"
++ case $d in
++ /*) try_srcdir= ;;
++ *) try_srcdir=$srcdir/ ;;
++ esac
++ test -n "$enable_debug_configure" &&
++ echo "DEBUG: $name implied $x try($d) {$try_srcdir}$try" >&2
++ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
++ then
++ implied="$implied $try"
++ found=yes
++ fi
++ done
++ if test $found = no; then
++ { echo "$as_me:$LINENO: WARNING: $name/Implies specifies nonexistent $x" >&5
++echo "$as_me: WARNING: $name/Implies specifies nonexistent $x" >&2;}
++ fi
++ done
++ else
++ implied=
++ fi
++
++ # Add NAME to the list of names.
++ names="$names $name"
++
++ # Find the parent of NAME, using the empty string if it has none.
++ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
++
++ # Add the names implied by NAME, and NAME's parent (if it has one), to
++ # the list of names to be processed (the argument list). We prepend the
++ # implied names to the list and append the parent. We want implied
++ # directories to come before further directories inferred from the
++ # configuration components; this ensures that for sysv4, unix/common
++ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
++ # after sysv4).
++ sysnames="`echo $implied $* $parent`"
++ test -n "$sysnames" && set $sysnames
++done
++
++# Add the default directories.
++default_sysnames=sysdeps/generic
++if test "$elf" = yes; then
++ default_sysnames="sysdeps/generic/elf $default_sysnames"
++fi
++sysnames="$names $default_sysnames"
++
++# The other names were emitted during the scan.
++echo "$as_me:$LINENO: result: $default_sysnames" >&5
++echo "${ECHO_T}$default_sysnames" >&6
++
++
++### Locate tools.
++
++# Find a good install program. We prefer a C program (faster),
++# so one script is as good as another. But avoid the broken or
++# incompatible versions:
++# SysV /etc/install, /usr/sbin/install
++# SunOS /usr/etc/install
++# IRIX /sbin/install
++# AIX /bin/install
++# AmigaOS /C/install, which installs bootblocks on floppy discs
++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
++# AFS /usr/afsws/bin/install, which mishandles nonexistent args
++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
++# ./install, which can be erroneously created by make from ./install.sh.
++echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++if test -z "$INSTALL"; then
++if test "${ac_cv_path_install+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ # Account for people who put trailing slashes in PATH elements.
++case $as_dir/ in
++ ./ | .// | /cC/* | \
++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
++ /usr/ucb/* ) ;;
++ *)
++ # OSF1 and SCO ODT 3.0 have their own names for install.
++ # Don't use installbsd from OSF since it installs stuff as root
++ # by default.
++ for ac_prog in ginstall scoinst install; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if test $ac_prog = install &&
++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
++ # AIX install. It has an incompatible calling convention.
++ :
++ elif test $ac_prog = install &&
++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
++ # program-specific install script used by HP pwplus--don't use.
++ :
++ else
++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
++ break 3
++ fi
++ fi
++ done
++ done
++ ;;
++esac
++done
++
++
++fi
++ if test "${ac_cv_path_install+set}" = set; then
++ INSTALL=$ac_cv_path_install
++ else
++ # As a last resort, use the slow shell script. We don't cache a
++ # path for INSTALL within a source directory, because that will
++ # break other packages using the cache if that directory is
++ # removed, or if the path is relative.
++ INSTALL=$ac_install_sh
++ fi
++fi
++echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6
++
++# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
++# It thinks the first close brace ends the variable substitution.
++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
++
++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
++
++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
++
++if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
++ # The makefiles need to use a different form to find it in $srcdir.
++ INSTALL='\$(..)./scripts/install-sh -c'
++fi
++echo "$as_me:$LINENO: checking whether ln -s works" >&5
++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
++LN_S=$as_ln_s
++if test "$LN_S" = "ln -s"; then
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++else
++ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
++echo "${ECHO_T}no, using $LN_S" >&6
++fi
++
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
++set dummy ${ac_tool_prefix}gcc; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CC="${ac_tool_prefix}gcc"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++fi
++if test -z "$ac_cv_prog_CC"; then
++ ac_ct_CC=$CC
++ # Extract the first word of "gcc", so it can be a program name with args.
++set dummy gcc; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_CC"; then
++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_CC="gcc"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++ac_ct_CC=$ac_cv_prog_ac_ct_CC
++if test -n "$ac_ct_CC"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ CC=$ac_ct_CC
++else
++ CC="$ac_cv_prog_CC"
++fi
++
++if test -z "$CC"; then
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++set dummy ${ac_tool_prefix}cc; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CC="${ac_tool_prefix}cc"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++fi
++if test -z "$ac_cv_prog_CC"; then
++ ac_ct_CC=$CC
++ # Extract the first word of "cc", so it can be a program name with args.
++set dummy cc; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_CC"; then
++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_CC="cc"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++ac_ct_CC=$ac_cv_prog_ac_ct_CC
++if test -n "$ac_ct_CC"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ CC=$ac_ct_CC
++else
++ CC="$ac_cv_prog_CC"
++fi
++
++fi
++if test -z "$CC"; then
++ # Extract the first word of "cc", so it can be a program name with args.
++set dummy cc; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++ ac_prog_rejected=no
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
++ ac_prog_rejected=yes
++ continue
++ fi
++ ac_cv_prog_CC="cc"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++if test $ac_prog_rejected = yes; then
++ # We found a bogon in the path, so make sure we never use it.
++ set dummy $ac_cv_prog_CC
++ shift
++ if test $@%:@ != 0; then
++ # We chose a different compiler from the bogus one.
++ # However, it has the same basename, so the bogon will be chosen
++ # first if we set CC to just the basename; use the full file name.
++ shift
++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
++ fi
++fi
++fi
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++fi
++if test -z "$CC"; then
++ if test -n "$ac_tool_prefix"; then
++ for ac_prog in cl
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$CC" && break
++ done
++fi
++if test -z "$CC"; then
++ ac_ct_CC=$CC
++ for ac_prog in cl
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_CC"; then
++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_CC="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++ac_ct_CC=$ac_cv_prog_ac_ct_CC
++if test -n "$ac_ct_CC"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$ac_ct_CC" && break
++done
++
++ CC=$ac_ct_CC
++fi
++
++fi
++
++
++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
++See \`config.log' for more details." >&5
++echo "$as_me: error: no acceptable C compiler found in \$PATH
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; }
++
++# Provide some information about the compiler.
++echo "$as_me:$LINENO:" \
++ "checking for C compiler version" >&5
++ac_compiler=`set X $ac_compile; echo $2`
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
++ (eval $ac_compiler --version </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
++ (eval $ac_compiler -v </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
++ (eval $ac_compiler -V </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++
++EXEEXT=
++echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++if test "${ac_cv_objext+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.o conftest.obj
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; then
++ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
++ break;;
++ esac
++done
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
++See \`config.log' for more details." >&5
++echo "$as_me: error: cannot compute suffix of object files: cannot compile
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++rm -f conftest.$ac_cv_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6
++OBJEXT=$ac_cv_objext
++ac_objext=$OBJEXT
++echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++if test "${ac_cv_c_compiler_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++#ifndef __GNUC__
++ choke me
++#endif
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_compiler_gnu=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_compiler_gnu=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ac_cv_c_compiler_gnu=$ac_compiler_gnu
++
++fi
++echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++GCC=`test $ac_compiler_gnu = yes && echo yes`
++ac_test_CFLAGS=${CFLAGS+set}
++ac_save_CFLAGS=$CFLAGS
++CFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++if test "${ac_cv_prog_cc_g+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_prog_cc_g=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++if test "$ac_test_CFLAGS" = set; then
++ CFLAGS=$ac_save_CFLAGS
++elif test $ac_cv_prog_cc_g = yes; then
++ if test "$GCC" = yes; then
++ CFLAGS="-g -O2"
++ else
++ CFLAGS="-g"
++ fi
++else
++ if test "$GCC" = yes; then
++ CFLAGS="-O2"
++ else
++ CFLAGS=
++ fi
++fi
++echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
++echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
++if test "${ac_cv_prog_cc_stdc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_cv_prog_cc_stdc=no
++ac_save_CC=$CC
++cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdarg.h>
++#include <stdio.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
++struct buf { int x; };
++FILE * (*rcsopen) (struct buf *, struct stat *, int);
++static char *e (p, i)
++ char **p;
++ int i;
++{
++ return p[i];
++}
++static char *f (char * (*g) (char **, int), char **p, ...)
++{
++ char *s;
++ va_list v;
++ va_start (v,p);
++ s = g (p, va_arg (v,int));
++ va_end (v);
++ return s;
++}
++int test (int i, double x);
++struct s1 {int (*f) (int a);};
++struct s2 {int (*f) (double a);};
++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
++int argc;
++char **argv;
++int
++main ()
++{
++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
++ ;
++ return 0;
++}
++_ACEOF
++# Don't try gcc -ansi; that turns off useful extensions and
++# breaks some systems' header files.
++# AIX -qlanglvl=ansi
++# Ultrix and OSF/1 -std1
++# HP-UX 10.20 and later -Ae
++# HP-UX older versions -Aa -D_HPUX_SOURCE
++# SVR4 -Xc -D__EXTENSIONS__
++for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++do
++ CC="$ac_save_CC $ac_arg"
++ rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_prog_cc_stdc=$ac_arg
++break
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.$ac_objext
++done
++rm -f conftest.$ac_ext conftest.$ac_objext
++CC=$ac_save_CC
++
++fi
++
++case "x$ac_cv_prog_cc_stdc" in
++ x|xno)
++ echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6 ;;
++ *)
++ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
++ CC="$CC $ac_cv_prog_cc_stdc" ;;
++esac
++
++# Some people use a C++ compiler to compile C. Since we use `exit',
++# in C++ we need to declare it. In case someone uses the same compiler
++# for both compiling C and C++ we need to have the C++ compiler decide
++# the declaration of exit, since it's the most demanding environment.
++cat >conftest.$ac_ext <<_ACEOF
++@%:@ifndef __cplusplus
++ choke me
++@%:@endif
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ for ac_declaration in \
++ '' \
++ 'extern "C" void std::exit (int) throw (); using std::exit;' \
++ 'extern "C" void std::exit (int); using std::exit;' \
++ 'extern "C" void exit (int) throw ();' \
++ 'extern "C" void exit (int);' \
++ 'void exit (int);'
++do
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++@%:@include <stdlib.h>
++int
++main ()
++{
++exit (42);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++continue
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++int
++main ()
++{
++exit (42);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ break
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++done
++rm -f conftest*
++if test -n "$ac_declaration"; then
++ echo '#ifdef __cplusplus' >>confdefs.h
++ echo $ac_declaration >>confdefs.h
++ echo '#endif' >>confdefs.h
++fi
++
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++if test $host != $build; then
++ for ac_prog in gcc cc
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_BUILD_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$BUILD_CC"; then
++ ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_BUILD_CC="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++BUILD_CC=$ac_cv_prog_BUILD_CC
++if test -n "$BUILD_CC"; then
++ echo "$as_me:$LINENO: result: $BUILD_CC" >&5
++echo "${ECHO_T}$BUILD_CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$BUILD_CC" && break
++done
++
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++# On Suns, sometimes $CPP names a directory.
++if test -n "$CPP" && test -d "$CPP"; then
++ CPP=
++fi
++if test -z "$CPP"; then
++ if test "${ac_cv_prog_CPP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Double quotes because CPP needs to be expanded
++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
++ do
++ ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++@%:@ifdef __STDC__
++@%:@ include <limits.h>
++@%:@else
++@%:@ include <assert.h>
++@%:@endif
++ Syntax error
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether non-existent headers
++ # can be detected and how.
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++@%:@include <ac_nonexistent.h>
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ # Broken: success on invalid input.
++continue
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then
++ break
++fi
++
++ done
++ ac_cv_prog_CPP=$CPP
++
++fi
++ CPP=$ac_cv_prog_CPP
++else
++ ac_cv_prog_CPP=$CPP
++fi
++echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6
++ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++@%:@ifdef __STDC__
++@%:@ include <limits.h>
++@%:@else
++@%:@ include <assert.h>
++@%:@endif
++ Syntax error
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether non-existent headers
++ # can be detected and how.
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++@%:@include <ac_nonexistent.h>
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ # Broken: success on invalid input.
++continue
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then
++ :
++else
++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details." >&5
++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++# We need the C++ compiler only for testing.
++ac_ext=cc
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CXX+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CXX"; then
++ ac_cv_prog_CXX="$CXX" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CXX=$ac_cv_prog_CXX
++if test -n "$CXX"; then
++ echo "$as_me:$LINENO: result: $CXX" >&5
++echo "${ECHO_T}$CXX" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$CXX" && break
++ done
++fi
++if test -z "$CXX"; then
++ ac_ct_CXX=$CXX
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_CXX"; then
++ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_CXX="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
++if test -n "$ac_ct_CXX"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
++echo "${ECHO_T}$ac_ct_CXX" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$ac_ct_CXX" && break
++done
++test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
++
++ CXX=$ac_ct_CXX
++fi
++
++
++# Provide some information about the compiler.
++echo "$as_me:$LINENO:" \
++ "checking for C++ compiler version" >&5
++ac_compiler=`set X $ac_compile; echo $2`
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
++ (eval $ac_compiler --version </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
++ (eval $ac_compiler -v </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
++ (eval $ac_compiler -V </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++
++echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
++if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++#ifndef __GNUC__
++ choke me
++#endif
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_compiler_gnu=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_compiler_gnu=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
++
++fi
++echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
++GXX=`test $ac_compiler_gnu = yes && echo yes`
++ac_test_CXXFLAGS=${CXXFLAGS+set}
++ac_save_CXXFLAGS=$CXXFLAGS
++CXXFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
++if test "${ac_cv_prog_cxx_g+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_prog_cxx_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_prog_cxx_g=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
++if test "$ac_test_CXXFLAGS" = set; then
++ CXXFLAGS=$ac_save_CXXFLAGS
++elif test $ac_cv_prog_cxx_g = yes; then
++ if test "$GXX" = yes; then
++ CXXFLAGS="-g -O2"
++ else
++ CXXFLAGS="-g"
++ fi
++else
++ if test "$GXX" = yes; then
++ CXXFLAGS="-O2"
++ else
++ CXXFLAGS=
++ fi
++fi
++for ac_declaration in \
++ '' \
++ 'extern "C" void std::exit (int) throw (); using std::exit;' \
++ 'extern "C" void std::exit (int); using std::exit;' \
++ 'extern "C" void exit (int) throw ();' \
++ 'extern "C" void exit (int);' \
++ 'void exit (int);'
++do
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++@%:@include <stdlib.h>
++int
++main ()
++{
++exit (42);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++continue
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_declaration
++int
++main ()
++{
++exit (42);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ break
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++done
++rm -f conftest*
++if test -n "$ac_declaration"; then
++ echo '#ifdef __cplusplus' >>confdefs.h
++ echo $ac_declaration >>confdefs.h
++ echo '#endif' >>confdefs.h
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++# Was a --with-binutils option given?
++if test -n "$path_binutils"; then
++ # Make absolute; ensure a single trailing slash.
++ path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
++ CC="$CC -B$path_binutils"
++fi
++AS=`$CC -print-prog-name=as`
++LD=`$CC -print-prog-name=ld`
++AR=`$CC -print-prog-name=ar`
++
++OBJDUMP=`$CC -print-prog-name=objdump`
++
++
++# ranlib has to be treated a bit differently since it might not exist at all.
++ac_ranlib=`$CC -print-prog-name=ranlib`
++if test "x$ac_ranlib" = xranlib; then
++# This extra check has to happen since gcc simply echos the parameter in
++# case it cannot find the value in its own directories.
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
++set dummy ${ac_tool_prefix}ranlib; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_RANLIB+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$RANLIB"; then
++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++RANLIB=$ac_cv_prog_RANLIB
++if test -n "$RANLIB"; then
++ echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++fi
++if test -z "$ac_cv_prog_RANLIB"; then
++ ac_ct_RANLIB=$RANLIB
++ # Extract the first word of "ranlib", so it can be a program name with args.
++set dummy ranlib; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_RANLIB"; then
++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_RANLIB="ranlib"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
++fi
++fi
++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
++if test -n "$ac_ct_RANLIB"; then
++ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ RANLIB=$ac_ct_RANLIB
++else
++ RANLIB="$ac_cv_prog_RANLIB"
++fi
++
++else
++ RANLIB=$ac_ranlib
++fi
++
++
++# Determine whether we are using GNU binutils.
++echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
++echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6
++if test "${libc_cv_prog_as_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Most GNU programs take a -v and spit out some text including
++# the word 'GNU'. Some try to read stdin, so give them /dev/null.
++if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
++ libc_cv_prog_as_gnu=yes
++else
++ libc_cv_prog_as_gnu=no
++fi
++rm -fr contest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
++echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6
++rm -f a.out
++gnu_as=$libc_cv_prog_as_gnu
++
++echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
++echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6
++if test "${libc_cv_prog_ld_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Most GNU programs take a -v and spit out some text including
++# the word 'GNU'. Some try to read stdin, so give them /dev/null.
++if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
++ libc_cv_prog_ld_gnu=yes
++else
++ libc_cv_prog_ld_gnu=no
++fi
++rm -fr contest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
++echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6
++gnu_ld=$libc_cv_prog_ld_gnu
++
++
++# Accept binutils 2.13 or newer.
++for ac_prog in $AS
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_AS+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$AS"; then
++ ac_cv_prog_AS="$AS" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_AS="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++AS=$ac_cv_prog_AS
++if test -n "$AS"; then
++ echo "$as_me:$LINENO: result: $AS" >&5
++echo "${ECHO_T}$AS" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$AS" && break
++done
++
++if test -z "$AS"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $AS" >&5
++echo $ECHO_N "checking version of $AS... $ECHO_C" >&6
++ ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 2.1[3-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ AS=: critic_missing="$critic_missing as"
++fi
++
++for ac_prog in $LD
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_LD+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$LD"; then
++ ac_cv_prog_LD="$LD" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_LD="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++LD=$ac_cv_prog_LD
++if test -n "$LD"; then
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$LD" && break
++done
++
++if test -z "$LD"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $LD" >&5
++echo $ECHO_N "checking version of $LD... $ECHO_C" >&6
++ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 2.1[3-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ LD=: critic_missing="$critic_missing ld"
++fi
++
++
++# We need the physical current working directory. We cannot use the
++# "pwd -P" shell builtin since that's not portable. Instead we try to
++# find a pwd binary. Note that assigning to the PWD environment
++# variable might have some interesting side effects, so we don't do
++# that.
++# Extract the first word of "pwd", so it can be a program name with args.
++set dummy pwd; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PWD_P+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PWD_P in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
++ ;;
++esac
++fi
++PWD_P=$ac_cv_path_PWD_P
++
++if test -n "$PWD_P"; then
++ echo "$as_me:$LINENO: result: $PWD_P" >&5
++echo "${ECHO_T}$PWD_P" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++if test "$PWD_P" = no; then
++ { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
++echo "$as_me: error: *** A pwd binary could not be found." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++# These programs are version sensitive.
++
++for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CC="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$CC" && break
++done
++
++if test -z "$CC"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $CC" >&5
++echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
++ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 3.[2-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ critic_missing="$critic_missing gcc"
++fi
++
++for ac_prog in gnumake gmake make
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_MAKE+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$MAKE"; then
++ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MAKE="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++MAKE=$ac_cv_prog_MAKE
++if test -n "$MAKE"; then
++ echo "$as_me:$LINENO: result: $MAKE" >&5
++echo "${ECHO_T}$MAKE" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$MAKE" && break
++done
++
++if test -z "$MAKE"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $MAKE" >&5
++echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
++ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 3.79* | 3.[89]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ critic_missing="$critic_missing make"
++fi
++
++
++for ac_prog in gnumsgfmt gmsgfmt msgfmt
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_MSGFMT+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$MSGFMT"; then
++ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MSGFMT="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++MSGFMT=$ac_cv_prog_MSGFMT
++if test -n "$MSGFMT"; then
++ echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$MSGFMT" && break
++done
++
++if test -z "$MSGFMT"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
++echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
++ ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ MSGFMT=: aux_missing="$aux_missing msgfmt"
++fi
++
++for ac_prog in makeinfo
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_MAKEINFO+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$MAKEINFO"; then
++ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_MAKEINFO="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++MAKEINFO=$ac_cv_prog_MAKEINFO
++if test -n "$MAKEINFO"; then
++ echo "$as_me:$LINENO: result: $MAKEINFO" >&5
++echo "${ECHO_T}$MAKEINFO" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$MAKEINFO" && break
++done
++
++if test -z "$MAKEINFO"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
++echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
++ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 4.*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ MAKEINFO=: aux_missing="$aux_missing makeinfo"
++fi
++
++for ac_prog in sed
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_SED+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$SED"; then
++ ac_cv_prog_SED="$SED" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_SED="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++SED=$ac_cv_prog_SED
++if test -n "$SED"; then
++ echo "$as_me:$LINENO: result: $SED" >&5
++echo "${ECHO_T}$SED" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$SED" && break
++done
++
++if test -z "$SED"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $SED" >&5
++echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
++ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 3.0[2-9]*|3.[1-9]*|[4-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ SED=: aux_missing="$aux_missing sed"
++fi
++
++
++for ac_prog in autoconf
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_AUTOCONF+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$AUTOCONF"; then
++ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_AUTOCONF="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++AUTOCONF=$ac_cv_prog_AUTOCONF
++if test -n "$AUTOCONF"; then
++ echo "$as_me:$LINENO: result: $AUTOCONF" >&5
++echo "${ECHO_T}$AUTOCONF" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$AUTOCONF" && break
++done
++test -n "$AUTOCONF" || AUTOCONF="no"
++
++case "x$AUTOCONF" in
++xno|x|x:) AUTOCONF=no ;;
++*)
++ echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
++echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
++if test "${libc_cv_autoconf_works+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
++ libc_cv_autoconf_works=yes
++ else
++ libc_cv_autoconf_works=no
++ fi
++fi
++echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
++echo "${ECHO_T}$libc_cv_autoconf_works" >&6
++ test $libc_cv_autoconf_works = yes || AUTOCONF=no
++ ;;
++esac
++if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
++ # If --without-cvs they probably won't change configure.in, so no complaints.
++ aux_missing="$aux_missing autoconf"
++fi
++
++test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
++*** These critical programs are missing or too old:$critic_missing
++*** Check the INSTALL file for required versions." >&5
++echo "$as_me: error:
++*** These critical programs are missing or too old:$critic_missing
++*** Check the INSTALL file for required versions." >&2;}
++ { (exit 1); exit 1; }; }
++
++test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING:
++*** These auxiliary programs are missing or incompatible versions:$aux_missing
++*** some features will be disabled.
++*** Check the INSTALL file for required versions." >&5
++echo "$as_me: WARNING:
++*** These auxiliary programs are missing or incompatible versions:$aux_missing
++*** some features will be disabled.
++*** Check the INSTALL file for required versions." >&2;}
++
++# glibcbug.in wants to know the compiler version.
++CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
++
++
++# if using special system headers, find out the compiler's sekrit
++# header directory and add that to the list. NOTE: Only does the right
++# thing on a system that doesn't need fixincludes. (Not presently a problem.)
++if test -n "$sysheaders"; then
++ ccheaders=`$CC -print-file-name=include`
++ SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
++fi
++
++
++# check if ranlib is necessary
++echo "$as_me:$LINENO: checking whether ranlib is necessary" >&5
++echo $ECHO_N "checking whether ranlib is necessary... $ECHO_C" >&6
++if test "${libc_cv_ranlib_necessary+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++int a;
++char b;
++void c(void) {}
++EOF
++$CC $CFLAGS $CPPFLAGS -c conftest.c
++$AR cr conftest.a conftest.o
++cp conftest.a conftest2.a
++$RANLIB conftest.a
++if cmp -s conftest.a conftest2.a; then
++ libc_cv_ranlib_necessary=no
++else
++ libc_cv_ranlib_necessary=yes
++fi
++rm -rf conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_ranlib_necessary" >&5
++echo "${ECHO_T}$libc_cv_ranlib_necessary" >&6
++if test "$libc_cv_ranlib_necessary" = no; then
++ RANLIB=:
++fi
++
++# Test if LD_LIBRARY_PATH contains the notation for the current directory
++# since this would lead to problems installing/building glibc.
++# LD_LIBRARY_PATH contains the current directory if one of the following
++# is true:
++# - one of the terminals (":" and ";") is the first or last sign
++# - two terminals occur directly after each other
++# - the path contains an element with a dot in it
++echo "$as_me:$LINENO: checking LD_LIBRARY_PATH variable" >&5
++echo $ECHO_N "checking LD_LIBRARY_PATH variable... $ECHO_C" >&6
++case ${LD_LIBRARY_PATH} in
++ [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
++ ld_library_path_setting="contains current directory"
++ ;;
++ *)
++ ld_library_path_setting="ok"
++ ;;
++esac
++echo "$as_me:$LINENO: result: $ld_library_path_setting" >&5
++echo "${ECHO_T}$ld_library_path_setting" >&6
++if test "$ld_library_path_setting" != "ok"; then
++{ { echo "$as_me:$LINENO: error:
++*** LD_LIBRARY_PATH shouldn't contain the current directory when
++*** building glibc. Please change the environment variable
++*** and run configure again." >&5
++echo "$as_me: error:
++*** LD_LIBRARY_PATH shouldn't contain the current directory when
++*** building glibc. Please change the environment variable
++*** and run configure again." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++echo "$as_me:$LINENO: checking whether GCC supports -static-libgcc" >&5
++echo $ECHO_N "checking whether GCC supports -static-libgcc... $ECHO_C" >&6
++if test "${libc_cv_gcc_static_libgcc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
++ libc_cv_gcc_static_libgcc=
++else
++ libc_cv_gcc_static_libgcc=-static-libgcc
++fi
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_static_libgcc" >&5
++echo "${ECHO_T}$libc_cv_gcc_static_libgcc" >&6
++
++
++# Extract the first word of "bash", so it can be a program name with args.
++set dummy bash; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_BASH+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $BASH in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_BASH" && ac_cv_path_BASH="no"
++ ;;
++esac
++fi
++BASH=$ac_cv_path_BASH
++
++if test -n "$BASH"; then
++ echo "$as_me:$LINENO: result: $BASH" >&5
++echo "${ECHO_T}$BASH" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++if test "$BASH" != no &&
++ $BASH -c 'test "$BASH_VERSINFO" \
++ && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
++ libc_cv_have_bash2=yes
++else
++ libc_cv_have_bash2=no
++fi
++
++
++if test "$BASH" = no; then
++ # Extract the first word of "ksh", so it can be a program name with args.
++set dummy ksh; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_KSH+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $KSH in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_KSH="$KSH" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_KSH="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_KSH" && ac_cv_path_KSH="no"
++ ;;
++esac
++fi
++KSH=$ac_cv_path_KSH
++
++if test -n "$KSH"; then
++ echo "$as_me:$LINENO: result: $KSH" >&5
++echo "${ECHO_T}$KSH" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ if test "$KSH" = no; then
++ libc_cv_have_ksh=no
++ else
++ libc_cv_have_ksh=yes
++ fi
++else
++ KSH="$BASH"
++
++ libc_cv_have_ksh=yes
++fi
++
++
++for ac_prog in gawk mawk nawk awk
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_AWK+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$AWK"; then
++ ac_cv_prog_AWK="$AWK" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_AWK="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++AWK=$ac_cv_prog_AWK
++if test -n "$AWK"; then
++ echo "$as_me:$LINENO: result: $AWK" >&5
++echo "${ECHO_T}$AWK" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$AWK" && break
++done
++
++# Extract the first word of "perl", so it can be a program name with args.
++set dummy perl; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PERL+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PERL in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no"
++ ;;
++esac
++fi
++PERL=$ac_cv_path_PERL
++
++if test -n "$PERL"; then
++ echo "$as_me:$LINENO: result: $PERL" >&5
++echo "${ECHO_T}$PERL" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++if test "$PERL" != no &&
++ (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
++ PERL=no
++fi
++# Extract the first word of "install-info", so it can be a program name with args.
++set dummy install-info; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_INSTALL_INFO+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $INSTALL_INFO in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++as_dummy="$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
++for as_dir in $as_dummy
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="no"
++ ;;
++esac
++fi
++INSTALL_INFO=$ac_cv_path_INSTALL_INFO
++
++if test -n "$INSTALL_INFO"; then
++ echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5
++echo "${ECHO_T}$INSTALL_INFO" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++if test "$INSTALL_INFO" != "no"; then
++echo "$as_me:$LINENO: checking for old Debian install-info" >&5
++echo $ECHO_N "checking for old Debian install-info... $ECHO_C" >&6
++if test "${libc_cv_old_debian_install_info+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ mkdir conftest.d
++ # There is a hard ^_ on the next line. I am open to better ideas.
++ (echo ''
++ echo 'File: dir Node: Top This is the top of the INFO tree'
++ echo '* Menu:') >conftest.d/dir
++ (echo 'INFO-DIR-SECTION i-d-s works'
++ echo 'START-INFO-DIR-ENTRY'
++ echo '* Prog: (prog). Program.'
++ echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
++ if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&5 2>&1
++ then
++ if grep -s 'i-d-s works' conftest.d/dir >/dev/null
++ then libc_cv_old_debian_install_info=no
++ else libc_cv_old_debian_install_info=yes
++ fi
++ else libc_cv_old_debian_install_info=no testfailed=t
++ fi
++ rm -fr conftest.d
++fi
++echo "$as_me:$LINENO: result: $libc_cv_old_debian_install_info" >&5
++echo "${ECHO_T}$libc_cv_old_debian_install_info" >&6
++if test -n "$testfailed"
++then { echo "$as_me:$LINENO: WARNING: install-info errored out, check config.log" >&5
++echo "$as_me: WARNING: install-info errored out, check config.log" >&2;}
++fi
++OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
++fi
++
++
++# Extract the first word of "bison", so it can be a program name with args.
++set dummy bison; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_BISON+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $BISON in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_BISON="$BISON" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++as_dummy="$PATH:/usr/local/bin:/usr/bin:/bin"
++for as_dir in $as_dummy
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="no"
++ ;;
++esac
++fi
++BISON=$ac_cv_path_BISON
++
++if test -n "$BISON"; then
++ echo "$as_me:$LINENO: result: $BISON" >&5
++echo "${ECHO_T}$BISON" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++
++echo "$as_me:$LINENO: checking for signed size_t type" >&5
++echo $ECHO_N "checking for signed size_t type... $ECHO_C" >&6
++if test "${libc_cv_signed_size_t+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ echo '#include <stddef.h>
++FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
++if eval "$ac_cpp conftest.c 2>/dev/null" \
++| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
++ libc_cv_signed_size_t=no
++else
++ libc_cv_signed_size_t=yes
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_signed_size_t" >&5
++echo "${ECHO_T}$libc_cv_signed_size_t" >&6
++if test $libc_cv_signed_size_t = yes; then
++ cat >> confdefs.h <<\EOF
++#undef __SIZE_TYPE__
++#define __SIZE_TYPE__ unsigned
++EOF
++fi
++
++
++echo "$as_me:$LINENO: checking for libc-friendly stddef.h" >&5
++echo $ECHO_N "checking for libc-friendly stddef.h... $ECHO_C" >&6
++if test "${libc_cv_friendly_stddef+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#define __need_size_t
++#define __need_wchar_t
++#include <stddef.h>
++#define __need_NULL
++#include <stddef.h>
++int
++main ()
++{
++size_t size; wchar_t wchar;
++#ifdef offsetof
++#error stddef.h ignored __need_*
++#endif
++if (&size == NULL || &wchar == NULL) abort ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_friendly_stddef=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++libc_cv_friendly_stddef=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $libc_cv_friendly_stddef" >&5
++echo "${ECHO_T}$libc_cv_friendly_stddef" >&6
++if test $libc_cv_friendly_stddef = yes; then
++ config_vars="$config_vars
++override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
++fi
++
++echo "$as_me:$LINENO: checking whether we need to use -P to assemble .S files" >&5
++echo $ECHO_N "checking whether we need to use -P to assemble .S files... $ECHO_C" >&6
++if test "${libc_cv_need_minus_P+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.S <<EOF
++#include "confdefs.h"
++/* Nothing whatsoever. */
++EOF
++if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_need_minus_P=no
++else
++ libc_cv_need_minus_P=yes
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_need_minus_P" >&5
++echo "${ECHO_T}$libc_cv_need_minus_P" >&6
++if test $libc_cv_need_minus_P = yes; then
++ config_vars="$config_vars
++asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
++fi
++
++echo "$as_me:$LINENO: checking whether .text pseudo-op must be used" >&5
++echo $ECHO_N "checking whether .text pseudo-op must be used... $ECHO_C" >&6
++if test "${libc_cv_dot_text+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++.text
++EOF
++libc_cv_dot_text=
++if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_dot_text=.text
++fi
++rm -f conftest*
++fi
++
++if test -z "$libc_cv_dot_text"; then
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++else
++ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6
++fi
++
++echo "$as_me:$LINENO: checking for assembler global-symbol directive" >&5
++echo $ECHO_N "checking for assembler global-symbol directive... $ECHO_C" >&6
++if test "${libc_cv_asm_global_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ libc_cv_asm_global_directive=UNKNOWN
++for ac_globl in .globl .global .EXPORT; do
++ cat > conftest.s <<EOF
++ ${libc_cv_dot_text}
++ ${ac_globl} foo
++foo:
++EOF
++ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_global_directive=${ac_globl}
++ fi
++ rm -f conftest*
++ test $libc_cv_asm_global_directive != UNKNOWN && break
++done
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_global_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_global_directive" >&6
++if test $libc_cv_asm_global_directive = UNKNOWN; then
++ { { echo "$as_me:$LINENO: error: cannot determine asm global directive" >&5
++echo "$as_me: error: cannot determine asm global directive" >&2;}
++ { (exit 1); exit 1; }; }
++else
++ cat >>confdefs.h <<_ACEOF
++@%:@define ASM_GLOBAL_DIRECTIVE ${libc_cv_asm_global_directive}
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking for .set assembler directive" >&5
++echo $ECHO_N "checking for .set assembler directive... $ECHO_C" >&6
++if test "${libc_cv_asm_set_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++${libc_cv_dot_text}
++foo:
++.set glibc_conftest_frobozz,foo
++$libc_cv_asm_global_directive glibc_conftest_frobozz
++EOF
++# The alpha-dec-osf1 assembler gives only a warning for `.set'
++# (but it doesn't work), so we must do a linking check to be sure.
++cat > conftest1.c <<\EOF
++extern int glibc_conftest_frobozz;
++void _start() { glibc_conftest_frobozz = 1; }
++EOF
++if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
++ -nostartfiles -nostdlib \
++ -o conftest conftest.s conftest1.c 1>&5 2>&5; then
++ libc_cv_asm_set_directive=yes
++else
++ libc_cv_asm_set_directive=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_set_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_set_directive" >&6
++if test $libc_cv_asm_set_directive = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_SET_DIRECTIVE 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking for assembler .type directive prefix" >&5
++echo $ECHO_N "checking for assembler .type directive prefix... $ECHO_C" >&6
++if test "${libc_cv_asm_type_prefix+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ libc_cv_asm_type_prefix=no
++for ac_try_prefix in '@' '%' '#'; do
++ cat > conftest.s <<EOF
++ ${libc_cv_dot_text}
++ ${libc_cv_asm_global_directive} foo
++ .type foo, ${ac_try_prefix}object
++ .size foo, 1
++foo:
++ .byte 1
++EOF
++ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_type_prefix=${ac_try_prefix}
++ fi
++ rm -f conftest*
++ test "x$libc_cv_asm_type_prefix" != xno && break
++done
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_type_prefix" >&5
++echo "${ECHO_T}$libc_cv_asm_type_prefix" >&6
++if test "x$libc_cv_asm_type_prefix" != xno; then
++ cat >>confdefs.h <<_ACEOF
++@%:@define ASM_TYPE_DIRECTIVE_PREFIX ${libc_cv_asm_type_prefix}
++_ACEOF
++
++fi
++
++# The Aix ld uses global .symbol_names instead of symbol_names.
++# Unfortunately also used in the PPC64 ELF ABI.
++case "${os}${machine}" in
++aix4.3* | linux*powerpc/powerpc64*)
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_GLOBAL_DOT_NAME 1
++_ACEOF
++
++esac
++
++echo "$as_me:$LINENO: checking for .symver assembler directive" >&5
++echo $ECHO_N "checking for .symver assembler directive... $ECHO_C" >&6
++if test "${libc_cv_asm_symver_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++${libc_cv_dot_text}
++_sym:
++.symver _sym,sym@VERS
++EOF
++if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
++ libc_cv_asm_symver_directive=yes
++else
++ libc_cv_asm_symver_directive=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_symver_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_symver_directive" >&6
++echo "$as_me:$LINENO: checking for ld --version-script" >&5
++echo $ECHO_N "checking for ld --version-script... $ECHO_C" >&6
++if test "${libc_cv_ld_version_script_option+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test $libc_cv_asm_symver_directive = yes; then
++ cat > conftest.s <<EOF
++${libc_cv_dot_text}
++_sym:
++.symver _sym,sym@VERS
++EOF
++ cat > conftest.map <<EOF
++VERS_1 {
++ global: sym;
++};
++
++VERS_2 {
++ global: sym;
++} VERS_1;
++EOF
++ if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
++ if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared
++ -o conftest.so conftest.o
++ -nostartfiles -nostdlib
++ -Wl,--version-script,conftest.map
++ 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; };
++ then
++ libc_cv_ld_version_script_option=yes
++ else
++ libc_cv_ld_version_script_option=no
++ fi
++ else
++ libc_cv_ld_version_script_option=no
++ fi
++else
++ libc_cv_ld_version_script_option=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_ld_version_script_option" >&5
++echo "${ECHO_T}$libc_cv_ld_version_script_option" >&6
++if test $shared != no &&
++ test $libc_cv_asm_symver_directive = yes &&
++ test $libc_cv_ld_version_script_option = yes &&
++ test $enable_versioning = yes; then
++ VERSIONING=yes
++ cat >>confdefs.h <<\_ACEOF
++@%:@define DO_VERSIONING 1
++_ACEOF
++
++else
++ VERSIONING=no
++fi
++
++
++if test $elf = yes && test $shared != no && test $VERSIONING = no; then
++ echo "\
++*** WARNING: You should not compile GNU libc without versioning. Not using
++*** versioning will introduce incompatibilities so that old binaries
++*** will not run anymore.
++*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
++fi
++if test $elf = yes; then
++ echo "$as_me:$LINENO: checking for .previous assembler directive" >&5
++echo $ECHO_N "checking for .previous assembler directive... $ECHO_C" >&6
++if test "${libc_cv_asm_previous_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++.section foo_section
++.previous
++EOF
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_previous_directive=yes
++ else
++ libc_cv_asm_previous_directive=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_previous_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_previous_directive" >&6
++ if test $libc_cv_asm_previous_directive = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_PREVIOUS_DIRECTIVE 1
++_ACEOF
++
++ else
++ echo "$as_me:$LINENO: checking for .popsection assembler directive" >&5
++echo $ECHO_N "checking for .popsection assembler directive... $ECHO_C" >&6
++if test "${libc_cv_asm_popsection_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++.pushsection foo_section
++.popsection
++EOF
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_popsection_directive=yes
++ else
++ libc_cv_asm_popsection_directive=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_popsection_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_popsection_directive" >&6
++ if test $libc_cv_asm_popsection_directive = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_POPSECTION_DIRECTIVE 1
++_ACEOF
++
++ fi
++ fi
++ echo "$as_me:$LINENO: checking for .protected and .hidden assembler directive" >&5
++echo $ECHO_N "checking for .protected and .hidden assembler directive... $ECHO_C" >&6
++if test "${libc_cv_asm_protected_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++.protected foo
++foo:
++.hidden bar
++bar:
++EOF
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_protected_directive=yes
++ else
++ libc_cv_asm_protected_directive=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_protected_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_protected_directive" >&6
++
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_PROTECTED 1
++_ACEOF
++
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_HIDDEN 1
++_ACEOF
++
++
++ if test $libc_cv_asm_protected_directive = yes; then
++ echo "$as_me:$LINENO: checking whether __attribute__((visibility())) is supported" >&5
++echo $ECHO_N "checking whether __attribute__((visibility())) is supported... $ECHO_C" >&6
++if test "${libc_cv_visibility_attribute+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++ int foo __attribute__ ((visibility ("hidden"))) = 1;
++ int bar __attribute__ ((visibility ("protected"))) = 1;
++EOF
++ libc_cv_visibility_attribute=no
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ if grep '\.hidden.*foo' conftest.s >/dev/null; then
++ if grep '\.protected.*bar' conftest.s >/dev/null; then
++ libc_cv_visibility_attribute=yes
++ fi
++ fi
++ fi
++ rm -f conftest.cs
++
++fi
++echo "$as_me:$LINENO: result: $libc_cv_visibility_attribute" >&5
++echo "${ECHO_T}$libc_cv_visibility_attribute" >&6
++ if test $libc_cv_visibility_attribute = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_VISIBILITY_ATTRIBUTE 1
++_ACEOF
++
++ fi
++ fi
++
++ if test $libc_cv_visibility_attribute = yes; then
++ echo "$as_me:$LINENO: checking for broken __attribute__((visibility()))" >&5
++echo $ECHO_N "checking for broken __attribute__((visibility()))... $ECHO_C" >&6
++if test "${libc_cv_broken_visibility_attribute+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++ int foo (int x);
++ int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
++ int bar (int x) { return x; }
++EOF
++ libc_cv_broken_visibility_attribute=yes
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
++ libc_cv_broken_visibility_attribute=no
++ fi
++ fi
++ rm -f conftest.c conftest.s
++
++fi
++echo "$as_me:$LINENO: result: $libc_cv_broken_visibility_attribute" >&5
++echo "${ECHO_T}$libc_cv_broken_visibility_attribute" >&6
++ if test $libc_cv_broken_visibility_attribute = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_BROKEN_VISIBILITY_ATTRIBUTE 1
++_ACEOF
++
++ fi
++ fi
++
++ echo "$as_me:$LINENO: checking for broken __attribute__((alias()))" >&5
++echo $ECHO_N "checking for broken __attribute__((alias()))... $ECHO_C" >&6
++if test "${libc_cv_broken_alias_attribute+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++ extern int foo (int x) __asm ("xyzzy");
++ int bar (int x) { return x; }
++ extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
++ extern int dfoo;
++ extern __typeof (dfoo) dfoo __asm ("abccb");
++ int dfoo = 1;
++EOF
++ libc_cv_broken_alias_attribute=yes
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ if grep 'xyzzy' conftest.s >/dev/null &&
++ grep 'abccb' conftest.s >/dev/null; then
++ libc_cv_broken_alias_attribute=no
++ fi
++ fi
++ rm -f conftest.c conftest.s
++
++fi
++echo "$as_me:$LINENO: result: $libc_cv_broken_alias_attribute" >&5
++echo "${ECHO_T}$libc_cv_broken_alias_attribute" >&6
++ if test $libc_cv_broken_alias_attribute = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_BROKEN_ALIAS_ATTRIBUTE 1
++_ACEOF
++
++ fi
++
++ if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
++ echo "$as_me:$LINENO: checking whether to put _rtld_local into .sdata section" >&5
++echo $ECHO_N "checking whether to put _rtld_local into .sdata section... $ECHO_C" >&6
++if test "${libc_cv_have_sdata_section+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ echo "int i;" > conftest.c
++ libc_cv_have_sdata_section=no
++ if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
++ | grep '\.sdata' >/dev/null; then
++ libc_cv_have_sdata_section=yes
++ fi
++ rm -f conftest.c conftest.so
++
++fi
++echo "$as_me:$LINENO: result: $libc_cv_have_sdata_section" >&5
++echo "${ECHO_T}$libc_cv_have_sdata_section" >&6
++ if test $libc_cv_have_sdata_section = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_SDATA_SECTION 1
++_ACEOF
++
++ fi
++ fi
++
++ echo "$as_me:$LINENO: checking for .preinit_array/.init_array/.fini_array support" >&5
++echo $ECHO_N "checking for .preinit_array/.init_array/.fini_array support... $ECHO_C" >&6
++if test "${libc_cv_initfinit_array+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++int _start (void) { return 0; }
++int __start (void) { return 0; }
++int foo (void) { return 1; }
++int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
++ -static -nostartfiles -nostdlib 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
++ libc_cv_initfinit_array=yes
++ else
++ libc_cv_initfinit_array=no
++ fi
++ else
++ libc_cv_initfinit_array=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_initfinit_array" >&5
++echo "${ECHO_T}$libc_cv_initfinit_array" >&6
++
++ if test $libc_cv_initfinit_array = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_INITFINI_ARRAY 1
++_ACEOF
++
++ fi
++
++ echo "$as_me:$LINENO: checking for -z nodelete option" >&5
++echo $ECHO_N "checking for -z nodelete option... $ECHO_C" >&6
++if test "${libc_cv_z_nodelete+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++int _start (void) { return 42; }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -nostartfiles -nostdlib
++ -Wl,--enable-new-dtags,-z,nodelete 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libc_cv_z_nodelete=yes
++ else
++ libc_cv_z_nodelete=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_z_nodelete" >&5
++echo "${ECHO_T}$libc_cv_z_nodelete" >&6
++
++
++ echo "$as_me:$LINENO: checking for -z nodlopen option" >&5
++echo $ECHO_N "checking for -z nodlopen option... $ECHO_C" >&6
++if test "${libc_cv_z_nodlopen+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++int _start (void) { return 42; }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -nostartfiles -nostdlib
++ -Wl,--enable-new-dtags,-z,nodlopen 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libc_cv_z_nodlopen=yes
++ else
++ libc_cv_z_nodlopen=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_z_nodlopen" >&5
++echo "${ECHO_T}$libc_cv_z_nodlopen" >&6
++
++
++ echo "$as_me:$LINENO: checking for -z initfirst option" >&5
++echo $ECHO_N "checking for -z initfirst option... $ECHO_C" >&6
++if test "${libc_cv_z_initfirst+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++int _start (void) { return 42; }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -nostartfiles -nostdlib
++ -Wl,--enable-new-dtags,-z,initfirst 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libc_cv_z_initfirst=yes
++ else
++ libc_cv_z_initfirst=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_z_initfirst" >&5
++echo "${ECHO_T}$libc_cv_z_initfirst" >&6
++
++
++ echo "$as_me:$LINENO: checking for -Bgroup option" >&5
++echo $ECHO_N "checking for -Bgroup option... $ECHO_C" >&6
++if test "${libc_cv_Bgroup+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++int _start (void) { return 42; }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -Wl,-Bgroup -nostdlib 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libc_cv_Bgroup=yes
++ else
++ libc_cv_Bgroup=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_Bgroup" >&5
++echo "${ECHO_T}$libc_cv_Bgroup" >&6
++
++
++ ASFLAGS_config=
++ echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5
++echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6
++if test "${libc_cv_as_noexecstack+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++void foo (void) { }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS
++ -S -o conftest.s conftest.c 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } \
++ && grep -q .note.GNU-stack conftest.s \
++ && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
++ -c -o conftest.o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libc_cv_as_noexecstack=yes
++ else
++ libc_cv_as_noexecstack=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5
++echo "${ECHO_T}$libc_cv_as_noexecstack" >&6
++ if test $libc_cv_as_noexecstack = yes; then
++ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
++ fi
++
++ echo "$as_me:$LINENO: checking for -z combreloc" >&5
++echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6
++if test "${libc_cv_z_combreloc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++extern int bar (int);
++extern int mumble;
++int foo (void) { return bar (mumble); }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -nostdlib -nostartfiles
++ -Wl,-z,combreloc 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
++ libc_cv_z_combreloc=yes
++ else
++ libc_cv_z_combreloc=no
++ fi
++ else
++ libc_cv_z_combreloc=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_z_combreloc" >&5
++echo "${ECHO_T}$libc_cv_z_combreloc" >&6
++ if test "$libc_cv_z_combreloc" = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_Z_COMBRELOC 1
++_ACEOF
++
++ fi
++fi
++
++
++if test $elf != yes; then
++ echo "$as_me:$LINENO: checking for .init and .fini sections" >&5
++echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6
++if test "${libc_cv_have_initfini+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++asm (".section .init");
++ asm (".section .fini");
++ asm ("${libc_cv_dot_text}");
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_have_initfini=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++libc_cv_have_initfini=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $libc_cv_have_initfini" >&5
++echo "${ECHO_T}$libc_cv_have_initfini" >&6
++ if test $libc_cv_have_initfini = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_INITFINI 1
++_ACEOF
++
++ fi
++fi
++
++if test $elf = yes -a $gnu_ld = yes; then
++ echo "$as_me:$LINENO: checking whether cc puts quotes around section names" >&5
++echo $ECHO_N "checking whether cc puts quotes around section names... $ECHO_C" >&6
++if test "${libc_cv_have_section_quotes+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++ static const int foo
++ __attribute__ ((section ("bar"))) = 1;
++EOF
++ if ${CC-cc} -S conftest.c -o conftest.s; then
++ if grep '\.section.*"bar"' conftest.s >/dev/null; then
++ libc_cv_have_section_quotes=yes
++ else
++ libc_cv_have_section_quotes=no
++ fi
++ else
++ libc_cv_have_section_quotes=unknown
++ fi
++ rm -f conftest.cs
++
++fi
++echo "$as_me:$LINENO: result: $libc_cv_have_section_quotes" >&5
++echo "${ECHO_T}$libc_cv_have_section_quotes" >&6
++ if test $libc_cv_have_section_quotes = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_SECTION_QUOTES 1
++_ACEOF
++
++ fi
++fi
++
++
++
++if test $elf = yes; then
++ libc_cv_asm_underscores=no
++else
++ if test $ac_cv_prog_cc_works = yes; then
++ echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
++echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6
++if test "${libc_cv_asm_underscores+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++asm ("_glibc_foobar:");
++int
++main ()
++{
++glibc_foobar ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_underscores=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++libc_cv_asm_underscores=no
++fi
++rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
++echo "${ECHO_T}$libc_cv_asm_underscores" >&6
++ else
++ echo "$as_me:$LINENO: checking for _ prefix on C symbol names" >&5
++echo $ECHO_N "checking for _ prefix on C symbol names... $ECHO_C" >&6
++if test "${libc_cv_asm_underscores+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line $LINENO "configure"
++#include "confdefs.h"
++void underscore_test(void) {
++return; }
++EOF
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; then
++ if grep _underscore_test conftest* >/dev/null; then
++ rm -f conftest*
++ libc_cv_asm_underscores=yes
++ else
++ rm -f conftest*
++ libc_cv_asm_underscores=no
++ fi
++else
++ echo "configure: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ rm -f conftest*
++ libc_cv_asm_underscores=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_underscores" >&5
++echo "${ECHO_T}$libc_cv_asm_underscores" >&6
++ fi
++fi
++if test $libc_cv_asm_underscores = no; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define NO_UNDERSCORES 1
++_ACEOF
++
++fi
++
++if test $elf = yes; then
++ libc_cv_weak_symbols=yes
++fi
++
++echo "$as_me:$LINENO: checking for assembler .weak directive" >&5
++echo $ECHO_N "checking for assembler .weak directive... $ECHO_C" >&6
++if test "${libc_cv_asm_weak_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++${libc_cv_dot_text}
++${libc_cv_asm_global_directive} foo
++foo:
++.weak foo
++.weak bar; bar = foo
++EOF
++if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_weak_directive=yes
++else
++ libc_cv_asm_weak_directive=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_weak_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_weak_directive" >&6
++
++if test $libc_cv_asm_weak_directive = no; then
++ echo "$as_me:$LINENO: checking for assembler .weakext directive" >&5
++echo $ECHO_N "checking for assembler .weakext directive... $ECHO_C" >&6
++if test "${libc_cv_asm_weakext_directive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++${libc_cv_dot_text}
++${libc_cv_asm_global_directive} foo
++foo:
++.weakext bar foo
++.weakext baz
++${libc_cv_asm_global_directive} baz
++baz:
++EOF
++ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_weakext_directive=yes
++ else
++ libc_cv_asm_weakext_directive=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_weakext_directive" >&5
++echo "${ECHO_T}$libc_cv_asm_weakext_directive" >&6
++
++fi # no .weak
++
++if test $libc_cv_asm_weak_directive = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_WEAK_DIRECTIVE 1
++_ACEOF
++
++elif test $libc_cv_asm_weakext_directive = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_WEAKEXT_DIRECTIVE 1
++_ACEOF
++
++fi
++
++case "${host_cpu}-${host_os}" in
++ cris*)
++ libc_cv_asm_line_sep='@'
++ cat >>confdefs.h <<_ACEOF
++@%:@define ASM_LINE_SEP $libc_cv_asm_line_sep
++_ACEOF
++
++ ;;
++ hppa*linux*)
++ echo "$as_me:$LINENO: checking for assembler line separator" >&5
++echo $ECHO_N "checking for assembler line separator... $ECHO_C" >&6
++if test "${libc_cv_asm_line_sep+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++ nop ; is_old_puffin
++EOF
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_line_sep='!'
++ else
++ if test -z "$enable_hacker_mode"; then
++ echo "*** You need a newer assembler to compile glibc"
++ rm -f conftest*
++ exit 1
++ fi
++ libc_cv_asm_line_sep=';'
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_line_sep" >&5
++echo "${ECHO_T}$libc_cv_asm_line_sep" >&6
++ cat >>confdefs.h <<_ACEOF
++@%:@define ASM_LINE_SEP $libc_cv_asm_line_sep
++_ACEOF
++
++ ;;
++esac
++
++echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5
++echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6
++if test "${libc_cv_asm_cfi_directives+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++ .text
++ .type func,@function
++func:
++ .cfi_startproc
++ .cfi_remember_state
++ .cfi_rel_offset 1, 0
++ .cfi_endproc
++EOF
++if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_cfi_directives=yes
++else
++ libc_cv_asm_cfi_directives=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5
++echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6
++if test $libc_cv_asm_cfi_directives = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ASM_CFI_DIRECTIVES 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
++echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6
++if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.S <<EOF
++#include "confdefs.h"
++
++/* comment on
++ two lines */
++ ${libc_cv_dot_text}
++ ${libc_cv_asm_global_directive} foo
++foo:
++ /* Unfortunately this test only works for a real instruction,
++ not for any of the machine-independent pseudo-ops.
++ So we just have to assume everybody has a "nop". */
++ nop
++ /* comment */
++ nop
++ /* comment */
++ nop
++EOF
++if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ ac_pattern='conftest\.S'
++ { ac_try='readelf --debug-dump=line conftest.o |
++ grep $ac_pattern 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_cpp_asm_debuginfo=yes
++else
++ libc_cv_cpp_asm_debuginfo=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
++echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6
++if test $libc_cv_cpp_asm_debuginfo = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_CPP_ASM_DEBUGINFO 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
++echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6
++if test "${libc_cv_ld_no_whole_archive+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++_start () {}
++int __eh_pc;
++__throw () {}
++EOF
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -nostdlib -nostartfiles -Wl,--no-whole-archive
++ -o conftest conftest.c 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_ld_no_whole_archive=yes
++else
++ libc_cv_ld_no_whole_archive=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_ld_no_whole_archive" >&5
++echo "${ECHO_T}$libc_cv_ld_no_whole_archive" >&6
++if test $libc_cv_ld_no_whole_archive = yes; then
++ no_whole_archive=-Wl,--no-whole-archive
++fi
++
++echo "$as_me:$LINENO: checking for gcc -fexceptions" >&5
++echo $ECHO_N "checking for gcc -fexceptions... $ECHO_C" >&6
++if test "${libc_cv_gcc_exceptions+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++_start () {}
++int __eh_pc;
++__throw () {}
++EOF
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -nostdlib -nostartfiles -fexceptions
++ -o conftest conftest.c 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_gcc_exceptions=yes
++else
++ libc_cv_gcc_exceptions=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_exceptions" >&5
++echo "${ECHO_T}$libc_cv_gcc_exceptions" >&6
++if test $libc_cv_gcc_exceptions = yes; then
++ exceptions=-fexceptions
++fi
++
++if test "$host_cpu" = powerpc ; then
++# Check for a bug present in at least versions 2.8.x of GCC
++# and versions 1.0.x of EGCS.
++echo "$as_me:$LINENO: checking whether clobbering cr0 causes problems" >&5
++echo $ECHO_N "checking whether clobbering cr0 causes problems... $ECHO_C" >&6
++if test "${libc_cv_c_asmcr0_bug+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++int tester(int x) { asm ("" : : : "cc"); return x & 123; }
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_c_asmcr0_bug='no'
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++libc_cv_c_asmcr0_bug='yes'
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $libc_cv_c_asmcr0_bug" >&5
++echo "${ECHO_T}$libc_cv_c_asmcr0_bug" >&6
++if test "$libc_cv_c_asmcr0_bug" != 'no'; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define BROKEN_PPC_ASM_CR0 1
++_ACEOF
++
++fi
++fi
++
++echo "$as_me:$LINENO: checking for DWARF2 unwind info support" >&5
++echo $ECHO_N "checking for DWARF2 unwind info support... $ECHO_C" >&6
++if test "${libc_cv_gcc_dwarf2_unwind_info+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++#line $LINENO "configure"
++static char *__EH_FRAME_BEGIN__;
++_start ()
++{
++#ifdef CHECK__register_frame
++ __register_frame (__EH_FRAME_BEGIN__);
++ __deregister_frame (__EH_FRAME_BEGIN__);
++#endif
++#ifdef CHECK__register_frame_info
++ __register_frame_info (__EH_FRAME_BEGIN__);
++ __deregister_frame_info (__EH_FRAME_BEGIN__);
++#endif
++}
++int __eh_pc;
++__throw () {}
++/* FIXME: this is fragile. */
++malloc () {}
++strcmp () {}
++strlen () {}
++memcpy () {}
++memset () {}
++free () {}
++abort () {}
++__bzero () {}
++dl_iterate_phdr () {}
++EOF
++libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
++ $LDFLAGS \
++ -nostdlib -nostartfiles -o conftest conftest.c \
++ -lgcc"
++# Some platforms' specs put -lgcc first. The second one doesn't hurt.
++if { ac_try='$libc_unwind_check >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } ||
++ { ac_try='$libc_unwind_check -lgcc_eh -lgcc >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++then
++ if $libc_unwind_check -v 2>&1 >/dev/null \
++ | grep -q -- --eh-frame-hdr; then
++ libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
++ else
++ libc_cv_gcc_dwarf2_unwind_info=static
++ fi
++else
++ libc_cv_gcc_dwarf2_unwind_info=no
++fi
++if test $libc_cv_gcc_dwarf2_unwind_info = no; then
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
++ $LDFLAGS -nostdlib -nostartfiles
++ -o conftest conftest.c -lgcc >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_gcc_dwarf2_unwind_info=yes
++ else
++ libc_cv_gcc_dwarf2_unwind_info=no
++ fi
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_dwarf2_unwind_info" >&5
++echo "${ECHO_T}$libc_cv_gcc_dwarf2_unwind_info" >&6
++case $libc_cv_gcc_dwarf2_unwind_info in
++yes)
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_DWARF2_UNWIND_INFO 1
++_ACEOF
++
++ ;;
++static)
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_DWARF2_UNWIND_INFO 1
++_ACEOF
++
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_DWARF2_UNWIND_INFO_STATIC 1
++_ACEOF
++
++ ;;
++esac
++
++echo "$as_me:$LINENO: checking for __builtin_expect" >&5
++echo $ECHO_N "checking for __builtin_expect... $ECHO_C" >&6
++if test "${libc_cv_gcc_builtin_expect+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++#line $LINENO "configure"
++int foo (int a)
++{
++ a = __builtin_expect (a, 10);
++ return a == 10 ? 0 : 1;
++}
++EOF
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
++ -o conftest conftest.c -lgcc >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_gcc_builtin_expect=yes
++else
++ libc_cv_gcc_builtin_expect=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_expect" >&5
++echo "${ECHO_T}$libc_cv_gcc_builtin_expect" >&6
++if test "$libc_cv_gcc_builtin_expect" = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_BUILTIN_EXPECT 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking for __builtin_memset" >&5
++echo $ECHO_N "checking for __builtin_memset... $ECHO_C" >&6
++if test "${libc_cv_gcc_builtin_memset+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++void zero (void *x)
++{
++ __builtin_memset (x, 0, 1000);
++}
++EOF
++if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; };
++then
++ libc_cv_gcc_builtin_memset=no
++else
++ libc_cv_gcc_builtin_memset=yes
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_memset" >&5
++echo "${ECHO_T}$libc_cv_gcc_builtin_memset" >&6
++if test "$libc_cv_gcc_builtin_memset" = yes ; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_BUILTIN_MEMSET 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5
++echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6
++if test "${libc_cv_gcc_builtin_redirection+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++extern char *strstr (const char *, const char *) __asm ("my_strstr");
++char *foo (const char *a, const char *b)
++{
++ return __builtin_strstr (a, b);
++}
++EOF
++if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; };
++then
++ libc_cv_gcc_builtin_redirection=yes
++else
++ libc_cv_gcc_builtin_redirection=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5
++echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6
++if test "$libc_cv_gcc_builtin_redirection" = yes ; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_BUILTIN_REDIRECTION 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking for local label subtraction" >&5
++echo $ECHO_N "checking for local label subtraction... $ECHO_C" >&6
++if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++#line $LINENO "configure"
++int foo (int a)
++{
++ static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
++ void *p = &&l1 + ar[a];
++ goto *p;
++ l1:
++ return 1;
++ l2:
++ return 2;
++}
++EOF
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
++ -o conftest conftest.c -lgcc >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_gcc_subtract_local_labels=yes
++else
++ libc_cv_gcc_subtract_local_labels=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_subtract_local_labels" >&5
++echo "${ECHO_T}$libc_cv_gcc_subtract_local_labels" >&6
++if test "$libc_cv_gcc_subtract_local_labels" = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_SUBTRACT_LOCAL_LABELS 1
++_ACEOF
++
++fi
++
++if test "x$use__thread" != xno; then
++ echo "$as_me:$LINENO: checking for __thread" >&5
++echo $ECHO_N "checking for __thread... $ECHO_C" >&6
++if test "${libc_cv_gcc___thread+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++__thread int a = 42;
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_gcc___thread=yes
++ else
++ libc_cv_gcc___thread=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc___thread" >&5
++echo "${ECHO_T}$libc_cv_gcc___thread" >&6
++ if test "$libc_cv_gcc___thread" = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE___THREAD 1
++_ACEOF
++
++ fi
++else
++ libc_cv_gcc___thread=no
++fi
++
++if test "$libc_cv_gcc___thread" = yes; then
++ echo "$as_me:$LINENO: checking for tls_model attribute" >&5
++echo $ECHO_N "checking for tls_model attribute... $ECHO_C" >&6
++if test "${libc_cv_gcc_tls_model_attr+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++extern __thread int a __attribute__((tls_model ("initial-exec")));
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_gcc_tls_model_attr=yes
++ else
++ libc_cv_gcc_tls_model_attr=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_tls_model_attr" >&5
++echo "${ECHO_T}$libc_cv_gcc_tls_model_attr" >&6
++ if test "$libc_cv_gcc_tls_model_attr" = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_TLS_MODEL_ATTRIBUTE 1
++_ACEOF
++
++ fi
++fi
++
++echo "$as_me:$LINENO: checking for libgd" >&5
++echo $ECHO_N "checking for libgd... $ECHO_C" >&6
++if test "$with_gd" != "no"; then
++ old_CFLAGS="$CFLAGS"
++ CFLAGS="$CFLAGS $libgd_include"
++ old_LDFLAGS="$LDFLAGS"
++ LDFLAGS="$LDFLAGS $libgd_ldflags"
++ old_LIBS="$LIBS"
++ LIBS="$LIBS -lgd -lpng -lz -lm"
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <gd.h>
++int
++main ()
++{
++gdImagePng (0, 0)
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ LIBGD=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++LIBGD=no
++fi
++rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
++ CFLAGS="$old_CFLAGS"
++ LDFLAGS="$old_LDFLAGS"
++ LIBS="$old_LIBS"
++else
++ LIBGD=no
++fi
++echo "$as_me:$LINENO: result: $LIBGD" >&5
++echo "${ECHO_T}$LIBGD" >&6
++
++
++
++echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6
++if test "${ac_cv_prog_egrep+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
++ then ac_cv_prog_egrep='grep -E'
++ else ac_cv_prog_egrep='egrep'
++ fi
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
++echo "${ECHO_T}$ac_cv_prog_egrep" >&6
++ EGREP=$ac_cv_prog_egrep
++
++
++echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
++if test "${ac_cv_header_stdc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_header_stdc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_header_stdc=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <string.h>
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "memchr" >/dev/null 2>&1; then
++ :
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "free" >/dev/null 2>&1; then
++ :
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
++ if test "$cross_compiling" = yes; then
++ :
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <ctype.h>
++#if ((' ' & 0x0FF) == 0x020)
++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
++#else
++# define ISLOWER(c) \
++ (('a' <= (c) && (c) <= 'i') \
++ || ('j' <= (c) && (c) <= 'r') \
++ || ('s' <= (c) && (c) <= 'z'))
++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
++#endif
++
++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
++int
++main ()
++{
++ int i;
++ for (i = 0; i < 256; i++)
++ if (XOR (islower (i), ISLOWER (i))
++ || toupper (i) != TOUPPER (i))
++ exit(2);
++ exit (0);
++}
++_ACEOF
++rm -f conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ :
++else
++ echo "$as_me: program exited with status $ac_status" >&5
++echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++( exit $ac_status )
++ac_cv_header_stdc=no
++fi
++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++fi
++fi
++fi
++echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6
++if test $ac_cv_header_stdc = yes; then
++
++cat >>confdefs.h <<\_ACEOF
++@%:@define STDC_HEADERS 1
++_ACEOF
++
++fi
++
++# On IRIX 5.3, sys/types and inttypes.h are conflicting.
++
++
++
++
++
++
++
++
++
++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
++ inttypes.h stdint.h unistd.h
++do
++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
++echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++
++@%:@include <$ac_header>
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ eval "$as_ac_Header=yes"
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++eval "$as_ac_Header=no"
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++if test `eval echo '${'$as_ac_Header'}'` = yes; then
++ cat >>confdefs.h <<_ACEOF
++@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
++
++echo "$as_me:$LINENO: checking for long double" >&5
++echo $ECHO_N "checking for long double... $ECHO_C" >&6
++if test "${ac_cv_type_long_double+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++int
++main ()
++{
++if ((long double *) 0)
++ return 0;
++if (sizeof (long double))
++ return 0;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_type_long_double=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_cv_type_long_double=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5
++echo "${ECHO_T}$ac_cv_type_long_double" >&6
++
++echo "$as_me:$LINENO: checking size of long double" >&5
++echo $ECHO_N "checking size of long double... $ECHO_C" >&6
++if test "${ac_cv_sizeof_long_double+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test "$ac_cv_type_long_double" = yes; then
++ # The cast to unsigned long works around a bug in the HP C Compiler
++ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
++ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
++ # This bug is HP SR number 8606223364.
++ if test "$cross_compiling" = yes; then
++ # Depending upon the size, compute the lo and hi bounds.
++cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++int
++main ()
++{
++static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) >= 0)@:>@;
++test_array @<:@0@:>@ = 0
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_lo=0 ac_mid=0
++ while :; do
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++int
++main ()
++{
++static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)@:>@;
++test_array @<:@0@:>@ = 0
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_hi=$ac_mid; break
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_lo=`expr $ac_mid + 1`
++ if test $ac_lo -le $ac_mid; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid + 1`
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ done
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++int
++main ()
++{
++static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) < 0)@:>@;
++test_array @<:@0@:>@ = 0
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_hi=-1 ac_mid=-1
++ while :; do
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++int
++main ()
++{
++static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)@:>@;
++test_array @<:@0@:>@ = 0
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_lo=$ac_mid; break
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_hi=`expr '(' $ac_mid ')' - 1`
++ if test $ac_mid -le $ac_hi; then
++ ac_lo= ac_hi=
++ break
++ fi
++ ac_mid=`expr 2 '*' $ac_mid`
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ done
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_lo= ac_hi=
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++# Binary search between lo and hi bounds.
++while test "x$ac_lo" != "x$ac_hi"; do
++ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++int
++main ()
++{
++static int test_array @<:@1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)@:>@;
++test_array @<:@0@:>@ = 0
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_hi=$ac_mid
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_lo=`expr '(' $ac_mid ')' + 1`
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++done
++case $ac_lo in
++?*) ac_cv_sizeof_long_double=$ac_lo;;
++'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
++See \`config.log' for more details." >&5
++echo "$as_me: error: cannot compute sizeof (long double), 77
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; } ;;
++esac
++else
++ if test "$cross_compiling" = yes; then
++ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
++See \`config.log' for more details." >&5
++echo "$as_me: error: cannot run test program while cross compiling
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; }
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++$ac_includes_default
++long longval () { return (long) (sizeof (long double)); }
++unsigned long ulongval () { return (long) (sizeof (long double)); }
++@%:@include <stdio.h>
++@%:@include <stdlib.h>
++int
++main ()
++{
++
++ FILE *f = fopen ("conftest.val", "w");
++ if (! f)
++ exit (1);
++ if (((long) (sizeof (long double))) < 0)
++ {
++ long i = longval ();
++ if (i != ((long) (sizeof (long double))))
++ exit (1);
++ fprintf (f, "%ld\n", i);
++ }
++ else
++ {
++ unsigned long i = ulongval ();
++ if (i != ((long) (sizeof (long double))))
++ exit (1);
++ fprintf (f, "%lu\n", i);
++ }
++ exit (ferror (f) || fclose (f) != 0);
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_sizeof_long_double=`cat conftest.val`
++else
++ echo "$as_me: program exited with status $ac_status" >&5
++echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++( exit $ac_status )
++{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
++See \`config.log' for more details." >&5
++echo "$as_me: error: cannot compute sizeof (long double), 77
++See \`config.log' for more details." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++fi
++fi
++rm -f conftest.val
++else
++ ac_cv_sizeof_long_double=0
++fi
++fi
++echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5
++echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6
++cat >>confdefs.h <<_ACEOF
++@%:@define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double
++_ACEOF
++
++
++sizeof_long_double=$ac_cv_sizeof_long_double
++
++
++### End of automated tests.
++### Now run sysdeps configure fragments.
++
++# They also can set these variables.
++use_ldconfig=no
++ldd_rewrite_script=no
++libc_cv_sysconfdir=$sysconfdir
++libc_cv_gcc_unwind_find_fde=no
++
++# Iterate over all the sysdep directories we will use, running their
++# configure fragments, and looking for a uname implementation.
++uname=
++for dir in $sysnames; do
++ case $dir in
++ /*) dest=$dir ;;
++ *) dest=$srcdir/$dir ;;
++ esac
++ if test -r $dest/configure; then
++ echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
++echo "${ECHO_T}running configure fragment for $dir" >&6
++ . $dest/configure
++ fi
++
++ if test -z "$uname"; then
++ if test -r $dest/uname.c ||
++ test -r $dest/uname.S ||
++ { test -r $dest/syscalls.list &&
++ grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
++ uname=$dir
++ fi
++ fi
++done
++
++if test x$libc_cv_gcc_unwind_find_fde = xyes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define EXPORT_UNWIND_FIND_FDE 1
++_ACEOF
++
++fi
++
++
++# If we will use the generic uname implementation, we must figure out what
++# it will say by examining the system, and write the results in config-name.h.
++if test "$uname" = "sysdeps/generic"; then
++
++ uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
++ if test $uname_sysname != $config_os; then
++ config_release=`echo $config_os | sed s/$uname_sysname//`
++ fi
++
++ echo "$as_me:$LINENO: checking OS release for uname" >&5
++echo $ECHO_N "checking OS release for uname... $ECHO_C" >&6
++if test "${libc_cv_uname_release+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -r /vmunix; then
++ kernel_id=`strings /vmunix | grep UNIX`
++ elif test -r /dynix; then
++ kernel_id=`strings /dynix | grep DYNIX`
++ else
++ kernel_id=
++ fi
++
++ kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
++ if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
++ != x$config_release; then
++ # The configuration release is a substring of the kernel release.
++ libc_cv_uname_release=$kernel_release
++ elif test x$config_release != x; then
++ libc_cv_uname_release=$config_release
++ elif test x$kernel_release != x; then
++ libc_cv_uname_release=$kernel_release
++ else
++ libc_cv_uname_release=unknown
++ fi
++fi
++echo "$as_me:$LINENO: result: $libc_cv_uname_release" >&5
++echo "${ECHO_T}$libc_cv_uname_release" >&6
++ uname_release="$libc_cv_uname_release"
++
++ echo "$as_me:$LINENO: checking OS version for uname" >&5
++echo $ECHO_N "checking OS version for uname... $ECHO_C" >&6
++if test "${libc_cv_uname_version+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -r /vmunix; then
++ kernel_id=`strings /vmunix | grep UNIX`
++ elif test -r /dynix; then
++ kernel_id=`strings /dynix | grep DYNIX`
++ else
++ kernel_id=
++ fi
++
++ kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
++ if test -n "$kernel_version"; then
++ libc_cv_uname_version="$kernel_version"
++ else
++ libc_cv_uname_version=unknown
++ fi
++fi
++echo "$as_me:$LINENO: result: $libc_cv_uname_version" >&5
++echo "${ECHO_T}$libc_cv_uname_version" >&6
++ uname_version="$libc_cv_uname_version"
++
++ config_uname=config-name.h:config-name.in
++else
++ # For non-generic uname, we don't need to create config-name.h at all.
++ config_uname=
++fi
++
++cat >>confdefs.h <<\_ACEOF
++@%:@define USE_IN_LIBIO 1
++_ACEOF
++
++
++# Test for old glibc 2.0.x headers so that they can be removed properly
++# Search only in includedir.
++echo "$as_me:$LINENO: checking for old glibc 2.0.x headers" >&5
++echo $ECHO_N "checking for old glibc 2.0.x headers... $ECHO_C" >&6
++if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
++then
++ old_glibc_headers=yes
++else
++ old_glibc_headers=no
++fi
++echo "$as_me:$LINENO: result: $old_glibc_headers" >&5
++echo "${ECHO_T}$old_glibc_headers" >&6
++if test ${old_glibc_headers} = yes; then
++ { echo "$as_me:$LINENO: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&5
++echo "$as_me: WARNING: *** During \"make install\" old headers from glibc 2.0.x will" >&2;}
++ { echo "$as_me:$LINENO: WARNING: *** be removed." >&5
++echo "$as_me: WARNING: *** be removed." >&2;}
++fi
++
++
++
++
++
++
++
++
++
++
++
++
++if test $gnu_ld = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_GNU_LD 1
++_ACEOF
++
++fi
++if test $gnu_as = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_GNU_AS 1
++_ACEOF
++
++fi
++if test $elf = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_ELF 1
++_ACEOF
++
++fi
++if test $xcoff = yes; then
++ cat >>confdefs.h <<\_ACEOF
++@%:@define HAVE_XCOFF 1
++_ACEOF
++
++fi
++
++
++
++if test $shared = default; then
++ if test $gnu_ld = yes; then
++ shared=$elf
++ else
++ # For now we do not assume shared libs are available. In future more
++ # tests might become available.
++ shared=no
++ fi
++fi
++
++echo "$as_me:$LINENO: checking whether -fPIC is default" >&5
++echo $ECHO_N "checking whether -fPIC is default... $ECHO_C" >&6
++if test "${pic_default+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ pic_default=yes
++cat > conftest.c <<EOF
++#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
++# error PIC is default.
++#endif
++EOF
++if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
++ pic_default=no
++fi
++rm -f conftest.*
++fi
++echo "$as_me:$LINENO: result: $pic_default" >&5
++echo "${ECHO_T}$pic_default" >&6
++
++
++
++
++
++
++
++
++
++
++case "$add_ons" in
++ *door*) linux_doors=yes ;;
++ *) linux_doors=no ;;
++esac
++
++
++
++
++if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
++ config_makefile=
++else
++ config_makefile=Makefile
++fi
++
++VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
++RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
++
++
++
++ ac_config_files="$ac_config_files config.make glibcbug ${config_makefile} ${config_uname}"
++
++ ac_config_commands="$ac_config_commands default"
++
++cat >confcache <<\_ACEOF
++# This file is a shell script that caches the results of configure
++# tests run on this system so they can be shared between configure
++# scripts and configure runs, see configure's option --config-cache.
++# It is not useful on other systems. If it contains results you don't
++# want to keep, you may remove or edit it.
++#
++# config.status only pays attention to the cache file if you give it
++# the --recheck option to rerun configure.
++#
++# `ac_cv_env_foo' variables (set or unset) will be overridden when
++# loading this file, other *unset* `ac_cv_foo' will be assigned the
++# following values.
++
++_ACEOF
++
++# The following way of writing the cache mishandles newlines in values,
++# but we know of no workaround that is simple, portable, and efficient.
++# So, don't put newlines in cache variables' values.
++# Ultrix sh set writes to stderr and can't be redirected directly,
++# and sets the high bit in the cache file unless we assign to the vars.
++{
++ (set) 2>&1 |
++ case `(ac_space=' '; set | grep ac_space) 2>&1` in
++ *ac_space=\ *)
++ # `set' does not quote correctly, so add quotes (double-quote
++ # substitution turns \\\\ into \\, and sed turns \\ into \).
++ sed -n \
++ "s/'/'\\\\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
++ ;;
++ *)
++ # `set' quotes correctly as required by POSIX, so do not add quotes.
++ sed -n \
++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ ;;
++ esac;
++} |
++ sed '
++ t clear
++ : clear
++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
++ t end
++ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ : end' >>confcache
++if diff $cache_file confcache >/dev/null 2>&1; then :; else
++ if test -w $cache_file; then
++ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ cat confcache >$cache_file
++ else
++ echo "not updating unwritable cache $cache_file"
++ fi
++fi
++rm -f confcache
++
++test "x$prefix" = xNONE && prefix=$ac_default_prefix
++# Let make expand exec_prefix.
++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/;
++s/:*\${srcdir}:*/:/;
++s/:*@srcdir@:*/:/;
++s/^\([^=]*=[ ]*\):*/\1/;
++s/:*$//;
++s/^[^=]*=[ ]*$//;
++}'
++fi
++
++DEFS=-DHAVE_CONFIG_H
++
++ac_libobjs=
++ac_ltlibobjs=
++for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
++ # 1. Remove the extension, and $U if already installed.
++ ac_i=`echo "$ac_i" |
++ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
++ # 2. Add them.
++ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++done
++LIB@&t@OBJS=$ac_libobjs
++
++LTLIBOBJS=$ac_ltlibobjs
++
++
++
++: ${CONFIG_STATUS=./config.status}
++ac_clean_files_save=$ac_clean_files
++ac_clean_files="$ac_clean_files $CONFIG_STATUS"
++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
++echo "$as_me: creating $CONFIG_STATUS" >&6;}
++cat >$CONFIG_STATUS <<_ACEOF
++#! $SHELL
++# Generated by $as_me.
++# Run this file to recreate the current configuration.
++# Compiler output produced by configure, useful for debugging
++# configure, is in config.log if it exists.
++
++debug=false
++ac_cs_recheck=false
++ac_cs_silent=false
++SHELL=\${CONFIG_SHELL-$SHELL}
++_ACEOF
++
++cat >>$CONFIG_STATUS <<\_ACEOF
++## --------------------- ##
++## M4sh Initialization. ##
++## --------------------- ##
++
++# Be Bourne compatible
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
++ set -o posix
++fi
++
++# Support unset when possible.
++if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
++ as_unset=unset
++else
++ as_unset=false
++fi
++
++
++# Work around bugs in pre-3.0 UWIN ksh.
++$as_unset ENV MAIL MAILPATH
++PS1='$ '
++PS2='> '
++PS4='+ '
++
++# NLS nuisances.
++for as_var in \
++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
++ LC_TELEPHONE LC_TIME
++do
++ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
++ eval $as_var=C; export $as_var
++ else
++ $as_unset $as_var
++ fi
++done
++
++# Required to use basename.
++if expr a : '\(a\)' >/dev/null 2>&1; then
++ as_expr=expr
++else
++ as_expr=false
++fi
++
++if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++ as_basename=basename
++else
++ as_basename=false
++fi
++
++
++# Name of the executable.
++as_me=`$as_basename "$0" ||
++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
++ X"$0" : 'X\(//\)$' \| \
++ X"$0" : 'X\(/\)$' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X/"$0" |
++ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
++ /^X\/\(\/\/\)$/{ s//\1/; q; }
++ /^X\/\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++
++
++# PATH needs CR, and LINENO needs CR and PATH.
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
++fi
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x$as_lineno_3" = "x$as_lineno_2" || {
++ # Find who we are. Look in the path if we contain no path at all
++ # relative or not.
++ case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++
++ ;;
++ esac
++ # We did not find ourselves, most probably we were run as `sh COMMAND'
++ # in which case we are not to be found in the path.
++ if test "x$as_myself" = x; then
++ as_myself=$0
++ fi
++ if test ! -f "$as_myself"; then
++ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
++echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
++ { (exit 1); exit 1; }; }
++ fi
++ case $CONFIG_SHELL in
++ '')
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for as_base in sh bash ksh sh5; do
++ case $as_dir in
++ /*)
++ if ("$as_dir/$as_base" -c '
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
++ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
++ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
++ CONFIG_SHELL=$as_dir/$as_base
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
++ fi;;
++ esac
++ done
++done
++;;
++ esac
++
++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
++ # uniformly replaced by the line number. The first 'sed' inserts a
++ # line-number line before each line; the second 'sed' does the real
++ # work. The second script uses 'N' to pair each line-number line
++ # with the numbered line, and appends trailing '-' during
++ # substitution so that $LINENO is not a special case at line end.
++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
++ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
++ sed '=' <$as_myself |
++ sed '
++ N
++ s,$,-,
++ : loop
++ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ t loop
++ s,-$,,
++ s,^['$as_cr_digits']*\n,,
++ ' >$as_me.lineno &&
++ chmod +x $as_me.lineno ||
++ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
++echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ { (exit 1); exit 1; }; }
++
++ # Don't try to exec as it changes $[0], causing all sort of problems
++ # (the dirname of $[0] is not the place where we might find the
++ # original and so on. Autoconf is especially sensible to this).
++ . ./$as_me.lineno
++ # Exit status is that of the last command.
++ exit
++}
++
++
++case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
++ *c*,-n*) ECHO_N= ECHO_C='
++' ECHO_T=' ' ;;
++ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
++ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++esac
++
++if expr a : '\(a\)' >/dev/null 2>&1; then
++ as_expr=expr
++else
++ as_expr=false
++fi
++
++rm -f conf$$ conf$$.exe conf$$.file
++echo >conf$$.file
++if ln -s conf$$.file conf$$ 2>/dev/null; then
++ # We could just check for DJGPP; but this test a) works b) is more generic
++ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
++ if test -f conf$$.exe; then
++ # Don't use ln at all; we don't have any links
++ as_ln_s='cp -p'
++ else
++ as_ln_s='ln -s'
++ fi
++elif ln conf$$.file conf$$ 2>/dev/null; then
++ as_ln_s=ln
++else
++ as_ln_s='cp -p'
++fi
++rm -f conf$$ conf$$.exe conf$$.file
++
++if mkdir -p . 2>/dev/null; then
++ as_mkdir_p=:
++else
++ as_mkdir_p=false
++fi
++
++as_executable_p="test -f"
++
++# Sed expression to map a string onto a valid CPP name.
++as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
++
++# Sed expression to map a string onto a valid variable name.
++as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
++
++
++# IFS
++# We need space, tab and new line, in precisely that order.
++as_nl='
++'
++IFS=" $as_nl"
++
++# CDPATH.
++$as_unset CDPATH
++
++exec 6>&1
++
++# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# report actual input values of CONFIG_FILES etc. instead of their
++# values after options handling. Logging --version etc. is OK.
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
++@%:@@%:@ Running $as_me. @%:@@%:@
++_ASBOX
++} >&5
++cat >&5 <<_CSEOF
++
++This file was extended by GNU C Library $as_me (see version.h), which was
++generated by GNU Autoconf 2.57. Invocation command line was
++
++ CONFIG_FILES = $CONFIG_FILES
++ CONFIG_HEADERS = $CONFIG_HEADERS
++ CONFIG_LINKS = $CONFIG_LINKS
++ CONFIG_COMMANDS = $CONFIG_COMMANDS
++ $ $0 $@
++
++_CSEOF
++echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
++echo >&5
++_ACEOF
++
++# Files that config.status was made for.
++if test -n "$ac_config_files"; then
++ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
++fi
++
++if test -n "$ac_config_headers"; then
++ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
++fi
++
++if test -n "$ac_config_links"; then
++ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
++fi
++
++if test -n "$ac_config_commands"; then
++ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
++fi
++
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++ac_cs_usage="\
++\`$as_me' instantiates files from templates according to the
++current configuration.
++
++Usage: $0 [OPTIONS] [FILE]...
++
++ -h, --help print this help, then exit
++ -V, --version print version number, then exit
++ -q, --quiet do not print progress messages
++ -d, --debug don't remove temporary files
++ --recheck update $as_me by reconfiguring in the same conditions
++ --file=FILE[:TEMPLATE]
++ instantiate the configuration file FILE
++ --header=FILE[:TEMPLATE]
++ instantiate the configuration header FILE
++
++Configuration files:
++$config_files
++
++Configuration headers:
++$config_headers
++
++Configuration commands:
++$config_commands
++
++Report bugs to <bug-autoconf@gnu.org>."
++_ACEOF
++
++cat >>$CONFIG_STATUS <<_ACEOF
++ac_cs_version="\\
++GNU C Library config.status (see version.h)
++configured by $0, generated by GNU Autoconf 2.57,
++ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++
++Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
++Free Software Foundation, Inc.
++This config.status script is free software; the Free Software Foundation
++gives unlimited permission to copy, distribute and modify it."
++srcdir=$srcdir
++INSTALL="$INSTALL"
++_ACEOF
++
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If no file are specified by the user, then we need to provide default
++# value. By we need to know if files were specified by the user.
++ac_need_defaults=:
++while test $# != 0
++do
++ case $1 in
++ --*=*)
++ ac_option=`expr "x$1" : 'x\([^=]*\)='`
++ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_shift=:
++ ;;
++ -*)
++ ac_option=$1
++ ac_optarg=$2
++ ac_shift=shift
++ ;;
++ *) # This is not an option, so the user has probably given explicit
++ # arguments.
++ ac_option=$1
++ ac_need_defaults=false;;
++ esac
++
++ case $ac_option in
++ # Handling of the options.
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
++ ac_cs_recheck=: ;;
++ --version | --vers* | -V )
++ echo "$ac_cs_version"; exit 0 ;;
++ --he | --h)
++ # Conflict between --help and --header
++ { { echo "$as_me:$LINENO: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&5
++echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2;}
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit 0 ;;
++ --debug | --d* | -d )
++ debug=: ;;
++ --file | --fil | --fi | --f )
++ $ac_shift
++ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
++ ac_need_defaults=false;;
++ --header | --heade | --head | --hea )
++ $ac_shift
++ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
++ ac_need_defaults=false;;
++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
++ | -silent | --silent | --silen | --sile | --sil | --si | --s)
++ ac_cs_silent=: ;;
++
++ # This is an error.
++ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&5
++echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2;}
++ { (exit 1); exit 1; }; } ;;
++
++ *) ac_config_targets="$ac_config_targets $1" ;;
++
++ esac
++ shift
++done
++
++ac_configure_extra_args=
++
++if $ac_cs_silent; then
++ exec 6>/dev/null
++ ac_configure_extra_args="$ac_configure_extra_args --silent"
++fi
++
++_ACEOF
++cat >>$CONFIG_STATUS <<_ACEOF
++if \$ac_cs_recheck; then
++ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++fi
++
++_ACEOF
++
++cat >>$CONFIG_STATUS <<_ACEOF
++#
++# INIT-COMMANDS section.
++#
++
++config_vars='$config_vars'
++
++_ACEOF
++
++
++
++cat >>$CONFIG_STATUS <<\_ACEOF
++for ac_config_target in $ac_config_targets
++do
++ case "$ac_config_target" in
++ # Handling of arguments.
++ "config.make" ) CONFIG_FILES="$CONFIG_FILES config.make" ;;
++ "glibcbug" ) CONFIG_FILES="$CONFIG_FILES glibcbug" ;;
++ "${config_makefile}" ) CONFIG_FILES="$CONFIG_FILES ${config_makefile}" ;;
++ "${config_uname}" ) CONFIG_FILES="$CONFIG_FILES ${config_uname}" ;;
++ "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
++ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
++echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++done
++
++# If the user did not use the arguments to specify the items to instantiate,
++# then the envvar interface is used. Set only those that are not.
++# We use the long form for the default assignment because of an extremely
++# bizarre bug on SunOS 4.1.3.
++if $ac_need_defaults; then
++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
++fi
++
++# Have a temporary directory for convenience. Make it in the build tree
++# simply because there is no reason to put it here, and in addition,
++# creating and moving files from /tmp can sometimes cause problems.
++# Create a temporary directory, and hook for its removal unless debugging.
++$debug ||
++{
++ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ trap '{ (exit 1); exit 1; }' 1 2 13 15
++}
++
++# Create a (secure) tmp directory for tmp files.
++
++{
++ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ test -n "$tmp" && test -d "$tmp"
++} ||
++{
++ tmp=./confstat$$-$RANDOM
++ (umask 077 && mkdir $tmp)
++} ||
++{
++ echo "$me: cannot create a temporary directory in ." >&2
++ { (exit 1); exit 1; }
++}
++
++_ACEOF
++
++cat >>$CONFIG_STATUS <<_ACEOF
++
++#
++# CONFIG_FILES section.
++#
++
++# No need to generate the scripts if there are no CONFIG_FILES.
++# This happens for instance when ./config.status config.h
++if test -n "\$CONFIG_FILES"; then
++ # Protect against being on the right side of a sed subst in config.status.
++ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
++ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
++s,@SHELL@,$SHELL,;t t
++s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
++s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
++s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
++s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
++s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
++s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
++s,@exec_prefix@,$exec_prefix,;t t
++s,@prefix@,$prefix,;t t
++s,@program_transform_name@,$program_transform_name,;t t
++s,@bindir@,$bindir,;t t
++s,@sbindir@,$sbindir,;t t
++s,@libexecdir@,$libexecdir,;t t
++s,@datadir@,$datadir,;t t
++s,@sysconfdir@,$sysconfdir,;t t
++s,@sharedstatedir@,$sharedstatedir,;t t
++s,@localstatedir@,$localstatedir,;t t
++s,@libdir@,$libdir,;t t
++s,@includedir@,$includedir,;t t
++s,@oldincludedir@,$oldincludedir,;t t
++s,@infodir@,$infodir,;t t
++s,@mandir@,$mandir,;t t
++s,@build_alias@,$build_alias,;t t
++s,@host_alias@,$host_alias,;t t
++s,@target_alias@,$target_alias,;t t
++s,@DEFS@,$DEFS,;t t
++s,@ECHO_C@,$ECHO_C,;t t
++s,@ECHO_N@,$ECHO_N,;t t
++s,@ECHO_T@,$ECHO_T,;t t
++s,@LIBS@,$LIBS,;t t
++s,@with_fp@,$with_fp,;t t
++s,@with_cvs@,$with_cvs,;t t
++s,@enable_check_abi@,$enable_check_abi,;t t
++s,@oldest_abi@,$oldest_abi,;t t
++s,@subdirs@,$subdirs,;t t
++s,@force_install@,$force_install,;t t
++s,@all_warnings@,$all_warnings,;t t
++s,@build@,$build,;t t
++s,@build_cpu@,$build_cpu,;t t
++s,@build_vendor@,$build_vendor,;t t
++s,@build_os@,$build_os,;t t
++s,@host@,$host,;t t
++s,@host_cpu@,$host_cpu,;t t
++s,@host_vendor@,$host_vendor,;t t
++s,@host_os@,$host_os,;t t
++s,@base_machine@,$base_machine,;t t
++s,@sysnames@,$sysnames,;t t
++s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
++s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
++s,@INSTALL_DATA@,$INSTALL_DATA,;t t
++s,@LN_S@,$LN_S,;t t
++s,@CC@,$CC,;t t
++s,@CFLAGS@,$CFLAGS,;t t
++s,@LDFLAGS@,$LDFLAGS,;t t
++s,@CPPFLAGS@,$CPPFLAGS,;t t
++s,@ac_ct_CC@,$ac_ct_CC,;t t
++s,@OBJEXT@,$OBJEXT,;t t
++s,@BUILD_CC@,$BUILD_CC,;t t
++s,@cross_compiling@,$cross_compiling,;t t
++s,@CPP@,$CPP,;t t
++s,@CXX@,$CXX,;t t
++s,@CXXFLAGS@,$CXXFLAGS,;t t
++s,@ac_ct_CXX@,$ac_ct_CXX,;t t
++s,@AR@,$AR,;t t
++s,@OBJDUMP@,$OBJDUMP,;t t
++s,@RANLIB@,$RANLIB,;t t
++s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
++s,@MIG@,$MIG,;t t
++s,@AS@,$AS,;t t
++s,@LD@,$LD,;t t
++s,@PWD_P@,$PWD_P,;t t
++s,@MAKE@,$MAKE,;t t
++s,@MSGFMT@,$MSGFMT,;t t
++s,@MAKEINFO@,$MAKEINFO,;t t
++s,@SED@,$SED,;t t
++s,@AUTOCONF@,$AUTOCONF,;t t
++s,@CCVERSION@,$CCVERSION,;t t
++s,@SYSINCLUDES@,$SYSINCLUDES,;t t
++s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t
++s,@BASH@,$BASH,;t t
++s,@libc_cv_have_bash2@,$libc_cv_have_bash2,;t t
++s,@KSH@,$KSH,;t t
++s,@libc_cv_have_ksh@,$libc_cv_have_ksh,;t t
++s,@AWK@,$AWK,;t t
++s,@PERL@,$PERL,;t t
++s,@INSTALL_INFO@,$INSTALL_INFO,;t t
++s,@OLD_DEBIAN_INSTALL_INFO@,$OLD_DEBIAN_INSTALL_INFO,;t t
++s,@BISON@,$BISON,;t t
++s,@VERSIONING@,$VERSIONING,;t t
++s,@libc_cv_asm_protected_directive@,$libc_cv_asm_protected_directive,;t t
++s,@libc_cv_initfinit_array@,$libc_cv_initfinit_array,;t t
++s,@libc_cv_z_nodelete@,$libc_cv_z_nodelete,;t t
++s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
++s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t
++s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
++s,@ASFLAGS_config@,$ASFLAGS_config,;t t
++s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t
++s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t
++s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t
++s,@no_whole_archive@,$no_whole_archive,;t t
++s,@exceptions@,$exceptions,;t t
++s,@LIBGD@,$LIBGD,;t t
++s,@EGREP@,$EGREP,;t t
++s,@sizeof_long_double@,$sizeof_long_double,;t t
++s,@libc_cv_gcc_unwind_find_fde@,$libc_cv_gcc_unwind_find_fde,;t t
++s,@uname_sysname@,$uname_sysname,;t t
++s,@uname_release@,$uname_release,;t t
++s,@uname_version@,$uname_version,;t t
++s,@old_glibc_headers@,$old_glibc_headers,;t t
++s,@libc_cv_slibdir@,$libc_cv_slibdir,;t t
++s,@libc_cv_localedir@,$libc_cv_localedir,;t t
++s,@libc_cv_sysconfdir@,$libc_cv_sysconfdir,;t t
++s,@libc_cv_rootsbindir@,$libc_cv_rootsbindir,;t t
++s,@libc_cv_forced_unwind@,$libc_cv_forced_unwind,;t t
++s,@use_ldconfig@,$use_ldconfig,;t t
++s,@ldd_rewrite_script@,$ldd_rewrite_script,;t t
++s,@gnu_ld@,$gnu_ld,;t t
++s,@gnu_as@,$gnu_as,;t t
++s,@elf@,$elf,;t t
++s,@xcoff@,$xcoff,;t t
++s,@static@,$static,;t t
++s,@shared@,$shared,;t t
++s,@pic_default@,$pic_default,;t t
++s,@profile@,$profile,;t t
++s,@omitfp@,$omitfp,;t t
++s,@bounded@,$bounded,;t t
++s,@static_nss@,$static_nss,;t t
++s,@nopic_initfini@,$nopic_initfini,;t t
++s,@DEFINES@,$DEFINES,;t t
++s,@linux_doors@,$linux_doors,;t t
++s,@mach_interface_list@,$mach_interface_list,;t t
++s,@VERSION@,$VERSION,;t t
++s,@RELEASE@,$RELEASE,;t t
++s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t
++s,@LTLIBOBJS@,$LTLIBOBJS,;t t
++CEOF
++
++_ACEOF
++
++ cat >>$CONFIG_STATUS <<\_ACEOF
++ # Split the substitutions into bite-sized pieces for seds with
++ # small command number limits, like on Digital OSF/1 and HP-UX.
++ ac_max_sed_lines=48
++ ac_sed_frag=1 # Number of current file.
++ ac_beg=1 # First line for current file.
++ ac_end=$ac_max_sed_lines # Line after last line for current file.
++ ac_more_lines=:
++ ac_sed_cmds=
++ while $ac_more_lines; do
++ if test $ac_beg -gt 1; then
++ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
++ else
++ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
++ fi
++ if test ! -s $tmp/subs.frag; then
++ ac_more_lines=false
++ else
++ # The purpose of the label and of the branching condition is to
++ # speed up the sed processing (if there are no `@' at all, there
++ # is no need to browse any of the substitutions).
++ # These are the two extra sed commands mentioned above.
++ (echo ':t
++ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
++ if test -z "$ac_sed_cmds"; then
++ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
++ else
++ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
++ fi
++ ac_sed_frag=`expr $ac_sed_frag + 1`
++ ac_beg=$ac_end
++ ac_end=`expr $ac_end + $ac_max_sed_lines`
++ fi
++ done
++ if test -z "$ac_sed_cmds"; then
++ ac_sed_cmds=cat
++ fi
++fi # test -n "$CONFIG_FILES"
++
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
++ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ case $ac_file in
++ - | *:- | *:-:* ) # input from stdin
++ cat >$tmp/stdin
++ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
++ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
++ * ) ac_file_in=$ac_file.in ;;
++ esac
++
++ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
++ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$ac_file" : 'X\(//\)[^/]' \| \
++ X"$ac_file" : 'X\(//\)$' \| \
++ X"$ac_file" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$ac_file" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ { if $as_mkdir_p; then
++ mkdir -p "$ac_dir"
++ else
++ as_dir="$ac_dir"
++ as_dirs=
++ while test ! -d "$as_dir"; do
++ as_dirs="$as_dir $as_dirs"
++ as_dir=`(dirname "$as_dir") 2>/dev/null ||
++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$as_dir" : 'X\(//\)[^/]' \| \
++ X"$as_dir" : 'X\(//\)$' \| \
++ X"$as_dir" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$as_dir" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ done
++ test ! -n "$as_dirs" || mkdir $as_dirs
++ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
++echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ { (exit 1); exit 1; }; }; }
++
++ ac_builddir=.
++
++if test "$ac_dir" != .; then
++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
++ # A "../" for each directory in $ac_dir_suffix.
++ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
++else
++ ac_dir_suffix= ac_top_builddir=
++fi
++
++case $srcdir in
++ .) # No --srcdir option. We are building in place.
++ ac_srcdir=.
++ if test -z "$ac_top_builddir"; then
++ ac_top_srcdir=.
++ else
++ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
++ fi ;;
++ [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_srcdir=$srcdir$ac_dir_suffix;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
++# absolute.
++ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
++ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
++ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
++ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
++
++
++ case $INSTALL in
++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
++ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ esac
++
++ if test x"$ac_file" != x-; then
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ rm -f "$ac_file"
++ fi
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ if test x"$ac_file" = x-; then
++ configure_input=
++ else
++ configure_input="$ac_file. "
++ fi
++ configure_input=$configure_input"Generated from `echo $ac_file_in |
++ sed 's,.*/,,'` by configure."
++
++ # First look for the input files in the build tree, otherwise in the
++ # src tree.
++ ac_file_inputs=`IFS=:
++ for f in $ac_file_in; do
++ case $f in
++ -) echo $tmp/stdin ;;
++ [\\/$]*)
++ # Absolute (can't be DOS-style, as IFS=:)
++ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
++echo "$as_me: error: cannot find input file: $f" >&2;}
++ { (exit 1); exit 1; }; }
++ echo $f;;
++ *) # Relative
++ if test -f "$f"; then
++ # Build tree
++ echo $f
++ elif test -f "$srcdir/$f"; then
++ # Source tree
++ echo $srcdir/$f
++ else
++ # /dev/null tree
++ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
++echo "$as_me: error: cannot find input file: $f" >&2;}
++ { (exit 1); exit 1; }; }
++ fi;;
++ esac
++ done` || { (exit 1); exit 1; }
++_ACEOF
++cat >>$CONFIG_STATUS <<_ACEOF
++ sed "$ac_vpsub
++$extrasub
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++:t
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
++s,@configure_input@,$configure_input,;t t
++s,@srcdir@,$ac_srcdir,;t t
++s,@abs_srcdir@,$ac_abs_srcdir,;t t
++s,@top_srcdir@,$ac_top_srcdir,;t t
++s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
++s,@builddir@,$ac_builddir,;t t
++s,@abs_builddir@,$ac_abs_builddir,;t t
++s,@top_builddir@,$ac_top_builddir,;t t
++s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
++s,@INSTALL@,$ac_INSTALL,;t t
++" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
++ rm -f $tmp/stdin
++ if test x"$ac_file" != x-; then
++ mv $tmp/out $ac_file
++ else
++ cat $tmp/out
++ rm -f $tmp/out
++ fi
++
++done
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++#
++# CONFIG_HEADER section.
++#
++
++# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
++# NAME is the cpp macro being defined and VALUE is the value it is being given.
++#
++# ac_d sets the value in "#define NAME VALUE" lines.
++ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
++ac_dB='[ ].*$,\1#\2'
++ac_dC=' '
++ac_dD=',;t'
++# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
++ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
++ac_uB='$,\1#\2define\3'
++ac_uC=' '
++ac_uD=',;t'
++
++for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
++ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ case $ac_file in
++ - | *:- | *:-:* ) # input from stdin
++ cat >$tmp/stdin
++ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
++ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
++ * ) ac_file_in=$ac_file.in ;;
++ esac
++
++ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++
++ # First look for the input files in the build tree, otherwise in the
++ # src tree.
++ ac_file_inputs=`IFS=:
++ for f in $ac_file_in; do
++ case $f in
++ -) echo $tmp/stdin ;;
++ [\\/$]*)
++ # Absolute (can't be DOS-style, as IFS=:)
++ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
++echo "$as_me: error: cannot find input file: $f" >&2;}
++ { (exit 1); exit 1; }; }
++ echo $f;;
++ *) # Relative
++ if test -f "$f"; then
++ # Build tree
++ echo $f
++ elif test -f "$srcdir/$f"; then
++ # Source tree
++ echo $srcdir/$f
++ else
++ # /dev/null tree
++ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
++echo "$as_me: error: cannot find input file: $f" >&2;}
++ { (exit 1); exit 1; }; }
++ fi;;
++ esac
++ done` || { (exit 1); exit 1; }
++ # Remove the trailing spaces.
++ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
++
++_ACEOF
++
++# Transform confdefs.h into two sed scripts, `conftest.defines' and
++# `conftest.undefs', that substitutes the proper values into
++# config.h.in to produce config.h. The first handles `#define'
++# templates, and the second `#undef' templates.
++# And first: Protect against being on the right side of a sed subst in
++# config.status. Protect against being in an unquoted here document
++# in config.status.
++rm -f conftest.defines conftest.undefs
++# Using a here document instead of a string reduces the quoting nightmare.
++# Putting comments in sed scripts is not portable.
++#
++# `end' is used to avoid that the second main sed command (meant for
++# 0-ary CPP macros) applies to n-ary macro definitions.
++# See the Autoconf documentation for `clear'.
++cat >confdef2sed.sed <<\_ACEOF
++s/[\\&,]/\\&/g
++s,[\\$`],\\&,g
++t clear
++: clear
++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
++t end
++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
++: end
++_ACEOF
++# If some macros were called several times there might be several times
++# the same #defines, which is useless. Nevertheless, we may not want to
++# sort them, since we want the *last* AC-DEFINE to be honored.
++uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
++sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
++rm -f confdef2sed.sed
++
++# This sed command replaces #undef with comments. This is necessary, for
++# example, in the case of _POSIX_SOURCE, which is predefined and required
++# on some systems where configure will not decide to define it.
++cat >>conftest.undefs <<\_ACEOF
++s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++_ACEOF
++
++# Break up conftest.defines because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
++echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
++echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
++echo ' :' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.defines >/dev/null
++do
++ # Write a limited-size here document to $tmp/defines.sed.
++ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#define' lines.
++ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ echo 'CEOF
++ sed -f $tmp/defines.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ rm -f conftest.defines
++ mv conftest.tail conftest.defines
++done
++rm -f conftest.defines
++echo ' fi # grep' >>$CONFIG_STATUS
++echo >>$CONFIG_STATUS
++
++# Break up conftest.undefs because some shells have a limit on the size
++# of here documents, and old seds have small limits too (100 cmds).
++echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
++rm -f conftest.tail
++while grep . conftest.undefs >/dev/null
++do
++ # Write a limited-size here document to $tmp/undefs.sed.
++ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
++ # Speed up: don't consider the non `#undef'
++ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
++ # Work around the forget-to-reset-the-flag bug.
++ echo 't clr' >>$CONFIG_STATUS
++ echo ': clr' >>$CONFIG_STATUS
++ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
++ echo 'CEOF
++ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
++ rm -f $tmp/in
++ mv $tmp/out $tmp/in
++' >>$CONFIG_STATUS
++ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
++ rm -f conftest.undefs
++ mv conftest.tail conftest.undefs
++done
++rm -f conftest.undefs
++
++cat >>$CONFIG_STATUS <<\_ACEOF
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ if test x"$ac_file" = x-; then
++ echo "/* Generated by configure. */" >$tmp/config.h
++ else
++ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
++ fi
++ cat $tmp/in >>$tmp/config.h
++ rm -f $tmp/in
++ if test x"$ac_file" != x-; then
++ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
++echo "$as_me: $ac_file is unchanged" >&6;}
++ else
++ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$ac_file" : 'X\(//\)[^/]' \| \
++ X"$ac_file" : 'X\(//\)$' \| \
++ X"$ac_file" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$ac_file" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ { if $as_mkdir_p; then
++ mkdir -p "$ac_dir"
++ else
++ as_dir="$ac_dir"
++ as_dirs=
++ while test ! -d "$as_dir"; do
++ as_dirs="$as_dir $as_dirs"
++ as_dir=`(dirname "$as_dir") 2>/dev/null ||
++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$as_dir" : 'X\(//\)[^/]' \| \
++ X"$as_dir" : 'X\(//\)$' \| \
++ X"$as_dir" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$as_dir" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ done
++ test ! -n "$as_dirs" || mkdir $as_dirs
++ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
++echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ { (exit 1); exit 1; }; }; }
++
++ rm -f $ac_file
++ mv $tmp/config.h $ac_file
++ fi
++ else
++ cat $tmp/config.h
++ rm -f $tmp/config.h
++ fi
++done
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++#
++# CONFIG_COMMANDS section.
++#
++for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
++ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
++ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
++ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
++$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$ac_dest" : 'X\(//\)[^/]' \| \
++ X"$ac_dest" : 'X\(//\)$' \| \
++ X"$ac_dest" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$ac_dest" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ ac_builddir=.
++
++if test "$ac_dir" != .; then
++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
++ # A "../" for each directory in $ac_dir_suffix.
++ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
++else
++ ac_dir_suffix= ac_top_builddir=
++fi
++
++case $srcdir in
++ .) # No --srcdir option. We are building in place.
++ ac_srcdir=.
++ if test -z "$ac_top_builddir"; then
++ ac_top_srcdir=.
++ else
++ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
++ fi ;;
++ [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_srcdir=$srcdir$ac_dir_suffix;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
++# absolute.
++ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
++ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
++ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
++ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
++
++
++ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
++echo "$as_me: executing $ac_dest commands" >&6;}
++ case $ac_dest in
++ default )
++case $CONFIG_FILES in *config.make*)
++echo "$config_vars" >> config.make;;
++esac
++test -d bits || mkdir bits ;;
++ esac
++done
++_ACEOF
++
++cat >>$CONFIG_STATUS <<\_ACEOF
++
++{ (exit 0); exit 0; }
++_ACEOF
++chmod +x $CONFIG_STATUS
++ac_clean_files=$ac_clean_files_save
++
++
++# configure is writing to config.log, and then calls config.status.
++# config.status does its own redirection, appending to config.log.
++# Unfortunately, on DOS this fails, as config.log is still kept open
++# by configure, so config.status won't be able to write to it; its
++# output is simply discarded. So we exec the FD to /dev/null,
++# effectively closing config.log, so it can be properly (re)opened and
++# appended to by config.status. When coming back to configure, we
++# need to make the FD available again.
++if test "$no_create" != yes; then
++ ac_cs_success=:
++ ac_config_status_args=
++ test "$silent" = yes &&
++ ac_config_status_args="$ac_config_status_args --quiet"
++ exec 5>/dev/null
++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
++ exec 5>>config.log
++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
++ # would make configure fail if this is the last instruction.
++ $ac_cs_success || { (exit 1); exit 1; }
++fi
++
++#
++# CONFIG_SUBDIRS section.
++#
++if test "$no_recursion" != yes; then
++
++ # Remove --cache-file and --srcdir arguments so they do not pile up.
++ ac_sub_configure_args=
++ ac_prev=
++ for ac_arg in $ac_configure_args; do
++ if test -n "$ac_prev"; then
++ ac_prev=
++ continue
++ fi
++ case $ac_arg in
++ -cache-file | --cache-file | --cache-fil | --cache-fi \
++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
++ ac_prev=cache_file ;;
++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
++ | --c=*)
++ ;;
++ --config-cache | -C)
++ ;;
++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
++ ac_prev=srcdir ;;
++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
++ ;;
++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
++ ac_prev=prefix ;;
++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
++ ;;
++ *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
++ esac
++ done
++
++ # Always prepend --prefix to ensure using the same prefix
++ # in subdir configurations.
++ ac_sub_configure_args="--prefix=$prefix $ac_sub_configure_args"
++
++ ac_popdir=`pwd`
++ for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
++
++ # Do not complain, so a configure script can configure whichever
++ # parts of a large source tree are present.
++ test -d $srcdir/$ac_dir || continue
++
++ { echo "$as_me:$LINENO: configuring in $ac_dir" >&5
++echo "$as_me: configuring in $ac_dir" >&6;}
++ { if $as_mkdir_p; then
++ mkdir -p "$ac_dir"
++ else
++ as_dir="$ac_dir"
++ as_dirs=
++ while test ! -d "$as_dir"; do
++ as_dirs="$as_dir $as_dirs"
++ as_dir=`(dirname "$as_dir") 2>/dev/null ||
++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$as_dir" : 'X\(//\)[^/]' \| \
++ X"$as_dir" : 'X\(//\)$' \| \
++ X"$as_dir" : 'X\(/\)' \| \
++ . : '\(.\)' 2>/dev/null ||
++echo X"$as_dir" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
++ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
++ /^X\(\/\/\)$/{ s//\1/; q; }
++ /^X\(\/\).*/{ s//\1/; q; }
++ s/.*/./; q'`
++ done
++ test ! -n "$as_dirs" || mkdir $as_dirs
++ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
++echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ { (exit 1); exit 1; }; }; }
++
++ ac_builddir=.
++
++if test "$ac_dir" != .; then
++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
++ # A "../" for each directory in $ac_dir_suffix.
++ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
++else
++ ac_dir_suffix= ac_top_builddir=
++fi
++
++case $srcdir in
++ .) # No --srcdir option. We are building in place.
++ ac_srcdir=.
++ if test -z "$ac_top_builddir"; then
++ ac_top_srcdir=.
++ else
++ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
++ fi ;;
++ [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_srcdir=$srcdir$ac_dir_suffix;
++ ac_top_srcdir=$srcdir ;;
++ *) # Relative path.
++ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_builddir$srcdir ;;
++esac
++# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
++# absolute.
++ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
++ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
++ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
++ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
++
++
++ cd $ac_dir
++
++ # Check for guested configure; otherwise get Cygnus style configure.
++ if test -f $ac_srcdir/configure.gnu; then
++ ac_sub_configure="$SHELL '$ac_srcdir/configure.gnu'"
++ elif test -f $ac_srcdir/configure; then
++ ac_sub_configure="$SHELL '$ac_srcdir/configure'"
++ elif test -f $ac_srcdir/configure.in; then
++ ac_sub_configure=$ac_configure
++ else
++ { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5
++echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
++ ac_sub_configure=
++ fi
++
++ # The recursion is here.
++ if test -n "$ac_sub_configure"; then
++ # Make the cache file name correct relative to the subdirectory.
++ case $cache_file in
++ [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
++ *) # Relative path.
++ ac_sub_cache_file=$ac_top_builddir$cache_file ;;
++ esac
++
++ { echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
++echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
++ # The eval makes quoting arguments work.
++ eval $ac_sub_configure $ac_sub_configure_args \
++ --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir ||
++ { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
++echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
++ { (exit 1); exit 1; }; }
++ fi
++
++ cd $ac_popdir
++ done
++fi
++
+--- glibc-2.3.2/autom4te.cache/requests 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/autom4te.cache/requests 2003-09-19 22:48:21.000000000 -0400
+@@ -0,0 +1,111 @@
++# This file was created by autom4te.
++# It contains the lists of macros which have been traced.
++# It can be safely removed.
++
++@request = (
++ bless( [
++ '0',
++ 1,
++ [
++ '/usr/share/autoconf'
++ ],
++ [
++ '/usr/share/autoconf/autoconf/autoconf.m4f',
++ 'aclocal.m4',
++ 'configure.in'
++ ],
++ {
++ 'm4_pattern_forbid' => 1,
++ 'AC_TYPE_OFF_T' => 1,
++ 'AC_C_VOLATILE' => 1,
++ 'AC_FUNC_CLOSEDIR_VOID' => 1,
++ 'AC_REPLACE_FNMATCH' => 1,
++ 'AC_PROG_LIBTOOL' => 1,
++ 'AC_FUNC_STAT' => 1,
++ 'AC_HEADER_TIME' => 1,
++ 'AC_FUNC_WAIT3' => 1,
++ 'AM_AUTOMAKE_VERSION' => 1,
++ 'AC_STRUCT_TM' => 1,
++ 'AC_FUNC_LSTAT' => 1,
++ 'AC_TYPE_MODE_T' => 1,
++ 'AC_FUNC_GETMNTENT' => 1,
++ 'AC_FUNC_STRTOD' => 1,
++ 'AC_CHECK_HEADERS' => 1,
++ 'AC_FUNC_STRNLEN' => 1,
++ 'AC_PROG_CXX' => 1,
++ 'AC_PATH_X' => 1,
++ 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
++ 'AC_PROG_AWK' => 1,
++ 'AC_HEADER_STDC' => 1,
++ 'AC_HEADER_MAJOR' => 1,
++ 'AC_FUNC_ERROR_AT_LINE' => 1,
++ 'AC_PROG_GCC_TRADITIONAL' => 1,
++ 'AC_LIBSOURCE' => 1,
++ 'AC_FUNC_MBRTOWC' => 1,
++ 'AC_STRUCT_ST_BLOCKS' => 1,
++ 'AC_TYPE_SIGNAL' => 1,
++ 'AC_TYPE_UID_T' => 1,
++ 'AC_CONFIG_AUX_DIR' => 1,
++ 'AC_PROG_MAKE_SET' => 1,
++ 'm4_pattern_allow' => 1,
++ 'AC_DEFINE_TRACE_LITERAL' => 1,
++ 'AC_FUNC_STRERROR_R' => 1,
++ 'AC_PROG_CC' => 1,
++ 'AC_DECL_SYS_SIGLIST' => 1,
++ 'AC_FUNC_FORK' => 1,
++ 'AC_FUNC_VPRINTF' => 1,
++ 'AC_FUNC_STRCOLL' => 1,
++ 'AC_PROG_YACC' => 1,
++ 'AC_INIT' => 1,
++ 'AC_STRUCT_TIMEZONE' => 1,
++ 'AC_FUNC_CHOWN' => 1,
++ 'AC_SUBST' => 1,
++ 'AC_FUNC_ALLOCA' => 1,
++ 'AC_CANONICAL_HOST' => 1,
++ 'AC_FUNC_GETPGRP' => 1,
++ 'AC_PROG_RANLIB' => 1,
++ 'AM_INIT_AUTOMAKE' => 1,
++ 'AC_FUNC_SETPGRP' => 1,
++ 'AC_CONFIG_SUBDIRS' => 1,
++ 'AC_FUNC_MMAP' => 1,
++ 'AC_FUNC_REALLOC' => 1,
++ 'AC_TYPE_SIZE_T' => 1,
++ 'AC_CHECK_TYPES' => 1,
++ 'AC_CHECK_MEMBERS' => 1,
++ 'AM_MAINTAINER_MODE' => 1,
++ 'AC_FUNC_UTIME_NULL' => 1,
++ 'AC_FUNC_SELECT_ARGTYPES' => 1,
++ 'AC_FUNC_STRFTIME' => 1,
++ 'AC_HEADER_STAT' => 1,
++ 'AC_C_INLINE' => 1,
++ 'AC_PROG_CPP' => 1,
++ 'AC_C_CONST' => 1,
++ 'AC_PROG_LEX' => 1,
++ 'AC_TYPE_PID_T' => 1,
++ 'AC_CONFIG_FILES' => 1,
++ 'include' => 1,
++ 'AC_FUNC_SETVBUF_REVERSED' => 1,
++ 'AC_PROG_INSTALL' => 1,
++ 'AM_GNU_GETTEXT' => 1,
++ 'AC_FUNC_OBSTACK' => 1,
++ 'AC_CHECK_LIB' => 1,
++ 'AC_FUNC_MALLOC' => 1,
++ 'AC_FUNC_GETGROUPS' => 1,
++ 'AC_FUNC_GETLOADAVG' => 1,
++ 'AH_OUTPUT' => 1,
++ 'AC_FUNC_FSEEKO' => 1,
++ 'AM_PROG_CC_C_O' => 1,
++ 'AM_CONDITIONAL' => 1,
++ 'AC_CANONICAL_SYSTEM' => 1,
++ 'AC_FUNC_MKTIME' => 1,
++ 'AC_CONFIG_HEADERS' => 1,
++ 'AC_HEADER_SYS_WAIT' => 1,
++ 'AC_FUNC_MEMCMP' => 1,
++ 'AC_PROG_LN_S' => 1,
++ 'm4_include' => 1,
++ 'AC_HEADER_DIRENT' => 1,
++ 'AC_CHECK_FUNCS' => 1
++ }
++ ], 'Request' )
++ );
++
+--- glibc-2.3.2/autom4te.cache/traces.0 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/autom4te.cache/traces.0 2003-09-19 22:40:33.000000000 -0400
+@@ -0,0 +1,254 @@
++m4trace:configure.in:4: -1- AC_INIT([GNU C Library], [(see version.h)], [glibc])
++m4trace:configure.in:4: -1- m4_pattern_forbid([^_?A[CHUM]_])
++m4trace:configure.in:4: -1- m4_pattern_forbid([_AC_])
++m4trace:configure.in:4: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
++m4trace:configure.in:4: -1- m4_pattern_allow([^AS_FLAGS$])
++m4trace:configure.in:4: -1- m4_pattern_forbid([^_?m4_])
++m4trace:configure.in:4: -1- m4_pattern_forbid([^dnl$])
++m4trace:configure.in:4: -1- m4_pattern_forbid([^_?AS_])
++m4trace:configure.in:4: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
++m4trace:configure.in:4: -1- AC_SUBST([PATH_SEPARATOR])
++m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
++m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
++m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
++m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
++m4trace:configure.in:4: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
++m4trace:configure.in:4: -1- AC_SUBST([exec_prefix], [NONE])
++m4trace:configure.in:4: -1- AC_SUBST([prefix], [NONE])
++m4trace:configure.in:4: -1- AC_SUBST([program_transform_name], [s,x,x,])
++m4trace:configure.in:4: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
++m4trace:configure.in:4: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
++m4trace:configure.in:4: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
++m4trace:configure.in:4: -1- AC_SUBST([datadir], ['${prefix}/share'])
++m4trace:configure.in:4: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
++m4trace:configure.in:4: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
++m4trace:configure.in:4: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
++m4trace:configure.in:4: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
++m4trace:configure.in:4: -1- AC_SUBST([includedir], ['${prefix}/include'])
++m4trace:configure.in:4: -1- AC_SUBST([oldincludedir], ['/usr/include'])
++m4trace:configure.in:4: -1- AC_SUBST([infodir], ['${prefix}/info'])
++m4trace:configure.in:4: -1- AC_SUBST([mandir], ['${prefix}/man'])
++m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
++m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
++#undef PACKAGE_NAME])
++m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
++m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
++#undef PACKAGE_TARNAME])
++m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
++m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
++#undef PACKAGE_VERSION])
++m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
++m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
++#undef PACKAGE_STRING])
++m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
++m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
++#undef PACKAGE_BUGREPORT])
++m4trace:configure.in:4: -1- AC_SUBST([build_alias])
++m4trace:configure.in:4: -1- AC_SUBST([host_alias])
++m4trace:configure.in:4: -1- AC_SUBST([target_alias])
++m4trace:configure.in:4: -1- AC_SUBST([DEFS])
++m4trace:configure.in:4: -1- AC_SUBST([ECHO_C])
++m4trace:configure.in:4: -1- AC_SUBST([ECHO_N])
++m4trace:configure.in:4: -1- AC_SUBST([ECHO_T])
++m4trace:configure.in:4: -1- AC_SUBST([LIBS])
++m4trace:configure.in:6: -1- AC_CONFIG_HEADERS([config.h])
++m4trace:configure.in:7: -1- AC_CONFIG_AUX_DIR([scripts])
++m4trace:configure.in:73: -1- AC_SUBST([with_fp])
++m4trace:configure.in:100: -1- AC_SUBST([with_cvs])
++m4trace:configure.in:116: -1- AC_SUBST([enable_check_abi])
++m4trace:configure.in:168: -1- AC_DEFINE_TRACE_LITERAL([GLIBC_OLDEST_ABI])
++m4trace:configure.in:170: -1- AC_SUBST([oldest_abi])
++m4trace:configure.in:203: -1- AC_DEFINE_TRACE_LITERAL([NO_HIDDEN])
++m4trace:configure.in:206: -1- AC_CONFIG_SUBDIRS([ ])
++m4trace:configure.in:206: -1- AC_SUBST([subdirs], ["$subdirs "])
++m4trace:configure.in:248: -1- AC_DEFINE_TRACE_LITERAL([DO_STATIC_NSS])
++m4trace:configure.in:256: -1- AC_SUBST([force_install])
++m4trace:configure.in:283: -1- AC_SUBST([all_warnings])
++m4trace:configure.in:285: -1- AC_CANONICAL_HOST
++m4trace:configure.in:285: -1- AC_SUBST([build], [$ac_cv_build])
++m4trace:configure.in:285: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
++m4trace:configure.in:285: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
++m4trace:configure.in:285: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
++m4trace:configure.in:285: -1- AC_SUBST([host], [$ac_cv_host])
++m4trace:configure.in:285: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`])
++m4trace:configure.in:285: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`])
++m4trace:configure.in:285: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`])
++m4trace:configure.in:438: -1- AC_SUBST([base_machine])
++m4trace:configure.in:441: -1- AC_DEFINE_TRACE_LITERAL([USE_REGPARMS])
++m4trace:configure.in:659: -1- AC_SUBST([sysnames])
++m4trace:configure.in:666: -1- AC_PROG_INSTALL
++m4trace:configure.in:666: -1- AC_SUBST([INSTALL_PROGRAM])
++m4trace:configure.in:666: -1- AC_SUBST([INSTALL_SCRIPT])
++m4trace:configure.in:666: -1- AC_SUBST([INSTALL_DATA])
++m4trace:configure.in:671: -1- AC_PROG_LN_S
++m4trace:configure.in:671: -1- AC_SUBST([LN_S], [$as_ln_s])
++m4trace:configure.in:673: -1- AC_PROG_CC
++m4trace:configure.in:673: -1- AC_SUBST([CC])
++m4trace:configure.in:673: -1- AC_SUBST([CFLAGS])
++m4trace:configure.in:673: -1- AC_SUBST([LDFLAGS])
++m4trace:configure.in:673: -1- AC_SUBST([CPPFLAGS])
++m4trace:configure.in:673: -1- AC_SUBST([CC])
++m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC])
++m4trace:configure.in:673: -1- AC_SUBST([CC])
++m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC])
++m4trace:configure.in:673: -1- AC_SUBST([CC])
++m4trace:configure.in:673: -1- AC_SUBST([CC])
++m4trace:configure.in:673: -1- AC_SUBST([ac_ct_CC])
++m4trace:configure.in:673: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
++m4trace:configure.in:675: -1- AC_SUBST([BUILD_CC])
++m4trace:configure.in:677: -1- AC_SUBST([cross_compiling])
++m4trace:configure.in:678: -1- AC_PROG_CPP
++m4trace:configure.in:678: -1- AC_SUBST([CPP])
++m4trace:configure.in:678: -1- AC_SUBST([CPPFLAGS])
++m4trace:configure.in:678: -1- AC_SUBST([CPP])
++m4trace:configure.in:680: -1- AC_PROG_CXX
++m4trace:configure.in:680: -1- AC_SUBST([CXX])
++m4trace:configure.in:680: -1- AC_SUBST([CXXFLAGS])
++m4trace:configure.in:680: -1- AC_SUBST([LDFLAGS])
++m4trace:configure.in:680: -1- AC_SUBST([CPPFLAGS])
++m4trace:configure.in:680: -1- AC_SUBST([CXX])
++m4trace:configure.in:680: -1- AC_SUBST([ac_ct_CXX])
++m4trace:configure.in:681: -1- AC_SUBST([AR])
++m4trace:configure.in:681: -1- AC_SUBST([OBJDUMP])
++m4trace:configure.in:681: -1- AC_SUBST([RANLIB])
++m4trace:configure.in:681: -1- AC_SUBST([ac_ct_RANLIB])
++m4trace:configure.in:681: -1- AC_SUBST([RANLIB])
++m4trace:configure.in:682: -1- AC_SUBST([MIG])
++m4trace:configure.in:687: -1- AC_SUBST([AS])
++m4trace:configure.in:690: -1- AC_SUBST([LD])
++m4trace:configure.in:697: -1- AC_SUBST([PWD_P], [$ac_cv_path_PWD_P])
++m4trace:configure.in:706: -1- AC_SUBST([CC])
++m4trace:configure.in:709: -1- AC_SUBST([MAKE])
++m4trace:configure.in:714: -1- AC_SUBST([MSGFMT])
++m4trace:configure.in:718: -1- AC_SUBST([MAKEINFO])
++m4trace:configure.in:722: -1- AC_SUBST([SED])
++m4trace:configure.in:724: -1- AC_SUBST([AUTOCONF])
++m4trace:configure.in:754: -1- AC_SUBST([CCVERSION])
++m4trace:configure.in:763: -1- AC_SUBST([SYSINCLUDES])
++m4trace:configure.in:818: -1- AC_SUBST([libc_cv_gcc_static_libgcc])
++m4trace:configure.in:820: -1- AC_SUBST([BASH], [$ac_cv_path_BASH])
++m4trace:configure.in:828: -1- AC_SUBST([libc_cv_have_bash2])
++m4trace:configure.in:832: -1- AC_SUBST([KSH], [$ac_cv_path_KSH])
++m4trace:configure.in:840: -1- AC_SUBST([KSH])
++m4trace:configure.in:843: -1- AC_SUBST([libc_cv_have_ksh])
++m4trace:configure.in:845: -1- AC_PROG_AWK
++m4trace:configure.in:845: -1- AC_SUBST([AWK])
++m4trace:configure.in:846: -1- AC_SUBST([PERL], [$ac_cv_path_PERL])
++m4trace:configure.in:852: -1- AC_SUBST([INSTALL_INFO], [$ac_cv_path_INSTALL_INFO])
++m4trace:configure.in:878: -1- AC_SUBST([OLD_DEBIAN_INSTALL_INFO])
++m4trace:configure.in:880: -1- AC_SUBST([BISON], [$ac_cv_path_BISON])
++m4trace:configure.in:969: -1- AC_DEFINE_TRACE_LITERAL([ASM_GLOBAL_DIRECTIVE])
++m4trace:configure.in:994: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_SET_DIRECTIVE])
++m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([ASM_TYPE_DIRECTIVE_PREFIX])
++m4trace:configure.in:1023: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_GLOBAL_DOT_NAME])
++m4trace:configure.in:1077: -1- AC_DEFINE_TRACE_LITERAL([DO_VERSIONING])
++m4trace:configure.in:1081: -1- AC_SUBST([VERSIONING])
++m4trace:configure.in:1104: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_PREVIOUS_DIRECTIVE])
++m4trace:configure.in:1119: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_POPSECTION_DIRECTIVE])
++m4trace:configure.in:1136: -1- AC_SUBST([libc_cv_asm_protected_directive])
++m4trace:configure.in:1137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PROTECTED])
++m4trace:configure.in:1138: -1- AC_DEFINE_TRACE_LITERAL([HAVE_HIDDEN])
++m4trace:configure.in:1158: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VISIBILITY_ATTRIBUTE])
++m4trace:configure.in:1181: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_VISIBILITY_ATTRIBUTE])
++m4trace:configure.in:1205: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BROKEN_ALIAS_ATTRIBUTE])
++m4trace:configure.in:1220: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SDATA_SECTION])
++m4trace:configure.in:1244: -1- AC_SUBST([libc_cv_initfinit_array])
++m4trace:configure.in:1246: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI_ARRAY])
++m4trace:configure.in:1264: -1- AC_SUBST([libc_cv_z_nodelete])
++m4trace:configure.in:1281: -1- AC_SUBST([libc_cv_z_nodlopen])
++m4trace:configure.in:1298: -1- AC_SUBST([libc_cv_z_initfirst])
++m4trace:configure.in:1314: -1- AC_SUBST([libc_cv_Bgroup])
++m4trace:configure.in:1336: -1- AC_SUBST([ASFLAGS_config])
++m4trace:configure.in:1364: -1- AC_DEFINE_TRACE_LITERAL([HAVE_Z_COMBRELOC])
++m4trace:configure.in:1367: -1- AC_SUBST([libc_cv_z_combreloc])
++m4trace:configure.in:1376: -1- AC_SUBST([libc_cv_have_initfini])
++m4trace:configure.in:1378: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INITFINI])
++m4trace:configure.in:1401: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SECTION_QUOTES])
++m4trace:configure.in:1446: -1- AC_DEFINE_TRACE_LITERAL([NO_UNDERSCORES])
++m4trace:configure.in:1492: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_WEAK_DIRECTIVE])
++m4trace:configure.in:1494: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_WEAKEXT_DIRECTIVE])
++m4trace:configure.in:1503: -1- AC_DEFINE_TRACE_LITERAL([ASM_LINE_SEP])
++m4trace:configure.in:1522: -1- AC_DEFINE_TRACE_LITERAL([ASM_LINE_SEP])
++m4trace:configure.in:1543: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ASM_CFI_DIRECTIVES])
++m4trace:configure.in:1573: -1- AC_SUBST([libc_cv_cpp_asm_debuginfo])
++m4trace:configure.in:1575: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CPP_ASM_DEBUGINFO])
++m4trace:configure.in:1596: -1- AC_SUBST([no_whole_archive])
++m4trace:configure.in:1616: -1- AC_SUBST([exceptions])
++m4trace:configure.in:1626: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_PPC_ASM_CR0])
++m4trace:configure.in:1687: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO])
++m4trace:configure.in:1690: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO])
++m4trace:configure.in:1691: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DWARF2_UNWIND_INFO_STATIC])
++m4trace:configure.in:1714: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_EXPECT])
++m4trace:configure.in:1733: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_MEMSET])
++m4trace:configure.in:1753: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_REDIRECTION])
++m4trace:configure.in:1782: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SUBTRACT_LOCAL_LABELS])
++m4trace:configure.in:1798: -1- AC_DEFINE_TRACE_LITERAL([HAVE___THREAD])
++m4trace:configure.in:1817: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TLS_MODEL_ATTRIBUTE])
++m4trace:configure.in:1838: -1- AC_SUBST([LIBGD])
++m4trace:configure.in:1841: -1- AC_HEADER_STDC
++m4trace:configure.in:1841: -1- AC_SUBST([EGREP])
++m4trace:configure.in:1841: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
++m4trace:configure.in:1841: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
++#undef STDC_HEADERS])
++m4trace:configure.in:1841: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
++ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
++#undef HAVE_SYS_TYPES_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
++#undef HAVE_SYS_STAT_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
++#undef HAVE_STDLIB_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
++#undef HAVE_STRING_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
++#undef HAVE_MEMORY_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
++#undef HAVE_STRINGS_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
++#undef HAVE_INTTYPES_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
++#undef HAVE_STDINT_H])
++m4trace:configure.in:1841: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
++#undef HAVE_UNISTD_H])
++m4trace:configure.in:1841: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_DOUBLE])
++m4trace:configure.in:1841: -1- AH_OUTPUT([SIZEOF_LONG_DOUBLE], [/* The size of a `long double\', as computed by sizeof. */
++#undef SIZEOF_LONG_DOUBLE])
++m4trace:configure.in:1843: -1- AC_SUBST([sizeof_long_double])
++m4trace:configure.in:1879: -1- AC_DEFINE_TRACE_LITERAL([EXPORT_UNWIND_FIND_FDE])
++m4trace:configure.in:1881: -1- AC_SUBST([libc_cv_gcc_unwind_find_fde])
++m4trace:configure.in:1934: -1- AC_SUBST([uname_sysname])
++m4trace:configure.in:1934: -1- AC_SUBST([uname_release])
++m4trace:configure.in:1934: -1- AC_SUBST([uname_version])
++m4trace:configure.in:1942: -1- AC_DEFINE_TRACE_LITERAL([USE_IN_LIBIO])
++m4trace:configure.in:1958: -1- AC_SUBST([old_glibc_headers])
++m4trace:configure.in:1960: -1- AC_SUBST([libc_cv_slibdir])
++m4trace:configure.in:1961: -1- AC_SUBST([libc_cv_localedir])
++m4trace:configure.in:1962: -1- AC_SUBST([libc_cv_sysconfdir])
++m4trace:configure.in:1963: -1- AC_SUBST([libc_cv_rootsbindir])
++m4trace:configure.in:1964: -1- AC_SUBST([libc_cv_forced_unwind])
++m4trace:configure.in:1966: -1- AC_SUBST([use_ldconfig])
++m4trace:configure.in:1967: -1- AC_SUBST([ldd_rewrite_script])
++m4trace:configure.in:1969: -1- AC_SUBST([gnu_ld])
++m4trace:configure.in:1969: -1- AC_SUBST([gnu_as])
++m4trace:configure.in:1969: -1- AC_SUBST([elf])
++m4trace:configure.in:1969: -1- AC_SUBST([xcoff])
++m4trace:configure.in:1971: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNU_LD])
++m4trace:configure.in:1974: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNU_AS])
++m4trace:configure.in:1977: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ELF])
++m4trace:configure.in:1980: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XCOFF])
++m4trace:configure.in:1983: -1- AC_SUBST([static])
++m4trace:configure.in:1984: -1- AC_SUBST([shared])
++m4trace:configure.in:2006: -1- AC_SUBST([pic_default])
++m4trace:configure.in:2008: -1- AC_SUBST([profile])
++m4trace:configure.in:2009: -1- AC_SUBST([omitfp])
++m4trace:configure.in:2010: -1- AC_SUBST([bounded])
++m4trace:configure.in:2011: -1- AC_SUBST([static_nss])
++m4trace:configure.in:2012: -1- AC_SUBST([nopic_initfini])
++m4trace:configure.in:2014: -1- AC_SUBST([DEFINES])
++m4trace:configure.in:2020: -1- AC_SUBST([linux_doors])
++m4trace:configure.in:2023: -1- AC_SUBST([mach_interface_list])
++m4trace:configure.in:2033: -1- AC_SUBST([VERSION])
++m4trace:configure.in:2034: -1- AC_SUBST([RELEASE])
++m4trace:configure.in:2036: -1- AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
++m4trace:configure.in:2042: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
++m4trace:configure.in:2042: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+--- glibc-2.3.2/catgets/gencat.c 2003-02-22 18:09:59.000000000 -0500
++++ glibc-2.3.2/catgets/gencat.c 2003-04-12 11:39:42.000000000 -0400
+@@ -333,7 +333,7 @@
+ /* There might be more than one backslash at the end of
+ the line. Only if there is an odd number of them is
+ the line continued. */
+- if (buf[act_len - 1] == '\\')
++ if (act_len > 0 && buf[act_len - 1] == '\\')
+ {
+ int temp_act_len = act_len;
+
+@@ -343,10 +343,10 @@
+ continued = !continued;
+ }
+ while (temp_act_len > 0 && buf[temp_act_len - 1] == '\\');
+- }
+
+- if (continued)
+- --act_len;
++ if (continued)
++ --act_len;
++ }
+ }
+
+ /* Append to currently selected line. */
+--- glibc-2.3.2/catgets/nl_types.h 2001-07-07 15:20:51.000000000 -0400
++++ glibc-2.3.2/catgets/nl_types.h 2003-04-24 20:05:56.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,8 +36,11 @@
+ /* Type used by `nl_langinfo'. */
+ typedef int nl_item;
+
+-/* Open message catalog for later use, returning descriptor. */
+-extern nl_catd catopen (__const char *__cat_name, int __flag) __THROW;
++/* Open message catalog for later use, returning descriptor.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern nl_catd catopen (__const char *__cat_name, int __flag);
+
+ /* Return translation with NUMBER in SET of CATALOG; if not found
+ return STRING. */
+--- glibc-2.3.2/catgets/open_catalog.c 2002-09-24 01:11:41.000000000 -0400
++++ glibc-2.3.2/catgets/open_catalog.c 2003-08-21 08:36:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@gnu.org>.
+
+@@ -30,6 +30,7 @@
+ #include <sys/stat.h>
+
+ #include "catgetsinfo.h"
++#include <not-cancel.h>
+
+
+ #define SWAPU32(w) bswap_32 (w)
+@@ -49,7 +50,7 @@
+ int result = -1;
+
+ if (strchr (cat_name, '/') != NULL || nlspath == NULL)
+- fd = __open (cat_name, O_RDONLY);
++ fd = open_not_cancel_2 (cat_name, O_RDONLY);
+ else
+ {
+ const char *run_nlspath = nlspath;
+@@ -177,7 +178,7 @@
+
+ if (bufact != 0)
+ {
+- fd = __open (buf, O_RDONLY);
++ fd = open_not_cancel_2 (buf, O_RDONLY);
+ if (fd >= 0)
+ break;
+ }
+@@ -233,8 +234,8 @@
+ /* Save read, handle partial reads. */
+ do
+ {
+- size_t now = __read (fd, (((char *) catalog->file_ptr)
+- + (st.st_size - todo)), todo);
++ size_t now = read_not_cancel (fd, (((char *) catalog->file_ptr)
++ + (st.st_size - todo)), todo);
+ if (now == 0 || now == (size_t) -1)
+ {
+ #ifdef EINTR
+@@ -324,7 +325,7 @@
+
+ /* Release the lock again. */
+ close_unlock_return:
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ return result;
+ }
+--- glibc-2.3.2/config-name.in 1994-12-08 04:12:33.000000000 -0500
++++ glibc-2.3.2/config-name.in 2002-11-16 08:53:56.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* @configure_input@ -*- C -*-
+- Generated from $Id: config-name.in,v 1.1 1994/12/08 09:12:33 roland Exp $.
++ Generated from $Id$.
+
+ This is used only by the generic `uname' function for systems with no real
+ `uname' call. If this data is not correct, it does not matter much. */
+--- glibc-2.3.2/config.h.in 2003-02-04 03:35:22.000000000 -0500
++++ glibc-2.3.2/config.h.in 2003-05-24 14:06:21.000000000 -0400
+@@ -31,6 +31,9 @@
+ /* Define if weak symbols are available via the `.weakext' directive. */
+ #undef HAVE_ASM_WEAKEXT_DIRECTIVE
+
++/* Define if CFI directives are available. */
++#undef HAVE_ASM_CFI_DIRECTIVES
++
+ /* Define to the assembler line separator character for multiple
+ assembler instructions per line. Default is `;' */
+ #undef ASM_LINE_SEP
+@@ -58,6 +61,9 @@
+ /* Define a symbol_name as a global .symbol_name for ld. */
+ #undef HAVE_ASM_GLOBAL_DOT_NAME
+
++/* Define if the assembler generates debugging information directly. */
++#undef HAVE_CPP_ASM_DEBUGINFO
++
+ /* Define if _Unwind_Find_FDE should be exported from glibc. */
+ #undef EXPORT_UNWIND_FIND_FDE
+
+@@ -95,6 +101,10 @@
+ /* Define if the compiler supports __builtin_memset. */
+ #undef HAVE_BUILTIN_MEMSET
+
++/* Define if __asm () on built-in function's prototype causes redirection of
++ the builtin. */
++#undef HAVE_BUILTIN_REDIRECTION
++
+ /* Define if the __thread keyword is supported. */
+ #undef HAVE___THREAD
+
+@@ -186,6 +196,9 @@
+ /* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */
+ #undef HAVE_I386_SET_GDT
+
++/* Defined if forced unwind support is available. */
++#undef HAVE_FORCED_UNWIND
++
+ /*
+ */
+
+--- glibc-2.3.2/config.make.in 2002-11-14 17:53:32.000000000 -0500
++++ glibc-2.3.2/config.make.in 2003-08-21 08:36:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ # @configure_input@
+-# From $Id: config.make.in,v 1.90 2002/11/14 03:59:36 roland Exp $.
++# From $Id: config.make.in,v 1.94 2003/06/04 21:40:22 drepper Exp $.
+ # Don't edit this file. Put configuration parameters in configparms instead.
+
+ version = @VERSION@
+@@ -50,6 +50,9 @@
+ old-glibc-headers = @old_glibc_headers@
+ unwind-find-fde = @libc_cv_gcc_unwind_find_fde@
+ have-initfini-array = @libc_cv_initfinit_array@
++have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
++enable-check-abi = @enable_check_abi@
++have-forced-unwind = @libc_cv_forced_unwind@
+
+ static-libgcc = @libc_cv_gcc_static_libgcc@
+
+@@ -82,8 +85,10 @@
+
+ # Build tools.
+ CC = @CC@
++CXX = @CXX@
+ BUILD_CC = @BUILD_CC@
+ CFLAGS = @CFLAGS@
++ASFLAGS-config = @ASFLAGS_config@
+ AR = @AR@
+ RANLIB = @RANLIB@
+ MAKEINFO = @MAKEINFO@
+--- glibc-2.3.2/configure 2003-02-26 04:20:48.000000000 -0500
++++ glibc-2.3.2/configure 2003-08-21 08:36:58.000000000 -0400
+@@ -1,7 +1,7 @@
+ #! /bin/sh
+ # From configure.in CVSid.
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.57 for GNU C Library (see version.h).
++# Generated by GNU Autoconf 2.54 for GNU C Library (see version.h).
+ #
+ # Report bugs to <glibc>.
+ #
+@@ -39,10 +39,7 @@
+ PS4='+ '
+
+ # NLS nuisances.
+-for as_var in \
+- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+- LC_TELEPHONE LC_TIME
++for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
+ do
+ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+@@ -88,15 +85,15 @@
+
+ # The user is always right.
+ if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ echo "#! /bin/sh" >conftest.sh
++ echo "exit 0" >>conftest.sh
++ chmod +x conftest.sh
++ if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+- rm -f conf$$.sh
++ rm -f conftest.sh
+ fi
+
+
+@@ -312,7 +309,7 @@
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S PWD_P CC MAKE MSGFMT MAKEINFO SED AUTOCONF CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc libc_cv_have_initfini no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc_cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS'
+ ac_subst_files=''
+
+ # Initialize some variables set by options.
+@@ -773,6 +770,14 @@
+ ac_env_CPP_value=$CPP
+ ac_cv_env_CPP_set=${CPP+set}
+ ac_cv_env_CPP_value=$CPP
++ac_env_CXX_set=${CXX+set}
++ac_env_CXX_value=$CXX
++ac_cv_env_CXX_set=${CXX+set}
++ac_cv_env_CXX_value=$CXX
++ac_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_env_CXXFLAGS_value=$CXXFLAGS
++ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
++ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+
+ #
+ # Report the --help message.
+@@ -851,6 +856,8 @@
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-sanity-checks really do not use threads (should not be used except
+ in special situations) [default=yes]
++ --enable-check-abi do "make check-abi" in "make check" (no/warn/yes)
++ [default=no]
+ --enable-shared build shared library [default=yes if GNU ld &
+ ELF]
+ --enable-profile build profiled library [default=yes]
+@@ -899,6 +906,8 @@
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
++ CXX C++ compiler command
++ CXXFLAGS C++ compiler flags
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+@@ -967,7 +976,7 @@
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ GNU C Library configure (see version.h)
+-generated by GNU Autoconf 2.57
++generated by GNU Autoconf 2.54
+
+ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+ Free Software Foundation, Inc.
+@@ -982,7 +991,7 @@
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by GNU C Library $as_me (see version.h), which was
+-generated by GNU Autoconf 2.57. Invocation command line was
++generated by GNU Autoconf 2.54. Invocation command line was
+
+ $ $0 $@
+
+@@ -1034,54 +1043,24 @@
+
+ # Keep a trace of the command line.
+ # Strip out --no-create and --no-recursion so they do not pile up.
+-# Strip out --silent because we don't want to record it for future runs.
+ # Also quote any args containing shell meta-characters.
+-# Make two passes to allow for proper duplicate-argument suppression.
+ ac_configure_args=
+-ac_configure_args0=
+-ac_configure_args1=
+ ac_sep=
+-ac_must_keep_next=false
+-for ac_pass in 1 2
++for ac_arg
+ do
+- for ac_arg
+- do
+- case $ac_arg in
+- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+- | -silent | --silent | --silen | --sile | --sil)
+- continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+- esac
+- case $ac_pass in
+- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+- 2)
+- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+- if test $ac_must_keep_next = true; then
+- ac_must_keep_next=false # Got value, back to normal.
+- else
+- case $ac_arg in
+- *=* | --config-cache | -C | -disable-* | --disable-* \
+- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+- | -with-* | --with-* | -without-* | --without-* | --x)
+- case "$ac_configure_args0 " in
+- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+- esac
+- ;;
+- -* ) ac_must_keep_next=true ;;
+- esac
+- fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
+- ;;
+- esac
+- done
++ case $ac_arg in
++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
++ | --no-cr | --no-c | -n ) continue ;;
++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
++ continue ;;
++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
++ esac
++ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
++ # Get rid of the leading space.
++ ac_sep=" "
+ done
+-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+@@ -1479,6 +1458,15 @@
+ enable_sanity=yes
+ fi;
+
++
++# Check whether --enable-check-abi or --disable-check-abi was given.
++if test "${enable_check_abi+set}" = set; then
++ enableval="$enable_check_abi"
++ enable_check_abi=$enableval
++else
++ enable_check_abi=no
++fi;
++
+ static=yes
+ # Check whether --enable-shared or --disable-shared was given.
+ if test "${enable_shared+set}" = set; then
+@@ -1822,8 +1810,33 @@
+ m68k) base_machine=m68k machine=m68k/m68020 ;;
+ m88???) base_machine=m88k machine=m88k/$machine ;;
+ m88k) base_machine=m88k machine=m88k/m88100 ;;
+-mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
+-mips*) base_machine=mips machine=mips/$machine ;;
++mips64*) base_machine=mips64
++ case "$CC $CFLAGS $CPPFLAGS " in
++ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
++ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
++ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
++ *) mips_cc_abi=default ;;
++ esac
++ case $config_os in
++ *abin32*) mips_config_abi=n32 ;;
++ *abi64*|*abin64*) mips_config_abi=64 ;;
++ *abi32*|*abio32*) mips_config_abi=32 ;;
++ *) mips_config_abi=$mips_cc_abi ;;
++ esac
++ case $mips_config_abi in
++ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
++ n32) machine=mips/mips64/n32 ;;
++ 64) machine=mips/mips64/n64 ;;
++ 32) machine=mips/mips32/kern64 ;;
++ esac
++ machine=$machine/$config_machine
++ if test $mips_config_abi != $mips_cc_abi; then
++ # This won't make it to config.make, but we want to
++ # set this in case configure tests depend on it.
++ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
++ fi
++ ;;
++mips*) base_machine=mips machine=mips/mips32/$machine ;;
+ powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
+ powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
+ s390) base_machine=s390 machine=s390/s390-32 ;;
+@@ -2170,70 +2183,59 @@
+ fi
+
+
+-# We need the physical current working directory. We cannot use the
+-# "pwd -P" shell builtin since that's not portable. Instead we try to
+-# find a pwd binary. Note that assigning to the PWD environment
+-# variable might have some interesting side effects, so we don't do
+-# that.
+-# Extract the first word of "pwd", so it can be a program name with args.
+-set dummy pwd; ac_word=$2
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
++set dummy ${ac_tool_prefix}gcc; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_path_PWD_P+set}" = set; then
++if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- case $PWD_P in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
++ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+
+- test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
+- ;;
+-esac
+ fi
+-PWD_P=$ac_cv_path_PWD_P
+-
+-if test -n "$PWD_P"; then
+- echo "$as_me:$LINENO: result: $PWD_P" >&5
+-echo "${ECHO_T}$PWD_P" >&6
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+-if test "$PWD_P" = no; then
+- { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
+-echo "$as_me: error: *** A pwd binary could not be found." >&2;}
+- { (exit 1); exit 1; }; }
+ fi
+-
+-# These programs are version sensitive.
+-
+-for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
++if test -z "$ac_cv_prog_CC"; then
++ ac_ct_CC=$CC
++ # Extract the first word of "gcc", so it can be a program name with args.
++set dummy gcc; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
++ if test -n "$ac_ct_CC"; then
++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -2242,7 +2244,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="$ac_prog"
++ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -2251,50 +2253,31 @@
+
+ fi
+ fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ac_ct_CC=$ac_cv_prog_ac_ct_CC
++if test -n "$ac_ct_CC"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$CC" && break
+-done
+-
+-if test -z "$CC"; then
+- ac_verc_fail=yes
++ CC=$ac_ct_CC
+ else
+- # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $CC" >&5
+-echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+- ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+- case $ac_prog_version in
+- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 3.[2-9]*)
+- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+- esac
+- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+- critic_missing="$critic_missing gcc"
++ CC="$ac_cv_prog_CC"
+ fi
+
+-for ac_prog in gnumake gmake make
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
++if test -z "$CC"; then
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++set dummy ${ac_tool_prefix}cc; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_MAKE+set}" = set; then
++if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$MAKE"; then
+- ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -2303,7 +2286,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_MAKE="$ac_prog"
++ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -2312,63 +2295,27 @@
+
+ fi
+ fi
+-MAKE=$ac_cv_prog_MAKE
+-if test -n "$MAKE"; then
+- echo "$as_me:$LINENO: result: $MAKE" >&5
+-echo "${ECHO_T}$MAKE" >&6
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$MAKE" && break
+-done
+-
+-if test -z "$MAKE"; then
+- ac_verc_fail=yes
+-else
+- # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $MAKE" >&5
+-echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
+- ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
+- case $ac_prog_version in
+- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 3.79* | 3.[89]*)
+- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+- esac
+- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+- critic_missing="$critic_missing make"
+-fi
+-
+-
+-
+-if test -n "$critic_missing"; then
+-{ { echo "$as_me:$LINENO: error:
+-*** These critical programs are missing or too old:$critic_missing
+-*** Check the INSTALL file for required versions." >&5
+-echo "$as_me: error:
+-*** These critical programs are missing or too old:$critic_missing
+-*** Check the INSTALL file for required versions." >&2;}
+- { (exit 1); exit 1; }; }
+ fi
+-
+-
+-for ac_prog in gnumsgfmt gmsgfmt msgfmt
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
++if test -z "$ac_cv_prog_CC"; then
++ ac_ct_CC=$CC
++ # Extract the first word of "cc", so it can be a program name with args.
++set dummy cc; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_MSGFMT+set}" = set; then
++if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$MSGFMT"; then
+- ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
++ if test -n "$ac_ct_CC"; then
++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -2377,7 +2324,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_MSGFMT="$ac_prog"
++ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -2386,51 +2333,33 @@
+
+ fi
+ fi
+-MSGFMT=$ac_cv_prog_MSGFMT
+-if test -n "$MSGFMT"; then
+- echo "$as_me:$LINENO: result: $MSGFMT" >&5
+-echo "${ECHO_T}$MSGFMT" >&6
++ac_ct_CC=$ac_cv_prog_ac_ct_CC
++if test -n "$ac_ct_CC"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$MSGFMT" && break
+-done
+-
+-if test -z "$MSGFMT"; then
+- ac_verc_fail=yes
++ CC=$ac_ct_CC
+ else
+- # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
+-echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
+- ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+- case $ac_prog_version in
+- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
+- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+- esac
+- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+- MSGFMT=: aux_missing="$aux_missing msgfmt"
++ CC="$ac_cv_prog_CC"
+ fi
+
+-for ac_prog in makeinfo
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
++fi
++if test -z "$CC"; then
++ # Extract the first word of "cc", so it can be a program name with args.
++set dummy cc; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_MAKEINFO+set}" = set; then
++if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$MAKEINFO"; then
+- ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
+ else
++ ac_prog_rejected=no
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+@@ -2438,205 +2367,30 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_MAKEINFO="$ac_prog"
++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
++ ac_prog_rejected=yes
++ continue
++ fi
++ ac_cv_prog_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+
++if test $ac_prog_rejected = yes; then
++ # We found a bogon in the path, so make sure we never use it.
++ set dummy $ac_cv_prog_CC
++ shift
++ if test $# != 0; then
++ # We chose a different compiler from the bogus one.
++ # However, it has the same basename, so the bogon will be chosen
++ # first if we set CC to just the basename; use the full file name.
++ shift
++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
++ fi
+ fi
+ fi
+-MAKEINFO=$ac_cv_prog_MAKEINFO
+-if test -n "$MAKEINFO"; then
+- echo "$as_me:$LINENO: result: $MAKEINFO" >&5
+-echo "${ECHO_T}$MAKEINFO" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- test -n "$MAKEINFO" && break
+-done
+-
+-if test -z "$MAKEINFO"; then
+- ac_verc_fail=yes
+-else
+- # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
+-echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
+- ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
+- case $ac_prog_version in
+- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 4.*)
+- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+- esac
+- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+- MAKEINFO=: aux_missing="$aux_missing makeinfo"
+-fi
+-
+-for ac_prog in sed
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_SED+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$SED"; then
+- ac_cv_prog_SED="$SED" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_SED="$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-SED=$ac_cv_prog_SED
+-if test -n "$SED"; then
+- echo "$as_me:$LINENO: result: $SED" >&5
+-echo "${ECHO_T}$SED" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- test -n "$SED" && break
+-done
+-
+-if test -z "$SED"; then
+- ac_verc_fail=yes
+-else
+- # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $SED" >&5
+-echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
+- ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
+- case $ac_prog_version in
+- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 3.0[2-9]*|3.[1-9]*|[4-9]*)
+- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+- esac
+- echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+- SED=: aux_missing="$aux_missing sed"
+-fi
+-
+-
+-if test "x$with_cvs" != xyes; then
+- for ac_prog in autoconf
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_AUTOCONF+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$AUTOCONF"; then
+- ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_AUTOCONF="$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-AUTOCONF=$ac_cv_prog_AUTOCONF
+-if test -n "$AUTOCONF"; then
+- echo "$as_me:$LINENO: result: $AUTOCONF" >&5
+-echo "${ECHO_T}$AUTOCONF" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- test -n "$AUTOCONF" && break
+-done
+-test -n "$AUTOCONF" || AUTOCONF="no"
+-
+- case "x$AUTOCONF" in
+- xno|x|x:) AUTOCONF=no ;;
+- *)
+- echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
+-echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
+-if test "${libc_cv_autoconf_works+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
+- libc_cv_autoconf_works=yes
+- else
+- libc_cv_autoconf_works=no
+- fi
+-fi
+-echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
+-echo "${ECHO_T}$libc_cv_autoconf_works" >&6
+- test $libc_cv_autoconf_works = yes || AUTOCONF=no
+- ;;
+- esac
+- test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
+-fi
+-
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="${ac_tool_prefix}gcc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+@@ -2648,52 +2402,12 @@
+ fi
+
+ fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "gcc", so it can be a program name with args.
+-set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="gcc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+-
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}cc; ac_word=$2
++ for ac_prog in cl
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_CC+set}" = set; then
+@@ -2709,7 +2423,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="${ac_tool_prefix}cc"
++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -2727,11 +2441,15 @@
+ echo "${ECHO_T}no" >&6
+ fi
+
++ test -n "$CC" && break
++ done
+ fi
+-if test -z "$ac_cv_prog_CC"; then
++if test -z "$CC"; then
+ ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
++ for ac_prog in cl
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+@@ -2747,7 +2465,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
++ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -2764,150 +2482,9 @@
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+-
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+-
+-fi
+-if test -z "$CC"; then
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+- ac_prog_rejected=no
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+- ac_prog_rejected=yes
+- continue
+- fi
+- ac_cv_prog_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-if test $ac_prog_rejected = yes; then
+- # We found a bogon in the path, so make sure we never use it.
+- set dummy $ac_cv_prog_CC
+- shift
+- if test $# != 0; then
+- # We chose a different compiler from the bogus one.
+- # However, it has the same basename, so the bogon will be chosen
+- # first if we set CC to just the basename; use the full file name.
+- shift
+- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+- fi
+-fi
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
+- do
+- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$CC"; then
+- ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- test -n "$CC" && break
+- done
+-fi
+-if test -z "$CC"; then
+- ac_ct_CC=$CC
+- for ac_prog in cl
+-do
+- # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="$ac_prog"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+- test -n "$ac_ct_CC" && break
+-done
++
++ test -n "$ac_ct_CC" && break
++done
+
+ CC=$ac_ct_CC
+ fi
+@@ -2915,10 +2492,8 @@
+ fi
+
+
+-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: no acceptable C compiler found in \$PATH
+-See \`config.log' for more details." >&2;}
++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5
++echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+@@ -2949,11 +2524,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+
+ int
+ main ()
+@@ -2978,12 +2549,9 @@
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute suffix of object files: cannot compile
+-See \`config.log' for more details." >&2;}
++cat conftest.$ac_ext >&5
++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5
++echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+@@ -3000,11 +2568,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+
+ int
+ main ()
+@@ -3032,8 +2596,7 @@
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_compiler_gnu=no
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -3053,11 +2616,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+
+ int
+ main ()
+@@ -3082,8 +2641,7 @@
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_cv_prog_cc_g=no
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -3114,11 +2672,7 @@
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+@@ -3181,8 +2735,7 @@
+ break
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest.$ac_objext
+ done
+@@ -3233,11 +2786,7 @@
+ do
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <stdlib.h>
+ $ac_declaration
+ int
+@@ -3263,18 +2812,13 @@
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ continue
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_declaration
+ int
+ main ()
+@@ -3299,8 +2843,7 @@
+ break
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+@@ -3313,8 +2856,7 @@
+
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+@@ -3389,22 +2931,12 @@
+ do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
++#include "confdefs.h"
++#include <assert.h>
+ Syntax error
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -3427,8 +2959,7 @@
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++ cat conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
+@@ -3438,11 +2969,7 @@
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <ac_nonexistent.h>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -3466,8 +2993,7 @@
+ continue
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ ac_preproc_ok=:
+ break
+@@ -3496,22 +3022,12 @@
+ do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
++#include "confdefs.h"
++#include <assert.h>
+ Syntax error
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -3534,8 +3050,7 @@
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++ cat conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
+@@ -3545,11 +3060,7 @@
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <ac_nonexistent.h>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -3573,8 +3084,7 @@
+ continue
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ ac_preproc_ok=:
+ break
+@@ -3587,10 +3097,8 @@
+ if $ac_preproc_ok; then
+ :
+ else
+- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+-See \`config.log' for more details." >&2;}
++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5
++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+@@ -3600,34 +3108,698 @@
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+-# Was a --with-binutils option given?
+-if test -n "$path_binutils"; then
+- # Make absolute; ensure a single trailing slash.
+- path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
+- CC="$CC -B$path_binutils"
++# We need the C++ compiler only for testing.
++ac_ext=cc
++ac_cpp='$CXXCPP $CPPFLAGS'
++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
++if test -n "$ac_tool_prefix"; then
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
++ do
++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
++set dummy $ac_tool_prefix$ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CXX+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CXX"; then
++ ac_cv_prog_CXX="$CXX" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CXX=$ac_cv_prog_CXX
++if test -n "$CXX"; then
++ echo "$as_me:$LINENO: result: $CXX" >&5
++echo "${ECHO_T}$CXX" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
+ fi
+-AS=`$CC -print-prog-name=as`
+-LD=`$CC -print-prog-name=ld`
+-AR=`$CC -print-prog-name=ar`
+
+-OBJDUMP=`$CC -print-prog-name=objdump`
++ test -n "$CXX" && break
++ done
++fi
++if test -z "$CXX"; then
++ ac_ct_CXX=$CXX
++ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_CXX"; then
++ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_CXX="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
+
++fi
++fi
++ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
++if test -n "$ac_ct_CXX"; then
++ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
++echo "${ECHO_T}$ac_ct_CXX" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
+
+-# ranlib has to be treated a bit differently since it might not exist at all.
+-ac_ranlib=`$CC -print-prog-name=ranlib`
+-if test "x$ac_ranlib" = xranlib; then
+-# This extra check has to happen since gcc simply echos the parameter in
+-# case it cannot find the value in its own directories.
+-if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
++ test -n "$ac_ct_CXX" && break
++done
++test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
++
++ CXX=$ac_ct_CXX
++fi
++
++
++# Provide some information about the compiler.
++echo "$as_me:$LINENO:" \
++ "checking for C++ compiler version" >&5
++ac_compiler=`set X $ac_compile; echo $2`
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
++ (eval $ac_compiler --version </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
++ (eval $ac_compiler -v </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
++ (eval $ac_compiler -V </dev/null >&5) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }
++
++echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
++if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++
++int
++main ()
++{
++#ifndef __GNUC__
++ choke me
++#endif
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_compiler_gnu=yes
++else
++ echo "$as_me: failed program was:" >&5
++cat conftest.$ac_ext >&5
++ac_compiler_gnu=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
++
++fi
++echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
++GXX=`test $ac_compiler_gnu = yes && echo yes`
++ac_test_CXXFLAGS=${CXXFLAGS+set}
++ac_save_CXXFLAGS=$CXXFLAGS
++CXXFLAGS="-g"
++echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
++if test "${ac_cv_prog_cxx_g+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_prog_cxx_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++cat conftest.$ac_ext >&5
++ac_cv_prog_cxx_g=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
++if test "$ac_test_CXXFLAGS" = set; then
++ CXXFLAGS=$ac_save_CXXFLAGS
++elif test $ac_cv_prog_cxx_g = yes; then
++ if test "$GXX" = yes; then
++ CXXFLAGS="-g -O2"
++ else
++ CXXFLAGS="-g"
++ fi
++else
++ if test "$GXX" = yes; then
++ CXXFLAGS="-O2"
++ else
++ CXXFLAGS=
++ fi
++fi
++for ac_declaration in \
++ ''\
++ '#include <stdlib.h>' \
++ 'extern "C" void std::exit (int) throw (); using std::exit;' \
++ 'extern "C" void std::exit (int); using std::exit;' \
++ 'extern "C" void exit (int) throw ();' \
++ 'extern "C" void exit (int);' \
++ 'void exit (int);'
++do
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++#include <stdlib.h>
++$ac_declaration
++int
++main ()
++{
++exit (42);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++cat conftest.$ac_ext >&5
++continue
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++$ac_declaration
++int
++main ()
++{
++exit (42);
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ break
++else
++ echo "$as_me: failed program was:" >&5
++cat conftest.$ac_ext >&5
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++done
++rm -f conftest*
++if test -n "$ac_declaration"; then
++ echo '#ifdef __cplusplus' >>confdefs.h
++ echo $ac_declaration >>confdefs.h
++ echo '#endif' >>confdefs.h
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++# Was a --with-binutils option given?
++if test -n "$path_binutils"; then
++ # Make absolute; ensure a single trailing slash.
++ path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
++ CC="$CC -B$path_binutils"
++fi
++AS=`$CC -print-prog-name=as`
++LD=`$CC -print-prog-name=ld`
++AR=`$CC -print-prog-name=ar`
++
++OBJDUMP=`$CC -print-prog-name=objdump`
++
++
++# ranlib has to be treated a bit differently since it might not exist at all.
++ac_ranlib=`$CC -print-prog-name=ranlib`
++if test "x$ac_ranlib" = xranlib; then
++# This extra check has to happen since gcc simply echos the parameter in
++# case it cannot find the value in its own directories.
++if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
++set dummy ${ac_tool_prefix}ranlib; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_RANLIB+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$RANLIB"; then
++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++RANLIB=$ac_cv_prog_RANLIB
++if test -n "$RANLIB"; then
++ echo "$as_me:$LINENO: result: $RANLIB" >&5
++echo "${ECHO_T}$RANLIB" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++fi
++if test -z "$ac_cv_prog_RANLIB"; then
++ ac_ct_RANLIB=$RANLIB
++ # Extract the first word of "ranlib", so it can be a program name with args.
++set dummy ranlib; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$ac_ct_RANLIB"; then
++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_ac_ct_RANLIB="ranlib"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
++fi
++fi
++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
++if test -n "$ac_ct_RANLIB"; then
++ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
++echo "${ECHO_T}$ac_ct_RANLIB" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ RANLIB=$ac_ct_RANLIB
++else
++ RANLIB="$ac_cv_prog_RANLIB"
++fi
++
++else
++ RANLIB=$ac_ranlib
++fi
++
++
++# Determine whether we are using GNU binutils.
++echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
++echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6
++if test "${libc_cv_prog_as_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Most GNU programs take a -v and spit out some text including
++# the word 'GNU'. Some try to read stdin, so give them /dev/null.
++if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
++ libc_cv_prog_as_gnu=yes
++else
++ libc_cv_prog_as_gnu=no
++fi
++rm -fr contest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
++echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6
++rm -f a.out
++gnu_as=$libc_cv_prog_as_gnu
++
++echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
++echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6
++if test "${libc_cv_prog_ld_gnu+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ # Most GNU programs take a -v and spit out some text including
++# the word 'GNU'. Some try to read stdin, so give them /dev/null.
++if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
++ libc_cv_prog_ld_gnu=yes
++else
++ libc_cv_prog_ld_gnu=no
++fi
++rm -fr contest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
++echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6
++gnu_ld=$libc_cv_prog_ld_gnu
++
++
++# Accept binutils 2.13 or newer.
++for ac_prog in $AS
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_AS+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$AS"; then
++ ac_cv_prog_AS="$AS" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_AS="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++AS=$ac_cv_prog_AS
++if test -n "$AS"; then
++ echo "$as_me:$LINENO: result: $AS" >&5
++echo "${ECHO_T}$AS" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$AS" && break
++done
++
++if test -z "$AS"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $AS" >&5
++echo $ECHO_N "checking version of $AS... $ECHO_C" >&6
++ ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 2.1[3-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ AS=: critic_missing="$critic_missing as"
++fi
++
++for ac_prog in $LD
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_LD+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$LD"; then
++ ac_cv_prog_LD="$LD" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_LD="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++LD=$ac_cv_prog_LD
++if test -n "$LD"; then
++ echo "$as_me:$LINENO: result: $LD" >&5
++echo "${ECHO_T}$LD" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$LD" && break
++done
++
++if test -z "$LD"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $LD" >&5
++echo $ECHO_N "checking version of $LD... $ECHO_C" >&6
++ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 2.1[3-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ LD=: critic_missing="$critic_missing ld"
++fi
++
++
++# We need the physical current working directory. We cannot use the
++# "pwd -P" shell builtin since that's not portable. Instead we try to
++# find a pwd binary. Note that assigning to the PWD environment
++# variable might have some interesting side effects, so we don't do
++# that.
++# Extract the first word of "pwd", so it can be a program name with args.
++set dummy pwd; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_path_PWD_P+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PWD_P in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PWD_P="$PWD_P" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_path_PWD_P="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++ test -z "$ac_cv_path_PWD_P" && ac_cv_path_PWD_P="no"
++ ;;
++esac
++fi
++PWD_P=$ac_cv_path_PWD_P
++
++if test -n "$PWD_P"; then
++ echo "$as_me:$LINENO: result: $PWD_P" >&5
++echo "${ECHO_T}$PWD_P" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++if test "$PWD_P" = no; then
++ { { echo "$as_me:$LINENO: error: *** A pwd binary could not be found." >&5
++echo "$as_me: error: *** A pwd binary could not be found." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++# These programs are version sensitive.
++
++for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_CC+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_CC="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++CC=$ac_cv_prog_CC
++if test -n "$CC"; then
++ echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$CC" && break
++done
++
++if test -z "$CC"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $CC" >&5
++echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
++ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 3.[2-9]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
++fi
++if test $ac_verc_fail = yes; then
++ critic_missing="$critic_missing gcc"
++fi
++
++for ac_prog in gnumake gmake make
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_RANLIB+set}" = set; then
++if test "${ac_cv_prog_MAKE+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$RANLIB"; then
+- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
++ if test -n "$MAKE"; then
++ ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3636,7 +3808,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
++ ac_cv_prog_MAKE="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -3645,27 +3817,51 @@
+
+ fi
+ fi
+-RANLIB=$ac_cv_prog_RANLIB
+-if test -n "$RANLIB"; then
+- echo "$as_me:$LINENO: result: $RANLIB" >&5
+-echo "${ECHO_T}$RANLIB" >&6
++MAKE=$ac_cv_prog_MAKE
++if test -n "$MAKE"; then
++ echo "$as_me:$LINENO: result: $MAKE" >&5
++echo "${ECHO_T}$MAKE" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
++ test -n "$MAKE" && break
++done
++
++if test -z "$MAKE"; then
++ ac_verc_fail=yes
++else
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $MAKE" >&5
++echo $ECHO_N "checking version of $MAKE... $ECHO_C" >&6
++ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 3.79* | 3.[89]*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
+ fi
+-if test -z "$ac_cv_prog_RANLIB"; then
+- ac_ct_RANLIB=$RANLIB
+- # Extract the first word of "ranlib", so it can be a program name with args.
+-set dummy ranlib; ac_word=$2
++if test $ac_verc_fail = yes; then
++ critic_missing="$critic_missing make"
++fi
++
++
++for ac_prog in gnumsgfmt gmsgfmt msgfmt
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
++if test "${ac_cv_prog_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$ac_ct_RANLIB"; then
+- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
++ if test -n "$MSGFMT"; then
++ ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3674,86 +3870,59 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_RANLIB="ranlib"
++ ac_cv_prog_MSGFMT="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
+
+- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+ fi
+ fi
+-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+-if test -n "$ac_ct_RANLIB"; then
+- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+-echo "${ECHO_T}$ac_ct_RANLIB" >&6
++MSGFMT=$ac_cv_prog_MSGFMT
++if test -n "$MSGFMT"; then
++ echo "$as_me:$LINENO: result: $MSGFMT" >&5
++echo "${ECHO_T}$MSGFMT" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- RANLIB=$ac_ct_RANLIB
+-else
+- RANLIB="$ac_cv_prog_RANLIB"
+-fi
+-
+-else
+- RANLIB=$ac_ranlib
+-fi
+-
++ test -n "$MSGFMT" && break
++done
+
+-# Determine whether we are using GNU binutils.
+-echo "$as_me:$LINENO: checking whether $AS is GNU as" >&5
+-echo $ECHO_N "checking whether $AS is GNU as... $ECHO_C" >&6
+-if test "${libc_cv_prog_as_gnu+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # Most GNU programs take a -v and spit out some text including
+-# the word 'GNU'. Some try to read stdin, so give them /dev/null.
+-if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
+- libc_cv_prog_as_gnu=yes
++if test -z "$MSGFMT"; then
++ ac_verc_fail=yes
+ else
+- libc_cv_prog_as_gnu=no
+-fi
+-rm -fr contest*
+-fi
+-echo "$as_me:$LINENO: result: $libc_cv_prog_as_gnu" >&5
+-echo "${ECHO_T}$libc_cv_prog_as_gnu" >&6
+-rm -f a.out
+-gnu_as=$libc_cv_prog_as_gnu
++ # Found it, now check the version.
++ echo "$as_me:$LINENO: checking version of $MSGFMT" >&5
++echo $ECHO_N "checking version of $MSGFMT... $ECHO_C" >&6
++ ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ case $ac_prog_version in
++ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++ 0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*)
++ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+-echo "$as_me:$LINENO: checking whether $LD is GNU ld" >&5
+-echo $ECHO_N "checking whether $LD is GNU ld... $ECHO_C" >&6
+-if test "${libc_cv_prog_ld_gnu+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- # Most GNU programs take a -v and spit out some text including
+-# the word 'GNU'. Some try to read stdin, so give them /dev/null.
+-if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then
+- libc_cv_prog_ld_gnu=yes
+-else
+- libc_cv_prog_ld_gnu=no
++ esac
++ echo "$as_me:$LINENO: result: $ac_prog_version" >&5
++echo "${ECHO_T}$ac_prog_version" >&6
+ fi
+-rm -fr contest*
++if test $ac_verc_fail = yes; then
++ MSGFMT=: aux_missing="$aux_missing msgfmt"
+ fi
+-echo "$as_me:$LINENO: result: $libc_cv_prog_ld_gnu" >&5
+-echo "${ECHO_T}$libc_cv_prog_ld_gnu" >&6
+-gnu_ld=$libc_cv_prog_ld_gnu
+
+-
+-# Accept binutils 2.13 or newer.
+-for ac_prog in $AS
++for ac_prog in makeinfo
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_AS+set}" = set; then
++if test "${ac_cv_prog_MAKEINFO+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$AS"; then
+- ac_cv_prog_AS="$AS" # Let the user override the test.
++ if test -n "$MAKEINFO"; then
++ ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3762,7 +3931,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_AS="$ac_prog"
++ ac_cv_prog_MAKEINFO="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -3771,28 +3940,28 @@
+
+ fi
+ fi
+-AS=$ac_cv_prog_AS
+-if test -n "$AS"; then
+- echo "$as_me:$LINENO: result: $AS" >&5
+-echo "${ECHO_T}$AS" >&6
++MAKEINFO=$ac_cv_prog_MAKEINFO
++if test -n "$MAKEINFO"; then
++ echo "$as_me:$LINENO: result: $MAKEINFO" >&5
++echo "${ECHO_T}$MAKEINFO" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$AS" && break
++ test -n "$MAKEINFO" && break
+ done
+
+-if test -z "$AS"; then
++if test -z "$MAKEINFO"; then
+ ac_verc_fail=yes
+ else
+ # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $AS" >&5
+-echo $ECHO_N "checking version of $AS... $ECHO_C" >&6
+- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
++ echo "$as_me:$LINENO: checking version of $MAKEINFO" >&5
++echo $ECHO_N "checking version of $MAKEINFO... $ECHO_C" >&6
++ ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 2.1[3-9]*)
++ 4.*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+@@ -3801,20 +3970,20 @@
+ echo "${ECHO_T}$ac_prog_version" >&6
+ fi
+ if test $ac_verc_fail = yes; then
+- AS=: critic_missing=t
++ MAKEINFO=: aux_missing="$aux_missing makeinfo"
+ fi
+
+-for ac_prog in $LD
++for ac_prog in sed
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+ echo "$as_me:$LINENO: checking for $ac_word" >&5
+ echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_LD+set}" = set; then
++if test "${ac_cv_prog_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if test -n "$LD"; then
+- ac_cv_prog_LD="$LD" # Let the user override the test.
++ if test -n "$SED"; then
++ ac_cv_prog_SED="$SED" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+@@ -3823,7 +3992,7 @@
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_LD="$ac_prog"
++ ac_cv_prog_SED="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+@@ -3832,28 +4001,28 @@
+
+ fi
+ fi
+-LD=$ac_cv_prog_LD
+-if test -n "$LD"; then
+- echo "$as_me:$LINENO: result: $LD" >&5
+-echo "${ECHO_T}$LD" >&6
++SED=$ac_cv_prog_SED
++if test -n "$SED"; then
++ echo "$as_me:$LINENO: result: $SED" >&5
++echo "${ECHO_T}$SED" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+ fi
+
+- test -n "$LD" && break
++ test -n "$SED" && break
+ done
+
+-if test -z "$LD"; then
++if test -z "$SED"; then
+ ac_verc_fail=yes
+ else
+ # Found it, now check the version.
+- echo "$as_me:$LINENO: checking version of $LD" >&5
+-echo $ECHO_N "checking version of $LD... $ECHO_C" >&6
+- ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
++ echo "$as_me:$LINENO: checking version of $SED" >&5
++echo $ECHO_N "checking version of $SED... $ECHO_C" >&6
++ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 2.1[3-9]*)
++ 3.0[2-9]*|3.[1-9]*|[4-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+@@ -3862,10 +4031,83 @@
+ echo "${ECHO_T}$ac_prog_version" >&6
+ fi
+ if test $ac_verc_fail = yes; then
+- LD=: critic_missing=t
++ SED=: aux_missing="$aux_missing sed"
+ fi
+
+
++for ac_prog in autoconf
++do
++ # Extract the first word of "$ac_prog", so it can be a program name with args.
++set dummy $ac_prog; ac_word=$2
++echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++if test "${ac_cv_prog_AUTOCONF+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if test -n "$AUTOCONF"; then
++ ac_cv_prog_AUTOCONF="$AUTOCONF" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ ac_cv_prog_AUTOCONF="$ac_prog"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++
++fi
++fi
++AUTOCONF=$ac_cv_prog_AUTOCONF
++if test -n "$AUTOCONF"; then
++ echo "$as_me:$LINENO: result: $AUTOCONF" >&5
++echo "${ECHO_T}$AUTOCONF" >&6
++else
++ echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6
++fi
++
++ test -n "$AUTOCONF" && break
++done
++test -n "$AUTOCONF" || AUTOCONF="no"
++
++case "x$AUTOCONF" in
++xno|x|x:) AUTOCONF=no ;;
++*)
++ echo "$as_me:$LINENO: checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works" >&5
++echo $ECHO_N "checking whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works... $ECHO_C" >&6
++if test "${libc_cv_autoconf_works+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
++ libc_cv_autoconf_works=yes
++ else
++ libc_cv_autoconf_works=no
++ fi
++fi
++echo "$as_me:$LINENO: result: $libc_cv_autoconf_works" >&5
++echo "${ECHO_T}$libc_cv_autoconf_works" >&6
++ test $libc_cv_autoconf_works = yes || AUTOCONF=no
++ ;;
++esac
++if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
++ # If --without-cvs they probably won't change configure.in, so no complaints.
++ aux_missing="$aux_missing autoconf"
++fi
++
++test -n "$critic_missing" && { { echo "$as_me:$LINENO: error:
++*** These critical programs are missing or too old:$critic_missing
++*** Check the INSTALL file for required versions." >&5
++echo "$as_me: error:
++*** These critical programs are missing or too old:$critic_missing
++*** Check the INSTALL file for required versions." >&2;}
++ { (exit 1); exit 1; }; }
++
+ test -n "$aux_missing" && { echo "$as_me:$LINENO: WARNING:
+ *** These auxiliary programs are missing or incompatible versions:$aux_missing
+ *** some features will be disabled.
+@@ -3899,7 +4141,7 @@
+ char b;
+ void c(void) {}
+ EOF
+-$CC $CFLAGS -c conftest.c
++$CC $CFLAGS $CPPFLAGS -c conftest.c
+ $AR cr conftest.a conftest.o
+ cp conftest.a conftest2.a
+ $RANLIB conftest.a
+@@ -4298,11 +4540,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #define __need_size_t
+ #define __need_wchar_t
+ #include <stddef.h>
+@@ -4335,8 +4573,7 @@
+ libc_cv_friendly_stddef=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ libc_cv_friendly_stddef=no
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -4357,7 +4594,12 @@
+ #include "confdefs.h"
+ /* Nothing whatsoever. */
+ EOF
+-if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
++if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ libc_cv_need_minus_P=no
+ else
+ libc_cv_need_minus_P=yes
+@@ -4380,7 +4622,12 @@
+ .text
+ EOF
+ libc_cv_dot_text=
+-if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ libc_cv_dot_text=.text
+ fi
+ rm -f conftest*
+@@ -4406,7 +4653,12 @@
+ ${ac_globl} foo
+ foo:
+ EOF
+- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ libc_cv_asm_global_directive=${ac_globl}
+ fi
+ rm -f conftest*
+@@ -4441,9 +4693,10 @@
+ # (but it doesn't work), so we must do a linking check to be sure.
+ cat > conftest1.c <<\EOF
+ extern int glibc_conftest_frobozz;
+-main () { printf ("%d\n", glibc_conftest_frobozz); }
++void _start() { glibc_conftest_frobozz = 1; }
+ EOF
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
++ -nostartfiles -nostdlib \
+ -o conftest conftest.s conftest1.c 1>&5 2>&5; then
+ libc_cv_asm_set_directive=yes
+ else
+@@ -4475,7 +4728,12 @@
+ foo:
+ .byte 1
+ EOF
+- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ libc_cv_asm_type_prefix=${ac_try_prefix}
+ fi
+ rm -f conftest*
+@@ -4511,7 +4769,7 @@
+ _sym:
+ .symver _sym,sym@VERS
+ EOF
+-if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&5 2>&5; then
++if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
+ libc_cv_asm_symver_directive=yes
+ else
+ libc_cv_asm_symver_directive=no
+@@ -4540,10 +4798,11 @@
+ global: sym;
+ } VERS_1;
+ EOF
+- if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&5 2>&5; then
+- if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
+- -nostartfiles -nostdlib
+- -Wl,--version-script,conftest.map
++ if ${CC-cc} -c $ASFLAGS conftest.s 1>&5 2>&5; then
++ if { ac_try='${CC-cc} $CFLAGS $LDFLAGS -shared
++ -o conftest.so conftest.o
++ -nostartfiles -nostdlib
++ -Wl,--version-script,conftest.map
+ 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -4596,7 +4855,7 @@
+ .section foo_section
+ .previous
+ EOF
+- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4625,7 +4884,7 @@
+ .pushsection foo_section
+ .popsection
+ EOF
+- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4657,7 +4916,7 @@
+ .hidden bar
+ bar:
+ EOF
+- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4692,7 +4951,12 @@
+ int bar __attribute__ ((visibility ("protected"))) = 1;
+ EOF
+ libc_cv_visibility_attribute=no
+- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ if grep '\.protected.*bar' conftest.s >/dev/null; then
+ libc_cv_visibility_attribute=yes
+@@ -4724,7 +4988,12 @@
+ int bar (int x) { return x; }
+ EOF
+ libc_cv_broken_visibility_attribute=yes
+- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
+ libc_cv_broken_visibility_attribute=no
+ fi
+@@ -4756,7 +5025,12 @@
+ int dfoo = 1;
+ EOF
+ libc_cv_broken_alias_attribute=yes
+- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
++ if { ac_try='${CC-cc} -Werror -S conftest.c -o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ if grep 'xyzzy' conftest.s >/dev/null &&
+ grep 'abccb' conftest.s >/dev/null; then
+ libc_cv_broken_alias_attribute=no
+@@ -4782,7 +5056,7 @@
+ else
+ echo "int i;" > conftest.c
+ libc_cv_have_sdata_section=no
+- if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
++ if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
+ | grep '\.sdata' >/dev/null; then
+ libc_cv_have_sdata_section=yes
+ fi
+@@ -4810,7 +5084,7 @@
+ int foo (void) { return 1; }
+ int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
+ EOF
+- if { ac_try='${CC-cc} -o conftest conftest.c
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
+ -static -nostartfiles -nostdlib 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -4846,7 +5120,8 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostartfiles -nostdlib
+ -Wl,--enable-new-dtags,-z,nodelete 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+@@ -4873,7 +5148,8 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostartfiles -nostdlib
+ -Wl,--enable-new-dtags,-z,nodlopen 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+@@ -4900,7 +5176,8 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostartfiles -nostdlib
+ -Wl,--enable-new-dtags,-z,initfirst 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+@@ -4927,7 +5204,9 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -Wl,-Bgroup -nostdlib 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -4944,6 +5223,43 @@
+ echo "${ECHO_T}$libc_cv_Bgroup" >&6
+
+
++ ASFLAGS_config=
++ echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S files" >&5
++echo $ECHO_N "checking whether --noexecstack is desirable for .S files... $ECHO_C" >&6
++if test "${libc_cv_as_noexecstack+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<EOF
++void foo (void) { }
++EOF
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS
++ -S -o conftest.s conftest.c 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } \
++ && grep -q .note.GNU-stack conftest.s \
++ && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
++ -c -o conftest.o conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }
++ then
++ libc_cv_as_noexecstack=yes
++ else
++ libc_cv_as_noexecstack=no
++ fi
++ rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5
++echo "${ECHO_T}$libc_cv_as_noexecstack" >&6
++ if test $libc_cv_as_noexecstack = yes; then
++ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
++ fi
++
+ echo "$as_me:$LINENO: checking for -z combreloc" >&5
+ echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6
+ if test "${libc_cv_z_combreloc+set}" = set; then
+@@ -4954,7 +5270,8 @@
+ extern int mumble;
+ int foo (void) { return bar (mumble); }
+ EOF
+- if { ac_try='${CC-cc} -shared -o conftest.so conftest.c
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostdlib -nostartfiles
+ -Wl,-z,combreloc 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+@@ -4992,11 +5309,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+
+ int
+ main ()
+@@ -5023,8 +5336,7 @@
+ libc_cv_have_initfini=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ libc_cv_have_initfini=no
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -5084,11 +5396,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ asm ("_glibc_foobar:");
+ int
+ main ()
+@@ -5113,8 +5421,7 @@
+ libc_cv_asm_underscores=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ libc_cv_asm_underscores=no
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+@@ -5128,7 +5435,7 @@
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 5131 "configure"
++#line $LINENO "configure"
+ #include "confdefs.h"
+ void underscore_test(void) {
+ return; }
+@@ -5180,7 +5487,12 @@
+ .weak foo
+ .weak bar; bar = foo
+ EOF
+-if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ libc_cv_asm_weak_directive=yes
+ else
+ libc_cv_asm_weak_directive=no
+@@ -5205,7 +5517,12 @@
+ ${libc_cv_asm_global_directive} baz
+ baz:
+ EOF
+- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++ if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
+ libc_cv_asm_weakext_directive=yes
+ else
+ libc_cv_asm_weakext_directive=no
+@@ -5246,7 +5563,7 @@
+ cat > conftest.s <<EOF
+ nop ; is_old_puffin
+ EOF
+- if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
++ if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -5272,6 +5589,92 @@
+ ;;
+ esac
+
++echo "$as_me:$LINENO: checking whether CFI directives are supported" >&5
++echo $ECHO_N "checking whether CFI directives are supported... $ECHO_C" >&6
++if test "${libc_cv_asm_cfi_directives+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<EOF
++ .text
++ .type func,@function
++func:
++ .cfi_startproc
++ .cfi_remember_state
++ .cfi_rel_offset 1, 0
++ .cfi_endproc
++EOF
++if { ac_try='${CC-cc} $ASFLAGS -c conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_asm_cfi_directives=yes
++else
++ libc_cv_asm_cfi_directives=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_asm_cfi_directives" >&5
++echo "${ECHO_T}$libc_cv_asm_cfi_directives" >&6
++if test $libc_cv_asm_cfi_directives = yes; then
++ cat >>confdefs.h <<\_ACEOF
++#define HAVE_ASM_CFI_DIRECTIVES 1
++_ACEOF
++
++fi
++
++echo "$as_me:$LINENO: checking if -g produces usable source locations for assembler-with-cpp" >&5
++echo $ECHO_N "checking if -g produces usable source locations for assembler-with-cpp... $ECHO_C" >&6
++if test "${libc_cv_cpp_asm_debuginfo+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.S <<EOF
++#include "confdefs.h"
++
++/* comment on
++ two lines */
++ ${libc_cv_dot_text}
++ ${libc_cv_asm_global_directive} foo
++foo:
++ /* Unfortunately this test only works for a real instruction,
++ not for any of the machine-independent pseudo-ops.
++ So we just have to assume everybody has a "nop". */
++ nop
++ /* comment */
++ nop
++ /* comment */
++ nop
++EOF
++if { ac_try='${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; } &&
++ ac_pattern='conftest\.S'
++ { ac_try='readelf --debug-dump=line conftest.o |
++ grep $ac_pattern 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_cpp_asm_debuginfo=yes
++else
++ libc_cv_cpp_asm_debuginfo=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_cpp_asm_debuginfo" >&5
++echo "${ECHO_T}$libc_cv_cpp_asm_debuginfo" >&6
++if test $libc_cv_cpp_asm_debuginfo = yes; then
++ cat >>confdefs.h <<\_ACEOF
++#define HAVE_CPP_ASM_DEBUGINFO 1
++_ACEOF
++
++fi
++
+ echo "$as_me:$LINENO: checking for ld --no-whole-archive" >&5
+ echo $ECHO_N "checking for ld --no-whole-archive... $ECHO_C" >&6
+ if test "${libc_cv_ld_no_whole_archive+set}" = set; then
+@@ -5282,7 +5685,7 @@
+ int __eh_pc;
+ __throw () {}
+ EOF
+-if { ac_try='${CC-cc} $CFLAGS
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -nostdlib -nostartfiles -Wl,--no-whole-archive
+ -o conftest conftest.c 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+@@ -5312,7 +5715,7 @@
+ int __eh_pc;
+ __throw () {}
+ EOF
+-if { ac_try='${CC-cc} $CFLAGS
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -nostdlib -nostartfiles -fexceptions
+ -o conftest conftest.c 1>&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+@@ -5342,11 +5745,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ int tester(int x) { asm ("" : : : "cc"); return x & 123; }
+ int
+ main ()
+@@ -5371,8 +5770,7 @@
+ libc_cv_c_asmcr0_bug='no'
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ libc_cv_c_asmcr0_bug='yes'
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -5393,7 +5791,7 @@
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat > conftest.c <<EOF
+-#line 5396 "configure"
++#line $LINENO "configure"
+ static char *__EH_FRAME_BEGIN__;
+ _start ()
+ {
+@@ -5419,28 +5817,24 @@
+ __bzero () {}
+ dl_iterate_phdr () {}
+ EOF
+-if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
+- -nostdlib -nostartfiles
+- -o conftest conftest.c -lgcc >&5'
++libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
++ $LDFLAGS \
++ -nostdlib -nostartfiles -o conftest conftest.c \
++ -lgcc"
++# Some platforms' specs put -lgcc first. The second one doesn't hurt.
++if { ac_try='$libc_unwind_check >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- libc_cv_gcc_dwarf2_unwind_info=static
+-else
+- libc_cv_gcc_dwarf2_unwind_info=no
+-fi
+-# Some platforms' specs put -lgcc first. The second one doesn't hurt.
+-libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
+- -nostdlib -nostartfiles -o conftest conftest.c \
+- -lgcc -lgcc_eh -lgcc"
+-if { ac_try='$libc_unwind_check >&5'
++ (exit $ac_status); }; } ||
++ { ac_try='$libc_unwind_check -lgcc_eh -lgcc >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); }; }
++then
+ if $libc_unwind_check -v 2>&1 >/dev/null \
+ | grep -q -- --eh-frame-hdr; then
+ libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
+@@ -5451,8 +5845,8 @@
+ libc_cv_gcc_dwarf2_unwind_info=no
+ fi
+ if test $libc_cv_gcc_dwarf2_unwind_info = no; then
+- if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
+- -nostdlib -nostartfiles
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
++ $LDFLAGS -nostdlib -nostartfiles
+ -o conftest conftest.c -lgcc >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -5493,14 +5887,14 @@
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat > conftest.c <<EOF
+-#line 5496 "configure"
++#line $LINENO "configure"
+ int foo (int a)
+ {
+ a = __builtin_expect (a, 10);
+ return a == 10 ? 0 : 1;
+ }
+ EOF
+-if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
+ -o conftest conftest.c -lgcc >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -5555,13 +5949,47 @@
+
+ fi
+
++echo "$as_me:$LINENO: checking for redirection of built-in functions" >&5
++echo $ECHO_N "checking for redirection of built-in functions... $ECHO_C" >&6
++if test "${libc_cv_gcc_builtin_redirection+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.c <<\EOF
++extern char *strstr (const char *, const char *) __asm ("my_strstr");
++char *foo (const char *a, const char *b)
++{
++ return __builtin_strstr (a, b);
++}
++EOF
++if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; };
++then
++ libc_cv_gcc_builtin_redirection=yes
++else
++ libc_cv_gcc_builtin_redirection=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_gcc_builtin_redirection" >&5
++echo "${ECHO_T}$libc_cv_gcc_builtin_redirection" >&6
++if test "$libc_cv_gcc_builtin_redirection" = yes ; then
++ cat >>confdefs.h <<\_ACEOF
++#define HAVE_BUILTIN_REDIRECTION 1
++_ACEOF
++
++fi
++
+ echo "$as_me:$LINENO: checking for local label subtraction" >&5
+ echo $ECHO_N "checking for local label subtraction... $ECHO_C" >&6
+ if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat > conftest.c <<EOF
+-#line 5564 "configure"
++#line $LINENO "configure"
+ int foo (int a)
+ {
+ static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
+@@ -5573,7 +6001,7 @@
+ return 2;
+ }
+ EOF
+-if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
+ -o conftest conftest.c -lgcc >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+@@ -5604,7 +6032,7 @@
+ cat > conftest.c <<\EOF
+ __thread int a = 42;
+ EOF
+- if { ac_try='${CC-cc} $CFLAGS -c conftest.c >&5'
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -5637,7 +6065,7 @@
+ cat > conftest.c <<\EOF
+ extern __thread int a __attribute__((tls_model ("initial-exec")));
+ EOF
+- if { ac_try='${CC-cc} $CFLAGS -S -Werror conftest.c >&5'
++ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+@@ -5670,11 +6098,7 @@
+ LIBS="$LIBS -lgd -lpng -lz -lm"
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <gd.h>
+ int
+ main ()
+@@ -5699,8 +6123,7 @@
+ LIBGD=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ LIBGD=no
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+@@ -5737,54 +6160,43 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <string.h>
+ #include <float.h>
+
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
+ ac_cv_header_stdc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-ac_cv_header_stdc=no
++ cat conftest.$ac_ext >&5
++ ac_cv_header_stdc=no
+ fi
+-rm -f conftest.$ac_objext conftest.$ac_ext
++rm -f conftest.err conftest.$ac_ext
+
+ if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <string.h>
+
+ _ACEOF
+@@ -5802,11 +6214,7 @@
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <stdlib.h>
+
+ _ACEOF
+@@ -5827,18 +6235,13 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ #include <ctype.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+ #else
+-# define ISLOWER(c) \
+- (('a' <= (c) && (c) <= 'i') \
++# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+ # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+@@ -5871,8 +6274,7 @@
+ else
+ echo "$as_me: program exited with status $ac_status" >&5
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+@@ -5911,11 +6313,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+
+ #include <$ac_header>
+@@ -5935,8 +6333,7 @@
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -5960,11 +6357,7 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ int
+ main ()
+@@ -5992,8 +6385,7 @@
+ ac_cv_type_long_double=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_cv_type_long_double=no
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -6015,11 +6407,7 @@
+ # Depending upon the size, compute the lo and hi bounds.
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ int
+ main ()
+@@ -6047,11 +6435,7 @@
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ int
+ main ()
+@@ -6078,8 +6462,7 @@
+ ac_hi=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+@@ -6091,15 +6474,10 @@
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ int
+ main ()
+@@ -6127,11 +6505,7 @@
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ int
+ main ()
+@@ -6158,8 +6532,7 @@
+ ac_lo=$ac_mid; break
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+@@ -6171,8 +6544,7 @@
+ done
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_lo= ac_hi=
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -6183,11 +6555,7 @@
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ int
+ main ()
+@@ -6214,35 +6582,26 @@
+ ac_hi=$ac_mid
+ else
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+ done
+ case $ac_lo in
+ ?*) ac_cv_sizeof_long_double=$ac_lo;;
+-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (long double), 77
+-See \`config.log' for more details." >&2;}
++'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77" >&5
++echo "$as_me: error: cannot compute sizeof (long double), 77" >&2;}
+ { (exit 1); exit 1; }; } ;;
+ esac
+ else
+ if test "$cross_compiling" = yes; then
+- { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot run test program while cross compiling
+-See \`config.log' for more details." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5
++echo "$as_me: error: cannot run test program while cross compiling" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
++#include "confdefs.h"
+ $ac_includes_default
+ long longval () { return (long) (sizeof (long double)); }
+ unsigned long ulongval () { return (long) (sizeof (long double)); }
+@@ -6290,13 +6649,10 @@
+ else
+ echo "$as_me: program exited with status $ac_status" >&5
+ echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
++cat conftest.$ac_ext >&5
+ ( exit $ac_status )
+-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77
+-See \`config.log' for more details." >&5
+-echo "$as_me: error: cannot compute sizeof (long double), 77
+-See \`config.log' for more details." >&2;}
++{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77" >&5
++echo "$as_me: error: cannot compute sizeof (long double), 77" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+@@ -6335,8 +6691,8 @@
+ *) dest=$srcdir/$dir ;;
+ esac
+ if test -r $dest/configure; then
+- echo "$as_me:$LINENO: result: running configure fragment for $dest" >&5
+-echo "${ECHO_T}running configure fragment for $dest" >&6
++ echo "$as_me:$LINENO: result: running configure fragment for $dir" >&5
++echo "${ECHO_T}running configure fragment for $dir" >&6
+ . $dest/configure
+ fi
+
+@@ -6461,6 +6817,7 @@
+
+
+
++
+ if test $gnu_ld = yes; then
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_GNU_LD 1
+@@ -6594,7 +6951,7 @@
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
++if cmp -s $cache_file confcache; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+@@ -6654,8 +7011,6 @@
+ # configure, is in config.log if it exists.
+
+ debug=false
+-ac_cs_recheck=false
+-ac_cs_silent=false
+ SHELL=\${CONFIG_SHELL-$SHELL}
+ _ACEOF
+
+@@ -6690,10 +7045,7 @@
+ PS4='+ '
+
+ # NLS nuisances.
+-for as_var in \
+- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+- LC_TELEPHONE LC_TIME
++for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME
+ do
+ if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+@@ -6739,15 +7091,15 @@
+
+ # The user is always right.
+ if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ echo "#! /bin/sh" >conftest.sh
++ echo "exit 0" >>conftest.sh
++ chmod +x conftest.sh
++ if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+- rm -f conf$$.sh
++ rm -f conftest.sh
+ fi
+
+
+@@ -6910,7 +7262,7 @@
+ cat >&5 <<_CSEOF
+
+ This file was extended by GNU C Library $as_me (see version.h), which was
+-generated by GNU Autoconf 2.57. Invocation command line was
++generated by GNU Autoconf 2.54. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -6950,7 +7302,6 @@
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+- -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+@@ -6973,7 +7324,7 @@
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ GNU C Library config.status (see version.h)
+-configured by $0, generated by GNU Autoconf 2.57,
++configured by $0, generated by GNU Autoconf 2.54,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+@@ -7010,9 +7361,12 @@
+ case $ac_option in
+ # Handling of the options.
+ _ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
++cat >>$CONFIG_STATUS <<_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+- ac_cs_recheck=: ;;
++ echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
++ exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
++_ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+@@ -7034,9 +7388,6 @@
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+- | -silent | --silent | --silen | --sile | --sil | --si | --s)
+- ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+@@ -7051,20 +7402,6 @@
+ shift
+ done
+
+-ac_configure_extra_args=
+-
+-if $ac_cs_silent; then
+- exec 6>/dev/null
+- ac_configure_extra_args="$ac_configure_extra_args --silent"
+-fi
+-
+-_ACEOF
+-cat >>$CONFIG_STATUS <<_ACEOF
+-if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+-fi
+-
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<_ACEOF
+@@ -7105,9 +7442,6 @@
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+ fi
+
+-# Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
+-# creating and moving files from /tmp can sometimes cause problems.
+ # Create a temporary directory, and hook for its removal unless debugging.
+ $debug ||
+ {
+@@ -7116,17 +7450,17 @@
+ }
+
+ # Create a (secure) tmp directory for tmp files.
+-
++: ${TMPDIR=/tmp}
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
++ tmp=$TMPDIR/cs$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+ } ||
+ {
+- echo "$me: cannot create a temporary directory in ." >&2
++ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+ { (exit 1); exit 1; }
+ }
+
+@@ -7176,6 +7510,7 @@
+ s,@LIBS@,$LIBS,;t t
+ s,@with_fp@,$with_fp,;t t
+ s,@with_cvs@,$with_cvs,;t t
++s,@enable_check_abi@,$enable_check_abi,;t t
+ s,@oldest_abi@,$oldest_abi,;t t
+ s,@subdirs@,$subdirs,;t t
+ s,@force_install@,$force_install,;t t
+@@ -7194,13 +7529,7 @@
+ s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+ s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+ s,@LN_S@,$LN_S,;t t
+-s,@PWD_P@,$PWD_P,;t t
+ s,@CC@,$CC,;t t
+-s,@MAKE@,$MAKE,;t t
+-s,@MSGFMT@,$MSGFMT,;t t
+-s,@MAKEINFO@,$MAKEINFO,;t t
+-s,@SED@,$SED,;t t
+-s,@AUTOCONF@,$AUTOCONF,;t t
+ s,@CFLAGS@,$CFLAGS,;t t
+ s,@LDFLAGS@,$LDFLAGS,;t t
+ s,@CPPFLAGS@,$CPPFLAGS,;t t
+@@ -7209,6 +7538,9 @@
+ s,@BUILD_CC@,$BUILD_CC,;t t
+ s,@cross_compiling@,$cross_compiling,;t t
+ s,@CPP@,$CPP,;t t
++s,@CXX@,$CXX,;t t
++s,@CXXFLAGS@,$CXXFLAGS,;t t
++s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+ s,@AR@,$AR,;t t
+ s,@OBJDUMP@,$OBJDUMP,;t t
+ s,@RANLIB@,$RANLIB,;t t
+@@ -7216,6 +7548,12 @@
+ s,@MIG@,$MIG,;t t
+ s,@AS@,$AS,;t t
+ s,@LD@,$LD,;t t
++s,@PWD_P@,$PWD_P,;t t
++s,@MAKE@,$MAKE,;t t
++s,@MSGFMT@,$MSGFMT,;t t
++s,@MAKEINFO@,$MAKEINFO,;t t
++s,@SED@,$SED,;t t
++s,@AUTOCONF@,$AUTOCONF,;t t
+ s,@CCVERSION@,$CCVERSION,;t t
+ s,@SYSINCLUDES@,$SYSINCLUDES,;t t
+ s,@libc_cv_gcc_static_libgcc@,$libc_cv_gcc_static_libgcc,;t t
+@@ -7235,8 +7573,10 @@
+ s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t
+ s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t
+ s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t
++s,@ASFLAGS_config@,$ASFLAGS_config,;t t
+ s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t
+ s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t
++s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t
+ s,@no_whole_archive@,$no_whole_archive,;t t
+ s,@exceptions@,$exceptions,;t t
+ s,@LIBGD@,$LIBGD,;t t
+@@ -7251,6 +7591,7 @@
+ s,@libc_cv_localedir@,$libc_cv_localedir,;t t
+ s,@libc_cv_sysconfdir@,$libc_cv_sysconfdir,;t t
+ s,@libc_cv_rootsbindir@,$libc_cv_rootsbindir,;t t
++s,@libc_cv_forced_unwind@,$libc_cv_forced_unwind,;t t
+ s,@use_ldconfig@,$use_ldconfig,;t t
+ s,@ldd_rewrite_script@,$ldd_rewrite_script,;t t
+ s,@gnu_ld@,$gnu_ld,;t t
+@@ -7649,7 +7990,7 @@
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+@@ -7782,11 +8123,8 @@
+ # need to make the FD available again.
+ if test "$no_create" != yes; then
+ ac_cs_success=:
+- ac_config_status_args=
+- test "$silent" = yes &&
+- ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
++ $SHELL $CONFIG_STATUS || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+--- glibc-2.3.2/configure.in 2003-02-25 19:46:31.000000000 -0500
++++ glibc-2.3.2/configure.in 2003-08-21 08:36:58.000000000 -0400
+@@ -113,6 +113,14 @@
+ [enable_sanity=$enableval],
+ [enable_sanity=yes])
+
++AC_SUBST(enable_check_abi)
++AC_ARG_ENABLE([check-abi],
++ AC_HELP_STRING([--enable-check-abi],
++ [do "make check-abi" in "make check" (no/warn/yes)
++ @<:@default=no@:>@]),
++ [enable_check_abi=$enableval],
++ [enable_check_abi=no])
++
+ dnl Arguments to enable or disable building the static, shared, profiled,
+ dnl and -fomit-frame-pointer libraries.
+ dnl I've disabled this for now since we cannot build glibc without static
+@@ -378,8 +386,33 @@
+ m68k) base_machine=m68k machine=m68k/m68020 ;;
+ m88???) base_machine=m88k machine=m88k/$machine ;;
+ m88k) base_machine=m88k machine=m88k/m88100 ;;
+-mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
+-mips*) base_machine=mips machine=mips/$machine ;;
++mips64*) base_machine=mips64
++ case "$CC $CFLAGS $CPPFLAGS " in
++ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
++ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
++ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
++ *) mips_cc_abi=default ;;
++ esac
++ case $config_os in
++ *abin32*) mips_config_abi=n32 ;;
++ *abi64*|*abin64*) mips_config_abi=64 ;;
++ *abi32*|*abio32*) mips_config_abi=32 ;;
++ *) mips_config_abi=$mips_cc_abi ;;
++ esac
++ case $mips_config_abi in
++ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
++ n32) machine=mips/mips64/n32 ;;
++ 64) machine=mips/mips64/n64 ;;
++ 32) machine=mips/mips32/kern64 ;;
++ esac
++ machine=$machine/$config_machine
++ if test $mips_config_abi != $mips_cc_abi; then
++ # This won't make it to config.make, but we want to
++ # set this in case configure tests depend on it.
++ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
++ fi
++ ;;
++mips*) base_machine=mips machine=mips/mips32/$machine ;;
+ powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
+ powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
+ s390) base_machine=s390 machine=s390/s390-32 ;;
+@@ -637,6 +670,25 @@
+ fi
+ AC_PROG_LN_S
+
++AC_PROG_CC
++if test $host != $build; then
++ AC_CHECK_PROGS(BUILD_CC, gcc cc)
++fi
++AC_SUBST(cross_compiling)
++AC_PROG_CPP
++# We need the C++ compiler only for testing.
++AC_PROG_CXX
++LIBC_PROG_BINUTILS
++AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
++
++# Accept binutils 2.13 or newer.
++AC_CHECK_PROG_VER(AS, $AS, --version,
++ [GNU assembler.* \([0-9]*\.[0-9.]*\)],
++ [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
++AC_CHECK_PROG_VER(LD, $LD, --version,
++ [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
++ [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
++
+ # We need the physical current working directory. We cannot use the
+ # "pwd -P" shell builtin since that's not portable. Instead we try to
+ # find a pwd binary. Note that assigning to the PWD environment
+@@ -656,14 +708,6 @@
+ [GNU Make[^0-9]*\([0-9][0-9.]*\)],
+ [3.79* | 3.[89]*], critic_missing="$critic_missing make")
+
+-
+-if test -n "$critic_missing"; then
+-AC_MSG_ERROR([
+-*** These critical programs are missing or too old:$critic_missing
+-*** Check the INSTALL file for required versions.])
+-fi
+-
+-
+ AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
+ [GNU gettext.* \([0-9]*\.[0-9.]*\)],
+ [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
+@@ -677,40 +721,28 @@
+ [3.0[2-9]*|3.[1-9]*|[4-9]*],
+ SED=: aux_missing="$aux_missing sed")
+
+-if test "x$with_cvs" != xyes; then
+- AC_CHECK_PROGS(AUTOCONF, autoconf, no)
+- case "x$AUTOCONF" in
+- xno|x|x:) AUTOCONF=no ;;
+- *)
+- AC_CACHE_CHECK(dnl
++AC_CHECK_PROGS(AUTOCONF, autoconf, no)
++case "x$AUTOCONF" in
++xno|x|x:) AUTOCONF=no ;;
++*)
++ AC_CACHE_CHECK(dnl
+ whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
+- if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
+- libc_cv_autoconf_works=yes
+- else
+- libc_cv_autoconf_works=no
+- fi])
+- test $libc_cv_autoconf_works = yes || AUTOCONF=no
+- ;;
+- esac
+- test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
+-fi
+-
+-AC_PROG_CC
+-if test $host != $build; then
+- AC_CHECK_PROGS(BUILD_CC, gcc cc)
++ if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
++ libc_cv_autoconf_works=yes
++ else
++ libc_cv_autoconf_works=no
++ fi])
++ test $libc_cv_autoconf_works = yes || AUTOCONF=no
++ ;;
++esac
++if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
++ # If --without-cvs they probably won't change configure.in, so no complaints.
++ aux_missing="$aux_missing autoconf"
+ fi
+-AC_SUBST(cross_compiling)
+-AC_PROG_CPP
+-LIBC_PROG_BINUTILS
+-AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
+
+-# Accept binutils 2.13 or newer.
+-AC_CHECK_PROG_VER(AS, $AS, --version,
+- [GNU assembler.* \([0-9]*\.[0-9.]*\)],
+- [2.1[3-9]*], AS=: critic_missing=t)
+-AC_CHECK_PROG_VER(LD, $LD, --version,
+- [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
+- [2.1[3-9]*], LD=: critic_missing=t)
++test -n "$critic_missing" && AC_MSG_ERROR([
++*** These critical programs are missing or too old:$critic_missing
++*** Check the INSTALL file for required versions.])
+
+ test -n "$aux_missing" && AC_MSG_WARN([
+ *** These auxiliary programs are missing or incompatible versions:$aux_missing
+@@ -737,7 +769,7 @@
+ char b;
+ void c(void) {}
+ EOF
+-$CC $CFLAGS -c conftest.c
++$CC $CFLAGS $CPPFLAGS -c conftest.c
+ $AR cr conftest.a conftest.o
+ cp conftest.a conftest2.a
+ $RANLIB conftest.a
+@@ -889,7 +921,7 @@
+ #include "confdefs.h"
+ /* Nothing whatsoever. */
+ EOF
+-if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
++if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_need_minus_P=no
+ else
+ libc_cv_need_minus_P=yes
+@@ -906,7 +938,7 @@
+ .text
+ EOF
+ libc_cv_dot_text=
+-if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_dot_text=.text
+ fi
+ rm -f conftest*])
+@@ -925,7 +957,7 @@
+ ${ac_globl} foo
+ foo:
+ EOF
+- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_global_directive=${ac_globl}
+ fi
+ rm -f conftest*
+@@ -948,9 +980,10 @@
+ # (but it doesn't work), so we must do a linking check to be sure.
+ cat > conftest1.c <<\EOF
+ extern int glibc_conftest_frobozz;
+-main () { printf ("%d\n", glibc_conftest_frobozz); }
++void _start() { glibc_conftest_frobozz = 1; }
+ EOF
+ if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
++ -nostartfiles -nostdlib \
+ -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_asm_set_directive=yes
+ else
+@@ -973,7 +1006,7 @@
+ foo:
+ .byte 1
+ EOF
+- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_type_prefix=${ac_try_prefix}
+ fi
+ rm -f conftest*
+@@ -996,7 +1029,7 @@
+ _sym:
+ .symver _sym,sym@VERS
+ EOF
+-if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
++if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_asm_symver_directive=yes
+ else
+ libc_cv_asm_symver_directive=no
+@@ -1018,10 +1051,11 @@
+ global: sym;
+ } VERS_1;
+ EOF
+- if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
+- -nostartfiles -nostdlib
+- -Wl,--version-script,conftest.map
++ if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
++ -o conftest.so conftest.o
++ -nostartfiles -nostdlib
++ -Wl,--version-script,conftest.map
+ 1>&AS_MESSAGE_LOG_FD]);
+ then
+ libc_cv_ld_version_script_option=yes
+@@ -1060,7 +1094,7 @@
+ .section foo_section
+ .previous
+ EOF
+- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_previous_directive=yes
+ else
+ libc_cv_asm_previous_directive=no
+@@ -1075,7 +1109,7 @@
+ .pushsection foo_section
+ .popsection
+ EOF
+- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_popsection_directive=yes
+ else
+ libc_cv_asm_popsection_directive=no
+@@ -1093,7 +1127,7 @@
+ .hidden bar
+ bar:
+ EOF
+- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_protected_directive=yes
+ else
+ libc_cv_asm_protected_directive=no
+@@ -1111,7 +1145,7 @@
+ int bar __attribute__ ((visibility ("protected"))) = 1;
+ EOF
+ libc_cv_visibility_attribute=no
+- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
++ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ if grep '\.protected.*bar' conftest.s >/dev/null; then
+ libc_cv_visibility_attribute=yes
+@@ -1134,7 +1168,7 @@
+ int bar (int x) { return x; }
+ EOF
+ libc_cv_broken_visibility_attribute=yes
+- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
++ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
+ changequote(,)dnl
+ if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
+ changequote([,])dnl
+@@ -1159,7 +1193,7 @@
+ int dfoo = 1;
+ EOF
+ libc_cv_broken_alias_attribute=yes
+- if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
++ if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ if grep 'xyzzy' conftest.s >/dev/null &&
+ grep 'abccb' conftest.s >/dev/null; then
+ libc_cv_broken_alias_attribute=no
+@@ -1176,7 +1210,7 @@
+ libc_cv_have_sdata_section,
+ [echo "int i;" > conftest.c
+ libc_cv_have_sdata_section=no
+- if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
++ if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
+ | grep '\.sdata' >/dev/null; then
+ libc_cv_have_sdata_section=yes
+ fi
+@@ -1195,7 +1229,7 @@
+ int foo (void) { return 1; }
+ int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
+ -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
+ then
+ if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
+@@ -1217,7 +1251,8 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostartfiles -nostdlib
+ -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
+ then
+@@ -1233,7 +1268,8 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostartfiles -nostdlib
+ -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
+ then
+@@ -1249,7 +1285,8 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostartfiles -nostdlib
+ -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
+ then
+@@ -1265,7 +1302,9 @@
+ cat > conftest.c <<EOF
+ int _start (void) { return 42; }
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
++ -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
+ then
+ libc_cv_Bgroup=yes
+ else
+@@ -1274,6 +1313,27 @@
+ rm -f conftest*])
+ AC_SUBST(libc_cv_Bgroup)
+
++ ASFLAGS_config=
++ AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
++ libc_cv_as_noexecstack, [dnl
++ cat > conftest.c <<EOF
++void foo (void) { }
++EOF
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
++ -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
++ && grep -q .note.GNU-stack conftest.s \
++ && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
++ -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
++ then
++ libc_cv_as_noexecstack=yes
++ else
++ libc_cv_as_noexecstack=no
++ fi
++ rm -f conftest*])
++ if test $libc_cv_as_noexecstack = yes; then
++ ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
++ fi
++ AC_SUBST(ASFLAGS_config)
+ AC_CACHE_CHECK(for -z combreloc,
+ libc_cv_z_combreloc, [dnl
+ cat > conftest.c <<EOF
+@@ -1281,7 +1341,8 @@
+ extern int mumble;
+ int foo (void) { return bar (mumble); }
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
++ -shared -o conftest.so conftest.c
+ -nostdlib -nostartfiles
+ -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
+ then
+@@ -1345,8 +1406,8 @@
+ AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
+ [cat > conftest.$ac_ext <<EOF
+ dnl This sometimes fails to find confdefs.h, for some reason.
+-dnl [#]line __oline__ "[$]0"
+-[#]line __oline__ "configure"
++dnl [#]line $LINENO "[$]0"
++[#]line $LINENO "configure"
+ #include "confdefs.h"
+ void underscore_test(void) {
+ return; }
+@@ -1398,7 +1459,7 @@
+ .weak foo
+ .weak bar; bar = foo
+ EOF
+-if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_weak_directive=yes
+ else
+ libc_cv_asm_weak_directive=no
+@@ -1418,7 +1479,7 @@
+ ${libc_cv_asm_global_directive} baz
+ baz:
+ EOF
+- if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
++ if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_weakext_directive=yes
+ else
+ libc_cv_asm_weakext_directive=no
+@@ -1447,7 +1508,7 @@
+ cat > conftest.s <<EOF
+ nop ; is_old_puffin
+ EOF
+- if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_asm_line_sep='!'
+ else
+ if test -z "$enable_hacker_mode"; then
+@@ -1462,6 +1523,58 @@
+ ;;
+ esac
+
++AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
++cat > conftest.s <<EOF
++ .text
++ .type func,@function
++func:
++ .cfi_startproc
++ .cfi_remember_state
++ .cfi_rel_offset 1, 0
++ .cfi_endproc
++EOF
++if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ libc_cv_asm_cfi_directives=yes
++else
++ libc_cv_asm_cfi_directives=no
++fi
++rm -f conftest*])
++if test $libc_cv_asm_cfi_directives = yes; then
++ AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
++fi
++
++AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
++ libc_cv_cpp_asm_debuginfo, [dnl
++cat > conftest.S <<EOF
++#include "confdefs.h"
++
++/* comment on
++ two lines */
++ ${libc_cv_dot_text}
++ ${libc_cv_asm_global_directive} foo
++foo:
++ /* Unfortunately this test only works for a real instruction,
++ not for any of the machine-independent pseudo-ops.
++ So we just have to assume everybody has a "nop". */
++ nop
++ /* comment */
++ nop
++ /* comment */
++ nop
++EOF
++if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
++ ac_pattern='conftest\.S'
++ AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
++ grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
++ libc_cv_cpp_asm_debuginfo=yes
++else
++ libc_cv_cpp_asm_debuginfo=no
++fi
++rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
++if test $libc_cv_cpp_asm_debuginfo = yes; then
++ AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
++fi
++
+ AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
+ cat > conftest.c <<\EOF
+ _start () {}
+@@ -1469,7 +1582,7 @@
+ __throw () {}
+ EOF
+ dnl No \ in command here because it ends up inside ''.
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS
++if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -nostdlib -nostartfiles -Wl,--no-whole-archive
+ -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
+ libc_cv_ld_no_whole_archive=yes
+@@ -1489,7 +1602,7 @@
+ __throw () {}
+ EOF
+ dnl No \ in command here because it ends up inside ''.
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS
++if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+ -nostdlib -nostartfiles -fexceptions
+ -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
+ libc_cv_gcc_exceptions=yes
+@@ -1516,7 +1629,7 @@
+
+ AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
+ [cat > conftest.c <<EOF
+-#line __oline__ "configure"
++#line $LINENO "configure"
+ static char *__EH_FRAME_BEGIN__;
+ _start ()
+ {
+@@ -1542,19 +1655,14 @@
+ __bzero () {}
+ dl_iterate_phdr () {}
+ EOF
+-dnl No \ in command here because it ends up inside ''.
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
+- -nostdlib -nostartfiles
+- -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
+- libc_cv_gcc_dwarf2_unwind_info=static
+-else
+- libc_cv_gcc_dwarf2_unwind_info=no
+-fi
++libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
++ $LDFLAGS \
++ -nostdlib -nostartfiles -o conftest conftest.c \
++ -lgcc"
+ # Some platforms' specs put -lgcc first. The second one doesn't hurt.
+-libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
+- -nostdlib -nostartfiles -o conftest conftest.c \
+- -lgcc -lgcc_eh -lgcc"
+-if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]); then
++if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
++ AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
++then
+ if $libc_unwind_check -v 2>&1 >/dev/null \
+ | grep -q -- --eh-frame-hdr; then
+ libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
+@@ -1565,8 +1673,8 @@
+ libc_cv_gcc_dwarf2_unwind_info=no
+ fi
+ if test $libc_cv_gcc_dwarf2_unwind_info = no; then
+- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
+- -nostdlib -nostartfiles
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
++ $LDFLAGS -nostdlib -nostartfiles
+ -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
+ libc_cv_gcc_dwarf2_unwind_info=yes
+ else
+@@ -1587,7 +1695,7 @@
+ dnl Check whether compiler understands __builtin_expect.
+ AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
+ [cat > conftest.c <<EOF
+-#line __oline__ "configure"
++#line $LINENO "configure"
+ int foo (int a)
+ {
+ a = __builtin_expect (a, 10);
+@@ -1595,7 +1703,7 @@
+ }
+ EOF
+ dnl No \ in command here because it ends up inside ''.
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
++if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
+ -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
+ libc_cv_gcc_builtin_expect=yes
+ else
+@@ -1625,11 +1733,31 @@
+ AC_DEFINE(HAVE_BUILTIN_MEMSET)
+ fi
+
++AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
++cat > conftest.c <<\EOF
++extern char *strstr (const char *, const char *) __asm ("my_strstr");
++char *foo (const char *a, const char *b)
++{
++ return __builtin_strstr (a, b);
++}
++EOF
++dnl
++if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
++then
++ libc_cv_gcc_builtin_redirection=yes
++else
++ libc_cv_gcc_builtin_redirection=no
++fi
++rm -f conftest* ])
++if test "$libc_cv_gcc_builtin_redirection" = yes ; then
++ AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
++fi
++
+ dnl Check whether the compiler supports subtraction of local labels.
+ AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
+ [cat > conftest.c <<EOF
+ changequote(,)dnl
+-#line __oline__ "configure"
++#line $LINENO "configure"
+ int foo (int a)
+ {
+ static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
+@@ -1643,7 +1771,7 @@
+ changequote([,])dnl
+ EOF
+ dnl No \ in command here because it ends up inside ''.
+-if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
++if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
+ -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
+ libc_cv_gcc_subtract_local_labels=yes
+ else
+@@ -1660,7 +1788,7 @@
+ [cat > conftest.c <<\EOF
+ __thread int a = 42;
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
+ libc_cv_gcc___thread=yes
+ else
+ libc_cv_gcc___thread=no
+@@ -1679,7 +1807,7 @@
+ cat > conftest.c <<\EOF
+ extern __thread int a __attribute__((tls_model ("initial-exec")));
+ EOF
+- if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
++ if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
+ libc_cv_gcc_tls_model_attr=yes
+ else
+ libc_cv_gcc_tls_model_attr=no
+@@ -1732,7 +1860,7 @@
+ *) dest=$srcdir/$dir ;;
+ esac
+ if test -r $dest/configure; then
+- AC_MSG_RESULT(running configure fragment for $dest)
++ AC_MSG_RESULT(running configure fragment for $dir)
+ . $dest/configure
+ fi
+ [
+@@ -1833,6 +1961,7 @@
+ AC_SUBST(libc_cv_localedir)
+ AC_SUBST(libc_cv_sysconfdir)
+ AC_SUBST(libc_cv_rootsbindir)
++AC_SUBST(libc_cv_forced_unwind)
+
+ AC_SUBST(use_ldconfig)
+ AC_SUBST(ldd_rewrite_script)
+--- glibc-2.3.2/csu/Makefile 2002-12-31 17:24:37.000000000 -0500
++++ glibc-2.3.2/csu/Makefile 2003-08-21 08:36:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ # Makefile for csu code for GNU C library.
+-# Copyright (C) 1995,96,97,98,99,2000,01,2002 Free Software Foundation, Inc.
++# Copyright (C) 1995,96,97,98,99,2000,01,02,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -33,19 +33,29 @@
+ static-only-routines = elf-init
+ csu-dummies = $(filter-out $(start-installed-name),crt1.o Mcrt1.o)
+ extra-objs = start.o gmon-start.o \
+- $(start-installed-name) g$(start-installed-name) $(csu-dummies)
++ $(start-installed-name) g$(start-installed-name) $(csu-dummies) \
++ S$(start-installed-name)
+ omit-deps = $(patsubst %.o,%,$(start-installed-name) g$(start-installed-name) \
+- b$(start-installed-name) $(csu-dummies))
++ b$(start-installed-name) $(csu-dummies) \
++ S$(start-installed-name))
+ install-lib = $(start-installed-name) g$(start-installed-name) $(csu-dummies)
+ distribute = initfini.c gmon-start.c start.c defs.awk munch.awk \
+- abi-note.S init.c munch-tmpl.c
++ abi-note.S init.c munch-tmpl.c not-cancel.h
+ generated = version-info.h
+ before-compile = $(objpfx)version-info.h
+
++tests := tst-empty tst-atomic tst-atomic-long
++tests-static := tst-empty
++
+ all: # Make this the default target; it will be defined in Rules.
+
+ include ../Makeconfig
+
++ifeq (yes,$(build-shared))
++extra-objs += S$(start-installed-name)
++install-lib += S$(start-installed-name)
++endif
++
+ ifeq (yes,$(build-bounded))
+ extra-objs += b$(start-installed-name)
+ install-lib += b$(start-installed-name)
+@@ -80,11 +90,6 @@
+
+ CPPFLAGS += -DHAVE_INITFINI
+
+-# We don't want this compiled with PIC.
+-# It's never included in shared libraries, unlike the rest of libc_nonshared.a.
+-CPPFLAGS-elf-init.oS = $(patsubst %,-UPIC,$(pic-ccflag))
+-CFLAGS-elf-init.oS = $(patsubst -f%,-fno-%,$(pic-ccflag))
+-
+ # These are the special initializer/finalizer files. They are always the
+ # first and last file in the link. crti.o ... crtn.o define the global
+ # "functions" _init and _fini to run the .init and .fini sections.
+@@ -96,14 +101,14 @@
+ omit-deps += $(crtstuff)
+
+ # Special rules for the building of crti.o and crtn.o
+-$(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h
++$(crtstuff:%=$(objpfx)%.o): %.o: %.S $(objpfx)defs.h
+ $(compile.S) -g0 $(ASFLAGS-.os) -o $@
+
+ CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions
+
+ vpath initfini.c $(full_config_sysdirs)
+
+-$(objpfx)initfini.s: initfini.c
++$(objpfx)initfini.s: initfini.c $(before-compile)
+ $(compile.c) -S $(CFLAGS-initfini.s) -finhibit-size-directive \
+ $(patsubst -f%,-fno-%,$(exceptions)) -o $@
+
+@@ -151,6 +156,9 @@
+ $(objpfx)$(start-installed-name): $(objpfx)start.o $(objpfx)abi-note.o \
+ $(objpfx)init.o
+ $(link-relocatable)
++$(objpfx)S$(start-installed-name): $(objpfx)start.os $(objpfx)abi-note.o \
++ $(objpfx)init.o
++ $(link-relocatable)
+ $(objpfx)b$(start-installed-name): $(objpfx)start.ob $(objpfx)abi-note.ob \
+ $(objpfx)init.ob
+ $(link-relocatable)
+@@ -160,6 +168,9 @@
+ $(objpfx)$(start-installed-name): $(objpfx)start.o
+ rm -f $@
+ ln $< $@
++$(objpfx)S$(start-installed-name): $(objpfx)start.os
++ rm -f $@
++ ln $< $@
+ $(objpfx)b$(start-installed-name): $(objpfx)start.ob
+ rm -f $@
+ ln $< $@
+@@ -176,11 +187,9 @@
+
+ # These extra files are sometimes expected by system standard linking
+ # procedures, but we have nothing for them to do. So compile empty files.
+-$(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))):
+- @-rm -f $(@:.o=.c)
+- echo > $(@:.o=.c)
+- $(COMPILE.c) $(@:.o=.c) $(OUTPUT_OPTION)
+- rm -f $(@:.o=.c)
++$(addprefix $(objpfx),$(filter-out $(start-installed-name), $(csu-dummies))):\
++ $(before-compile)
++ $(COMPILE.c) -o $@ -x c /dev/null
+
+ # These headers are used by the startup code.
+ $(objpfx)abi-tag.h: $(..)abi-tags
+@@ -208,7 +217,7 @@
+ $(make-target-directory)
+ (case $(config-os) in \
+ linux*) version=`(echo -e "#include <linux/version.h>\nUTS_RELEASE"\
+- | $(CC) -E -P - | \
++ | $(CC) $(CPPFLAGS) -E -P - | \
+ sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\
+ if [ -z "$$version" ]; then \
+ if [ -r /proc/version ]; then \
+--- glibc-2.3.2/csu/elf-init.c 2002-12-31 18:41:32.000000000 -0500
++++ glibc-2.3.2/csu/elf-init.c 2003-05-24 14:06:21.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup support for ELF initializers/finalizers in the main executable.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,12 +21,12 @@
+
+ #ifdef HAVE_INITFINI_ARRAY
+ /* These magic symbols are provided by the linker. */
+-extern void (*__preinit_array_start []) (void);
+-extern void (*__preinit_array_end []) (void);
+-extern void (*__init_array_start []) (void);
+-extern void (*__init_array_end []) (void);
+-extern void (*__fini_array_start []) (void);
+-extern void (*__fini_array_end []) (void);
++extern void (*__preinit_array_start []) (void) attribute_hidden;
++extern void (*__preinit_array_end []) (void) attribute_hidden;
++extern void (*__init_array_start []) (void) attribute_hidden;
++extern void (*__init_array_end []) (void) attribute_hidden;
++extern void (*__fini_array_start []) (void) attribute_hidden;
++extern void (*__fini_array_end []) (void) attribute_hidden;
+ #endif
+
+ /* These function symbols are provided for the .init/.fini section entry
+--- glibc-2.3.2/csu/tst-atomic-long.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/csu/tst-atomic-long.c 2003-03-22 18:00:17.000000000 -0500
+@@ -0,0 +1,28 @@
++/* Tests for atomic.h macros.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <bits/wordsize.h>
++
++#define atomic_t long
++#if __WORDSIZE == 64
++# define TEST_ATOMIC64 1
++#endif
++
++#include "tst-atomic.c"
+--- glibc-2.3.2/csu/tst-atomic.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/csu/tst-atomic.c 2003-05-12 12:13:03.000000000 -0400
+@@ -0,0 +1,373 @@
++/* Tests for atomic.h macros.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdio.h>
++#include <atomic.h>
++
++#ifndef atomic_t
++# define atomic_t int
++#endif
++
++/* Test various atomic.h macros. */
++static int
++do_test (void)
++{
++ atomic_t mem;
++ int ret = 0;
++
++#ifdef atomic_compare_and_exchange_val_acq
++ mem = 24;
++ if (atomic_compare_and_exchange_val_acq (&mem, 35, 24) != 24
++ || mem != 35)
++ {
++ puts ("atomic_compare_and_exchange_val_acq test 1 failed");
++ ret = 1;
++ }
++
++ mem = 12;
++ if (atomic_compare_and_exchange_val_acq (&mem, 10, 15) != 12
++ || mem != 12)
++ {
++ puts ("atomic_compare_and_exchange_val_acq test 2 failed");
++ ret = 1;
++ }
++
++ mem = -15;
++ if (atomic_compare_and_exchange_val_acq (&mem, -56, -15) != -15
++ || mem != -56)
++ {
++ puts ("atomic_compare_and_exchange_val_acq test 3 failed");
++ ret = 1;
++ }
++
++ mem = -1;
++ if (atomic_compare_and_exchange_val_acq (&mem, 17, 0) != -1
++ || mem != -1)
++ {
++ puts ("atomic_compare_and_exchange_val_acq test 4 failed");
++ ret = 1;
++ }
++#endif
++
++ mem = 24;
++ if (atomic_compare_and_exchange_bool_acq (&mem, 35, 24)
++ || mem != 35)
++ {
++ puts ("atomic_compare_and_exchange_bool_acq test 1 failed");
++ ret = 1;
++ }
++
++ mem = 12;
++ if (! atomic_compare_and_exchange_bool_acq (&mem, 10, 15)
++ || mem != 12)
++ {
++ puts ("atomic_compare_and_exchange_bool_acq test 2 failed");
++ ret = 1;
++ }
++
++ mem = -15;
++ if (atomic_compare_and_exchange_bool_acq (&mem, -56, -15)
++ || mem != -56)
++ {
++ puts ("atomic_compare_and_exchange_bool_acq test 3 failed");
++ ret = 1;
++ }
++
++ mem = -1;
++ if (! atomic_compare_and_exchange_bool_acq (&mem, 17, 0)
++ || mem != -1)
++ {
++ puts ("atomic_compare_and_exchange_bool_acq test 4 failed");
++ ret = 1;
++ }
++
++ mem = 64;
++ if (atomic_exchange_acq (&mem, 31) != 64
++ || mem != 31)
++ {
++ puts ("atomic_exchange_acq test failed");
++ ret = 1;
++ }
++
++ mem = 2;
++ if (atomic_exchange_and_add (&mem, 11) != 2
++ || mem != 13)
++ {
++ puts ("atomic_exchange_and_add test failed");
++ ret = 1;
++ }
++
++ mem = -21;
++ atomic_add (&mem, 22);
++ if (mem != 1)
++ {
++ puts ("atomic_add test failed");
++ ret = 1;
++ }
++
++ mem = -1;
++ atomic_increment (&mem);
++ if (mem != 0)
++ {
++ puts ("atomic_increment test failed");
++ ret = 1;
++ }
++
++ mem = 0;
++ if (atomic_increment_and_test (&mem)
++ || mem != 1)
++ {
++ puts ("atomic_increment_and_test test 1 failed");
++ ret = 1;
++ }
++
++ mem = 35;
++ if (atomic_increment_and_test (&mem)
++ || mem != 36)
++ {
++ puts ("atomic_increment_and_test test 2 failed");
++ ret = 1;
++ }
++
++ mem = -1;
++ if (! atomic_increment_and_test (&mem)
++ || mem != 0)
++ {
++ puts ("atomic_increment_and_test test 3 failed");
++ ret = 1;
++ }
++
++ mem = 17;
++ atomic_decrement (&mem);
++ if (mem != 16)
++ {
++ puts ("atomic_decrement test failed");
++ ret = 1;
++ }
++
++ mem = 0;
++ if (atomic_decrement_and_test (&mem)
++ || mem != -1)
++ {
++ puts ("atomic_decrement_and_test test 1 failed");
++ ret = 1;
++ }
++
++ mem = 15;
++ if (atomic_decrement_and_test (&mem)
++ || mem != 14)
++ {
++ puts ("atomic_decrement_and_test test 2 failed");
++ ret = 1;
++ }
++
++ mem = 1;
++ if (! atomic_decrement_and_test (&mem)
++ || mem != 0)
++ {
++ puts ("atomic_decrement_and_test test 3 failed");
++ ret = 1;
++ }
++
++ mem = 1;
++ if (atomic_decrement_if_positive (&mem) != 1
++ || mem != 0)
++ {
++ puts ("atomic_decrement_if_positive test 1 failed");
++ ret = 1;
++ }
++
++ mem = 0;
++ if (atomic_decrement_if_positive (&mem) != 0
++ || mem != 0)
++ {
++ puts ("atomic_decrement_if_positive test 2 failed");
++ ret = 1;
++ }
++
++ mem = -1;
++ if (atomic_decrement_if_positive (&mem) != -1
++ || mem != -1)
++ {
++ puts ("atomic_decrement_if_positive test 3 failed");
++ ret = 1;
++ }
++
++ mem = -12;
++ if (! atomic_add_negative (&mem, 10)
++ || mem != -2)
++ {
++ puts ("atomic_add_negative test 1 failed");
++ ret = 1;
++ }
++
++ mem = 0;
++ if (atomic_add_negative (&mem, 100)
++ || mem != 100)
++ {
++ puts ("atomic_add_negative test 2 failed");
++ ret = 1;
++ }
++
++ mem = 15;
++ if (atomic_add_negative (&mem, -10)
++ || mem != 5)
++ {
++ puts ("atomic_add_negative test 3 failed");
++ ret = 1;
++ }
++
++ mem = -12;
++ if (atomic_add_negative (&mem, 14)
++ || mem != 2)
++ {
++ puts ("atomic_add_negative test 4 failed");
++ ret = 1;
++ }
++
++ mem = 0;
++ if (! atomic_add_negative (&mem, -1)
++ || mem != -1)
++ {
++ puts ("atomic_add_negative test 5 failed");
++ ret = 1;
++ }
++
++ mem = -31;
++ if (atomic_add_negative (&mem, 31)
++ || mem != 0)
++ {
++ puts ("atomic_add_negative test 6 failed");
++ ret = 1;
++ }
++
++ mem = -34;
++ if (atomic_add_zero (&mem, 31)
++ || mem != -3)
++ {
++ puts ("atomic_add_zero test 1 failed");
++ ret = 1;
++ }
++
++ mem = -36;
++ if (! atomic_add_zero (&mem, 36)
++ || mem != 0)
++ {
++ puts ("atomic_add_zero test 2 failed");
++ ret = 1;
++ }
++
++ mem = 113;
++ if (atomic_add_zero (&mem, -13)
++ || mem != 100)
++ {
++ puts ("atomic_add_zero test 3 failed");
++ ret = 1;
++ }
++
++ mem = -18;
++ if (atomic_add_zero (&mem, 20)
++ || mem != 2)
++ {
++ puts ("atomic_add_zero test 4 failed");
++ ret = 1;
++ }
++
++ mem = 10;
++ if (atomic_add_zero (&mem, -20)
++ || mem != -10)
++ {
++ puts ("atomic_add_zero test 5 failed");
++ ret = 1;
++ }
++
++ mem = 10;
++ if (! atomic_add_zero (&mem, -10)
++ || mem != 0)
++ {
++ puts ("atomic_add_zero test 6 failed");
++ ret = 1;
++ }
++
++ mem = 0;
++ atomic_bit_set (&mem, 1);
++ if (mem != 2)
++ {
++ puts ("atomic_bit_set test 1 failed");
++ ret = 1;
++ }
++
++ mem = 8;
++ atomic_bit_set (&mem, 3);
++ if (mem != 8)
++ {
++ puts ("atomic_bit_set test 2 failed");
++ ret = 1;
++ }
++
++#ifdef TEST_ATOMIC64
++ mem = 16;
++ atomic_bit_set (&mem, 35);
++ if (mem != 0x800000010LL)
++ {
++ puts ("atomic_bit_set test 3 failed");
++ ret = 1;
++ }
++#endif
++
++ mem = 0;
++ if (atomic_bit_test_set (&mem, 1)
++ || mem != 2)
++ {
++ puts ("atomic_bit_test_set test 1 failed");
++ ret = 1;
++ }
++
++ mem = 8;
++ if (! atomic_bit_test_set (&mem, 3)
++ || mem != 8)
++ {
++ puts ("atomic_bit_test_set test 2 failed");
++ ret = 1;
++ }
++
++#ifdef TEST_ATOMIC64
++ mem = 16;
++ if (atomic_bit_test_set (&mem, 35)
++ || mem != 0x800000010LL)
++ {
++ puts ("atomic_bit_test_set test 3 failed");
++ ret = 1;
++ }
++
++ mem = 0x100000000LL;
++ if (! atomic_bit_test_set (&mem, 32)
++ || mem != 0x100000000LL)
++ {
++ puts ("atomic_bit_test_set test 4 failed");
++ ret = 1;
++ }
++#endif
++
++ return ret;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/csu/tst-empty.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/csu/tst-empty.c 2003-04-11 20:16:59.000000000 -0400
+@@ -0,0 +1,6 @@
++/* The most useful C program known to man. */
++int
++main (void)
++{
++ return 0;
++}
+--- glibc-2.3.2/dirent/Makefile 2002-06-22 01:46:07.000000000 -0400
++++ glibc-2.3.2/dirent/Makefile 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991-2000, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1991-2000, 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -30,6 +30,9 @@
+
+ tests := list tst-seekdir opendir-tst1 bug-readdir1
+
++CFLAGS-scandir.c = $(uses-callbacks)
++CFLAGS-scandir64.c = $(uses-callbacks)
++
+ include ../Rules
+
+ opendir-tst1-ARGS = --test-dir=${common-objpfx}dirent
+--- glibc-2.3.2/dirent/dirent.h 2001-07-07 15:20:52.000000000 -0400
++++ glibc-2.3.2/dirent/dirent.h 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -128,12 +128,18 @@
+ typedef struct __dirstream DIR;
+
+ /* Open a directory stream on NAME.
+- Return a DIR stream on the directory, or NULL if it could not be opened. */
+-extern DIR *opendir (__const char *__name) __THROW;
++ Return a DIR stream on the directory, or NULL if it could not be opened.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern DIR *opendir (__const char *__name);
+
+ /* Close the directory stream DIRP.
+- Return 0 if successful, -1 if not. */
+-extern int closedir (DIR *__dirp) __THROW;
++ Return 0 if successful, -1 if not.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int closedir (DIR *__dirp);
+
+ /* Read a directory entry from DIRP. Return a pointer to a `struct
+ dirent' describing the entry, or NULL for EOF or error. The
+@@ -141,34 +147,40 @@
+ same DIR stream.
+
+ If the Large File Support API is selected we have to use the
+- appropriate interface. */
++ appropriate interface.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ #ifndef __USE_FILE_OFFSET64
+-extern struct dirent *readdir (DIR *__dirp) __THROW;
++extern struct dirent *readdir (DIR *__dirp);
+ #else
+ # ifdef __REDIRECT
+-extern struct dirent *__REDIRECT (readdir, (DIR *__dirp) __THROW, readdir64);
++extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64);
+ # else
+ # define readdir readdir64
+ # endif
+ #endif
+
+ #ifdef __USE_LARGEFILE64
+-extern struct dirent64 *readdir64 (DIR *__dirp) __THROW;
++extern struct dirent64 *readdir64 (DIR *__dirp);
+ #endif
+
+ #if defined __USE_POSIX || defined __USE_MISC
+ /* Reentrant version of `readdir'. Return in RESULT a pointer to the
+- next entry. */
++ next entry.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ # ifndef __USE_FILE_OFFSET64
+ extern int readdir_r (DIR *__restrict __dirp,
+ struct dirent *__restrict __entry,
+- struct dirent **__restrict __result) __THROW;
++ struct dirent **__restrict __result);
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (readdir_r,
+ (DIR *__restrict __dirp,
+ struct dirent *__restrict __entry,
+- struct dirent **__restrict __result) __THROW,
++ struct dirent **__restrict __result),
+ readdir64_r);
+ # else
+ # define readdir_r readdir64_r
+@@ -178,7 +190,7 @@
+ # ifdef __USE_LARGEFILE64
+ extern int readdir64_r (DIR *__restrict __dirp,
+ struct dirent64 *__restrict __entry,
+- struct dirent64 **__restrict __result) __THROW;
++ struct dirent64 **__restrict __result);
+ # endif
+ #endif /* POSIX or misc */
+
+@@ -227,14 +239,14 @@
+ extern int scandir (__const char *__restrict __dir,
+ struct dirent ***__restrict __namelist,
+ int (*__selector) (__const struct dirent *),
+- int (*__cmp) (__const void *, __const void *)) __THROW;
++ int (*__cmp) (__const void *, __const void *));
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (scandir,
+ (__const char *__restrict __dir,
+ struct dirent ***__restrict __namelist,
+ int (*__selector) (__const struct dirent *),
+- int (*__cmp) (__const void *, __const void *)) __THROW,
++ int (*__cmp) (__const void *, __const void *)),
+ scandir64);
+ # else
+ # define scandir scandir64
+@@ -247,7 +259,7 @@
+ extern int scandir64 (__const char *__restrict __dir,
+ struct dirent64 ***__restrict __namelist,
+ int (*__selector) (__const struct dirent64 *),
+- int (*__cmp) (__const void *, __const void *)) __THROW;
++ int (*__cmp) (__const void *, __const void *));
+ # endif
+
+ /* Function to compare two `struct dirent's alphabetically. */
+@@ -257,8 +269,7 @@
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (alphasort,
+- (__const void *__e1, __const void *__e2)
+- __THROW,
++ (__const void *__e1, __const void *__e2) __THROW,
+ alphasort64) __attribute_pure__;
+ # else
+ # define alphasort alphasort64
+@@ -278,8 +289,7 @@
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (versionsort,
+- (__const void *__e1, __const void *__e2)
+- __THROW,
++ (__const void *__e1, __const void *__e2) __THROW,
+ versionsort64) __attribute_pure__;
+ # else
+ # define versionsort versionsort64
+--- glibc-2.3.2/dirent/scandir.c 2002-10-14 13:41:01.000000000 -0400
++++ glibc-2.3.2/dirent/scandir.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1992-1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1992-1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,6 +20,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <errno.h>
++#include <bits/libc-lock.h>
+
+ #ifndef SCANDIR
+ #define SCANDIR scandir
+@@ -27,6 +28,30 @@
+ #define DIRENT_TYPE struct dirent
+ #endif
+
++#ifndef SCANDIR_CANCEL
++#define SCANDIR_CANCEL
++struct scandir_cancel_struct
++{
++ DIR *dp;
++ void *v;
++ size_t cnt;
++};
++
++static void
++cancel_handler (void *arg)
++{
++ struct scandir_cancel_struct *cp = arg;
++ size_t i;
++ void **v = cp->v;
++
++ for (i = 0; i < cp->cnt; ++i)
++ free (v[i]);
++ free (v);
++ (void) __closedir (cp->dp);
++}
++#endif
++
++
+ int
+ SCANDIR (dir, namelist, select, cmp)
+ const char *dir;
+@@ -36,7 +61,8 @@
+ {
+ DIR *dp = __opendir (dir);
+ DIRENT_TYPE **v = NULL;
+- size_t vsize = 0, i;
++ size_t vsize = 0;
++ struct scandir_cancel_struct c;
+ DIRENT_TYPE *d;
+ int save;
+
+@@ -46,58 +72,77 @@
+ save = errno;
+ __set_errno (0);
+
+- i = 0;
++ c.dp = dp;
++ c.v = NULL;
++ c.cnt = 0;
++ __libc_cleanup_push (cancel_handler, &c);
++
+ while ((d = READDIR (dp)) != NULL)
+- if (select == NULL || (*select) (d))
+- {
+- DIRENT_TYPE *vnew;
+- size_t dsize;
+-
+- /* Ignore errors from select or readdir */
+- __set_errno (0);
+-
+- if (__builtin_expect (i == vsize, 0))
+- {
+- DIRENT_TYPE **new;
+- if (vsize == 0)
+- vsize = 10;
+- else
+- vsize *= 2;
+- new = (DIRENT_TYPE **) realloc (v, vsize * sizeof (*v));
+- if (new == NULL)
+- break;
+- v = new;
+- }
+-
+- dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d;
+- vnew = (DIRENT_TYPE *) malloc (dsize);
+- if (vnew == NULL)
+- break;
++ {
++ int use_it = select == NULL;
++
++ if (! use_it)
++ {
++ use_it = select (d);
++ /* The select function might have changed errno. It was
++ zero before and it need to be again to make the latter
++ tests work. */
++ __set_errno (0);
++ }
++
++ if (use_it)
++ {
++ DIRENT_TYPE *vnew;
++ size_t dsize;
++
++ /* Ignore errors from select or readdir */
++ __set_errno (0);
++
++ if (__builtin_expect (c.cnt == vsize, 0))
++ {
++ DIRENT_TYPE **new;
++ if (vsize == 0)
++ vsize = 10;
++ else
++ vsize *= 2;
++ new = (DIRENT_TYPE **) realloc (v, vsize * sizeof (*v));
++ if (new == NULL)
++ break;
++ v = new;
++ c.v = (void *) v;
++ }
++
++ dsize = &d->d_name[_D_ALLOC_NAMLEN (d)] - (char *) d;
++ vnew = (DIRENT_TYPE *) malloc (dsize);
++ if (vnew == NULL)
++ break;
+
+- v[i++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize);
+- }
++ v[c.cnt++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize);
++ }
++ }
+
+ if (__builtin_expect (errno, 0) != 0)
+ {
+ save = errno;
+
+- while (i > 0)
+- free (v[--i]);
++ while (c.cnt > 0)
++ free (v[--c.cnt]);
+ free (v);
+-
+- i = -1;
++ c.cnt = -1;
+ }
+ else
+ {
+ /* Sort the list if we have a comparison function to sort with. */
+ if (cmp != NULL)
+- qsort (v, i, sizeof (*v), cmp);
++ qsort (v, c.cnt, sizeof (*v), cmp);
+
+ *namelist = v;
+ }
+
++ __libc_cleanup_pop (0);
++
+ (void) __closedir (dp);
+ __set_errno (save);
+
+- return i;
++ return c.cnt;
+ }
+--- glibc-2.3.2/dlfcn/Makefile 2003-02-25 19:46:32.000000000 -0500
++++ glibc-2.3.2/dlfcn/Makefile 2003-08-21 08:36:59.000000000 -0400
+@@ -19,7 +19,8 @@
+ subdir := dlfcn
+ headers := bits/dlfcn.h dlfcn.h
+ extra-libs := libdl
+-libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr eval
++libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr dladdr1 dlinfo \
++ eval
+ distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \
+ defaultmod1.c defaultmod2.c errmsg1mod.c modatexit.c \
+ modcxaatexit.c modstatic.c \
+@@ -37,7 +38,7 @@
+
+ ifeq (yes,$(build-shared))
+ tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
+- bug-dlopen1 bug-dlsym1
++ bug-dlopen1 bug-dlsym1 tst-dlinfo
+ ifeq (yes,$(have-protected))
+ tests += tstatexit
+ endif
+@@ -46,6 +47,10 @@
+ errmsg1mod modatexit modcxaatexit \
+ bug-dlsym1-lib1 bug-dlsym1-lib2
+
++failtestmod.so-no-z-defs = yes
++glreflib2.so-no-z-defs = yes
++errmsg1mod.so-no-z-defs = yes
++
+ ifeq (yesyesyes,$(build-static)$(build-shared)$(elf))
+ tests += tststatic
+ tests-static += tststatic
+@@ -61,9 +66,14 @@
+ LDFLAGS-dl.so = -Wl,-dynamic-linker,$(slibdir)/$(rtld-installed-name)
+
+ test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
+-$(test-modules): $(objpfx)%.so: $(objpfx)%.os
++$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds
+ $(build-module)
+
++ifeq ($(build-shared),yes)
++# Build all the modules even when not actually running test programs.
++tests: $(test-modules)
++endif
++
+ $(objpfx)glrefmain: $(libdl)
+ $(objpfx)glrefmain.out: $(objpfx)glrefmain \
+ $(objpfx)glreflib1.so $(objpfx)glreflib2.so
+@@ -74,6 +84,9 @@
+ $(objpfx)tst-dladdr: $(libdl)
+ $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so
+
++$(objpfx)tst-dlinfo: $(libdl)
++$(objpfx)tst-dlinfo.out: $(objpfx)glreflib1.so
++
+ LDFLAGS-default = $(LDFLAGS-rdynamic)
+ $(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so
+ $(objpfx)defaultmod1.so: $(libdl) $(common-objpfx)libc_nonshared.a
+--- glibc-2.3.2/dlfcn/Versions 1999-07-07 14:25:24.000000000 -0400
++++ glibc-2.3.2/dlfcn/Versions 2003-03-18 16:46:07.000000000 -0500
+@@ -5,4 +5,7 @@
+ GLIBC_2.1 {
+ dlopen; dlvsym;
+ }
++ GLIBC_2.3.3 {
++ dladdr1; dlinfo;
++ }
+ }
+--- glibc-2.3.2/dlfcn/default.c 2000-11-15 21:12:28.000000000 -0500
++++ glibc-2.3.2/dlfcn/default.c 2003-08-21 08:36:59.000000000 -0400
+@@ -36,7 +36,7 @@
+ printf ("%s: main not found\n", __FILE__);
+ result = 1;
+ }
+- else if (p != (void *) &main)
++ else if ((int (*)(int, char **))p != main)
+ {
+ printf ("%s: wrong address returned for main\n", __FILE__);
+ result = 1;
+@@ -72,9 +72,9 @@
+ else
+ printf ("%s: found_in_mod2 correctly found\n", __FILE__);
+
+- result |= test_in_mod1 ((void *) &main);
++ result |= test_in_mod1 (main);
+
+- result |= test_in_mod2 ((void *) &main);
++ result |= test_in_mod2 (main);
+
+ return result;
+ }
+--- glibc-2.3.2/dlfcn/defaultmod1.c 2000-11-28 18:56:29.000000000 -0500
++++ glibc-2.3.2/dlfcn/defaultmod1.c 2003-08-21 08:36:59.000000000 -0400
+@@ -9,9 +9,9 @@
+ }
+
+
+-extern int test_in_mod1 (void *mainp);
++extern int test_in_mod1 (int (*mainp)(int, char **));
+ int
+-test_in_mod1 (void *mainp)
++test_in_mod1 (int (*mainp)(int, char **))
+ {
+ int (*ifp) (void);
+ void *p;
+@@ -24,7 +24,7 @@
+ printf ("%s: main not found\n", __FILE__);
+ result = 1;
+ }
+- else if (p != mainp)
++ else if ((int (*)(int, char **))p != mainp)
+ {
+ printf ("%s: wrong address returned for main\n", __FILE__);
+ result = 1;
+--- glibc-2.3.2/dlfcn/defaultmod2.c 2000-11-28 18:57:02.000000000 -0500
++++ glibc-2.3.2/dlfcn/defaultmod2.c 2003-08-21 08:36:59.000000000 -0400
+@@ -16,9 +16,9 @@
+ }
+
+
+-extern int test_in_mod2 (void *mainp);
++extern int test_in_mod2 (int (*mainp)(int, char **));
+ int
+-test_in_mod2 (void *mainp)
++test_in_mod2 (int (*mainp)(int, char **))
+ {
+ int (*ifp) (void);
+ void *p;
+@@ -31,7 +31,7 @@
+ printf ("%s: main not found\n", __FILE__);
+ result = 1;
+ }
+- else if (p != mainp)
++ else if ((int (*)(int, char **))p != mainp)
+ {
+ printf ("%s: wrong address returned for main\n", __FILE__);
+ result = 1;
+--- glibc-2.3.2/dlfcn/dladdr.c 2001-07-07 15:20:52.000000000 -0400
++++ glibc-2.3.2/dlfcn/dladdr.c 2003-03-15 15:02:08.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Locate the shared object symbol nearest a given address.
+- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,5 +22,5 @@
+ int
+ dladdr (const void *address, Dl_info *info)
+ {
+- return _dl_addr (address, info);
++ return _dl_addr (address, info, NULL, NULL);
+ }
+--- glibc-2.3.2/dlfcn/dladdr1.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/dlfcn/dladdr1.c 2003-03-10 04:12:11.000000000 -0500
+@@ -0,0 +1,35 @@
++/* Locate the shared object symbol nearest a given address.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++
++int
++dladdr1 (const void *address, Dl_info *info, void **extra, int flags)
++{
++ switch (flags)
++ {
++ default: /* Make this an error? */
++ case 0:
++ return _dl_addr (address, info, NULL, NULL);
++ case RTLD_DL_SYMENT:
++ return _dl_addr (address, info, NULL, (const ElfW(Sym) **) extra);
++ case RTLD_DL_LINKMAP:
++ return _dl_addr (address, info, (struct link_map **) extra, NULL);
++ }
++}
+--- glibc-2.3.2/dlfcn/dlerror.c 2002-11-19 01:51:37.000000000 -0500
++++ glibc-2.3.2/dlfcn/dlerror.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Return error detail for failing <dlfcn.h> functions.
+- Copyright (C) 1995,1996,1997,1998,1999,2000,2002
++ Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2003
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+@@ -38,6 +38,7 @@
+
+ /* This is the key for the thread specific memory. */
+ static __libc_key_t key;
++__libc_once_define (static, once);
+
+ /* Destructor for the thread-specific data. */
+ static void init (void);
+@@ -50,6 +51,9 @@
+ char *buf = NULL;
+ struct dl_action_result *result;
+
++ /* If we have not yet initialized the buffer do it now. */
++ __libc_once (once, init);
++
+ /* Get error string. */
+ result = (struct dl_action_result *) __libc_getspecific (key);
+ if (result == NULL)
+@@ -69,9 +73,19 @@
+ else if (result->errstring != NULL)
+ {
+ buf = (char *) result->errstring;
+- if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s",
+- result->objname, _(result->errstring),
+- strerror (result->errcode)) != -1)
++ int n;
++ if (result->errcode == 0)
++ n = __asprintf (&buf, "%s%s%s",
++ result->objname,
++ result->objname[0] == '\0' ? "" : ": ",
++ _(result->errstring));
++ else
++ n = __asprintf (&buf, "%s%s%s: %s",
++ result->objname,
++ result->objname[0] == '\0' ? "" : ": ",
++ _(result->errstring),
++ strerror (result->errcode));
++ if (n != -1)
+ {
+ /* We don't need the error string anymore. */
+ if (strcmp (result->errstring, "out of memory") != 0)
+@@ -90,7 +104,6 @@
+ internal_function
+ _dlerror_run (void (*operate) (void *), void *args)
+ {
+- __libc_once_define (static, once);
+ struct dl_action_result *result;
+
+ /* If we have not yet initialized the buffer do it now. */
+--- glibc-2.3.2/dlfcn/dlfcn.h 2001-10-26 19:58:28.000000000 -0400
++++ glibc-2.3.2/dlfcn/dlfcn.h 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* User functions for run-time dynamic loading.
+- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1995-1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,6 +21,8 @@
+ #define _DLFCN_H 1
+
+ #include <features.h>
++#define __need_size_t
++#include <stddef.h>
+
+ /* Collect various system dependent definitions and declarations. */
+ #include <bits/dlfcn.h>
+@@ -83,7 +85,74 @@
+ /* Fill in *INFO with the following information about ADDRESS.
+ Returns 0 iff no shared object's segments contain that address. */
+ extern int dladdr (__const void *__address, Dl_info *__info) __THROW;
+-#endif
++
++/* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */
++extern int dladdr1 (__const void *__address, Dl_info *__info,
++ void **__extra_info, int __flags) __THROW;
++
++/* These are the possible values for the FLAGS argument to `dladdr1'.
++ This indicates what extra information is stored at *EXTRA_INFO.
++ It may also be zero, in which case the EXTRA_INFO argument is not used. */
++enum
++ {
++ /* Matching symbol table entry (const ElfNN_Sym *). */
++ RTLD_DL_SYMENT = 1,
++
++ /* The object containing the address (struct link_map *). */
++ RTLD_DL_LINKMAP = 2
++ };
++
++
++/* Get information about the shared object HANDLE refers to.
++ REQUEST is from among the values below, and determines the use of ARG.
++
++ On success, returns zero. On failure, returns -1 and records an error
++ message to be fetched with `dlerror'. */
++extern int dlinfo (void *__restrict __handle,
++ int __request, void *__restrict __arg);
++
++/* These are the possible values for the REQUEST argument to `dlinfo'. */
++enum
++ {
++ /* Treat ARG as `struct link_map **';
++ store the `struct link_map *' for HANDLE there. */
++ RTLD_DI_LINKMAP = 2,
++
++ /* Treat ARG as `Dl_serinfo *' (see below), and fill in to describe the
++ directories that will be searched for dependencies of this object.
++ RTLD_DI_SERINFOSIZE fills in just the `dls_cnt' and `dls_size'
++ entries to indicate the size of the buffer that must be passed to
++ RTLD_DI_SERINFO to fill in the full information. */
++ RTLD_DI_SERINFO = 4,
++ RTLD_DI_SERINFOSIZE = 5,
++
++ /* Treat ARG as `char *', and store there the directory name used to
++ expand $ORIGIN in this shared object's dependency file names. */
++ RTLD_DI_ORIGIN = 6,
++
++ RTLD_DI_LMID = 1, /* Unsupported, defined by Solaris. */
++ RTLD_DI_CONFIGADDR = 3 /* Unsupported, defined by Solaris. */
++ };
++
++
++/* This is the type of elements in `Dl_serinfo', below.
++ The `dls_name' member points to space in the buffer passed to `dlinfo'. */
++typedef struct
++{
++ char *dls_name; /* Name of library search path directory. */
++ unsigned int dls_flags; /* Indicates where this directory came from. */
++} Dl_serpath;
++
++/* This is the structure that must be passed (by reference) to `dlinfo' for
++ the RTLD_DI_SERINFO and RTLD_DI_SERINFOSIZE requests. */
++typedef struct
++{
++ size_t dls_size; /* Size in bytes of the whole buffer. */
++ unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */
++ Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */
++} Dl_serinfo;
++#endif /* __USE_GNU */
++
+
+ __END_DECLS
+
+--- glibc-2.3.2/dlfcn/dlinfo.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/dlfcn/dlinfo.c 2003-03-15 18:14:44.000000000 -0500
+@@ -0,0 +1,87 @@
++/* dlinfo -- Get information from the dynamic linker.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <link.h>
++#include <ldsodefs.h>
++#include <libintl.h>
++
++struct dlinfo_args
++{
++ ElfW(Addr) caller;
++ void *handle;
++ int request;
++ void *arg;
++};
++
++static void
++dlinfo_doit (void *argsblock)
++{
++ struct dlinfo_args *const args = argsblock;
++ struct link_map *l = args->handle;
++
++#if 0
++ if (args->handle == RTLD_SELF)
++ {
++
++ /* Find the highest-addressed object that CALLER is not below. */
++ for (l = GL(dl_loaded); l != NULL; l = l->l_next)
++ if (caller >= l->l_map_start && caller < l->l_map_end)
++ /* There must be exactly one DSO for the range of the virtual
++ memory. Otherwise something is really broken. */
++ break;
++
++ if (l == NULL)
++ _dl_signal_error (0, NULL, NULL, N_("\
++RTLD_SELF used in code not dynamically loaded"));
++ }
++#endif
++
++ switch (args->request)
++ {
++ case RTLD_DI_LMID:
++ case RTLD_DI_CONFIGADDR:
++ default:
++ _dl_signal_error (0, NULL, NULL, N_("unsupported dlinfo request"));
++ break;
++
++ case RTLD_DI_LINKMAP:
++ *(struct link_map **) args->arg = l;
++ break;
++
++ case RTLD_DI_SERINFO:
++ _dl_rtld_di_serinfo (l, args->arg, false);
++ break;
++ case RTLD_DI_SERINFOSIZE:
++ _dl_rtld_di_serinfo (l, args->arg, true);
++ break;
++
++ case RTLD_DI_ORIGIN:
++ strcpy (args->arg, l->l_origin);
++ break;
++ }
++}
++
++int
++dlinfo (void *handle, int request, void *arg)
++{
++ struct dlinfo_args args = { (ElfW(Addr)) RETURN_ADDRESS (0),
++ handle, request, arg };
++ return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0;
++}
+--- glibc-2.3.2/dlfcn/dlopen.c 2001-07-07 15:20:52.000000000 -0400
++++ glibc-2.3.2/dlfcn/dlopen.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Load a shared object at run time.
+- Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
++ Copyright (C) 1995,96,97,98,99,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -54,3 +54,4 @@
+ }
+ #include <shlib-compat.h>
+ versioned_symbol (libdl, __dlopen_check, dlopen, GLIBC_2_1);
++static_link_warning (dlopen)
+--- glibc-2.3.2/dlfcn/eval.c 2001-07-07 15:20:52.000000000 -0400
++++ glibc-2.3.2/dlfcn/eval.c 2003-08-21 08:36:59.000000000 -0400
+@@ -27,7 +27,7 @@
+ #include <string.h>
+ #include <unistd.h>
+
+-static void *funcall (char **stringp);
++static void *funcall (char **stringp) __attribute_noinline__;
+ static void *eval (char **stringp);
+
+
+--- glibc-2.3.2/dlfcn/tst-dlinfo.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/dlfcn/tst-dlinfo.c 2003-03-15 18:14:48.000000000 -0500
+@@ -0,0 +1,96 @@
++/* Test for dlinfo.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <error.h>
++
++#define TEST_FUNCTION do_test ()
++
++static int
++do_test (void)
++{
++ int status = 0;
++
++ void *handle = dlopen ("glreflib1.so", RTLD_NOW);
++ if (handle == NULL)
++ error (EXIT_FAILURE, 0, "cannot load: glreflib1.so: %s", dlerror ());
++
++#define TRY(req, arg) \
++ if (dlinfo (handle, req, arg) != 0) \
++ { \
++ printf ("dlinfo failed for %s: %s\n", #req, dlerror ()); \
++ status = 1; \
++ } \
++ else
++
++ struct link_map *l;
++ TRY (RTLD_DI_LINKMAP, &l)
++ {
++ if (l != handle)
++ {
++ printf ("bogus link_map? %p != %p\n", l, handle);
++ status = 1;
++ }
++ }
++
++ char origin[8192]; /* >= PATH_MAX, in theory */
++ TRY (RTLD_DI_ORIGIN, origin)
++ {
++ printf ("origin: %s\n", origin);
++ }
++
++ Dl_serinfo counts;
++ TRY (RTLD_DI_SERINFOSIZE, &counts)
++ {
++ Dl_serinfo *buf = alloca (counts.dls_size);
++ buf->dls_cnt = counts.dls_cnt;
++ buf->dls_size = counts.dls_size;
++ printf ("%u library directories\n", buf->dls_cnt);
++ TRY (RTLD_DI_SERINFO, buf)
++ {
++ if (counts.dls_cnt != buf->dls_cnt)
++ {
++ printf ("??? became %u library directories\n", buf->dls_cnt);
++ status = 1;
++ }
++ for (unsigned int i = 0; i < buf->dls_cnt; ++i)
++ printf ("\t%#02x\t%s\n",
++ buf->dls_serpath[i].dls_flags,
++ buf->dls_serpath[i].dls_name);
++ }
++ }
++
++ unsigned long int lmid = 0xdeadbeefUL;
++ if (dlinfo (handle, RTLD_DI_LMID, &lmid) != 0)
++ printf ("dlinfo refuses RTLD_DI_LMID: %s\n", dlerror ());
++ else
++ {
++ printf ("dlinfo RTLD_DI_LMID worked? %#lx\n", lmid);
++ status = lmid == 0xdeadbeefUL;
++ }
++
++#undef TRY
++ dlclose (handle);
++
++ return status;
++}
++
++#include "../test-skeleton.c"
+--- glibc-2.3.2/elf/Makefile 2003-02-21 01:28:09.000000000 -0500
++++ glibc-2.3.2/elf/Makefile 2003-09-20 09:54:37.000000000 -0400
+@@ -69,7 +69,9 @@
+ unwind-dw2.c unwind-dw2-fde.c unwind.h unwind-pe.h \
+ unwind-dw2-fde.h dwarf2.h dl-procinfo.c tls.h dl-tls.h \
+ tst-tlsmod1.c tst-tlsmod2.c tst-tlsmod3.c tst-tlsmod4.c \
+- tst-tlsmod5.c tst-tlsmod6.c \
++ tst-tlsmod5.c tst-tlsmod6.c tst-tlsmod7.c tst-tlsmod8.c \
++ tst-tlsmod9.c tst-tlsmod10.c tst-tlsmod11.c \
++ tst-tlsmod12.c tst-tls10.h tst-alignmod.c \
+ circlemod1.c circlemod1a.c circlemod2.c circlemod2a.c \
+ circlemod3.c circlemod3a.c nodlopenmod2.c \
+ tls-macros.h \
+@@ -80,6 +82,11 @@
+ tst-array2dep.c \
+ check-textrel.c dl-sysdep.h
+
++CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-dl-iterate-phdr.c = $(uses-callbacks)
++CFLAGS-dl-iterate-phdr-static.c = $(uses-callbacks)
++
+ include ../Makeconfig
+
+ ifeq ($(unwind-find-fde),yes)
+@@ -142,7 +149,8 @@
+ $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \
+ neededtest3 neededtest4 unload2 lateglobal initfirst global \
+ restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
+- circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8
++ circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
++ tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-align
+ # reldep9
+ test-srcs = tst-pathopt
+ tests-vis-yes = vismain
+@@ -163,11 +171,14 @@
+ reldep6mod0 reldep6mod1 reldep6mod2 reldep6mod3 reldep6mod4 \
+ reldep7mod1 reldep7mod2 \
+ tst-tlsmod1 tst-tlsmod2 tst-tlsmod3 tst-tlsmod4 \
+- tst-tlsmod5 tst-tlsmod6 \
++ tst-tlsmod5 tst-tlsmod6 tst-tlsmod7 tst-tlsmod8 \
++ tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \
++ tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \
+ circlemod1 circlemod1a circlemod2 circlemod2a \
+ circlemod3 circlemod3a \
+ reldep8mod1 reldep8mod2 reldep8mod3 \
+- reldep9mod1 reldep9mod2 reldep9mod3
++ reldep9mod1 reldep9mod2 reldep9mod3 \
++ tst-alignmod
+ ifeq (yes,$(have-initfini-array))
+ modules-names += tst-array2dep
+ endif
+@@ -181,6 +192,9 @@
+
+ include ../Rules
+
++check-abi: check-abi-ld
++update-abi: update-abi-ld
++
+ ifeq (yes,$(build-shared))
+ # Make sure these things are built in the `make lib' pass so they can be used
+ # to run programs during the `make others' pass.
+@@ -210,12 +224,15 @@
+ mv -f $@T $@
+
+ $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
+- sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\))$$@\1 \2@p' $< | \
++ LC_ALL=C \
++ sed -n 's@^$(common-objpfx)\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \
++ $< | \
+ while read lib file; do \
+ case $$lib in \
+ libc_pic.a) \
+- fgrep -l /$$file \
++ LC_ALL=C fgrep -l /$$file \
+ $(common-objpfx)stamp.os $(common-objpfx)*/stamp.os | \
++ LC_ALL=C \
+ sed 's@^$(common-objpfx)\([^/]*\)/stamp\.os$$@rtld-\1'" +=$$file@"\
+ ;; \
+ */*.a) \
+@@ -223,22 +240,24 @@
+ *) echo "Wasn't expecting $$lib($$file)" >&2; exit 1 ;; \
+ esac; \
+ done > $@T
+- echo rtld-subdirs = `sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \
+- | sort -u` >> $@T
++ echo rtld-subdirs = `LC_ALL=C sed 's/^rtld-\([^ ]*\).*$$/\1/' $@T \
++ | LC_ALL=C sort -u` >> $@T
+ mv -f $@T $@
+
+ $(objpfx)rtld-libc.a: $(objpfx)librtld.mk FORCE
+ $(MAKE) -f $< -f rtld-Rules
+
+-generated += librtld.map librtld.mk rtld-libc.a
+-
+ $(objpfx)librtld.os: $(objpfx)dl-allobjs.os $(objpfx)rtld-libc.a
+- $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)'
++ $(LINK.o) -nostdlib -nostartfiles -r -o $@ '-Wl,-(' $^ -lgcc '-Wl,-)' \
++ -Wl,-Map,$@.map
++
++generated += librtld.map librtld.mk rtld-libc.a librtld.os.map
+
+ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map)
+ @rm -f $@.lds
+ $(LINK.o) -nostdlib -nostartfiles -shared \
+ $(LDFLAGS-rtld) -Wl,-z,defs -Wl,--verbose 2>&1 | \
++ LC_ALL=C \
+ sed -e '/^=========/,/^=========/!d;/^=========/d' \
+ -e 's/\. = 0 + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' \
+ > $@.lds
+@@ -305,11 +324,11 @@
+
+ ifeq ($(ldd-rewrite-script),no)
+ define gen-ldd
+-sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new
++LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) < $< > $@.new
+ endef
+ else
+ define gen-ldd
+-sed $($(ldd-shell)-ldd-rewrite) < $< | sed -f $(ldd-rewrite-script) > $@.new
++LC_ALL=C sed $($(ldd-shell)-ldd-rewrite) < $< | LC_ALL=C sed -f $(ldd-rewrite-script) > $@.new
+ endef
+ endif
+
+@@ -323,7 +342,8 @@
+
+ $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
+ SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
+-CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' -D'SLIBDIR="$(slibdir)"'
++CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
++ -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
+ CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+
+@@ -372,6 +392,10 @@
+ $(objpfx)reldep6mod3.so: $(objpfx)reldep6mod2.so
+ $(objpfx)reldep6mod4.so: $(objpfx)reldep6mod1.so
+ $(objpfx)tst-tlsmod3.so: $(objpfx)tst-tlsmod2.so
++$(objpfx)tst-tlsmod8.so: $(objpfx)tst-tlsmod7.so
++$(objpfx)tst-tlsmod10.so: $(objpfx)tst-tlsmod9.so
++$(objpfx)tst-tlsmod12.so: $(objpfx)tst-tlsmod11.so
++$(objpfx)tst-tlsmod13a.so: $(objpfx)tst-tlsmod13.so
+ # For tst-tls9-static, make sure the modules it dlopens have libc.so in DT_NEEDED
+ $(objpfx)tst-tlsmod5.so: $(common-objpfx)libc.so
+ $(objpfx)tst-tlsmod6.so: $(common-objpfx)libc.so
+@@ -383,10 +407,51 @@
+ LDFLAGS-tst-tlsmod5.so = -nostdlib
+ LDFLAGS-tst-tlsmod6.so = -nostdlib
+
++testobj1.so-no-z-defs = yes
++testobj3.so-no-z-defs = yes
++testobj4.so-no-z-defs = yes
++testobj5.so-no-z-defs = yes
++testobj6.so-no-z-defs = yes
++failobj.so-no-z-defs = yes
++constload2.so-no-z-defs = yes
++constload3.so-no-z-defs = yes
++nodelmod1.so-no-z-defs = yes
++nodelmod2.so-no-z-defs = yes
++nodelmod4.so-no-z-defs = yes
++nodel2mod2.so-no-z-defs = yes
++reldepmod2.so-no-z-defs = yes
++reldepmod3.so-no-z-defs = yes
++reldepmod4.so-no-z-defs = yes
++reldep4mod4.so-no-z-defs = yes
++reldep4mod2.so-no-z-defs = yes
++ltglobmod2.so-no-z-defs = yes
++dblloadmod3.so-no-z-defs = yes
++tst-tlsmod1.so-no-z-defs = yes
++tst-tlsmod2.so-no-z-defs = yes
++tst-tlsmod3.so-no-z-defs = yes
++tst-tlsmod4.so-no-z-defs = yes
++tst-tlsmod7.so-no-z-defs = yes
++tst-tlsmod8.so-no-z-defs = yes
++tst-tlsmod9.so-no-z-defs = yes
++tst-tlsmod10.so-no-z-defs = yes
++tst-tlsmod12.so-no-z-defs = yes
++tst-tlsmod14a.so-no-z-defs = yes
++tst-tlsmod14b.so-no-z-defs = yes
++circlemod2.so-no-z-defs = yes
++circlemod3.so-no-z-defs = yes
++circlemod3a.so-no-z-defs = yes
++reldep8mod2.so-no-z-defs = yes
++reldep9mod1.so-no-z-defs = yes
++
+ # filtmod1.so has a special rule
+ $(filter-out $(objpfx)filtmod1.so, $(test-modules)): $(objpfx)%.so: $(objpfx)%.os
+ $(build-module)
+
++ifeq ($(build-shared),yes)
++# Build all the modules even when not actually running test programs.
++tests: $(test-modules)
++endif
++
+ $(objpfx)loadtest: $(libdl)
+ LDFLAGS-loadtest = -rdynamic
+
+@@ -573,6 +638,23 @@
+ $(objpfx)tst-tls9: $(libdl)
+ $(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
+
++$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so
++
++$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so
++
++$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so
++
++$(objpfx)tst-tls13: $(libdl)
++$(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
++
++$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so $(libdl)
++$(objpfx)tst-tls14.out:$(objpfx)tst-tlsmod14b.so
++
++CFLAGS-tst-align.c = $(stack-align-test-flags)
++CFLAGS-tst-alignmod.c = $(stack-align-test-flags)
++$(objpfx)tst-align: $(libdl)
++$(objpfx)tst-align.out: $(objpfx)tst-alignmod.so
++
+ ifdef libdl
+ $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a
+ $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
+--- glibc-2.3.2/elf/Versions 2002-12-04 13:22:02.000000000 -0500
++++ glibc-2.3.2/elf/Versions 2003-08-21 08:36:59.000000000 -0400
+@@ -21,6 +21,8 @@
+ # functions used in other libraries
+ _dl_open; _dl_close; _dl_addr;
+ _dl_sym; _dl_vsym;
++ _dl_open_hook;
++ __libc_dlopen_mode; __libc_dlsym; __libc_dlclose;
+ }
+ }
+
+@@ -51,6 +53,6 @@
+ _dl_unload_cache;
+ _rtld_global; _dl_tls_symaddr; _dl_allocate_tls; _dl_deallocate_tls;
+ _dl_get_tls_static_info; _dl_allocate_tls_init;
+- _dl_get_origin; _dl_tls_setup;
++ _dl_get_origin; _dl_tls_setup; _dl_rtld_di_serinfo;
+ }
+ }
+--- glibc-2.3.2/elf/cache.c 2002-12-29 14:14:59.000000000 -0500
++++ glibc-2.3.2/elf/cache.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 1999.
+
+@@ -86,6 +87,11 @@
+ case FLAG_POWERPC_LIB64:
+ fputs(",64bit", stdout);
+ break;
++ case FLAG_MIPS64_LIBN32:
++ fputs(",N32", stdout);
++ break;
++ case FLAG_MIPS64_LIBN64:
++ fputs(",64bit", stdout);
+ case 0:
+ break;
+ default:
+@@ -299,6 +305,13 @@
+
+ if (opt_format != 2)
+ {
++ /* struct cache_file_new is 64-bit aligned on some arches while
++ only 32-bit aligned on other arches. Duplicate last old
++ cache entry so that new cache in ld.so.cache can be used by
++ both. */
++ if (opt_format != 0)
++ cache_entry_old_count = (cache_entry_old_count + 1) & ~1;
++
+ /* And the list of all entries in the old format. */
+ file_entries_size = sizeof (struct cache_file)
+ + cache_entry_old_count * sizeof (struct file_entry);
+@@ -345,7 +358,7 @@
+ entry = entry->next, ++idx_new)
+ {
+ /* First the library. */
+- if (opt_format != 2)
++ if (opt_format != 2 && entry->hwcap == 0)
+ {
+ file_entries->libs[idx_old].flags = entry->flags;
+ /* XXX: Actually we can optimize here and remove duplicates. */
+@@ -368,7 +381,7 @@
+ ++str;
+ str_offset += len + 1;
+ /* Then the path. */
+- if (opt_format != 2)
++ if (opt_format != 2 && entry->hwcap == 0)
+ file_entries->libs[idx_old].value = str_offset + pad;
+ if (opt_format != 0)
+ file_entries_new->libs[idx_new].value = str_offset;
+@@ -382,6 +395,11 @@
+ ++idx_old;
+ }
+
++ /* Duplicate last old cache entry if needed. */
++ if (opt_format != 2
++ && idx_old < cache_entry_old_count)
++ file_entries->libs[idx_old] = file_entries->libs[idx_old - 1];
++
+ /* Write out the cache. */
+
+ /* Write cache first to a temporary file and rename it later. */
+@@ -458,7 +476,7 @@
+ {
+ struct cache_entry *new_entry, *ptr, *prev;
+ char *full_path;
+- int len, i;
++ size_t len, i;
+
+ new_entry = (struct cache_entry *) xmalloc (sizeof (struct cache_entry));
+
+--- glibc-2.3.2/elf/dl-addr.c 2002-09-27 23:35:22.000000000 -0400
++++ glibc-2.3.2/elf/dl-addr.c 2003-03-15 15:02:08.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Locate the shared object symbol nearest a given address.
+- Copyright (C) 1996-2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,7 +24,8 @@
+
+ int
+ internal_function
+-_dl_addr (const void *address, Dl_info *info)
++_dl_addr (const void *address, Dl_info *info,
++ struct link_map **mapp, const ElfW(Sym) **symbolp)
+ {
+ const ElfW(Addr) addr = DL_LOOKUP_ADDRESS (address);
+ struct link_map *l, *match;
+@@ -93,6 +94,11 @@
+ || ELFW(ST_BIND) (symtab->st_info) == STB_WEAK))
+ matchsym = (ElfW(Sym) *) symtab;
+
++ if (mapp)
++ *mapp = match;
++ if (symbolp)
++ *symbolp = matchsym;
++
+ if (matchsym)
+ {
+ /* We found a symbol close by. Fill in its name and exact address. */
+--- glibc-2.3.2/elf/dl-close.c 2003-01-27 15:44:03.000000000 -0500
++++ glibc-2.3.2/elf/dl-close.c 2003-04-28 08:20:35.000000000 -0400
+@@ -80,7 +80,7 @@
+ return true;
+ }
+
+- while (idx - disp > disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0)
++ while (idx - disp > (disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0))
+ {
+ --idx;
+
+@@ -321,8 +321,9 @@
+ _dl_debug_state ();
+
+ #ifdef USE_TLS
+- size_t tls_free_start, tls_free_end;
+- tls_free_start = tls_free_end = GL(dl_tls_static_used);
++ size_t tls_free_start;
++ size_t tls_free_end;
++ tls_free_start = tls_free_end = NO_TLS_OFFSET;
+ #endif
+
+ /* Check each element of the search list to see if all references to
+@@ -365,15 +366,56 @@
+ /* All dynamically loaded modules with TLS are unloaded. */
+ GL(dl_tls_max_dtv_idx) = GL(dl_tls_static_nelem);
+
+- if (imap->l_tls_offset != 0)
++ if (imap->l_tls_offset != NO_TLS_OFFSET)
+ {
+ /* Collect a contiguous chunk built from the objects in
+ this search list, going in either direction. When the
+ whole chunk is at the end of the used area then we can
+ reclaim it. */
+- if (imap->l_tls_offset == tls_free_end)
++# if TLS_TCB_AT_TP
++ if (tls_free_start == NO_TLS_OFFSET
++ || (size_t) imap->l_tls_offset == tls_free_start)
++ {
++ /* Extend the contiguous chunk being reclaimed. */
++ tls_free_start
++ = imap->l_tls_offset - imap->l_tls_blocksize;
++
++ if (tls_free_end == NO_TLS_OFFSET)
++ tls_free_end = imap->l_tls_offset;
++ }
++ else if (imap->l_tls_offset - imap->l_tls_blocksize
++ == tls_free_end)
++ /* Extend the chunk backwards. */
++ tls_free_end = imap->l_tls_offset;
++ else
++ {
++ /* This isn't contiguous with the last chunk freed.
++ One of them will be leaked unless we can free
++ one block right away. */
++ if (tls_free_end == GL(dl_tls_static_used))
++ {
++ GL(dl_tls_static_used) = tls_free_start;
++ tls_free_end = imap->l_tls_offset;
++ tls_free_start
++ = tls_free_end - imap->l_tls_blocksize;
++ }
++ else if ((size_t) imap->l_tls_offset
++ == GL(dl_tls_static_used))
++ GL(dl_tls_static_used)
++ = imap->l_tls_offset - imap->l_tls_blocksize;
++ else if (tls_free_end < (size_t) imap->l_tls_offset)
++ {
++ /* We pick the later block. It has a chance to
++ be freed. */
++ tls_free_end = imap->l_tls_offset;
++ tls_free_start
++ = tls_free_end - imap->l_tls_blocksize;
++ }
++ }
++# elif TLS_DTV_AT_TP
++ if ((size_t) imap->l_tls_offset == tls_free_end)
+ /* Extend the contiguous chunk being reclaimed. */
+- tls_free_end += imap->l_tls_blocksize;
++ tls_free_end -= imap->l_tls_blocksize;
+ else if (imap->l_tls_offset + imap->l_tls_blocksize
+ == tls_free_start)
+ /* Extend the chunk backwards. */
+@@ -387,6 +429,9 @@
+ tls_free_start = imap->l_tls_offset;
+ tls_free_end = tls_free_start + imap->l_tls_blocksize;
+ }
++# else
++# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
++# endif
+ }
+ }
+ #endif
+--- glibc-2.3.2/elf/dl-conflict.c 2002-10-17 13:05:51.000000000 -0400
++++ glibc-2.3.2/elf/dl-conflict.c 2003-04-12 11:39:42.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Resolve conflicts against already prelinked libraries.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
+
+@@ -28,11 +28,11 @@
+ #include <sys/types.h>
+ #include "dynamic-link.h"
+
+-
+ void
+ _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict,
+ ElfW(Rela) *conflictend)
+ {
++#if ! ELF_MACHINE_NO_RELA
+ if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0))
+ _dl_printf ("\nconflict processing: %s\n",
+ l->l_name[0] ? l->l_name : rtld_progname);
+@@ -64,4 +64,5 @@
+ for (; conflict < conflictend; ++conflict)
+ elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset);
+ }
++#endif
+ }
+--- glibc-2.3.2/elf/dl-iteratephdr.c 2002-12-06 01:42:30.000000000 -0500
++++ glibc-2.3.2/elf/dl-iteratephdr.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Get loaded objects program headers.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
+
+@@ -23,6 +23,12 @@
+ #include <stddef.h>
+ #include <bits/libc-lock.h>
+
++static void
++cancel_handler (void *arg __attribute__((unused)))
++{
++ __rtld_lock_unlock_recursive (GL(dl_load_lock));
++}
++
+ int
+ __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
+ size_t size, void *data), void *data)
+@@ -33,12 +39,10 @@
+
+ /* Make sure we are alone. */
+ __rtld_lock_lock_recursive (GL(dl_load_lock));
++ __libc_cleanup_push (cancel_handler, 0);
+
+ for (l = GL(dl_loaded); l != NULL; l = l->l_next)
+ {
+- /* Skip the dynamic linker. */
+- if (l->l_phdr == NULL)
+- continue;
+ info.dlpi_addr = l->l_addr;
+ info.dlpi_name = l->l_name;
+ info.dlpi_phdr = l->l_phdr;
+@@ -49,6 +53,7 @@
+ }
+
+ /* Release the lock. */
++ __libc_cleanup_pop (0);
+ __rtld_lock_unlock_recursive (GL(dl_load_lock));
+
+ return ret;
+--- glibc-2.3.2/elf/dl-libc.c 2002-11-19 03:38:32.000000000 -0500
++++ glibc-2.3.2/elf/dl-libc.c 2003-08-21 08:36:59.000000000 -0400
+@@ -96,6 +96,50 @@
+ _dl_close ((struct link_map *) ptr);
+ }
+
++/* This code is to support __libc_dlopen from __libc_dlopen'ed shared
++ libraries. We need to ensure the statically linked __libc_dlopen
++ etc. functions are used instead of the dynamically loaded. */
++struct dl_open_hook
++{
++ void *(*dlopen_mode) (const char *name, int mode);
++ void *(*dlsym) (void *map, const char *name);
++ int (*dlclose) (void *map);
++};
++
++#ifdef SHARED
++extern struct dl_open_hook *_dl_open_hook;
++libc_hidden_proto (_dl_open_hook);
++struct dl_open_hook *_dl_open_hook __attribute__((nocommon));
++libc_hidden_data_def (_dl_open_hook);
++#else
++static void
++do_dlsym_private (void *ptr)
++{
++ lookup_t l;
++ struct r_found_version vers;
++ vers.name = "GLIBC_PRIVATE";
++ vers.hidden = 1;
++ /* vers.hash = _dl_elf_hash (version); */
++ vers.hash = 0x0963cf85;
++ /* FIXME: Shouldn't we use libc.so.6* here? */
++ vers.filename = NULL;
++
++ struct do_dlsym_args *args = (struct do_dlsym_args *) ptr;
++ args->ref = NULL;
++ l = _dl_lookup_versioned_symbol (args->name, args->map,
++ &args->ref, args->map->l_scope,
++ &vers, 0, 0);
++ args->loadbase = l;
++}
++
++static struct dl_open_hook _dl_open_hook =
++ {
++ .dlopen_mode = __libc_dlopen_mode,
++ .dlsym = __libc_dlsym,
++ .dlclose = __libc_dlclose
++ };
++#endif
++
+ /* ... and these functions call dlerror_run. */
+
+ void *
+@@ -105,8 +149,31 @@
+ args.name = name;
+ args.mode = mode;
+
++#ifdef SHARED
++ if (__builtin_expect (_dl_open_hook != NULL, 0))
++ return _dl_open_hook->dlopen_mode (name, mode);
+ return (dlerror_run (do_dlopen, &args) ? NULL : (void *) args.map);
++#else
++ if (dlerror_run (do_dlopen, &args))
++ return NULL;
++
++ struct do_dlsym_args sargs;
++ sargs.map = args.map;
++ sargs.name = "_dl_open_hook";
++
++ if (! dlerror_run (do_dlsym_private, &sargs))
++ {
++ struct dl_open_hook **hook
++ = (struct dl_open_hook **)
++ (DL_SYMBOL_ADDRESS (sargs.loadbase, sargs.ref));
++ if (hook != NULL)
++ *hook = &_dl_open_hook;
++ }
++
++ return (void *) args.map;
++#endif
+ }
++libc_hidden_def (__libc_dlopen_mode)
+
+ void *
+ __libc_dlsym (void *map, const char *name)
+@@ -115,15 +182,25 @@
+ args.map = map;
+ args.name = name;
+
++#ifdef SHARED
++ if (__builtin_expect (_dl_open_hook != NULL, 0))
++ return _dl_open_hook->dlsym (map, name);
++#endif
+ return (dlerror_run (do_dlsym, &args) ? NULL
+ : (void *) (DL_SYMBOL_ADDRESS (args.loadbase, args.ref)));
+ }
++libc_hidden_def (__libc_dlsym)
+
+ int
+ __libc_dlclose (void *map)
+ {
++#ifdef SHARED
++ if (__builtin_expect (_dl_open_hook != NULL, 0))
++ return _dl_open_hook->dlclose (map);
++#endif
+ return dlerror_run (do_dlclose, map);
+ }
++libc_hidden_def (__libc_dlclose)
+
+
+ libc_freeres_fn (free_mem)
+--- glibc-2.3.2/elf/dl-load.c 2003-01-16 13:14:41.000000000 -0500
++++ glibc-2.3.2/elf/dl-load.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Map in a shared object's segments from the file.
+- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,6 +26,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <ldsodefs.h>
++#include <bits/wordsize.h>
+ #include <sys/mman.h>
+ #include <sys/param.h>
+ #include <sys/stat.h>
+@@ -97,19 +98,26 @@
+ /* Type for the buffer we put the ELF header and hopefully the program
+ header. This buffer does not really have to be too large. In most
+ cases the program header follows the ELF header directly. If this
+- is not the case all bets are off and we can make the header arbitrarily
+- large and still won't get it read. This means the only question is
+- how large are the ELF and program header combined. The ELF header
+- in 64-bit files is 56 bytes long. Each program header entry is again
+- 56 bytes long. I.e., even with a file which has 17 program header
+- entries we only have to read 1kB. And 17 program header entries is
+- plenty, normal files have < 10. If this heuristic should really fail
+- for some file the code in `_dl_map_object_from_fd' knows how to
+- recover. */
++ is not the case all bets are off and we can make the header
++ arbitrarily large and still won't get it read. This means the only
++ question is how large are the ELF and program header combined. The
++ ELF header 32-bit files is 52 bytes long and in 64-bit files is 64
++ bytes long. Each program header entry is again 32 and 56 bytes
++ long respectively. I.e., even with a file which has 7 program
++ header entries we only have to read 512B. Add to this a bit of
++ margin for program notes and reading 512B and 640B for 32-bit and
++ 64-bit files respecitvely is enough. If this heuristic should
++ really fail for some file the code in `_dl_map_object_from_fd'
++ knows how to recover. */
+ struct filebuf
+ {
+ ssize_t len;
+- char buf[1024] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
++#if __WORDSIZE == 32
++# define FILEBUF_SIZE 512
++#else
++# define FILEBUF_SIZE 640
++#endif
++ char buf[FILEBUF_SIZE] __attribute__ ((aligned (__alignof (ElfW(Ehdr)))));
+ };
+
+ /* This is the decomposed LD_LIBRARY_PATH search path. */
+@@ -353,7 +361,7 @@
+
+ static size_t max_dirnamelen;
+
+-static inline struct r_search_path_elem **
++static struct r_search_path_elem **
+ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
+ int check_trusted, const char *what, const char *where)
+ {
+@@ -568,6 +576,34 @@
+ sps->malloced = 1;
+ }
+
++/* Make sure cached path information is stored in *SP
++ and return true if there are any paths to search there. */
++static bool
++cache_rpath (struct link_map *l,
++ struct r_search_path_struct *sp,
++ int tag,
++ const char *what)
++{
++ if (sp->dirs == (void *) -1)
++ return false;
++
++ if (sp->dirs != NULL)
++ return true;
++
++ if (l->l_info[tag] == NULL)
++ {
++ /* There is no path. */
++ sp->dirs = (void *) -1;
++ return false;
++ }
++
++ /* Make sure the cache information is available. */
++ decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB])
++ + l->l_info[tag]->d_un.d_val),
++ l, what);
++ return true;
++}
++
+
+ void
+ internal_function
+@@ -877,6 +913,7 @@
+ int prot;
+ } loadcmds[l->l_phnum], *c;
+ size_t nloadcmds = 0;
++ bool has_holes = false;
+
+ /* The struct is initialized to zero so this is not necessary:
+ l->l_ld = 0;
+@@ -922,6 +959,11 @@
+ c->allocend = ph->p_vaddr + ph->p_memsz;
+ c->mapoff = ph->p_offset & ~(ph->p_align - 1);
+
++ /* Determine whether there is a gap between the last segment
++ and this one. */
++ if (nloadcmds > 1 && c[-1].mapend != c->mapstart)
++ has_holes = true;
++
+ /* Optimize a common case. */
+ #if (PF_R | PF_W | PF_X) == 7 && (PROT_READ | PROT_WRITE | PROT_EXEC) == 7
+ c->prot = (PF_TO_PROT
+@@ -945,6 +987,10 @@
+
+ l->l_tls_blocksize = ph->p_memsz;
+ l->l_tls_align = ph->p_align;
++ if (ph->p_align == 0)
++ l->l_tls_firstbyte_offset = 0;
++ else
++ l->l_tls_firstbyte_offset = ph->p_vaddr & (ph->p_align - 1);
+ l->l_tls_initimage_size = ph->p_filesz;
+ /* Since we don't know the load address yet only store the
+ offset. We will adjust it later. */
+@@ -1014,6 +1060,15 @@
+ break;
+ }
+
++ if (__builtin_expect (nloadcmds == 0, 0))
++ {
++ /* This only happens for a bogus object that will be caught with
++ another error below. But we don't want to go through the
++ calculations below using NLOADCMDS - 1. */
++ errstring = N_("object file has no loadable segments");
++ goto call_lose;
++ }
++
+ /* Now process the load commands and map segments into memory. */
+ c = loadcmds;
+
+@@ -1051,14 +1106,15 @@
+ l->l_map_end = l->l_map_start + maplength;
+ l->l_addr = l->l_map_start - c->mapstart;
+
+- /* Change protection on the excess portion to disallow all access;
+- the portions we do not remap later will be inaccessible as if
+- unallocated. Then jump into the normal segment-mapping loop to
+- handle the portion of the segment past the end of the file
+- mapping. */
+- __mprotect ((caddr_t) (l->l_addr + c->mapend),
+- loadcmds[nloadcmds - 1].allocend - c->mapend,
+- PROT_NONE);
++ if (has_holes)
++ /* Change protection on the excess portion to disallow all access;
++ the portions we do not remap later will be inaccessible as if
++ unallocated. Then jump into the normal segment-mapping loop to
++ handle the portion of the segment past the end of the file
++ mapping. */
++ __mprotect ((caddr_t) (l->l_addr + c->mapend),
++ loadcmds[nloadcmds - 1].allocend - c->mapend,
++ PROT_NONE);
+
+ goto postmap;
+ }
+@@ -1118,23 +1174,18 @@
+ if (zeropage > zero)
+ {
+ /* Zero the final part of the last page of the segment. */
+- if ((c->prot & PROT_WRITE) == 0)
++ if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0))
+ {
+ /* Dag nab it. */
+- if (__builtin_expect (__mprotect ((caddr_t)
+- (zero
+- & ~(GL(dl_pagesize)
+- - 1)),
+- GL(dl_pagesize),
+- c->prot|PROT_WRITE) < 0,
+- 0))
++ if (__mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)),
++ GL(dl_pagesize), c->prot|PROT_WRITE) < 0)
+ {
+ errstring = N_("cannot change memory protections");
+ goto call_lose_errno;
+ }
+ }
+ memset ((void *) zero, '\0', zeropage - zero);
+- if ((c->prot & PROT_WRITE) == 0)
++ if (__builtin_expect ((c->prot & PROT_WRITE) == 0, 0))
+ __mprotect ((caddr_t) (zero & ~(GL(dl_pagesize) - 1)),
+ GL(dl_pagesize), c->prot);
+ }
+@@ -1221,7 +1272,7 @@
+ (unsigned long int) l->l_phdr,
+ (int) sizeof (void *) * 2, l->l_phnum);
+
+- elf_get_dynamic_info (l);
++ elf_get_dynamic_info (l, NULL);
+
+ /* Make sure we are not dlopen'ing an object
+ that has the DF_1_NOOPEN flag set. */
+@@ -1728,29 +1779,9 @@
+ /* First try the DT_RPATH of the dependent object that caused NAME
+ to be loaded. Then that object's dependent, and on up. */
+ for (l = loader; fd == -1 && l; l = l->l_loader)
+- {
+- if (l->l_rpath_dirs.dirs == NULL)
+- {
+- if (l->l_info[DT_RPATH] == NULL)
+- {
+- /* There is no path. */
+- l->l_rpath_dirs.dirs = (void *) -1;
+- continue;
+- }
+- else
+- {
+- /* Make sure the cache information is available. */
+- size_t ptrval = (D_PTR (l, l_info[DT_STRTAB])
+- + l->l_info[DT_RPATH]->d_un.d_val);
+- decompose_rpath (&l->l_rpath_dirs,
+- (const char *) ptrval, l, "RPATH");
+- }
+- }
+-
+- if (l->l_rpath_dirs.dirs != (void *) -1)
+- fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
+- &realname, &fb);
+- }
++ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
++ fd = open_path (name, namelen, preloaded, &l->l_rpath_dirs,
++ &realname, &fb);
+
+ /* If dynamically linked, try the DT_RPATH of the executable
+ itself. */
+@@ -1766,37 +1797,12 @@
+ fd = open_path (name, namelen, preloaded, &env_path_list,
+ &realname, &fb);
+
+- /* Look at the RUNPATH information for this binary.
+-
+- Note that this is no real loop. 'while' is used only to enable
+- us to use 'break' instead of a 'goto' to jump to the end. The
+- loop is always left after the first round. */
+- while (fd == -1 && loader != NULL
+- && loader->l_runpath_dirs.dirs != (void *) -1)
+- {
+- if (loader->l_runpath_dirs.dirs == NULL)
+- {
+- if (loader->l_info[DT_RUNPATH] == NULL)
+- {
+- /* No RUNPATH. */
+- loader->l_runpath_dirs.dirs = (void *) -1;
+- break;
+- }
+- else
+- {
+- /* Make sure the cache information is available. */
+- size_t ptrval = (D_PTR (loader, l_info[DT_STRTAB])
+- + loader->l_info[DT_RUNPATH]->d_un.d_val);
+- decompose_rpath (&loader->l_runpath_dirs,
+- (const char *) ptrval, loader, "RUNPATH");
+- }
+- }
+-
+- if (loader->l_runpath_dirs.dirs != (void *) -1)
+- fd = open_path (name, namelen, preloaded,
+- &loader->l_runpath_dirs, &realname, &fb);
+- break;
+- }
++ /* Look at the RUNPATH information for this binary. */
++ if (fd == -1 && loader != NULL
++ && cache_rpath (loader, &loader->l_runpath_dirs,
++ DT_RUNPATH, "RUNPATH"))
++ fd = open_path (name, namelen, preloaded,
++ &loader->l_runpath_dirs, &realname, &fb);
+
+ if (fd == -1
+ && (__builtin_expect (! preloaded, 1)
+@@ -1920,3 +1926,86 @@
+ return _dl_map_object_from_fd (name, fd, &fb, realname, loader, type, mode);
+ }
+ INTDEF (_dl_map_object)
++
++void
++internal_function
++_dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting)
++{
++ if (counting)
++ {
++ si->dls_cnt = 0;
++ si->dls_size = 0;
++ }
++
++ unsigned int idx = 0;
++ char *allocptr = (char *) &si->dls_serpath[si->dls_cnt];
++ void add_path (const struct r_search_path_struct *sps, unsigned int flags)
++# define add_path(sps, flags) add_path(sps, 0) /* XXX */
++ {
++ if (sps->dirs != (void *) -1)
++ {
++ struct r_search_path_elem **dirs = sps->dirs;
++ do
++ {
++ const struct r_search_path_elem *const r = *dirs++;
++ if (counting)
++ {
++ si->dls_cnt++;
++ si->dls_size += r->dirnamelen;
++ }
++ else
++ {
++ Dl_serpath *const sp = &si->dls_serpath[idx++];
++ sp->dls_name = allocptr;
++ allocptr = __mempcpy (allocptr,
++ r->dirname, r->dirnamelen - 1);
++ *allocptr++ = '\0';
++ sp->dls_flags = flags;
++ }
++ }
++ while (*dirs != NULL);
++ }
++ }
++
++ /* When the object has the RUNPATH information we don't use any RPATHs. */
++ if (loader->l_info[DT_RUNPATH] == NULL)
++ {
++ /* First try the DT_RPATH of the dependent object that caused NAME
++ to be loaded. Then that object's dependent, and on up. */
++
++ struct link_map *l = loader;
++ do
++ {
++ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
++ add_path (&l->l_rpath_dirs, XXX_RPATH);
++ l = l->l_loader;
++ }
++ while (l != NULL);
++
++ /* If dynamically linked, try the DT_RPATH of the executable itself. */
++ l = GL(dl_loaded);
++ if (l != NULL && l->l_type != lt_loaded && l != loader)
++ if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
++ add_path (&l->l_rpath_dirs, XXX_RPATH);
++ }
++
++ /* Try the LD_LIBRARY_PATH environment variable. */
++ add_path (&env_path_list, XXX_ENV);
++
++ /* Look at the RUNPATH information for this binary. */
++ if (cache_rpath (loader, &loader->l_runpath_dirs, DT_RUNPATH, "RUNPATH"))
++ add_path (&loader->l_runpath_dirs, XXX_RUNPATH);
++
++ /* XXX
++ Here is where ld.so.cache gets checked, but we don't have
++ a way to indicate that in the results for Dl_serinfo. */
++
++ /* Finally, try the default path. */
++ if (!(loader->l_flags_1 & DF_1_NODEFLIB))
++ add_path (&rtld_search_dirs, XXX_default);
++
++ if (counting)
++ /* Count the struct size before the string area, which we didn't
++ know before we completed dls_cnt. */
++ si->dls_size += (char *) &si->dls_serpath[si->dls_cnt] - (char *) si;
++}
+--- glibc-2.3.2/elf/dl-lookup.c 2003-01-11 04:51:49.000000000 -0500
++++ glibc-2.3.2/elf/dl-lookup.c 2003-08-21 08:36:59.000000000 -0400
+@@ -273,17 +273,30 @@
+ {
+ /* It is very tricky. We need to figure out what value to
+ return for the protected symbol. */
+- struct sym_val protected_value = { NULL, NULL };
+-
+- for (scope = symbol_scope; *scope; ++scope)
+- if (_dl_do_lookup (undef_name, hash, *ref, &protected_value, *scope,
+- 0, flags, NULL, ELF_RTYPE_CLASS_PLT))
+- break;
+-
+- if (protected_value.s != NULL && protected_value.m != undef_map)
++ if (type_class == ELF_RTYPE_CLASS_PLT)
+ {
+- current_value.s = *ref;
+- current_value.m = undef_map;
++ if (current_value.s != NULL && current_value.m != undef_map)
++ {
++ current_value.s = *ref;
++ current_value.m = undef_map;
++ }
++ }
++ else
++ {
++ struct sym_val protected_value = { NULL, NULL };
++
++ for (scope = symbol_scope; *scope; ++scope)
++ if (_dl_do_lookup (undef_name, hash, *ref,
++ &protected_value, *scope, 0, flags,
++ NULL, ELF_RTYPE_CLASS_PLT))
++ break;
++
++ if (protected_value.s != NULL
++ && protected_value.m != undef_map)
++ {
++ current_value.s = *ref;
++ current_value.m = undef_map;
++ }
+ }
+ }
+
+@@ -465,18 +478,31 @@
+ {
+ /* It is very tricky. We need to figure out what value to
+ return for the protected symbol. */
+- struct sym_val protected_value = { NULL, NULL };
+-
+- for (scope = symbol_scope; *scope; ++scope)
+- if (_dl_do_lookup_versioned (undef_name, hash, *ref, &protected_value,
+- *scope, 0, version, NULL,
+- ELF_RTYPE_CLASS_PLT))
+- break;
+-
+- if (protected_value.s != NULL && protected_value.m != undef_map)
++ if (type_class == ELF_RTYPE_CLASS_PLT)
+ {
+- current_value.s = *ref;
+- current_value.m = undef_map;
++ if (current_value.s != NULL && current_value.m != undef_map)
++ {
++ current_value.s = *ref;
++ current_value.m = undef_map;
++ }
++ }
++ else
++ {
++ struct sym_val protected_value = { NULL, NULL };
++
++ for (scope = symbol_scope; *scope; ++scope)
++ if (_dl_do_lookup_versioned (undef_name, hash, *ref,
++ &protected_value,
++ *scope, 0, version, NULL,
++ ELF_RTYPE_CLASS_PLT))
++ break;
++
++ if (protected_value.s != NULL
++ && protected_value.m != undef_map)
++ {
++ current_value.s = *ref;
++ current_value.m = undef_map;
++ }
+ }
+ }
+
+@@ -678,20 +704,21 @@
+ {
+ _dl_printf ("%s 0x%0*Zx 0x%0*Zx -> 0x%0*Zx 0x%0*Zx ",
+ conflict ? "conflict" : "lookup",
+- (int) sizeof (ElfW(Addr)) * 2, undef_map->l_map_start,
+ (int) sizeof (ElfW(Addr)) * 2,
+- ((ElfW(Addr)) *ref) - undef_map->l_map_start,
++ (size_t) undef_map->l_map_start,
++ (int) sizeof (ElfW(Addr)) * 2,
++ (size_t) (((ElfW(Addr)) *ref) - undef_map->l_map_start),
+ (int) sizeof (ElfW(Addr)) * 2,
+- (ElfW(Addr)) (value->s ? value->m->l_map_start : 0),
++ (size_t) (value->s ? value->m->l_map_start : 0),
+ (int) sizeof (ElfW(Addr)) * 2,
+- (ElfW(Addr)) (value->s ? value->s->st_value : 0));
++ (size_t) (value->s ? value->s->st_value : 0));
+
+ if (conflict)
+ _dl_printf ("x 0x%0*Zx 0x%0*Zx ",
+ (int) sizeof (ElfW(Addr)) * 2,
+- (ElfW(Addr)) (val.s ? val.m->l_map_start : 0),
++ (size_t) (val.s ? val.m->l_map_start : 0),
+ (int) sizeof (ElfW(Addr)) * 2,
+- (ElfW(Addr)) (val.s ? val.s->st_value : 0));
++ (size_t) (val.s ? val.s->st_value : 0));
+
+ _dl_printf ("/%x %s\n", type_class, undef_name);
+ }
+--- glibc-2.3.2/elf/dl-object.c 2003-01-10 03:23:58.000000000 -0500
++++ glibc-2.3.2/elf/dl-object.c 2003-04-28 08:20:35.000000000 -0400
+@@ -53,6 +53,10 @@
+ new->l_name = realname;
+ new->l_type = type;
+ new->l_loader = loader;
++#if defined USE_TLS && NO_TLS_OFFSET != 0
++ new->l_tls_offset = NO_TLS_OFFSET;
++#endif
++
+ /* new->l_global = 0; We use calloc therefore not necessary. */
+
+ /* Use the 'l_scope_mem' array by default for the the 'l_scope'
+--- glibc-2.3.2/elf/dl-open.c 2003-01-27 19:47:52.000000000 -0500
++++ glibc-2.3.2/elf/dl-open.c 2003-08-21 08:36:59.000000000 -0400
+@@ -303,6 +303,16 @@
+ }
+
+ #ifdef USE_TLS
++ /* Do static TLS initialization now if it has been delayed because
++ the TLS template might not be fully relocated at _dl_allocate_static_tls
++ time. */
++ for (l = new; l; l = l->l_next)
++ if (l->l_need_tls_init)
++ {
++ l->l_need_tls_init = 0;
++ GL(dl_init_static_tls) (l);
++ }
++
+ /* We normally don't bump the TLS generation counter. There must be
+ actually a need to do this. */
+ any_tls = false;
+--- glibc-2.3.2/elf/dl-profile.c 2002-08-02 17:46:57.000000000 -0400
++++ glibc-2.3.2/elf/dl-profile.c 2003-04-12 11:39:42.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Profiling of shared libraries.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+ Based on the BSD mcount implementation.
+@@ -34,7 +34,7 @@
+ #include <sys/mman.h>
+ #include <sys/param.h>
+ #include <sys/stat.h>
+-#include <atomicity.h>
++#include <atomic.h>
+
+ /* The LD_PROFILE feature has to be implemented different to the
+ normal profiling using the gmon/ functions. The problem is that an
+@@ -516,24 +516,24 @@
+ size_t newfromidx;
+ to_index = (data[narcs].self_pc
+ / (hashfraction * sizeof (*tos)));
+- newfromidx = exchange_and_add (&fromidx, 1) + 1;
++ newfromidx = atomic_exchange_and_add (&fromidx, 1) + 1;
+ froms[newfromidx].here = &data[narcs];
+ froms[newfromidx].link = tos[to_index];
+ tos[to_index] = newfromidx;
+- atomic_add (&narcs, 1);
++ atomic_increment (&narcs);
+ }
+
+ /* If we still have no entry stop searching and insert. */
+ if (*topcindex == 0)
+ {
+- uint_fast32_t newarc = exchange_and_add (narcsp, 1);
++ uint_fast32_t newarc = atomic_exchange_and_add (narcsp, 1);
+
+ /* In rare cases it could happen that all entries in FROMS are
+ occupied. So we cannot count this anymore. */
+ if (newarc >= fromlimit)
+ goto done;
+
+- *topcindex = exchange_and_add (&fromidx, 1) + 1;
++ *topcindex = atomic_exchange_and_add (&fromidx, 1) + 1;
+ fromp = &froms[*topcindex];
+
+ fromp->here = &data[newarc];
+@@ -541,7 +541,7 @@
+ data[newarc].self_pc = selfpc;
+ data[newarc].count = 0;
+ fromp->link = 0;
+- atomic_add (&narcs, 1);
++ atomic_increment (&narcs);
+
+ break;
+ }
+@@ -554,7 +554,7 @@
+ }
+
+ /* Increment the counter. */
+- atomic_add (&fromp->here->count, 1);
++ atomic_increment (&fromp->here->count);
+
+ done:
+ ;
+--- glibc-2.3.2/elf/dl-reloc.c 2003-01-30 12:35:50.000000000 -0500
++++ glibc-2.3.2/elf/dl-reloc.c 2003-08-21 08:36:59.000000000 -0400
+@@ -40,27 +40,83 @@
+ dynamically loaded. This can only work if there is enough surplus in
+ the static TLS area already allocated for each running thread. If this
+ object's TLS segment is too big to fit, we fail. If it fits,
+- we set MAP->l_tls_offset and return. */
+-static void __attribute_noinline__
+-allocate_static_tls (struct link_map *map)
++ we set MAP->l_tls_offset and return.
++ This function intentionally does not return any value but signals error
++ directly, as static TLS should be rare and code handling it should
++ not be inlined as much as possible. */
++void
++internal_function __attribute_noinline__
++_dl_allocate_static_tls (struct link_map *map)
+ {
+- size_t offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
+- if (offset + map->l_tls_blocksize
++ size_t offset;
++ size_t used;
++ size_t check;
++ size_t freebytes;
++ size_t n;
++ size_t blsize;
++
++ /* If the alignment requirements are too high fail. */
++ if (map->l_tls_align > GL(dl_tls_static_align))
++ {
++ fail:
++ INTUSE(_dl_signal_error) (0, map->l_name, NULL, N_("\
++cannot allocate memory in static TLS block"));
++ }
++
+ # if TLS_TCB_AT_TP
+- + TLS_TCB_SIZE
++ freebytes = GL(dl_tls_static_size) - GL(dl_tls_static_used) - TLS_TCB_SIZE;
++
++ blsize = map->l_tls_blocksize + map->l_tls_firstbyte_offset;
++ if (freebytes < blsize)
++ goto fail;
++
++ n = (freebytes - blsize) / map->l_tls_align;
++
++ offset = GL(dl_tls_static_used) + (freebytes - n * map->l_tls_align
++ - map->l_tls_firstbyte_offset);
++
++ map->l_tls_offset = GL(dl_tls_static_used) = offset;
+ # elif TLS_DTV_AT_TP
++ offset = roundup (GL(dl_tls_static_used), map->l_tls_align);
++ used = offset + map->l_tls_blocksize;
++ check = used;
+ /* dl_tls_static_used includes the TCB at the beginning. */
++
++ if (check > GL(dl_tls_static_size))
++ goto fail;
++
++ map->l_tls_offset = offset;
++ GL(dl_tls_static_used) = used;
+ # else
+ # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
+ # endif
+- > GL(dl_tls_static_size))
+- {
+- const char *errstring = N_("\
+-shared object cannot be dlopen()ed: static TLS memory too small");
+- INTUSE(_dl_signal_error) (0, (map)->l_name, NULL, errstring);
+- }
+- map->l_tls_offset = offset;
+- GL(dl_tls_static_used) = offset + map->l_tls_blocksize;
++
++ if (map->l_relocated)
++ GL(dl_init_static_tls) (map);
++ else
++ map->l_need_tls_init = 1;
++}
++
++/* Initialize static TLS area and DTV for current (only) thread.
++ libpthread implementations should provide their own hook
++ to handle all threads. */
++void
++_dl_nothread_init_static_tls (struct link_map *map)
++{
++# if TLS_TCB_AT_TP
++ void *dest = (char *) THREAD_SELF - map->l_tls_offset;
++# elif TLS_DTV_AT_TP
++ void *dest = (char *) THREAD_SELF + map->l_tls_offset + TLS_PRE_TCB_SIZE;
++# else
++# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
++# endif
++
++ /* Fill in the DTV slot so that a later LD/GD access will find it. */
++ THREAD_DTV ()[map->l_tls_modid].pointer = dest;
++
++ /* Initialize the memory. */
++ memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
++ '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
+ }
+ #endif
+
+@@ -200,8 +256,8 @@
+ intended to produce. */
+ #define CHECK_STATIC_TLS(map, sym_map) \
+ do { \
+- if (__builtin_expect ((sym_map)->l_tls_offset == 0, 0)) \
+- allocate_static_tls (sym_map); \
++ if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
++ _dl_allocate_static_tls (sym_map); \
+ } while (0)
+
+ #include "dynamic-link.h"
+--- glibc-2.3.2/elf/dl-support.c 2003-01-30 12:31:18.000000000 -0500
++++ glibc-2.3.2/elf/dl-support.c 2003-08-21 08:36:59.000000000 -0400
+@@ -98,6 +98,10 @@
+ hp_timing_t _dl_cpuclock_offset;
+ #endif
+
++#ifdef USE_TLS
++void (*_dl_init_static_tls) (struct link_map *) = &_dl_nothread_init_static_tls;
++#endif
++
+ /* This is zero at program start to signal that the global scope map is
+ allocated by rtld. Later it keeps the size of the map. It might be
+ reset if in _dl_close if the last global object is removed. */
+@@ -121,12 +125,15 @@
+
+ int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
+
+-struct ElfW(Phdr) *_dl_phdr;
++ElfW(Phdr) *_dl_phdr;
+ size_t _dl_phnum;
++unsigned long int _dl_hwcap __attribute__ ((nocommon));
+
+ #ifdef NEED_DL_SYSINFO
+ /* Needed for improved syscall handling on at least x86/Linux. */
+ uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT;
++/* Address of the ELF headers in the vsyscall page. */
++const ElfW(Ehdr) *_dl_sysinfo_dso;
+ #endif
+
+ /* During the program run we must not modify the global data of
+@@ -146,6 +153,10 @@
+ internal_function
+ _dl_aux_init (ElfW(auxv_t) *av)
+ {
++ int seen = 0;
++ uid_t uid = 0;
++ gid_t gid = 0;
++
+ for (; av->a_type != AT_NULL; ++av)
+ switch (av->a_type)
+ {
+@@ -161,12 +172,41 @@
+ case AT_PHNUM:
+ GL(dl_phnum) = av->a_un.a_val;
+ break;
++ case AT_HWCAP:
++ GL(dl_hwcap) = av->a_un.a_val;
++ break;
+ #ifdef NEED_DL_SYSINFO
+ case AT_SYSINFO:
+ GL(dl_sysinfo) = av->a_un.a_val;
+ break;
+ #endif
++ case AT_UID:
++ uid ^= av->a_un.a_val;
++ seen |= 1;
++ break;
++ case AT_EUID:
++ uid ^= av->a_un.a_val;
++ seen |= 2;
++ break;
++ case AT_GID:
++ gid ^= av->a_un.a_val;
++ seen |= 4;
++ break;
++ case AT_EGID:
++ gid ^= av->a_un.a_val;
++ seen |= 8;
++ break;
++ case AT_SECURE:
++ seen = -1;
++ __libc_enable_secure = av->a_un.a_val;
++ __libc_enable_secure_decided = 1;
++ break;
+ }
++ if (seen == 0xf)
++ {
++ __libc_enable_secure = uid != 0 || gid != 0;
++ __libc_enable_secure_decided = 1;
++ }
+ }
+ #endif
+
+--- glibc-2.3.2/elf/dl-version.c 2002-03-11 03:31:59.000000000 -0500
++++ glibc-2.3.2/elf/dl-version.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Handle symbol and library versioning.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -53,6 +53,7 @@
+
+
+ static inline struct link_map *
++__attribute ((always_inline))
+ find_needed (const char *name, struct link_map *map)
+ {
+ struct link_map *tmap;
+--- glibc-2.3.2/elf/do-lookup.h 2002-04-13 03:32:17.000000000 -0400
++++ glibc-2.3.2/elf/do-lookup.h 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Look up a symbol in the loaded objects.
+- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,7 +28,7 @@
+ /* Inner part of the lookup functions. We return a value > 0 if we
+ found the symbol, the value 0 if nothing is found and < 0 if
+ something bad happened. */
+-static inline int
++static int
+ FCT (const char *undef_name, unsigned long int hash, const ElfW(Sym) *ref,
+ struct sym_val *result, struct r_scope_elem *scope, size_t i, ARG,
+ struct link_map *skip, int type_class)
+--- glibc-2.3.2/elf/dynamic-link.h 2003-01-30 12:35:50.000000000 -0500
++++ glibc-2.3.2/elf/dynamic-link.h 2003-08-21 08:36:59.000000000 -0400
+@@ -21,20 +21,30 @@
+ #include <assert.h>
+
+ #ifdef RESOLVE
++/* We pass reloc_addr as a pointer to void, as opposed to a pointer to
++ ElfW(Addr), because not all architectures can assume that the
++ relocated address is properly aligned, whereas the compiler is
++ entitled to assume that a pointer to a type is properly aligned for
++ the type. Even if we cast the pointer back to some other type with
++ less strict alignment requirements, the compiler might still
++ remember that the pointer was originally more aligned, thereby
++ optimizing away alignment tests or using word instructions for
++ copying memory, breaking the very code written to handle the
++ unaligned cases. */
+ auto void __attribute__((always_inline))
+ elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
+ const ElfW(Sym) *sym, const struct r_found_version *version,
+- ElfW(Addr) *const reloc_addr);
++ void *const reloc_addr);
+ auto void __attribute__((always_inline))
+ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
+ const ElfW(Sym) *sym, const struct r_found_version *version,
+- ElfW(Addr) *const reloc_addr);
++ void *const reloc_addr);
+ auto void __attribute__((always_inline))
+ elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
+- ElfW(Addr) *const reloc_addr);
++ void *const reloc_addr);
+ auto void __attribute__((always_inline))
+ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
+- ElfW(Addr) *const reloc_addr);
++ void *const reloc_addr);
+ # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
+ auto void __attribute__((always_inline))
+ elf_machine_lazy_rel (struct link_map *map,
+@@ -56,7 +66,7 @@
+ /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */
+
+ static inline void __attribute__ ((unused, always_inline))
+-elf_get_dynamic_info (struct link_map *l)
++elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
+ {
+ ElfW(Dyn) *dyn = l->l_ld;
+ ElfW(Dyn) **info;
+@@ -88,32 +98,45 @@
+ + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;
+ ++dyn;
+ }
++
++#define DL_RO_DYN_TEMP_CNT 8
++
+ #ifndef DL_RO_DYN_SECTION
+ /* Don't adjust .dynamic unnecessarily. */
+ if (l->l_addr != 0)
+ {
+ ElfW(Addr) l_addr = l->l_addr;
++ int cnt = 0;
++
++# define ADJUST_DYN_INFO(tag) \
++ do \
++ if (info[tag] != NULL) \
++ { \
++ if (temp) \
++ { \
++ temp[cnt].d_tag = info[tag]->d_tag; \
++ temp[cnt].d_un.d_ptr = info[tag]->d_un.d_ptr + l_addr; \
++ info[tag] = temp + cnt++; \
++ } \
++ else \
++ info[tag]->d_un.d_ptr += l_addr; \
++ } \
++ while (0)
+
+- if (info[DT_HASH] != NULL)
+- info[DT_HASH]->d_un.d_ptr += l_addr;
+- if (info[DT_PLTGOT] != NULL)
+- info[DT_PLTGOT]->d_un.d_ptr += l_addr;
+- if (info[DT_STRTAB] != NULL)
+- info[DT_STRTAB]->d_un.d_ptr += l_addr;
+- if (info[DT_SYMTAB] != NULL)
+- info[DT_SYMTAB]->d_un.d_ptr += l_addr;
++ ADJUST_DYN_INFO (DT_HASH);
++ ADJUST_DYN_INFO (DT_PLTGOT);
++ ADJUST_DYN_INFO (DT_STRTAB);
++ ADJUST_DYN_INFO (DT_SYMTAB);
+ # if ! ELF_MACHINE_NO_RELA
+- if (info[DT_RELA] != NULL)
+- info[DT_RELA]->d_un.d_ptr += l_addr;
++ ADJUST_DYN_INFO (DT_RELA);
+ # endif
+ # if ! ELF_MACHINE_NO_REL
+- if (info[DT_REL] != NULL)
+- info[DT_REL]->d_un.d_ptr += l_addr;
++ ADJUST_DYN_INFO (DT_REL);
+ # endif
+- if (info[DT_JMPREL] != NULL)
+- info[DT_JMPREL]->d_un.d_ptr += l_addr;
+- if (info[VERSYMIDX (DT_VERSYM)] != NULL)
+- info[VERSYMIDX (DT_VERSYM)]->d_un.d_ptr += l_addr;
++ ADJUST_DYN_INFO (DT_JMPREL);
++ ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM));
++# undef ADJUST_DYN_INFO
++ assert (cnt <= DL_RO_DYN_TEMP_CNT);
+ }
+ #endif
+ if (info[DT_PLTREL] != NULL)
+--- glibc-2.3.2/elf/elf.h 2003-02-25 18:40:08.000000000 -0500
++++ glibc-2.3.2/elf/elf.h 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* This file defines standard ELF types, structures, and macros.
+- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -558,6 +558,7 @@
+ #define PT_NUM 8 /* Number of defined types */
+ #define PT_LOOS 0x60000000 /* Start of OS-specific */
+ #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
++#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
+ #define PT_LOSUNW 0x6ffffffa
+ #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
+ #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
+@@ -944,11 +945,14 @@
+
+ /* A special ignored value for PPC, used by the kernel to control the
+ interpretation of the AUXV. Must be > 16. */
+-#define AT_IGNOREPPC 22 /* Entry should be ignored */
++#define AT_IGNOREPPC 22 /* Entry should be ignored. */
++
++#define AT_SECURE 23 /* Boolean, was exec setuid-like? */
+
+ /* Pointer to the global system page used for system calls and other
+ nice things. */
+ #define AT_SYSINFO 32
++#define AT_SYSINFO_EHDR 33
+
+
+ /* Note section contents. Each entry in the note section begins with
+@@ -1881,122 +1885,39 @@
+ #define R_PPC_SECTOFF_LO 34
+ #define R_PPC_SECTOFF_HI 35
+ #define R_PPC_SECTOFF_HA 36
+-/* Keep this the last entry. */
+-#define R_PPC_NUM 37
+
+-/* PowerPC64 relocations defined by the ABIs */
+-#define R_PPC64_NONE R_PPC_NONE
+-#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address. */
+-#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned. */
+-#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address. */
+-#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address. */
+-#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */
+-#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
+-#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned. */
+-#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
+-#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
+-#define R_PPC64_REL24 R_PPC_REL24 /* PC relative 26 bit, word aligned. */
+-#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit. */
+-#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
+-#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
+-#define R_PPC64_GOT16 R_PPC_GOT16
+-#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
+-#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
+-#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
+-
+-#define R_PPC64_COPY R_PPC_COPY
+-#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
+-#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
+-#define R_PPC64_RELATIVE R_PPC_RELATIVE
+-
+-#define R_PPC64_UADDR32 R_PPC_UADDR32
+-#define R_PPC64_UADDR16 R_PPC_UADDR16
+-#define R_PPC64_REL32 R_PPC_REL32
+-#define R_PPC64_PLT32 R_PPC_PLT32
+-#define R_PPC64_PLTREL32 R_PPC_PLTREL32
+-#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
+-#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
+-#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
+-
+-#define R_PPC64_SECTOFF R_PPC_SECTOFF
+-#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
+-#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
+-#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
+-#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2. */
+-#define R_PPC64_ADDR64 38 /* doubleword64 S + A. */
+-#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A). */
+-#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A). */
+-#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A). */
+-#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A). */
+-#define R_PPC64_UADDR64 43 /* doubleword64 S + A. */
+-#define R_PPC64_REL64 44 /* doubleword64 S + A - P. */
+-#define R_PPC64_PLT64 45 /* doubleword64 L + A. */
+-#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P. */
+-#define R_PPC64_TOC16 47 /* half16* S + A - .TOC. */
+-#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.). */
+-#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.). */
+-#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.). */
+-#define R_PPC64_TOC 51 /* doubleword64 .TOC. */
+-#define R_PPC64_PLTGOT16 52 /* half16* M + A. */
+-#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A). */
+-#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A). */
+-#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A). */
+-
+-#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2. */
+-#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2. */
+-#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2. */
+-#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2. */
+-#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2. */
+-#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2. */
+-#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2. */
+-#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2. */
+-#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2. */
+-#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2. */
+-#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2. */
++/* PowerPC relocations defined for the TLS access ABI. */
++#define R_PPC_TLS 67 /* none (sym+add)@tls */
++#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
++#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
++#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
++#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
++#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
++#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
++#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
++#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
++#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
++#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
++#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
++#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
++#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
++#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
++#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
++#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
++#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
++#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
++#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
++#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */
++#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */
++#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
++#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
++#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */
++#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */
++#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */
++#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */
+
+-/* PowerPC64 relocations defined for the TLS access ABI. */
+-#define R_PPC64_TLS 67 /* none (sym+add)@tls. */
+-#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod. */
+-#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel. */
+-#define R_PPC64_TPREL16_LO 60 /* half16 (sym+add)@tprel@l. */
+-#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h. */
+-#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha. */
+-#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel. */
+-#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel. */
+-#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l. */
+-#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h. */
+-#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha. */
+-#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel. */
+-#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd. */
+-#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l. */
+-#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h. */
+-#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha. */
+-#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld. */
+-#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l. */
+-#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h. */
+-#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha. */
+-#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel. */
+-#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l. */
+-#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h. */
+-#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha. */
+-#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel. */
+-#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l. */
+-#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h. */
+-#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha. */
+-#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel. */
+-#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l. */
+-#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher. */
+-#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera. */
+-#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest. */
+-#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta. */
+-#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel. */
+-#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l. */
+-#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher. */
+-#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera. */
+-#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest. */
+-#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta. */
+ /* Keep this the last entry. */
+-#define R_PPC64_NUM 107
++#define R_PPC_NUM 95
+
+ /* The remaining relocs are from the Embedded ELF ABI, and are not
+ in the SVR4 ELF ABI. */
+@@ -2029,10 +1950,127 @@
+ that may still be in object files. */
+ #define R_PPC_TOC16 255
+
++
++/* PowerPC64 relocations defined by the ABIs */
++#define R_PPC64_NONE R_PPC_NONE
++#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */
++#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */
++#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */
++#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */
++#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */
++#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
++#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */
++#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
++#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
++#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */
++#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */
++#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
++#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
++#define R_PPC64_GOT16 R_PPC_GOT16
++#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
++#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
++#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
++
++#define R_PPC64_COPY R_PPC_COPY
++#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
++#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
++#define R_PPC64_RELATIVE R_PPC_RELATIVE
++
++#define R_PPC64_UADDR32 R_PPC_UADDR32
++#define R_PPC64_UADDR16 R_PPC_UADDR16
++#define R_PPC64_REL32 R_PPC_REL32
++#define R_PPC64_PLT32 R_PPC_PLT32
++#define R_PPC64_PLTREL32 R_PPC_PLTREL32
++#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
++#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
++#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
++
++#define R_PPC64_SECTOFF R_PPC_SECTOFF
++#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
++#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
++#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
++#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */
++#define R_PPC64_ADDR64 38 /* doubleword64 S + A */
++#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */
++#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */
++#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */
++#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */
++#define R_PPC64_UADDR64 43 /* doubleword64 S + A */
++#define R_PPC64_REL64 44 /* doubleword64 S + A - P */
++#define R_PPC64_PLT64 45 /* doubleword64 L + A */
++#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */
++#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */
++#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */
++#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */
++#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */
++#define R_PPC64_TOC 51 /* doubleword64 .TOC */
++#define R_PPC64_PLTGOT16 52 /* half16* M + A */
++#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */
++#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */
++#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */
++
++#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */
++#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */
++#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */
++#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */
++#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */
++#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */
++#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */
++#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */
++#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */
++#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */
++#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */
++
++/* PowerPC64 relocations defined for the TLS access ABI. */
++#define R_PPC64_TLS 67 /* none (sym+add)@tls */
++#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */
++#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */
++#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
++#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
++#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
++#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */
++#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */
++#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
++#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
++#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
++#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */
++#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
++#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
++#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
++#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
++#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
++#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
++#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
++#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
++#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */
++#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */
++#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
++#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
++#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */
++#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */
++#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */
++#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */
++#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */
++#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */
++#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */
++#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */
++#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */
++#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */
++#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */
++#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */
++#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */
++#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */
++#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */
++#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */
++
++/* Keep this the last entry. */
++#define R_PPC64_NUM 107
++
+ /* PowerPC64 specific values for the Dyn d_tag field. */
+ #define DT_PPC64_GLINK (DT_LOPROC + 0)
+ #define DT_PPC64_NUM 1
+
++
+ /* ARM specific declarations */
+
+ /* Processor specific flags for the ELF header e_flags field. */
+--- glibc-2.3.2/elf/ldconfig.c 2003-01-13 03:50:11.000000000 -0500
++++ glibc-2.3.2/elf/ldconfig.c 2003-09-19 22:37:01.000000000 -0400
+@@ -132,6 +132,9 @@
+ { NULL, 0, NULL, 0, NULL, 0 }
+ };
+
++#define PROCINFO_CLASS static
++#include <dl-procinfo.c>
++
+ /* Short description of program. */
+ static const char doc[] = N_("Configure Dynamic Linker Run Time Bindings.");
+
+@@ -342,13 +345,15 @@
+ entry->flag = FLAG_ANY;
+ }
+
+- /* Canonify path: for now only remove trailing slashes. */
++ /* Canonify path: for now only remove leading and trailing
++ whitespace and the trailing slashes slashes. */
+ i = strlen (entry->path) - 1;
++
++ while (isspace (entry->path[i]) && i > 0)
++ entry->path[i--] = '\0';
++
+ while (entry->path[i] == '/' && i > 0)
+- {
+- entry->path[i] = '\0';
+- --i;
+- }
++ entry->path[i--] = '\0';
+
+ if (stat64 (entry->path, &stat_buf))
+ {
+@@ -782,10 +787,27 @@
+ continue;
+ }
+
++
++ /* A link may just point to itself. */
++ if (is_link)
++ {
++ /* If the path the link points to isn't its soname and it is not
++ .so symlink for ld(1) only, we treat it as a normal file. */
++ const char *real_base_name = basename (real_file_name);
++
++ if (strcmp (real_base_name, soname) != 0)
++ {
++ len = strlen (real_base_name);
++ if (len < strlen (".so")
++ || strcmp (real_base_name + len - strlen (".so"), ".so") != 0
++ || strncmp (real_base_name, soname, len) != 0)
++ is_link = 0;
++ }
++ }
++
+ if (real_name != real_file_name)
+ free (real_name);
+
+- /* Links will just point to itself. */
+ if (is_link)
+ {
+ free (soname);
+@@ -963,12 +985,18 @@
+ make it terminating the line. */
+ *strchrnul (line, '#') = '\0';
+
++ /* Remove leading whitespace. NUL is no whitespace character. */
++ char *cp = line;
++ while (isspace (*cp))
++ ++cp;
++
+ /* If the line is blank it is ignored. */
+- if (line[0] == '\0')
++ if (cp[0] == '\0')
+ continue;
+
+- add_dir (line);
+- } while (!feof (file));
++ add_dir (cp);
++ }
++ while (!feof_unlocked (file));
+
+ /* Free buffer and close file. */
+ free (line);
+@@ -994,13 +1022,18 @@
+ /* Parse and process arguments. */
+ argp_parse (&argp, argc, argv, 0, &remaining, NULL);
+
+- /* Remaining arguments are additional libraries if opt_manual_link
++ /* Remaining arguments are additional directories if opt_manual_link
+ is not set. */
+ if (remaining != argc && !opt_manual_link)
+ {
+ int i;
+ for (i = remaining; i < argc; ++i)
+- add_dir (argv[i]);
++ if (opt_build_cache && argv[i][0] != '/')
++ error (EXIT_FAILURE, 0,
++ _("relative path `%s' used to build cache"),
++ argv[i]);
++ else
++ add_dir (argv[i]);
+ }
+
+ set_hwcap ();
+@@ -1094,12 +1127,12 @@
+
+ if (!opt_only_cline)
+ {
++ parse_conf (config_file);
++
+ /* Always add the standard search paths. */
+- add_dir (SLIBDIR);
++ add_system_dir (SLIBDIR);
+ if (strcmp (SLIBDIR, LIBDIR))
+- add_dir (LIBDIR);
+-
+- parse_conf (config_file);
++ add_system_dir (LIBDIR);
+ }
+
+ search_dirs ();
+--- glibc-2.3.2/elf/link.h 2001-07-25 16:37:46.000000000 -0400
++++ glibc-2.3.2/elf/link.h 2003-09-19 22:37:01.000000000 -0400
+@@ -106,7 +106,7 @@
+
+ extern int dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info,
+ size_t size, void *data),
+- void *data) __THROW;
++ void *data);
+
+ __END_DECLS
+
+--- glibc-2.3.2/elf/readlib.c 2002-09-05 14:56:48.000000000 -0400
++++ glibc-2.3.2/elf/readlib.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
+ Jakub Jelinek <jakub@redhat.com>, 1999.
+@@ -23,17 +23,16 @@
+ development version. Besides the simplification, it has also been
+ modified to read some other file formats. */
+
+-
++#include <a.out.h>
+ #include <elf.h>
+ #include <error.h>
+-#include <link.h>
+ #include <libintl.h>
++#include <link.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
+-#include <a.out.h>
+-
+ #include <sys/mman.h>
++#include <sys/param.h>
+ #include <sys/stat.h>
+ #include <gnu/lib-names.h>
+
+@@ -147,22 +146,21 @@
+ elf_header = (ElfW(Ehdr) *) file_contents;
+ if (memcmp (elf_header->e_ident, ELFMAG, SELFMAG) != 0)
+ {
+- /* The file is neither ELF nor aout. Check if it's a linker script,
+- like libc.so - otherwise complain. */
+- int len = statbuf.st_size;
+- /* Only search the beginning of the file. */
+- if (len > 512)
+- len = 512;
++ /* The file is neither ELF nor aout. Check if it's a linker
++ script, like libc.so - otherwise complain. Only search the
++ beginning of the file. */
++ size_t len = MIN (statbuf.st_size, 512);
+ if (memmem (file_contents, len, "GROUP", 5) == NULL
+ && memmem (file_contents, len, "GNU ld script", 13) == NULL)
+ error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"),
+ file_name);
+ ret = 1;
+- goto done;
+ }
+-
+- if (process_elf_file (file_name, lib, flag, osversion, soname,
+- file_contents, statbuf.st_size))
++ /* Libraries have to be shared object files. */
++ else if (elf_header->e_type != ET_DYN)
++ ret = 1;
++ else if (process_elf_file (file_name, lib, flag, osversion, soname,
++ file_contents, statbuf.st_size))
+ ret = 1;
+
+ done:
+--- glibc-2.3.2/elf/rtld-Rules 2002-10-14 00:03:13.000000000 -0400
++++ glibc-2.3.2/elf/rtld-Rules 2003-08-21 08:36:59.000000000 -0400
+@@ -1,6 +1,6 @@
+ # Subroutine makefile for compiling libc modules linked into dynamic linker.
+
+-# Copyright (C) 2002 Free Software Foundation, Inc.
++# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -31,7 +31,7 @@
+ ifeq ($(subdir),elf)
+
+ ifndef rtld-subdirs
+-error This is makefile is a subroutine of elf/Makefile not to be used directly
++error This makefile is a subroutine of elf/Makefile not to be used directly
+ endif
+
+ include ../Makeconfig
+@@ -81,19 +81,13 @@
+ # The sysd-rules generated makefile already defines pattern rules for rtld-%
+ # targets built from sysdeps source files.
+ $(objpfx)rtld-%.os: %.S $(before-compile); $(compile-command.S)
+-$(objpfx)rtld-%.d: %.S $(before-compile); $(+make-deps)
+ $(objpfx)rtld-%.os: %.s $(before-compile); $(compile-command.s)
+-$(objpfx)rtld-%.d: %.s $(before-compile); $(+make-deps)
+ $(objpfx)rtld-%.os: %.c $(before-compile); $(compile-command.c)
+-$(objpfx)rtld-%.d: %.c $(before-compile); $(+make-deps)
+
+ # The rules for generated source files.
+ $(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S)
+-$(objpfx)rtld-%.d: $(objpfx)%.S $(before-compile); $(+make-deps)
+ $(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s)
+-$(objpfx)rtld-%.d: $(objpfx)%.s $(before-compile); $(+make-deps)
+ $(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c)
+-$(objpfx)rtld-%.d: $(objpfx)%.c $(before-compile); $(+make-deps)
+
+ # The command line setting of rtld-modules (see above) tells us
+ # what we need to build, and that tells us what dependency files we need.
+@@ -101,9 +95,12 @@
+
+ # Figure out the dependency files we need. After respecting the $(omit-deps)
+ # list as applied to the names without the `rtld-', there may be none left.
+-rtld-depfiles := $(patsubst %,$(objpfx)rtld-%.d,\
++rtld-depfiles := $(patsubst %,$(objpfx)rtld-%.os.d,\
+ $(filter-out $(omit-deps),\
+ $(rtld-modules:rtld-%.os=%)))
++rtld-depfiles := $(strip $(wildcard $(rtld-depfiles)) \
++ $(patsubst %.dt,%.d,\
++ $(wildcard $(rtld-depfiles:.d=.dt))))
+ ifdef rtld-depfiles
+ -include $(rtld-depfiles)
+ endif
+--- glibc-2.3.2/elf/rtld.c 2003-01-07 13:47:35.000000000 -0500
++++ glibc-2.3.2/elf/rtld.c 2003-08-21 08:36:59.000000000 -0400
+@@ -227,12 +227,16 @@
+ assert (info->l.l_tls_modid != 0);
+ GL(dl_rtld_map).l_tls_blocksize = info->l.l_tls_blocksize;
+ GL(dl_rtld_map).l_tls_align = info->l.l_tls_align;
++ GL(dl_rtld_map).l_tls_firstbyte_offset = info->l.l_tls_firstbyte_offset;
+ GL(dl_rtld_map).l_tls_initimage_size = info->l.l_tls_initimage_size;
+ GL(dl_rtld_map).l_tls_initimage = info->l.l_tls_initimage;
+ GL(dl_rtld_map).l_tls_offset = info->l.l_tls_offset;
+ GL(dl_rtld_map).l_tls_modid = 1;
+ # else
+ assert (info->l.l_tls_modid == 0);
++# if NO_TLS_OFFSET != 0
++ GL(dl_rtld_map).l_tls_offset = NO_TLS_OFFSET;
++# endif
+ # endif
+
+ #endif
+@@ -314,7 +318,11 @@
+
+ /* Read our own dynamic section and fill in the info array. */
+ bootstrap_map.l_ld = (void *) bootstrap_map.l_addr + elf_machine_dynamic ();
+- elf_get_dynamic_info (&bootstrap_map);
++ elf_get_dynamic_info (&bootstrap_map, NULL);
++
++#if defined USE_TLS && NO_TLS_OFFSET != 0
++ bootstrap_map.l_tls_offset = NO_TLS_OFFSET;
++#endif
+
+ #if USE___THREAD
+ /* Get the dynamic linker's own program header. First we need the ELF
+@@ -340,6 +348,11 @@
+
+ bootstrap_map.l_tls_blocksize = phdr[cnt].p_memsz;
+ bootstrap_map.l_tls_align = phdr[cnt].p_align;
++ if (phdr[cnt].p_align == 0)
++ bootstrap_map.l_tls_firstbyte_offset = 0;
++ else
++ bootstrap_map.l_tls_firstbyte_offset = (phdr[cnt].p_vaddr
++ & (phdr[cnt].p_align - 1));
+ assert (bootstrap_map.l_tls_blocksize != 0);
+ bootstrap_map.l_tls_initimage_size = phdr[cnt].p_filesz;
+ bootstrap_map.l_tls_initimage = (void *) (bootstrap_map.l_addr
+@@ -575,6 +588,20 @@
+ }
+ #endif
+
++#if defined SHARED && defined _LIBC_REENTRANT \
++ && defined __rtld_lock_default_lock_recursive
++static void rtld_lock_default_lock_recursive (void *lock)
++{
++ __rtld_lock_default_lock_recursive (lock);
++}
++
++static void rtld_lock_default_unlock_recursive (void *lock)
++{
++ __rtld_lock_default_unlock_recursive (lock);
++}
++#endif
++
++
+ static const char *library_path; /* The library search path. */
+ static const char *preloadlist; /* The list preloaded objects. */
+ static int version_info; /* Nonzero if information about
+@@ -609,6 +636,16 @@
+ GL(dl_error_catch_tsd) = &_dl_initial_error_catch_tsd;
+ #endif
+
++#ifdef USE_TLS
++ GL(dl_init_static_tls) = &_dl_nothread_init_static_tls;
++#endif
++
++#if defined SHARED && defined _LIBC_REENTRANT \
++ && defined __rtld_lock_default_lock_recursive
++ GL(dl_rtld_lock_recursive) = rtld_lock_default_lock_recursive;
++ GL(dl_rtld_unlock_recursive) = rtld_lock_default_unlock_recursive;
++#endif
++
+ /* Process the environment variable which control the behaviour. */
+ process_envvars (&mode);
+
+@@ -853,6 +890,11 @@
+ check for this special but unimportant case. */
+ GL(dl_loaded)->l_tls_blocksize = ph->p_memsz;
+ GL(dl_loaded)->l_tls_align = ph->p_align;
++ if (ph->p_align == 0)
++ GL(dl_loaded)->l_tls_firstbyte_offset = 0;
++ else
++ GL(dl_loaded)->l_tls_firstbyte_offset = (ph->p_vaddr
++ & (ph->p_align - 1));
+ GL(dl_loaded)->l_tls_initimage_size = ph->p_filesz;
+ GL(dl_loaded)->l_tls_initimage = (void *) ph->p_vaddr;
+
+@@ -885,7 +927,7 @@
+ if (! rtld_is_main)
+ {
+ /* Extract the contents of the dynamic section for easy access. */
+- elf_get_dynamic_info (GL(dl_loaded));
++ elf_get_dynamic_info (GL(dl_loaded), NULL);
+ if (GL(dl_loaded)->l_info[DT_HASH])
+ /* Set up our cache of pointers into the hash table. */
+ _dl_setup_hash (GL(dl_loaded));
+@@ -924,6 +966,13 @@
+ GL(dl_rtld_map).l_prev = GL(dl_loaded);
+ ++GL(dl_nloaded);
+
++ /* Set up the program header information for the dynamic linker
++ itself. It is needed in the dl_iterate_phdr() callbacks. */
++ ElfW(Ehdr) *rtld_ehdr = (ElfW(Ehdr) *) GL(dl_rtld_map).l_map_start;
++ GL(dl_rtld_map).l_phdr = (ElfW(Phdr) *) (GL(dl_rtld_map).l_map_start
++ + rtld_ehdr->e_phoff);
++ GL(dl_rtld_map).l_phnum = rtld_ehdr->e_phnum;
++
+ /* We have two ways to specify objects to preload: via environment
+ variable and via the file /etc/ld.so.preload. The latter can also
+ be used when security is enabled. */
+@@ -1062,6 +1111,50 @@
+ assert (i == npreloads);
+ }
+
++#ifdef NEED_DL_SYSINFO
++ if (GL(dl_sysinfo_dso) != NULL)
++ {
++ /* We have a prelinked DSO preloaded by the system. */
++ GL(dl_sysinfo) = GL(dl_sysinfo_dso)->e_entry;
++
++ /* Do an abridged version of the work _dl_map_object_from_fd would do
++ to map in the object. It's already mapped and prelinked (and
++ better be, since it's read-only and so we couldn't relocate it).
++ We just want our data structures to describe it as if we had just
++ mapped and relocated it normally. */
++ struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL);
++ if (__builtin_expect (l != NULL, 1))
++ {
++ static ElfW(Dyn) dyn_temp [DL_RO_DYN_TEMP_CNT];
++
++ l->l_phdr = ((const void *) GL(dl_sysinfo_dso)
++ + GL(dl_sysinfo_dso)->e_phoff);
++ l->l_phnum = GL(dl_sysinfo_dso)->e_phnum;
++ for (uint_fast16_t i = 0; i < l->l_phnum; ++i)
++ {
++ const ElfW(Phdr) *const ph = &l->l_phdr[i];
++ if (ph->p_type == PT_DYNAMIC)
++ {
++ l->l_ld = (void *) ph->p_vaddr;
++ l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn));
++ break;
++ }
++ if (ph->p_type == PT_LOAD)
++ assert ((void *) ph->p_vaddr == GL(dl_sysinfo_dso));
++ }
++ elf_get_dynamic_info (l, dyn_temp);
++ _dl_setup_hash (l);
++ l->l_relocated = 1;
++
++ /* Now that we have the info handy, use the DSO image's soname
++ so this object can be looked up by name. */
++ if (l->l_info[DT_SONAME] != NULL)
++ l->l_libname->name = ((char *) D_PTR (l, l_info[DT_STRTAB])
++ + l->l_info[DT_SONAME]->d_un.d_val);
++ }
++ }
++#endif
++
+ /* Load all the libraries specified by DT_NEEDED entries. If LD_PRELOAD
+ specified some libraries to load, these are inserted before the actual
+ dependencies in the executable's searchlist for symbol resolution. */
+@@ -1213,57 +1306,54 @@
+ important that we do this before real relocation, because the
+ functions we call below for output may no longer work properly
+ after relocation. */
+- if (! GL(dl_loaded)->l_info[DT_NEEDED])
+- _dl_printf ("\tstatically linked\n");
+- else
++ struct link_map *l;
++
++ if (GL(dl_debug_mask) & DL_DEBUG_PRELINK)
+ {
+- struct link_map *l;
++ struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
+
+- if (GL(dl_debug_mask) & DL_DEBUG_PRELINK)
++ for (i = 0; i < scope->r_nlist; i++)
+ {
+- struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
+-
+- for (i = 0; i < scope->r_nlist; i++)
++ l = scope->r_list [i];
++ if (l->l_faked)
+ {
+- l = scope->r_list [i];
+- if (l->l_faked)
+- {
+- _dl_printf ("\t%s => not found\n", l->l_libname->name);
+- continue;
+- }
+- if (_dl_name_match_p (GL(dl_trace_prelink), l))
+- GL(dl_trace_prelink_map) = l;
+- _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)",
+- l->l_libname->name[0] ? l->l_libname->name
+- : rtld_progname ?: "<main program>",
+- l->l_name[0] ? l->l_name
+- : rtld_progname ?: "<main program>",
+- (int) sizeof l->l_map_start * 2,
+- l->l_map_start,
+- (int) sizeof l->l_addr * 2,
+- l->l_addr);
++ _dl_printf ("\t%s => not found\n", l->l_libname->name);
++ continue;
++ }
++ if (_dl_name_match_p (GL(dl_trace_prelink), l))
++ GL(dl_trace_prelink_map) = l;
++ _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)",
++ l->l_libname->name[0] ? l->l_libname->name
++ : rtld_progname ?: "<main program>",
++ l->l_name[0] ? l->l_name
++ : rtld_progname ?: "<main program>",
++ (int) sizeof l->l_map_start * 2,
++ (size_t) l->l_map_start,
++ (int) sizeof l->l_addr * 2,
++ (size_t) l->l_addr);
+ #ifdef USE_TLS
+- if (l->l_tls_modid)
+- _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
+- (int) sizeof l->l_tls_offset * 2,
+- l->l_tls_offset);
+- else
++ if (l->l_tls_modid)
++ _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
++ (int) sizeof l->l_tls_offset * 2,
++ (size_t) l->l_tls_offset);
++ else
+ #endif
+- _dl_printf ("\n");
+- }
+- }
+- else
+- {
+- for (l = GL(dl_loaded)->l_next; l; l = l->l_next)
+- if (l->l_faked)
+- /* The library was not found. */
+- _dl_printf ("\t%s => not found\n", l->l_libname->name);
+- else
+- _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
+- l->l_name, (int) sizeof l->l_map_start * 2,
+- l->l_map_start);
++ _dl_printf ("\n");
+ }
+ }
++ else if (! GL(dl_loaded)->l_info[DT_NEEDED])
++ _dl_printf ("\tstatically linked\n");
++ else
++ {
++ for (l = GL(dl_loaded)->l_next; l; l = l->l_next)
++ if (l->l_faked)
++ /* The library was not found. */
++ _dl_printf ("\t%s => not found\n", l->l_libname->name);
++ else
++ _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
++ l->l_name, (int) sizeof l->l_map_start * 2,
++ (size_t) l->l_map_start);
++ }
+
+ if (__builtin_expect (mode, trace) != trace)
+ for (i = 1; i < (unsigned int) _dl_argc; ++i)
+@@ -1281,8 +1371,9 @@
+
+ _dl_printf ("%s found at 0x%0*Zd in object at 0x%0*Zd\n",
+ INTUSE(_dl_argv)[i],
+- (int) sizeof ref->st_value * 2, ref->st_value,
+- (int) sizeof loadbase * 2, loadbase);
++ (int) sizeof ref->st_value * 2,
++ (size_t) ref->st_value,
++ (int) sizeof loadbase * 2, (size_t) loadbase);
+ }
+ else
+ {
+--- glibc-2.3.2/elf/sofini.c 1999-02-20 12:14:48.000000000 -0500
++++ glibc-2.3.2/elf/sofini.c 2003-08-21 08:36:59.000000000 -0400
+@@ -2,10 +2,10 @@
+ null pointer words in the `.ctors' and `.dtors' sections. */
+
+ static void (*const __CTOR_END__[1]) (void)
+- __attribute__ ((unused, section (".ctors")))
++ __attribute__ ((used, section (".ctors")))
+ = { 0 };
+ static void (*const __DTOR_END__[1]) (void)
+- __attribute__ ((unused, section (".dtors")))
++ __attribute__ ((used, section (".dtors")))
+ = { 0 };
+
+ #ifdef HAVE_DWARF2_UNWIND_INFO
+@@ -14,6 +14,6 @@
+
+ typedef unsigned int ui32 __attribute__ ((mode (SI)));
+ static ui32 __FRAME_END__[1]
+- __attribute__ ((unused, section (".eh_frame")))
++ __attribute__ ((used, section (".eh_frame")))
+ = { 0 };
+ #endif
+--- glibc-2.3.2/elf/tls-macros.h 2003-02-25 18:40:08.000000000 -0500
++++ glibc-2.3.2/elf/tls-macros.h 2003-09-19 22:37:01.000000000 -0400
+@@ -9,6 +9,7 @@
+ #define VAR_INT_DEF(x) \
+ asm (".section .tdata\n\t" \
+ ".globl " #x "\n" \
++ ".balign 4\n" \
+ #x ":\t.long 0\n\t" \
+ ".size " #x ",4\n\t" \
+ ".previous")
+@@ -316,13 +317,15 @@
+
+ # define TLS_IE(x) \
+ ({ void *__l; \
++ register long __gp asm ("gp"); \
+ asm (";;\n\t" \
+ "addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \
+ ";;\n\t" \
+ "ld8 r17=[r16]\n\t" \
+ ";;\n\t" \
+ "add %0=r13,r17\n\t" \
+- : "=r" (__l) : : "r16", "r17" ); __l; })
++ ";;\n\t" \
++ : "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; })
+
+ # define __TLS_CALL_CLOBBERS \
+ "r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \
+@@ -335,6 +338,7 @@
+
+ # define TLS_LD(x) \
+ ({ void *__l; \
++ register long __gp asm ("gp"); \
+ asm (";;\n\t" \
+ "mov loc0=gp\n\t" \
+ "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
+@@ -345,11 +349,13 @@
+ ";;\n\t" \
+ "mov gp=loc0\n\t" \
+ "mov %0=r8\n\t" \
+- : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \
++ ";;\n\t" \
++ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
+ __l; })
+
+ # define TLS_GD(x) \
+ ({ void *__l; \
++ register long __gp asm ("gp"); \
+ asm (";;\n\t" \
+ "mov loc0=gp\n\t" \
+ "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
+@@ -361,7 +367,8 @@
+ ";;\n\t" \
+ "mov gp=loc0\n\t" \
+ "mov %0=r8\n\t" \
+- : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS); \
++ ";;\n\t" \
++ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
+ __l; })
+
+ #elif defined __sparc__ && !defined __arch64__
+@@ -373,7 +380,7 @@
+ asm ("add %%g7, %1, %0" : "=r" (__l) : "r" (__l)); \
+ __l; })
+
+-# ifdef __PIC__
++# ifdef __PIC__
+ # define TLS_LOAD_PIC \
+ ({ register long pc __asm__ ("%o7"); \
+ long got; \
+@@ -623,6 +630,53 @@
+ (int *) (__builtin_thread_pointer() + __offset); })
+ # endif
+
++#elif defined __powerpc__ && !defined __powerpc64__
++
++# define __TLS_CALL_CLOBBERS \
++ "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", \
++ "lr", "ctr", "cr0", "cr1", "cr5", "cr6", "cr7"
++
++/* PowerPC32 Local Exec TLS access. */
++# define TLS_LE(x) \
++ ({ int *__result; \
++ asm ("addi %0,2," #x "@tprel" \
++ : "=r" (__result)); \
++ __result; })
++
++/* PowerPC32 Initial Exec TLS access. */
++# define TLS_IE(x) \
++ ({ int *__result; \
++ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
++ "mflr %0\n\t" \
++ "lwz %0," #x "@got@tprel(%0)\n\t" \
++ "add %0,%0," #x "@tls" \
++ : "=b" (__result) : \
++ : "lr"); \
++ __result; })
++
++/* PowerPC32 Local Dynamic TLS access. */
++# define TLS_LD(x) \
++ ({ int *__result; \
++ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
++ "mflr 3\n\t" \
++ "addi 3,3," #x "@got@tlsld\n\t" \
++ "bl __tls_get_addr@plt\n\t" \
++ "addi %0,3," #x "@dtprel" \
++ : "=r" (__result) : \
++ : __TLS_CALL_CLOBBERS); \
++ __result; })
++
++/* PowerPC32 General Dynamic TLS access. */
++# define TLS_GD(x) \
++ ({ register int *__result __asm__ ("r3"); \
++ asm ("bl _GLOBAL_OFFSET_TABLE_@local-4\n\t" \
++ "mflr 3\n\t" \
++ "addi 3,3," #x "@got@tlsgd\n\t" \
++ "bl __tls_get_addr@plt" \
++ : : \
++ : __TLS_CALL_CLOBBERS); \
++ __result; })
++
+ #elif defined __powerpc__ && defined __powerpc64__
+
+ /* PowerPC64 Local Exec TLS access. */
+--- glibc-2.3.2/elf/tst-align.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-align.c 2003-09-17 14:13:33.000000000 -0400
+@@ -0,0 +1,54 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++static int
++do_test (void)
++{
++ static const char modname[] = "tst-alignmod.so";
++ int result = 0;
++ void (*fp) (int *);
++ void *h;
++
++ h = dlopen (modname, RTLD_LAZY);
++ if (h == NULL)
++ {
++ printf ("cannot open '%s': %s\n", modname, dlerror ());
++ exit (1);
++ }
++
++ fp = dlsym (h, "in_dso");
++ if (fp == NULL)
++ {
++ printf ("cannot get symbol 'in_dso': %s\n", dlerror ());
++ exit (1);
++ }
++
++ fp (&result);
++
++ dlclose (h);
++
++ return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/elf/tst-alignmod.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-alignmod.c 2003-09-17 14:13:49.000000000 -0400
+@@ -0,0 +1,53 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdio.h>
++#include <tst-stack-align.h>
++
++static int res, *resp;
++
++static void __attribute__((constructor))
++con (void)
++{
++ res = TEST_STACK_ALIGN () ? -1 : 1;
++}
++
++void
++in_dso (int *result)
++{
++ if (!res)
++ {
++ puts ("constructor has not been run");
++ *result = 1;
++ }
++ else if (res != 1)
++ {
++ puts ("constructor has been run without sufficient alignment");
++ *result = 1;
++ }
++
++ resp = result;
++}
++
++static void __attribute__((destructor))
++des (void)
++{
++ if (TEST_STACK_ALIGN ())
++ *resp = 1;
++}
+--- glibc-2.3.2/elf/tst-tls10.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls10.c 2003-04-22 21:54:06.000000000 -0400
+@@ -0,0 +1,40 @@
++#include "tst-tls10.h"
++
++#ifdef USE_TLS__THREAD
++__thread int dummy __attribute__((visibility ("hidden"))) = 12;
++__thread struct A local = { 1, 2, 3 };
++#endif
++
++#define CHECK(N, S) \
++ p = f##N##a (); \
++ if (p->a != S || p->b != S + 1 || p->c != S + 2) \
++ abort ()
++
++int
++main (void)
++{
++#ifdef USE_TLS__THREAD
++ struct A *p;
++ if (local.a != 1 || local.b != 2 || local.c != 3)
++ abort ();
++ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
++ abort ();
++ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
++ abort ();
++ if (a3.a != 10 || a3.b != 11 || a3.c != 12)
++ abort ();
++ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
++ abort ();
++ check1 ();
++ check2 ();
++ if (f1a () != &a1 || f2a () != &a2 || f3a () != &a3 || f4a () != &a4)
++ abort ();
++ CHECK (5, 16);
++ CHECK (6, 19);
++ if (f7a () != &a2 || f8a () != &a4)
++ abort ();
++ CHECK (9, 28);
++ CHECK (10, 31);
++#endif
++ exit (0);
++}
+--- glibc-2.3.2/elf/tst-tls10.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls10.h 2003-04-17 15:19:01.000000000 -0400
+@@ -0,0 +1,38 @@
++#include <tls.h>
++#include <stdlib.h>
++
++#if defined USE_TLS && defined HAVE___THREAD \
++ && defined HAVE_TLS_MODEL_ATTRIBUTE
++# define USE_TLS__THREAD
++
++struct A
++{
++ char a;
++ int b;
++ long long c;
++};
++
++extern __thread struct A a1, a2, a3, a4;
++extern struct A *f1a (void);
++extern struct A *f2a (void);
++extern struct A *f3a (void);
++extern struct A *f4a (void);
++extern struct A *f5a (void);
++extern struct A *f6a (void);
++extern struct A *f7a (void);
++extern struct A *f8a (void);
++extern struct A *f9a (void);
++extern struct A *f10a (void);
++extern int f1b (void);
++extern int f2b (void);
++extern int f3b (void);
++extern int f4b (void);
++extern int f5b (void);
++extern int f6b (void);
++extern int f7b (void);
++extern int f8b (void);
++extern int f9b (void);
++extern int f10b (void);
++extern void check1 (void);
++extern void check2 (void);
++#endif
+--- glibc-2.3.2/elf/tst-tls11.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls11.c 2003-04-17 15:19:01.000000000 -0400
+@@ -0,0 +1,27 @@
++#include "tst-tls10.h"
++
++#define CHECK(N, S) \
++ p = f##N##a (); \
++ if (p->a != S || p->b != S + 1 || p->c != S + 2) \
++ abort ()
++
++int
++main (void)
++{
++#ifdef USE_TLS__THREAD
++ struct A *p;
++ check1 ();
++ check2 ();
++ CHECK (1, 4);
++ CHECK (2, 22);
++ CHECK (3, 10);
++ CHECK (4, 25);
++ CHECK (5, 16);
++ CHECK (6, 19);
++ CHECK (7, 22);
++ CHECK (8, 25);
++ CHECK (9, 28);
++ CHECK (10, 31);
++#endif
++ exit (0);
++}
+--- glibc-2.3.2/elf/tst-tls12.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls12.c 2003-04-22 21:54:06.000000000 -0400
+@@ -0,0 +1,18 @@
++#include "tst-tls10.h"
++
++#define CHECK(N, S) \
++ p = &a##N; \
++ if (p->a != S || p->b != S + 1 || p->c != S + 2) \
++ abort ()
++
++int
++main (void)
++{
++#ifdef USE_TLS__THREAD
++ struct A *p;
++ check1 ();
++ CHECK (1, 4);
++ CHECK (2, 7);
++#endif
++ exit (0);
++}
+--- glibc-2.3.2/elf/tst-tls13.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls13.c 2003-04-27 02:15:09.000000000 -0400
+@@ -0,0 +1,29 @@
++/* Check unloading modules with data in static TLS block. */
++#include <dlfcn.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++
++static int
++do_test (void)
++{
++ int i;
++ for (i = 0; i < 1000;)
++ {
++ printf ("round %d\n",++i);
++
++ void *h = dlopen ("tst-tlsmod13a.so", RTLD_LAZY);
++ if (h == NULL)
++ {
++ printf ("cannot load: %s\n", dlerror ());
++ exit (1);
++ }
++
++ dlclose (h);
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/elf/tst-tls14.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls14.c 2003-07-28 17:50:16.000000000 -0400
+@@ -0,0 +1,66 @@
++/* Check alignment of TLS variable. */
++#include <dlfcn.h>
++#include <stdint.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++#include <tls.h>
++
++#if USE_TLS && HAVE___THREAD
++
++#define AL 4096
++struct foo
++{
++ int i;
++} __attribute ((aligned (AL)));
++
++static __thread struct foo f;
++static struct foo g;
++
++
++extern int in_dso1 (void);
++
++
++static int
++do_test (void)
++{
++ int result = 0;
++
++ int fail = (((uintptr_t) &f) & (AL - 1)) != 0;
++ printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK");
++ result |= fail;
++
++ fail = (((uintptr_t) &g) & (AL - 1)) != 0;
++ printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK");
++ result |= fail;
++
++ result |= in_dso1 ();
++
++ void *h = dlopen ("tst-tlsmod14b.so", RTLD_LAZY);
++ if (h == NULL)
++ {
++ printf ("cannot open tst-tlsmod14b.so: %m\n");
++ exit (1);
++ }
++
++ int (*fp) (void) = (int (*) (void)) dlsym (h, "in_dso2");
++ if (fp == NULL)
++ {
++ puts ("cannot find in_dso2");
++ exit (1);
++ }
++
++ result |= fp ();
++
++ return result;
++}
++
++#define TEST_FUNCTION do_test ()
++
++#else
++
++#define TEST_FUNCTION 0
++
++#endif
++
++#include "../test-skeleton.c"
+--- glibc-2.3.2/elf/tst-tls6.c 2002-12-04 13:22:02.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls6.c 2003-08-21 08:36:59.000000000 -0400
+@@ -36,7 +36,7 @@
+ modid = ((struct link_map *) h)->l_tls_modid;
+ else if (((struct link_map *) h)->l_tls_modid != modid)
+ {
+- printf ("round %d: modid now %d, initially %d\n",
++ printf ("round %d: modid now %zd, initially %d\n",
+ i, ((struct link_map *) h)->l_tls_modid, modid);
+ result = 1;
+ }
+--- glibc-2.3.2/elf/tst-tls8.c 2002-12-04 13:22:02.000000000 -0500
++++ glibc-2.3.2/elf/tst-tls8.c 2003-08-21 08:36:59.000000000 -0400
+@@ -19,8 +19,8 @@
+ void *h1;
+ void *h2;
+ int i;
+- int modid1 = -1;
+- int modid2 = -1;
++ size_t modid1 = (size_t) -1;
++ size_t modid2 = (size_t) -1;
+ int *bazp;
+
+ for (i = 0; i < 10; ++i)
+@@ -35,11 +35,11 @@
+ /* Dirty test code here: we peek into a private data structure.
+ We make sure that the module gets assigned the same ID every
+ time. The value of the first round is used. */
+- if (modid1 == -1)
++ if (modid1 == (size_t) -1)
+ modid1 = ((struct link_map *) h1)->l_tls_modid;
+ else if (((struct link_map *) h1)->l_tls_modid != modid1)
+ {
+- printf ("round %d: modid now %zd, initially %d\n",
++ printf ("round %d: modid now %zd, initially %zd\n",
+ i, ((struct link_map *) h1)->l_tls_modid, modid1);
+ result = 1;
+ }
+@@ -65,11 +65,11 @@
+ /* Dirty test code here: we peek into a private data structure.
+ We make sure that the module gets assigned the same ID every
+ time. The value of the first round is used. */
+- if (modid2 == -1)
++ if (modid2 == (size_t) -1)
+ modid2 = ((struct link_map *) h1)->l_tls_modid;
+ else if (((struct link_map *) h1)->l_tls_modid != modid2)
+ {
+- printf ("round %d: modid now %zd, initially %d\n",
++ printf ("round %d: modid now %zd, initially %zd\n",
+ i, ((struct link_map *) h1)->l_tls_modid, modid2);
+ result = 1;
+ }
+@@ -108,7 +108,7 @@
+ time. The value of the first round is used. */
+ if (((struct link_map *) h1)->l_tls_modid != modid1)
+ {
+- printf ("round %d: modid now %zd, initially %d\n",
++ printf ("round %d: modid now %zd, initially %zd\n",
+ i, ((struct link_map *) h1)->l_tls_modid, modid1);
+ result = 1;
+ }
+@@ -136,7 +136,7 @@
+ time. The value of the first round is used. */
+ if (((struct link_map *) h1)->l_tls_modid != modid2)
+ {
+- printf ("round %d: modid now %zd, initially %d\n",
++ printf ("round %d: modid now %zd, initially %zd\n",
+ i, ((struct link_map *) h1)->l_tls_modid, modid2);
+ result = 1;
+ }
+--- glibc-2.3.2/elf/tst-tlsmod10.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod10.c 2003-04-17 15:19:01.000000000 -0400
+@@ -0,0 +1 @@
++#include "tst-tlsmod8.c"
+--- glibc-2.3.2/elf/tst-tlsmod11.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod11.c 2003-04-17 15:19:01.000000000 -0400
+@@ -0,0 +1,6 @@
++#include "tst-tls10.h"
++
++#ifdef USE_TLS__THREAD
++__thread struct A a1 = { 4, 5, 6 };
++__thread struct A a2 = { 7, 8, 9 };
++#endif
+--- glibc-2.3.2/elf/tst-tlsmod12.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod12.c 2003-04-17 15:19:01.000000000 -0400
+@@ -0,0 +1,14 @@
++#include "tst-tls10.h"
++
++#ifdef USE_TLS__THREAD
++extern __thread struct A a2 __attribute__((tls_model("initial-exec")));
++
++void
++check1 (void)
++{
++ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
++ abort ();
++ if (a2.a != 7 || a2.b != 8 || a2.c != 9)
++ abort ();
++}
++#endif
+--- glibc-2.3.2/elf/tst-tlsmod13.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod13.c 2003-04-27 02:15:39.000000000 -0400
+@@ -0,0 +1,14 @@
++#include <tls.h>
++
++#if defined USE_TLS && defined HAVE___THREAD \
++ && defined HAVE_TLS_MODEL_ATTRIBUTE
++__thread int a[2] __attribute__ ((tls_model ("initial-exec")));
++#else
++int a[2];
++#endif
++
++int
++foo (void)
++{
++ return a[0];
++}
+--- glibc-2.3.2/elf/tst-tlsmod13a.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod13a.c 2003-04-27 02:15:39.000000000 -0400
+@@ -0,0 +1,16 @@
++#include <tls.h>
++
++#if defined USE_TLS && defined HAVE___THREAD \
++ && defined HAVE_TLS_MODEL_ATTRIBUTE
++__thread int b[2] __attribute__ ((tls_model ("initial-exec")));
++#else
++int b[2];
++#endif
++
++extern int foo (void);
++
++int
++bar (void)
++{
++ return foo () + b[0];
++}
+--- glibc-2.3.2/elf/tst-tlsmod14a.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod14a.c 2003-07-28 17:50:16.000000000 -0400
+@@ -0,0 +1,41 @@
++#include <stdint.h>
++#include <stdio.h>
++
++#include <tls.h>
++
++#if USE_TLS && HAVE___THREAD
++
++#define AL 4096
++struct foo
++{
++ int i;
++} __attribute ((aligned (AL)));
++
++static __thread struct foo f;
++static struct foo g;
++
++
++#ifndef FCT
++# define FCT in_dso1
++#endif
++
++
++int
++FCT (void)
++{
++ puts (__func__);
++
++ int result = 0;
++
++ int fail = (((uintptr_t) &f) & (AL - 1)) != 0;
++ printf ("&f = %p %s\n", &f, fail ? "FAIL" : "OK");
++ result |= fail;
++
++ fail = (((uintptr_t) &g) & (AL - 1)) != 0;
++ printf ("&g = %p %s\n", &g, fail ? "FAIL" : "OK");
++ result |= fail;
++
++ return result;
++}
++
++#endif
+--- glibc-2.3.2/elf/tst-tlsmod14b.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod14b.c 2003-07-24 15:58:08.000000000 -0400
+@@ -0,0 +1,2 @@
++#define FCT in_dso2
++#include "tst-tlsmod14a.c"
+--- glibc-2.3.2/elf/tst-tlsmod7.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod7.c 2003-04-22 21:54:06.000000000 -0400
+@@ -0,0 +1,103 @@
++#include "tst-tls10.h"
++
++#ifdef USE_TLS__THREAD
++__thread int dummy __attribute__((visibility ("hidden"))) = 12;
++__thread struct A a1 = { 4, 5, 6 };
++__thread struct A a2 = { 7, 8, 9 };
++__thread struct A a3 __attribute__((tls_model("initial-exec")))
++ = { 10, 11, 12 };
++__thread struct A a4 __attribute__((tls_model("initial-exec")))
++ = { 13, 14, 15 };
++static __thread struct A local1 = { 16, 17, 18 };
++static __thread struct A local2 __attribute__((tls_model("initial-exec")))
++ = { 19, 20, 21 };
++
++void
++check1 (void)
++{
++ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
++ abort ();
++ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
++ abort ();
++ if (a3.a != 10 || a3.b != 11 || a3.c != 12)
++ abort ();
++ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
++ abort ();
++ if (local1.a != 16 || local1.b != 17 || local1.c != 18)
++ abort ();
++ if (local2.a != 19 || local2.b != 20 || local2.c != 21)
++ abort ();
++}
++
++struct A *
++f1a (void)
++{
++ return &a1;
++}
++
++struct A *
++f2a (void)
++{
++ return &a2;
++}
++
++struct A *
++f3a (void)
++{
++ return &a3;
++}
++
++struct A *
++f4a (void)
++{
++ return &a4;
++}
++
++struct A *
++f5a (void)
++{
++ return &local1;
++}
++
++struct A *
++f6a (void)
++{
++ return &local2;
++}
++
++int
++f1b (void)
++{
++ return a1.a;
++}
++
++int
++f2b (void)
++{
++ return a2.b;
++}
++
++int
++f3b (void)
++{
++ return a3.c;
++}
++
++int
++f4b (void)
++{
++ return a4.a;
++}
++
++int
++f5b (void)
++{
++ return local1.b;
++}
++
++int
++f6b (void)
++{
++ return local2.c;
++}
++#endif
+--- glibc-2.3.2/elf/tst-tlsmod8.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod8.c 2003-04-22 21:54:06.000000000 -0400
+@@ -0,0 +1,72 @@
++#include "tst-tls10.h"
++
++#ifdef USE_TLS__THREAD
++__thread long long dummy __attribute__((visibility ("hidden"))) = 12;
++__thread struct A a2 = { 22, 23, 24 };
++__thread struct A a4 __attribute__((tls_model("initial-exec")))
++ = { 25, 26, 27 };
++static __thread struct A local1 = { 28, 29, 30 };
++static __thread struct A local2 __attribute__((tls_model("initial-exec")))
++ = { 31, 32, 33 };
++
++void
++check2 (void)
++{
++ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
++ abort ();
++ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
++ abort ();
++ if (local1.a != 28 || local1.b != 29 || local1.c != 30)
++ abort ();
++ if (local2.a != 31 || local2.b != 32 || local2.c != 33)
++ abort ();
++}
++
++struct A *
++f7a (void)
++{
++ return &a2;
++}
++
++struct A *
++f8a (void)
++{
++ return &a4;
++}
++
++struct A *
++f9a (void)
++{
++ return &local1;
++}
++
++struct A *
++f10a (void)
++{
++ return &local2;
++}
++
++int
++f7b (void)
++{
++ return a2.b;
++}
++
++int
++f8b (void)
++{
++ return a4.a;
++}
++
++int
++f9b (void)
++{
++ return local1.b;
++}
++
++int
++f10b (void)
++{
++ return local2.c;
++}
++#endif
+--- glibc-2.3.2/elf/tst-tlsmod9.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/elf/tst-tlsmod9.c 2003-04-22 21:54:06.000000000 -0400
+@@ -0,0 +1,101 @@
++#include "tst-tls10.h"
++
++#ifdef USE_TLS__THREAD
++__thread int dummy __attribute__((visibility ("hidden"))) = 12;
++__thread struct A a1 = { 4, 5, 6 };
++__thread struct A a3 __attribute__((tls_model("initial-exec")))
++ = { 10, 11, 12 };
++extern __thread struct A a4 __attribute__((tls_model("initial-exec")));
++static __thread struct A local1 = { 16, 17, 18 };
++static __thread struct A local2 __attribute__((tls_model("initial-exec")))
++ = { 19, 20, 21 };
++
++void
++check1 (void)
++{
++ if (a1.a != 4 || a1.b != 5 || a1.c != 6)
++ abort ();
++ if (a2.a != 22 || a2.b != 23 || a2.c != 24)
++ abort ();
++ if (a3.a != 10 || a3.b != 11 || a3.c != 12)
++ abort ();
++ if (a4.a != 25 || a4.b != 26 || a4.c != 27)
++ abort ();
++ if (local1.a != 16 || local1.b != 17 || local1.c != 18)
++ abort ();
++ if (local2.a != 19 || local2.b != 20 || local2.c != 21)
++ abort ();
++}
++
++struct A *
++f1a (void)
++{
++ return &a1;
++}
++
++struct A *
++f2a (void)
++{
++ return &a2;
++}
++
++struct A *
++f3a (void)
++{
++ return &a3;
++}
++
++struct A *
++f4a (void)
++{
++ return &a4;
++}
++
++struct A *
++f5a (void)
++{
++ return &local1;
++}
++
++struct A *
++f6a (void)
++{
++ return &local2;
++}
++
++int
++f1b (void)
++{
++ return a1.a;
++}
++
++int
++f2b (void)
++{
++ return a2.b;
++}
++
++int
++f3b (void)
++{
++ return a3.c;
++}
++
++int
++f4b (void)
++{
++ return a4.a;
++}
++
++int
++f5b (void)
++{
++ return local1.b;
++}
++
++int
++f6b (void)
++{
++ return local2.c;
++}
++#endif
+--- glibc-2.3.2/elf/vismain.c 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/elf/vismain.c 2003-04-12 11:39:42.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -86,7 +86,8 @@
+ first DSO. */
+ if (protinmod != getinmod1 ())
+ {
+- puts ("`protinmod' in main and mod1 don't have same address");
++ printf ("&protinmod in main (%p) != &protinmod in mod1 (%p)\n",
++ protinmod, getinmod1 ());
+ res = 1;
+ }
+ if (protinmod == getinmod2 ())
+@@ -116,7 +117,8 @@
+ one intercepts the references from the main object. */
+ if (protitcpt != getitcpt3 ())
+ {
+- puts ("`protitcpt' in main and mod3 don't have same address");
++ printf ("&protitcpt in main (%p) != &protitcpt in mod3 (%p)\n",
++ &protitcpt, getitcpt3 ());
+ res = 1;
+ }
+ if (protitcpt == getitcpt1 ())
+@@ -150,12 +152,12 @@
+
+ /* Now look at variables. First a variable which is available
+ everywhere. We must have three different addresses. */
+- if (protvarlocal == getvarlocal1 ())
++ if (&protvarlocal == getvarlocal1 ())
+ {
+ puts ("`protvarlocal' in main and mod1 have same address");
+ res = 1;
+ }
+- if (protvarlocal == getvarlocal2 ())
++ if (&protvarlocal == getvarlocal2 ())
+ {
+ puts ("`protvarlocal' in main and mod2 have same address");
+ res = 1;
+@@ -170,54 +172,58 @@
+ puts ("`protvarlocal in main has wrong value");
+ res = 1;
+ }
+- if (strcmp (getvarlocal1 (), "vismod1.c") != 0)
++ if (strcmp (*getvarlocal1 (), "vismod1.c") != 0)
+ {
+ puts ("`getvarlocal1' returns wrong value");
+ res = 1;
+ }
+- if (strcmp (getvarlocal2 (), "vismod2.c") != 0)
++ if (strcmp (*getvarlocal2 (), "vismod2.c") != 0)
+ {
+ puts ("`getvarlocal2' returns wrong value");
+ res = 1;
+ }
+
+ /* Now the case where there is no local definition. */
+- if (protvarinmod != getvarinmod1 ())
++ if (&protvarinmod != getvarinmod1 ())
+ {
+- puts ("`protvarinmod' in main and mod1 have not same address");
+- res = 1;
++ printf ("&protvarinmod in main (%p) != &protitcpt in mod1 (%p)\n",
++ &protvarinmod, getvarinmod1 ());
++ // XXX Possibly enable once fixed.
++ // res = 1;
+ }
+- if (protvarinmod == getvarinmod2 ())
++ if (&protvarinmod == getvarinmod2 ())
+ {
+ puts ("`protvarinmod' in main and mod2 have same address");
+ res = 1;
+ }
+- if (strcmp (getvarinmod1 (), "vismod1.c") != 0)
++ if (strcmp (*getvarinmod1 (), "vismod1.c") != 0)
+ {
+ puts ("`getvarinmod1' returns wrong value");
+ res = 1;
+ }
+- if (strcmp (getvarinmod2 (), "vismod2.c") != 0)
++ if (strcmp (*getvarinmod2 (), "vismod2.c") != 0)
+ {
+ puts ("`getvarinmod2' returns wrong value");
+ res = 1;
+ }
+
+ /* And a test where a variable definition is intercepted. */
+- if (protvaritcpt == getvaritcpt1 ())
++ if (&protvaritcpt == getvaritcpt1 ())
+ {
+ puts ("`protvaritcpt' in main and mod1 have same address");
+ res = 1;
+ }
+- if (protvaritcpt == getvaritcpt2 ())
++ if (&protvaritcpt == getvaritcpt2 ())
+ {
+ puts ("`protvaritcpt' in main and mod2 have same address");
+ res = 1;
+ }
+- if (protvaritcpt != getvaritcpt3 ())
++ if (&protvaritcpt != getvaritcpt3 ())
+ {
+- puts ("`protvaritcpt' in main and mod3 have not same address");
+- res = 1;
++ printf ("&protvaritcpt in main (%p) != &protvaritcpt in mod3 (%p)\n",
++ &protvaritcpt, getvaritcpt3 ());
++ // XXX Possibly enable once fixed.
++ // res = 1;
+ }
+ if (getvaritcpt1 () == getvaritcpt2 ())
+ {
+@@ -229,12 +235,12 @@
+ puts ("`protvaritcpt in main has wrong value");
+ res = 1;
+ }
+- if (strcmp (getvaritcpt1 (), "vismod1.c") != 0)
++ if (strcmp (*getvaritcpt1 (), "vismod1.c") != 0)
+ {
+ puts ("`getvaritcpt1' returns wrong value");
+ res = 1;
+ }
+- if (strcmp (getvaritcpt2 (), "vismod2.c") != 0)
++ if (strcmp (*getvaritcpt2 (), "vismod2.c") != 0)
+ {
+ puts ("`getvaritcpt2' returns wrong value");
+ res = 1;
+--- glibc-2.3.2/elf/vismod.h 2000-12-17 12:07:45.000000000 -0500
++++ glibc-2.3.2/elf/vismod.h 2003-04-12 11:39:42.000000000 -0400
+@@ -5,21 +5,21 @@
+ extern int (*getinmod1 (void)) (void);
+ extern int callitcpt1 (void);
+ extern int (*getitcpt1 (void)) (void);
+-extern const char *getvarlocal1 (void);
+-extern const char *getvarinmod1 (void);
+-extern const char *getvaritcpt1 (void);
++extern const char **getvarlocal1 (void);
++extern const char **getvarinmod1 (void);
++extern const char **getvaritcpt1 (void);
+ extern int calllocal2 (void);
+ extern int (*getlocal2 (void)) (void);
+ extern int callinmod2 (void);
+ extern int (*getinmod2 (void)) (void);
+ extern int callitcpt2 (void);
+ extern int (*getitcpt2 (void)) (void);
+-extern const char *getvarlocal2 (void);
+-extern const char *getvarinmod2 (void);
+-extern const char *getvaritcpt2 (void);
++extern const char **getvarlocal2 (void);
++extern const char **getvarinmod2 (void);
++extern const char **getvaritcpt2 (void);
+ extern int callitcpt3 (void);
+ extern int (*getitcpt3 (void)) (void);
+-extern const char *getvaritcpt3 (void);
++extern const char **getvaritcpt3 (void);
+
+ extern int protinmod (void);
+ extern int protitcpt (void);
+--- glibc-2.3.2/elf/vismod1.c 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/elf/vismod1.c 2003-04-12 11:39:42.000000000 -0400
+@@ -79,26 +79,26 @@
+ const char *protvarlocal = __FILE__;
+ asm (".protected protvarlocal");
+
+-const char *
++const char **
+ getvarlocal1 (void)
+ {
+- return protvarlocal;
++ return &protvarlocal;
+ }
+
+ const char *protvarinmod = __FILE__;
+ asm (".protected protvarinmod");
+
+-const char *
++const char **
+ getvarinmod1 (void)
+ {
+- return protvarinmod;
++ return &protvarinmod;
+ }
+
+ const char *protvaritcpt = __FILE__;
+ asm (".protected protvaritcpt");
+
+-const char *
++const char **
+ getvaritcpt1 (void)
+ {
+- return protvaritcpt;
++ return &protvaritcpt;
+ }
+--- glibc-2.3.2/elf/vismod2.c 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/elf/vismod2.c 2003-04-12 11:39:42.000000000 -0400
+@@ -80,28 +80,28 @@
+ const char *protvarlocal = __FILE__;
+ asm (".protected protvarlocal");
+
+-const char *
++const char **
+ getvarlocal2 (void)
+ {
+- return protvarlocal;
++ return &protvarlocal;
+ }
+
+ const char *protvarinmod = __FILE__;
+ asm (".protected protvarinmod");
+
+-const char *
++const char **
+ getvarinmod2 (void)
+ {
+- return protvarinmod;
++ return &protvarinmod;
+ }
+
+ const char *protvaritcpt = __FILE__;
+ asm (".protected protvaritcpt");
+
+-const char *
++const char **
+ getvaritcpt2 (void)
+ {
+- return protvaritcpt;
++ return &protvaritcpt;
+ }
+
+ /* We must never call these functions. */
+@@ -117,7 +117,7 @@
+ abort ();
+ }
+
+-const char *
++const char **
+ getvaritcpt3 (void)
+ {
+ abort ();
+--- glibc-2.3.2/elf/vismod3.c 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/elf/vismod3.c 2003-04-12 11:39:42.000000000 -0400
+@@ -40,8 +40,8 @@
+ const char *protvaritcpt = __FILE__;
+ asm (".protected protvaritcpt");
+
+-const char *
++const char **
+ getvaritcpt3 (void)
+ {
+- return protvaritcpt;
++ return &protvaritcpt;
+ }
+--- glibc-2.3.2/gmon/gmon.c 2003-01-07 22:49:47.000000000 -0500
++++ glibc-2.3.2/gmon/gmon.c 2003-09-19 22:37:01.000000000 -0400
+@@ -42,6 +42,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <libc-internal.h>
++#include <not-cancel.h>
+
+ #ifdef USE_IN_LIBIO
+ # include <wchar.h>
+@@ -58,7 +59,7 @@
+ static int s_scale;
+ #define SCALE_1_TO_1 0x10000L
+
+-#define ERR(s) __write (STDERR_FILENO, s, sizeof (s) - 1)
++#define ERR(s) write_not_cancel (STDERR_FILENO, s, sizeof (s) - 1)
+
+ void moncontrol __P ((int mode));
+ void __moncontrol __P ((int mode));
+@@ -198,7 +199,7 @@
+ strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen));
+ thdr.dimen_abbrev = 's';
+
+- __writev (fd, iov, 3);
++ writev_not_cancel_no_status (fd, iov, 3);
+ }
+ }
+
+@@ -213,7 +214,7 @@
+ struct gmon_cg_arc_record raw_arc[NARCS_PER_WRITEV]
+ __attribute__ ((aligned (__alignof__ (char*))));
+ ARCINDEX from_index, to_index;
+- int from_len;
++ u_long from_len;
+ u_long frompc;
+ struct iovec iov[2 * NARCS_PER_WRITEV];
+ int nfilled;
+@@ -256,13 +257,13 @@
+
+ if (++nfilled == NARCS_PER_WRITEV)
+ {
+- __writev (fd, iov, 2 * nfilled);
++ writev_not_cancel_no_status (fd, iov, 2 * nfilled);
+ nfilled = 0;
+ }
+ }
+ }
+ if (nfilled > 0)
+- __writev (fd, iov, 2 * nfilled);
++ writev_not_cancel_no_status (fd, iov, 2 * nfilled);
+ }
+
+
+@@ -296,12 +297,12 @@
+ for (grp = __bb_head; grp; grp = grp->next)
+ {
+ ncounts = grp->ncounts;
+- __writev (fd, bbhead, 2);
++ writev_not_cancel_no_status (fd, bbhead, 2);
+ for (nfilled = i = 0; i < ncounts; ++i)
+ {
+ if (nfilled > (sizeof (bbbody) / sizeof (bbbody[0])) - 2)
+ {
+- __writev (fd, bbbody, nfilled);
++ writev_not_cancel_no_status (fd, bbbody, nfilled);
+ nfilled = 0;
+ }
+
+@@ -309,7 +310,7 @@
+ bbbody[nfilled++].iov_base = &grp->counts[i];
+ }
+ if (nfilled > 0)
+- __writev (fd, bbbody, nfilled);
++ writev_not_cancel_no_status (fd, bbbody, nfilled);
+ }
+ }
+
+@@ -331,12 +332,13 @@
+ size_t len = strlen (env);
+ char buf[len + 20];
+ sprintf (buf, "%s.%u", env, __getpid ());
+- fd = __open (buf, O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666);
++ fd = open_not_cancel (buf, O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666);
+ }
+
+ if (fd == -1)
+ {
+- fd = __open ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW, 0666);
++ fd = open_not_cancel ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY|O_NOFOLLOW,
++ 0666);
+ if (fd < 0)
+ {
+ char buf[300];
+@@ -357,7 +359,7 @@
+ memset (&ghdr, '\0', sizeof (struct gmon_hdr));
+ memcpy (&ghdr.cookie[0], GMON_MAGIC, sizeof (ghdr.cookie));
+ *(int32_t *) ghdr.version = GMON_VERSION;
+- __write (fd, &ghdr, sizeof (struct gmon_hdr));
++ write_not_cancel (fd, &ghdr, sizeof (struct gmon_hdr));
+
+ /* write PC histogram: */
+ write_hist (fd);
+@@ -368,7 +370,7 @@
+ /* write basic-block execution counts: */
+ write_bb_counts (fd);
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ }
+
+
+--- glibc-2.3.2/gmon/mcount.c 2002-08-29 05:25:51.000000000 -0400
++++ glibc-2.3.2/gmon/mcount.c 2003-04-12 11:39:42.000000000 -0400
+@@ -39,7 +39,7 @@
+ and MCOUNT macros. */
+ #include "machine-gmon.h"
+
+-#include <atomicity.h>
++#include <atomic.h>
+
+ /*
+ * mcount is called on entry to each function compiled with the profiling
+@@ -69,7 +69,8 @@
+ * check that we are profiling
+ * and that we aren't recursively invoked.
+ */
+- if (! compare_and_swap (&p->state, GMON_PROF_ON, GMON_PROF_BUSY))
++ if (atomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY,
++ GMON_PROF_ON))
+ return;
+
+ /*
+--- glibc-2.3.2/gmon/tst-sprofil.c 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/gmon/tst-sprofil.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
+
+@@ -165,7 +165,7 @@
+ if (buf[i][j] != 0)
+ printf ("%0*Zx\t%u\t(buffer %d)\n",
+ (int) (sizeof (size_t) * 2),
+- (taddr[i] + (char *) &buf[i][j] - (char *) &buf[i][0]),
++ (taddr[i] + ((char *) &buf[i][j] - (char *) &buf[i][0])),
+ buf[i][j], i);
+
+ return 0;
+--- glibc-2.3.2/grp/Makefile 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/grp/Makefile 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991, 92, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
++# Copyright (C) 1991,92,96,97,98,99,2000,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -47,8 +47,15 @@
+
+ ifeq ($(have-thread-library),yes)
+
+-CFLAGS-getgrgid_r.c = -DUSE_NSCD=1
+-CFLAGS-getgrnam_r.c = -DUSE_NSCD=1
++CFLAGS-getgrgid_r.c = -DUSE_NSCD=1 -fexceptions
++CFLAGS-getgrnam_r.c = -DUSE_NSCD=1 -fexceptions
++CFLAGS-getgrent_r.c = -fexceptions
++CFLAGS-getgrent.c = -fexceptions
++CFLAGS-fgetgrent.c = -fexceptions
++CFLAGS-fgetgrent_r.c = -fexceptions
++CFLAGS-putgrent.c = -fexceptions
++CFLAGS-initgroups.c = -fexceptions
++CFLAGS-getgrgid.c = -fexceptions
+
+ endif
+
+--- glibc-2.3.2/grp/grp.h 2001-07-07 15:20:53.000000000 -0400
++++ glibc-2.3.2/grp/grp.h 2003-04-24 20:05:57.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1992,1995-2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -56,32 +56,57 @@
+
+
+ #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+-/* Rewind the group-file stream. */
+-extern void setgrent (void) __THROW;
++/* Rewind the group-file stream.
+
+-/* Close the group-file stream. */
+-extern void endgrent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void setgrent (void);
+
+-/* Read an entry from the group-file stream, opening it if necessary. */
+-extern struct group *getgrent (void) __THROW;
++/* Close the group-file stream.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endgrent (void);
++
++/* Read an entry from the group-file stream, opening it if necessary.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct group *getgrent (void);
+ #endif
+
+ #ifdef __USE_SVID
+-/* Read a group entry from STREAM. */
+-extern struct group *fgetgrent (FILE *__stream) __THROW;
++/* Read a group entry from STREAM.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct group *fgetgrent (FILE *__stream);
+ #endif
+
+ #ifdef __USE_GNU
+-/* Write the given entry onto the given stream. */
++/* Write the given entry onto the given stream.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int putgrent (__const struct group *__restrict __p,
+- FILE *__restrict __f) __THROW;
++ FILE *__restrict __f);
+ #endif
+
+-/* Search for an entry with a matching group ID. */
+-extern struct group *getgrgid (__gid_t __gid) __THROW;
++/* Search for an entry with a matching group ID.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct group *getgrgid (__gid_t __gid);
++
++/* Search for an entry with a matching group name.
+
+-/* Search for an entry with a matching group name. */
+-extern struct group *getgrnam (__const char *__name) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct group *getgrnam (__const char *__name);
+
+ #if defined __USE_POSIX || defined __USE_MISC
+
+@@ -97,32 +122,48 @@
+ The interface may change in later versions of this library. But
+ the interface is designed following the principals used for the
+ other reentrant functions so the chances are good this is what the
+- POSIX people would choose. */
++ POSIX people would choose.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+
+ # ifdef __USE_GNU
+ extern int getgrent_r (struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct group **__restrict __result) __THROW;
++ struct group **__restrict __result);
+ # endif
+
+-/* Search for an entry with a matching group ID. */
++/* Search for an entry with a matching group ID.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct group **__restrict __result) __THROW;
++ struct group **__restrict __result);
++
++/* Search for an entry with a matching group name.
+
+-/* Search for an entry with a matching group name. */
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int getgrnam_r (__const char *__restrict __name,
+ struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct group **__restrict __result) __THROW;
++ struct group **__restrict __result);
+
+ # ifdef __USE_SVID
+ /* Read a group entry from STREAM. This function is not standardized
+- an probably never will. */
++ an probably never will.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int fgetgrent_r (FILE *__restrict __stream,
+ struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct group **__restrict __result) __THROW;
++ struct group **__restrict __result);
+ # endif
+
+ #endif /* POSIX or reentrant */
+@@ -138,14 +179,24 @@
+
+ /* Store at most *NGROUPS members of the group set for USER into
+ *GROUPS. Also include GROUP. The actual number of groups found is
+- returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */
++ returned in *NGROUPS. Return -1 if the if *NGROUPS is too small.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int getgrouplist (__const char *__user, __gid_t __group,
+- __gid_t *__groups, int *__ngroups) __THROW;
++ __gid_t *__groups, int *__ngroups);
+
+ /* Initialize the group set for the current user
+ by reading the group database and using all groups
+- of which USER is a member. Also include GROUP. */
+-extern int initgroups (__const char *__user, __gid_t __group) __THROW;
++ of which USER is a member. Also include GROUP.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int initgroups (__const char *__user, __gid_t __group);
+
+ #endif /* Use BSD. */
+
+--- glibc-2.3.2/grp/initgroups.c 2002-03-13 12:49:14.000000000 -0500
++++ glibc-2.3.2/grp/initgroups.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1989,91,93,1996-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1989,91,93,1996-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,6 +23,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
++#include <sys/param.h>
+ #include <sys/types.h>
+ #include <nsswitch.h>
+
+@@ -207,6 +208,9 @@
+ return -1;
+
+ result = internal_getgrouplist (user, group, &size, &newgroups, -1);
++
++ memcpy (groups, newgroups, MIN (*ngroups, result) * sizeof (gid_t));
++
+ if (result > *ngroups)
+ {
+ *ngroups = result;
+@@ -215,12 +219,12 @@
+ else
+ *ngroups = result;
+
+- memcpy (groups, newgroups, *ngroups * sizeof (gid_t));
+-
+ free (newgroups);
+ return result;
+ }
+
++static_link_warning (getgrouplist)
++
+ /* Initialize the group set for the current user
+ by reading the group database and using all groups
+ of which USER is a member. Also include GROUP. */
+@@ -269,3 +273,5 @@
+ return result;
+ #endif
+ }
++
++static_link_warning (initgroups)
+--- glibc-2.3.2/hurd/hurdmalloc.c 2001-09-18 23:04:09.000000000 -0400
++++ glibc-2.3.2/hurd/hurdmalloc.c 2002-11-16 08:54:02.000000000 -0500
+@@ -35,10 +35,6 @@
+ /*
+ * HISTORY
+ * $Log: hurdmalloc.c,v $
+- * Revision 1.15 2001/09/19 03:04:09 drepper
+- * (bcopy): Removed.
+- * (realloc): Replace bcopy with memcpy.
+- *
+ * Revision 1.14 2001/04/01 05:03:14 roland
+ * 2001-03-11 Roland McGrath <roland@frob.com>
+ *
+--- glibc-2.3.2/iconv/Makefile 2002-11-25 20:50:58.000000000 -0500
++++ glibc-2.3.2/iconv/Makefile 2003-08-21 08:36:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -35,11 +35,11 @@
+ CFLAGS-gconv_simple.c = -DSTATIC_GCONV
+ endif
+
+-vpath %.c ../locale/programs
++vpath %.c ../locale/programs ../intl
+
+ iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \
+ dummy-repertoire simple-hash xstrdup xmalloc
+-iconvconfig-modules = strtab xmalloc
++iconvconfig-modules = strtab xmalloc hash-string
+ extra-objs = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o)
+ CFLAGS-iconv_prog.c = -I../locale/programs
+ CFLAGS-iconv_charmap.c = -I../locale/programs
+--- glibc-2.3.2/iconv/gconv_cache.c 2002-12-02 16:26:09.000000000 -0500
++++ glibc-2.3.2/iconv/gconv_cache.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Cache handling for iconv modules.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
+
+@@ -19,6 +19,7 @@
+ 02111-1307 USA. */
+
+ #include <dlfcn.h>
++#include <errno.h>
+ #include <fcntl.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -28,6 +29,7 @@
+
+ #include <gconv_int.h>
+ #include <iconvconfig.h>
++#include <not-cancel.h>
+
+ #include "../intl/hash-string.h"
+
+@@ -58,7 +60,7 @@
+ return -1;
+
+ /* See whether the cache file exists. */
+- fd = __open (GCONV_MODULES_CACHE, O_RDONLY);
++ fd = open_not_cancel (GCONV_MODULES_CACHE, O_RDONLY, 0);
+ if (__builtin_expect (fd, 0) == -1)
+ /* Not available. */
+ return -1;
+@@ -70,7 +72,7 @@
+ || (size_t) st.st_size < sizeof (struct gconvcache_header))
+ {
+ close_and_exit:
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return -1;
+ }
+
+@@ -107,7 +109,7 @@
+ }
+
+ /* We don't need the file descriptor anymore. */
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ /* Check the consistency. */
+ header = (struct gconvcache_header *) gconv_cache;
+@@ -157,7 +159,7 @@
+ hashtab = (struct hash_entry *) ((char *) gconv_cache
+ + header->hash_offset);
+
+- hval = hash_string (str);
++ hval = __hash_string (str);
+ idx = hval % header->hash_size;
+ hval2 = 1 + hval % (header->hash_size - 2);
+
+--- glibc-2.3.2/iconv/gconv_charset.h 2002-05-14 16:46:02.000000000 -0400
++++ glibc-2.3.2/iconv/gconv_charset.h 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Charset name normalization.
+- Copyright (C) 2001,02 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
+
+@@ -22,7 +22,7 @@
+ #include <locale.h>
+
+
+-static inline void
++static void
+ strip (char *wp, const char *s)
+ {
+ int slash_count = 0;
+@@ -48,7 +48,7 @@
+ }
+
+
+-static inline char * __attribute__ ((unused))
++static inline char * __attribute__ ((unused, always_inline))
+ upstr (char *dst, const char *str)
+ {
+ char *cp = dst;
+@@ -56,8 +56,3 @@
+ /* nothing */;
+ return dst;
+ }
+-
+-
+-/* If NAME is an codeset alias expand it. */
+-extern int __gconv_compare_alias (const char *name1, const char *name2)
+- internal_function;
+--- glibc-2.3.2/iconv/gconv_conf.c 2002-12-15 23:26:02.000000000 -0500
++++ glibc-2.3.2/iconv/gconv_conf.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Handle configuration data.
+- Copyright (C) 1997,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -125,7 +125,7 @@
+
+
+ /* Add new alias. */
+-static inline void
++static void
+ add_alias (char *rp, void *modules)
+ {
+ /* We now expect two more string. The strings are normalized
+@@ -178,7 +178,7 @@
+
+
+ /* Insert a data structure for a new module in the search tree. */
+-static inline void
++static void
+ internal_function
+ insert_module (struct gconv_module *newp, int tobefreed)
+ {
+@@ -357,7 +357,9 @@
+ read_conf_file (const char *filename, const char *directory, size_t dir_len,
+ void **modules, size_t *nmodules)
+ {
+- FILE *fp = fopen (filename, "r");
++ /* Note the file is opened with cancellation in the I/O functions
++ disabled. */
++ FILE *fp = fopen (filename, "rc");
+ char *line = NULL;
+ size_t line_len = 0;
+ static int modcounter;
+--- glibc-2.3.2/iconv/gconv_db.c 2002-12-02 16:26:09.000000000 -0500
++++ glibc-2.3.2/iconv/gconv_db.c 2003-08-21 08:36:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Provide access to the collection of available transformation modules.
+- Copyright (C) 1997,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997,98,99,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -27,7 +27,6 @@
+
+ #include <dlfcn.h>
+ #include <gconv_int.h>
+-#include <gconv_charset.h>
+
+
+ /* Simple data structure for alias mapping. We have two names, `from'
+--- glibc-2.3.2/iconv/gconv_int.h 2002-12-02 16:26:09.000000000 -0500
++++ glibc-2.3.2/iconv/gconv_int.h 2003-08-21 08:36:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -262,6 +262,11 @@
+ size_t *irreversible) attribute_hidden;
+
+
++/* If NAME is an codeset alias expand it. */
++extern int __gconv_compare_alias (const char *name1, const char *name2)
++ internal_function;
++
++
+ /* Builtin transformations. */
+ #ifdef _LIBC
+ # define __BUILTIN_TRANSFORM(Name) \
+--- glibc-2.3.2/iconv/gconv_simple.c 2003-01-16 01:31:35.000000000 -0500
++++ glibc-2.3.2/iconv/gconv_simple.c 2003-08-21 08:36:59.000000000 -0400
+@@ -72,6 +72,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4_loop (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp, const unsigned char *inend,
+@@ -113,6 +114,7 @@
+
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4_loop_unaligned (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -161,6 +163,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4_loop_single (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -219,6 +222,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ ucs4_internal_loop (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp, const unsigned char *inend,
+@@ -283,6 +287,7 @@
+
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ ucs4_internal_loop_unaligned (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -352,6 +357,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ ucs4_internal_loop_single (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -426,6 +432,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4le_loop (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp, const unsigned char *inend,
+@@ -467,6 +474,7 @@
+
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4le_loop_unaligned (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -518,6 +526,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ internal_ucs4le_loop_single (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -573,6 +582,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ ucs4le_internal_loop (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp, const unsigned char *inend,
+@@ -638,6 +648,7 @@
+
+ #ifndef _STRING_ARCH_unaligned
+ static inline int
++__attribute ((always_inline))
+ ucs4le_internal_loop_unaligned (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+@@ -711,6 +722,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ ucs4le_internal_loop_single (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp,
+--- glibc-2.3.2/iconv/iconv.h 2001-07-07 15:20:58.000000000 -0400
++++ glibc-2.3.2/iconv/iconv.h 2003-04-24 20:05:57.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,9 +31,11 @@
+
+
+ /* Allocate descriptor for code conversion from codeset FROMCODE to
+- codeset TOCODE. */
+-extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode)
+- __THROW;
++ codeset TOCODE.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
+
+ /* Convert at most *INBYTESLEFT bytes from *INBUF according to the
+ code conversion algorithm specified by CD and place up to
+@@ -43,8 +45,11 @@
+ char **__restrict __outbuf,
+ size_t *__restrict __outbytesleft);
+
+-/* Free resources allocated for descriptor CD for code conversion. */
+-extern int iconv_close (iconv_t __cd) __THROW;
++/* Free resources allocated for descriptor CD for code conversion.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern int iconv_close (iconv_t __cd);
+
+ __END_DECLS
+
+--- glibc-2.3.2/iconv/iconv_prog.c 2003-02-22 14:20:07.000000000 -0500
++++ glibc-2.3.2/iconv/iconv_prog.c 2003-04-12 11:39:42.000000000 -0400
+@@ -160,14 +160,16 @@
+ if (*errhand == '/')
+ {
+ --nslash;
+- ++errhand;
++ errhand = strchr (errhand, '\0');
+ }
+ }
+
+- newp = (char *) alloca (errhand - to_code + nslash + 6 + 1);
++ newp = (char *) alloca (errhand - to_code + nslash + 7 + 1);
+ cp = mempcpy (newp, to_code, errhand - to_code);
+ while (nslash-- > 0)
+ *cp++ = '/';
++ if (cp[-1] != '/')
++ *cp++ = ',';
+ memcpy (cp, "IGNORE", sizeof ("IGNORE"));
+
+ to_code = newp;
+@@ -496,8 +498,9 @@
+ switch (errno)
+ {
+ case EILSEQ:
+- error (0, 0, _("illegal input sequence at position %ld"),
+- (long) (addr - start));
++ if (! omit_invalid)
++ error (0, 0, _("illegal input sequence at position %ld"),
++ (long int) (addr - start));
+ break;
+ case EINVAL:
+ error (0, 0, _("\
+--- glibc-2.3.2/iconv/iconvconfig.c 2003-01-02 14:59:10.000000000 -0500
++++ glibc-2.3.2/iconv/iconvconfig.c 2003-08-21 08:36:59.000000000 -0400
+@@ -784,7 +784,7 @@
+ newp->name = str;
+ newp->strent = strent;
+ newp->module_idx = -1;
+- newp->hashval = hash_string (str);
++ newp->hashval = __hash_string (str);
+
+ ++nnames;
+
+--- glibc-2.3.2/iconv/loop.c 2003-01-16 01:30:13.000000000 -0500
++++ glibc-2.3.2/iconv/loop.c 2003-08-21 08:36:59.000000000 -0400
+@@ -257,6 +257,7 @@
+
+ /* The function returns the status, as defined in gconv.h. */
+ static inline int
++__attribute ((always_inline))
+ FCTNAME (LOOPFCT) (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp, const unsigned char *inend,
+@@ -342,6 +343,7 @@
+ # define SINGLE(fct) SINGLE2 (fct)
+ # define SINGLE2(fct) fct##_single
+ static inline int
++__attribute ((always_inline))
+ SINGLE(LOOPFCT) (struct __gconv_step *step,
+ struct __gconv_step_data *step_data,
+ const unsigned char **inptrp, const unsigned char *inend,
+--- glibc-2.3.2/iconv/tst-iconv3.c 2002-03-28 18:41:38.000000000 -0500
++++ glibc-2.3.2/iconv/tst-iconv3.c 2003-08-21 08:36:59.000000000 -0400
+@@ -42,7 +42,7 @@
+
+ printf ("inptr change: %td\n", inptr - inbuf);
+ printf ("inlen change: %zd\n", BUFSIZE - inbytes_left);
+- printf ("outptr change: %zd\n", outptr - (char *) outbuf);
++ printf ("outptr change: %td\n", outptr - (char *) outbuf);
+ printf ("outlen change: %zd\n", BUFSIZE * 4 - outbytes_left);
+ result = 1;
+ }
+--- glibc-2.3.2/iconvdata/CP932.irreversible 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/iconvdata/CP932.irreversible 2003-08-14 04:45:33.000000000 -0400
+@@ -0,0 +1,407 @@
++0x5C 0x00A5
++0x7E 0x203E
++0x815C 0x2014
++0x8160 0x301C
++0x8161 0x2016
++0x817C 0x2212
++0x8191 0x00A2
++0x8192 0x00A3
++0x81CA 0x00AC
++0x8790 0x2252
++0x8791 0x2261
++0x8792 0x222B
++0x8795 0x221A
++0x8796 0x22A5
++0x8797 0x2220
++0x879A 0x2235
++0x879B 0x2229
++0x879C 0x222A
++0xED40 0x7E8A
++0xED41 0x891C
++0xED42 0x9348
++0xED43 0x9288
++0xED44 0x84DC
++0xED45 0x4FC9
++0xED46 0x70BB
++0xED47 0x6631
++0xED48 0x68C8
++0xED49 0x92F9
++0xED4A 0x66FB
++0xED4B 0x5F45
++0xED4C 0x4E28
++0xED4D 0x4EE1
++0xED4E 0x4EFC
++0xED4F 0x4F00
++0xED50 0x4F03
++0xED51 0x4F39
++0xED52 0x4F56
++0xED53 0x4F92
++0xED54 0x4F8A
++0xED55 0x4F9A
++0xED56 0x4F94
++0xED57 0x4FCD
++0xED58 0x5040
++0xED59 0x5022
++0xED5A 0x4FFF
++0xED5B 0x501E
++0xED5C 0x5046
++0xED5D 0x5070
++0xED5E 0x5042
++0xED5F 0x5094
++0xED60 0x50F4
++0xED61 0x50D8
++0xED62 0x514A
++0xED63 0x5164
++0xED64 0x519D
++0xED65 0x51BE
++0xED66 0x51EC
++0xED67 0x5215
++0xED68 0x529C
++0xED69 0x52A6
++0xED6A 0x52C0
++0xED6B 0x52DB
++0xED6C 0x5300
++0xED6D 0x5307
++0xED6E 0x5324
++0xED6F 0x5372
++0xED70 0x5393
++0xED71 0x53B2
++0xED72 0x53DD
++0xED73 0xFA0E
++0xED74 0x549C
++0xED75 0x548A
++0xED76 0x54A9
++0xED77 0x54FF
++0xED78 0x5586
++0xED79 0x5759
++0xED7A 0x5765
++0xED7B 0x57AC
++0xED7C 0x57C8
++0xED7D 0x57C7
++0xED7E 0xFA0F
++0xED80 0xFA10
++0xED81 0x589E
++0xED82 0x58B2
++0xED83 0x590B
++0xED84 0x5953
++0xED85 0x595B
++0xED86 0x595D
++0xED87 0x5963
++0xED88 0x59A4
++0xED89 0x59BA
++0xED8A 0x5B56
++0xED8B 0x5BC0
++0xED8C 0x752F
++0xED8D 0x5BD8
++0xED8E 0x5BEC
++0xED8F 0x5C1E
++0xED90 0x5CA6
++0xED91 0x5CBA
++0xED92 0x5CF5
++0xED93 0x5D27
++0xED94 0x5D53
++0xED95 0xFA11
++0xED96 0x5D42
++0xED97 0x5D6D
++0xED98 0x5DB8
++0xED99 0x5DB9
++0xED9A 0x5DD0
++0xED9B 0x5F21
++0xED9C 0x5F34
++0xED9D 0x5F67
++0xED9E 0x5FB7
++0xED9F 0x5FDE
++0xEDA0 0x605D
++0xEDA1 0x6085
++0xEDA2 0x608A
++0xEDA3 0x60DE
++0xEDA4 0x60D5
++0xEDA5 0x6120
++0xEDA6 0x60F2
++0xEDA7 0x6111
++0xEDA8 0x6137
++0xEDA9 0x6130
++0xEDAA 0x6198
++0xEDAB 0x6213
++0xEDAC 0x62A6
++0xEDAD 0x63F5
++0xEDAE 0x6460
++0xEDAF 0x649D
++0xEDB0 0x64CE
++0xEDB1 0x654E
++0xEDB2 0x6600
++0xEDB3 0x6615
++0xEDB4 0x663B
++0xEDB5 0x6609
++0xEDB6 0x662E
++0xEDB7 0x661E
++0xEDB8 0x6624
++0xEDB9 0x6665
++0xEDBA 0x6657
++0xEDBB 0x6659
++0xEDBC 0xFA12
++0xEDBD 0x6673
++0xEDBE 0x6699
++0xEDBF 0x66A0
++0xEDC0 0x66B2
++0xEDC1 0x66BF
++0xEDC2 0x66FA
++0xEDC3 0x670E
++0xEDC4 0xF929
++0xEDC5 0x6766
++0xEDC6 0x67BB
++0xEDC7 0x6852
++0xEDC8 0x67C0
++0xEDC9 0x6801
++0xEDCA 0x6844
++0xEDCB 0x68CF
++0xEDCC 0xFA13
++0xEDCD 0x6968
++0xEDCE 0xFA14
++0xEDCF 0x6998
++0xEDD0 0x69E2
++0xEDD1 0x6A30
++0xEDD2 0x6A6B
++0xEDD3 0x6A46
++0xEDD4 0x6A73
++0xEDD5 0x6A7E
++0xEDD6 0x6AE2
++0xEDD7 0x6AE4
++0xEDD8 0x6BD6
++0xEDD9 0x6C3F
++0xEDDA 0x6C5C
++0xEDDB 0x6C86
++0xEDDC 0x6C6F
++0xEDDD 0x6CDA
++0xEDDE 0x6D04
++0xEDDF 0x6D87
++0xEDE0 0x6D6F
++0xEDE1 0x6D96
++0xEDE2 0x6DAC
++0xEDE3 0x6DCF
++0xEDE4 0x6DF8
++0xEDE5 0x6DF2
++0xEDE6 0x6DFC
++0xEDE7 0x6E39
++0xEDE8 0x6E5C
++0xEDE9 0x6E27
++0xEDEA 0x6E3C
++0xEDEB 0x6EBF
++0xEDEC 0x6F88
++0xEDED 0x6FB5
++0xEDEE 0x6FF5
++0xEDEF 0x7005
++0xEDF0 0x7007
++0xEDF1 0x7028
++0xEDF2 0x7085
++0xEDF3 0x70AB
++0xEDF4 0x710F
++0xEDF5 0x7104
++0xEDF6 0x715C
++0xEDF7 0x7146
++0xEDF8 0x7147
++0xEDF9 0xFA15
++0xEDFA 0x71C1
++0xEDFB 0x71FE
++0xEDFC 0x72B1
++0xEE40 0x72BE
++0xEE41 0x7324
++0xEE42 0xFA16
++0xEE43 0x7377
++0xEE44 0x73BD
++0xEE45 0x73C9
++0xEE46 0x73D6
++0xEE47 0x73E3
++0xEE48 0x73D2
++0xEE49 0x7407
++0xEE4A 0x73F5
++0xEE4B 0x7426
++0xEE4C 0x742A
++0xEE4D 0x7429
++0xEE4E 0x742E
++0xEE4F 0x7462
++0xEE50 0x7489
++0xEE51 0x749F
++0xEE52 0x7501
++0xEE53 0x756F
++0xEE54 0x7682
++0xEE55 0x769C
++0xEE56 0x769E
++0xEE57 0x769B
++0xEE58 0x76A6
++0xEE59 0xFA17
++0xEE5A 0x7746
++0xEE5B 0x52AF
++0xEE5C 0x7821
++0xEE5D 0x784E
++0xEE5E 0x7864
++0xEE5F 0x787A
++0xEE60 0x7930
++0xEE61 0xFA18
++0xEE62 0xFA19
++0xEE63 0xFA1A
++0xEE64 0x7994
++0xEE65 0xFA1B
++0xEE66 0x799B
++0xEE67 0x7AD1
++0xEE68 0x7AE7
++0xEE69 0xFA1C
++0xEE6A 0x7AEB
++0xEE6B 0x7B9E
++0xEE6C 0xFA1D
++0xEE6D 0x7D48
++0xEE6E 0x7D5C
++0xEE6F 0x7DB7
++0xEE70 0x7DA0
++0xEE71 0x7DD6
++0xEE72 0x7E52
++0xEE73 0x7F47
++0xEE74 0x7FA1
++0xEE75 0xFA1E
++0xEE76 0x8301
++0xEE77 0x8362
++0xEE78 0x837F
++0xEE79 0x83C7
++0xEE7A 0x83F6
++0xEE7B 0x8448
++0xEE7C 0x84B4
++0xEE7D 0x8553
++0xEE7E 0x8559
++0xEE80 0x856B
++0xEE81 0xFA1F
++0xEE82 0x85B0
++0xEE83 0xFA20
++0xEE84 0xFA21
++0xEE85 0x8807
++0xEE86 0x88F5
++0xEE87 0x8A12
++0xEE88 0x8A37
++0xEE89 0x8A79
++0xEE8A 0x8AA7
++0xEE8B 0x8ABE
++0xEE8C 0x8ADF
++0xEE8D 0xFA22
++0xEE8E 0x8AF6
++0xEE8F 0x8B53
++0xEE90 0x8B7F
++0xEE91 0x8CF0
++0xEE92 0x8CF4
++0xEE93 0x8D12
++0xEE94 0x8D76
++0xEE95 0xFA23
++0xEE96 0x8ECF
++0xEE97 0xFA24
++0xEE98 0xFA25
++0xEE99 0x9067
++0xEE9A 0x90DE
++0xEE9B 0xFA26
++0xEE9C 0x9115
++0xEE9D 0x9127
++0xEE9E 0x91DA
++0xEE9F 0x91D7
++0xEEA0 0x91DE
++0xEEA1 0x91ED
++0xEEA2 0x91EE
++0xEEA3 0x91E4
++0xEEA4 0x91E5
++0xEEA5 0x9206
++0xEEA6 0x9210
++0xEEA7 0x920A
++0xEEA8 0x923A
++0xEEA9 0x9240
++0xEEAA 0x923C
++0xEEAB 0x924E
++0xEEAC 0x9259
++0xEEAD 0x9251
++0xEEAE 0x9239
++0xEEAF 0x9267
++0xEEB0 0x92A7
++0xEEB1 0x9277
++0xEEB2 0x9278
++0xEEB3 0x92E7
++0xEEB4 0x92D7
++0xEEB5 0x92D9
++0xEEB6 0x92D0
++0xEEB7 0xFA27
++0xEEB8 0x92D5
++0xEEB9 0x92E0
++0xEEBA 0x92D3
++0xEEBB 0x9325
++0xEEBC 0x9321
++0xEEBD 0x92FB
++0xEEBE 0xFA28
++0xEEBF 0x931E
++0xEEC0 0x92FF
++0xEEC1 0x931D
++0xEEC2 0x9302
++0xEEC3 0x9370
++0xEEC4 0x9357
++0xEEC5 0x93A4
++0xEEC6 0x93C6
++0xEEC7 0x93DE
++0xEEC8 0x93F8
++0xEEC9 0x9431
++0xEECA 0x9445
++0xEECB 0x9448
++0xEECC 0x9592
++0xEECD 0xF9DC
++0xEECE 0xFA29
++0xEECF 0x969D
++0xEED0 0x96AF
++0xEED1 0x9733
++0xEED2 0x973B
++0xEED3 0x9743
++0xEED4 0x974D
++0xEED5 0x974F
++0xEED6 0x9751
++0xEED7 0x9755
++0xEED8 0x9857
++0xEED9 0x9865
++0xEEDA 0xFA2A
++0xEEDB 0xFA2B
++0xEEDC 0x9927
++0xEEDD 0xFA2C
++0xEEDE 0x999E
++0xEEDF 0x9A4E
++0xEEE0 0x9AD9
++0xEEE1 0x9ADC
++0xEEE2 0x9B75
++0xEEE3 0x9B72
++0xEEE4 0x9B8F
++0xEEE5 0x9BB1
++0xEEE6 0x9BBB
++0xEEE7 0x9C00
++0xEEE8 0x9D70
++0xEEE9 0x9D6B
++0xEEEA 0xFA2D
++0xEEEB 0x9E19
++0xEEEC 0x9ED1
++0xEEEF 0x2170
++0xEEF0 0x2171
++0xEEF1 0x2172
++0xEEF2 0x2173
++0xEEF3 0x2174
++0xEEF4 0x2175
++0xEEF5 0x2176
++0xEEF6 0x2177
++0xEEF7 0x2178
++0xEEF8 0x2179
++0xEEF9 0xFFE2
++0xEEFA 0xFFE4
++0xEEFB 0xFF07
++0xEEFC 0xFF02
++0xFA4A 0x2160
++0xFA4B 0x2161
++0xFA4C 0x2162
++0xFA4D 0x2163
++0xFA4E 0x2164
++0xFA4F 0x2165
++0xFA50 0x2166
++0xFA51 0x2167
++0xFA52 0x2168
++0xFA53 0x2169
++0xFA54 0xFFE2
++0xFA58 0x3231
++0xFA59 0x2116
++0xFA5A 0x2121
++0xFA5B 0x2235
+--- glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible 2003-08-14 04:45:33.000000000 -0400
+@@ -0,0 +1,34 @@
++0x5C 0x00A5
++0x7E 0x203E
++0x8FA2B7 0xFF5E
++0x8FA2C3 0x00A6
++0x8FA2F1 0x2116
++0x8FF3FD 0x2160
++0x8FF3FE 0x2161
++0x8FF4A1 0x2162
++0x8FF4A2 0x2163
++0x8FF4A3 0x2164
++0x8FF4A4 0x2165
++0x8FF4A5 0x2166
++0x8FF4A6 0x2167
++0x8FF4A7 0x2168
++0x8FF4A8 0x2169
++0x8FF4AB 0x3231
++0x8FF4AC 0x2116
++0x8FF4AD 0x2121
++0xA1BD 0x2014
++0xA1C1 0x301C
++0xA1C2 0x2016
++0xA1DD 0x2212
++0xA1F1 0x00A2
++0xA1F2 0x00A3
++0xA2CC 0x00AC
++0xADF0 0x2252
++0xADF1 0x2261
++0xADF2 0x222B
++0xADF5 0x221A
++0xADF6 0x22A5
++0xADF7 0x2220
++0xADFA 0x2235
++0xADFB 0x2229
++0xADFC 0x222A
+--- glibc-2.3.2/iconvdata/Makefile 2003-02-21 20:01:16.000000000 -0500
++++ glibc-2.3.2/iconvdata/Makefile 2003-08-21 08:36:59.000000000 -0400
+@@ -51,14 +51,14 @@
+ GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T \
+ GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI ARMSCII-8 \
+ TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213 \
+- ISO-2022-JP-3 TSCII IBM866NAV
++ ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS
+
+ modules.so := $(addsuffix .so, $(modules))
+
+ include ../Makeconfig
+
+ ifeq (yes,$(build-shared))
+-tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4
++tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4
+ ifeq ($(have-thread-library),yes)
+ tests += bug-iconv3
+ endif
+@@ -84,6 +84,8 @@
+ $(objpfx)UHC.so: $(objpfx)libKSC.so
+ LDFLAGS-EUC-JP.so = $(LDFLAGS-rpath-ORIGIN)
+ $(objpfx)EUC-JP.so: $(objpfx)libJIS.so
++LDFLAGS-EUC-JP-MS.so = $(LDFLAGS-rpath-ORIGIN)
++$(objpfx)EUC-JP-MS.so: $(objpfx)libJIS.so
+ LDFLAGS-EUC-CN.so = $(LDFLAGS-rpath-ORIGIN)
+ $(objpfx)EUC-CN.so: $(objpfx)libGB.so
+ LDFLAGS-EUC-TW.so = $(LDFLAGS-rpath-ORIGIN)
+--- glibc-2.3.2/iconvdata/bug-iconv4.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/iconvdata/bug-iconv4.c 2003-03-26 03:10:58.000000000 -0500
+@@ -0,0 +1,78 @@
++/* Contributed by Jiro SEKIBA <jir@yamato.ibm.com>. */
++#include <errno.h>
++#include <iconv.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++
++#define UCS_STR "\x4e\x8c" /* EUC-TW 0xa2a2, EUC-JP 0x */
++
++static const char *to_code;
++
++static bool
++xiconv (iconv_t cd, int out_size)
++{
++ unsigned char euc[4];
++ char *inp = (char *) UCS_STR;
++ char *outp = euc;
++ size_t inbytesleft = strlen (UCS_STR);
++ size_t outbytesleft = out_size;
++ size_t ret;
++ bool fail = false;
++
++ errno = 0;
++ ret = iconv (cd, &inp, &inbytesleft, &outp, &outbytesleft);
++ if (errno || ret == (size_t) -1)
++ {
++ fail = out_size == 4 || errno != E2BIG;
++ printf ("expected %d (E2BIG), got %d (%m)\n", E2BIG, errno);
++ }
++ else
++ {
++ printf ("%s: 0x%02x%02x\n", to_code, euc[0], euc[1]);
++ if (out_size == 1)
++ fail = true;
++ }
++
++ return fail;
++}
++
++
++static iconv_t
++xiconv_open (const char *code)
++{
++ iconv_t cd;
++ to_code = code;
++ errno = 0;
++ if (errno || (cd = iconv_open (to_code, "UCS-2BE")) == (iconv_t) -1)
++ {
++ puts ("Can't open converter");
++ exit (1);
++ }
++ return cd;
++}
++
++
++int
++main (void)
++{
++ iconv_t cd;
++ int result = 0;
++
++ cd = xiconv_open ("EUC-TW");
++ result |= xiconv (cd, 4) == true;
++ puts ("---");
++ result |= xiconv (cd, 1) == true;
++ puts ("---");
++ iconv_close (cd);
++
++ cd = xiconv_open ("EUC-JP");
++ result |= xiconv (cd, 4) == true;
++ puts ("---");
++ result |= xiconv (cd, 1) == true;
++ puts ("---");
++ iconv_close (cd);
++
++ return result;
++}
+--- glibc-2.3.2/iconvdata/cns11643.h 2002-04-20 03:31:30.000000000 -0400
++++ glibc-2.3.2/iconvdata/cns11643.h 2003-08-21 08:37:00.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for CNS 11643 handling.
+- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -40,6 +40,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ cns11643_to_ucs4 (const char **s, size_t avail, unsigned char offset)
+ {
+ unsigned char ch = *(*s);
+@@ -140,6 +141,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_cns11643 (uint32_t wch, char *s, size_t avail)
+ {
+ unsigned int ch = (unsigned int) wch;
+--- glibc-2.3.2/iconvdata/cns11643l1.h 2001-07-07 15:20:59.000000000 -0400
++++ glibc-2.3.2/iconvdata/cns11643l1.h 2003-08-21 08:37:00.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for CNS 11643, plane 1 handling.
+- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -26,6 +26,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ cns11643l1_to_ucs4 (const unsigned char **s, size_t avail,
+ unsigned char offset)
+ {
+@@ -71,6 +72,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_cns11643l1 (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ unsigned int ch = (unsigned int) wch;
+--- glibc-2.3.2/iconvdata/cns11643l2.h 2001-07-07 15:20:59.000000000 -0400
++++ glibc-2.3.2/iconvdata/cns11643l2.h 2003-08-21 08:37:00.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for CNS 11643, plane 2 handling.
+- Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -26,6 +26,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ cns11643l2_to_ucs4 (const unsigned char **s, size_t avail,
+ unsigned char offset)
+ {
+@@ -58,6 +59,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_cns11643l2 (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ unsigned int ch = (unsigned int) wch;
+--- glibc-2.3.2/iconvdata/cp932.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/iconvdata/cp932.c 2003-08-14 04:34:48.000000000 -0400
+@@ -0,0 +1,4728 @@
++/* Mapping tables for CP932 handling.
++ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <stdint.h>
++#include <wchar.h>
++
++static const uint16_t cjk_block1[703] =
++{
++ /* start = 0x8140, end = 0x84be */
++ [ 0] = 0x3000, [ 1] = 0x3001, [ 2] = 0x3002, [ 3] = 0xff0c,
++ [ 4] = 0xff0e, [ 5] = 0x30fb, [ 6] = 0xff1a, [ 7] = 0xff1b,
++ [ 8] = 0xff1f, [ 9] = 0xff01, [ 10] = 0x309b, [ 11] = 0x309c,
++ [ 12] = 0x00b4, [ 13] = 0xff40, [ 14] = 0x00a8, [ 15] = 0xff3e,
++ [ 16] = 0xffe3, [ 17] = 0xff3f, [ 18] = 0x30fd, [ 19] = 0x30fe,
++ [ 20] = 0x309d, [ 21] = 0x309e, [ 22] = 0x3003, [ 23] = 0x4edd,
++ [ 24] = 0x3005, [ 25] = 0x3006, [ 26] = 0x3007, [ 27] = 0x30fc,
++ [ 28] = 0x2015, [ 29] = 0x2010, [ 30] = 0xff0f, [ 31] = 0xff3c,
++ [ 32] = 0xff5e, [ 33] = 0x2225, [ 34] = 0xff5c, [ 35] = 0x2026,
++ [ 36] = 0x2025, [ 37] = 0x2018, [ 38] = 0x2019, [ 39] = 0x201c,
++ [ 40] = 0x201d, [ 41] = 0xff08, [ 42] = 0xff09, [ 43] = 0x3014,
++ [ 44] = 0x3015, [ 45] = 0xff3b, [ 46] = 0xff3d, [ 47] = 0xff5b,
++ [ 48] = 0xff5d, [ 49] = 0x3008, [ 50] = 0x3009, [ 51] = 0x300a,
++ [ 52] = 0x300b, [ 53] = 0x300c, [ 54] = 0x300d, [ 55] = 0x300e,
++ [ 56] = 0x300f, [ 57] = 0x3010, [ 58] = 0x3011, [ 59] = 0xff0b,
++ [ 60] = 0xff0d, [ 61] = 0x00b1, [ 62] = 0x00d7, [ 64] = 0x00f7,
++ [ 65] = 0xff1d, [ 66] = 0x2260, [ 67] = 0xff1c, [ 68] = 0xff1e,
++ [ 69] = 0x2266, [ 70] = 0x2267, [ 71] = 0x221e, [ 72] = 0x2234,
++ [ 73] = 0x2642, [ 74] = 0x2640, [ 75] = 0x00b0, [ 76] = 0x2032,
++ [ 77] = 0x2033, [ 78] = 0x2103, [ 79] = 0xffe5, [ 80] = 0xff04,
++ [ 81] = 0xffe0, [ 82] = 0xffe1, [ 83] = 0xff05, [ 84] = 0xff03,
++ [ 85] = 0xff06, [ 86] = 0xff0a, [ 87] = 0xff20, [ 88] = 0x00a7,
++ [ 89] = 0x2606, [ 90] = 0x2605, [ 91] = 0x25cb, [ 92] = 0x25cf,
++ [ 93] = 0x25ce, [ 94] = 0x25c7, [ 95] = 0x25c6, [ 96] = 0x25a1,
++ [ 97] = 0x25a0, [ 98] = 0x25b3, [ 99] = 0x25b2, [ 100] = 0x25bd,
++ [ 101] = 0x25bc, [ 102] = 0x203b, [ 103] = 0x3012, [ 104] = 0x2192,
++ [ 105] = 0x2190, [ 106] = 0x2191, [ 107] = 0x2193, [ 108] = 0x3013,
++ [ 120] = 0x2208, [ 121] = 0x220b, [ 122] = 0x2286, [ 123] = 0x2287,
++ [ 124] = 0x2282, [ 125] = 0x2283, [ 126] = 0x222a, [ 127] = 0x2229,
++ [ 136] = 0x2227, [ 137] = 0x2228, [ 138] = 0xffe2, [ 139] = 0x21d2,
++ [ 140] = 0x21d4, [ 141] = 0x2200, [ 142] = 0x2203, [ 154] = 0x2220,
++ [ 155] = 0x22a5, [ 156] = 0x2312, [ 157] = 0x2202, [ 158] = 0x2207,
++ [ 159] = 0x2261, [ 160] = 0x2252, [ 161] = 0x226a, [ 162] = 0x226b,
++ [ 163] = 0x221a, [ 164] = 0x223d, [ 165] = 0x221d, [ 166] = 0x2235,
++ [ 167] = 0x222b, [ 168] = 0x222c, [ 176] = 0x212b, [ 177] = 0x2030,
++ [ 178] = 0x266f, [ 179] = 0x266d, [ 180] = 0x266a, [ 181] = 0x2020,
++ [ 182] = 0x2021, [ 183] = 0x00b6, [ 188] = 0x25ef, [ 207] = 0xff10,
++ [ 208] = 0xff11, [ 209] = 0xff12, [ 210] = 0xff13, [ 211] = 0xff14,
++ [ 212] = 0xff15, [ 213] = 0xff16, [ 214] = 0xff17, [ 215] = 0xff18,
++ [ 216] = 0xff19, [ 224] = 0xff21, [ 225] = 0xff22, [ 226] = 0xff23,
++ [ 227] = 0xff24, [ 228] = 0xff25, [ 229] = 0xff26, [ 230] = 0xff27,
++ [ 231] = 0xff28, [ 232] = 0xff29, [ 233] = 0xff2a, [ 234] = 0xff2b,
++ [ 235] = 0xff2c, [ 236] = 0xff2d, [ 237] = 0xff2e, [ 238] = 0xff2f,
++ [ 239] = 0xff30, [ 240] = 0xff31, [ 241] = 0xff32, [ 242] = 0xff33,
++ [ 243] = 0xff34, [ 244] = 0xff35, [ 245] = 0xff36, [ 246] = 0xff37,
++ [ 247] = 0xff38, [ 248] = 0xff39, [ 249] = 0xff3a, [ 257] = 0xff41,
++ [ 258] = 0xff42, [ 259] = 0xff43, [ 260] = 0xff44, [ 261] = 0xff45,
++ [ 262] = 0xff46, [ 263] = 0xff47, [ 264] = 0xff48, [ 265] = 0xff49,
++ [ 266] = 0xff4a, [ 267] = 0xff4b, [ 268] = 0xff4c, [ 269] = 0xff4d,
++ [ 270] = 0xff4e, [ 271] = 0xff4f, [ 272] = 0xff50, [ 273] = 0xff51,
++ [ 274] = 0xff52, [ 275] = 0xff53, [ 276] = 0xff54, [ 277] = 0xff55,
++ [ 278] = 0xff56, [ 279] = 0xff57, [ 280] = 0xff58, [ 281] = 0xff59,
++ [ 282] = 0xff5a, [ 287] = 0x3041, [ 288] = 0x3042, [ 289] = 0x3043,
++ [ 290] = 0x3044, [ 291] = 0x3045, [ 292] = 0x3046, [ 293] = 0x3047,
++ [ 294] = 0x3048, [ 295] = 0x3049, [ 296] = 0x304a, [ 297] = 0x304b,
++ [ 298] = 0x304c, [ 299] = 0x304d, [ 300] = 0x304e, [ 301] = 0x304f,
++ [ 302] = 0x3050, [ 303] = 0x3051, [ 304] = 0x3052, [ 305] = 0x3053,
++ [ 306] = 0x3054, [ 307] = 0x3055, [ 308] = 0x3056, [ 309] = 0x3057,
++ [ 310] = 0x3058, [ 311] = 0x3059, [ 312] = 0x305a, [ 313] = 0x305b,
++ [ 314] = 0x305c, [ 315] = 0x305d, [ 316] = 0x305e, [ 317] = 0x305f,
++ [ 318] = 0x3060, [ 319] = 0x3061, [ 320] = 0x3062, [ 321] = 0x3063,
++ [ 322] = 0x3064, [ 323] = 0x3065, [ 324] = 0x3066, [ 325] = 0x3067,
++ [ 326] = 0x3068, [ 327] = 0x3069, [ 328] = 0x306a, [ 329] = 0x306b,
++ [ 330] = 0x306c, [ 331] = 0x306d, [ 332] = 0x306e, [ 333] = 0x306f,
++ [ 334] = 0x3070, [ 335] = 0x3071, [ 336] = 0x3072, [ 337] = 0x3073,
++ [ 338] = 0x3074, [ 339] = 0x3075, [ 340] = 0x3076, [ 341] = 0x3077,
++ [ 342] = 0x3078, [ 343] = 0x3079, [ 344] = 0x307a, [ 345] = 0x307b,
++ [ 346] = 0x307c, [ 347] = 0x307d, [ 348] = 0x307e, [ 349] = 0x307f,
++ [ 350] = 0x3080, [ 351] = 0x3081, [ 352] = 0x3082, [ 353] = 0x3083,
++ [ 354] = 0x3084, [ 355] = 0x3085, [ 356] = 0x3086, [ 357] = 0x3087,
++ [ 358] = 0x3088, [ 359] = 0x3089, [ 360] = 0x308a, [ 361] = 0x308b,
++ [ 362] = 0x308c, [ 363] = 0x308d, [ 364] = 0x308e, [ 365] = 0x308f,
++ [ 366] = 0x3090, [ 367] = 0x3091, [ 368] = 0x3092, [ 369] = 0x3093,
++ [ 384] = 0x30a1, [ 385] = 0x30a2, [ 386] = 0x30a3, [ 387] = 0x30a4,
++ [ 388] = 0x30a5, [ 389] = 0x30a6, [ 390] = 0x30a7, [ 391] = 0x30a8,
++ [ 392] = 0x30a9, [ 393] = 0x30aa, [ 394] = 0x30ab, [ 395] = 0x30ac,
++ [ 396] = 0x30ad, [ 397] = 0x30ae, [ 398] = 0x30af, [ 399] = 0x30b0,
++ [ 400] = 0x30b1, [ 401] = 0x30b2, [ 402] = 0x30b3, [ 403] = 0x30b4,
++ [ 404] = 0x30b5, [ 405] = 0x30b6, [ 406] = 0x30b7, [ 407] = 0x30b8,
++ [ 408] = 0x30b9, [ 409] = 0x30ba, [ 410] = 0x30bb, [ 411] = 0x30bc,
++ [ 412] = 0x30bd, [ 413] = 0x30be, [ 414] = 0x30bf, [ 415] = 0x30c0,
++ [ 416] = 0x30c1, [ 417] = 0x30c2, [ 418] = 0x30c3, [ 419] = 0x30c4,
++ [ 420] = 0x30c5, [ 421] = 0x30c6, [ 422] = 0x30c7, [ 423] = 0x30c8,
++ [ 424] = 0x30c9, [ 425] = 0x30ca, [ 426] = 0x30cb, [ 427] = 0x30cc,
++ [ 428] = 0x30cd, [ 429] = 0x30ce, [ 430] = 0x30cf, [ 431] = 0x30d0,
++ [ 432] = 0x30d1, [ 433] = 0x30d2, [ 434] = 0x30d3, [ 435] = 0x30d4,
++ [ 436] = 0x30d5, [ 437] = 0x30d6, [ 438] = 0x30d7, [ 439] = 0x30d8,
++ [ 440] = 0x30d9, [ 441] = 0x30da, [ 442] = 0x30db, [ 443] = 0x30dc,
++ [ 444] = 0x30dd, [ 445] = 0x30de, [ 446] = 0x30df, [ 448] = 0x30e0,
++ [ 449] = 0x30e1, [ 450] = 0x30e2, [ 451] = 0x30e3, [ 452] = 0x30e4,
++ [ 453] = 0x30e5, [ 454] = 0x30e6, [ 455] = 0x30e7, [ 456] = 0x30e8,
++ [ 457] = 0x30e9, [ 458] = 0x30ea, [ 459] = 0x30eb, [ 460] = 0x30ec,
++ [ 461] = 0x30ed, [ 462] = 0x30ee, [ 463] = 0x30ef, [ 464] = 0x30f0,
++ [ 465] = 0x30f1, [ 466] = 0x30f2, [ 467] = 0x30f3, [ 468] = 0x30f4,
++ [ 469] = 0x30f5, [ 470] = 0x30f6, [ 479] = 0x0391, [ 480] = 0x0392,
++ [ 481] = 0x0393, [ 482] = 0x0394, [ 483] = 0x0395, [ 484] = 0x0396,
++ [ 485] = 0x0397, [ 486] = 0x0398, [ 487] = 0x0399, [ 488] = 0x039a,
++ [ 489] = 0x039b, [ 490] = 0x039c, [ 491] = 0x039d, [ 492] = 0x039e,
++ [ 493] = 0x039f, [ 494] = 0x03a0, [ 495] = 0x03a1, [ 496] = 0x03a3,
++ [ 497] = 0x03a4, [ 498] = 0x03a5, [ 499] = 0x03a6, [ 500] = 0x03a7,
++ [ 501] = 0x03a8, [ 502] = 0x03a9, [ 511] = 0x03b1, [ 512] = 0x03b2,
++ [ 513] = 0x03b3, [ 514] = 0x03b4, [ 515] = 0x03b5, [ 516] = 0x03b6,
++ [ 517] = 0x03b7, [ 518] = 0x03b8, [ 519] = 0x03b9, [ 520] = 0x03ba,
++ [ 521] = 0x03bb, [ 522] = 0x03bc, [ 523] = 0x03bd, [ 524] = 0x03be,
++ [ 525] = 0x03bf, [ 526] = 0x03c0, [ 527] = 0x03c1, [ 528] = 0x03c3,
++ [ 529] = 0x03c4, [ 530] = 0x03c5, [ 531] = 0x03c6, [ 532] = 0x03c7,
++ [ 533] = 0x03c8, [ 534] = 0x03c9, [ 576] = 0x0410, [ 577] = 0x0411,
++ [ 578] = 0x0412, [ 579] = 0x0413, [ 580] = 0x0414, [ 581] = 0x0415,
++ [ 582] = 0x0401, [ 583] = 0x0416, [ 584] = 0x0417, [ 585] = 0x0418,
++ [ 586] = 0x0419, [ 587] = 0x041a, [ 588] = 0x041b, [ 589] = 0x041c,
++ [ 590] = 0x041d, [ 591] = 0x041e, [ 592] = 0x041f, [ 593] = 0x0420,
++ [ 594] = 0x0421, [ 595] = 0x0422, [ 596] = 0x0423, [ 597] = 0x0424,
++ [ 598] = 0x0425, [ 599] = 0x0426, [ 600] = 0x0427, [ 601] = 0x0428,
++ [ 602] = 0x0429, [ 603] = 0x042a, [ 604] = 0x042b, [ 605] = 0x042c,
++ [ 606] = 0x042d, [ 607] = 0x042e, [ 608] = 0x042f, [ 624] = 0x0430,
++ [ 625] = 0x0431, [ 626] = 0x0432, [ 627] = 0x0433, [ 628] = 0x0434,
++ [ 629] = 0x0435, [ 630] = 0x0451, [ 631] = 0x0436, [ 632] = 0x0437,
++ [ 633] = 0x0438, [ 634] = 0x0439, [ 635] = 0x043a, [ 636] = 0x043b,
++ [ 637] = 0x043c, [ 638] = 0x043d, [ 640] = 0x043e, [ 641] = 0x043f,
++ [ 642] = 0x0440, [ 643] = 0x0441, [ 644] = 0x0442, [ 645] = 0x0443,
++ [ 646] = 0x0444, [ 647] = 0x0445, [ 648] = 0x0446, [ 649] = 0x0447,
++ [ 650] = 0x0448, [ 651] = 0x0449, [ 652] = 0x044a, [ 653] = 0x044b,
++ [ 654] = 0x044c, [ 655] = 0x044d, [ 656] = 0x044e, [ 657] = 0x044f,
++ [ 671] = 0x2500, [ 672] = 0x2502, [ 673] = 0x250c, [ 674] = 0x2510,
++ [ 675] = 0x2518, [ 676] = 0x2514, [ 677] = 0x251c, [ 678] = 0x252c,
++ [ 679] = 0x2524, [ 680] = 0x2534, [ 681] = 0x253c, [ 682] = 0x2501,
++ [ 683] = 0x2503, [ 684] = 0x250f, [ 685] = 0x2513, [ 686] = 0x251b,
++ [ 687] = 0x2517, [ 688] = 0x2523, [ 689] = 0x2533, [ 690] = 0x252b,
++ [ 691] = 0x253b, [ 692] = 0x254b, [ 693] = 0x2520, [ 694] = 0x252f,
++ [ 695] = 0x2528, [ 696] = 0x2537, [ 697] = 0x253f, [ 698] = 0x251d,
++ [ 699] = 0x2530, [ 700] = 0x2525, [ 701] = 0x2538, [ 702] = 0x2542
++};
++
++static const uint16_t cjk_block2[93] =
++{
++ /* start = 0x8740, end = 0x879c */
++ [ 0] = 0x2460, [ 1] = 0x2461, [ 2] = 0x2462, [ 3] = 0x2463,
++ [ 4] = 0x2464, [ 5] = 0x2465, [ 6] = 0x2466, [ 7] = 0x2467,
++ [ 8] = 0x2468, [ 9] = 0x2469, [ 10] = 0x246a, [ 11] = 0x246b,
++ [ 12] = 0x246c, [ 13] = 0x246d, [ 14] = 0x246e, [ 15] = 0x246f,
++ [ 16] = 0x2470, [ 17] = 0x2471, [ 18] = 0x2472, [ 19] = 0x2473,
++ [ 20] = 0x2160, [ 21] = 0x2161, [ 22] = 0x2162, [ 23] = 0x2163,
++ [ 24] = 0x2164, [ 25] = 0x2165, [ 26] = 0x2166, [ 27] = 0x2167,
++ [ 28] = 0x2168, [ 29] = 0x2169, [ 31] = 0x3349, [ 32] = 0x3314,
++ [ 33] = 0x3322, [ 34] = 0x334d, [ 35] = 0x3318, [ 36] = 0x3327,
++ [ 37] = 0x3303, [ 38] = 0x3336, [ 39] = 0x3351, [ 40] = 0x3357,
++ [ 41] = 0x330d, [ 42] = 0x3326, [ 43] = 0x3323, [ 44] = 0x332b,
++ [ 45] = 0x334a, [ 46] = 0x333b, [ 47] = 0x339c, [ 48] = 0x339d,
++ [ 49] = 0x339e, [ 50] = 0x338e, [ 51] = 0x338f, [ 52] = 0x33c4,
++ [ 53] = 0x33a1, [ 62] = 0x337b, [ 64] = 0x301d, [ 65] = 0x301f,
++ [ 66] = 0x2116, [ 67] = 0x33cd, [ 68] = 0x2121, [ 69] = 0x32a4,
++ [ 70] = 0x32a5, [ 71] = 0x32a6, [ 72] = 0x32a7, [ 73] = 0x32a8,
++ [ 74] = 0x3231, [ 75] = 0x3232, [ 76] = 0x3239, [ 77] = 0x337e,
++ [ 78] = 0x337d, [ 79] = 0x337c, [ 80] = 0x2252, [ 81] = 0x2261,
++ [ 82] = 0x222b, [ 83] = 0x222e, [ 84] = 0x2211, [ 85] = 0x221a,
++ [ 86] = 0x22a5, [ 87] = 0x2220, [ 88] = 0x221f, [ 89] = 0x22bf,
++ [ 90] = 0x2235, [ 91] = 0x2229, [ 92] = 0x222a
++};
++
++static const uint16_t cjk_block3[94] =
++{
++ /* start = 0x889f, end = 0x88fc */
++ [ 0] = 0x4e9c, [ 1] = 0x5516, [ 2] = 0x5a03, [ 3] = 0x963f,
++ [ 4] = 0x54c0, [ 5] = 0x611b, [ 6] = 0x6328, [ 7] = 0x59f6,
++ [ 8] = 0x9022, [ 9] = 0x8475, [ 10] = 0x831c, [ 11] = 0x7a50,
++ [ 12] = 0x60aa, [ 13] = 0x63e1, [ 14] = 0x6e25, [ 15] = 0x65ed,
++ [ 16] = 0x8466, [ 17] = 0x82a6, [ 18] = 0x9bf5, [ 19] = 0x6893,
++ [ 20] = 0x5727, [ 21] = 0x65a1, [ 22] = 0x6271, [ 23] = 0x5b9b,
++ [ 24] = 0x59d0, [ 25] = 0x867b, [ 26] = 0x98f4, [ 27] = 0x7d62,
++ [ 28] = 0x7dbe, [ 29] = 0x9b8e, [ 30] = 0x6216, [ 31] = 0x7c9f,
++ [ 32] = 0x88b7, [ 33] = 0x5b89, [ 34] = 0x5eb5, [ 35] = 0x6309,
++ [ 36] = 0x6697, [ 37] = 0x6848, [ 38] = 0x95c7, [ 39] = 0x978d,
++ [ 40] = 0x674f, [ 41] = 0x4ee5, [ 42] = 0x4f0a, [ 43] = 0x4f4d,
++ [ 44] = 0x4f9d, [ 45] = 0x5049, [ 46] = 0x56f2, [ 47] = 0x5937,
++ [ 48] = 0x59d4, [ 49] = 0x5a01, [ 50] = 0x5c09, [ 51] = 0x60df,
++ [ 52] = 0x610f, [ 53] = 0x6170, [ 54] = 0x6613, [ 55] = 0x6905,
++ [ 56] = 0x70ba, [ 57] = 0x754f, [ 58] = 0x7570, [ 59] = 0x79fb,
++ [ 60] = 0x7dad, [ 61] = 0x7def, [ 62] = 0x80c3, [ 63] = 0x840e,
++ [ 64] = 0x8863, [ 65] = 0x8b02, [ 66] = 0x9055, [ 67] = 0x907a,
++ [ 68] = 0x533b, [ 69] = 0x4e95, [ 70] = 0x4ea5, [ 71] = 0x57df,
++ [ 72] = 0x80b2, [ 73] = 0x90c1, [ 74] = 0x78ef, [ 75] = 0x4e00,
++ [ 76] = 0x58f1, [ 77] = 0x6ea2, [ 78] = 0x9038, [ 79] = 0x7a32,
++ [ 80] = 0x8328, [ 81] = 0x828b, [ 82] = 0x9c2f, [ 83] = 0x5141,
++ [ 84] = 0x5370, [ 85] = 0x54bd, [ 86] = 0x54e1, [ 87] = 0x56e0,
++ [ 88] = 0x59fb, [ 89] = 0x5f15, [ 90] = 0x98f2, [ 91] = 0x6deb,
++ [ 92] = 0x80e4, [ 93] = 0x852d
++};
++
++static const uint16_t cjk_block4[4413] =
++{
++ /* start = 0x8940, end = 0x9ffc */
++ [ 0] = 0x9662, [ 1] = 0x9670, [ 2] = 0x96a0, [ 3] = 0x97fb,
++ [ 4] = 0x540b, [ 5] = 0x53f3, [ 6] = 0x5b87, [ 7] = 0x70cf,
++ [ 8] = 0x7fbd, [ 9] = 0x8fc2, [ 10] = 0x96e8, [ 11] = 0x536f,
++ [ 12] = 0x9d5c, [ 13] = 0x7aba, [ 14] = 0x4e11, [ 15] = 0x7893,
++ [ 16] = 0x81fc, [ 17] = 0x6e26, [ 18] = 0x5618, [ 19] = 0x5504,
++ [ 20] = 0x6b1d, [ 21] = 0x851a, [ 22] = 0x9c3b, [ 23] = 0x59e5,
++ [ 24] = 0x53a9, [ 25] = 0x6d66, [ 26] = 0x74dc, [ 27] = 0x958f,
++ [ 28] = 0x5642, [ 29] = 0x4e91, [ 30] = 0x904b, [ 31] = 0x96f2,
++ [ 32] = 0x834f, [ 33] = 0x990c, [ 34] = 0x53e1, [ 35] = 0x55b6,
++ [ 36] = 0x5b30, [ 37] = 0x5f71, [ 38] = 0x6620, [ 39] = 0x66f3,
++ [ 40] = 0x6804, [ 41] = 0x6c38, [ 42] = 0x6cf3, [ 43] = 0x6d29,
++ [ 44] = 0x745b, [ 45] = 0x76c8, [ 46] = 0x7a4e, [ 47] = 0x9834,
++ [ 48] = 0x82f1, [ 49] = 0x885b, [ 50] = 0x8a60, [ 51] = 0x92ed,
++ [ 52] = 0x6db2, [ 53] = 0x75ab, [ 54] = 0x76ca, [ 55] = 0x99c5,
++ [ 56] = 0x60a6, [ 57] = 0x8b01, [ 58] = 0x8d8a, [ 59] = 0x95b2,
++ [ 60] = 0x698e, [ 61] = 0x53ad, [ 62] = 0x5186, [ 64] = 0x5712,
++ [ 65] = 0x5830, [ 66] = 0x5944, [ 67] = 0x5bb4, [ 68] = 0x5ef6,
++ [ 69] = 0x6028, [ 70] = 0x63a9, [ 71] = 0x63f4, [ 72] = 0x6cbf,
++ [ 73] = 0x6f14, [ 74] = 0x708e, [ 75] = 0x7114, [ 76] = 0x7159,
++ [ 77] = 0x71d5, [ 78] = 0x733f, [ 79] = 0x7e01, [ 80] = 0x8276,
++ [ 81] = 0x82d1, [ 82] = 0x8597, [ 83] = 0x9060, [ 84] = 0x925b,
++ [ 85] = 0x9d1b, [ 86] = 0x5869, [ 87] = 0x65bc, [ 88] = 0x6c5a,
++ [ 89] = 0x7525, [ 90] = 0x51f9, [ 91] = 0x592e, [ 92] = 0x5965,
++ [ 93] = 0x5f80, [ 94] = 0x5fdc, [ 95] = 0x62bc, [ 96] = 0x65fa,
++ [ 97] = 0x6a2a, [ 98] = 0x6b27, [ 99] = 0x6bb4, [ 100] = 0x738b,
++ [ 101] = 0x7fc1, [ 102] = 0x8956, [ 103] = 0x9d2c, [ 104] = 0x9d0e,
++ [ 105] = 0x9ec4, [ 106] = 0x5ca1, [ 107] = 0x6c96, [ 108] = 0x837b,
++ [ 109] = 0x5104, [ 110] = 0x5c4b, [ 111] = 0x61b6, [ 112] = 0x81c6,
++ [ 113] = 0x6876, [ 114] = 0x7261, [ 115] = 0x4e59, [ 116] = 0x4ffa,
++ [ 117] = 0x5378, [ 118] = 0x6069, [ 119] = 0x6e29, [ 120] = 0x7a4f,
++ [ 121] = 0x97f3, [ 122] = 0x4e0b, [ 123] = 0x5316, [ 124] = 0x4eee,
++ [ 125] = 0x4f55, [ 126] = 0x4f3d, [ 127] = 0x4fa1, [ 128] = 0x4f73,
++ [ 129] = 0x52a0, [ 130] = 0x53ef, [ 131] = 0x5609, [ 132] = 0x590f,
++ [ 133] = 0x5ac1, [ 134] = 0x5bb6, [ 135] = 0x5be1, [ 136] = 0x79d1,
++ [ 137] = 0x6687, [ 138] = 0x679c, [ 139] = 0x67b6, [ 140] = 0x6b4c,
++ [ 141] = 0x6cb3, [ 142] = 0x706b, [ 143] = 0x73c2, [ 144] = 0x798d,
++ [ 145] = 0x79be, [ 146] = 0x7a3c, [ 147] = 0x7b87, [ 148] = 0x82b1,
++ [ 149] = 0x82db, [ 150] = 0x8304, [ 151] = 0x8377, [ 152] = 0x83ef,
++ [ 153] = 0x83d3, [ 154] = 0x8766, [ 155] = 0x8ab2, [ 156] = 0x5629,
++ [ 157] = 0x8ca8, [ 158] = 0x8fe6, [ 159] = 0x904e, [ 160] = 0x971e,
++ [ 161] = 0x868a, [ 162] = 0x4fc4, [ 163] = 0x5ce8, [ 164] = 0x6211,
++ [ 165] = 0x7259, [ 166] = 0x753b, [ 167] = 0x81e5, [ 168] = 0x82bd,
++ [ 169] = 0x86fe, [ 170] = 0x8cc0, [ 171] = 0x96c5, [ 172] = 0x9913,
++ [ 173] = 0x99d5, [ 174] = 0x4ecb, [ 175] = 0x4f1a, [ 176] = 0x89e3,
++ [ 177] = 0x56de, [ 178] = 0x584a, [ 179] = 0x58ca, [ 180] = 0x5efb,
++ [ 181] = 0x5feb, [ 182] = 0x602a, [ 183] = 0x6094, [ 184] = 0x6062,
++ [ 185] = 0x61d0, [ 186] = 0x6212, [ 187] = 0x62d0, [ 188] = 0x6539,
++ [ 192] = 0x9b41, [ 193] = 0x6666, [ 194] = 0x68b0, [ 195] = 0x6d77,
++ [ 196] = 0x7070, [ 197] = 0x754c, [ 198] = 0x7686, [ 199] = 0x7d75,
++ [ 200] = 0x82a5, [ 201] = 0x87f9, [ 202] = 0x958b, [ 203] = 0x968e,
++ [ 204] = 0x8c9d, [ 205] = 0x51f1, [ 206] = 0x52be, [ 207] = 0x5916,
++ [ 208] = 0x54b3, [ 209] = 0x5bb3, [ 210] = 0x5d16, [ 211] = 0x6168,
++ [ 212] = 0x6982, [ 213] = 0x6daf, [ 214] = 0x788d, [ 215] = 0x84cb,
++ [ 216] = 0x8857, [ 217] = 0x8a72, [ 218] = 0x93a7, [ 219] = 0x9ab8,
++ [ 220] = 0x6d6c, [ 221] = 0x99a8, [ 222] = 0x86d9, [ 223] = 0x57a3,
++ [ 224] = 0x67ff, [ 225] = 0x86ce, [ 226] = 0x920e, [ 227] = 0x5283,
++ [ 228] = 0x5687, [ 229] = 0x5404, [ 230] = 0x5ed3, [ 231] = 0x62e1,
++ [ 232] = 0x64b9, [ 233] = 0x683c, [ 234] = 0x6838, [ 235] = 0x6bbb,
++ [ 236] = 0x7372, [ 237] = 0x78ba, [ 238] = 0x7a6b, [ 239] = 0x899a,
++ [ 240] = 0x89d2, [ 241] = 0x8d6b, [ 242] = 0x8f03, [ 243] = 0x90ed,
++ [ 244] = 0x95a3, [ 245] = 0x9694, [ 246] = 0x9769, [ 247] = 0x5b66,
++ [ 248] = 0x5cb3, [ 249] = 0x697d, [ 250] = 0x984d, [ 251] = 0x984e,
++ [ 252] = 0x639b, [ 253] = 0x7b20, [ 254] = 0x6a2b, [ 256] = 0x6a7f,
++ [ 257] = 0x68b6, [ 258] = 0x9c0d, [ 259] = 0x6f5f, [ 260] = 0x5272,
++ [ 261] = 0x559d, [ 262] = 0x6070, [ 263] = 0x62ec, [ 264] = 0x6d3b,
++ [ 265] = 0x6e07, [ 266] = 0x6ed1, [ 267] = 0x845b, [ 268] = 0x8910,
++ [ 269] = 0x8f44, [ 270] = 0x4e14, [ 271] = 0x9c39, [ 272] = 0x53f6,
++ [ 273] = 0x691b, [ 274] = 0x6a3a, [ 275] = 0x9784, [ 276] = 0x682a,
++ [ 277] = 0x515c, [ 278] = 0x7ac3, [ 279] = 0x84b2, [ 280] = 0x91dc,
++ [ 281] = 0x938c, [ 282] = 0x565b, [ 283] = 0x9d28, [ 284] = 0x6822,
++ [ 285] = 0x8305, [ 286] = 0x8431, [ 287] = 0x7ca5, [ 288] = 0x5208,
++ [ 289] = 0x82c5, [ 290] = 0x74e6, [ 291] = 0x4e7e, [ 292] = 0x4f83,
++ [ 293] = 0x51a0, [ 294] = 0x5bd2, [ 295] = 0x520a, [ 296] = 0x52d8,
++ [ 297] = 0x52e7, [ 298] = 0x5dfb, [ 299] = 0x559a, [ 300] = 0x582a,
++ [ 301] = 0x59e6, [ 302] = 0x5b8c, [ 303] = 0x5b98, [ 304] = 0x5bdb,
++ [ 305] = 0x5e72, [ 306] = 0x5e79, [ 307] = 0x60a3, [ 308] = 0x611f,
++ [ 309] = 0x6163, [ 310] = 0x61be, [ 311] = 0x63db, [ 312] = 0x6562,
++ [ 313] = 0x67d1, [ 314] = 0x6853, [ 315] = 0x68fa, [ 316] = 0x6b3e,
++ [ 317] = 0x6b53, [ 318] = 0x6c57, [ 319] = 0x6f22, [ 320] = 0x6f97,
++ [ 321] = 0x6f45, [ 322] = 0x74b0, [ 323] = 0x7518, [ 324] = 0x76e3,
++ [ 325] = 0x770b, [ 326] = 0x7aff, [ 327] = 0x7ba1, [ 328] = 0x7c21,
++ [ 329] = 0x7de9, [ 330] = 0x7f36, [ 331] = 0x7ff0, [ 332] = 0x809d,
++ [ 333] = 0x8266, [ 334] = 0x839e, [ 335] = 0x89b3, [ 336] = 0x8acc,
++ [ 337] = 0x8cab, [ 338] = 0x9084, [ 339] = 0x9451, [ 340] = 0x9593,
++ [ 341] = 0x9591, [ 342] = 0x95a2, [ 343] = 0x9665, [ 344] = 0x97d3,
++ [ 345] = 0x9928, [ 346] = 0x8218, [ 347] = 0x4e38, [ 348] = 0x542b,
++ [ 349] = 0x5cb8, [ 350] = 0x5dcc, [ 351] = 0x73a9, [ 352] = 0x764c,
++ [ 353] = 0x773c, [ 354] = 0x5ca9, [ 355] = 0x7feb, [ 356] = 0x8d0b,
++ [ 357] = 0x96c1, [ 358] = 0x9811, [ 359] = 0x9854, [ 360] = 0x9858,
++ [ 361] = 0x4f01, [ 362] = 0x4f0e, [ 363] = 0x5371, [ 364] = 0x559c,
++ [ 365] = 0x5668, [ 366] = 0x57fa, [ 367] = 0x5947, [ 368] = 0x5b09,
++ [ 369] = 0x5bc4, [ 370] = 0x5c90, [ 371] = 0x5e0c, [ 372] = 0x5e7e,
++ [ 373] = 0x5fcc, [ 374] = 0x63ee, [ 375] = 0x673a, [ 376] = 0x65d7,
++ [ 377] = 0x65e2, [ 378] = 0x671f, [ 379] = 0x68cb, [ 380] = 0x68c4,
++ [ 384] = 0x6a5f, [ 385] = 0x5e30, [ 386] = 0x6bc5, [ 387] = 0x6c17,
++ [ 388] = 0x6c7d, [ 389] = 0x757f, [ 390] = 0x7948, [ 391] = 0x5b63,
++ [ 392] = 0x7a00, [ 393] = 0x7d00, [ 394] = 0x5fbd, [ 395] = 0x898f,
++ [ 396] = 0x8a18, [ 397] = 0x8cb4, [ 398] = 0x8d77, [ 399] = 0x8ecc,
++ [ 400] = 0x8f1d, [ 401] = 0x98e2, [ 402] = 0x9a0e, [ 403] = 0x9b3c,
++ [ 404] = 0x4e80, [ 405] = 0x507d, [ 406] = 0x5100, [ 407] = 0x5993,
++ [ 408] = 0x5b9c, [ 409] = 0x622f, [ 410] = 0x6280, [ 411] = 0x64ec,
++ [ 412] = 0x6b3a, [ 413] = 0x72a0, [ 414] = 0x7591, [ 415] = 0x7947,
++ [ 416] = 0x7fa9, [ 417] = 0x87fb, [ 418] = 0x8abc, [ 419] = 0x8b70,
++ [ 420] = 0x63ac, [ 421] = 0x83ca, [ 422] = 0x97a0, [ 423] = 0x5409,
++ [ 424] = 0x5403, [ 425] = 0x55ab, [ 426] = 0x6854, [ 427] = 0x6a58,
++ [ 428] = 0x8a70, [ 429] = 0x7827, [ 430] = 0x6775, [ 431] = 0x9ecd,
++ [ 432] = 0x5374, [ 433] = 0x5ba2, [ 434] = 0x811a, [ 435] = 0x8650,
++ [ 436] = 0x9006, [ 437] = 0x4e18, [ 438] = 0x4e45, [ 439] = 0x4ec7,
++ [ 440] = 0x4f11, [ 441] = 0x53ca, [ 442] = 0x5438, [ 443] = 0x5bae,
++ [ 444] = 0x5f13, [ 445] = 0x6025, [ 446] = 0x6551, [ 448] = 0x673d,
++ [ 449] = 0x6c42, [ 450] = 0x6c72, [ 451] = 0x6ce3, [ 452] = 0x7078,
++ [ 453] = 0x7403, [ 454] = 0x7a76, [ 455] = 0x7aae, [ 456] = 0x7b08,
++ [ 457] = 0x7d1a, [ 458] = 0x7cfe, [ 459] = 0x7d66, [ 460] = 0x65e7,
++ [ 461] = 0x725b, [ 462] = 0x53bb, [ 463] = 0x5c45, [ 464] = 0x5de8,
++ [ 465] = 0x62d2, [ 466] = 0x62e0, [ 467] = 0x6319, [ 468] = 0x6e20,
++ [ 469] = 0x865a, [ 470] = 0x8a31, [ 471] = 0x8ddd, [ 472] = 0x92f8,
++ [ 473] = 0x6f01, [ 474] = 0x79a6, [ 475] = 0x9b5a, [ 476] = 0x4ea8,
++ [ 477] = 0x4eab, [ 478] = 0x4eac, [ 479] = 0x4f9b, [ 480] = 0x4fa0,
++ [ 481] = 0x50d1, [ 482] = 0x5147, [ 483] = 0x7af6, [ 484] = 0x5171,
++ [ 485] = 0x51f6, [ 486] = 0x5354, [ 487] = 0x5321, [ 488] = 0x537f,
++ [ 489] = 0x53eb, [ 490] = 0x55ac, [ 491] = 0x5883, [ 492] = 0x5ce1,
++ [ 493] = 0x5f37, [ 494] = 0x5f4a, [ 495] = 0x602f, [ 496] = 0x6050,
++ [ 497] = 0x606d, [ 498] = 0x631f, [ 499] = 0x6559, [ 500] = 0x6a4b,
++ [ 501] = 0x6cc1, [ 502] = 0x72c2, [ 503] = 0x72ed, [ 504] = 0x77ef,
++ [ 505] = 0x80f8, [ 506] = 0x8105, [ 507] = 0x8208, [ 508] = 0x854e,
++ [ 509] = 0x90f7, [ 510] = 0x93e1, [ 511] = 0x97ff, [ 512] = 0x9957,
++ [ 513] = 0x9a5a, [ 514] = 0x4ef0, [ 515] = 0x51dd, [ 516] = 0x5c2d,
++ [ 517] = 0x6681, [ 518] = 0x696d, [ 519] = 0x5c40, [ 520] = 0x66f2,
++ [ 521] = 0x6975, [ 522] = 0x7389, [ 523] = 0x6850, [ 524] = 0x7c81,
++ [ 525] = 0x50c5, [ 526] = 0x52e4, [ 527] = 0x5747, [ 528] = 0x5dfe,
++ [ 529] = 0x9326, [ 530] = 0x65a4, [ 531] = 0x6b23, [ 532] = 0x6b3d,
++ [ 533] = 0x7434, [ 534] = 0x7981, [ 535] = 0x79bd, [ 536] = 0x7b4b,
++ [ 537] = 0x7dca, [ 538] = 0x82b9, [ 539] = 0x83cc, [ 540] = 0x887f,
++ [ 541] = 0x895f, [ 542] = 0x8b39, [ 543] = 0x8fd1, [ 544] = 0x91d1,
++ [ 545] = 0x541f, [ 546] = 0x9280, [ 547] = 0x4e5d, [ 548] = 0x5036,
++ [ 549] = 0x53e5, [ 550] = 0x533a, [ 551] = 0x72d7, [ 552] = 0x7396,
++ [ 553] = 0x77e9, [ 554] = 0x82e6, [ 555] = 0x8eaf, [ 556] = 0x99c6,
++ [ 557] = 0x99c8, [ 558] = 0x99d2, [ 559] = 0x5177, [ 560] = 0x611a,
++ [ 561] = 0x865e, [ 562] = 0x55b0, [ 563] = 0x7a7a, [ 564] = 0x5076,
++ [ 565] = 0x5bd3, [ 566] = 0x9047, [ 567] = 0x9685, [ 568] = 0x4e32,
++ [ 569] = 0x6adb, [ 570] = 0x91e7, [ 571] = 0x5c51, [ 572] = 0x5c48,
++ [ 576] = 0x6398, [ 577] = 0x7a9f, [ 578] = 0x6c93, [ 579] = 0x9774,
++ [ 580] = 0x8f61, [ 581] = 0x7aaa, [ 582] = 0x718a, [ 583] = 0x9688,
++ [ 584] = 0x7c82, [ 585] = 0x6817, [ 586] = 0x7e70, [ 587] = 0x6851,
++ [ 588] = 0x936c, [ 589] = 0x52f2, [ 590] = 0x541b, [ 591] = 0x85ab,
++ [ 592] = 0x8a13, [ 593] = 0x7fa4, [ 594] = 0x8ecd, [ 595] = 0x90e1,
++ [ 596] = 0x5366, [ 597] = 0x8888, [ 598] = 0x7941, [ 599] = 0x4fc2,
++ [ 600] = 0x50be, [ 601] = 0x5211, [ 602] = 0x5144, [ 603] = 0x5553,
++ [ 604] = 0x572d, [ 605] = 0x73ea, [ 606] = 0x578b, [ 607] = 0x5951,
++ [ 608] = 0x5f62, [ 609] = 0x5f84, [ 610] = 0x6075, [ 611] = 0x6176,
++ [ 612] = 0x6167, [ 613] = 0x61a9, [ 614] = 0x63b2, [ 615] = 0x643a,
++ [ 616] = 0x656c, [ 617] = 0x666f, [ 618] = 0x6842, [ 619] = 0x6e13,
++ [ 620] = 0x7566, [ 621] = 0x7a3d, [ 622] = 0x7cfb, [ 623] = 0x7d4c,
++ [ 624] = 0x7d99, [ 625] = 0x7e4b, [ 626] = 0x7f6b, [ 627] = 0x830e,
++ [ 628] = 0x834a, [ 629] = 0x86cd, [ 630] = 0x8a08, [ 631] = 0x8a63,
++ [ 632] = 0x8b66, [ 633] = 0x8efd, [ 634] = 0x981a, [ 635] = 0x9d8f,
++ [ 636] = 0x82b8, [ 637] = 0x8fce, [ 638] = 0x9be8, [ 640] = 0x5287,
++ [ 641] = 0x621f, [ 642] = 0x6483, [ 643] = 0x6fc0, [ 644] = 0x9699,
++ [ 645] = 0x6841, [ 646] = 0x5091, [ 647] = 0x6b20, [ 648] = 0x6c7a,
++ [ 649] = 0x6f54, [ 650] = 0x7a74, [ 651] = 0x7d50, [ 652] = 0x8840,
++ [ 653] = 0x8a23, [ 654] = 0x6708, [ 655] = 0x4ef6, [ 656] = 0x5039,
++ [ 657] = 0x5026, [ 658] = 0x5065, [ 659] = 0x517c, [ 660] = 0x5238,
++ [ 661] = 0x5263, [ 662] = 0x55a7, [ 663] = 0x570f, [ 664] = 0x5805,
++ [ 665] = 0x5acc, [ 666] = 0x5efa, [ 667] = 0x61b2, [ 668] = 0x61f8,
++ [ 669] = 0x62f3, [ 670] = 0x6372, [ 671] = 0x691c, [ 672] = 0x6a29,
++ [ 673] = 0x727d, [ 674] = 0x72ac, [ 675] = 0x732e, [ 676] = 0x7814,
++ [ 677] = 0x786f, [ 678] = 0x7d79, [ 679] = 0x770c, [ 680] = 0x80a9,
++ [ 681] = 0x898b, [ 682] = 0x8b19, [ 683] = 0x8ce2, [ 684] = 0x8ed2,
++ [ 685] = 0x9063, [ 686] = 0x9375, [ 687] = 0x967a, [ 688] = 0x9855,
++ [ 689] = 0x9a13, [ 690] = 0x9e78, [ 691] = 0x5143, [ 692] = 0x539f,
++ [ 693] = 0x53b3, [ 694] = 0x5e7b, [ 695] = 0x5f26, [ 696] = 0x6e1b,
++ [ 697] = 0x6e90, [ 698] = 0x7384, [ 699] = 0x73fe, [ 700] = 0x7d43,
++ [ 701] = 0x8237, [ 702] = 0x8a00, [ 703] = 0x8afa, [ 704] = 0x9650,
++ [ 705] = 0x4e4e, [ 706] = 0x500b, [ 707] = 0x53e4, [ 708] = 0x547c,
++ [ 709] = 0x56fa, [ 710] = 0x59d1, [ 711] = 0x5b64, [ 712] = 0x5df1,
++ [ 713] = 0x5eab, [ 714] = 0x5f27, [ 715] = 0x6238, [ 716] = 0x6545,
++ [ 717] = 0x67af, [ 718] = 0x6e56, [ 719] = 0x72d0, [ 720] = 0x7cca,
++ [ 721] = 0x88b4, [ 722] = 0x80a1, [ 723] = 0x80e1, [ 724] = 0x83f0,
++ [ 725] = 0x864e, [ 726] = 0x8a87, [ 727] = 0x8de8, [ 728] = 0x9237,
++ [ 729] = 0x96c7, [ 730] = 0x9867, [ 731] = 0x9f13, [ 732] = 0x4e94,
++ [ 733] = 0x4e92, [ 734] = 0x4f0d, [ 735] = 0x5348, [ 736] = 0x5449,
++ [ 737] = 0x543e, [ 738] = 0x5a2f, [ 739] = 0x5f8c, [ 740] = 0x5fa1,
++ [ 741] = 0x609f, [ 742] = 0x68a7, [ 743] = 0x6a8e, [ 744] = 0x745a,
++ [ 745] = 0x7881, [ 746] = 0x8a9e, [ 747] = 0x8aa4, [ 748] = 0x8b77,
++ [ 749] = 0x9190, [ 750] = 0x4e5e, [ 751] = 0x9bc9, [ 752] = 0x4ea4,
++ [ 753] = 0x4f7c, [ 754] = 0x4faf, [ 755] = 0x5019, [ 756] = 0x5016,
++ [ 757] = 0x5149, [ 758] = 0x516c, [ 759] = 0x529f, [ 760] = 0x52b9,
++ [ 761] = 0x52fe, [ 762] = 0x539a, [ 763] = 0x53e3, [ 764] = 0x5411,
++ [ 768] = 0x540e, [ 769] = 0x5589, [ 770] = 0x5751, [ 771] = 0x57a2,
++ [ 772] = 0x597d, [ 773] = 0x5b54, [ 774] = 0x5b5d, [ 775] = 0x5b8f,
++ [ 776] = 0x5de5, [ 777] = 0x5de7, [ 778] = 0x5df7, [ 779] = 0x5e78,
++ [ 780] = 0x5e83, [ 781] = 0x5e9a, [ 782] = 0x5eb7, [ 783] = 0x5f18,
++ [ 784] = 0x6052, [ 785] = 0x614c, [ 786] = 0x6297, [ 787] = 0x62d8,
++ [ 788] = 0x63a7, [ 789] = 0x653b, [ 790] = 0x6602, [ 791] = 0x6643,
++ [ 792] = 0x66f4, [ 793] = 0x676d, [ 794] = 0x6821, [ 795] = 0x6897,
++ [ 796] = 0x69cb, [ 797] = 0x6c5f, [ 798] = 0x6d2a, [ 799] = 0x6d69,
++ [ 800] = 0x6e2f, [ 801] = 0x6e9d, [ 802] = 0x7532, [ 803] = 0x7687,
++ [ 804] = 0x786c, [ 805] = 0x7a3f, [ 806] = 0x7ce0, [ 807] = 0x7d05,
++ [ 808] = 0x7d18, [ 809] = 0x7d5e, [ 810] = 0x7db1, [ 811] = 0x8015,
++ [ 812] = 0x8003, [ 813] = 0x80af, [ 814] = 0x80b1, [ 815] = 0x8154,
++ [ 816] = 0x818f, [ 817] = 0x822a, [ 818] = 0x8352, [ 819] = 0x884c,
++ [ 820] = 0x8861, [ 821] = 0x8b1b, [ 822] = 0x8ca2, [ 823] = 0x8cfc,
++ [ 824] = 0x90ca, [ 825] = 0x9175, [ 826] = 0x9271, [ 827] = 0x783f,
++ [ 828] = 0x92fc, [ 829] = 0x95a4, [ 830] = 0x964d, [ 832] = 0x9805,
++ [ 833] = 0x9999, [ 834] = 0x9ad8, [ 835] = 0x9d3b, [ 836] = 0x525b,
++ [ 837] = 0x52ab, [ 838] = 0x53f7, [ 839] = 0x5408, [ 840] = 0x58d5,
++ [ 841] = 0x62f7, [ 842] = 0x6fe0, [ 843] = 0x8c6a, [ 844] = 0x8f5f,
++ [ 845] = 0x9eb9, [ 846] = 0x514b, [ 847] = 0x523b, [ 848] = 0x544a,
++ [ 849] = 0x56fd, [ 850] = 0x7a40, [ 851] = 0x9177, [ 852] = 0x9d60,
++ [ 853] = 0x9ed2, [ 854] = 0x7344, [ 855] = 0x6f09, [ 856] = 0x8170,
++ [ 857] = 0x7511, [ 858] = 0x5ffd, [ 859] = 0x60da, [ 860] = 0x9aa8,
++ [ 861] = 0x72db, [ 862] = 0x8fbc, [ 863] = 0x6b64, [ 864] = 0x9803,
++ [ 865] = 0x4eca, [ 866] = 0x56f0, [ 867] = 0x5764, [ 868] = 0x58be,
++ [ 869] = 0x5a5a, [ 870] = 0x6068, [ 871] = 0x61c7, [ 872] = 0x660f,
++ [ 873] = 0x6606, [ 874] = 0x6839, [ 875] = 0x68b1, [ 876] = 0x6df7,
++ [ 877] = 0x75d5, [ 878] = 0x7d3a, [ 879] = 0x826e, [ 880] = 0x9b42,
++ [ 881] = 0x4e9b, [ 882] = 0x4f50, [ 883] = 0x53c9, [ 884] = 0x5506,
++ [ 885] = 0x5d6f, [ 886] = 0x5de6, [ 887] = 0x5dee, [ 888] = 0x67fb,
++ [ 889] = 0x6c99, [ 890] = 0x7473, [ 891] = 0x7802, [ 892] = 0x8a50,
++ [ 893] = 0x9396, [ 894] = 0x88df, [ 895] = 0x5750, [ 896] = 0x5ea7,
++ [ 897] = 0x632b, [ 898] = 0x50b5, [ 899] = 0x50ac, [ 900] = 0x518d,
++ [ 901] = 0x6700, [ 902] = 0x54c9, [ 903] = 0x585e, [ 904] = 0x59bb,
++ [ 905] = 0x5bb0, [ 906] = 0x5f69, [ 907] = 0x624d, [ 908] = 0x63a1,
++ [ 909] = 0x683d, [ 910] = 0x6b73, [ 911] = 0x6e08, [ 912] = 0x707d,
++ [ 913] = 0x91c7, [ 914] = 0x7280, [ 915] = 0x7815, [ 916] = 0x7826,
++ [ 917] = 0x796d, [ 918] = 0x658e, [ 919] = 0x7d30, [ 920] = 0x83dc,
++ [ 921] = 0x88c1, [ 922] = 0x8f09, [ 923] = 0x969b, [ 924] = 0x5264,
++ [ 925] = 0x5728, [ 926] = 0x6750, [ 927] = 0x7f6a, [ 928] = 0x8ca1,
++ [ 929] = 0x51b4, [ 930] = 0x5742, [ 931] = 0x962a, [ 932] = 0x583a,
++ [ 933] = 0x698a, [ 934] = 0x80b4, [ 935] = 0x54b2, [ 936] = 0x5d0e,
++ [ 937] = 0x57fc, [ 938] = 0x7895, [ 939] = 0x9dfa, [ 940] = 0x4f5c,
++ [ 941] = 0x524a, [ 942] = 0x548b, [ 943] = 0x643e, [ 944] = 0x6628,
++ [ 945] = 0x6714, [ 946] = 0x67f5, [ 947] = 0x7a84, [ 948] = 0x7b56,
++ [ 949] = 0x7d22, [ 950] = 0x932f, [ 951] = 0x685c, [ 952] = 0x9bad,
++ [ 953] = 0x7b39, [ 954] = 0x5319, [ 955] = 0x518a, [ 956] = 0x5237,
++ [ 960] = 0x5bdf, [ 961] = 0x62f6, [ 962] = 0x64ae, [ 963] = 0x64e6,
++ [ 964] = 0x672d, [ 965] = 0x6bba, [ 966] = 0x85a9, [ 967] = 0x96d1,
++ [ 968] = 0x7690, [ 969] = 0x9bd6, [ 970] = 0x634c, [ 971] = 0x9306,
++ [ 972] = 0x9bab, [ 973] = 0x76bf, [ 974] = 0x6652, [ 975] = 0x4e09,
++ [ 976] = 0x5098, [ 977] = 0x53c2, [ 978] = 0x5c71, [ 979] = 0x60e8,
++ [ 980] = 0x6492, [ 981] = 0x6563, [ 982] = 0x685f, [ 983] = 0x71e6,
++ [ 984] = 0x73ca, [ 985] = 0x7523, [ 986] = 0x7b97, [ 987] = 0x7e82,
++ [ 988] = 0x8695, [ 989] = 0x8b83, [ 990] = 0x8cdb, [ 991] = 0x9178,
++ [ 992] = 0x9910, [ 993] = 0x65ac, [ 994] = 0x66ab, [ 995] = 0x6b8b,
++ [ 996] = 0x4ed5, [ 997] = 0x4ed4, [ 998] = 0x4f3a, [ 999] = 0x4f7f,
++ [1000] = 0x523a, [1001] = 0x53f8, [1002] = 0x53f2, [1003] = 0x55e3,
++ [1004] = 0x56db, [1005] = 0x58eb, [1006] = 0x59cb, [1007] = 0x59c9,
++ [1008] = 0x59ff, [1009] = 0x5b50, [1010] = 0x5c4d, [1011] = 0x5e02,
++ [1012] = 0x5e2b, [1013] = 0x5fd7, [1014] = 0x601d, [1015] = 0x6307,
++ [1016] = 0x652f, [1017] = 0x5b5c, [1018] = 0x65af, [1019] = 0x65bd,
++ [1020] = 0x65e8, [1021] = 0x679d, [1022] = 0x6b62, [1024] = 0x6b7b,
++ [1025] = 0x6c0f, [1026] = 0x7345, [1027] = 0x7949, [1028] = 0x79c1,
++ [1029] = 0x7cf8, [1030] = 0x7d19, [1031] = 0x7d2b, [1032] = 0x80a2,
++ [1033] = 0x8102, [1034] = 0x81f3, [1035] = 0x8996, [1036] = 0x8a5e,
++ [1037] = 0x8a69, [1038] = 0x8a66, [1039] = 0x8a8c, [1040] = 0x8aee,
++ [1041] = 0x8cc7, [1042] = 0x8cdc, [1043] = 0x96cc, [1044] = 0x98fc,
++ [1045] = 0x6b6f, [1046] = 0x4e8b, [1047] = 0x4f3c, [1048] = 0x4f8d,
++ [1049] = 0x5150, [1050] = 0x5b57, [1051] = 0x5bfa, [1052] = 0x6148,
++ [1053] = 0x6301, [1054] = 0x6642, [1055] = 0x6b21, [1056] = 0x6ecb,
++ [1057] = 0x6cbb, [1058] = 0x723e, [1059] = 0x74bd, [1060] = 0x75d4,
++ [1061] = 0x78c1, [1062] = 0x793a, [1063] = 0x800c, [1064] = 0x8033,
++ [1065] = 0x81ea, [1066] = 0x8494, [1067] = 0x8f9e, [1068] = 0x6c50,
++ [1069] = 0x9e7f, [1070] = 0x5f0f, [1071] = 0x8b58, [1072] = 0x9d2b,
++ [1073] = 0x7afa, [1074] = 0x8ef8, [1075] = 0x5b8d, [1076] = 0x96eb,
++ [1077] = 0x4e03, [1078] = 0x53f1, [1079] = 0x57f7, [1080] = 0x5931,
++ [1081] = 0x5ac9, [1082] = 0x5ba4, [1083] = 0x6089, [1084] = 0x6e7f,
++ [1085] = 0x6f06, [1086] = 0x75be, [1087] = 0x8cea, [1088] = 0x5b9f,
++ [1089] = 0x8500, [1090] = 0x7be0, [1091] = 0x5072, [1092] = 0x67f4,
++ [1093] = 0x829d, [1094] = 0x5c61, [1095] = 0x854a, [1096] = 0x7e1e,
++ [1097] = 0x820e, [1098] = 0x5199, [1099] = 0x5c04, [1100] = 0x6368,
++ [1101] = 0x8d66, [1102] = 0x659c, [1103] = 0x716e, [1104] = 0x793e,
++ [1105] = 0x7d17, [1106] = 0x8005, [1107] = 0x8b1d, [1108] = 0x8eca,
++ [1109] = 0x906e, [1110] = 0x86c7, [1111] = 0x90aa, [1112] = 0x501f,
++ [1113] = 0x52fa, [1114] = 0x5c3a, [1115] = 0x6753, [1116] = 0x707c,
++ [1117] = 0x7235, [1118] = 0x914c, [1119] = 0x91c8, [1120] = 0x932b,
++ [1121] = 0x82e5, [1122] = 0x5bc2, [1123] = 0x5f31, [1124] = 0x60f9,
++ [1125] = 0x4e3b, [1126] = 0x53d6, [1127] = 0x5b88, [1128] = 0x624b,
++ [1129] = 0x6731, [1130] = 0x6b8a, [1131] = 0x72e9, [1132] = 0x73e0,
++ [1133] = 0x7a2e, [1134] = 0x816b, [1135] = 0x8da3, [1136] = 0x9152,
++ [1137] = 0x9996, [1138] = 0x5112, [1139] = 0x53d7, [1140] = 0x546a,
++ [1141] = 0x5bff, [1142] = 0x6388, [1143] = 0x6a39, [1144] = 0x7dac,
++ [1145] = 0x9700, [1146] = 0x56da, [1147] = 0x53ce, [1148] = 0x5468,
++ [1152] = 0x5b97, [1153] = 0x5c31, [1154] = 0x5dde, [1155] = 0x4fee,
++ [1156] = 0x6101, [1157] = 0x62fe, [1158] = 0x6d32, [1159] = 0x79c0,
++ [1160] = 0x79cb, [1161] = 0x7d42, [1162] = 0x7e4d, [1163] = 0x7fd2,
++ [1164] = 0x81ed, [1165] = 0x821f, [1166] = 0x8490, [1167] = 0x8846,
++ [1168] = 0x8972, [1169] = 0x8b90, [1170] = 0x8e74, [1171] = 0x8f2f,
++ [1172] = 0x9031, [1173] = 0x914b, [1174] = 0x916c, [1175] = 0x96c6,
++ [1176] = 0x919c, [1177] = 0x4ec0, [1178] = 0x4f4f, [1179] = 0x5145,
++ [1180] = 0x5341, [1181] = 0x5f93, [1182] = 0x620e, [1183] = 0x67d4,
++ [1184] = 0x6c41, [1185] = 0x6e0b, [1186] = 0x7363, [1187] = 0x7e26,
++ [1188] = 0x91cd, [1189] = 0x9283, [1190] = 0x53d4, [1191] = 0x5919,
++ [1192] = 0x5bbf, [1193] = 0x6dd1, [1194] = 0x795d, [1195] = 0x7e2e,
++ [1196] = 0x7c9b, [1197] = 0x587e, [1198] = 0x719f, [1199] = 0x51fa,
++ [1200] = 0x8853, [1201] = 0x8ff0, [1202] = 0x4fca, [1203] = 0x5cfb,
++ [1204] = 0x6625, [1205] = 0x77ac, [1206] = 0x7ae3, [1207] = 0x821c,
++ [1208] = 0x99ff, [1209] = 0x51c6, [1210] = 0x5faa, [1211] = 0x65ec,
++ [1212] = 0x696f, [1213] = 0x6b89, [1214] = 0x6df3, [1216] = 0x6e96,
++ [1217] = 0x6f64, [1218] = 0x76fe, [1219] = 0x7d14, [1220] = 0x5de1,
++ [1221] = 0x9075, [1222] = 0x9187, [1223] = 0x9806, [1224] = 0x51e6,
++ [1225] = 0x521d, [1226] = 0x6240, [1227] = 0x6691, [1228] = 0x66d9,
++ [1229] = 0x6e1a, [1230] = 0x5eb6, [1231] = 0x7dd2, [1232] = 0x7f72,
++ [1233] = 0x66f8, [1234] = 0x85af, [1235] = 0x85f7, [1236] = 0x8af8,
++ [1237] = 0x52a9, [1238] = 0x53d9, [1239] = 0x5973, [1240] = 0x5e8f,
++ [1241] = 0x5f90, [1242] = 0x6055, [1243] = 0x92e4, [1244] = 0x9664,
++ [1245] = 0x50b7, [1246] = 0x511f, [1247] = 0x52dd, [1248] = 0x5320,
++ [1249] = 0x5347, [1250] = 0x53ec, [1251] = 0x54e8, [1252] = 0x5546,
++ [1253] = 0x5531, [1254] = 0x5617, [1255] = 0x5968, [1256] = 0x59be,
++ [1257] = 0x5a3c, [1258] = 0x5bb5, [1259] = 0x5c06, [1260] = 0x5c0f,
++ [1261] = 0x5c11, [1262] = 0x5c1a, [1263] = 0x5e84, [1264] = 0x5e8a,
++ [1265] = 0x5ee0, [1266] = 0x5f70, [1267] = 0x627f, [1268] = 0x6284,
++ [1269] = 0x62db, [1270] = 0x638c, [1271] = 0x6377, [1272] = 0x6607,
++ [1273] = 0x660c, [1274] = 0x662d, [1275] = 0x6676, [1276] = 0x677e,
++ [1277] = 0x68a2, [1278] = 0x6a1f, [1279] = 0x6a35, [1280] = 0x6cbc,
++ [1281] = 0x6d88, [1282] = 0x6e09, [1283] = 0x6e58, [1284] = 0x713c,
++ [1285] = 0x7126, [1286] = 0x7167, [1287] = 0x75c7, [1288] = 0x7701,
++ [1289] = 0x785d, [1290] = 0x7901, [1291] = 0x7965, [1292] = 0x79f0,
++ [1293] = 0x7ae0, [1294] = 0x7b11, [1295] = 0x7ca7, [1296] = 0x7d39,
++ [1297] = 0x8096, [1298] = 0x83d6, [1299] = 0x848b, [1300] = 0x8549,
++ [1301] = 0x885d, [1302] = 0x88f3, [1303] = 0x8a1f, [1304] = 0x8a3c,
++ [1305] = 0x8a54, [1306] = 0x8a73, [1307] = 0x8c61, [1308] = 0x8cde,
++ [1309] = 0x91a4, [1310] = 0x9266, [1311] = 0x937e, [1312] = 0x9418,
++ [1313] = 0x969c, [1314] = 0x9798, [1315] = 0x4e0a, [1316] = 0x4e08,
++ [1317] = 0x4e1e, [1318] = 0x4e57, [1319] = 0x5197, [1320] = 0x5270,
++ [1321] = 0x57ce, [1322] = 0x5834, [1323] = 0x58cc, [1324] = 0x5b22,
++ [1325] = 0x5e38, [1326] = 0x60c5, [1327] = 0x64fe, [1328] = 0x6761,
++ [1329] = 0x6756, [1330] = 0x6d44, [1331] = 0x72b6, [1332] = 0x7573,
++ [1333] = 0x7a63, [1334] = 0x84b8, [1335] = 0x8b72, [1336] = 0x91b8,
++ [1337] = 0x9320, [1338] = 0x5631, [1339] = 0x57f4, [1340] = 0x98fe,
++ [1344] = 0x62ed, [1345] = 0x690d, [1346] = 0x6b96, [1347] = 0x71ed,
++ [1348] = 0x7e54, [1349] = 0x8077, [1350] = 0x8272, [1351] = 0x89e6,
++ [1352] = 0x98df, [1353] = 0x8755, [1354] = 0x8fb1, [1355] = 0x5c3b,
++ [1356] = 0x4f38, [1357] = 0x4fe1, [1358] = 0x4fb5, [1359] = 0x5507,
++ [1360] = 0x5a20, [1361] = 0x5bdd, [1362] = 0x5be9, [1363] = 0x5fc3,
++ [1364] = 0x614e, [1365] = 0x632f, [1366] = 0x65b0, [1367] = 0x664b,
++ [1368] = 0x68ee, [1369] = 0x699b, [1370] = 0x6d78, [1371] = 0x6df1,
++ [1372] = 0x7533, [1373] = 0x75b9, [1374] = 0x771f, [1375] = 0x795e,
++ [1376] = 0x79e6, [1377] = 0x7d33, [1378] = 0x81e3, [1379] = 0x82af,
++ [1380] = 0x85aa, [1381] = 0x89aa, [1382] = 0x8a3a, [1383] = 0x8eab,
++ [1384] = 0x8f9b, [1385] = 0x9032, [1386] = 0x91dd, [1387] = 0x9707,
++ [1388] = 0x4eba, [1389] = 0x4ec1, [1390] = 0x5203, [1391] = 0x5875,
++ [1392] = 0x58ec, [1393] = 0x5c0b, [1394] = 0x751a, [1395] = 0x5c3d,
++ [1396] = 0x814e, [1397] = 0x8a0a, [1398] = 0x8fc5, [1399] = 0x9663,
++ [1400] = 0x976d, [1401] = 0x7b25, [1402] = 0x8acf, [1403] = 0x9808,
++ [1404] = 0x9162, [1405] = 0x56f3, [1406] = 0x53a8, [1408] = 0x9017,
++ [1409] = 0x5439, [1410] = 0x5782, [1411] = 0x5e25, [1412] = 0x63a8,
++ [1413] = 0x6c34, [1414] = 0x708a, [1415] = 0x7761, [1416] = 0x7c8b,
++ [1417] = 0x7fe0, [1418] = 0x8870, [1419] = 0x9042, [1420] = 0x9154,
++ [1421] = 0x9310, [1422] = 0x9318, [1423] = 0x968f, [1424] = 0x745e,
++ [1425] = 0x9ac4, [1426] = 0x5d07, [1427] = 0x5d69, [1428] = 0x6570,
++ [1429] = 0x67a2, [1430] = 0x8da8, [1431] = 0x96db, [1432] = 0x636e,
++ [1433] = 0x6749, [1434] = 0x6919, [1435] = 0x83c5, [1436] = 0x9817,
++ [1437] = 0x96c0, [1438] = 0x88fe, [1439] = 0x6f84, [1440] = 0x647a,
++ [1441] = 0x5bf8, [1442] = 0x4e16, [1443] = 0x702c, [1444] = 0x755d,
++ [1445] = 0x662f, [1446] = 0x51c4, [1447] = 0x5236, [1448] = 0x52e2,
++ [1449] = 0x59d3, [1450] = 0x5f81, [1451] = 0x6027, [1452] = 0x6210,
++ [1453] = 0x653f, [1454] = 0x6574, [1455] = 0x661f, [1456] = 0x6674,
++ [1457] = 0x68f2, [1458] = 0x6816, [1459] = 0x6b63, [1460] = 0x6e05,
++ [1461] = 0x7272, [1462] = 0x751f, [1463] = 0x76db, [1464] = 0x7cbe,
++ [1465] = 0x8056, [1466] = 0x58f0, [1467] = 0x88fd, [1468] = 0x897f,
++ [1469] = 0x8aa0, [1470] = 0x8a93, [1471] = 0x8acb, [1472] = 0x901d,
++ [1473] = 0x9192, [1474] = 0x9752, [1475] = 0x9759, [1476] = 0x6589,
++ [1477] = 0x7a0e, [1478] = 0x8106, [1479] = 0x96bb, [1480] = 0x5e2d,
++ [1481] = 0x60dc, [1482] = 0x621a, [1483] = 0x65a5, [1484] = 0x6614,
++ [1485] = 0x6790, [1486] = 0x77f3, [1487] = 0x7a4d, [1488] = 0x7c4d,
++ [1489] = 0x7e3e, [1490] = 0x810a, [1491] = 0x8cac, [1492] = 0x8d64,
++ [1493] = 0x8de1, [1494] = 0x8e5f, [1495] = 0x78a9, [1496] = 0x5207,
++ [1497] = 0x62d9, [1498] = 0x63a5, [1499] = 0x6442, [1500] = 0x6298,
++ [1501] = 0x8a2d, [1502] = 0x7a83, [1503] = 0x7bc0, [1504] = 0x8aac,
++ [1505] = 0x96ea, [1506] = 0x7d76, [1507] = 0x820c, [1508] = 0x8749,
++ [1509] = 0x4ed9, [1510] = 0x5148, [1511] = 0x5343, [1512] = 0x5360,
++ [1513] = 0x5ba3, [1514] = 0x5c02, [1515] = 0x5c16, [1516] = 0x5ddd,
++ [1517] = 0x6226, [1518] = 0x6247, [1519] = 0x64b0, [1520] = 0x6813,
++ [1521] = 0x6834, [1522] = 0x6cc9, [1523] = 0x6d45, [1524] = 0x6d17,
++ [1525] = 0x67d3, [1526] = 0x6f5c, [1527] = 0x714e, [1528] = 0x717d,
++ [1529] = 0x65cb, [1530] = 0x7a7f, [1531] = 0x7bad, [1532] = 0x7dda,
++ [1536] = 0x7e4a, [1537] = 0x7fa8, [1538] = 0x817a, [1539] = 0x821b,
++ [1540] = 0x8239, [1541] = 0x85a6, [1542] = 0x8a6e, [1543] = 0x8cce,
++ [1544] = 0x8df5, [1545] = 0x9078, [1546] = 0x9077, [1547] = 0x92ad,
++ [1548] = 0x9291, [1549] = 0x9583, [1550] = 0x9bae, [1551] = 0x524d,
++ [1552] = 0x5584, [1553] = 0x6f38, [1554] = 0x7136, [1555] = 0x5168,
++ [1556] = 0x7985, [1557] = 0x7e55, [1558] = 0x81b3, [1559] = 0x7cce,
++ [1560] = 0x564c, [1561] = 0x5851, [1562] = 0x5ca8, [1563] = 0x63aa,
++ [1564] = 0x66fe, [1565] = 0x66fd, [1566] = 0x695a, [1567] = 0x72d9,
++ [1568] = 0x758f, [1569] = 0x758e, [1570] = 0x790e, [1571] = 0x7956,
++ [1572] = 0x79df, [1573] = 0x7c97, [1574] = 0x7d20, [1575] = 0x7d44,
++ [1576] = 0x8607, [1577] = 0x8a34, [1578] = 0x963b, [1579] = 0x9061,
++ [1580] = 0x9f20, [1581] = 0x50e7, [1582] = 0x5275, [1583] = 0x53cc,
++ [1584] = 0x53e2, [1585] = 0x5009, [1586] = 0x55aa, [1587] = 0x58ee,
++ [1588] = 0x594f, [1589] = 0x723d, [1590] = 0x5b8b, [1591] = 0x5c64,
++ [1592] = 0x531d, [1593] = 0x60e3, [1594] = 0x60f3, [1595] = 0x635c,
++ [1596] = 0x6383, [1597] = 0x633f, [1598] = 0x63bb, [1600] = 0x64cd,
++ [1601] = 0x65e9, [1602] = 0x66f9, [1603] = 0x5de3, [1604] = 0x69cd,
++ [1605] = 0x69fd, [1606] = 0x6f15, [1607] = 0x71e5, [1608] = 0x4e89,
++ [1609] = 0x75e9, [1610] = 0x76f8, [1611] = 0x7a93, [1612] = 0x7cdf,
++ [1613] = 0x7dcf, [1614] = 0x7d9c, [1615] = 0x8061, [1616] = 0x8349,
++ [1617] = 0x8358, [1618] = 0x846c, [1619] = 0x84bc, [1620] = 0x85fb,
++ [1621] = 0x88c5, [1622] = 0x8d70, [1623] = 0x9001, [1624] = 0x906d,
++ [1625] = 0x9397, [1626] = 0x971c, [1627] = 0x9a12, [1628] = 0x50cf,
++ [1629] = 0x5897, [1630] = 0x618e, [1631] = 0x81d3, [1632] = 0x8535,
++ [1633] = 0x8d08, [1634] = 0x9020, [1635] = 0x4fc3, [1636] = 0x5074,
++ [1637] = 0x5247, [1638] = 0x5373, [1639] = 0x606f, [1640] = 0x6349,
++ [1641] = 0x675f, [1642] = 0x6e2c, [1643] = 0x8db3, [1644] = 0x901f,
++ [1645] = 0x4fd7, [1646] = 0x5c5e, [1647] = 0x8cca, [1648] = 0x65cf,
++ [1649] = 0x7d9a, [1650] = 0x5352, [1651] = 0x8896, [1652] = 0x5176,
++ [1653] = 0x63c3, [1654] = 0x5b58, [1655] = 0x5b6b, [1656] = 0x5c0a,
++ [1657] = 0x640d, [1658] = 0x6751, [1659] = 0x905c, [1660] = 0x4ed6,
++ [1661] = 0x591a, [1662] = 0x592a, [1663] = 0x6c70, [1664] = 0x8a51,
++ [1665] = 0x553e, [1666] = 0x5815, [1667] = 0x59a5, [1668] = 0x60f0,
++ [1669] = 0x6253, [1670] = 0x67c1, [1671] = 0x8235, [1672] = 0x6955,
++ [1673] = 0x9640, [1674] = 0x99c4, [1675] = 0x9a28, [1676] = 0x4f53,
++ [1677] = 0x5806, [1678] = 0x5bfe, [1679] = 0x8010, [1680] = 0x5cb1,
++ [1681] = 0x5e2f, [1682] = 0x5f85, [1683] = 0x6020, [1684] = 0x614b,
++ [1685] = 0x6234, [1686] = 0x66ff, [1687] = 0x6cf0, [1688] = 0x6ede,
++ [1689] = 0x80ce, [1690] = 0x817f, [1691] = 0x82d4, [1692] = 0x888b,
++ [1693] = 0x8cb8, [1694] = 0x9000, [1695] = 0x902e, [1696] = 0x968a,
++ [1697] = 0x9edb, [1698] = 0x9bdb, [1699] = 0x4ee3, [1700] = 0x53f0,
++ [1701] = 0x5927, [1702] = 0x7b2c, [1703] = 0x918d, [1704] = 0x984c,
++ [1705] = 0x9df9, [1706] = 0x6edd, [1707] = 0x7027, [1708] = 0x5353,
++ [1709] = 0x5544, [1710] = 0x5b85, [1711] = 0x6258, [1712] = 0x629e,
++ [1713] = 0x62d3, [1714] = 0x6ca2, [1715] = 0x6fef, [1716] = 0x7422,
++ [1717] = 0x8a17, [1718] = 0x9438, [1719] = 0x6fc1, [1720] = 0x8afe,
++ [1721] = 0x8338, [1722] = 0x51e7, [1723] = 0x86f8, [1724] = 0x53ea,
++ [1728] = 0x53e9, [1729] = 0x4f46, [1730] = 0x9054, [1731] = 0x8fb0,
++ [1732] = 0x596a, [1733] = 0x8131, [1734] = 0x5dfd, [1735] = 0x7aea,
++ [1736] = 0x8fbf, [1737] = 0x68da, [1738] = 0x8c37, [1739] = 0x72f8,
++ [1740] = 0x9c48, [1741] = 0x6a3d, [1742] = 0x8ab0, [1743] = 0x4e39,
++ [1744] = 0x5358, [1745] = 0x5606, [1746] = 0x5766, [1747] = 0x62c5,
++ [1748] = 0x63a2, [1749] = 0x65e6, [1750] = 0x6b4e, [1751] = 0x6de1,
++ [1752] = 0x6e5b, [1753] = 0x70ad, [1754] = 0x77ed, [1755] = 0x7aef,
++ [1756] = 0x7baa, [1757] = 0x7dbb, [1758] = 0x803d, [1759] = 0x80c6,
++ [1760] = 0x86cb, [1761] = 0x8a95, [1762] = 0x935b, [1763] = 0x56e3,
++ [1764] = 0x58c7, [1765] = 0x5f3e, [1766] = 0x65ad, [1767] = 0x6696,
++ [1768] = 0x6a80, [1769] = 0x6bb5, [1770] = 0x7537, [1771] = 0x8ac7,
++ [1772] = 0x5024, [1773] = 0x77e5, [1774] = 0x5730, [1775] = 0x5f1b,
++ [1776] = 0x6065, [1777] = 0x667a, [1778] = 0x6c60, [1779] = 0x75f4,
++ [1780] = 0x7a1a, [1781] = 0x7f6e, [1782] = 0x81f4, [1783] = 0x8718,
++ [1784] = 0x9045, [1785] = 0x99b3, [1786] = 0x7bc9, [1787] = 0x755c,
++ [1788] = 0x7af9, [1789] = 0x7b51, [1790] = 0x84c4, [1792] = 0x9010,
++ [1793] = 0x79e9, [1794] = 0x7a92, [1795] = 0x8336, [1796] = 0x5ae1,
++ [1797] = 0x7740, [1798] = 0x4e2d, [1799] = 0x4ef2, [1800] = 0x5b99,
++ [1801] = 0x5fe0, [1802] = 0x62bd, [1803] = 0x663c, [1804] = 0x67f1,
++ [1805] = 0x6ce8, [1806] = 0x866b, [1807] = 0x8877, [1808] = 0x8a3b,
++ [1809] = 0x914e, [1810] = 0x92f3, [1811] = 0x99d0, [1812] = 0x6a17,
++ [1813] = 0x7026, [1814] = 0x732a, [1815] = 0x82e7, [1816] = 0x8457,
++ [1817] = 0x8caf, [1818] = 0x4e01, [1819] = 0x5146, [1820] = 0x51cb,
++ [1821] = 0x558b, [1822] = 0x5bf5, [1823] = 0x5e16, [1824] = 0x5e33,
++ [1825] = 0x5e81, [1826] = 0x5f14, [1827] = 0x5f35, [1828] = 0x5f6b,
++ [1829] = 0x5fb4, [1830] = 0x61f2, [1831] = 0x6311, [1832] = 0x66a2,
++ [1833] = 0x671d, [1834] = 0x6f6e, [1835] = 0x7252, [1836] = 0x753a,
++ [1837] = 0x773a, [1838] = 0x8074, [1839] = 0x8139, [1840] = 0x8178,
++ [1841] = 0x8776, [1842] = 0x8abf, [1843] = 0x8adc, [1844] = 0x8d85,
++ [1845] = 0x8df3, [1846] = 0x929a, [1847] = 0x9577, [1848] = 0x9802,
++ [1849] = 0x9ce5, [1850] = 0x52c5, [1851] = 0x6357, [1852] = 0x76f4,
++ [1853] = 0x6715, [1854] = 0x6c88, [1855] = 0x73cd, [1856] = 0x8cc3,
++ [1857] = 0x93ae, [1858] = 0x9673, [1859] = 0x6d25, [1860] = 0x589c,
++ [1861] = 0x690e, [1862] = 0x69cc, [1863] = 0x8ffd, [1864] = 0x939a,
++ [1865] = 0x75db, [1866] = 0x901a, [1867] = 0x585a, [1868] = 0x6802,
++ [1869] = 0x63b4, [1870] = 0x69fb, [1871] = 0x4f43, [1872] = 0x6f2c,
++ [1873] = 0x67d8, [1874] = 0x8fbb, [1875] = 0x8526, [1876] = 0x7db4,
++ [1877] = 0x9354, [1878] = 0x693f, [1879] = 0x6f70, [1880] = 0x576a,
++ [1881] = 0x58f7, [1882] = 0x5b2c, [1883] = 0x7d2c, [1884] = 0x722a,
++ [1885] = 0x540a, [1886] = 0x91e3, [1887] = 0x9db4, [1888] = 0x4ead,
++ [1889] = 0x4f4e, [1890] = 0x505c, [1891] = 0x5075, [1892] = 0x5243,
++ [1893] = 0x8c9e, [1894] = 0x5448, [1895] = 0x5824, [1896] = 0x5b9a,
++ [1897] = 0x5e1d, [1898] = 0x5e95, [1899] = 0x5ead, [1900] = 0x5ef7,
++ [1901] = 0x5f1f, [1902] = 0x608c, [1903] = 0x62b5, [1904] = 0x633a,
++ [1905] = 0x63d0, [1906] = 0x68af, [1907] = 0x6c40, [1908] = 0x7887,
++ [1909] = 0x798e, [1910] = 0x7a0b, [1911] = 0x7de0, [1912] = 0x8247,
++ [1913] = 0x8a02, [1914] = 0x8ae6, [1915] = 0x8e44, [1916] = 0x9013,
++ [1920] = 0x90b8, [1921] = 0x912d, [1922] = 0x91d8, [1923] = 0x9f0e,
++ [1924] = 0x6ce5, [1925] = 0x6458, [1926] = 0x64e2, [1927] = 0x6575,
++ [1928] = 0x6ef4, [1929] = 0x7684, [1930] = 0x7b1b, [1931] = 0x9069,
++ [1932] = 0x93d1, [1933] = 0x6eba, [1934] = 0x54f2, [1935] = 0x5fb9,
++ [1936] = 0x64a4, [1937] = 0x8f4d, [1938] = 0x8fed, [1939] = 0x9244,
++ [1940] = 0x5178, [1941] = 0x586b, [1942] = 0x5929, [1943] = 0x5c55,
++ [1944] = 0x5e97, [1945] = 0x6dfb, [1946] = 0x7e8f, [1947] = 0x751c,
++ [1948] = 0x8cbc, [1949] = 0x8ee2, [1950] = 0x985b, [1951] = 0x70b9,
++ [1952] = 0x4f1d, [1953] = 0x6bbf, [1954] = 0x6fb1, [1955] = 0x7530,
++ [1956] = 0x96fb, [1957] = 0x514e, [1958] = 0x5410, [1959] = 0x5835,
++ [1960] = 0x5857, [1961] = 0x59ac, [1962] = 0x5c60, [1963] = 0x5f92,
++ [1964] = 0x6597, [1965] = 0x675c, [1966] = 0x6e21, [1967] = 0x767b,
++ [1968] = 0x83df, [1969] = 0x8ced, [1970] = 0x9014, [1971] = 0x90fd,
++ [1972] = 0x934d, [1973] = 0x7825, [1974] = 0x783a, [1975] = 0x52aa,
++ [1976] = 0x5ea6, [1977] = 0x571f, [1978] = 0x5974, [1979] = 0x6012,
++ [1980] = 0x5012, [1981] = 0x515a, [1982] = 0x51ac, [1984] = 0x51cd,
++ [1985] = 0x5200, [1986] = 0x5510, [1987] = 0x5854, [1988] = 0x5858,
++ [1989] = 0x5957, [1990] = 0x5b95, [1991] = 0x5cf6, [1992] = 0x5d8b,
++ [1993] = 0x60bc, [1994] = 0x6295, [1995] = 0x642d, [1996] = 0x6771,
++ [1997] = 0x6843, [1998] = 0x68bc, [1999] = 0x68df, [2000] = 0x76d7,
++ [2001] = 0x6dd8, [2002] = 0x6e6f, [2003] = 0x6d9b, [2004] = 0x706f,
++ [2005] = 0x71c8, [2006] = 0x5f53, [2007] = 0x75d8, [2008] = 0x7977,
++ [2009] = 0x7b49, [2010] = 0x7b54, [2011] = 0x7b52, [2012] = 0x7cd6,
++ [2013] = 0x7d71, [2014] = 0x5230, [2015] = 0x8463, [2016] = 0x8569,
++ [2017] = 0x85e4, [2018] = 0x8a0e, [2019] = 0x8b04, [2020] = 0x8c46,
++ [2021] = 0x8e0f, [2022] = 0x9003, [2023] = 0x900f, [2024] = 0x9419,
++ [2025] = 0x9676, [2026] = 0x982d, [2027] = 0x9a30, [2028] = 0x95d8,
++ [2029] = 0x50cd, [2030] = 0x52d5, [2031] = 0x540c, [2032] = 0x5802,
++ [2033] = 0x5c0e, [2034] = 0x61a7, [2035] = 0x649e, [2036] = 0x6d1e,
++ [2037] = 0x77b3, [2038] = 0x7ae5, [2039] = 0x80f4, [2040] = 0x8404,
++ [2041] = 0x9053, [2042] = 0x9285, [2043] = 0x5ce0, [2044] = 0x9d07,
++ [2045] = 0x533f, [2046] = 0x5f97, [2047] = 0x5fb3, [2048] = 0x6d9c,
++ [2049] = 0x7279, [2050] = 0x7763, [2051] = 0x79bf, [2052] = 0x7be4,
++ [2053] = 0x6bd2, [2054] = 0x72ec, [2055] = 0x8aad, [2056] = 0x6803,
++ [2057] = 0x6a61, [2058] = 0x51f8, [2059] = 0x7a81, [2060] = 0x6934,
++ [2061] = 0x5c4a, [2062] = 0x9cf6, [2063] = 0x82eb, [2064] = 0x5bc5,
++ [2065] = 0x9149, [2066] = 0x701e, [2067] = 0x5678, [2068] = 0x5c6f,
++ [2069] = 0x60c7, [2070] = 0x6566, [2071] = 0x6c8c, [2072] = 0x8c5a,
++ [2073] = 0x9041, [2074] = 0x9813, [2075] = 0x5451, [2076] = 0x66c7,
++ [2077] = 0x920d, [2078] = 0x5948, [2079] = 0x90a3, [2080] = 0x5185,
++ [2081] = 0x4e4d, [2082] = 0x51ea, [2083] = 0x8599, [2084] = 0x8b0e,
++ [2085] = 0x7058, [2086] = 0x637a, [2087] = 0x934b, [2088] = 0x6962,
++ [2089] = 0x99b4, [2090] = 0x7e04, [2091] = 0x7577, [2092] = 0x5357,
++ [2093] = 0x6960, [2094] = 0x8edf, [2095] = 0x96e3, [2096] = 0x6c5d,
++ [2097] = 0x4e8c, [2098] = 0x5c3c, [2099] = 0x5f10, [2100] = 0x8fe9,
++ [2101] = 0x5302, [2102] = 0x8cd1, [2103] = 0x8089, [2104] = 0x8679,
++ [2105] = 0x5eff, [2106] = 0x65e5, [2107] = 0x4e73, [2108] = 0x5165,
++ [2112] = 0x5982, [2113] = 0x5c3f, [2114] = 0x97ee, [2115] = 0x4efb,
++ [2116] = 0x598a, [2117] = 0x5fcd, [2118] = 0x8a8d, [2119] = 0x6fe1,
++ [2120] = 0x79b0, [2121] = 0x7962, [2122] = 0x5be7, [2123] = 0x8471,
++ [2124] = 0x732b, [2125] = 0x71b1, [2126] = 0x5e74, [2127] = 0x5ff5,
++ [2128] = 0x637b, [2129] = 0x649a, [2130] = 0x71c3, [2131] = 0x7c98,
++ [2132] = 0x4e43, [2133] = 0x5efc, [2134] = 0x4e4b, [2135] = 0x57dc,
++ [2136] = 0x56a2, [2137] = 0x60a9, [2138] = 0x6fc3, [2139] = 0x7d0d,
++ [2140] = 0x80fd, [2141] = 0x8133, [2142] = 0x81bf, [2143] = 0x8fb2,
++ [2144] = 0x8997, [2145] = 0x86a4, [2146] = 0x5df4, [2147] = 0x628a,
++ [2148] = 0x64ad, [2149] = 0x8987, [2150] = 0x6777, [2151] = 0x6ce2,
++ [2152] = 0x6d3e, [2153] = 0x7436, [2154] = 0x7834, [2155] = 0x5a46,
++ [2156] = 0x7f75, [2157] = 0x82ad, [2158] = 0x99ac, [2159] = 0x4ff3,
++ [2160] = 0x5ec3, [2161] = 0x62dd, [2162] = 0x6392, [2163] = 0x6557,
++ [2164] = 0x676f, [2165] = 0x76c3, [2166] = 0x724c, [2167] = 0x80cc,
++ [2168] = 0x80ba, [2169] = 0x8f29, [2170] = 0x914d, [2171] = 0x500d,
++ [2172] = 0x57f9, [2173] = 0x5a92, [2174] = 0x6885, [2176] = 0x6973,
++ [2177] = 0x7164, [2178] = 0x72fd, [2179] = 0x8cb7, [2180] = 0x58f2,
++ [2181] = 0x8ce0, [2182] = 0x966a, [2183] = 0x9019, [2184] = 0x877f,
++ [2185] = 0x79e4, [2186] = 0x77e7, [2187] = 0x8429, [2188] = 0x4f2f,
++ [2189] = 0x5265, [2190] = 0x535a, [2191] = 0x62cd, [2192] = 0x67cf,
++ [2193] = 0x6cca, [2194] = 0x767d, [2195] = 0x7b94, [2196] = 0x7c95,
++ [2197] = 0x8236, [2198] = 0x8584, [2199] = 0x8feb, [2200] = 0x66dd,
++ [2201] = 0x6f20, [2202] = 0x7206, [2203] = 0x7e1b, [2204] = 0x83ab,
++ [2205] = 0x99c1, [2206] = 0x9ea6, [2207] = 0x51fd, [2208] = 0x7bb1,
++ [2209] = 0x7872, [2210] = 0x7bb8, [2211] = 0x8087, [2212] = 0x7b48,
++ [2213] = 0x6ae8, [2214] = 0x5e61, [2215] = 0x808c, [2216] = 0x7551,
++ [2217] = 0x7560, [2218] = 0x516b, [2219] = 0x9262, [2220] = 0x6e8c,
++ [2221] = 0x767a, [2222] = 0x9197, [2223] = 0x9aea, [2224] = 0x4f10,
++ [2225] = 0x7f70, [2226] = 0x629c, [2227] = 0x7b4f, [2228] = 0x95a5,
++ [2229] = 0x9ce9, [2230] = 0x567a, [2231] = 0x5859, [2232] = 0x86e4,
++ [2233] = 0x96bc, [2234] = 0x4f34, [2235] = 0x5224, [2236] = 0x534a,
++ [2237] = 0x53cd, [2238] = 0x53db, [2239] = 0x5e06, [2240] = 0x642c,
++ [2241] = 0x6591, [2242] = 0x677f, [2243] = 0x6c3e, [2244] = 0x6c4e,
++ [2245] = 0x7248, [2246] = 0x72af, [2247] = 0x73ed, [2248] = 0x7554,
++ [2249] = 0x7e41, [2250] = 0x822c, [2251] = 0x85e9, [2252] = 0x8ca9,
++ [2253] = 0x7bc4, [2254] = 0x91c6, [2255] = 0x7169, [2256] = 0x9812,
++ [2257] = 0x98ef, [2258] = 0x633d, [2259] = 0x6669, [2260] = 0x756a,
++ [2261] = 0x76e4, [2262] = 0x78d0, [2263] = 0x8543, [2264] = 0x86ee,
++ [2265] = 0x532a, [2266] = 0x5351, [2267] = 0x5426, [2268] = 0x5983,
++ [2269] = 0x5e87, [2270] = 0x5f7c, [2271] = 0x60b2, [2272] = 0x6249,
++ [2273] = 0x6279, [2274] = 0x62ab, [2275] = 0x6590, [2276] = 0x6bd4,
++ [2277] = 0x6ccc, [2278] = 0x75b2, [2279] = 0x76ae, [2280] = 0x7891,
++ [2281] = 0x79d8, [2282] = 0x7dcb, [2283] = 0x7f77, [2284] = 0x80a5,
++ [2285] = 0x88ab, [2286] = 0x8ab9, [2287] = 0x8cbb, [2288] = 0x907f,
++ [2289] = 0x975e, [2290] = 0x98db, [2291] = 0x6a0b, [2292] = 0x7c38,
++ [2293] = 0x5099, [2294] = 0x5c3e, [2295] = 0x5fae, [2296] = 0x6787,
++ [2297] = 0x6bd8, [2298] = 0x7435, [2299] = 0x7709, [2300] = 0x7f8e,
++ [2304] = 0x9f3b, [2305] = 0x67ca, [2306] = 0x7a17, [2307] = 0x5339,
++ [2308] = 0x758b, [2309] = 0x9aed, [2310] = 0x5f66, [2311] = 0x819d,
++ [2312] = 0x83f1, [2313] = 0x8098, [2314] = 0x5f3c, [2315] = 0x5fc5,
++ [2316] = 0x7562, [2317] = 0x7b46, [2318] = 0x903c, [2319] = 0x6867,
++ [2320] = 0x59eb, [2321] = 0x5a9b, [2322] = 0x7d10, [2323] = 0x767e,
++ [2324] = 0x8b2c, [2325] = 0x4ff5, [2326] = 0x5f6a, [2327] = 0x6a19,
++ [2328] = 0x6c37, [2329] = 0x6f02, [2330] = 0x74e2, [2331] = 0x7968,
++ [2332] = 0x8868, [2333] = 0x8a55, [2334] = 0x8c79, [2335] = 0x5edf,
++ [2336] = 0x63cf, [2337] = 0x75c5, [2338] = 0x79d2, [2339] = 0x82d7,
++ [2340] = 0x9328, [2341] = 0x92f2, [2342] = 0x849c, [2343] = 0x86ed,
++ [2344] = 0x9c2d, [2345] = 0x54c1, [2346] = 0x5f6c, [2347] = 0x658c,
++ [2348] = 0x6d5c, [2349] = 0x7015, [2350] = 0x8ca7, [2351] = 0x8cd3,
++ [2352] = 0x983b, [2353] = 0x654f, [2354] = 0x74f6, [2355] = 0x4e0d,
++ [2356] = 0x4ed8, [2357] = 0x57e0, [2358] = 0x592b, [2359] = 0x5a66,
++ [2360] = 0x5bcc, [2361] = 0x51a8, [2362] = 0x5e03, [2363] = 0x5e9c,
++ [2364] = 0x6016, [2365] = 0x6276, [2366] = 0x6577, [2368] = 0x65a7,
++ [2369] = 0x666e, [2370] = 0x6d6e, [2371] = 0x7236, [2372] = 0x7b26,
++ [2373] = 0x8150, [2374] = 0x819a, [2375] = 0x8299, [2376] = 0x8b5c,
++ [2377] = 0x8ca0, [2378] = 0x8ce6, [2379] = 0x8d74, [2380] = 0x961c,
++ [2381] = 0x9644, [2382] = 0x4fae, [2383] = 0x64ab, [2384] = 0x6b66,
++ [2385] = 0x821e, [2386] = 0x8461, [2387] = 0x856a, [2388] = 0x90e8,
++ [2389] = 0x5c01, [2390] = 0x6953, [2391] = 0x98a8, [2392] = 0x847a,
++ [2393] = 0x8557, [2394] = 0x4f0f, [2395] = 0x526f, [2396] = 0x5fa9,
++ [2397] = 0x5e45, [2398] = 0x670d, [2399] = 0x798f, [2400] = 0x8179,
++ [2401] = 0x8907, [2402] = 0x8986, [2403] = 0x6df5, [2404] = 0x5f17,
++ [2405] = 0x6255, [2406] = 0x6cb8, [2407] = 0x4ecf, [2408] = 0x7269,
++ [2409] = 0x9b92, [2410] = 0x5206, [2411] = 0x543b, [2412] = 0x5674,
++ [2413] = 0x58b3, [2414] = 0x61a4, [2415] = 0x626e, [2416] = 0x711a,
++ [2417] = 0x596e, [2418] = 0x7c89, [2419] = 0x7cde, [2420] = 0x7d1b,
++ [2421] = 0x96f0, [2422] = 0x6587, [2423] = 0x805e, [2424] = 0x4e19,
++ [2425] = 0x4f75, [2426] = 0x5175, [2427] = 0x5840, [2428] = 0x5e63,
++ [2429] = 0x5e73, [2430] = 0x5f0a, [2431] = 0x67c4, [2432] = 0x4e26,
++ [2433] = 0x853d, [2434] = 0x9589, [2435] = 0x965b, [2436] = 0x7c73,
++ [2437] = 0x9801, [2438] = 0x50fb, [2439] = 0x58c1, [2440] = 0x7656,
++ [2441] = 0x78a7, [2442] = 0x5225, [2443] = 0x77a5, [2444] = 0x8511,
++ [2445] = 0x7b86, [2446] = 0x504f, [2447] = 0x5909, [2448] = 0x7247,
++ [2449] = 0x7bc7, [2450] = 0x7de8, [2451] = 0x8fba, [2452] = 0x8fd4,
++ [2453] = 0x904d, [2454] = 0x4fbf, [2455] = 0x52c9, [2456] = 0x5a29,
++ [2457] = 0x5f01, [2458] = 0x97ad, [2459] = 0x4fdd, [2460] = 0x8217,
++ [2461] = 0x92ea, [2462] = 0x5703, [2463] = 0x6355, [2464] = 0x6b69,
++ [2465] = 0x752b, [2466] = 0x88dc, [2467] = 0x8f14, [2468] = 0x7a42,
++ [2469] = 0x52df, [2470] = 0x5893, [2471] = 0x6155, [2472] = 0x620a,
++ [2473] = 0x66ae, [2474] = 0x6bcd, [2475] = 0x7c3f, [2476] = 0x83e9,
++ [2477] = 0x5023, [2478] = 0x4ff8, [2479] = 0x5305, [2480] = 0x5446,
++ [2481] = 0x5831, [2482] = 0x5949, [2483] = 0x5b9d, [2484] = 0x5cf0,
++ [2485] = 0x5cef, [2486] = 0x5d29, [2487] = 0x5e96, [2488] = 0x62b1,
++ [2489] = 0x6367, [2490] = 0x653e, [2491] = 0x65b9, [2492] = 0x670b,
++ [2496] = 0x6cd5, [2497] = 0x6ce1, [2498] = 0x70f9, [2499] = 0x7832,
++ [2500] = 0x7e2b, [2501] = 0x80de, [2502] = 0x82b3, [2503] = 0x840c,
++ [2504] = 0x84ec, [2505] = 0x8702, [2506] = 0x8912, [2507] = 0x8a2a,
++ [2508] = 0x8c4a, [2509] = 0x90a6, [2510] = 0x92d2, [2511] = 0x98fd,
++ [2512] = 0x9cf3, [2513] = 0x9d6c, [2514] = 0x4e4f, [2515] = 0x4ea1,
++ [2516] = 0x508d, [2517] = 0x5256, [2518] = 0x574a, [2519] = 0x59a8,
++ [2520] = 0x5e3d, [2521] = 0x5fd8, [2522] = 0x5fd9, [2523] = 0x623f,
++ [2524] = 0x66b4, [2525] = 0x671b, [2526] = 0x67d0, [2527] = 0x68d2,
++ [2528] = 0x5192, [2529] = 0x7d21, [2530] = 0x80aa, [2531] = 0x81a8,
++ [2532] = 0x8b00, [2533] = 0x8c8c, [2534] = 0x8cbf, [2535] = 0x927e,
++ [2536] = 0x9632, [2537] = 0x5420, [2538] = 0x982c, [2539] = 0x5317,
++ [2540] = 0x50d5, [2541] = 0x535c, [2542] = 0x58a8, [2543] = 0x64b2,
++ [2544] = 0x6734, [2545] = 0x7267, [2546] = 0x7766, [2547] = 0x7a46,
++ [2548] = 0x91e6, [2549] = 0x52c3, [2550] = 0x6ca1, [2551] = 0x6b86,
++ [2552] = 0x5800, [2553] = 0x5e4c, [2554] = 0x5954, [2555] = 0x672c,
++ [2556] = 0x7ffb, [2557] = 0x51e1, [2558] = 0x76c6, [2560] = 0x6469,
++ [2561] = 0x78e8, [2562] = 0x9b54, [2563] = 0x9ebb, [2564] = 0x57cb,
++ [2565] = 0x59b9, [2566] = 0x6627, [2567] = 0x679a, [2568] = 0x6bce,
++ [2569] = 0x54e9, [2570] = 0x69d9, [2571] = 0x5e55, [2572] = 0x819c,
++ [2573] = 0x6795, [2574] = 0x9baa, [2575] = 0x67fe, [2576] = 0x9c52,
++ [2577] = 0x685d, [2578] = 0x4ea6, [2579] = 0x4fe3, [2580] = 0x53c8,
++ [2581] = 0x62b9, [2582] = 0x672b, [2583] = 0x6cab, [2584] = 0x8fc4,
++ [2585] = 0x4fad, [2586] = 0x7e6d, [2587] = 0x9ebf, [2588] = 0x4e07,
++ [2589] = 0x6162, [2590] = 0x6e80, [2591] = 0x6f2b, [2592] = 0x8513,
++ [2593] = 0x5473, [2594] = 0x672a, [2595] = 0x9b45, [2596] = 0x5df3,
++ [2597] = 0x7b95, [2598] = 0x5cac, [2599] = 0x5bc6, [2600] = 0x871c,
++ [2601] = 0x6e4a, [2602] = 0x84d1, [2603] = 0x7a14, [2604] = 0x8108,
++ [2605] = 0x5999, [2606] = 0x7c8d, [2607] = 0x6c11, [2608] = 0x7720,
++ [2609] = 0x52d9, [2610] = 0x5922, [2611] = 0x7121, [2612] = 0x725f,
++ [2613] = 0x77db, [2614] = 0x9727, [2615] = 0x9d61, [2616] = 0x690b,
++ [2617] = 0x5a7f, [2618] = 0x5a18, [2619] = 0x51a5, [2620] = 0x540d,
++ [2621] = 0x547d, [2622] = 0x660e, [2623] = 0x76df, [2624] = 0x8ff7,
++ [2625] = 0x9298, [2626] = 0x9cf4, [2627] = 0x59ea, [2628] = 0x725d,
++ [2629] = 0x6ec5, [2630] = 0x514d, [2631] = 0x68c9, [2632] = 0x7dbf,
++ [2633] = 0x7dec, [2634] = 0x9762, [2635] = 0x9eba, [2636] = 0x6478,
++ [2637] = 0x6a21, [2638] = 0x8302, [2639] = 0x5984, [2640] = 0x5b5f,
++ [2641] = 0x6bdb, [2642] = 0x731b, [2643] = 0x76f2, [2644] = 0x7db2,
++ [2645] = 0x8017, [2646] = 0x8499, [2647] = 0x5132, [2648] = 0x6728,
++ [2649] = 0x9ed9, [2650] = 0x76ee, [2651] = 0x6762, [2652] = 0x52ff,
++ [2653] = 0x9905, [2654] = 0x5c24, [2655] = 0x623b, [2656] = 0x7c7e,
++ [2657] = 0x8cb0, [2658] = 0x554f, [2659] = 0x60b6, [2660] = 0x7d0b,
++ [2661] = 0x9580, [2662] = 0x5301, [2663] = 0x4e5f, [2664] = 0x51b6,
++ [2665] = 0x591c, [2666] = 0x723a, [2667] = 0x8036, [2668] = 0x91ce,
++ [2669] = 0x5f25, [2670] = 0x77e2, [2671] = 0x5384, [2672] = 0x5f79,
++ [2673] = 0x7d04, [2674] = 0x85ac, [2675] = 0x8a33, [2676] = 0x8e8d,
++ [2677] = 0x9756, [2678] = 0x67f3, [2679] = 0x85ae, [2680] = 0x9453,
++ [2681] = 0x6109, [2682] = 0x6108, [2683] = 0x6cb9, [2684] = 0x7652,
++ [2688] = 0x8aed, [2689] = 0x8f38, [2690] = 0x552f, [2691] = 0x4f51,
++ [2692] = 0x512a, [2693] = 0x52c7, [2694] = 0x53cb, [2695] = 0x5ba5,
++ [2696] = 0x5e7d, [2697] = 0x60a0, [2698] = 0x6182, [2699] = 0x63d6,
++ [2700] = 0x6709, [2701] = 0x67da, [2702] = 0x6e67, [2703] = 0x6d8c,
++ [2704] = 0x7336, [2705] = 0x7337, [2706] = 0x7531, [2707] = 0x7950,
++ [2708] = 0x88d5, [2709] = 0x8a98, [2710] = 0x904a, [2711] = 0x9091,
++ [2712] = 0x90f5, [2713] = 0x96c4, [2714] = 0x878d, [2715] = 0x5915,
++ [2716] = 0x4e88, [2717] = 0x4f59, [2718] = 0x4e0e, [2719] = 0x8a89,
++ [2720] = 0x8f3f, [2721] = 0x9810, [2722] = 0x50ad, [2723] = 0x5e7c,
++ [2724] = 0x5996, [2725] = 0x5bb9, [2726] = 0x5eb8, [2727] = 0x63da,
++ [2728] = 0x63fa, [2729] = 0x64c1, [2730] = 0x66dc, [2731] = 0x694a,
++ [2732] = 0x69d8, [2733] = 0x6d0b, [2734] = 0x6eb6, [2735] = 0x7194,
++ [2736] = 0x7528, [2737] = 0x7aaf, [2738] = 0x7f8a, [2739] = 0x8000,
++ [2740] = 0x8449, [2741] = 0x84c9, [2742] = 0x8981, [2743] = 0x8b21,
++ [2744] = 0x8e0a, [2745] = 0x9065, [2746] = 0x967d, [2747] = 0x990a,
++ [2748] = 0x617e, [2749] = 0x6291, [2750] = 0x6b32, [2752] = 0x6c83,
++ [2753] = 0x6d74, [2754] = 0x7fcc, [2755] = 0x7ffc, [2756] = 0x6dc0,
++ [2757] = 0x7f85, [2758] = 0x87ba, [2759] = 0x88f8, [2760] = 0x6765,
++ [2761] = 0x83b1, [2762] = 0x983c, [2763] = 0x96f7, [2764] = 0x6d1b,
++ [2765] = 0x7d61, [2766] = 0x843d, [2767] = 0x916a, [2768] = 0x4e71,
++ [2769] = 0x5375, [2770] = 0x5d50, [2771] = 0x6b04, [2772] = 0x6feb,
++ [2773] = 0x85cd, [2774] = 0x862d, [2775] = 0x89a7, [2776] = 0x5229,
++ [2777] = 0x540f, [2778] = 0x5c65, [2779] = 0x674e, [2780] = 0x68a8,
++ [2781] = 0x7406, [2782] = 0x7483, [2783] = 0x75e2, [2784] = 0x88cf,
++ [2785] = 0x88e1, [2786] = 0x91cc, [2787] = 0x96e2, [2788] = 0x9678,
++ [2789] = 0x5f8b, [2790] = 0x7387, [2791] = 0x7acb, [2792] = 0x844e,
++ [2793] = 0x63a0, [2794] = 0x7565, [2795] = 0x5289, [2796] = 0x6d41,
++ [2797] = 0x6e9c, [2798] = 0x7409, [2799] = 0x7559, [2800] = 0x786b,
++ [2801] = 0x7c92, [2802] = 0x9686, [2803] = 0x7adc, [2804] = 0x9f8d,
++ [2805] = 0x4fb6, [2806] = 0x616e, [2807] = 0x65c5, [2808] = 0x865c,
++ [2809] = 0x4e86, [2810] = 0x4eae, [2811] = 0x50da, [2812] = 0x4e21,
++ [2813] = 0x51cc, [2814] = 0x5bee, [2815] = 0x6599, [2816] = 0x6881,
++ [2817] = 0x6dbc, [2818] = 0x731f, [2819] = 0x7642, [2820] = 0x77ad,
++ [2821] = 0x7a1c, [2822] = 0x7ce7, [2823] = 0x826f, [2824] = 0x8ad2,
++ [2825] = 0x907c, [2826] = 0x91cf, [2827] = 0x9675, [2828] = 0x9818,
++ [2829] = 0x529b, [2830] = 0x7dd1, [2831] = 0x502b, [2832] = 0x5398,
++ [2833] = 0x6797, [2834] = 0x6dcb, [2835] = 0x71d0, [2836] = 0x7433,
++ [2837] = 0x81e8, [2838] = 0x8f2a, [2839] = 0x96a3, [2840] = 0x9c57,
++ [2841] = 0x9e9f, [2842] = 0x7460, [2843] = 0x5841, [2844] = 0x6d99,
++ [2845] = 0x7d2f, [2846] = 0x985e, [2847] = 0x4ee4, [2848] = 0x4f36,
++ [2849] = 0x4f8b, [2850] = 0x51b7, [2851] = 0x52b1, [2852] = 0x5dba,
++ [2853] = 0x601c, [2854] = 0x73b2, [2855] = 0x793c, [2856] = 0x82d3,
++ [2857] = 0x9234, [2858] = 0x96b7, [2859] = 0x96f6, [2860] = 0x970a,
++ [2861] = 0x9e97, [2862] = 0x9f62, [2863] = 0x66a6, [2864] = 0x6b74,
++ [2865] = 0x5217, [2866] = 0x52a3, [2867] = 0x70c8, [2868] = 0x88c2,
++ [2869] = 0x5ec9, [2870] = 0x604b, [2871] = 0x6190, [2872] = 0x6f23,
++ [2873] = 0x7149, [2874] = 0x7c3e, [2875] = 0x7df4, [2876] = 0x806f,
++ [2880] = 0x84ee, [2881] = 0x9023, [2882] = 0x932c, [2883] = 0x5442,
++ [2884] = 0x9b6f, [2885] = 0x6ad3, [2886] = 0x7089, [2887] = 0x8cc2,
++ [2888] = 0x8def, [2889] = 0x9732, [2890] = 0x52b4, [2891] = 0x5a41,
++ [2892] = 0x5eca, [2893] = 0x5f04, [2894] = 0x6717, [2895] = 0x697c,
++ [2896] = 0x6994, [2897] = 0x6d6a, [2898] = 0x6f0f, [2899] = 0x7262,
++ [2900] = 0x72fc, [2901] = 0x7bed, [2902] = 0x8001, [2903] = 0x807e,
++ [2904] = 0x874b, [2905] = 0x90ce, [2906] = 0x516d, [2907] = 0x9e93,
++ [2908] = 0x7984, [2909] = 0x808b, [2910] = 0x9332, [2911] = 0x8ad6,
++ [2912] = 0x502d, [2913] = 0x548c, [2914] = 0x8a71, [2915] = 0x6b6a,
++ [2916] = 0x8cc4, [2917] = 0x8107, [2918] = 0x60d1, [2919] = 0x67a0,
++ [2920] = 0x9df2, [2921] = 0x4e99, [2922] = 0x4e98, [2923] = 0x9c10,
++ [2924] = 0x8a6b, [2925] = 0x85c1, [2926] = 0x8568, [2927] = 0x6900,
++ [2928] = 0x6e7e, [2929] = 0x7897, [2930] = 0x8155, [2975] = 0x5f0c,
++ [2976] = 0x4e10, [2977] = 0x4e15, [2978] = 0x4e2a, [2979] = 0x4e31,
++ [2980] = 0x4e36, [2981] = 0x4e3c, [2982] = 0x4e3f, [2983] = 0x4e42,
++ [2984] = 0x4e56, [2985] = 0x4e58, [2986] = 0x4e82, [2987] = 0x4e85,
++ [2988] = 0x8c6b, [2989] = 0x4e8a, [2990] = 0x8212, [2991] = 0x5f0d,
++ [2992] = 0x4e8e, [2993] = 0x4e9e, [2994] = 0x4e9f, [2995] = 0x4ea0,
++ [2996] = 0x4ea2, [2997] = 0x4eb0, [2998] = 0x4eb3, [2999] = 0x4eb6,
++ [3000] = 0x4ece, [3001] = 0x4ecd, [3002] = 0x4ec4, [3003] = 0x4ec6,
++ [3004] = 0x4ec2, [3005] = 0x4ed7, [3006] = 0x4ede, [3007] = 0x4eed,
++ [3008] = 0x4edf, [3009] = 0x4ef7, [3010] = 0x4f09, [3011] = 0x4f5a,
++ [3012] = 0x4f30, [3013] = 0x4f5b, [3014] = 0x4f5d, [3015] = 0x4f57,
++ [3016] = 0x4f47, [3017] = 0x4f76, [3018] = 0x4f88, [3019] = 0x4f8f,
++ [3020] = 0x4f98, [3021] = 0x4f7b, [3022] = 0x4f69, [3023] = 0x4f70,
++ [3024] = 0x4f91, [3025] = 0x4f6f, [3026] = 0x4f86, [3027] = 0x4f96,
++ [3028] = 0x5118, [3029] = 0x4fd4, [3030] = 0x4fdf, [3031] = 0x4fce,
++ [3032] = 0x4fd8, [3033] = 0x4fdb, [3034] = 0x4fd1, [3035] = 0x4fda,
++ [3036] = 0x4fd0, [3037] = 0x4fe4, [3038] = 0x4fe5, [3039] = 0x501a,
++ [3040] = 0x5028, [3041] = 0x5014, [3042] = 0x502a, [3043] = 0x5025,
++ [3044] = 0x5005, [3045] = 0x4f1c, [3046] = 0x4ff6, [3047] = 0x5021,
++ [3048] = 0x5029, [3049] = 0x502c, [3050] = 0x4ffe, [3051] = 0x4fef,
++ [3052] = 0x5011, [3053] = 0x5006, [3054] = 0x5043, [3055] = 0x5047,
++ [3056] = 0x6703, [3057] = 0x5055, [3058] = 0x5050, [3059] = 0x5048,
++ [3060] = 0x505a, [3061] = 0x5056, [3062] = 0x506c, [3063] = 0x5078,
++ [3064] = 0x5080, [3065] = 0x509a, [3066] = 0x5085, [3067] = 0x50b4,
++ [3068] = 0x50b2, [3072] = 0x50c9, [3073] = 0x50ca, [3074] = 0x50b3,
++ [3075] = 0x50c2, [3076] = 0x50d6, [3077] = 0x50de, [3078] = 0x50e5,
++ [3079] = 0x50ed, [3080] = 0x50e3, [3081] = 0x50ee, [3082] = 0x50f9,
++ [3083] = 0x50f5, [3084] = 0x5109, [3085] = 0x5101, [3086] = 0x5102,
++ [3087] = 0x5116, [3088] = 0x5115, [3089] = 0x5114, [3090] = 0x511a,
++ [3091] = 0x5121, [3092] = 0x513a, [3093] = 0x5137, [3094] = 0x513c,
++ [3095] = 0x513b, [3096] = 0x513f, [3097] = 0x5140, [3098] = 0x5152,
++ [3099] = 0x514c, [3100] = 0x5154, [3101] = 0x5162, [3102] = 0x7af8,
++ [3103] = 0x5169, [3104] = 0x516a, [3105] = 0x516e, [3106] = 0x5180,
++ [3107] = 0x5182, [3108] = 0x56d8, [3109] = 0x518c, [3110] = 0x5189,
++ [3111] = 0x518f, [3112] = 0x5191, [3113] = 0x5193, [3114] = 0x5195,
++ [3115] = 0x5196, [3116] = 0x51a4, [3117] = 0x51a6, [3118] = 0x51a2,
++ [3119] = 0x51a9, [3120] = 0x51aa, [3121] = 0x51ab, [3122] = 0x51b3,
++ [3123] = 0x51b1, [3124] = 0x51b2, [3125] = 0x51b0, [3126] = 0x51b5,
++ [3127] = 0x51bd, [3128] = 0x51c5, [3129] = 0x51c9, [3130] = 0x51db,
++ [3131] = 0x51e0, [3132] = 0x8655, [3133] = 0x51e9, [3134] = 0x51ed,
++ [3136] = 0x51f0, [3137] = 0x51f5, [3138] = 0x51fe, [3139] = 0x5204,
++ [3140] = 0x520b, [3141] = 0x5214, [3142] = 0x520e, [3143] = 0x5227,
++ [3144] = 0x522a, [3145] = 0x522e, [3146] = 0x5233, [3147] = 0x5239,
++ [3148] = 0x524f, [3149] = 0x5244, [3150] = 0x524b, [3151] = 0x524c,
++ [3152] = 0x525e, [3153] = 0x5254, [3154] = 0x526a, [3155] = 0x5274,
++ [3156] = 0x5269, [3157] = 0x5273, [3158] = 0x527f, [3159] = 0x527d,
++ [3160] = 0x528d, [3161] = 0x5294, [3162] = 0x5292, [3163] = 0x5271,
++ [3164] = 0x5288, [3165] = 0x5291, [3166] = 0x8fa8, [3167] = 0x8fa7,
++ [3168] = 0x52ac, [3169] = 0x52ad, [3170] = 0x52bc, [3171] = 0x52b5,
++ [3172] = 0x52c1, [3173] = 0x52cd, [3174] = 0x52d7, [3175] = 0x52de,
++ [3176] = 0x52e3, [3177] = 0x52e6, [3178] = 0x98ed, [3179] = 0x52e0,
++ [3180] = 0x52f3, [3181] = 0x52f5, [3182] = 0x52f8, [3183] = 0x52f9,
++ [3184] = 0x5306, [3185] = 0x5308, [3186] = 0x7538, [3187] = 0x530d,
++ [3188] = 0x5310, [3189] = 0x530f, [3190] = 0x5315, [3191] = 0x531a,
++ [3192] = 0x5323, [3193] = 0x532f, [3194] = 0x5331, [3195] = 0x5333,
++ [3196] = 0x5338, [3197] = 0x5340, [3198] = 0x5346, [3199] = 0x5345,
++ [3200] = 0x4e17, [3201] = 0x5349, [3202] = 0x534d, [3203] = 0x51d6,
++ [3204] = 0x535e, [3205] = 0x5369, [3206] = 0x536e, [3207] = 0x5918,
++ [3208] = 0x537b, [3209] = 0x5377, [3210] = 0x5382, [3211] = 0x5396,
++ [3212] = 0x53a0, [3213] = 0x53a6, [3214] = 0x53a5, [3215] = 0x53ae,
++ [3216] = 0x53b0, [3217] = 0x53b6, [3218] = 0x53c3, [3219] = 0x7c12,
++ [3220] = 0x96d9, [3221] = 0x53df, [3222] = 0x66fc, [3223] = 0x71ee,
++ [3224] = 0x53ee, [3225] = 0x53e8, [3226] = 0x53ed, [3227] = 0x53fa,
++ [3228] = 0x5401, [3229] = 0x543d, [3230] = 0x5440, [3231] = 0x542c,
++ [3232] = 0x542d, [3233] = 0x543c, [3234] = 0x542e, [3235] = 0x5436,
++ [3236] = 0x5429, [3237] = 0x541d, [3238] = 0x544e, [3239] = 0x548f,
++ [3240] = 0x5475, [3241] = 0x548e, [3242] = 0x545f, [3243] = 0x5471,
++ [3244] = 0x5477, [3245] = 0x5470, [3246] = 0x5492, [3247] = 0x547b,
++ [3248] = 0x5480, [3249] = 0x5476, [3250] = 0x5484, [3251] = 0x5490,
++ [3252] = 0x5486, [3253] = 0x54c7, [3254] = 0x54a2, [3255] = 0x54b8,
++ [3256] = 0x54a5, [3257] = 0x54ac, [3258] = 0x54c4, [3259] = 0x54c8,
++ [3260] = 0x54a8, [3264] = 0x54ab, [3265] = 0x54c2, [3266] = 0x54a4,
++ [3267] = 0x54be, [3268] = 0x54bc, [3269] = 0x54d8, [3270] = 0x54e5,
++ [3271] = 0x54e6, [3272] = 0x550f, [3273] = 0x5514, [3274] = 0x54fd,
++ [3275] = 0x54ee, [3276] = 0x54ed, [3277] = 0x54fa, [3278] = 0x54e2,
++ [3279] = 0x5539, [3280] = 0x5540, [3281] = 0x5563, [3282] = 0x554c,
++ [3283] = 0x552e, [3284] = 0x555c, [3285] = 0x5545, [3286] = 0x5556,
++ [3287] = 0x5557, [3288] = 0x5538, [3289] = 0x5533, [3290] = 0x555d,
++ [3291] = 0x5599, [3292] = 0x5580, [3293] = 0x54af, [3294] = 0x558a,
++ [3295] = 0x559f, [3296] = 0x557b, [3297] = 0x557e, [3298] = 0x5598,
++ [3299] = 0x559e, [3300] = 0x55ae, [3301] = 0x557c, [3302] = 0x5583,
++ [3303] = 0x55a9, [3304] = 0x5587, [3305] = 0x55a8, [3306] = 0x55da,
++ [3307] = 0x55c5, [3308] = 0x55df, [3309] = 0x55c4, [3310] = 0x55dc,
++ [3311] = 0x55e4, [3312] = 0x55d4, [3313] = 0x5614, [3314] = 0x55f7,
++ [3315] = 0x5616, [3316] = 0x55fe, [3317] = 0x55fd, [3318] = 0x561b,
++ [3319] = 0x55f9, [3320] = 0x564e, [3321] = 0x5650, [3322] = 0x71df,
++ [3323] = 0x5634, [3324] = 0x5636, [3325] = 0x5632, [3326] = 0x5638,
++ [3328] = 0x566b, [3329] = 0x5664, [3330] = 0x562f, [3331] = 0x566c,
++ [3332] = 0x566a, [3333] = 0x5686, [3334] = 0x5680, [3335] = 0x568a,
++ [3336] = 0x56a0, [3337] = 0x5694, [3338] = 0x568f, [3339] = 0x56a5,
++ [3340] = 0x56ae, [3341] = 0x56b6, [3342] = 0x56b4, [3343] = 0x56c2,
++ [3344] = 0x56bc, [3345] = 0x56c1, [3346] = 0x56c3, [3347] = 0x56c0,
++ [3348] = 0x56c8, [3349] = 0x56ce, [3350] = 0x56d1, [3351] = 0x56d3,
++ [3352] = 0x56d7, [3353] = 0x56ee, [3354] = 0x56f9, [3355] = 0x5700,
++ [3356] = 0x56ff, [3357] = 0x5704, [3358] = 0x5709, [3359] = 0x5708,
++ [3360] = 0x570b, [3361] = 0x570d, [3362] = 0x5713, [3363] = 0x5718,
++ [3364] = 0x5716, [3365] = 0x55c7, [3366] = 0x571c, [3367] = 0x5726,
++ [3368] = 0x5737, [3369] = 0x5738, [3370] = 0x574e, [3371] = 0x573b,
++ [3372] = 0x5740, [3373] = 0x574f, [3374] = 0x5769, [3375] = 0x57c0,
++ [3376] = 0x5788, [3377] = 0x5761, [3378] = 0x577f, [3379] = 0x5789,
++ [3380] = 0x5793, [3381] = 0x57a0, [3382] = 0x57b3, [3383] = 0x57a4,
++ [3384] = 0x57aa, [3385] = 0x57b0, [3386] = 0x57c3, [3387] = 0x57c6,
++ [3388] = 0x57d4, [3389] = 0x57d2, [3390] = 0x57d3, [3391] = 0x580a,
++ [3392] = 0x57d6, [3393] = 0x57e3, [3394] = 0x580b, [3395] = 0x5819,
++ [3396] = 0x581d, [3397] = 0x5872, [3398] = 0x5821, [3399] = 0x5862,
++ [3400] = 0x584b, [3401] = 0x5870, [3402] = 0x6bc0, [3403] = 0x5852,
++ [3404] = 0x583d, [3405] = 0x5879, [3406] = 0x5885, [3407] = 0x58b9,
++ [3408] = 0x589f, [3409] = 0x58ab, [3410] = 0x58ba, [3411] = 0x58de,
++ [3412] = 0x58bb, [3413] = 0x58b8, [3414] = 0x58ae, [3415] = 0x58c5,
++ [3416] = 0x58d3, [3417] = 0x58d1, [3418] = 0x58d7, [3419] = 0x58d9,
++ [3420] = 0x58d8, [3421] = 0x58e5, [3422] = 0x58dc, [3423] = 0x58e4,
++ [3424] = 0x58df, [3425] = 0x58ef, [3426] = 0x58fa, [3427] = 0x58f9,
++ [3428] = 0x58fb, [3429] = 0x58fc, [3430] = 0x58fd, [3431] = 0x5902,
++ [3432] = 0x590a, [3433] = 0x5910, [3434] = 0x591b, [3435] = 0x68a6,
++ [3436] = 0x5925, [3437] = 0x592c, [3438] = 0x592d, [3439] = 0x5932,
++ [3440] = 0x5938, [3441] = 0x593e, [3442] = 0x7ad2, [3443] = 0x5955,
++ [3444] = 0x5950, [3445] = 0x594e, [3446] = 0x595a, [3447] = 0x5958,
++ [3448] = 0x5962, [3449] = 0x5960, [3450] = 0x5967, [3451] = 0x596c,
++ [3452] = 0x5969, [3456] = 0x5978, [3457] = 0x5981, [3458] = 0x599d,
++ [3459] = 0x4f5e, [3460] = 0x4fab, [3461] = 0x59a3, [3462] = 0x59b2,
++ [3463] = 0x59c6, [3464] = 0x59e8, [3465] = 0x59dc, [3466] = 0x598d,
++ [3467] = 0x59d9, [3468] = 0x59da, [3469] = 0x5a25, [3470] = 0x5a1f,
++ [3471] = 0x5a11, [3472] = 0x5a1c, [3473] = 0x5a09, [3474] = 0x5a1a,
++ [3475] = 0x5a40, [3476] = 0x5a6c, [3477] = 0x5a49, [3478] = 0x5a35,
++ [3479] = 0x5a36, [3480] = 0x5a62, [3481] = 0x5a6a, [3482] = 0x5a9a,
++ [3483] = 0x5abc, [3484] = 0x5abe, [3485] = 0x5acb, [3486] = 0x5ac2,
++ [3487] = 0x5abd, [3488] = 0x5ae3, [3489] = 0x5ad7, [3490] = 0x5ae6,
++ [3491] = 0x5ae9, [3492] = 0x5ad6, [3493] = 0x5afa, [3494] = 0x5afb,
++ [3495] = 0x5b0c, [3496] = 0x5b0b, [3497] = 0x5b16, [3498] = 0x5b32,
++ [3499] = 0x5ad0, [3500] = 0x5b2a, [3501] = 0x5b36, [3502] = 0x5b3e,
++ [3503] = 0x5b43, [3504] = 0x5b45, [3505] = 0x5b40, [3506] = 0x5b51,
++ [3507] = 0x5b55, [3508] = 0x5b5a, [3509] = 0x5b5b, [3510] = 0x5b65,
++ [3511] = 0x5b69, [3512] = 0x5b70, [3513] = 0x5b73, [3514] = 0x5b75,
++ [3515] = 0x5b78, [3516] = 0x6588, [3517] = 0x5b7a, [3518] = 0x5b80,
++ [3520] = 0x5b83, [3521] = 0x5ba6, [3522] = 0x5bb8, [3523] = 0x5bc3,
++ [3524] = 0x5bc7, [3525] = 0x5bc9, [3526] = 0x5bd4, [3527] = 0x5bd0,
++ [3528] = 0x5be4, [3529] = 0x5be6, [3530] = 0x5be2, [3531] = 0x5bde,
++ [3532] = 0x5be5, [3533] = 0x5beb, [3534] = 0x5bf0, [3535] = 0x5bf6,
++ [3536] = 0x5bf3, [3537] = 0x5c05, [3538] = 0x5c07, [3539] = 0x5c08,
++ [3540] = 0x5c0d, [3541] = 0x5c13, [3542] = 0x5c20, [3543] = 0x5c22,
++ [3544] = 0x5c28, [3545] = 0x5c38, [3546] = 0x5c39, [3547] = 0x5c41,
++ [3548] = 0x5c46, [3549] = 0x5c4e, [3550] = 0x5c53, [3551] = 0x5c50,
++ [3552] = 0x5c4f, [3553] = 0x5b71, [3554] = 0x5c6c, [3555] = 0x5c6e,
++ [3556] = 0x4e62, [3557] = 0x5c76, [3558] = 0x5c79, [3559] = 0x5c8c,
++ [3560] = 0x5c91, [3561] = 0x5c94, [3562] = 0x599b, [3563] = 0x5cab,
++ [3564] = 0x5cbb, [3565] = 0x5cb6, [3566] = 0x5cbc, [3567] = 0x5cb7,
++ [3568] = 0x5cc5, [3569] = 0x5cbe, [3570] = 0x5cc7, [3571] = 0x5cd9,
++ [3572] = 0x5ce9, [3573] = 0x5cfd, [3574] = 0x5cfa, [3575] = 0x5ced,
++ [3576] = 0x5d8c, [3577] = 0x5cea, [3578] = 0x5d0b, [3579] = 0x5d15,
++ [3580] = 0x5d17, [3581] = 0x5d5c, [3582] = 0x5d1f, [3583] = 0x5d1b,
++ [3584] = 0x5d11, [3585] = 0x5d14, [3586] = 0x5d22, [3587] = 0x5d1a,
++ [3588] = 0x5d19, [3589] = 0x5d18, [3590] = 0x5d4c, [3591] = 0x5d52,
++ [3592] = 0x5d4e, [3593] = 0x5d4b, [3594] = 0x5d6c, [3595] = 0x5d73,
++ [3596] = 0x5d76, [3597] = 0x5d87, [3598] = 0x5d84, [3599] = 0x5d82,
++ [3600] = 0x5da2, [3601] = 0x5d9d, [3602] = 0x5dac, [3603] = 0x5dae,
++ [3604] = 0x5dbd, [3605] = 0x5d90, [3606] = 0x5db7, [3607] = 0x5dbc,
++ [3608] = 0x5dc9, [3609] = 0x5dcd, [3610] = 0x5dd3, [3611] = 0x5dd2,
++ [3612] = 0x5dd6, [3613] = 0x5ddb, [3614] = 0x5deb, [3615] = 0x5df2,
++ [3616] = 0x5df5, [3617] = 0x5e0b, [3618] = 0x5e1a, [3619] = 0x5e19,
++ [3620] = 0x5e11, [3621] = 0x5e1b, [3622] = 0x5e36, [3623] = 0x5e37,
++ [3624] = 0x5e44, [3625] = 0x5e43, [3626] = 0x5e40, [3627] = 0x5e4e,
++ [3628] = 0x5e57, [3629] = 0x5e54, [3630] = 0x5e5f, [3631] = 0x5e62,
++ [3632] = 0x5e64, [3633] = 0x5e47, [3634] = 0x5e75, [3635] = 0x5e76,
++ [3636] = 0x5e7a, [3637] = 0x9ebc, [3638] = 0x5e7f, [3639] = 0x5ea0,
++ [3640] = 0x5ec1, [3641] = 0x5ec2, [3642] = 0x5ec8, [3643] = 0x5ed0,
++ [3644] = 0x5ecf, [3648] = 0x5ed6, [3649] = 0x5ee3, [3650] = 0x5edd,
++ [3651] = 0x5eda, [3652] = 0x5edb, [3653] = 0x5ee2, [3654] = 0x5ee1,
++ [3655] = 0x5ee8, [3656] = 0x5ee9, [3657] = 0x5eec, [3658] = 0x5ef1,
++ [3659] = 0x5ef3, [3660] = 0x5ef0, [3661] = 0x5ef4, [3662] = 0x5ef8,
++ [3663] = 0x5efe, [3664] = 0x5f03, [3665] = 0x5f09, [3666] = 0x5f5d,
++ [3667] = 0x5f5c, [3668] = 0x5f0b, [3669] = 0x5f11, [3670] = 0x5f16,
++ [3671] = 0x5f29, [3672] = 0x5f2d, [3673] = 0x5f38, [3674] = 0x5f41,
++ [3675] = 0x5f48, [3676] = 0x5f4c, [3677] = 0x5f4e, [3678] = 0x5f2f,
++ [3679] = 0x5f51, [3680] = 0x5f56, [3681] = 0x5f57, [3682] = 0x5f59,
++ [3683] = 0x5f61, [3684] = 0x5f6d, [3685] = 0x5f73, [3686] = 0x5f77,
++ [3687] = 0x5f83, [3688] = 0x5f82, [3689] = 0x5f7f, [3690] = 0x5f8a,
++ [3691] = 0x5f88, [3692] = 0x5f91, [3693] = 0x5f87, [3694] = 0x5f9e,
++ [3695] = 0x5f99, [3696] = 0x5f98, [3697] = 0x5fa0, [3698] = 0x5fa8,
++ [3699] = 0x5fad, [3700] = 0x5fbc, [3701] = 0x5fd6, [3702] = 0x5ffb,
++ [3703] = 0x5fe4, [3704] = 0x5ff8, [3705] = 0x5ff1, [3706] = 0x5fdd,
++ [3707] = 0x60b3, [3708] = 0x5fff, [3709] = 0x6021, [3710] = 0x6060,
++ [3712] = 0x6019, [3713] = 0x6010, [3714] = 0x6029, [3715] = 0x600e,
++ [3716] = 0x6031, [3717] = 0x601b, [3718] = 0x6015, [3719] = 0x602b,
++ [3720] = 0x6026, [3721] = 0x600f, [3722] = 0x603a, [3723] = 0x605a,
++ [3724] = 0x6041, [3725] = 0x606a, [3726] = 0x6077, [3727] = 0x605f,
++ [3728] = 0x604a, [3729] = 0x6046, [3730] = 0x604d, [3731] = 0x6063,
++ [3732] = 0x6043, [3733] = 0x6064, [3734] = 0x6042, [3735] = 0x606c,
++ [3736] = 0x606b, [3737] = 0x6059, [3738] = 0x6081, [3739] = 0x608d,
++ [3740] = 0x60e7, [3741] = 0x6083, [3742] = 0x609a, [3743] = 0x6084,
++ [3744] = 0x609b, [3745] = 0x6096, [3746] = 0x6097, [3747] = 0x6092,
++ [3748] = 0x60a7, [3749] = 0x608b, [3750] = 0x60e1, [3751] = 0x60b8,
++ [3752] = 0x60e0, [3753] = 0x60d3, [3754] = 0x60b4, [3755] = 0x5ff0,
++ [3756] = 0x60bd, [3757] = 0x60c6, [3758] = 0x60b5, [3759] = 0x60d8,
++ [3760] = 0x614d, [3761] = 0x6115, [3762] = 0x6106, [3763] = 0x60f6,
++ [3764] = 0x60f7, [3765] = 0x6100, [3766] = 0x60f4, [3767] = 0x60fa,
++ [3768] = 0x6103, [3769] = 0x6121, [3770] = 0x60fb, [3771] = 0x60f1,
++ [3772] = 0x610d, [3773] = 0x610e, [3774] = 0x6147, [3775] = 0x613e,
++ [3776] = 0x6128, [3777] = 0x6127, [3778] = 0x614a, [3779] = 0x613f,
++ [3780] = 0x613c, [3781] = 0x612c, [3782] = 0x6134, [3783] = 0x613d,
++ [3784] = 0x6142, [3785] = 0x6144, [3786] = 0x6173, [3787] = 0x6177,
++ [3788] = 0x6158, [3789] = 0x6159, [3790] = 0x615a, [3791] = 0x616b,
++ [3792] = 0x6174, [3793] = 0x616f, [3794] = 0x6165, [3795] = 0x6171,
++ [3796] = 0x615f, [3797] = 0x615d, [3798] = 0x6153, [3799] = 0x6175,
++ [3800] = 0x6199, [3801] = 0x6196, [3802] = 0x6187, [3803] = 0x61ac,
++ [3804] = 0x6194, [3805] = 0x619a, [3806] = 0x618a, [3807] = 0x6191,
++ [3808] = 0x61ab, [3809] = 0x61ae, [3810] = 0x61cc, [3811] = 0x61ca,
++ [3812] = 0x61c9, [3813] = 0x61f7, [3814] = 0x61c8, [3815] = 0x61c3,
++ [3816] = 0x61c6, [3817] = 0x61ba, [3818] = 0x61cb, [3819] = 0x7f79,
++ [3820] = 0x61cd, [3821] = 0x61e6, [3822] = 0x61e3, [3823] = 0x61f6,
++ [3824] = 0x61fa, [3825] = 0x61f4, [3826] = 0x61ff, [3827] = 0x61fd,
++ [3828] = 0x61fc, [3829] = 0x61fe, [3830] = 0x6200, [3831] = 0x6208,
++ [3832] = 0x6209, [3833] = 0x620d, [3834] = 0x620c, [3835] = 0x6214,
++ [3836] = 0x621b, [3840] = 0x621e, [3841] = 0x6221, [3842] = 0x622a,
++ [3843] = 0x622e, [3844] = 0x6230, [3845] = 0x6232, [3846] = 0x6233,
++ [3847] = 0x6241, [3848] = 0x624e, [3849] = 0x625e, [3850] = 0x6263,
++ [3851] = 0x625b, [3852] = 0x6260, [3853] = 0x6268, [3854] = 0x627c,
++ [3855] = 0x6282, [3856] = 0x6289, [3857] = 0x627e, [3858] = 0x6292,
++ [3859] = 0x6293, [3860] = 0x6296, [3861] = 0x62d4, [3862] = 0x6283,
++ [3863] = 0x6294, [3864] = 0x62d7, [3865] = 0x62d1, [3866] = 0x62bb,
++ [3867] = 0x62cf, [3868] = 0x62ff, [3869] = 0x62c6, [3870] = 0x64d4,
++ [3871] = 0x62c8, [3872] = 0x62dc, [3873] = 0x62cc, [3874] = 0x62ca,
++ [3875] = 0x62c2, [3876] = 0x62c7, [3877] = 0x629b, [3878] = 0x62c9,
++ [3879] = 0x630c, [3880] = 0x62ee, [3881] = 0x62f1, [3882] = 0x6327,
++ [3883] = 0x6302, [3884] = 0x6308, [3885] = 0x62ef, [3886] = 0x62f5,
++ [3887] = 0x6350, [3888] = 0x633e, [3889] = 0x634d, [3890] = 0x641c,
++ [3891] = 0x634f, [3892] = 0x6396, [3893] = 0x638e, [3894] = 0x6380,
++ [3895] = 0x63ab, [3896] = 0x6376, [3897] = 0x63a3, [3898] = 0x638f,
++ [3899] = 0x6389, [3900] = 0x639f, [3901] = 0x63b5, [3902] = 0x636b,
++ [3904] = 0x6369, [3905] = 0x63be, [3906] = 0x63e9, [3907] = 0x63c0,
++ [3908] = 0x63c6, [3909] = 0x63e3, [3910] = 0x63c9, [3911] = 0x63d2,
++ [3912] = 0x63f6, [3913] = 0x63c4, [3914] = 0x6416, [3915] = 0x6434,
++ [3916] = 0x6406, [3917] = 0x6413, [3918] = 0x6426, [3919] = 0x6436,
++ [3920] = 0x651d, [3921] = 0x6417, [3922] = 0x6428, [3923] = 0x640f,
++ [3924] = 0x6467, [3925] = 0x646f, [3926] = 0x6476, [3927] = 0x644e,
++ [3928] = 0x652a, [3929] = 0x6495, [3930] = 0x6493, [3931] = 0x64a5,
++ [3932] = 0x64a9, [3933] = 0x6488, [3934] = 0x64bc, [3935] = 0x64da,
++ [3936] = 0x64d2, [3937] = 0x64c5, [3938] = 0x64c7, [3939] = 0x64bb,
++ [3940] = 0x64d8, [3941] = 0x64c2, [3942] = 0x64f1, [3943] = 0x64e7,
++ [3944] = 0x8209, [3945] = 0x64e0, [3946] = 0x64e1, [3947] = 0x62ac,
++ [3948] = 0x64e3, [3949] = 0x64ef, [3950] = 0x652c, [3951] = 0x64f6,
++ [3952] = 0x64f4, [3953] = 0x64f2, [3954] = 0x64fa, [3955] = 0x6500,
++ [3956] = 0x64fd, [3957] = 0x6518, [3958] = 0x651c, [3959] = 0x6505,
++ [3960] = 0x6524, [3961] = 0x6523, [3962] = 0x652b, [3963] = 0x6534,
++ [3964] = 0x6535, [3965] = 0x6537, [3966] = 0x6536, [3967] = 0x6538,
++ [3968] = 0x754b, [3969] = 0x6548, [3970] = 0x6556, [3971] = 0x6555,
++ [3972] = 0x654d, [3973] = 0x6558, [3974] = 0x655e, [3975] = 0x655d,
++ [3976] = 0x6572, [3977] = 0x6578, [3978] = 0x6582, [3979] = 0x6583,
++ [3980] = 0x8b8a, [3981] = 0x659b, [3982] = 0x659f, [3983] = 0x65ab,
++ [3984] = 0x65b7, [3985] = 0x65c3, [3986] = 0x65c6, [3987] = 0x65c1,
++ [3988] = 0x65c4, [3989] = 0x65cc, [3990] = 0x65d2, [3991] = 0x65db,
++ [3992] = 0x65d9, [3993] = 0x65e0, [3994] = 0x65e1, [3995] = 0x65f1,
++ [3996] = 0x6772, [3997] = 0x660a, [3998] = 0x6603, [3999] = 0x65fb,
++ [4000] = 0x6773, [4001] = 0x6635, [4002] = 0x6636, [4003] = 0x6634,
++ [4004] = 0x661c, [4005] = 0x664f, [4006] = 0x6644, [4007] = 0x6649,
++ [4008] = 0x6641, [4009] = 0x665e, [4010] = 0x665d, [4011] = 0x6664,
++ [4012] = 0x6667, [4013] = 0x6668, [4014] = 0x665f, [4015] = 0x6662,
++ [4016] = 0x6670, [4017] = 0x6683, [4018] = 0x6688, [4019] = 0x668e,
++ [4020] = 0x6689, [4021] = 0x6684, [4022] = 0x6698, [4023] = 0x669d,
++ [4024] = 0x66c1, [4025] = 0x66b9, [4026] = 0x66c9, [4027] = 0x66be,
++ [4028] = 0x66bc, [4032] = 0x66c4, [4033] = 0x66b8, [4034] = 0x66d6,
++ [4035] = 0x66da, [4036] = 0x66e0, [4037] = 0x663f, [4038] = 0x66e6,
++ [4039] = 0x66e9, [4040] = 0x66f0, [4041] = 0x66f5, [4042] = 0x66f7,
++ [4043] = 0x670f, [4044] = 0x6716, [4045] = 0x671e, [4046] = 0x6726,
++ [4047] = 0x6727, [4048] = 0x9738, [4049] = 0x672e, [4050] = 0x673f,
++ [4051] = 0x6736, [4052] = 0x6741, [4053] = 0x6738, [4054] = 0x6737,
++ [4055] = 0x6746, [4056] = 0x675e, [4057] = 0x6760, [4058] = 0x6759,
++ [4059] = 0x6763, [4060] = 0x6764, [4061] = 0x6789, [4062] = 0x6770,
++ [4063] = 0x67a9, [4064] = 0x677c, [4065] = 0x676a, [4066] = 0x678c,
++ [4067] = 0x678b, [4068] = 0x67a6, [4069] = 0x67a1, [4070] = 0x6785,
++ [4071] = 0x67b7, [4072] = 0x67ef, [4073] = 0x67b4, [4074] = 0x67ec,
++ [4075] = 0x67b3, [4076] = 0x67e9, [4077] = 0x67b8, [4078] = 0x67e4,
++ [4079] = 0x67de, [4080] = 0x67dd, [4081] = 0x67e2, [4082] = 0x67ee,
++ [4083] = 0x67b9, [4084] = 0x67ce, [4085] = 0x67c6, [4086] = 0x67e7,
++ [4087] = 0x6a9c, [4088] = 0x681e, [4089] = 0x6846, [4090] = 0x6829,
++ [4091] = 0x6840, [4092] = 0x684d, [4093] = 0x6832, [4094] = 0x684e,
++ [4096] = 0x68b3, [4097] = 0x682b, [4098] = 0x6859, [4099] = 0x6863,
++ [4100] = 0x6877, [4101] = 0x687f, [4102] = 0x689f, [4103] = 0x688f,
++ [4104] = 0x68ad, [4105] = 0x6894, [4106] = 0x689d, [4107] = 0x689b,
++ [4108] = 0x6883, [4109] = 0x6aae, [4110] = 0x68b9, [4111] = 0x6874,
++ [4112] = 0x68b5, [4113] = 0x68a0, [4114] = 0x68ba, [4115] = 0x690f,
++ [4116] = 0x688d, [4117] = 0x687e, [4118] = 0x6901, [4119] = 0x68ca,
++ [4120] = 0x6908, [4121] = 0x68d8, [4122] = 0x6922, [4123] = 0x6926,
++ [4124] = 0x68e1, [4125] = 0x690c, [4126] = 0x68cd, [4127] = 0x68d4,
++ [4128] = 0x68e7, [4129] = 0x68d5, [4130] = 0x6936, [4131] = 0x6912,
++ [4132] = 0x6904, [4133] = 0x68d7, [4134] = 0x68e3, [4135] = 0x6925,
++ [4136] = 0x68f9, [4137] = 0x68e0, [4138] = 0x68ef, [4139] = 0x6928,
++ [4140] = 0x692a, [4141] = 0x691a, [4142] = 0x6923, [4143] = 0x6921,
++ [4144] = 0x68c6, [4145] = 0x6979, [4146] = 0x6977, [4147] = 0x695c,
++ [4148] = 0x6978, [4149] = 0x696b, [4150] = 0x6954, [4151] = 0x697e,
++ [4152] = 0x696e, [4153] = 0x6939, [4154] = 0x6974, [4155] = 0x693d,
++ [4156] = 0x6959, [4157] = 0x6930, [4158] = 0x6961, [4159] = 0x695e,
++ [4160] = 0x695d, [4161] = 0x6981, [4162] = 0x696a, [4163] = 0x69b2,
++ [4164] = 0x69ae, [4165] = 0x69d0, [4166] = 0x69bf, [4167] = 0x69c1,
++ [4168] = 0x69d3, [4169] = 0x69be, [4170] = 0x69ce, [4171] = 0x5be8,
++ [4172] = 0x69ca, [4173] = 0x69dd, [4174] = 0x69bb, [4175] = 0x69c3,
++ [4176] = 0x69a7, [4177] = 0x6a2e, [4178] = 0x6991, [4179] = 0x69a0,
++ [4180] = 0x699c, [4181] = 0x6995, [4182] = 0x69b4, [4183] = 0x69de,
++ [4184] = 0x69e8, [4185] = 0x6a02, [4186] = 0x6a1b, [4187] = 0x69ff,
++ [4188] = 0x6b0a, [4189] = 0x69f9, [4190] = 0x69f2, [4191] = 0x69e7,
++ [4192] = 0x6a05, [4193] = 0x69b1, [4194] = 0x6a1e, [4195] = 0x69ed,
++ [4196] = 0x6a14, [4197] = 0x69eb, [4198] = 0x6a0a, [4199] = 0x6a12,
++ [4200] = 0x6ac1, [4201] = 0x6a23, [4202] = 0x6a13, [4203] = 0x6a44,
++ [4204] = 0x6a0c, [4205] = 0x6a72, [4206] = 0x6a36, [4207] = 0x6a78,
++ [4208] = 0x6a47, [4209] = 0x6a62, [4210] = 0x6a59, [4211] = 0x6a66,
++ [4212] = 0x6a48, [4213] = 0x6a38, [4214] = 0x6a22, [4215] = 0x6a90,
++ [4216] = 0x6a8d, [4217] = 0x6aa0, [4218] = 0x6a84, [4219] = 0x6aa2,
++ [4220] = 0x6aa3, [4224] = 0x6a97, [4225] = 0x8617, [4226] = 0x6abb,
++ [4227] = 0x6ac3, [4228] = 0x6ac2, [4229] = 0x6ab8, [4230] = 0x6ab3,
++ [4231] = 0x6aac, [4232] = 0x6ade, [4233] = 0x6ad1, [4234] = 0x6adf,
++ [4235] = 0x6aaa, [4236] = 0x6ada, [4237] = 0x6aea, [4238] = 0x6afb,
++ [4239] = 0x6b05, [4240] = 0x8616, [4241] = 0x6afa, [4242] = 0x6b12,
++ [4243] = 0x6b16, [4244] = 0x9b31, [4245] = 0x6b1f, [4246] = 0x6b38,
++ [4247] = 0x6b37, [4248] = 0x76dc, [4249] = 0x6b39, [4250] = 0x98ee,
++ [4251] = 0x6b47, [4252] = 0x6b43, [4253] = 0x6b49, [4254] = 0x6b50,
++ [4255] = 0x6b59, [4256] = 0x6b54, [4257] = 0x6b5b, [4258] = 0x6b5f,
++ [4259] = 0x6b61, [4260] = 0x6b78, [4261] = 0x6b79, [4262] = 0x6b7f,
++ [4263] = 0x6b80, [4264] = 0x6b84, [4265] = 0x6b83, [4266] = 0x6b8d,
++ [4267] = 0x6b98, [4268] = 0x6b95, [4269] = 0x6b9e, [4270] = 0x6ba4,
++ [4271] = 0x6baa, [4272] = 0x6bab, [4273] = 0x6baf, [4274] = 0x6bb2,
++ [4275] = 0x6bb1, [4276] = 0x6bb3, [4277] = 0x6bb7, [4278] = 0x6bbc,
++ [4279] = 0x6bc6, [4280] = 0x6bcb, [4281] = 0x6bd3, [4282] = 0x6bdf,
++ [4283] = 0x6bec, [4284] = 0x6beb, [4285] = 0x6bf3, [4286] = 0x6bef,
++ [4288] = 0x9ebe, [4289] = 0x6c08, [4290] = 0x6c13, [4291] = 0x6c14,
++ [4292] = 0x6c1b, [4293] = 0x6c24, [4294] = 0x6c23, [4295] = 0x6c5e,
++ [4296] = 0x6c55, [4297] = 0x6c62, [4298] = 0x6c6a, [4299] = 0x6c82,
++ [4300] = 0x6c8d, [4301] = 0x6c9a, [4302] = 0x6c81, [4303] = 0x6c9b,
++ [4304] = 0x6c7e, [4305] = 0x6c68, [4306] = 0x6c73, [4307] = 0x6c92,
++ [4308] = 0x6c90, [4309] = 0x6cc4, [4310] = 0x6cf1, [4311] = 0x6cd3,
++ [4312] = 0x6cbd, [4313] = 0x6cd7, [4314] = 0x6cc5, [4315] = 0x6cdd,
++ [4316] = 0x6cae, [4317] = 0x6cb1, [4318] = 0x6cbe, [4319] = 0x6cba,
++ [4320] = 0x6cdb, [4321] = 0x6cef, [4322] = 0x6cd9, [4323] = 0x6cea,
++ [4324] = 0x6d1f, [4325] = 0x884d, [4326] = 0x6d36, [4327] = 0x6d2b,
++ [4328] = 0x6d3d, [4329] = 0x6d38, [4330] = 0x6d19, [4331] = 0x6d35,
++ [4332] = 0x6d33, [4333] = 0x6d12, [4334] = 0x6d0c, [4335] = 0x6d63,
++ [4336] = 0x6d93, [4337] = 0x6d64, [4338] = 0x6d5a, [4339] = 0x6d79,
++ [4340] = 0x6d59, [4341] = 0x6d8e, [4342] = 0x6d95, [4343] = 0x6fe4,
++ [4344] = 0x6d85, [4345] = 0x6df9, [4346] = 0x6e15, [4347] = 0x6e0a,
++ [4348] = 0x6db5, [4349] = 0x6dc7, [4350] = 0x6de6, [4351] = 0x6db8,
++ [4352] = 0x6dc6, [4353] = 0x6dec, [4354] = 0x6dde, [4355] = 0x6dcc,
++ [4356] = 0x6de8, [4357] = 0x6dd2, [4358] = 0x6dc5, [4359] = 0x6dfa,
++ [4360] = 0x6dd9, [4361] = 0x6de4, [4362] = 0x6dd5, [4363] = 0x6dea,
++ [4364] = 0x6dee, [4365] = 0x6e2d, [4366] = 0x6e6e, [4367] = 0x6e2e,
++ [4368] = 0x6e19, [4369] = 0x6e72, [4370] = 0x6e5f, [4371] = 0x6e3e,
++ [4372] = 0x6e23, [4373] = 0x6e6b, [4374] = 0x6e2b, [4375] = 0x6e76,
++ [4376] = 0x6e4d, [4377] = 0x6e1f, [4378] = 0x6e43, [4379] = 0x6e3a,
++ [4380] = 0x6e4e, [4381] = 0x6e24, [4382] = 0x6eff, [4383] = 0x6e1d,
++ [4384] = 0x6e38, [4385] = 0x6e82, [4386] = 0x6eaa, [4387] = 0x6e98,
++ [4388] = 0x6ec9, [4389] = 0x6eb7, [4390] = 0x6ed3, [4391] = 0x6ebd,
++ [4392] = 0x6eaf, [4393] = 0x6ec4, [4394] = 0x6eb2, [4395] = 0x6ed4,
++ [4396] = 0x6ed5, [4397] = 0x6e8f, [4398] = 0x6ea5, [4399] = 0x6ec2,
++ [4400] = 0x6e9f, [4401] = 0x6f41, [4402] = 0x6f11, [4403] = 0x704c,
++ [4404] = 0x6eec, [4405] = 0x6ef8, [4406] = 0x6efe, [4407] = 0x6f3f,
++ [4408] = 0x6ef2, [4409] = 0x6f31, [4410] = 0x6eef, [4411] = 0x6f32,
++ [4412] = 0x6ecc
++};
++
++static const uint16_t cjk_block5[2021] =
++{
++ /* start = 0xe040, end = 0xeaa4 */
++ [ 0] = 0x6f3e, [ 1] = 0x6f13, [ 2] = 0x6ef7, [ 3] = 0x6f86,
++ [ 4] = 0x6f7a, [ 5] = 0x6f78, [ 6] = 0x6f81, [ 7] = 0x6f80,
++ [ 8] = 0x6f6f, [ 9] = 0x6f5b, [ 10] = 0x6ff3, [ 11] = 0x6f6d,
++ [ 12] = 0x6f82, [ 13] = 0x6f7c, [ 14] = 0x6f58, [ 15] = 0x6f8e,
++ [ 16] = 0x6f91, [ 17] = 0x6fc2, [ 18] = 0x6f66, [ 19] = 0x6fb3,
++ [ 20] = 0x6fa3, [ 21] = 0x6fa1, [ 22] = 0x6fa4, [ 23] = 0x6fb9,
++ [ 24] = 0x6fc6, [ 25] = 0x6faa, [ 26] = 0x6fdf, [ 27] = 0x6fd5,
++ [ 28] = 0x6fec, [ 29] = 0x6fd4, [ 30] = 0x6fd8, [ 31] = 0x6ff1,
++ [ 32] = 0x6fee, [ 33] = 0x6fdb, [ 34] = 0x7009, [ 35] = 0x700b,
++ [ 36] = 0x6ffa, [ 37] = 0x7011, [ 38] = 0x7001, [ 39] = 0x700f,
++ [ 40] = 0x6ffe, [ 41] = 0x701b, [ 42] = 0x701a, [ 43] = 0x6f74,
++ [ 44] = 0x701d, [ 45] = 0x7018, [ 46] = 0x701f, [ 47] = 0x7030,
++ [ 48] = 0x703e, [ 49] = 0x7032, [ 50] = 0x7051, [ 51] = 0x7063,
++ [ 52] = 0x7099, [ 53] = 0x7092, [ 54] = 0x70af, [ 55] = 0x70f1,
++ [ 56] = 0x70ac, [ 57] = 0x70b8, [ 58] = 0x70b3, [ 59] = 0x70ae,
++ [ 60] = 0x70df, [ 61] = 0x70cb, [ 62] = 0x70dd, [ 64] = 0x70d9,
++ [ 65] = 0x7109, [ 66] = 0x70fd, [ 67] = 0x711c, [ 68] = 0x7119,
++ [ 69] = 0x7165, [ 70] = 0x7155, [ 71] = 0x7188, [ 72] = 0x7166,
++ [ 73] = 0x7162, [ 74] = 0x714c, [ 75] = 0x7156, [ 76] = 0x716c,
++ [ 77] = 0x718f, [ 78] = 0x71fb, [ 79] = 0x7184, [ 80] = 0x7195,
++ [ 81] = 0x71a8, [ 82] = 0x71ac, [ 83] = 0x71d7, [ 84] = 0x71b9,
++ [ 85] = 0x71be, [ 86] = 0x71d2, [ 87] = 0x71c9, [ 88] = 0x71d4,
++ [ 89] = 0x71ce, [ 90] = 0x71e0, [ 91] = 0x71ec, [ 92] = 0x71e7,
++ [ 93] = 0x71f5, [ 94] = 0x71fc, [ 95] = 0x71f9, [ 96] = 0x71ff,
++ [ 97] = 0x720d, [ 98] = 0x7210, [ 99] = 0x721b, [ 100] = 0x7228,
++ [ 101] = 0x722d, [ 102] = 0x722c, [ 103] = 0x7230, [ 104] = 0x7232,
++ [ 105] = 0x723b, [ 106] = 0x723c, [ 107] = 0x723f, [ 108] = 0x7240,
++ [ 109] = 0x7246, [ 110] = 0x724b, [ 111] = 0x7258, [ 112] = 0x7274,
++ [ 113] = 0x727e, [ 114] = 0x7282, [ 115] = 0x7281, [ 116] = 0x7287,
++ [ 117] = 0x7292, [ 118] = 0x7296, [ 119] = 0x72a2, [ 120] = 0x72a7,
++ [ 121] = 0x72b9, [ 122] = 0x72b2, [ 123] = 0x72c3, [ 124] = 0x72c6,
++ [ 125] = 0x72c4, [ 126] = 0x72ce, [ 127] = 0x72d2, [ 128] = 0x72e2,
++ [ 129] = 0x72e0, [ 130] = 0x72e1, [ 131] = 0x72f9, [ 132] = 0x72f7,
++ [ 133] = 0x500f, [ 134] = 0x7317, [ 135] = 0x730a, [ 136] = 0x731c,
++ [ 137] = 0x7316, [ 138] = 0x731d, [ 139] = 0x7334, [ 140] = 0x732f,
++ [ 141] = 0x7329, [ 142] = 0x7325, [ 143] = 0x733e, [ 144] = 0x734e,
++ [ 145] = 0x734f, [ 146] = 0x9ed8, [ 147] = 0x7357, [ 148] = 0x736a,
++ [ 149] = 0x7368, [ 150] = 0x7370, [ 151] = 0x7378, [ 152] = 0x7375,
++ [ 153] = 0x737b, [ 154] = 0x737a, [ 155] = 0x73c8, [ 156] = 0x73b3,
++ [ 157] = 0x73ce, [ 158] = 0x73bb, [ 159] = 0x73c0, [ 160] = 0x73e5,
++ [ 161] = 0x73ee, [ 162] = 0x73de, [ 163] = 0x74a2, [ 164] = 0x7405,
++ [ 165] = 0x746f, [ 166] = 0x7425, [ 167] = 0x73f8, [ 168] = 0x7432,
++ [ 169] = 0x743a, [ 170] = 0x7455, [ 171] = 0x743f, [ 172] = 0x745f,
++ [ 173] = 0x7459, [ 174] = 0x7441, [ 175] = 0x745c, [ 176] = 0x7469,
++ [ 177] = 0x7470, [ 178] = 0x7463, [ 179] = 0x746a, [ 180] = 0x7476,
++ [ 181] = 0x747e, [ 182] = 0x748b, [ 183] = 0x749e, [ 184] = 0x74a7,
++ [ 185] = 0x74ca, [ 186] = 0x74cf, [ 187] = 0x74d4, [ 188] = 0x73f1,
++ [ 192] = 0x74e0, [ 193] = 0x74e3, [ 194] = 0x74e7, [ 195] = 0x74e9,
++ [ 196] = 0x74ee, [ 197] = 0x74f2, [ 198] = 0x74f0, [ 199] = 0x74f1,
++ [ 200] = 0x74f8, [ 201] = 0x74f7, [ 202] = 0x7504, [ 203] = 0x7503,
++ [ 204] = 0x7505, [ 205] = 0x750c, [ 206] = 0x750e, [ 207] = 0x750d,
++ [ 208] = 0x7515, [ 209] = 0x7513, [ 210] = 0x751e, [ 211] = 0x7526,
++ [ 212] = 0x752c, [ 213] = 0x753c, [ 214] = 0x7544, [ 215] = 0x754d,
++ [ 216] = 0x754a, [ 217] = 0x7549, [ 218] = 0x755b, [ 219] = 0x7546,
++ [ 220] = 0x755a, [ 221] = 0x7569, [ 222] = 0x7564, [ 223] = 0x7567,
++ [ 224] = 0x756b, [ 225] = 0x756d, [ 226] = 0x7578, [ 227] = 0x7576,
++ [ 228] = 0x7586, [ 229] = 0x7587, [ 230] = 0x7574, [ 231] = 0x758a,
++ [ 232] = 0x7589, [ 233] = 0x7582, [ 234] = 0x7594, [ 235] = 0x759a,
++ [ 236] = 0x759d, [ 237] = 0x75a5, [ 238] = 0x75a3, [ 239] = 0x75c2,
++ [ 240] = 0x75b3, [ 241] = 0x75c3, [ 242] = 0x75b5, [ 243] = 0x75bd,
++ [ 244] = 0x75b8, [ 245] = 0x75bc, [ 246] = 0x75b1, [ 247] = 0x75cd,
++ [ 248] = 0x75ca, [ 249] = 0x75d2, [ 250] = 0x75d9, [ 251] = 0x75e3,
++ [ 252] = 0x75de, [ 253] = 0x75fe, [ 254] = 0x75ff, [ 256] = 0x75fc,
++ [ 257] = 0x7601, [ 258] = 0x75f0, [ 259] = 0x75fa, [ 260] = 0x75f2,
++ [ 261] = 0x75f3, [ 262] = 0x760b, [ 263] = 0x760d, [ 264] = 0x7609,
++ [ 265] = 0x761f, [ 266] = 0x7627, [ 267] = 0x7620, [ 268] = 0x7621,
++ [ 269] = 0x7622, [ 270] = 0x7624, [ 271] = 0x7634, [ 272] = 0x7630,
++ [ 273] = 0x763b, [ 274] = 0x7647, [ 275] = 0x7648, [ 276] = 0x7646,
++ [ 277] = 0x765c, [ 278] = 0x7658, [ 279] = 0x7661, [ 280] = 0x7662,
++ [ 281] = 0x7668, [ 282] = 0x7669, [ 283] = 0x766a, [ 284] = 0x7667,
++ [ 285] = 0x766c, [ 286] = 0x7670, [ 287] = 0x7672, [ 288] = 0x7676,
++ [ 289] = 0x7678, [ 290] = 0x767c, [ 291] = 0x7680, [ 292] = 0x7683,
++ [ 293] = 0x7688, [ 294] = 0x768b, [ 295] = 0x768e, [ 296] = 0x7696,
++ [ 297] = 0x7693, [ 298] = 0x7699, [ 299] = 0x769a, [ 300] = 0x76b0,
++ [ 301] = 0x76b4, [ 302] = 0x76b8, [ 303] = 0x76b9, [ 304] = 0x76ba,
++ [ 305] = 0x76c2, [ 306] = 0x76cd, [ 307] = 0x76d6, [ 308] = 0x76d2,
++ [ 309] = 0x76de, [ 310] = 0x76e1, [ 311] = 0x76e5, [ 312] = 0x76e7,
++ [ 313] = 0x76ea, [ 314] = 0x862f, [ 315] = 0x76fb, [ 316] = 0x7708,
++ [ 317] = 0x7707, [ 318] = 0x7704, [ 319] = 0x7729, [ 320] = 0x7724,
++ [ 321] = 0x771e, [ 322] = 0x7725, [ 323] = 0x7726, [ 324] = 0x771b,
++ [ 325] = 0x7737, [ 326] = 0x7738, [ 327] = 0x7747, [ 328] = 0x775a,
++ [ 329] = 0x7768, [ 330] = 0x776b, [ 331] = 0x775b, [ 332] = 0x7765,
++ [ 333] = 0x777f, [ 334] = 0x777e, [ 335] = 0x7779, [ 336] = 0x778e,
++ [ 337] = 0x778b, [ 338] = 0x7791, [ 339] = 0x77a0, [ 340] = 0x779e,
++ [ 341] = 0x77b0, [ 342] = 0x77b6, [ 343] = 0x77b9, [ 344] = 0x77bf,
++ [ 345] = 0x77bc, [ 346] = 0x77bd, [ 347] = 0x77bb, [ 348] = 0x77c7,
++ [ 349] = 0x77cd, [ 350] = 0x77d7, [ 351] = 0x77da, [ 352] = 0x77dc,
++ [ 353] = 0x77e3, [ 354] = 0x77ee, [ 355] = 0x77fc, [ 356] = 0x780c,
++ [ 357] = 0x7812, [ 358] = 0x7926, [ 359] = 0x7820, [ 360] = 0x792a,
++ [ 361] = 0x7845, [ 362] = 0x788e, [ 363] = 0x7874, [ 364] = 0x7886,
++ [ 365] = 0x787c, [ 366] = 0x789a, [ 367] = 0x788c, [ 368] = 0x78a3,
++ [ 369] = 0x78b5, [ 370] = 0x78aa, [ 371] = 0x78af, [ 372] = 0x78d1,
++ [ 373] = 0x78c6, [ 374] = 0x78cb, [ 375] = 0x78d4, [ 376] = 0x78be,
++ [ 377] = 0x78bc, [ 378] = 0x78c5, [ 379] = 0x78ca, [ 380] = 0x78ec,
++ [ 384] = 0x78e7, [ 385] = 0x78da, [ 386] = 0x78fd, [ 387] = 0x78f4,
++ [ 388] = 0x7907, [ 389] = 0x7912, [ 390] = 0x7911, [ 391] = 0x7919,
++ [ 392] = 0x792c, [ 393] = 0x792b, [ 394] = 0x7940, [ 395] = 0x7960,
++ [ 396] = 0x7957, [ 397] = 0x795f, [ 398] = 0x795a, [ 399] = 0x7955,
++ [ 400] = 0x7953, [ 401] = 0x797a, [ 402] = 0x797f, [ 403] = 0x798a,
++ [ 404] = 0x799d, [ 405] = 0x79a7, [ 406] = 0x9f4b, [ 407] = 0x79aa,
++ [ 408] = 0x79ae, [ 409] = 0x79b3, [ 410] = 0x79b9, [ 411] = 0x79ba,
++ [ 412] = 0x79c9, [ 413] = 0x79d5, [ 414] = 0x79e7, [ 415] = 0x79ec,
++ [ 416] = 0x79e1, [ 417] = 0x79e3, [ 418] = 0x7a08, [ 419] = 0x7a0d,
++ [ 420] = 0x7a18, [ 421] = 0x7a19, [ 422] = 0x7a20, [ 423] = 0x7a1f,
++ [ 424] = 0x7980, [ 425] = 0x7a31, [ 426] = 0x7a3b, [ 427] = 0x7a3e,
++ [ 428] = 0x7a37, [ 429] = 0x7a43, [ 430] = 0x7a57, [ 431] = 0x7a49,
++ [ 432] = 0x7a61, [ 433] = 0x7a62, [ 434] = 0x7a69, [ 435] = 0x9f9d,
++ [ 436] = 0x7a70, [ 437] = 0x7a79, [ 438] = 0x7a7d, [ 439] = 0x7a88,
++ [ 440] = 0x7a97, [ 441] = 0x7a95, [ 442] = 0x7a98, [ 443] = 0x7a96,
++ [ 444] = 0x7aa9, [ 445] = 0x7ac8, [ 446] = 0x7ab0, [ 448] = 0x7ab6,
++ [ 449] = 0x7ac5, [ 450] = 0x7ac4, [ 451] = 0x7abf, [ 452] = 0x9083,
++ [ 453] = 0x7ac7, [ 454] = 0x7aca, [ 455] = 0x7acd, [ 456] = 0x7acf,
++ [ 457] = 0x7ad5, [ 458] = 0x7ad3, [ 459] = 0x7ad9, [ 460] = 0x7ada,
++ [ 461] = 0x7add, [ 462] = 0x7ae1, [ 463] = 0x7ae2, [ 464] = 0x7ae6,
++ [ 465] = 0x7aed, [ 466] = 0x7af0, [ 467] = 0x7b02, [ 468] = 0x7b0f,
++ [ 469] = 0x7b0a, [ 470] = 0x7b06, [ 471] = 0x7b33, [ 472] = 0x7b18,
++ [ 473] = 0x7b19, [ 474] = 0x7b1e, [ 475] = 0x7b35, [ 476] = 0x7b28,
++ [ 477] = 0x7b36, [ 478] = 0x7b50, [ 479] = 0x7b7a, [ 480] = 0x7b04,
++ [ 481] = 0x7b4d, [ 482] = 0x7b0b, [ 483] = 0x7b4c, [ 484] = 0x7b45,
++ [ 485] = 0x7b75, [ 486] = 0x7b65, [ 487] = 0x7b74, [ 488] = 0x7b67,
++ [ 489] = 0x7b70, [ 490] = 0x7b71, [ 491] = 0x7b6c, [ 492] = 0x7b6e,
++ [ 493] = 0x7b9d, [ 494] = 0x7b98, [ 495] = 0x7b9f, [ 496] = 0x7b8d,
++ [ 497] = 0x7b9c, [ 498] = 0x7b9a, [ 499] = 0x7b8b, [ 500] = 0x7b92,
++ [ 501] = 0x7b8f, [ 502] = 0x7b5d, [ 503] = 0x7b99, [ 504] = 0x7bcb,
++ [ 505] = 0x7bc1, [ 506] = 0x7bcc, [ 507] = 0x7bcf, [ 508] = 0x7bb4,
++ [ 509] = 0x7bc6, [ 510] = 0x7bdd, [ 511] = 0x7be9, [ 512] = 0x7c11,
++ [ 513] = 0x7c14, [ 514] = 0x7be6, [ 515] = 0x7be5, [ 516] = 0x7c60,
++ [ 517] = 0x7c00, [ 518] = 0x7c07, [ 519] = 0x7c13, [ 520] = 0x7bf3,
++ [ 521] = 0x7bf7, [ 522] = 0x7c17, [ 523] = 0x7c0d, [ 524] = 0x7bf6,
++ [ 525] = 0x7c23, [ 526] = 0x7c27, [ 527] = 0x7c2a, [ 528] = 0x7c1f,
++ [ 529] = 0x7c37, [ 530] = 0x7c2b, [ 531] = 0x7c3d, [ 532] = 0x7c4c,
++ [ 533] = 0x7c43, [ 534] = 0x7c54, [ 535] = 0x7c4f, [ 536] = 0x7c40,
++ [ 537] = 0x7c50, [ 538] = 0x7c58, [ 539] = 0x7c5f, [ 540] = 0x7c64,
++ [ 541] = 0x7c56, [ 542] = 0x7c65, [ 543] = 0x7c6c, [ 544] = 0x7c75,
++ [ 545] = 0x7c83, [ 546] = 0x7c90, [ 547] = 0x7ca4, [ 548] = 0x7cad,
++ [ 549] = 0x7ca2, [ 550] = 0x7cab, [ 551] = 0x7ca1, [ 552] = 0x7ca8,
++ [ 553] = 0x7cb3, [ 554] = 0x7cb2, [ 555] = 0x7cb1, [ 556] = 0x7cae,
++ [ 557] = 0x7cb9, [ 558] = 0x7cbd, [ 559] = 0x7cc0, [ 560] = 0x7cc5,
++ [ 561] = 0x7cc2, [ 562] = 0x7cd8, [ 563] = 0x7cd2, [ 564] = 0x7cdc,
++ [ 565] = 0x7ce2, [ 566] = 0x9b3b, [ 567] = 0x7cef, [ 568] = 0x7cf2,
++ [ 569] = 0x7cf4, [ 570] = 0x7cf6, [ 571] = 0x7cfa, [ 572] = 0x7d06,
++ [ 576] = 0x7d02, [ 577] = 0x7d1c, [ 578] = 0x7d15, [ 579] = 0x7d0a,
++ [ 580] = 0x7d45, [ 581] = 0x7d4b, [ 582] = 0x7d2e, [ 583] = 0x7d32,
++ [ 584] = 0x7d3f, [ 585] = 0x7d35, [ 586] = 0x7d46, [ 587] = 0x7d73,
++ [ 588] = 0x7d56, [ 589] = 0x7d4e, [ 590] = 0x7d72, [ 591] = 0x7d68,
++ [ 592] = 0x7d6e, [ 593] = 0x7d4f, [ 594] = 0x7d63, [ 595] = 0x7d93,
++ [ 596] = 0x7d89, [ 597] = 0x7d5b, [ 598] = 0x7d8f, [ 599] = 0x7d7d,
++ [ 600] = 0x7d9b, [ 601] = 0x7dba, [ 602] = 0x7dae, [ 603] = 0x7da3,
++ [ 604] = 0x7db5, [ 605] = 0x7dc7, [ 606] = 0x7dbd, [ 607] = 0x7dab,
++ [ 608] = 0x7e3d, [ 609] = 0x7da2, [ 610] = 0x7daf, [ 611] = 0x7ddc,
++ [ 612] = 0x7db8, [ 613] = 0x7d9f, [ 614] = 0x7db0, [ 615] = 0x7dd8,
++ [ 616] = 0x7ddd, [ 617] = 0x7de4, [ 618] = 0x7dde, [ 619] = 0x7dfb,
++ [ 620] = 0x7df2, [ 621] = 0x7de1, [ 622] = 0x7e05, [ 623] = 0x7e0a,
++ [ 624] = 0x7e23, [ 625] = 0x7e21, [ 626] = 0x7e12, [ 627] = 0x7e31,
++ [ 628] = 0x7e1f, [ 629] = 0x7e09, [ 630] = 0x7e0b, [ 631] = 0x7e22,
++ [ 632] = 0x7e46, [ 633] = 0x7e66, [ 634] = 0x7e3b, [ 635] = 0x7e35,
++ [ 636] = 0x7e39, [ 637] = 0x7e43, [ 638] = 0x7e37, [ 640] = 0x7e32,
++ [ 641] = 0x7e3a, [ 642] = 0x7e67, [ 643] = 0x7e5d, [ 644] = 0x7e56,
++ [ 645] = 0x7e5e, [ 646] = 0x7e59, [ 647] = 0x7e5a, [ 648] = 0x7e79,
++ [ 649] = 0x7e6a, [ 650] = 0x7e69, [ 651] = 0x7e7c, [ 652] = 0x7e7b,
++ [ 653] = 0x7e83, [ 654] = 0x7dd5, [ 655] = 0x7e7d, [ 656] = 0x8fae,
++ [ 657] = 0x7e7f, [ 658] = 0x7e88, [ 659] = 0x7e89, [ 660] = 0x7e8c,
++ [ 661] = 0x7e92, [ 662] = 0x7e90, [ 663] = 0x7e93, [ 664] = 0x7e94,
++ [ 665] = 0x7e96, [ 666] = 0x7e8e, [ 667] = 0x7e9b, [ 668] = 0x7e9c,
++ [ 669] = 0x7f38, [ 670] = 0x7f3a, [ 671] = 0x7f45, [ 672] = 0x7f4c,
++ [ 673] = 0x7f4d, [ 674] = 0x7f4e, [ 675] = 0x7f50, [ 676] = 0x7f51,
++ [ 677] = 0x7f55, [ 678] = 0x7f54, [ 679] = 0x7f58, [ 680] = 0x7f5f,
++ [ 681] = 0x7f60, [ 682] = 0x7f68, [ 683] = 0x7f69, [ 684] = 0x7f67,
++ [ 685] = 0x7f78, [ 686] = 0x7f82, [ 687] = 0x7f86, [ 688] = 0x7f83,
++ [ 689] = 0x7f88, [ 690] = 0x7f87, [ 691] = 0x7f8c, [ 692] = 0x7f94,
++ [ 693] = 0x7f9e, [ 694] = 0x7f9d, [ 695] = 0x7f9a, [ 696] = 0x7fa3,
++ [ 697] = 0x7faf, [ 698] = 0x7fb2, [ 699] = 0x7fb9, [ 700] = 0x7fae,
++ [ 701] = 0x7fb6, [ 702] = 0x7fb8, [ 703] = 0x8b71, [ 704] = 0x7fc5,
++ [ 705] = 0x7fc6, [ 706] = 0x7fca, [ 707] = 0x7fd5, [ 708] = 0x7fd4,
++ [ 709] = 0x7fe1, [ 710] = 0x7fe6, [ 711] = 0x7fe9, [ 712] = 0x7ff3,
++ [ 713] = 0x7ff9, [ 714] = 0x98dc, [ 715] = 0x8006, [ 716] = 0x8004,
++ [ 717] = 0x800b, [ 718] = 0x8012, [ 719] = 0x8018, [ 720] = 0x8019,
++ [ 721] = 0x801c, [ 722] = 0x8021, [ 723] = 0x8028, [ 724] = 0x803f,
++ [ 725] = 0x803b, [ 726] = 0x804a, [ 727] = 0x8046, [ 728] = 0x8052,
++ [ 729] = 0x8058, [ 730] = 0x805a, [ 731] = 0x805f, [ 732] = 0x8062,
++ [ 733] = 0x8068, [ 734] = 0x8073, [ 735] = 0x8072, [ 736] = 0x8070,
++ [ 737] = 0x8076, [ 738] = 0x8079, [ 739] = 0x807d, [ 740] = 0x807f,
++ [ 741] = 0x8084, [ 742] = 0x8086, [ 743] = 0x8085, [ 744] = 0x809b,
++ [ 745] = 0x8093, [ 746] = 0x809a, [ 747] = 0x80ad, [ 748] = 0x5190,
++ [ 749] = 0x80ac, [ 750] = 0x80db, [ 751] = 0x80e5, [ 752] = 0x80d9,
++ [ 753] = 0x80dd, [ 754] = 0x80c4, [ 755] = 0x80da, [ 756] = 0x80d6,
++ [ 757] = 0x8109, [ 758] = 0x80ef, [ 759] = 0x80f1, [ 760] = 0x811b,
++ [ 761] = 0x8129, [ 762] = 0x8123, [ 763] = 0x812f, [ 764] = 0x814b,
++ [ 768] = 0x968b, [ 769] = 0x8146, [ 770] = 0x813e, [ 771] = 0x8153,
++ [ 772] = 0x8151, [ 773] = 0x80fc, [ 774] = 0x8171, [ 775] = 0x816e,
++ [ 776] = 0x8165, [ 777] = 0x8166, [ 778] = 0x8174, [ 779] = 0x8183,
++ [ 780] = 0x8188, [ 781] = 0x818a, [ 782] = 0x8180, [ 783] = 0x8182,
++ [ 784] = 0x81a0, [ 785] = 0x8195, [ 786] = 0x81a4, [ 787] = 0x81a3,
++ [ 788] = 0x815f, [ 789] = 0x8193, [ 790] = 0x81a9, [ 791] = 0x81b0,
++ [ 792] = 0x81b5, [ 793] = 0x81be, [ 794] = 0x81b8, [ 795] = 0x81bd,
++ [ 796] = 0x81c0, [ 797] = 0x81c2, [ 798] = 0x81ba, [ 799] = 0x81c9,
++ [ 800] = 0x81cd, [ 801] = 0x81d1, [ 802] = 0x81d9, [ 803] = 0x81d8,
++ [ 804] = 0x81c8, [ 805] = 0x81da, [ 806] = 0x81df, [ 807] = 0x81e0,
++ [ 808] = 0x81e7, [ 809] = 0x81fa, [ 810] = 0x81fb, [ 811] = 0x81fe,
++ [ 812] = 0x8201, [ 813] = 0x8202, [ 814] = 0x8205, [ 815] = 0x8207,
++ [ 816] = 0x820a, [ 817] = 0x820d, [ 818] = 0x8210, [ 819] = 0x8216,
++ [ 820] = 0x8229, [ 821] = 0x822b, [ 822] = 0x8238, [ 823] = 0x8233,
++ [ 824] = 0x8240, [ 825] = 0x8259, [ 826] = 0x8258, [ 827] = 0x825d,
++ [ 828] = 0x825a, [ 829] = 0x825f, [ 830] = 0x8264, [ 832] = 0x8262,
++ [ 833] = 0x8268, [ 834] = 0x826a, [ 835] = 0x826b, [ 836] = 0x822e,
++ [ 837] = 0x8271, [ 838] = 0x8277, [ 839] = 0x8278, [ 840] = 0x827e,
++ [ 841] = 0x828d, [ 842] = 0x8292, [ 843] = 0x82ab, [ 844] = 0x829f,
++ [ 845] = 0x82bb, [ 846] = 0x82ac, [ 847] = 0x82e1, [ 848] = 0x82e3,
++ [ 849] = 0x82df, [ 850] = 0x82d2, [ 851] = 0x82f4, [ 852] = 0x82f3,
++ [ 853] = 0x82fa, [ 854] = 0x8393, [ 855] = 0x8303, [ 856] = 0x82fb,
++ [ 857] = 0x82f9, [ 858] = 0x82de, [ 859] = 0x8306, [ 860] = 0x82dc,
++ [ 861] = 0x8309, [ 862] = 0x82d9, [ 863] = 0x8335, [ 864] = 0x8334,
++ [ 865] = 0x8316, [ 866] = 0x8332, [ 867] = 0x8331, [ 868] = 0x8340,
++ [ 869] = 0x8339, [ 870] = 0x8350, [ 871] = 0x8345, [ 872] = 0x832f,
++ [ 873] = 0x832b, [ 874] = 0x8317, [ 875] = 0x8318, [ 876] = 0x8385,
++ [ 877] = 0x839a, [ 878] = 0x83aa, [ 879] = 0x839f, [ 880] = 0x83a2,
++ [ 881] = 0x8396, [ 882] = 0x8323, [ 883] = 0x838e, [ 884] = 0x8387,
++ [ 885] = 0x838a, [ 886] = 0x837c, [ 887] = 0x83b5, [ 888] = 0x8373,
++ [ 889] = 0x8375, [ 890] = 0x83a0, [ 891] = 0x8389, [ 892] = 0x83a8,
++ [ 893] = 0x83f4, [ 894] = 0x8413, [ 895] = 0x83eb, [ 896] = 0x83ce,
++ [ 897] = 0x83fd, [ 898] = 0x8403, [ 899] = 0x83d8, [ 900] = 0x840b,
++ [ 901] = 0x83c1, [ 902] = 0x83f7, [ 903] = 0x8407, [ 904] = 0x83e0,
++ [ 905] = 0x83f2, [ 906] = 0x840d, [ 907] = 0x8422, [ 908] = 0x8420,
++ [ 909] = 0x83bd, [ 910] = 0x8438, [ 911] = 0x8506, [ 912] = 0x83fb,
++ [ 913] = 0x846d, [ 914] = 0x842a, [ 915] = 0x843c, [ 916] = 0x855a,
++ [ 917] = 0x8484, [ 918] = 0x8477, [ 919] = 0x846b, [ 920] = 0x84ad,
++ [ 921] = 0x846e, [ 922] = 0x8482, [ 923] = 0x8469, [ 924] = 0x8446,
++ [ 925] = 0x842c, [ 926] = 0x846f, [ 927] = 0x8479, [ 928] = 0x8435,
++ [ 929] = 0x84ca, [ 930] = 0x8462, [ 931] = 0x84b9, [ 932] = 0x84bf,
++ [ 933] = 0x849f, [ 934] = 0x84d9, [ 935] = 0x84cd, [ 936] = 0x84bb,
++ [ 937] = 0x84da, [ 938] = 0x84d0, [ 939] = 0x84c1, [ 940] = 0x84c6,
++ [ 941] = 0x84d6, [ 942] = 0x84a1, [ 943] = 0x8521, [ 944] = 0x84ff,
++ [ 945] = 0x84f4, [ 946] = 0x8517, [ 947] = 0x8518, [ 948] = 0x852c,
++ [ 949] = 0x851f, [ 950] = 0x8515, [ 951] = 0x8514, [ 952] = 0x84fc,
++ [ 953] = 0x8540, [ 954] = 0x8563, [ 955] = 0x8558, [ 956] = 0x8548,
++ [ 960] = 0x8541, [ 961] = 0x8602, [ 962] = 0x854b, [ 963] = 0x8555,
++ [ 964] = 0x8580, [ 965] = 0x85a4, [ 966] = 0x8588, [ 967] = 0x8591,
++ [ 968] = 0x858a, [ 969] = 0x85a8, [ 970] = 0x856d, [ 971] = 0x8594,
++ [ 972] = 0x859b, [ 973] = 0x85ea, [ 974] = 0x8587, [ 975] = 0x859c,
++ [ 976] = 0x8577, [ 977] = 0x857e, [ 978] = 0x8590, [ 979] = 0x85c9,
++ [ 980] = 0x85ba, [ 981] = 0x85cf, [ 982] = 0x85b9, [ 983] = 0x85d0,
++ [ 984] = 0x85d5, [ 985] = 0x85dd, [ 986] = 0x85e5, [ 987] = 0x85dc,
++ [ 988] = 0x85f9, [ 989] = 0x860a, [ 990] = 0x8613, [ 991] = 0x860b,
++ [ 992] = 0x85fe, [ 993] = 0x85fa, [ 994] = 0x8606, [ 995] = 0x8622,
++ [ 996] = 0x861a, [ 997] = 0x8630, [ 998] = 0x863f, [ 999] = 0x864d,
++ [1000] = 0x4e55, [1001] = 0x8654, [1002] = 0x865f, [1003] = 0x8667,
++ [1004] = 0x8671, [1005] = 0x8693, [1006] = 0x86a3, [1007] = 0x86a9,
++ [1008] = 0x86aa, [1009] = 0x868b, [1010] = 0x868c, [1011] = 0x86b6,
++ [1012] = 0x86af, [1013] = 0x86c4, [1014] = 0x86c6, [1015] = 0x86b0,
++ [1016] = 0x86c9, [1017] = 0x8823, [1018] = 0x86ab, [1019] = 0x86d4,
++ [1020] = 0x86de, [1021] = 0x86e9, [1022] = 0x86ec, [1024] = 0x86df,
++ [1025] = 0x86db, [1026] = 0x86ef, [1027] = 0x8712, [1028] = 0x8706,
++ [1029] = 0x8708, [1030] = 0x8700, [1031] = 0x8703, [1032] = 0x86fb,
++ [1033] = 0x8711, [1034] = 0x8709, [1035] = 0x870d, [1036] = 0x86f9,
++ [1037] = 0x870a, [1038] = 0x8734, [1039] = 0x873f, [1040] = 0x8737,
++ [1041] = 0x873b, [1042] = 0x8725, [1043] = 0x8729, [1044] = 0x871a,
++ [1045] = 0x8760, [1046] = 0x875f, [1047] = 0x8778, [1048] = 0x874c,
++ [1049] = 0x874e, [1050] = 0x8774, [1051] = 0x8757, [1052] = 0x8768,
++ [1053] = 0x876e, [1054] = 0x8759, [1055] = 0x8753, [1056] = 0x8763,
++ [1057] = 0x876a, [1058] = 0x8805, [1059] = 0x87a2, [1060] = 0x879f,
++ [1061] = 0x8782, [1062] = 0x87af, [1063] = 0x87cb, [1064] = 0x87bd,
++ [1065] = 0x87c0, [1066] = 0x87d0, [1067] = 0x96d6, [1068] = 0x87ab,
++ [1069] = 0x87c4, [1070] = 0x87b3, [1071] = 0x87c7, [1072] = 0x87c6,
++ [1073] = 0x87bb, [1074] = 0x87ef, [1075] = 0x87f2, [1076] = 0x87e0,
++ [1077] = 0x880f, [1078] = 0x880d, [1079] = 0x87fe, [1080] = 0x87f6,
++ [1081] = 0x87f7, [1082] = 0x880e, [1083] = 0x87d2, [1084] = 0x8811,
++ [1085] = 0x8816, [1086] = 0x8815, [1087] = 0x8822, [1088] = 0x8821,
++ [1089] = 0x8831, [1090] = 0x8836, [1091] = 0x8839, [1092] = 0x8827,
++ [1093] = 0x883b, [1094] = 0x8844, [1095] = 0x8842, [1096] = 0x8852,
++ [1097] = 0x8859, [1098] = 0x885e, [1099] = 0x8862, [1100] = 0x886b,
++ [1101] = 0x8881, [1102] = 0x887e, [1103] = 0x889e, [1104] = 0x8875,
++ [1105] = 0x887d, [1106] = 0x88b5, [1107] = 0x8872, [1108] = 0x8882,
++ [1109] = 0x8897, [1110] = 0x8892, [1111] = 0x88ae, [1112] = 0x8899,
++ [1113] = 0x88a2, [1114] = 0x888d, [1115] = 0x88a4, [1116] = 0x88b0,
++ [1117] = 0x88bf, [1118] = 0x88b1, [1119] = 0x88c3, [1120] = 0x88c4,
++ [1121] = 0x88d4, [1122] = 0x88d8, [1123] = 0x88d9, [1124] = 0x88dd,
++ [1125] = 0x88f9, [1126] = 0x8902, [1127] = 0x88fc, [1128] = 0x88f4,
++ [1129] = 0x88e8, [1130] = 0x88f2, [1131] = 0x8904, [1132] = 0x890c,
++ [1133] = 0x890a, [1134] = 0x8913, [1135] = 0x8943, [1136] = 0x891e,
++ [1137] = 0x8925, [1138] = 0x892a, [1139] = 0x892b, [1140] = 0x8941,
++ [1141] = 0x8944, [1142] = 0x893b, [1143] = 0x8936, [1144] = 0x8938,
++ [1145] = 0x894c, [1146] = 0x891d, [1147] = 0x8960, [1148] = 0x895e,
++ [1152] = 0x8966, [1153] = 0x8964, [1154] = 0x896d, [1155] = 0x896a,
++ [1156] = 0x896f, [1157] = 0x8974, [1158] = 0x8977, [1159] = 0x897e,
++ [1160] = 0x8983, [1161] = 0x8988, [1162] = 0x898a, [1163] = 0x8993,
++ [1164] = 0x8998, [1165] = 0x89a1, [1166] = 0x89a9, [1167] = 0x89a6,
++ [1168] = 0x89ac, [1169] = 0x89af, [1170] = 0x89b2, [1171] = 0x89ba,
++ [1172] = 0x89bd, [1173] = 0x89bf, [1174] = 0x89c0, [1175] = 0x89da,
++ [1176] = 0x89dc, [1177] = 0x89dd, [1178] = 0x89e7, [1179] = 0x89f4,
++ [1180] = 0x89f8, [1181] = 0x8a03, [1182] = 0x8a16, [1183] = 0x8a10,
++ [1184] = 0x8a0c, [1185] = 0x8a1b, [1186] = 0x8a1d, [1187] = 0x8a25,
++ [1188] = 0x8a36, [1189] = 0x8a41, [1190] = 0x8a5b, [1191] = 0x8a52,
++ [1192] = 0x8a46, [1193] = 0x8a48, [1194] = 0x8a7c, [1195] = 0x8a6d,
++ [1196] = 0x8a6c, [1197] = 0x8a62, [1198] = 0x8a85, [1199] = 0x8a82,
++ [1200] = 0x8a84, [1201] = 0x8aa8, [1202] = 0x8aa1, [1203] = 0x8a91,
++ [1204] = 0x8aa5, [1205] = 0x8aa6, [1206] = 0x8a9a, [1207] = 0x8aa3,
++ [1208] = 0x8ac4, [1209] = 0x8acd, [1210] = 0x8ac2, [1211] = 0x8ada,
++ [1212] = 0x8aeb, [1213] = 0x8af3, [1214] = 0x8ae7, [1216] = 0x8ae4,
++ [1217] = 0x8af1, [1218] = 0x8b14, [1219] = 0x8ae0, [1220] = 0x8ae2,
++ [1221] = 0x8af7, [1222] = 0x8ade, [1223] = 0x8adb, [1224] = 0x8b0c,
++ [1225] = 0x8b07, [1226] = 0x8b1a, [1227] = 0x8ae1, [1228] = 0x8b16,
++ [1229] = 0x8b10, [1230] = 0x8b17, [1231] = 0x8b20, [1232] = 0x8b33,
++ [1233] = 0x97ab, [1234] = 0x8b26, [1235] = 0x8b2b, [1236] = 0x8b3e,
++ [1237] = 0x8b28, [1238] = 0x8b41, [1239] = 0x8b4c, [1240] = 0x8b4f,
++ [1241] = 0x8b4e, [1242] = 0x8b49, [1243] = 0x8b56, [1244] = 0x8b5b,
++ [1245] = 0x8b5a, [1246] = 0x8b6b, [1247] = 0x8b5f, [1248] = 0x8b6c,
++ [1249] = 0x8b6f, [1250] = 0x8b74, [1251] = 0x8b7d, [1252] = 0x8b80,
++ [1253] = 0x8b8c, [1254] = 0x8b8e, [1255] = 0x8b92, [1256] = 0x8b93,
++ [1257] = 0x8b96, [1258] = 0x8b99, [1259] = 0x8b9a, [1260] = 0x8c3a,
++ [1261] = 0x8c41, [1262] = 0x8c3f, [1263] = 0x8c48, [1264] = 0x8c4c,
++ [1265] = 0x8c4e, [1266] = 0x8c50, [1267] = 0x8c55, [1268] = 0x8c62,
++ [1269] = 0x8c6c, [1270] = 0x8c78, [1271] = 0x8c7a, [1272] = 0x8c82,
++ [1273] = 0x8c89, [1274] = 0x8c85, [1275] = 0x8c8a, [1276] = 0x8c8d,
++ [1277] = 0x8c8e, [1278] = 0x8c94, [1279] = 0x8c7c, [1280] = 0x8c98,
++ [1281] = 0x621d, [1282] = 0x8cad, [1283] = 0x8caa, [1284] = 0x8cbd,
++ [1285] = 0x8cb2, [1286] = 0x8cb3, [1287] = 0x8cae, [1288] = 0x8cb6,
++ [1289] = 0x8cc8, [1290] = 0x8cc1, [1291] = 0x8ce4, [1292] = 0x8ce3,
++ [1293] = 0x8cda, [1294] = 0x8cfd, [1295] = 0x8cfa, [1296] = 0x8cfb,
++ [1297] = 0x8d04, [1298] = 0x8d05, [1299] = 0x8d0a, [1300] = 0x8d07,
++ [1301] = 0x8d0f, [1302] = 0x8d0d, [1303] = 0x8d10, [1304] = 0x9f4e,
++ [1305] = 0x8d13, [1306] = 0x8ccd, [1307] = 0x8d14, [1308] = 0x8d16,
++ [1309] = 0x8d67, [1310] = 0x8d6d, [1311] = 0x8d71, [1312] = 0x8d73,
++ [1313] = 0x8d81, [1314] = 0x8d99, [1315] = 0x8dc2, [1316] = 0x8dbe,
++ [1317] = 0x8dba, [1318] = 0x8dcf, [1319] = 0x8dda, [1320] = 0x8dd6,
++ [1321] = 0x8dcc, [1322] = 0x8ddb, [1323] = 0x8dcb, [1324] = 0x8dea,
++ [1325] = 0x8deb, [1326] = 0x8ddf, [1327] = 0x8de3, [1328] = 0x8dfc,
++ [1329] = 0x8e08, [1330] = 0x8e09, [1331] = 0x8dff, [1332] = 0x8e1d,
++ [1333] = 0x8e1e, [1334] = 0x8e10, [1335] = 0x8e1f, [1336] = 0x8e42,
++ [1337] = 0x8e35, [1338] = 0x8e30, [1339] = 0x8e34, [1340] = 0x8e4a,
++ [1344] = 0x8e47, [1345] = 0x8e49, [1346] = 0x8e4c, [1347] = 0x8e50,
++ [1348] = 0x8e48, [1349] = 0x8e59, [1350] = 0x8e64, [1351] = 0x8e60,
++ [1352] = 0x8e2a, [1353] = 0x8e63, [1354] = 0x8e55, [1355] = 0x8e76,
++ [1356] = 0x8e72, [1357] = 0x8e7c, [1358] = 0x8e81, [1359] = 0x8e87,
++ [1360] = 0x8e85, [1361] = 0x8e84, [1362] = 0x8e8b, [1363] = 0x8e8a,
++ [1364] = 0x8e93, [1365] = 0x8e91, [1366] = 0x8e94, [1367] = 0x8e99,
++ [1368] = 0x8eaa, [1369] = 0x8ea1, [1370] = 0x8eac, [1371] = 0x8eb0,
++ [1372] = 0x8ec6, [1373] = 0x8eb1, [1374] = 0x8ebe, [1375] = 0x8ec5,
++ [1376] = 0x8ec8, [1377] = 0x8ecb, [1378] = 0x8edb, [1379] = 0x8ee3,
++ [1380] = 0x8efc, [1381] = 0x8efb, [1382] = 0x8eeb, [1383] = 0x8efe,
++ [1384] = 0x8f0a, [1385] = 0x8f05, [1386] = 0x8f15, [1387] = 0x8f12,
++ [1388] = 0x8f19, [1389] = 0x8f13, [1390] = 0x8f1c, [1391] = 0x8f1f,
++ [1392] = 0x8f1b, [1393] = 0x8f0c, [1394] = 0x8f26, [1395] = 0x8f33,
++ [1396] = 0x8f3b, [1397] = 0x8f39, [1398] = 0x8f45, [1399] = 0x8f42,
++ [1400] = 0x8f3e, [1401] = 0x8f4c, [1402] = 0x8f49, [1403] = 0x8f46,
++ [1404] = 0x8f4e, [1405] = 0x8f57, [1406] = 0x8f5c, [1408] = 0x8f62,
++ [1409] = 0x8f63, [1410] = 0x8f64, [1411] = 0x8f9c, [1412] = 0x8f9f,
++ [1413] = 0x8fa3, [1414] = 0x8fad, [1415] = 0x8faf, [1416] = 0x8fb7,
++ [1417] = 0x8fda, [1418] = 0x8fe5, [1419] = 0x8fe2, [1420] = 0x8fea,
++ [1421] = 0x8fef, [1422] = 0x9087, [1423] = 0x8ff4, [1424] = 0x9005,
++ [1425] = 0x8ff9, [1426] = 0x8ffa, [1427] = 0x9011, [1428] = 0x9015,
++ [1429] = 0x9021, [1430] = 0x900d, [1431] = 0x901e, [1432] = 0x9016,
++ [1433] = 0x900b, [1434] = 0x9027, [1435] = 0x9036, [1436] = 0x9035,
++ [1437] = 0x9039, [1438] = 0x8ff8, [1439] = 0x904f, [1440] = 0x9050,
++ [1441] = 0x9051, [1442] = 0x9052, [1443] = 0x900e, [1444] = 0x9049,
++ [1445] = 0x903e, [1446] = 0x9056, [1447] = 0x9058, [1448] = 0x905e,
++ [1449] = 0x9068, [1450] = 0x906f, [1451] = 0x9076, [1452] = 0x96a8,
++ [1453] = 0x9072, [1454] = 0x9082, [1455] = 0x907d, [1456] = 0x9081,
++ [1457] = 0x9080, [1458] = 0x908a, [1459] = 0x9089, [1460] = 0x908f,
++ [1461] = 0x90a8, [1462] = 0x90af, [1463] = 0x90b1, [1464] = 0x90b5,
++ [1465] = 0x90e2, [1466] = 0x90e4, [1467] = 0x6248, [1468] = 0x90db,
++ [1469] = 0x9102, [1470] = 0x9112, [1471] = 0x9119, [1472] = 0x9132,
++ [1473] = 0x9130, [1474] = 0x914a, [1475] = 0x9156, [1476] = 0x9158,
++ [1477] = 0x9163, [1478] = 0x9165, [1479] = 0x9169, [1480] = 0x9173,
++ [1481] = 0x9172, [1482] = 0x918b, [1483] = 0x9189, [1484] = 0x9182,
++ [1485] = 0x91a2, [1486] = 0x91ab, [1487] = 0x91af, [1488] = 0x91aa,
++ [1489] = 0x91b5, [1490] = 0x91b4, [1491] = 0x91ba, [1492] = 0x91c0,
++ [1493] = 0x91c1, [1494] = 0x91c9, [1495] = 0x91cb, [1496] = 0x91d0,
++ [1497] = 0x91d6, [1498] = 0x91df, [1499] = 0x91e1, [1500] = 0x91db,
++ [1501] = 0x91fc, [1502] = 0x91f5, [1503] = 0x91f6, [1504] = 0x921e,
++ [1505] = 0x91ff, [1506] = 0x9214, [1507] = 0x922c, [1508] = 0x9215,
++ [1509] = 0x9211, [1510] = 0x925e, [1511] = 0x9257, [1512] = 0x9245,
++ [1513] = 0x9249, [1514] = 0x9264, [1515] = 0x9248, [1516] = 0x9295,
++ [1517] = 0x923f, [1518] = 0x924b, [1519] = 0x9250, [1520] = 0x929c,
++ [1521] = 0x9296, [1522] = 0x9293, [1523] = 0x929b, [1524] = 0x925a,
++ [1525] = 0x92cf, [1526] = 0x92b9, [1527] = 0x92b7, [1528] = 0x92e9,
++ [1529] = 0x930f, [1530] = 0x92fa, [1531] = 0x9344, [1532] = 0x932e,
++ [1536] = 0x9319, [1537] = 0x9322, [1538] = 0x931a, [1539] = 0x9323,
++ [1540] = 0x933a, [1541] = 0x9335, [1542] = 0x933b, [1543] = 0x935c,
++ [1544] = 0x9360, [1545] = 0x937c, [1546] = 0x936e, [1547] = 0x9356,
++ [1548] = 0x93b0, [1549] = 0x93ac, [1550] = 0x93ad, [1551] = 0x9394,
++ [1552] = 0x93b9, [1553] = 0x93d6, [1554] = 0x93d7, [1555] = 0x93e8,
++ [1556] = 0x93e5, [1557] = 0x93d8, [1558] = 0x93c3, [1559] = 0x93dd,
++ [1560] = 0x93d0, [1561] = 0x93c8, [1562] = 0x93e4, [1563] = 0x941a,
++ [1564] = 0x9414, [1565] = 0x9413, [1566] = 0x9403, [1567] = 0x9407,
++ [1568] = 0x9410, [1569] = 0x9436, [1570] = 0x942b, [1571] = 0x9435,
++ [1572] = 0x9421, [1573] = 0x943a, [1574] = 0x9441, [1575] = 0x9452,
++ [1576] = 0x9444, [1577] = 0x945b, [1578] = 0x9460, [1579] = 0x9462,
++ [1580] = 0x945e, [1581] = 0x946a, [1582] = 0x9229, [1583] = 0x9470,
++ [1584] = 0x9475, [1585] = 0x9477, [1586] = 0x947d, [1587] = 0x945a,
++ [1588] = 0x947c, [1589] = 0x947e, [1590] = 0x9481, [1591] = 0x947f,
++ [1592] = 0x9582, [1593] = 0x9587, [1594] = 0x958a, [1595] = 0x9594,
++ [1596] = 0x9596, [1597] = 0x9598, [1598] = 0x9599, [1600] = 0x95a0,
++ [1601] = 0x95a8, [1602] = 0x95a7, [1603] = 0x95ad, [1604] = 0x95bc,
++ [1605] = 0x95bb, [1606] = 0x95b9, [1607] = 0x95be, [1608] = 0x95ca,
++ [1609] = 0x6ff6, [1610] = 0x95c3, [1611] = 0x95cd, [1612] = 0x95cc,
++ [1613] = 0x95d5, [1614] = 0x95d4, [1615] = 0x95d6, [1616] = 0x95dc,
++ [1617] = 0x95e1, [1618] = 0x95e5, [1619] = 0x95e2, [1620] = 0x9621,
++ [1621] = 0x9628, [1622] = 0x962e, [1623] = 0x962f, [1624] = 0x9642,
++ [1625] = 0x964c, [1626] = 0x964f, [1627] = 0x964b, [1628] = 0x9677,
++ [1629] = 0x965c, [1630] = 0x965e, [1631] = 0x965d, [1632] = 0x965f,
++ [1633] = 0x9666, [1634] = 0x9672, [1635] = 0x966c, [1636] = 0x968d,
++ [1637] = 0x9698, [1638] = 0x9695, [1639] = 0x9697, [1640] = 0x96aa,
++ [1641] = 0x96a7, [1642] = 0x96b1, [1643] = 0x96b2, [1644] = 0x96b0,
++ [1645] = 0x96b4, [1646] = 0x96b6, [1647] = 0x96b8, [1648] = 0x96b9,
++ [1649] = 0x96ce, [1650] = 0x96cb, [1651] = 0x96c9, [1652] = 0x96cd,
++ [1653] = 0x894d, [1654] = 0x96dc, [1655] = 0x970d, [1656] = 0x96d5,
++ [1657] = 0x96f9, [1658] = 0x9704, [1659] = 0x9706, [1660] = 0x9708,
++ [1661] = 0x9713, [1662] = 0x970e, [1663] = 0x9711, [1664] = 0x970f,
++ [1665] = 0x9716, [1666] = 0x9719, [1667] = 0x9724, [1668] = 0x972a,
++ [1669] = 0x9730, [1670] = 0x9739, [1671] = 0x973d, [1672] = 0x973e,
++ [1673] = 0x9744, [1674] = 0x9746, [1675] = 0x9748, [1676] = 0x9742,
++ [1677] = 0x9749, [1678] = 0x975c, [1679] = 0x9760, [1680] = 0x9764,
++ [1681] = 0x9766, [1682] = 0x9768, [1683] = 0x52d2, [1684] = 0x976b,
++ [1685] = 0x9771, [1686] = 0x9779, [1687] = 0x9785, [1688] = 0x977c,
++ [1689] = 0x9781, [1690] = 0x977a, [1691] = 0x9786, [1692] = 0x978b,
++ [1693] = 0x978f, [1694] = 0x9790, [1695] = 0x979c, [1696] = 0x97a8,
++ [1697] = 0x97a6, [1698] = 0x97a3, [1699] = 0x97b3, [1700] = 0x97b4,
++ [1701] = 0x97c3, [1702] = 0x97c6, [1703] = 0x97c8, [1704] = 0x97cb,
++ [1705] = 0x97dc, [1706] = 0x97ed, [1707] = 0x9f4f, [1708] = 0x97f2,
++ [1709] = 0x7adf, [1710] = 0x97f6, [1711] = 0x97f5, [1712] = 0x980f,
++ [1713] = 0x980c, [1714] = 0x9838, [1715] = 0x9824, [1716] = 0x9821,
++ [1717] = 0x9837, [1718] = 0x983d, [1719] = 0x9846, [1720] = 0x984f,
++ [1721] = 0x984b, [1722] = 0x986b, [1723] = 0x986f, [1724] = 0x9870,
++ [1728] = 0x9871, [1729] = 0x9874, [1730] = 0x9873, [1731] = 0x98aa,
++ [1732] = 0x98af, [1733] = 0x98b1, [1734] = 0x98b6, [1735] = 0x98c4,
++ [1736] = 0x98c3, [1737] = 0x98c6, [1738] = 0x98e9, [1739] = 0x98eb,
++ [1740] = 0x9903, [1741] = 0x9909, [1742] = 0x9912, [1743] = 0x9914,
++ [1744] = 0x9918, [1745] = 0x9921, [1746] = 0x991d, [1747] = 0x991e,
++ [1748] = 0x9924, [1749] = 0x9920, [1750] = 0x992c, [1751] = 0x992e,
++ [1752] = 0x993d, [1753] = 0x993e, [1754] = 0x9942, [1755] = 0x9949,
++ [1756] = 0x9945, [1757] = 0x9950, [1758] = 0x994b, [1759] = 0x9951,
++ [1760] = 0x9952, [1761] = 0x994c, [1762] = 0x9955, [1763] = 0x9997,
++ [1764] = 0x9998, [1765] = 0x99a5, [1766] = 0x99ad, [1767] = 0x99ae,
++ [1768] = 0x99bc, [1769] = 0x99df, [1770] = 0x99db, [1771] = 0x99dd,
++ [1772] = 0x99d8, [1773] = 0x99d1, [1774] = 0x99ed, [1775] = 0x99ee,
++ [1776] = 0x99f1, [1777] = 0x99f2, [1778] = 0x99fb, [1779] = 0x99f8,
++ [1780] = 0x9a01, [1781] = 0x9a0f, [1782] = 0x9a05, [1783] = 0x99e2,
++ [1784] = 0x9a19, [1785] = 0x9a2b, [1786] = 0x9a37, [1787] = 0x9a45,
++ [1788] = 0x9a42, [1789] = 0x9a40, [1790] = 0x9a43, [1792] = 0x9a3e,
++ [1793] = 0x9a55, [1794] = 0x9a4d, [1795] = 0x9a5b, [1796] = 0x9a57,
++ [1797] = 0x9a5f, [1798] = 0x9a62, [1799] = 0x9a65, [1800] = 0x9a64,
++ [1801] = 0x9a69, [1802] = 0x9a6b, [1803] = 0x9a6a, [1804] = 0x9aad,
++ [1805] = 0x9ab0, [1806] = 0x9abc, [1807] = 0x9ac0, [1808] = 0x9acf,
++ [1809] = 0x9ad1, [1810] = 0x9ad3, [1811] = 0x9ad4, [1812] = 0x9ade,
++ [1813] = 0x9adf, [1814] = 0x9ae2, [1815] = 0x9ae3, [1816] = 0x9ae6,
++ [1817] = 0x9aef, [1818] = 0x9aeb, [1819] = 0x9aee, [1820] = 0x9af4,
++ [1821] = 0x9af1, [1822] = 0x9af7, [1823] = 0x9afb, [1824] = 0x9b06,
++ [1825] = 0x9b18, [1826] = 0x9b1a, [1827] = 0x9b1f, [1828] = 0x9b22,
++ [1829] = 0x9b23, [1830] = 0x9b25, [1831] = 0x9b27, [1832] = 0x9b28,
++ [1833] = 0x9b29, [1834] = 0x9b2a, [1835] = 0x9b2e, [1836] = 0x9b2f,
++ [1837] = 0x9b32, [1838] = 0x9b44, [1839] = 0x9b43, [1840] = 0x9b4f,
++ [1841] = 0x9b4d, [1842] = 0x9b4e, [1843] = 0x9b51, [1844] = 0x9b58,
++ [1845] = 0x9b74, [1846] = 0x9b93, [1847] = 0x9b83, [1848] = 0x9b91,
++ [1849] = 0x9b96, [1850] = 0x9b97, [1851] = 0x9b9f, [1852] = 0x9ba0,
++ [1853] = 0x9ba8, [1854] = 0x9bb4, [1855] = 0x9bc0, [1856] = 0x9bca,
++ [1857] = 0x9bb9, [1858] = 0x9bc6, [1859] = 0x9bcf, [1860] = 0x9bd1,
++ [1861] = 0x9bd2, [1862] = 0x9be3, [1863] = 0x9be2, [1864] = 0x9be4,
++ [1865] = 0x9bd4, [1866] = 0x9be1, [1867] = 0x9c3a, [1868] = 0x9bf2,
++ [1869] = 0x9bf1, [1870] = 0x9bf0, [1871] = 0x9c15, [1872] = 0x9c14,
++ [1873] = 0x9c09, [1874] = 0x9c13, [1875] = 0x9c0c, [1876] = 0x9c06,
++ [1877] = 0x9c08, [1878] = 0x9c12, [1879] = 0x9c0a, [1880] = 0x9c04,
++ [1881] = 0x9c2e, [1882] = 0x9c1b, [1883] = 0x9c25, [1884] = 0x9c24,
++ [1885] = 0x9c21, [1886] = 0x9c30, [1887] = 0x9c47, [1888] = 0x9c32,
++ [1889] = 0x9c46, [1890] = 0x9c3e, [1891] = 0x9c5a, [1892] = 0x9c60,
++ [1893] = 0x9c67, [1894] = 0x9c76, [1895] = 0x9c78, [1896] = 0x9ce7,
++ [1897] = 0x9cec, [1898] = 0x9cf0, [1899] = 0x9d09, [1900] = 0x9d08,
++ [1901] = 0x9ceb, [1902] = 0x9d03, [1903] = 0x9d06, [1904] = 0x9d2a,
++ [1905] = 0x9d26, [1906] = 0x9daf, [1907] = 0x9d23, [1908] = 0x9d1f,
++ [1909] = 0x9d44, [1910] = 0x9d15, [1911] = 0x9d12, [1912] = 0x9d41,
++ [1913] = 0x9d3f, [1914] = 0x9d3e, [1915] = 0x9d46, [1916] = 0x9d48,
++ [1920] = 0x9d5d, [1921] = 0x9d5e, [1922] = 0x9d64, [1923] = 0x9d51,
++ [1924] = 0x9d50, [1925] = 0x9d59, [1926] = 0x9d72, [1927] = 0x9d89,
++ [1928] = 0x9d87, [1929] = 0x9dab, [1930] = 0x9d6f, [1931] = 0x9d7a,
++ [1932] = 0x9d9a, [1933] = 0x9da4, [1934] = 0x9da9, [1935] = 0x9db2,
++ [1936] = 0x9dc4, [1937] = 0x9dc1, [1938] = 0x9dbb, [1939] = 0x9db8,
++ [1940] = 0x9dba, [1941] = 0x9dc6, [1942] = 0x9dcf, [1943] = 0x9dc2,
++ [1944] = 0x9dd9, [1945] = 0x9dd3, [1946] = 0x9df8, [1947] = 0x9de6,
++ [1948] = 0x9ded, [1949] = 0x9def, [1950] = 0x9dfd, [1951] = 0x9e1a,
++ [1952] = 0x9e1b, [1953] = 0x9e1e, [1954] = 0x9e75, [1955] = 0x9e79,
++ [1956] = 0x9e7d, [1957] = 0x9e81, [1958] = 0x9e88, [1959] = 0x9e8b,
++ [1960] = 0x9e8c, [1961] = 0x9e92, [1962] = 0x9e95, [1963] = 0x9e91,
++ [1964] = 0x9e9d, [1965] = 0x9ea5, [1966] = 0x9ea9, [1967] = 0x9eb8,
++ [1968] = 0x9eaa, [1969] = 0x9ead, [1970] = 0x9761, [1971] = 0x9ecc,
++ [1972] = 0x9ece, [1973] = 0x9ecf, [1974] = 0x9ed0, [1975] = 0x9ed4,
++ [1976] = 0x9edc, [1977] = 0x9ede, [1978] = 0x9edd, [1979] = 0x9ee0,
++ [1980] = 0x9ee5, [1981] = 0x9ee8, [1982] = 0x9eef, [1984] = 0x9ef4,
++ [1985] = 0x9ef6, [1986] = 0x9ef7, [1987] = 0x9ef9, [1988] = 0x9efb,
++ [1989] = 0x9efc, [1990] = 0x9efd, [1991] = 0x9f07, [1992] = 0x9f08,
++ [1993] = 0x76b7, [1994] = 0x9f15, [1995] = 0x9f21, [1996] = 0x9f2c,
++ [1997] = 0x9f3e, [1998] = 0x9f4a, [1999] = 0x9f52, [2000] = 0x9f54,
++ [2001] = 0x9f63, [2002] = 0x9f5f, [2003] = 0x9f60, [2004] = 0x9f61,
++ [2005] = 0x9f66, [2006] = 0x9f67, [2007] = 0x9f6c, [2008] = 0x9f6a,
++ [2009] = 0x9f77, [2010] = 0x9f72, [2011] = 0x9f76, [2012] = 0x9f95,
++ [2013] = 0x9f9c, [2014] = 0x9fa0, [2015] = 0x582f, [2016] = 0x69c7,
++ [2017] = 0x9059, [2018] = 0x7464, [2019] = 0x51dc, [2020] = 0x7199
++};
++
++static const uint16_t cjk_block6[381] =
++{
++ /* start = 0xed40, end = 0xeefc */
++ [ 0] = 0x7e8a, [ 1] = 0x891c, [ 2] = 0x9348, [ 3] = 0x9288,
++ [ 4] = 0x84dc, [ 5] = 0x4fc9, [ 6] = 0x70bb, [ 7] = 0x6631,
++ [ 8] = 0x68c8, [ 9] = 0x92f9, [ 10] = 0x66fb, [ 11] = 0x5f45,
++ [ 12] = 0x4e28, [ 13] = 0x4ee1, [ 14] = 0x4efc, [ 15] = 0x4f00,
++ [ 16] = 0x4f03, [ 17] = 0x4f39, [ 18] = 0x4f56, [ 19] = 0x4f92,
++ [ 20] = 0x4f8a, [ 21] = 0x4f9a, [ 22] = 0x4f94, [ 23] = 0x4fcd,
++ [ 24] = 0x5040, [ 25] = 0x5022, [ 26] = 0x4fff, [ 27] = 0x501e,
++ [ 28] = 0x5046, [ 29] = 0x5070, [ 30] = 0x5042, [ 31] = 0x5094,
++ [ 32] = 0x50f4, [ 33] = 0x50d8, [ 34] = 0x514a, [ 35] = 0x5164,
++ [ 36] = 0x519d, [ 37] = 0x51be, [ 38] = 0x51ec, [ 39] = 0x5215,
++ [ 40] = 0x529c, [ 41] = 0x52a6, [ 42] = 0x52c0, [ 43] = 0x52db,
++ [ 44] = 0x5300, [ 45] = 0x5307, [ 46] = 0x5324, [ 47] = 0x5372,
++ [ 48] = 0x5393, [ 49] = 0x53b2, [ 50] = 0x53dd, [ 51] = 0xfa0e,
++ [ 52] = 0x549c, [ 53] = 0x548a, [ 54] = 0x54a9, [ 55] = 0x54ff,
++ [ 56] = 0x5586, [ 57] = 0x5759, [ 58] = 0x5765, [ 59] = 0x57ac,
++ [ 60] = 0x57c8, [ 61] = 0x57c7, [ 62] = 0xfa0f, [ 64] = 0xfa10,
++ [ 65] = 0x589e, [ 66] = 0x58b2, [ 67] = 0x590b, [ 68] = 0x5953,
++ [ 69] = 0x595b, [ 70] = 0x595d, [ 71] = 0x5963, [ 72] = 0x59a4,
++ [ 73] = 0x59ba, [ 74] = 0x5b56, [ 75] = 0x5bc0, [ 76] = 0x752f,
++ [ 77] = 0x5bd8, [ 78] = 0x5bec, [ 79] = 0x5c1e, [ 80] = 0x5ca6,
++ [ 81] = 0x5cba, [ 82] = 0x5cf5, [ 83] = 0x5d27, [ 84] = 0x5d53,
++ [ 85] = 0xfa11, [ 86] = 0x5d42, [ 87] = 0x5d6d, [ 88] = 0x5db8,
++ [ 89] = 0x5db9, [ 90] = 0x5dd0, [ 91] = 0x5f21, [ 92] = 0x5f34,
++ [ 93] = 0x5f67, [ 94] = 0x5fb7, [ 95] = 0x5fde, [ 96] = 0x605d,
++ [ 97] = 0x6085, [ 98] = 0x608a, [ 99] = 0x60de, [ 100] = 0x60d5,
++ [ 101] = 0x6120, [ 102] = 0x60f2, [ 103] = 0x6111, [ 104] = 0x6137,
++ [ 105] = 0x6130, [ 106] = 0x6198, [ 107] = 0x6213, [ 108] = 0x62a6,
++ [ 109] = 0x63f5, [ 110] = 0x6460, [ 111] = 0x649d, [ 112] = 0x64ce,
++ [ 113] = 0x654e, [ 114] = 0x6600, [ 115] = 0x6615, [ 116] = 0x663b,
++ [ 117] = 0x6609, [ 118] = 0x662e, [ 119] = 0x661e, [ 120] = 0x6624,
++ [ 121] = 0x6665, [ 122] = 0x6657, [ 123] = 0x6659, [ 124] = 0xfa12,
++ [ 125] = 0x6673, [ 126] = 0x6699, [ 127] = 0x66a0, [ 128] = 0x66b2,
++ [ 129] = 0x66bf, [ 130] = 0x66fa, [ 131] = 0x670e, [ 132] = 0xf929,
++ [ 133] = 0x6766, [ 134] = 0x67bb, [ 135] = 0x6852, [ 136] = 0x67c0,
++ [ 137] = 0x6801, [ 138] = 0x6844, [ 139] = 0x68cf, [ 140] = 0xfa13,
++ [ 141] = 0x6968, [ 142] = 0xfa14, [ 143] = 0x6998, [ 144] = 0x69e2,
++ [ 145] = 0x6a30, [ 146] = 0x6a6b, [ 147] = 0x6a46, [ 148] = 0x6a73,
++ [ 149] = 0x6a7e, [ 150] = 0x6ae2, [ 151] = 0x6ae4, [ 152] = 0x6bd6,
++ [ 153] = 0x6c3f, [ 154] = 0x6c5c, [ 155] = 0x6c86, [ 156] = 0x6c6f,
++ [ 157] = 0x6cda, [ 158] = 0x6d04, [ 159] = 0x6d87, [ 160] = 0x6d6f,
++ [ 161] = 0x6d96, [ 162] = 0x6dac, [ 163] = 0x6dcf, [ 164] = 0x6df8,
++ [ 165] = 0x6df2, [ 166] = 0x6dfc, [ 167] = 0x6e39, [ 168] = 0x6e5c,
++ [ 169] = 0x6e27, [ 170] = 0x6e3c, [ 171] = 0x6ebf, [ 172] = 0x6f88,
++ [ 173] = 0x6fb5, [ 174] = 0x6ff5, [ 175] = 0x7005, [ 176] = 0x7007,
++ [ 177] = 0x7028, [ 178] = 0x7085, [ 179] = 0x70ab, [ 180] = 0x710f,
++ [ 181] = 0x7104, [ 182] = 0x715c, [ 183] = 0x7146, [ 184] = 0x7147,
++ [ 185] = 0xfa15, [ 186] = 0x71c1, [ 187] = 0x71fe, [ 188] = 0x72b1,
++ [ 192] = 0x72be, [ 193] = 0x7324, [ 194] = 0xfa16, [ 195] = 0x7377,
++ [ 196] = 0x73bd, [ 197] = 0x73c9, [ 198] = 0x73d6, [ 199] = 0x73e3,
++ [ 200] = 0x73d2, [ 201] = 0x7407, [ 202] = 0x73f5, [ 203] = 0x7426,
++ [ 204] = 0x742a, [ 205] = 0x7429, [ 206] = 0x742e, [ 207] = 0x7462,
++ [ 208] = 0x7489, [ 209] = 0x749f, [ 210] = 0x7501, [ 211] = 0x756f,
++ [ 212] = 0x7682, [ 213] = 0x769c, [ 214] = 0x769e, [ 215] = 0x769b,
++ [ 216] = 0x76a6, [ 217] = 0xfa17, [ 218] = 0x7746, [ 219] = 0x52af,
++ [ 220] = 0x7821, [ 221] = 0x784e, [ 222] = 0x7864, [ 223] = 0x787a,
++ [ 224] = 0x7930, [ 225] = 0xfa18, [ 226] = 0xfa19, [ 227] = 0xfa1a,
++ [ 228] = 0x7994, [ 229] = 0xfa1b, [ 230] = 0x799b, [ 231] = 0x7ad1,
++ [ 232] = 0x7ae7, [ 233] = 0xfa1c, [ 234] = 0x7aeb, [ 235] = 0x7b9e,
++ [ 236] = 0xfa1d, [ 237] = 0x7d48, [ 238] = 0x7d5c, [ 239] = 0x7db7,
++ [ 240] = 0x7da0, [ 241] = 0x7dd6, [ 242] = 0x7e52, [ 243] = 0x7f47,
++ [ 244] = 0x7fa1, [ 245] = 0xfa1e, [ 246] = 0x8301, [ 247] = 0x8362,
++ [ 248] = 0x837f, [ 249] = 0x83c7, [ 250] = 0x83f6, [ 251] = 0x8448,
++ [ 252] = 0x84b4, [ 253] = 0x8553, [ 254] = 0x8559, [ 256] = 0x856b,
++ [ 257] = 0xfa1f, [ 258] = 0x85b0, [ 259] = 0xfa20, [ 260] = 0xfa21,
++ [ 261] = 0x8807, [ 262] = 0x88f5, [ 263] = 0x8a12, [ 264] = 0x8a37,
++ [ 265] = 0x8a79, [ 266] = 0x8aa7, [ 267] = 0x8abe, [ 268] = 0x8adf,
++ [ 269] = 0xfa22, [ 270] = 0x8af6, [ 271] = 0x8b53, [ 272] = 0x8b7f,
++ [ 273] = 0x8cf0, [ 274] = 0x8cf4, [ 275] = 0x8d12, [ 276] = 0x8d76,
++ [ 277] = 0xfa23, [ 278] = 0x8ecf, [ 279] = 0xfa24, [ 280] = 0xfa25,
++ [ 281] = 0x9067, [ 282] = 0x90de, [ 283] = 0xfa26, [ 284] = 0x9115,
++ [ 285] = 0x9127, [ 286] = 0x91da, [ 287] = 0x91d7, [ 288] = 0x91de,
++ [ 289] = 0x91ed, [ 290] = 0x91ee, [ 291] = 0x91e4, [ 292] = 0x91e5,
++ [ 293] = 0x9206, [ 294] = 0x9210, [ 295] = 0x920a, [ 296] = 0x923a,
++ [ 297] = 0x9240, [ 298] = 0x923c, [ 299] = 0x924e, [ 300] = 0x9259,
++ [ 301] = 0x9251, [ 302] = 0x9239, [ 303] = 0x9267, [ 304] = 0x92a7,
++ [ 305] = 0x9277, [ 306] = 0x9278, [ 307] = 0x92e7, [ 308] = 0x92d7,
++ [ 309] = 0x92d9, [ 310] = 0x92d0, [ 311] = 0xfa27, [ 312] = 0x92d5,
++ [ 313] = 0x92e0, [ 314] = 0x92d3, [ 315] = 0x9325, [ 316] = 0x9321,
++ [ 317] = 0x92fb, [ 318] = 0xfa28, [ 319] = 0x931e, [ 320] = 0x92ff,
++ [ 321] = 0x931d, [ 322] = 0x9302, [ 323] = 0x9370, [ 324] = 0x9357,
++ [ 325] = 0x93a4, [ 326] = 0x93c6, [ 327] = 0x93de, [ 328] = 0x93f8,
++ [ 329] = 0x9431, [ 330] = 0x9445, [ 331] = 0x9448, [ 332] = 0x9592,
++ [ 333] = 0xf9dc, [ 334] = 0xfa29, [ 335] = 0x969d, [ 336] = 0x96af,
++ [ 337] = 0x9733, [ 338] = 0x973b, [ 339] = 0x9743, [ 340] = 0x974d,
++ [ 341] = 0x974f, [ 342] = 0x9751, [ 343] = 0x9755, [ 344] = 0x9857,
++ [ 345] = 0x9865, [ 346] = 0xfa2a, [ 347] = 0xfa2b, [ 348] = 0x9927,
++ [ 349] = 0xfa2c, [ 350] = 0x999e, [ 351] = 0x9a4e, [ 352] = 0x9ad9,
++ [ 353] = 0x9adc, [ 354] = 0x9b75, [ 355] = 0x9b72, [ 356] = 0x9b8f,
++ [ 357] = 0x9bb1, [ 358] = 0x9bbb, [ 359] = 0x9c00, [ 360] = 0x9d70,
++ [ 361] = 0x9d6b, [ 362] = 0xfa2d, [ 363] = 0x9e19, [ 364] = 0x9ed1,
++ [ 367] = 0x2170, [ 368] = 0x2171, [ 369] = 0x2172, [ 370] = 0x2173,
++ [ 371] = 0x2174, [ 372] = 0x2175, [ 373] = 0x2176, [ 374] = 0x2177,
++ [ 375] = 0x2178, [ 376] = 0x2179, [ 377] = 0xffe2, [ 378] = 0xffe4,
++ [ 379] = 0xff07, [ 380] = 0xff02
++};
++
++static const uint16_t cjk_block7[396] =
++{
++ /* start = 0xfa40, end = 0xfc4b */
++ [ 0] = 0x2170, [ 1] = 0x2171, [ 2] = 0x2172, [ 3] = 0x2173,
++ [ 4] = 0x2174, [ 5] = 0x2175, [ 6] = 0x2176, [ 7] = 0x2177,
++ [ 8] = 0x2178, [ 9] = 0x2179, [ 10] = 0x2160, [ 11] = 0x2161,
++ [ 12] = 0x2162, [ 13] = 0x2163, [ 14] = 0x2164, [ 15] = 0x2165,
++ [ 16] = 0x2166, [ 17] = 0x2167, [ 18] = 0x2168, [ 19] = 0x2169,
++ [ 20] = 0xffe2, [ 21] = 0xffe4, [ 22] = 0xff07, [ 23] = 0xff02,
++ [ 24] = 0x3231, [ 25] = 0x2116, [ 26] = 0x2121, [ 27] = 0x2235,
++ [ 28] = 0x7e8a, [ 29] = 0x891c, [ 30] = 0x9348, [ 31] = 0x9288,
++ [ 32] = 0x84dc, [ 33] = 0x4fc9, [ 34] = 0x70bb, [ 35] = 0x6631,
++ [ 36] = 0x68c8, [ 37] = 0x92f9, [ 38] = 0x66fb, [ 39] = 0x5f45,
++ [ 40] = 0x4e28, [ 41] = 0x4ee1, [ 42] = 0x4efc, [ 43] = 0x4f00,
++ [ 44] = 0x4f03, [ 45] = 0x4f39, [ 46] = 0x4f56, [ 47] = 0x4f92,
++ [ 48] = 0x4f8a, [ 49] = 0x4f9a, [ 50] = 0x4f94, [ 51] = 0x4fcd,
++ [ 52] = 0x5040, [ 53] = 0x5022, [ 54] = 0x4fff, [ 55] = 0x501e,
++ [ 56] = 0x5046, [ 57] = 0x5070, [ 58] = 0x5042, [ 59] = 0x5094,
++ [ 60] = 0x50f4, [ 61] = 0x50d8, [ 62] = 0x514a, [ 64] = 0x5164,
++ [ 65] = 0x519d, [ 66] = 0x51be, [ 67] = 0x51ec, [ 68] = 0x5215,
++ [ 69] = 0x529c, [ 70] = 0x52a6, [ 71] = 0x52c0, [ 72] = 0x52db,
++ [ 73] = 0x5300, [ 74] = 0x5307, [ 75] = 0x5324, [ 76] = 0x5372,
++ [ 77] = 0x5393, [ 78] = 0x53b2, [ 79] = 0x53dd, [ 80] = 0xfa0e,
++ [ 81] = 0x549c, [ 82] = 0x548a, [ 83] = 0x54a9, [ 84] = 0x54ff,
++ [ 85] = 0x5586, [ 86] = 0x5759, [ 87] = 0x5765, [ 88] = 0x57ac,
++ [ 89] = 0x57c8, [ 90] = 0x57c7, [ 91] = 0xfa0f, [ 92] = 0xfa10,
++ [ 93] = 0x589e, [ 94] = 0x58b2, [ 95] = 0x590b, [ 96] = 0x5953,
++ [ 97] = 0x595b, [ 98] = 0x595d, [ 99] = 0x5963, [ 100] = 0x59a4,
++ [ 101] = 0x59ba, [ 102] = 0x5b56, [ 103] = 0x5bc0, [ 104] = 0x752f,
++ [ 105] = 0x5bd8, [ 106] = 0x5bec, [ 107] = 0x5c1e, [ 108] = 0x5ca6,
++ [ 109] = 0x5cba, [ 110] = 0x5cf5, [ 111] = 0x5d27, [ 112] = 0x5d53,
++ [ 113] = 0xfa11, [ 114] = 0x5d42, [ 115] = 0x5d6d, [ 116] = 0x5db8,
++ [ 117] = 0x5db9, [ 118] = 0x5dd0, [ 119] = 0x5f21, [ 120] = 0x5f34,
++ [ 121] = 0x5f67, [ 122] = 0x5fb7, [ 123] = 0x5fde, [ 124] = 0x605d,
++ [ 125] = 0x6085, [ 126] = 0x608a, [ 127] = 0x60de, [ 128] = 0x60d5,
++ [ 129] = 0x6120, [ 130] = 0x60f2, [ 131] = 0x6111, [ 132] = 0x6137,
++ [ 133] = 0x6130, [ 134] = 0x6198, [ 135] = 0x6213, [ 136] = 0x62a6,
++ [ 137] = 0x63f5, [ 138] = 0x6460, [ 139] = 0x649d, [ 140] = 0x64ce,
++ [ 141] = 0x654e, [ 142] = 0x6600, [ 143] = 0x6615, [ 144] = 0x663b,
++ [ 145] = 0x6609, [ 146] = 0x662e, [ 147] = 0x661e, [ 148] = 0x6624,
++ [ 149] = 0x6665, [ 150] = 0x6657, [ 151] = 0x6659, [ 152] = 0xfa12,
++ [ 153] = 0x6673, [ 154] = 0x6699, [ 155] = 0x66a0, [ 156] = 0x66b2,
++ [ 157] = 0x66bf, [ 158] = 0x66fa, [ 159] = 0x670e, [ 160] = 0xf929,
++ [ 161] = 0x6766, [ 162] = 0x67bb, [ 163] = 0x6852, [ 164] = 0x67c0,
++ [ 165] = 0x6801, [ 166] = 0x6844, [ 167] = 0x68cf, [ 168] = 0xfa13,
++ [ 169] = 0x6968, [ 170] = 0xfa14, [ 171] = 0x6998, [ 172] = 0x69e2,
++ [ 173] = 0x6a30, [ 174] = 0x6a6b, [ 175] = 0x6a46, [ 176] = 0x6a73,
++ [ 177] = 0x6a7e, [ 178] = 0x6ae2, [ 179] = 0x6ae4, [ 180] = 0x6bd6,
++ [ 181] = 0x6c3f, [ 182] = 0x6c5c, [ 183] = 0x6c86, [ 184] = 0x6c6f,
++ [ 185] = 0x6cda, [ 186] = 0x6d04, [ 187] = 0x6d87, [ 188] = 0x6d6f,
++ [ 192] = 0x6d96, [ 193] = 0x6dac, [ 194] = 0x6dcf, [ 195] = 0x6df8,
++ [ 196] = 0x6df2, [ 197] = 0x6dfc, [ 198] = 0x6e39, [ 199] = 0x6e5c,
++ [ 200] = 0x6e27, [ 201] = 0x6e3c, [ 202] = 0x6ebf, [ 203] = 0x6f88,
++ [ 204] = 0x6fb5, [ 205] = 0x6ff5, [ 206] = 0x7005, [ 207] = 0x7007,
++ [ 208] = 0x7028, [ 209] = 0x7085, [ 210] = 0x70ab, [ 211] = 0x710f,
++ [ 212] = 0x7104, [ 213] = 0x715c, [ 214] = 0x7146, [ 215] = 0x7147,
++ [ 216] = 0xfa15, [ 217] = 0x71c1, [ 218] = 0x71fe, [ 219] = 0x72b1,
++ [ 220] = 0x72be, [ 221] = 0x7324, [ 222] = 0xfa16, [ 223] = 0x7377,
++ [ 224] = 0x73bd, [ 225] = 0x73c9, [ 226] = 0x73d6, [ 227] = 0x73e3,
++ [ 228] = 0x73d2, [ 229] = 0x7407, [ 230] = 0x73f5, [ 231] = 0x7426,
++ [ 232] = 0x742a, [ 233] = 0x7429, [ 234] = 0x742e, [ 235] = 0x7462,
++ [ 236] = 0x7489, [ 237] = 0x749f, [ 238] = 0x7501, [ 239] = 0x756f,
++ [ 240] = 0x7682, [ 241] = 0x769c, [ 242] = 0x769e, [ 243] = 0x769b,
++ [ 244] = 0x76a6, [ 245] = 0xfa17, [ 246] = 0x7746, [ 247] = 0x52af,
++ [ 248] = 0x7821, [ 249] = 0x784e, [ 250] = 0x7864, [ 251] = 0x787a,
++ [ 252] = 0x7930, [ 253] = 0xfa18, [ 254] = 0xfa19, [ 256] = 0xfa1a,
++ [ 257] = 0x7994, [ 258] = 0xfa1b, [ 259] = 0x799b, [ 260] = 0x7ad1,
++ [ 261] = 0x7ae7, [ 262] = 0xfa1c, [ 263] = 0x7aeb, [ 264] = 0x7b9e,
++ [ 265] = 0xfa1d, [ 266] = 0x7d48, [ 267] = 0x7d5c, [ 268] = 0x7db7,
++ [ 269] = 0x7da0, [ 270] = 0x7dd6, [ 271] = 0x7e52, [ 272] = 0x7f47,
++ [ 273] = 0x7fa1, [ 274] = 0xfa1e, [ 275] = 0x8301, [ 276] = 0x8362,
++ [ 277] = 0x837f, [ 278] = 0x83c7, [ 279] = 0x83f6, [ 280] = 0x8448,
++ [ 281] = 0x84b4, [ 282] = 0x8553, [ 283] = 0x8559, [ 284] = 0x856b,
++ [ 285] = 0xfa1f, [ 286] = 0x85b0, [ 287] = 0xfa20, [ 288] = 0xfa21,
++ [ 289] = 0x8807, [ 290] = 0x88f5, [ 291] = 0x8a12, [ 292] = 0x8a37,
++ [ 293] = 0x8a79, [ 294] = 0x8aa7, [ 295] = 0x8abe, [ 296] = 0x8adf,
++ [ 297] = 0xfa22, [ 298] = 0x8af6, [ 299] = 0x8b53, [ 300] = 0x8b7f,
++ [ 301] = 0x8cf0, [ 302] = 0x8cf4, [ 303] = 0x8d12, [ 304] = 0x8d76,
++ [ 305] = 0xfa23, [ 306] = 0x8ecf, [ 307] = 0xfa24, [ 308] = 0xfa25,
++ [ 309] = 0x9067, [ 310] = 0x90de, [ 311] = 0xfa26, [ 312] = 0x9115,
++ [ 313] = 0x9127, [ 314] = 0x91da, [ 315] = 0x91d7, [ 316] = 0x91de,
++ [ 317] = 0x91ed, [ 318] = 0x91ee, [ 319] = 0x91e4, [ 320] = 0x91e5,
++ [ 321] = 0x9206, [ 322] = 0x9210, [ 323] = 0x920a, [ 324] = 0x923a,
++ [ 325] = 0x9240, [ 326] = 0x923c, [ 327] = 0x924e, [ 328] = 0x9259,
++ [ 329] = 0x9251, [ 330] = 0x9239, [ 331] = 0x9267, [ 332] = 0x92a7,
++ [ 333] = 0x9277, [ 334] = 0x9278, [ 335] = 0x92e7, [ 336] = 0x92d7,
++ [ 337] = 0x92d9, [ 338] = 0x92d0, [ 339] = 0xfa27, [ 340] = 0x92d5,
++ [ 341] = 0x92e0, [ 342] = 0x92d3, [ 343] = 0x9325, [ 344] = 0x9321,
++ [ 345] = 0x92fb, [ 346] = 0xfa28, [ 347] = 0x931e, [ 348] = 0x92ff,
++ [ 349] = 0x931d, [ 350] = 0x9302, [ 351] = 0x9370, [ 352] = 0x9357,
++ [ 353] = 0x93a4, [ 354] = 0x93c6, [ 355] = 0x93de, [ 356] = 0x93f8,
++ [ 357] = 0x9431, [ 358] = 0x9445, [ 359] = 0x9448, [ 360] = 0x9592,
++ [ 361] = 0xf9dc, [ 362] = 0xfa29, [ 363] = 0x969d, [ 364] = 0x96af,
++ [ 365] = 0x9733, [ 366] = 0x973b, [ 367] = 0x9743, [ 368] = 0x974d,
++ [ 369] = 0x974f, [ 370] = 0x9751, [ 371] = 0x9755, [ 372] = 0x9857,
++ [ 373] = 0x9865, [ 374] = 0xfa2a, [ 375] = 0xfa2b, [ 376] = 0x9927,
++ [ 377] = 0xfa2c, [ 378] = 0x999e, [ 379] = 0x9a4e, [ 380] = 0x9ad9,
++ [ 384] = 0x9adc, [ 385] = 0x9b75, [ 386] = 0x9b72, [ 387] = 0x9b8f,
++ [ 388] = 0x9bb1, [ 389] = 0x9bbb, [ 390] = 0x9c00, [ 391] = 0x9d70,
++ [ 392] = 0x9d6b, [ 393] = 0xfa2d, [ 394] = 0x9e19, [ 395] = 0x9ed1
++};
++
++static const char from_ucs4_lat1[248][2] =
++{
++ /* start = 0x0000, end = 0x00f7 */
++ [ 0] = "\x00\x00", [ 1] = "\x01\x00", [ 2] = "\x02\x00",
++ [ 3] = "\x03\x00", [ 4] = "\x04\x00", [ 5] = "\x05\x00",
++ [ 6] = "\x06\x00", [ 7] = "\x07\x00", [ 8] = "\x08\x00",
++ [ 9] = "\x09\x00", [ 10] = "\x0a\x00", [ 11] = "\x0b\x00",
++ [ 12] = "\x0c\x00", [ 13] = "\x0d\x00", [ 14] = "\x0e\x00",
++ [ 15] = "\x0f\x00", [ 16] = "\x10\x00", [ 17] = "\x11\x00",
++ [ 18] = "\x12\x00", [ 19] = "\x13\x00", [ 20] = "\x14\x00",
++ [ 21] = "\x15\x00", [ 22] = "\x16\x00", [ 23] = "\x17\x00",
++ [ 24] = "\x18\x00", [ 25] = "\x19\x00", [ 26] = "\x1a\x00",
++ [ 27] = "\x1b\x00", [ 28] = "\x1c\x00", [ 29] = "\x1d\x00",
++ [ 30] = "\x1e\x00", [ 31] = "\x1f\x00", [ 32] = "\x20\x00",
++ [ 33] = "\x21\x00", [ 34] = "\x22\x00", [ 35] = "\x23\x00",
++ [ 36] = "\x24\x00", [ 37] = "\x25\x00", [ 38] = "\x26\x00",
++ [ 39] = "\x27\x00", [ 40] = "\x28\x00", [ 41] = "\x29\x00",
++ [ 42] = "\x2a\x00", [ 43] = "\x2b\x00", [ 44] = "\x2c\x00",
++ [ 45] = "\x2d\x00", [ 46] = "\x2e\x00", [ 47] = "\x2f\x00",
++ [ 48] = "\x30\x00", [ 49] = "\x31\x00", [ 50] = "\x32\x00",
++ [ 51] = "\x33\x00", [ 52] = "\x34\x00", [ 53] = "\x35\x00",
++ [ 54] = "\x36\x00", [ 55] = "\x37\x00", [ 56] = "\x38\x00",
++ [ 57] = "\x39\x00", [ 58] = "\x3a\x00", [ 59] = "\x3b\x00",
++ [ 60] = "\x3c\x00", [ 61] = "\x3d\x00", [ 62] = "\x3e\x00",
++ [ 63] = "\x3f\x00", [ 64] = "\x40\x00", [ 65] = "\x41\x00",
++ [ 66] = "\x42\x00", [ 67] = "\x43\x00", [ 68] = "\x44\x00",
++ [ 69] = "\x45\x00", [ 70] = "\x46\x00", [ 71] = "\x47\x00",
++ [ 72] = "\x48\x00", [ 73] = "\x49\x00", [ 74] = "\x4a\x00",
++ [ 75] = "\x4b\x00", [ 76] = "\x4c\x00", [ 77] = "\x4d\x00",
++ [ 78] = "\x4e\x00", [ 79] = "\x4f\x00", [ 80] = "\x50\x00",
++ [ 81] = "\x51\x00", [ 82] = "\x52\x00", [ 83] = "\x53\x00",
++ [ 84] = "\x54\x00", [ 85] = "\x55\x00", [ 86] = "\x56\x00",
++ [ 87] = "\x57\x00", [ 88] = "\x58\x00", [ 89] = "\x59\x00",
++ [ 90] = "\x5a\x00", [ 91] = "\x5b\x00", [ 92] = "\x5c\x00",
++ [ 93] = "\x5d\x00", [ 94] = "\x5e\x00", [ 95] = "\x5f\x00",
++ [ 96] = "\x60\x00", [ 97] = "\x61\x00", [ 98] = "\x62\x00",
++ [ 99] = "\x63\x00", [ 100] = "\x64\x00", [ 101] = "\x65\x00",
++ [ 102] = "\x66\x00", [ 103] = "\x67\x00", [ 104] = "\x68\x00",
++ [ 105] = "\x69\x00", [ 106] = "\x6a\x00", [ 107] = "\x6b\x00",
++ [ 108] = "\x6c\x00", [ 109] = "\x6d\x00", [ 110] = "\x6e\x00",
++ [ 111] = "\x6f\x00", [ 112] = "\x70\x00", [ 113] = "\x71\x00",
++ [ 114] = "\x72\x00", [ 115] = "\x73\x00", [ 116] = "\x74\x00",
++ [ 117] = "\x75\x00", [ 118] = "\x76\x00", [ 119] = "\x77\x00",
++ [ 120] = "\x78\x00", [ 121] = "\x79\x00", [ 122] = "\x7a\x00",
++ [ 123] = "\x7b\x00", [ 124] = "\x7c\x00", [ 125] = "\x7d\x00",
++ [ 126] = "\x7e\x00", [ 127] = "\x7f\x00", [ 162] = "\x81\x91",
++ [ 163] = "\x81\x92", [ 165] = "\x5c\x00", [ 167] = "\x81\x98",
++ [ 168] = "\x81\x4e", [ 172] = "\x81\xca", [ 176] = "\x81\x8b",
++ [ 177] = "\x81\x7d", [ 180] = "\x81\x4c", [ 182] = "\x81\xf7",
++ [ 215] = "\x81\x7e", [ 247] = "\x81\x80"
++};
++
++static const char from_ucs4_greek[193][2] =
++{
++ /* start = 0x0391, end = 0x0451 */
++ [ 0] = "\x83\x9f", [ 1] = "\x83\xa0", [ 2] = "\x83\xa1",
++ [ 3] = "\x83\xa2", [ 4] = "\x83\xa3", [ 5] = "\x83\xa4",
++ [ 6] = "\x83\xa5", [ 7] = "\x83\xa6", [ 8] = "\x83\xa7",
++ [ 9] = "\x83\xa8", [ 10] = "\x83\xa9", [ 11] = "\x83\xaa",
++ [ 12] = "\x83\xab", [ 13] = "\x83\xac", [ 14] = "\x83\xad",
++ [ 15] = "\x83\xae", [ 16] = "\x83\xaf", [ 18] = "\x83\xb0",
++ [ 19] = "\x83\xb1", [ 20] = "\x83\xb2", [ 21] = "\x83\xb3",
++ [ 22] = "\x83\xb4", [ 23] = "\x83\xb5", [ 24] = "\x83\xb6",
++ [ 32] = "\x83\xbf", [ 33] = "\x83\xc0", [ 34] = "\x83\xc1",
++ [ 35] = "\x83\xc2", [ 36] = "\x83\xc3", [ 37] = "\x83\xc4",
++ [ 38] = "\x83\xc5", [ 39] = "\x83\xc6", [ 40] = "\x83\xc7",
++ [ 41] = "\x83\xc8", [ 42] = "\x83\xc9", [ 43] = "\x83\xca",
++ [ 44] = "\x83\xcb", [ 45] = "\x83\xcc", [ 46] = "\x83\xcd",
++ [ 47] = "\x83\xce", [ 48] = "\x83\xcf", [ 50] = "\x83\xd0",
++ [ 51] = "\x83\xd1", [ 52] = "\x83\xd2", [ 53] = "\x83\xd3",
++ [ 54] = "\x83\xd4", [ 55] = "\x83\xd5", [ 56] = "\x83\xd6",
++ [ 112] = "\x84\x46", [ 127] = "\x84\x40", [ 128] = "\x84\x41",
++ [ 129] = "\x84\x42", [ 130] = "\x84\x43", [ 131] = "\x84\x44",
++ [ 132] = "\x84\x45", [ 133] = "\x84\x47", [ 134] = "\x84\x48",
++ [ 135] = "\x84\x49", [ 136] = "\x84\x4a", [ 137] = "\x84\x4b",
++ [ 138] = "\x84\x4c", [ 139] = "\x84\x4d", [ 140] = "\x84\x4e",
++ [ 141] = "\x84\x4f", [ 142] = "\x84\x50", [ 143] = "\x84\x51",
++ [ 144] = "\x84\x52", [ 145] = "\x84\x53", [ 146] = "\x84\x54",
++ [ 147] = "\x84\x55", [ 148] = "\x84\x56", [ 149] = "\x84\x57",
++ [ 150] = "\x84\x58", [ 151] = "\x84\x59", [ 152] = "\x84\x5a",
++ [ 153] = "\x84\x5b", [ 154] = "\x84\x5c", [ 155] = "\x84\x5d",
++ [ 156] = "\x84\x5e", [ 157] = "\x84\x5f", [ 158] = "\x84\x60",
++ [ 159] = "\x84\x70", [ 160] = "\x84\x71", [ 161] = "\x84\x72",
++ [ 162] = "\x84\x73", [ 163] = "\x84\x74", [ 164] = "\x84\x75",
++ [ 165] = "\x84\x77", [ 166] = "\x84\x78", [ 167] = "\x84\x79",
++ [ 168] = "\x84\x7a", [ 169] = "\x84\x7b", [ 170] = "\x84\x7c",
++ [ 171] = "\x84\x7d", [ 172] = "\x84\x7e", [ 173] = "\x84\x80",
++ [ 174] = "\x84\x81", [ 175] = "\x84\x82", [ 176] = "\x84\x83",
++ [ 177] = "\x84\x84", [ 178] = "\x84\x85", [ 179] = "\x84\x86",
++ [ 180] = "\x84\x87", [ 181] = "\x84\x88", [ 182] = "\x84\x89",
++ [ 183] = "\x84\x8a", [ 184] = "\x84\x8b", [ 185] = "\x84\x8c",
++ [ 186] = "\x84\x8d", [ 187] = "\x84\x8e", [ 188] = "\x84\x8f",
++ [ 189] = "\x84\x90", [ 190] = "\x84\x91", [ 192] = "\x84\x76"
++};
++
++static const char from_ucs4_cjk[32657][2] =
++{
++ /* start = 0x2010, end = 0x9fa0 */
++ [ 0] = "\x81\x5d", [ 4] = "\x81\x5c", [ 5] = "\x81\x5c",
++ [ 6] = "\x81\x61", [ 8] = "\x81\x65", [ 9] = "\x81\x66",
++ [ 12] = "\x81\x67", [ 13] = "\x81\x68", [ 16] = "\x81\xf5",
++ [ 17] = "\x81\xf6", [ 21] = "\x81\x64", [ 22] = "\x81\x63",
++ [ 32] = "\x81\xf1", [ 34] = "\x81\x8c", [ 35] = "\x81\x8d",
++ [ 43] = "\x81\xa6", [ 46] = "\x7e\x00", [ 243] = "\x81\x8e",
++ [ 262] = "\x87\x82", [ 273] = "\x87\x84", [ 283] = "\x81\xf0",
++ [ 336] = "\x87\x54", [ 337] = "\x87\x55", [ 338] = "\x87\x56",
++ [ 339] = "\x87\x57", [ 340] = "\x87\x58", [ 341] = "\x87\x59",
++ [ 342] = "\x87\x5a", [ 343] = "\x87\x5b", [ 344] = "\x87\x5c",
++ [ 345] = "\x87\x5d", [ 352] = "\xfa\x40", [ 353] = "\xfa\x41",
++ [ 354] = "\xfa\x42", [ 355] = "\xfa\x43", [ 356] = "\xfa\x44",
++ [ 357] = "\xfa\x45", [ 358] = "\xfa\x46", [ 359] = "\xfa\x47",
++ [ 360] = "\xfa\x48", [ 361] = "\xfa\x49", [ 384] = "\x81\xa9",
++ [ 385] = "\x81\xaa", [ 386] = "\x81\xa8", [ 387] = "\x81\xab",
++ [ 450] = "\x81\xcb", [ 452] = "\x81\xcc", [ 496] = "\x81\xcd",
++ [ 498] = "\x81\xdd", [ 499] = "\x81\xce", [ 503] = "\x81\xde",
++ [ 504] = "\x81\xb8", [ 507] = "\x81\xb9", [ 513] = "\x87\x94",
++ [ 514] = "\x81\x7c", [ 522] = "\x81\xe3", [ 525] = "\x81\xe5",
++ [ 526] = "\x81\x87", [ 527] = "\x87\x98", [ 528] = "\x81\xda",
++ [ 533] = "\x81\x61", [ 535] = "\x81\xc8", [ 536] = "\x81\xc9",
++ [ 537] = "\x81\xbf", [ 538] = "\x81\xbe", [ 539] = "\x81\xe7",
++ [ 540] = "\x81\xe8", [ 542] = "\x87\x93", [ 548] = "\x81\x88",
++ [ 549] = "\x81\xe6", [ 557] = "\x81\xe4", [ 578] = "\x81\xe0",
++ [ 592] = "\x81\x82", [ 593] = "\x81\xdf", [ 598] = "\x81\x85",
++ [ 599] = "\x81\x86", [ 602] = "\x81\xe1", [ 603] = "\x81\xe2",
++ [ 626] = "\x81\xbc", [ 627] = "\x81\xbd", [ 630] = "\x81\xba",
++ [ 631] = "\x81\xbb", [ 661] = "\x81\xdb", [ 687] = "\x87\x99",
++ [ 770] = "\x81\xdc", [ 1104] = "\x87\x40", [ 1105] = "\x87\x41",
++ [ 1106] = "\x87\x42", [ 1107] = "\x87\x43", [ 1108] = "\x87\x44",
++ [ 1109] = "\x87\x45", [ 1110] = "\x87\x46", [ 1111] = "\x87\x47",
++ [ 1112] = "\x87\x48", [ 1113] = "\x87\x49", [ 1114] = "\x87\x4a",
++ [ 1115] = "\x87\x4b", [ 1116] = "\x87\x4c", [ 1117] = "\x87\x4d",
++ [ 1118] = "\x87\x4e", [ 1119] = "\x87\x4f", [ 1120] = "\x87\x50",
++ [ 1121] = "\x87\x51", [ 1122] = "\x87\x52", [ 1123] = "\x87\x53",
++ [ 1264] = "\x84\x9f", [ 1265] = "\x84\xaa", [ 1266] = "\x84\xa0",
++ [ 1267] = "\x84\xab", [ 1276] = "\x84\xa1", [ 1279] = "\x84\xac",
++ [ 1280] = "\x84\xa2", [ 1283] = "\x84\xad", [ 1284] = "\x84\xa4",
++ [ 1287] = "\x84\xaf", [ 1288] = "\x84\xa3", [ 1291] = "\x84\xae",
++ [ 1292] = "\x84\xa5", [ 1293] = "\x84\xba", [ 1296] = "\x84\xb5",
++ [ 1299] = "\x84\xb0", [ 1300] = "\x84\xa7", [ 1301] = "\x84\xbc",
++ [ 1304] = "\x84\xb7", [ 1307] = "\x84\xb2", [ 1308] = "\x84\xa6",
++ [ 1311] = "\x84\xb6", [ 1312] = "\x84\xbb", [ 1315] = "\x84\xb1",
++ [ 1316] = "\x84\xa8", [ 1319] = "\x84\xb8", [ 1320] = "\x84\xbd",
++ [ 1323] = "\x84\xb3", [ 1324] = "\x84\xa9", [ 1327] = "\x84\xb9",
++ [ 1330] = "\x84\xbe", [ 1339] = "\x84\xb4", [ 1424] = "\x81\xa1",
++ [ 1425] = "\x81\xa0", [ 1442] = "\x81\xa3", [ 1443] = "\x81\xa2",
++ [ 1452] = "\x81\xa5", [ 1453] = "\x81\xa4", [ 1462] = "\x81\x9f",
++ [ 1463] = "\x81\x9e", [ 1467] = "\x81\x9b", [ 1470] = "\x81\x9d",
++ [ 1471] = "\x81\x9c", [ 1503] = "\x81\xfc", [ 1525] = "\x81\x9a",
++ [ 1526] = "\x81\x99", [ 1584] = "\x81\x8a", [ 1586] = "\x81\x89",
++ [ 1626] = "\x81\xf4", [ 1629] = "\x81\xf3", [ 1631] = "\x81\xf2",
++ [ 4080] = "\x81\x40", [ 4081] = "\x81\x41", [ 4082] = "\x81\x42",
++ [ 4083] = "\x81\x56", [ 4085] = "\x81\x58", [ 4086] = "\x81\x59",
++ [ 4087] = "\x81\x5a", [ 4088] = "\x81\x71", [ 4089] = "\x81\x72",
++ [ 4090] = "\x81\x73", [ 4091] = "\x81\x74", [ 4092] = "\x81\x75",
++ [ 4093] = "\x81\x76", [ 4094] = "\x81\x77", [ 4095] = "\x81\x78",
++ [ 4096] = "\x81\x79", [ 4097] = "\x81\x7a", [ 4098] = "\x81\xa7",
++ [ 4099] = "\x81\xac", [ 4100] = "\x81\x6b", [ 4101] = "\x81\x6c",
++ [ 4108] = "\x81\x60", [ 4109] = "\x87\x80", [ 4111] = "\x87\x81",
++ [ 4145] = "\x82\x9f", [ 4146] = "\x82\xa0", [ 4147] = "\x82\xa1",
++ [ 4148] = "\x82\xa2", [ 4149] = "\x82\xa3", [ 4150] = "\x82\xa4",
++ [ 4151] = "\x82\xa5", [ 4152] = "\x82\xa6", [ 4153] = "\x82\xa7",
++ [ 4154] = "\x82\xa8", [ 4155] = "\x82\xa9", [ 4156] = "\x82\xaa",
++ [ 4157] = "\x82\xab", [ 4158] = "\x82\xac", [ 4159] = "\x82\xad",
++ [ 4160] = "\x82\xae", [ 4161] = "\x82\xaf", [ 4162] = "\x82\xb0",
++ [ 4163] = "\x82\xb1", [ 4164] = "\x82\xb2", [ 4165] = "\x82\xb3",
++ [ 4166] = "\x82\xb4", [ 4167] = "\x82\xb5", [ 4168] = "\x82\xb6",
++ [ 4169] = "\x82\xb7", [ 4170] = "\x82\xb8", [ 4171] = "\x82\xb9",
++ [ 4172] = "\x82\xba", [ 4173] = "\x82\xbb", [ 4174] = "\x82\xbc",
++ [ 4175] = "\x82\xbd", [ 4176] = "\x82\xbe", [ 4177] = "\x82\xbf",
++ [ 4178] = "\x82\xc0", [ 4179] = "\x82\xc1", [ 4180] = "\x82\xc2",
++ [ 4181] = "\x82\xc3", [ 4182] = "\x82\xc4", [ 4183] = "\x82\xc5",
++ [ 4184] = "\x82\xc6", [ 4185] = "\x82\xc7", [ 4186] = "\x82\xc8",
++ [ 4187] = "\x82\xc9", [ 4188] = "\x82\xca", [ 4189] = "\x82\xcb",
++ [ 4190] = "\x82\xcc", [ 4191] = "\x82\xcd", [ 4192] = "\x82\xce",
++ [ 4193] = "\x82\xcf", [ 4194] = "\x82\xd0", [ 4195] = "\x82\xd1",
++ [ 4196] = "\x82\xd2", [ 4197] = "\x82\xd3", [ 4198] = "\x82\xd4",
++ [ 4199] = "\x82\xd5", [ 4200] = "\x82\xd6", [ 4201] = "\x82\xd7",
++ [ 4202] = "\x82\xd8", [ 4203] = "\x82\xd9", [ 4204] = "\x82\xda",
++ [ 4205] = "\x82\xdb", [ 4206] = "\x82\xdc", [ 4207] = "\x82\xdd",
++ [ 4208] = "\x82\xde", [ 4209] = "\x82\xdf", [ 4210] = "\x82\xe0",
++ [ 4211] = "\x82\xe1", [ 4212] = "\x82\xe2", [ 4213] = "\x82\xe3",
++ [ 4214] = "\x82\xe4", [ 4215] = "\x82\xe5", [ 4216] = "\x82\xe6",
++ [ 4217] = "\x82\xe7", [ 4218] = "\x82\xe8", [ 4219] = "\x82\xe9",
++ [ 4220] = "\x82\xea", [ 4221] = "\x82\xeb", [ 4222] = "\x82\xec",
++ [ 4223] = "\x82\xed", [ 4224] = "\x82\xee", [ 4225] = "\x82\xef",
++ [ 4226] = "\x82\xf0", [ 4227] = "\x82\xf1", [ 4235] = "\x81\x4a",
++ [ 4236] = "\x81\x4b", [ 4237] = "\x81\x54", [ 4238] = "\x81\x55",
++ [ 4241] = "\x83\x40", [ 4242] = "\x83\x41", [ 4243] = "\x83\x42",
++ [ 4244] = "\x83\x43", [ 4245] = "\x83\x44", [ 4246] = "\x83\x45",
++ [ 4247] = "\x83\x46", [ 4248] = "\x83\x47", [ 4249] = "\x83\x48",
++ [ 4250] = "\x83\x49", [ 4251] = "\x83\x4a", [ 4252] = "\x83\x4b",
++ [ 4253] = "\x83\x4c", [ 4254] = "\x83\x4d", [ 4255] = "\x83\x4e",
++ [ 4256] = "\x83\x4f", [ 4257] = "\x83\x50", [ 4258] = "\x83\x51",
++ [ 4259] = "\x83\x52", [ 4260] = "\x83\x53", [ 4261] = "\x83\x54",
++ [ 4262] = "\x83\x55", [ 4263] = "\x83\x56", [ 4264] = "\x83\x57",
++ [ 4265] = "\x83\x58", [ 4266] = "\x83\x59", [ 4267] = "\x83\x5a",
++ [ 4268] = "\x83\x5b", [ 4269] = "\x83\x5c", [ 4270] = "\x83\x5d",
++ [ 4271] = "\x83\x5e", [ 4272] = "\x83\x5f", [ 4273] = "\x83\x60",
++ [ 4274] = "\x83\x61", [ 4275] = "\x83\x62", [ 4276] = "\x83\x63",
++ [ 4277] = "\x83\x64", [ 4278] = "\x83\x65", [ 4279] = "\x83\x66",
++ [ 4280] = "\x83\x67", [ 4281] = "\x83\x68", [ 4282] = "\x83\x69",
++ [ 4283] = "\x83\x6a", [ 4284] = "\x83\x6b", [ 4285] = "\x83\x6c",
++ [ 4286] = "\x83\x6d", [ 4287] = "\x83\x6e", [ 4288] = "\x83\x6f",
++ [ 4289] = "\x83\x70", [ 4290] = "\x83\x71", [ 4291] = "\x83\x72",
++ [ 4292] = "\x83\x73", [ 4293] = "\x83\x74", [ 4294] = "\x83\x75",
++ [ 4295] = "\x83\x76", [ 4296] = "\x83\x77", [ 4297] = "\x83\x78",
++ [ 4298] = "\x83\x79", [ 4299] = "\x83\x7a", [ 4300] = "\x83\x7b",
++ [ 4301] = "\x83\x7c", [ 4302] = "\x83\x7d", [ 4303] = "\x83\x7e",
++ [ 4304] = "\x83\x80", [ 4305] = "\x83\x81", [ 4306] = "\x83\x82",
++ [ 4307] = "\x83\x83", [ 4308] = "\x83\x84", [ 4309] = "\x83\x85",
++ [ 4310] = "\x83\x86", [ 4311] = "\x83\x87", [ 4312] = "\x83\x88",
++ [ 4313] = "\x83\x89", [ 4314] = "\x83\x8a", [ 4315] = "\x83\x8b",
++ [ 4316] = "\x83\x8c", [ 4317] = "\x83\x8d", [ 4318] = "\x83\x8e",
++ [ 4319] = "\x83\x8f", [ 4320] = "\x83\x90", [ 4321] = "\x83\x91",
++ [ 4322] = "\x83\x92", [ 4323] = "\x83\x93", [ 4324] = "\x83\x94",
++ [ 4325] = "\x83\x95", [ 4326] = "\x83\x96", [ 4331] = "\x81\x45",
++ [ 4332] = "\x81\x5b", [ 4333] = "\x81\x52", [ 4334] = "\x81\x53",
++ [ 4641] = "\x87\x8a", [ 4642] = "\x87\x8b", [ 4649] = "\x87\x8c",
++ [ 4756] = "\x87\x85", [ 4757] = "\x87\x86", [ 4758] = "\x87\x87",
++ [ 4759] = "\x87\x88", [ 4760] = "\x87\x89", [ 4851] = "\x87\x65",
++ [ 4861] = "\x87\x69", [ 4868] = "\x87\x60", [ 4872] = "\x87\x63",
++ [ 4882] = "\x87\x61", [ 4883] = "\x87\x6b", [ 4886] = "\x87\x6a",
++ [ 4887] = "\x87\x64", [ 4891] = "\x87\x6c", [ 4902] = "\x87\x66",
++ [ 4907] = "\x87\x6e", [ 4921] = "\x87\x5f", [ 4922] = "\x87\x6d",
++ [ 4925] = "\x87\x62", [ 4929] = "\x87\x67", [ 4935] = "\x87\x68",
++ [ 4971] = "\x87\x7e", [ 4972] = "\x87\x8f", [ 4973] = "\x87\x8e",
++ [ 4974] = "\x87\x8d", [ 4990] = "\x87\x72", [ 4991] = "\x87\x73",
++ [ 5004] = "\x87\x6f", [ 5005] = "\x87\x70", [ 5006] = "\x87\x71",
++ [ 5009] = "\x87\x75", [ 5044] = "\x87\x74", [ 5053] = "\x87\x83",
++ [11760] = "\x88\xea", [11761] = "\x92\x9a", [11763] = "\x8e\xb5",
++ [11767] = "\x96\x9c", [11768] = "\x8f\xe4", [11769] = "\x8e\x4f",
++ [11770] = "\x8f\xe3", [11771] = "\x89\xba", [11773] = "\x95\x73",
++ [11774] = "\x97\x5e", [11776] = "\x98\xa0", [11777] = "\x89\x4e",
++ [11780] = "\x8a\x8e", [11781] = "\x98\xa1", [11782] = "\x90\xa2",
++ [11783] = "\x99\xc0", [11784] = "\x8b\x75", [11785] = "\x95\xb8",
++ [11790] = "\x8f\xe5", [11793] = "\x97\xbc", [11798] = "\x95\xc0",
++ [11800] = "\xfa\x68", [11802] = "\x98\xa2", [11805] = "\x92\x86",
++ [11809] = "\x98\xa3", [11810] = "\x8b\xf8", [11814] = "\x98\xa4",
++ [11816] = "\x8a\xdb", [11817] = "\x92\x4f", [11819] = "\x8e\xe5",
++ [11820] = "\x98\xa5", [11823] = "\x98\xa6", [11826] = "\x98\xa7",
++ [11827] = "\x94\x54", [11829] = "\x8b\x76", [11835] = "\x94\x56",
++ [11837] = "\x93\xe1", [11838] = "\x8c\xc1", [11839] = "\x96\x52",
++ [11845] = "\xe5\x68", [11846] = "\x98\xa8", [11847] = "\x8f\xe6",
++ [11848] = "\x98\xa9", [11849] = "\x89\xb3", [11853] = "\x8b\xe3",
++ [11854] = "\x8c\xee", [11855] = "\x96\xe7", [11858] = "\x9b\xa4",
++ [11873] = "\x97\x90", [11875] = "\x93\xfb", [11886] = "\x8a\xa3",
++ [11888] = "\x8b\x54", [11890] = "\x98\xaa", [11893] = "\x98\xab",
++ [11894] = "\x97\xb9", [11896] = "\x97\x5c", [11897] = "\x91\x88",
++ [11898] = "\x98\xad", [11899] = "\x8e\x96", [11900] = "\x93\xf1",
++ [11902] = "\x98\xb0", [11905] = "\x89\x5d", [11906] = "\x8c\xdd",
++ [11908] = "\x8c\xdc", [11909] = "\x88\xe4", [11912] = "\x98\x6a",
++ [11913] = "\x98\x69", [11915] = "\x8d\xb1", [11916] = "\x88\x9f",
++ [11918] = "\x98\xb1", [11919] = "\x98\xb2", [11920] = "\x98\xb3",
++ [11921] = "\x96\x53", [11922] = "\x98\xb4", [11924] = "\x8c\xf0",
++ [11925] = "\x88\xe5", [11926] = "\x96\x92", [11928] = "\x8b\x9c",
++ [11931] = "\x8b\x9d", [11932] = "\x8b\x9e", [11933] = "\x92\xe0",
++ [11934] = "\x97\xba", [11936] = "\x98\xb5", [11939] = "\x98\xb6",
++ [11942] = "\x98\xb7", [11946] = "\x90\x6c", [11952] = "\x8f\x59",
++ [11953] = "\x90\x6d", [11954] = "\x98\xbc", [11956] = "\x98\xba",
++ [11958] = "\x98\xbb", [11959] = "\x8b\x77", [11962] = "\x8d\xa1",
++ [11963] = "\x89\xee", [11965] = "\x98\xb9", [11966] = "\x98\xb8",
++ [11967] = "\x95\xa7", [11972] = "\x8e\x65", [11973] = "\x8e\x64",
++ [11974] = "\x91\xbc", [11975] = "\x98\xbd", [11976] = "\x95\x74",
++ [11977] = "\x90\xe5", [11981] = "\x81\x57", [11982] = "\x98\xbe",
++ [11983] = "\x98\xc0", [11985] = "\xfa\x69", [11987] = "\x91\xe3",
++ [11988] = "\x97\xdf", [11989] = "\x88\xc8", [11997] = "\x98\xbf",
++ [11998] = "\x89\xbc", [12000] = "\x8b\xc2", [12002] = "\x92\x87",
++ [12006] = "\x8c\x8f", [12007] = "\x98\xc1", [12011] = "\x94\x43",
++ [12012] = "\xfa\x6a", [12016] = "\xfa\x6b", [12017] = "\x8a\xe9",
++ [12019] = "\xfa\x6c", [12025] = "\x98\xc2", [12026] = "\x88\xc9",
++ [12029] = "\x8c\xde", [12030] = "\x8a\xea", [12031] = "\x95\x9a",
++ [12032] = "\x94\xb0", [12033] = "\x8b\x78", [12042] = "\x89\xef",
++ [12044] = "\x98\xe5", [12045] = "\x93\x60", [12063] = "\x94\x8c",
++ [12064] = "\x98\xc4", [12068] = "\x94\xba", [12070] = "\x97\xe0",
++ [12072] = "\x90\x4c", [12073] = "\xfa\x6d", [12074] = "\x8e\x66",
++ [12076] = "\x8e\x97", [12077] = "\x89\xbe", [12083] = "\x92\xcf",
++ [12086] = "\x92\x41", [12087] = "\x98\xc8", [12093] = "\x88\xca",
++ [12094] = "\x92\xe1", [12095] = "\x8f\x5a", [12096] = "\x8d\xb2",
++ [12097] = "\x97\x43", [12099] = "\x91\xcc", [12101] = "\x89\xbd",
++ [12102] = "\xfa\x6e", [12103] = "\x98\xc7", [12105] = "\x97\x5d",
++ [12106] = "\x98\xc3", [12107] = "\x98\xc5", [12108] = "\x8d\xec",
++ [12109] = "\x98\xc6", [12110] = "\x9b\x43", [12121] = "\x98\xce",
++ [12127] = "\x98\xd1", [12128] = "\x98\xcf", [12131] = "\x89\xc0",
++ [12133] = "\x95\xb9", [12134] = "\x98\xc9", [12139] = "\x98\xcd",
++ [12140] = "\x8c\xf1", [12143] = "\x8e\x67", [12147] = "\x8a\xa4",
++ [12150] = "\x98\xd2", [12152] = "\x98\xca", [12154] = "\xfa\x70",
++ [12155] = "\x97\xe1", [12157] = "\x8e\x98", [12159] = "\x98\xcb",
++ [12161] = "\x98\xd0", [12162] = "\xfa\x6f", [12164] = "\xfa\x72",
++ [12166] = "\x98\xd3", [12168] = "\x98\xcc", [12170] = "\xfa\x71",
++ [12171] = "\x8b\x9f", [12173] = "\x88\xcb", [12176] = "\x8b\xa0",
++ [12177] = "\x89\xbf", [12187] = "\x9b\x44", [12189] = "\x96\x99",
++ [12190] = "\x95\x8e", [12191] = "\x8c\xf2", [12197] = "\x90\x4e",
++ [12198] = "\x97\xb5", [12207] = "\x95\xd6", [12210] = "\x8c\x57",
++ [12211] = "\x91\xa3", [12212] = "\x89\xe2", [12217] = "\xfa\x61",
++ [12218] = "\x8f\x72", [12221] = "\xfa\x73", [12222] = "\x98\xd7",
++ [12224] = "\x98\xdc", [12225] = "\x98\xda", [12228] = "\x98\xd5",
++ [12231] = "\x91\xad", [12232] = "\x98\xd8", [12234] = "\x98\xdb",
++ [12235] = "\x98\xd9", [12237] = "\x95\xdb", [12239] = "\x98\xd6",
++ [12241] = "\x90\x4d", [12243] = "\x96\x93", [12244] = "\x98\xdd",
++ [12245] = "\x98\xde", [12254] = "\x8f\x43", [12255] = "\x98\xeb",
++ [12259] = "\x94\x6f", [12261] = "\x95\x55", [12262] = "\x98\xe6",
++ [12264] = "\x95\xee", [12266] = "\x89\xb4", [12270] = "\x98\xea",
++ [12271] = "\xfa\x76", [12277] = "\x98\xe4", [12278] = "\x98\xed",
++ [12281] = "\x91\x71", [12283] = "\x8c\xc2", [12285] = "\x94\x7b",
++ [12287] = "\xe0\xc5", [12289] = "\x98\xec", [12290] = "\x93\x7c",
++ [12292] = "\x98\xe1", [12294] = "\x8c\xf4", [12297] = "\x8c\xf3",
++ [12298] = "\x98\xdf", [12302] = "\xfa\x77", [12303] = "\x8e\xd8",
++ [12305] = "\x98\xe7", [12306] = "\xfa\x75", [12307] = "\x95\xed",
++ [12308] = "\x92\x6c", [12309] = "\x98\xe3", [12310] = "\x8c\x91",
++ [12312] = "\x98\xe0", [12313] = "\x98\xe8", [12314] = "\x98\xe2",
++ [12315] = "\x97\xcf", [12316] = "\x98\xe9", [12317] = "\x98\x60",
++ [12326] = "\x8b\xe4", [12329] = "\x8c\x90", [12336] = "\xfa\x74",
++ [12338] = "\xfa\x7a", [12339] = "\x98\xee", [12342] = "\xfa\x78",
++ [12343] = "\x98\xef", [12344] = "\x98\xf3", [12345] = "\x88\xcc",
++ [12351] = "\x95\xce", [12352] = "\x98\xf2", [12357] = "\x98\xf1",
++ [12358] = "\x98\xf5", [12362] = "\x98\xf4", [12364] = "\x92\xe2",
++ [12373] = "\x8c\x92", [12380] = "\x98\xf6", [12384] = "\xfa\x79",
++ [12386] = "\x8e\xc3", [12388] = "\x91\xa4", [12389] = "\x92\xe3",
++ [12390] = "\x8b\xf4", [12392] = "\x98\xf7", [12397] = "\x8b\x55",
++ [12400] = "\x98\xf8", [12405] = "\x98\xfa", [12413] = "\x96\x54",
++ [12417] = "\x8c\x86", [12420] = "\xfa\x7b", [12424] = "\x8e\x50",
++ [12425] = "\x94\xf5", [12426] = "\x98\xf9", [12444] = "\x8d\xc3",
++ [12445] = "\x97\x62", [12450] = "\x98\xfc", [12451] = "\x99\x42",
++ [12452] = "\x98\xfb", [12453] = "\x8d\xc2", [12455] = "\x8f\x9d",
++ [12462] = "\x8c\x58", [12466] = "\x99\x43", [12469] = "\x8b\xcd",
++ [12473] = "\x99\x40", [12474] = "\x99\x41", [12477] = "\x93\xad",
++ [12479] = "\x91\x9c", [12481] = "\x8b\xa1", [12485] = "\x96\x6c",
++ [12486] = "\x99\x44", [12488] = "\xfa\x7d", [12490] = "\x97\xbb",
++ [12494] = "\x99\x45", [12499] = "\x99\x48", [12501] = "\x99\x46",
++ [12503] = "\x91\x6d", [12509] = "\x99\x47", [12510] = "\x99\x49",
++ [12516] = "\xfa\x7c", [12517] = "\x99\x4b", [12521] = "\x99\x4a",
++ [12523] = "\x95\xc6", [12528] = "\x8b\x56", [12529] = "\x99\x4d",
++ [12530] = "\x99\x4e", [12532] = "\x89\xad", [12537] = "\x99\x4c",
++ [12546] = "\x8e\xf2", [12548] = "\x99\x51", [12549] = "\x99\x50",
++ [12550] = "\x99\x4f", [12552] = "\x98\xd4", [12554] = "\x99\x52",
++ [12559] = "\x8f\x9e", [12561] = "\x99\x53", [12570] = "\x97\x44",
++ [12578] = "\x96\xd7", [12583] = "\x99\x55", [12586] = "\x99\x54",
++ [12587] = "\x99\x57", [12588] = "\x99\x56", [12591] = "\x99\x58",
++ [12592] = "\x99\x59", [12593] = "\x88\xf2", [12595] = "\x8c\xb3",
++ [12596] = "\x8c\x5a", [12597] = "\x8f\x5b", [12598] = "\x92\x9b",
++ [12599] = "\x8b\xa2", [12600] = "\x90\xe6", [12601] = "\x8c\xf5",
++ [12602] = "\xfa\x7e", [12603] = "\x8d\x8e", [12604] = "\x99\x5b",
++ [12605] = "\x96\xc6", [12606] = "\x93\x65", [12608] = "\x8e\x99",
++ [12610] = "\x99\x5a", [12612] = "\x99\x5c", [12618] = "\x93\x7d",
++ [12620] = "\x8a\x95", [12626] = "\x99\x5d", [12628] = "\xfa\x80",
++ [12629] = "\x93\xfc", [12632] = "\x91\x53", [12633] = "\x99\x5f",
++ [12634] = "\x99\x60", [12635] = "\x94\xaa", [12636] = "\x8c\xf6",
++ [12637] = "\x98\x5a", [12638] = "\x99\x61", [12641] = "\x8b\xa4",
++ [12645] = "\x95\xba", [12646] = "\x91\xb4", [12647] = "\x8b\xef",
++ [12648] = "\x93\x54", [12652] = "\x8c\x93", [12656] = "\x99\x62",
++ [12658] = "\x99\x63", [12661] = "\x93\xe0", [12662] = "\x89\x7e",
++ [12665] = "\x99\x66", [12666] = "\x8d\xfb", [12668] = "\x99\x65",
++ [12669] = "\x8d\xc4", [12671] = "\x99\x67", [12672] = "\xe3\xec",
++ [12673] = "\x99\x68", [12674] = "\x96\x60", [12675] = "\x99\x69",
++ [12677] = "\x99\x6a", [12678] = "\x99\x6b", [12679] = "\x8f\xe7",
++ [12681] = "\x8e\xca", [12685] = "\xfa\x81", [12688] = "\x8a\xa5",
++ [12690] = "\x99\x6e", [12692] = "\x99\x6c", [12693] = "\x96\xbb",
++ [12694] = "\x99\x6d", [12696] = "\x95\x79", [12697] = "\x99\x6f",
++ [12698] = "\x99\x70", [12699] = "\x99\x71", [12700] = "\x93\x7e",
++ [12704] = "\x99\x75", [12705] = "\x99\x73", [12706] = "\x99\x74",
++ [12707] = "\x99\x72", [12708] = "\x8d\xe1", [12709] = "\x99\x76",
++ [12710] = "\x96\xe8", [12711] = "\x97\xe2", [12717] = "\x99\x77",
++ [12718] = "\xfa\x82", [12724] = "\x90\xa6", [12725] = "\x99\x78",
++ [12726] = "\x8f\x79", [12729] = "\x99\x79", [12731] = "\x92\x9c",
++ [12732] = "\x97\xbd", [12733] = "\x93\x80", [12742] = "\x99\xc3",
++ [12747] = "\x99\x7a", [12748] = "\xea\xa3", [12749] = "\x8b\xc3",
++ [12752] = "\x99\x7b", [12753] = "\x96\x7d", [12758] = "\x8f\x88",
++ [12759] = "\x91\xfa", [12761] = "\x99\x7d", [12762] = "\x93\xe2",
++ [12764] = "\xfa\x83", [12765] = "\x99\x7e", [12768] = "\x99\x80",
++ [12769] = "\x8a\x4d", [12773] = "\x99\x81", [12774] = "\x8b\xa5",
++ [12776] = "\x93\xca", [12777] = "\x89\x9a", [12778] = "\x8f\x6f",
++ [12781] = "\x94\x9f", [12782] = "\x99\x82", [12784] = "\x93\x81",
++ [12787] = "\x90\x6e", [12788] = "\x99\x83", [12790] = "\x95\xaa",
++ [12791] = "\x90\xd8", [12792] = "\x8a\xa0", [12794] = "\x8a\xa7",
++ [12795] = "\x99\x84", [12798] = "\x99\x86", [12801] = "\x8c\x59",
++ [12804] = "\x99\x85", [12805] = "\xfa\x84", [12807] = "\x97\xf1",
++ [12813] = "\x8f\x89", [12820] = "\x94\xbb", [12821] = "\x95\xca",
++ [12823] = "\x99\x87", [12825] = "\x97\x98", [12826] = "\x99\x88",
++ [12830] = "\x99\x89", [12832] = "\x93\x9e", [12835] = "\x99\x8a",
++ [12838] = "\x90\xa7", [12839] = "\x8d\xfc", [12840] = "\x8c\x94",
++ [12841] = "\x99\x8b", [12842] = "\x8e\x68", [12843] = "\x8d\x8f",
++ [12851] = "\x92\xe4", [12852] = "\x99\x8d", [12855] = "\x91\xa5",
++ [12858] = "\x8d\xed", [12859] = "\x99\x8e", [12860] = "\x99\x8f",
++ [12861] = "\x91\x4f", [12863] = "\x99\x8c", [12868] = "\x99\x91",
++ [12870] = "\x96\x55", [12875] = "\x8d\x84", [12878] = "\x99\x90",
++ [12883] = "\x8c\x95", [12884] = "\x8d\xdc", [12885] = "\x94\x8d",
++ [12889] = "\x99\x94", [12890] = "\x99\x92", [12895] = "\x95\x9b",
++ [12896] = "\x8f\xe8", [12897] = "\x99\x9b", [12898] = "\x8a\x84",
++ [12899] = "\x99\x95", [12900] = "\x99\x93", [12901] = "\x91\x6e",
++ [12909] = "\x99\x97", [12911] = "\x99\x96", [12915] = "\x8a\x63",
++ [12919] = "\x8c\x80", [12920] = "\x99\x9c", [12921] = "\x97\xab",
++ [12925] = "\x99\x98", [12929] = "\x99\x9d", [12930] = "\x99\x9a",
++ [12932] = "\x99\x99", [12939] = "\x97\xcd", [12940] = "\xfa\x85",
++ [12943] = "\x8c\xf7", [12944] = "\x89\xc1", [12947] = "\x97\xf2",
++ [12950] = "\xfa\x86", [12953] = "\x8f\x95", [12954] = "\x93\x77",
++ [12955] = "\x8d\x85", [12956] = "\x99\xa0", [12957] = "\x99\xa1",
++ [12959] = "\xfb\x77", [12961] = "\x97\xe3", [12964] = "\x98\x4a",
++ [12965] = "\x99\xa3", [12969] = "\x8c\xf8", [12972] = "\x99\xa2",
++ [12974] = "\x8a\x4e", [12976] = "\xfa\x87", [12977] = "\x99\xa4",
++ [12979] = "\x96\x75", [12981] = "\x92\xba", [12983] = "\x97\x45",
++ [12985] = "\x95\xd7", [12989] = "\x99\xa5", [12994] = "\xe8\xd3",
++ [12997] = "\x93\xae", [12999] = "\x99\xa6", [13000] = "\x8a\xa8",
++ [13001] = "\x96\xb1", [13003] = "\xfa\x88", [13005] = "\x8f\x9f",
++ [13006] = "\x99\xa7", [13007] = "\x95\xe5", [13008] = "\x99\xab",
++ [13010] = "\x90\xa8", [13011] = "\x99\xa8", [13012] = "\x8b\xce",
++ [13014] = "\x99\xa9", [13015] = "\x8a\xa9", [13026] = "\x8c\x4d",
++ [13027] = "\x99\xac", [13029] = "\x99\xad", [13032] = "\x99\xae",
++ [13033] = "\x99\xaf", [13034] = "\x8e\xd9", [13038] = "\x8c\xf9",
++ [13039] = "\x96\xdc", [13040] = "\xfa\x89", [13041] = "\x96\xe6",
++ [13042] = "\x93\xf5", [13045] = "\x95\xef", [13046] = "\x99\xb0",
++ [13047] = "\xfa\x8a", [13048] = "\x99\xb1", [13053] = "\x99\xb3",
++ [13055] = "\x99\xb5", [13056] = "\x99\xb4", [13061] = "\x99\xb6",
++ [13062] = "\x89\xbb", [13063] = "\x96\x6b", [13065] = "\x8d\xfa",
++ [13066] = "\x99\xb7", [13069] = "\x91\x78", [13072] = "\x8f\xa0",
++ [13073] = "\x8b\xa7", [13075] = "\x99\xb8", [13076] = "\xfa\x8b",
++ [13082] = "\x94\xd9", [13087] = "\x99\xb9", [13089] = "\x99\xba",
++ [13091] = "\x99\xbb", [13096] = "\x99\xbc", [13097] = "\x95\x43",
++ [13098] = "\x8b\xe6", [13099] = "\x88\xe3", [13103] = "\x93\xbd",
++ [13104] = "\x99\xbd", [13105] = "\x8f\x5c", [13107] = "\x90\xe7",
++ [13109] = "\x99\xbf", [13110] = "\x99\xbe", [13111] = "\x8f\xa1",
++ [13112] = "\x8c\xdf", [13113] = "\x99\xc1", [13114] = "\x94\xbc",
++ [13117] = "\x99\xc2", [13121] = "\x94\xda", [13122] = "\x91\xb2",
++ [13123] = "\x91\xec", [13124] = "\x8b\xa6", [13127] = "\x93\xec",
++ [13128] = "\x92\x50", [13130] = "\x94\x8e", [13132] = "\x96\x6d",
++ [13134] = "\x99\xc4", [13136] = "\x90\xe8", [13142] = "\x8c\x54",
++ [13145] = "\x99\xc5", [13150] = "\x99\xc6", [13151] = "\x89\x4b",
++ [13152] = "\x88\xf3", [13153] = "\x8a\xeb", [13154] = "\xfa\x8c",
++ [13155] = "\x91\xa6", [13156] = "\x8b\x70", [13157] = "\x97\x91",
++ [13159] = "\x99\xc9", [13160] = "\x89\xb5", [13163] = "\x99\xc8",
++ [13167] = "\x8b\xa8", [13170] = "\x99\xca", [13172] = "\x96\xef",
++ [13187] = "\xfa\x8d", [13190] = "\x99\xcb", [13192] = "\x97\xd0",
++ [13194] = "\x8c\xfa", [13199] = "\x8c\xb4", [13200] = "\x99\xcc",
++ [13205] = "\x99\xce", [13206] = "\x99\xcd", [13208] = "\x90\x7e",
++ [13209] = "\x89\x58", [13213] = "\x89\x7d", [13214] = "\x99\xcf",
++ [13216] = "\x99\xd0", [13218] = "\xfa\x8e", [13219] = "\x8c\xb5",
++ [13222] = "\x99\xd1", [13227] = "\x8b\x8e", [13234] = "\x8e\x51",
++ [13235] = "\x99\xd2", [13240] = "\x96\x94", [13241] = "\x8d\xb3",
++ [13242] = "\x8b\x79", [13243] = "\x97\x46", [13244] = "\x91\x6f",
++ [13245] = "\x94\xbd", [13246] = "\x8e\xfb", [13252] = "\x8f\x66",
++ [13254] = "\x8e\xe6", [13255] = "\x8e\xf3", [13257] = "\x8f\x96",
++ [13259] = "\x94\xbe", [13261] = "\xfa\x8f", [13263] = "\x99\xd5",
++ [13265] = "\x89\x62", [13266] = "\x91\x70", [13267] = "\x8c\xfb",
++ [13268] = "\x8c\xc3", [13269] = "\x8b\xe5", [13272] = "\x99\xd9",
++ [13273] = "\x92\x40", [13274] = "\x91\xfc", [13275] = "\x8b\xa9",
++ [13276] = "\x8f\xa2", [13277] = "\x99\xda", [13278] = "\x99\xd8",
++ [13279] = "\x89\xc2", [13280] = "\x91\xe4", [13281] = "\x8e\xb6",
++ [13282] = "\x8e\x6a", [13283] = "\x89\x45", [13286] = "\x8a\x90",
++ [13287] = "\x8d\x86", [13288] = "\x8e\x69", [13290] = "\x99\xdb",
++ [13297] = "\x99\xdc", [13299] = "\x8b\x68", [13300] = "\x8a\x65",
++ [13304] = "\x8d\x87", [13305] = "\x8b\x67", [13306] = "\x92\xdd",
++ [13307] = "\x89\x44", [13308] = "\x93\xaf", [13309] = "\x96\xbc",
++ [13310] = "\x8d\x40", [13311] = "\x97\x99", [13312] = "\x93\x66",
++ [13313] = "\x8c\xfc", [13323] = "\x8c\x4e", [13325] = "\x99\xe5",
++ [13327] = "\x8b\xe1", [13328] = "\x96\x69", [13334] = "\x94\xdb",
++ [13337] = "\x99\xe4", [13339] = "\x8a\xdc", [13340] = "\x99\xdf",
++ [13341] = "\x99\xe0", [13342] = "\x99\xe2", [13350] = "\x99\xe3",
++ [13352] = "\x8b\x7a", [13353] = "\x90\x81", [13355] = "\x95\xab",
++ [13356] = "\x99\xe1", [13357] = "\x99\xdd", [13358] = "\x8c\xe1",
++ [13360] = "\x99\xde", [13362] = "\x98\x43", [13366] = "\x95\xf0",
++ [13368] = "\x92\xe6", [13369] = "\x8c\xe0", [13370] = "\x8d\x90",
++ [13374] = "\x99\xe6", [13377] = "\x93\xdb", [13391] = "\x99\xea",
++ [13400] = "\x8e\xfc", [13402] = "\x8e\xf4", [13408] = "\x99\xed",
++ [13409] = "\x99\xeb", [13411] = "\x96\xa1", [13413] = "\x99\xe8",
++ [13414] = "\x99\xf1", [13415] = "\x99\xec", [13419] = "\x99\xef",
++ [13420] = "\x8c\xc4", [13421] = "\x96\xbd", [13424] = "\x99\xf0",
++ [13428] = "\x99\xf2", [13430] = "\x99\xf4", [13434] = "\xfa\x92",
++ [13435] = "\x8d\xee", [13436] = "\x98\x61", [13438] = "\x99\xe9",
++ [13439] = "\x99\xe7", [13440] = "\x99\xf3", [13442] = "\x99\xee",
++ [13452] = "\xfa\x91", [13458] = "\x99\xf6", [13460] = "\x9a\x42",
++ [13461] = "\x99\xf8", [13464] = "\x99\xfc", [13465] = "\xfa\x93",
++ [13467] = "\x9a\x40", [13468] = "\x99\xf9", [13471] = "\x9a\x5d",
++ [13474] = "\x8d\xe7", [13475] = "\x8a\x50", [13480] = "\x99\xf7",
++ [13484] = "\x9a\x44", [13485] = "\x88\xf4", [13486] = "\x9a\x43",
++ [13488] = "\x88\xa3", [13489] = "\x95\x69", [13490] = "\x9a\x41",
++ [13492] = "\x99\xfa", [13495] = "\x99\xf5", [13496] = "\x99\xfb",
++ [13497] = "\x8d\xc6", [13512] = "\x9a\x45", [13521] = "\x88\xf5",
++ [13522] = "\x9a\x4e", [13525] = "\x9a\x46", [13526] = "\x9a\x47",
++ [13528] = "\x8f\xa3", [13529] = "\x96\x89", [13533] = "\x9a\x4c",
++ [13534] = "\x9a\x4b", [13538] = "\x93\x4e", [13546] = "\x9a\x4d",
++ [13549] = "\x9a\x4a", [13551] = "\xfa\x94", [13556] = "\x89\x53",
++ [13558] = "\x8d\xb4", [13559] = "\x90\x4f", [13567] = "\x9a\x48",
++ [13568] = "\x93\x82", [13572] = "\x9a\x49", [13574] = "\x88\xa0",
++ [13598] = "\x9a\x53", [13599] = "\x97\x42", [13601] = "\x8f\xa5",
++ [13603] = "\x9a\x59", [13608] = "\x9a\x58", [13609] = "\x9a\x4f",
++ [13614] = "\x91\xc1", [13616] = "\x9a\x50", [13620] = "\x91\xed",
++ [13621] = "\x9a\x55", [13622] = "\x8f\xa4", [13628] = "\x9a\x52",
++ [13631] = "\x96\xe2", [13635] = "\x8c\x5b", [13638] = "\x9a\x56",
++ [13639] = "\x9a\x57", [13644] = "\x9a\x54", [13645] = "\x9a\x5a",
++ [13651] = "\x9a\x51", [13675] = "\x9a\x60", [13676] = "\x9a\x65",
++ [13678] = "\x9a\x61", [13680] = "\x9a\x5c", [13683] = "\x9a\x66",
++ [13684] = "\x91\x50", [13686] = "\xfa\x95", [13687] = "\x9a\x68",
++ [13689] = "\x8d\x41", [13690] = "\x9a\x5e", [13691] = "\x92\x9d",
++ [13704] = "\x9a\x62", [13705] = "\x9a\x5b", [13706] = "\x8a\xab",
++ [13708] = "\x8a\xec", [13709] = "\x8a\x85", [13710] = "\x9a\x63",
++ [13711] = "\x9a\x5f", [13719] = "\x8c\x96", [13720] = "\x9a\x69",
++ [13721] = "\x9a\x67", [13722] = "\x91\x72", [13723] = "\x8b\x69",
++ [13724] = "\x8b\xaa", [13726] = "\x9a\x64", [13728] = "\x8b\xf2",
++ [13734] = "\x89\x63", [13748] = "\x9a\x6d", [13749] = "\x9a\x6b",
++ [13751] = "\x9a\xa5", [13764] = "\x9a\x70", [13770] = "\x9a\x6a",
++ [13772] = "\x9a\x6e", [13775] = "\x9a\x6c", [13779] = "\x8e\x6b",
++ [13780] = "\x9a\x6f", [13799] = "\x9a\x72", [13801] = "\x9a\x77",
++ [13805] = "\x9a\x75", [13806] = "\x9a\x74", [13814] = "\x92\x51",
++ [13817] = "\x89\xc3", [13828] = "\x9a\x71", [13830] = "\x9a\x73",
++ [13831] = "\x8f\xa6", [13832] = "\x89\x52", [13835] = "\x9a\x76",
++ [13849] = "\x89\xdc", [13855] = "\x9a\x82", [13857] = "\x8f\xfa",
++ [13858] = "\x9a\x7d", [13860] = "\x9a\x7b", [13862] = "\x9a\x7c",
++ [13864] = "\x9a\x7e", [13874] = "\x89\x5c", [13884] = "\x91\x58",
++ [13886] = "\x9a\x78", [13888] = "\x9a\x79", [13899] = "\x8a\x9a",
++ [13908] = "\x9a\x81", [13912] = "\x8a\xed", [13914] = "\x9a\x84",
++ [13915] = "\x9a\x80", [13916] = "\x9a\x83", [13924] = "\x95\xac",
++ [13928] = "\x93\xd3", [13930] = "\x94\xb6", [13936] = "\x9a\x86",
++ [13942] = "\x9a\x85", [13943] = "\x8a\x64", [13946] = "\x9a\x87",
++ [13951] = "\x9a\x8a", [13956] = "\x9a\x89", [13968] = "\x9a\x88",
++ [13970] = "\x94\x58", [13973] = "\x9a\x8b", [13982] = "\x9a\x8c",
++ [13988] = "\x9a\x8e", [13990] = "\x9a\x8d", [13996] = "\x9a\x90",
++ [14000] = "\x9a\x93", [14001] = "\x9a\x91", [14002] = "\x9a\x8f",
++ [14003] = "\x9a\x92", [14008] = "\x9a\x94", [14014] = "\x9a\x95",
++ [14017] = "\x9a\x96", [14019] = "\x9a\x97", [14023] = "\x9a\x98",
++ [14024] = "\x99\x64", [14026] = "\x8e\xfa", [14027] = "\x8e\x6c",
++ [14030] = "\x89\xf1", [14032] = "\x88\xf6", [14035] = "\x92\x63",
++ [14046] = "\x9a\x99", [14048] = "\x8d\xa2", [14050] = "\x88\xcd",
++ [14051] = "\x90\x7d", [14057] = "\x9a\x9a", [14058] = "\x8c\xc5",
++ [14061] = "\x8d\x91", [14063] = "\x9a\x9c", [14064] = "\x9a\x9b",
++ [14067] = "\x95\xde", [14068] = "\x9a\x9d", [14072] = "\x9a\x9f",
++ [14073] = "\x9a\x9e", [14075] = "\x9a\xa0", [14077] = "\x9a\xa1",
++ [14079] = "\x8c\x97", [14082] = "\x89\x80", [14083] = "\x9a\xa2",
++ [14086] = "\x9a\xa4", [14088] = "\x9a\xa3", [14092] = "\x9a\xa6",
++ [14095] = "\x93\x79", [14102] = "\x9a\xa7", [14103] = "\x88\xb3",
++ [14104] = "\x8d\xdd", [14109] = "\x8c\x5c", [14112] = "\x92\x6e",
++ [14119] = "\x9a\xa8", [14120] = "\x9a\xa9", [14123] = "\x9a\xab",
++ [14128] = "\x9a\xac", [14130] = "\x8d\xe2", [14135] = "\x8b\xcf",
++ [14138] = "\x96\x56", [14142] = "\x9a\xaa", [14143] = "\x9a\xad",
++ [14144] = "\x8d\xbf", [14145] = "\x8d\x42", [14153] = "\xfa\x96",
++ [14161] = "\x9a\xb1", [14164] = "\x8d\xa3", [14165] = "\xfa\x97",
++ [14166] = "\x92\x52", [14169] = "\x9a\xae", [14170] = "\x92\xd8",
++ [14191] = "\x9a\xb2", [14194] = "\x90\x82", [14200] = "\x9a\xb0",
++ [14201] = "\x9a\xb3", [14203] = "\x8c\x5e", [14211] = "\x9a\xb4",
++ [14224] = "\x9a\xb5", [14226] = "\x8d\x43", [14227] = "\x8a\x5f",
++ [14228] = "\x9a\xb7", [14234] = "\x9a\xb8", [14236] = "\xfa\x98",
++ [14240] = "\x9a\xb9", [14243] = "\x9a\xb6", [14256] = "\x9a\xaf",
++ [14259] = "\x9a\xba", [14262] = "\x9a\xbb", [14263] = "\xfa\x9a",
++ [14264] = "\xfa\x99", [14267] = "\x96\x84", [14270] = "\x8f\xe9",
++ [14274] = "\x9a\xbd", [14275] = "\x9a\xbe", [14276] = "\x9a\xbc",
++ [14278] = "\x9a\xc0", [14284] = "\x94\x57", [14287] = "\x88\xe6",
++ [14288] = "\x95\x75", [14291] = "\x9a\xc1", [14308] = "\x8f\xfb",
++ [14311] = "\x8e\xb7", [14313] = "\x94\x7c", [14314] = "\x8a\xee",
++ [14316] = "\x8d\xe9", [14320] = "\x96\x78", [14322] = "\x93\xb0",
++ [14325] = "\x8c\x98", [14326] = "\x91\xcd", [14330] = "\x9a\xbf",
++ [14331] = "\x9a\xc2", [14341] = "\x91\xc2", [14345] = "\x9a\xc3",
++ [14349] = "\x9a\xc4", [14353] = "\x9a\xc6", [14356] = "\x92\xe7",
++ [14362] = "\x8a\xac", [14367] = "\xea\x9f", [14368] = "\x89\x81",
++ [14369] = "\x95\xf1", [14372] = "\x8f\xea", [14373] = "\x93\x67",
++ [14378] = "\x8d\xe4", [14381] = "\x9a\xcc", [14384] = "\x95\xbb",
++ [14385] = "\x97\xdb", [14394] = "\x89\xf2", [14395] = "\x9a\xc8",
++ [14401] = "\x91\x59", [14402] = "\x9a\xcb", [14404] = "\x93\x83",
++ [14407] = "\x93\x68", [14408] = "\x93\x84", [14409] = "\x94\xb7",
++ [14410] = "\x92\xcb", [14414] = "\x8d\xc7", [14418] = "\x9a\xc7",
++ [14425] = "\x89\x96", [14427] = "\x93\x55", [14432] = "\x9a\xc9",
++ [14434] = "\x9a\xc5", [14437] = "\x90\x6f", [14441] = "\x9a\xcd",
++ [14446] = "\x8f\x6d", [14451] = "\x8b\xab", [14453] = "\x9a\xce",
++ [14467] = "\x95\xe6", [14471] = "\x91\x9d", [14476] = "\x92\xc4",
++ [14478] = "\xfa\x9d", [14479] = "\x9a\xd0", [14488] = "\x96\x6e",
++ [14491] = "\x9a\xd1", [14494] = "\x9a\xd6", [14498] = "\xfa\x9e",
++ [14499] = "\x95\xad", [14504] = "\x9a\xd5", [14505] = "\x9a\xcf",
++ [14506] = "\x9a\xd2", [14507] = "\x9a\xd4", [14510] = "\x8d\xa4",
++ [14513] = "\x95\xc7", [14517] = "\x9a\xd7", [14519] = "\x92\x64",
++ [14522] = "\x89\xf3", [14524] = "\x8f\xeb", [14529] = "\x9a\xd9",
++ [14531] = "\x9a\xd8", [14533] = "\x8d\x88", [14535] = "\x9a\xda",
++ [14536] = "\x9a\xdc", [14537] = "\x9a\xdb", [14540] = "\x9a\xde",
++ [14542] = "\x9a\xd3", [14543] = "\x9a\xe0", [14548] = "\x9a\xdf",
++ [14549] = "\x9a\xdd", [14555] = "\x8e\x6d", [14556] = "\x90\x70",
++ [14558] = "\x91\x73", [14559] = "\x9a\xe1", [14560] = "\x90\xba",
++ [14561] = "\x88\xeb", [14562] = "\x94\x84", [14567] = "\x92\xd9",
++ [14569] = "\x9a\xe3", [14570] = "\x9a\xe2", [14571] = "\x9a\xe4",
++ [14572] = "\x9a\xe5", [14573] = "\x9a\xe6", [14578] = "\x9a\xe7",
++ [14585] = "\x95\xcf", [14586] = "\x9a\xe8", [14587] = "\xfa\x9f",
++ [14591] = "\x89\xc4", [14592] = "\x9a\xe9", [14597] = "\x97\x5b",
++ [14598] = "\x8a\x4f", [14600] = "\x99\xc7", [14601] = "\x8f\x67",
++ [14602] = "\x91\xbd", [14603] = "\x9a\xea", [14604] = "\x96\xe9",
++ [14610] = "\x96\xb2", [14613] = "\x9a\xec", [14615] = "\x91\xe5",
++ [14617] = "\x93\x56", [14618] = "\x91\xbe", [14619] = "\x95\x76",
++ [14620] = "\x9a\xed", [14621] = "\x9a\xee", [14622] = "\x89\x9b",
++ [14625] = "\x8e\xb8", [14626] = "\x9a\xef", [14631] = "\x88\xce",
++ [14632] = "\x9a\xf0", [14638] = "\x9a\xf1", [14644] = "\x89\x82",
++ [14647] = "\x8a\xef", [14648] = "\x93\xde", [14649] = "\x95\xf2",
++ [14654] = "\x9a\xf5", [14655] = "\x91\x74", [14656] = "\x9a\xf4",
++ [14657] = "\x8c\x5f", [14659] = "\xfa\xa0", [14660] = "\x96\x7a",
++ [14661] = "\x9a\xf3", [14663] = "\x93\x85", [14664] = "\x9a\xf7",
++ [14666] = "\x9a\xf6", [14667] = "\xfa\xa1", [14669] = "\xfa\xa2",
++ [14672] = "\x9a\xf9", [14674] = "\x9a\xf8", [14675] = "\xfa\xa3",
++ [14677] = "\x89\x9c", [14679] = "\x9a\xfa", [14680] = "\x8f\xa7",
++ [14681] = "\x9a\xfc", [14682] = "\x92\x44", [14684] = "\x9a\xfb",
++ [14686] = "\x95\xb1", [14691] = "\x8f\x97", [14692] = "\x93\x7a",
++ [14696] = "\x9b\x40", [14701] = "\x8d\x44", [14705] = "\x9b\x41",
++ [14706] = "\x94\x40", [14707] = "\x94\xdc", [14708] = "\x96\xcf",
++ [14714] = "\x94\x44", [14717] = "\x9b\x4a", [14723] = "\x8b\x57",
++ [14726] = "\x97\x64", [14729] = "\x96\xad", [14731] = "\x9b\xaa",
++ [14733] = "\x9b\x42", [14739] = "\x9b\x45", [14740] = "\xfa\xa4",
++ [14741] = "\x91\xc3", [14744] = "\x96\x57", [14748] = "\x93\x69",
++ [14754] = "\x9b\x46", [14761] = "\x96\x85", [14762] = "\xfa\xa5",
++ [14763] = "\x8d\xc8", [14766] = "\x8f\xa8", [14774] = "\x9b\x47",
++ [14777] = "\x8e\x6f", [14779] = "\x8e\x6e", [14784] = "\x88\xb7",
++ [14785] = "\x8c\xc6", [14787] = "\x90\xa9", [14788] = "\x88\xcf",
++ [14793] = "\x9b\x4b", [14794] = "\x9b\x4c", [14796] = "\x9b\x49",
++ [14805] = "\x89\x57", [14806] = "\x8a\xad", [14808] = "\x9b\x48",
++ [14810] = "\x96\xc3", [14811] = "\x95\x50", [14822] = "\x88\xa6",
++ [14827] = "\x88\xf7", [14831] = "\x8e\x70", [14833] = "\x88\xd0",
++ [14835] = "\x88\xa1", [14841] = "\x9b\x51", [14849] = "\x9b\x4f",
++ [14856] = "\x96\xba", [14858] = "\x9b\x52", [14860] = "\x9b\x50",
++ [14863] = "\x9b\x4e", [14864] = "\x90\x50", [14869] = "\x9b\x4d",
++ [14873] = "\x95\xd8", [14879] = "\x8c\xe2", [14885] = "\x9b\x56",
++ [14886] = "\x9b\x57", [14892] = "\x8f\xa9", [14896] = "\x9b\x53",
++ [14897] = "\x98\x4b", [14902] = "\x94\x6b", [14905] = "\x9b\x55",
++ [14922] = "\x8d\xa5", [14930] = "\x9b\x58", [14934] = "\x95\x77",
++ [14938] = "\x9b\x59", [14940] = "\x9b\x54", [14959] = "\x96\xb9",
++ [14978] = "\x94\x7d", [14986] = "\x9b\x5a", [14987] = "\x95\x51",
++ [15020] = "\x9b\x5b", [15021] = "\x9b\x5f", [15022] = "\x9b\x5c",
++ [15025] = "\x89\xc5", [15026] = "\x9b\x5e", [15033] = "\x8e\xb9",
++ [15035] = "\x9b\x5d", [15036] = "\x8c\x99", [15040] = "\x9b\x6b",
++ [15046] = "\x9b\x64", [15047] = "\x9b\x61", [15057] = "\x92\x84",
++ [15059] = "\x9b\x60", [15062] = "\x9b\x62", [15065] = "\x9b\x63",
++ [15082] = "\x9b\x65", [15083] = "\x9b\x66", [15097] = "\x8a\xf0",
++ [15099] = "\x9b\x68", [15100] = "\x9b\x67", [15110] = "\x9b\x69",
++ [15122] = "\x8f\xec", [15130] = "\x9b\x6c", [15132] = "\x92\xda",
++ [15136] = "\x89\x64", [15138] = "\x9b\x6a", [15142] = "\x9b\x6d",
++ [15150] = "\x9b\x6e", [15152] = "\x9b\x71", [15155] = "\x9b\x6f",
++ [15157] = "\x9b\x70", [15168] = "\x8e\x71", [15169] = "\x9b\x72",
++ [15172] = "\x8d\x45", [15173] = "\x9b\x73", [15174] = "\xfa\xa6",
++ [15175] = "\x8e\x9a", [15176] = "\x91\xb6", [15178] = "\x9b\x74",
++ [15179] = "\x9b\x75", [15180] = "\x8e\x79", [15181] = "\x8d\x46",
++ [15183] = "\x96\xd0", [15187] = "\x8b\x47", [15188] = "\x8c\xc7",
++ [15189] = "\x9b\x76", [15190] = "\x8a\x77", [15193] = "\x9b\x77",
++ [15195] = "\x91\xb7", [15200] = "\x9b\x78", [15201] = "\x9b\xa1",
++ [15203] = "\x9b\x79", [15205] = "\x9b\x7a", [15208] = "\x9b\x7b",
++ [15210] = "\x9b\x7d", [15216] = "\x9b\x7e", [15219] = "\x9b\x80",
++ [15221] = "\x91\xee", [15223] = "\x89\x46", [15224] = "\x8e\xe7",
++ [15225] = "\x88\xc0", [15227] = "\x91\x76", [15228] = "\x8a\xae",
++ [15229] = "\x8e\xb3", [15231] = "\x8d\x47", [15237] = "\x93\x86",
++ [15239] = "\x8f\x40", [15240] = "\x8a\xaf", [15241] = "\x92\x88",
++ [15242] = "\x92\xe8", [15243] = "\x88\xb6", [15244] = "\x8b\x58",
++ [15245] = "\x95\xf3", [15247] = "\x8e\xc0", [15250] = "\x8b\x71",
++ [15251] = "\x90\xe9", [15252] = "\x8e\xba", [15253] = "\x97\x47",
++ [15254] = "\x9b\x81", [15262] = "\x8b\x7b", [15264] = "\x8d\xc9",
++ [15267] = "\x8a\x51", [15268] = "\x89\x83", [15269] = "\x8f\xaa",
++ [15270] = "\x89\xc6", [15272] = "\x9b\x82", [15273] = "\x97\x65",
++ [15279] = "\x8f\x68", [15280] = "\xfa\xa7", [15282] = "\x8e\xe2",
++ [15283] = "\x9b\x83", [15284] = "\x8a\xf1", [15285] = "\x93\xd0",
++ [15286] = "\x96\xa7", [15287] = "\x9b\x84", [15289] = "\x9b\x85",
++ [15292] = "\x95\x78", [15296] = "\x9b\x87", [15298] = "\x8a\xa6",
++ [15299] = "\x8b\xf5", [15300] = "\x9b\x86", [15304] = "\xfa\xa9",
++ [15307] = "\x8a\xb0", [15309] = "\x90\x51", [15310] = "\x9b\x8b",
++ [15311] = "\x8e\x40", [15313] = "\x89\xc7", [15314] = "\x9b\x8a",
++ [15316] = "\x9b\x88", [15317] = "\x9b\x8c", [15318] = "\x9b\x89",
++ [15319] = "\x94\x4a", [15320] = "\x9e\xcb", [15321] = "\x90\x52",
++ [15323] = "\x9b\x8d", [15324] = "\xfa\xaa", [15326] = "\x97\xbe",
++ [15328] = "\x9b\x8e", [15331] = "\x9b\x90", [15333] = "\x92\x9e",
++ [15334] = "\x9b\x8f", [15336] = "\x90\xa1", [15338] = "\x8e\x9b",
++ [15342] = "\x91\xce", [15343] = "\x8e\xf5", [15345] = "\x95\x95",
++ [15346] = "\x90\xea", [15348] = "\x8e\xcb", [15349] = "\x9b\x91",
++ [15350] = "\x8f\xab", [15351] = "\x9b\x92", [15352] = "\x9b\x93",
++ [15353] = "\x88\xd1", [15354] = "\x91\xb8", [15355] = "\x90\x71",
++ [15357] = "\x9b\x94", [15358] = "\x93\xb1", [15359] = "\x8f\xac",
++ [15361] = "\x8f\xad", [15363] = "\x9b\x95", [15366] = "\x90\xeb",
++ [15370] = "\x8f\xae", [15374] = "\xfa\xab", [15376] = "\x9b\x96",
++ [15378] = "\x9b\x97", [15380] = "\x96\xde", [15384] = "\x9b\x98",
++ [15389] = "\x8b\xc4", [15393] = "\x8f\x41", [15400] = "\x9b\x99",
++ [15401] = "\x9b\x9a", [15402] = "\x8e\xda", [15403] = "\x90\x4b",
++ [15404] = "\x93\xf2", [15405] = "\x90\x73", [15406] = "\x94\xf6",
++ [15407] = "\x94\x41", [15408] = "\x8b\xc7", [15409] = "\x9b\x9b",
++ [15413] = "\x8b\x8f", [15414] = "\x9b\x9c", [15416] = "\x8b\xfc",
++ [15418] = "\x93\xcd", [15419] = "\x89\xae", [15421] = "\x8e\x72",
++ [15422] = "\x9b\x9d", [15423] = "\x9b\xa0", [15424] = "\x9b\x9f",
++ [15425] = "\x8b\xfb", [15427] = "\x9b\x9e", [15429] = "\x93\x57",
++ [15438] = "\x91\xae", [15440] = "\x93\x6a", [15441] = "\x8e\xc6",
++ [15444] = "\x91\x77", [15445] = "\x97\x9a", [15452] = "\x9b\xa2",
++ [15454] = "\x9b\xa3", [15455] = "\x93\xd4", [15457] = "\x8e\x52",
++ [15462] = "\x9b\xa5", [15465] = "\x9b\xa6", [15484] = "\x9b\xa7",
++ [15488] = "\x8a\xf2", [15489] = "\x9b\xa8", [15492] = "\x9b\xa9",
++ [15505] = "\x89\xaa", [15510] = "\xfa\xac", [15512] = "\x91\x5a",
++ [15513] = "\x8a\xe2", [15515] = "\x9b\xab", [15516] = "\x96\xa6",
++ [15521] = "\x91\xd0", [15523] = "\x8a\x78", [15526] = "\x9b\xad",
++ [15527] = "\x9b\xaf", [15528] = "\x8a\xdd", [15530] = "\xfa\xad",
++ [15531] = "\x9b\xac", [15532] = "\x9b\xae", [15534] = "\x9b\xb1",
++ [15541] = "\x9b\xb0", [15543] = "\x9b\xb2", [15561] = "\x9b\xb3",
++ [15568] = "\x93\xbb", [15569] = "\x8b\xac", [15576] = "\x89\xe3",
++ [15577] = "\x9b\xb4", [15578] = "\x9b\xb9", [15581] = "\x9b\xb7",
++ [15583] = "\x95\xf5", [15584] = "\x95\xf4", [15589] = "\xfa\xae",
++ [15590] = "\x93\x87", [15594] = "\x9b\xb6", [15595] = "\x8f\x73",
++ [15597] = "\x9b\xb5", [15607] = "\x90\x92", [15611] = "\x9b\xba",
++ [15614] = "\x8d\xe8", [15617] = "\x9b\xc0", [15620] = "\x9b\xc1",
++ [15621] = "\x9b\xbb", [15622] = "\x8a\x52", [15623] = "\x9b\xbc",
++ [15624] = "\x9b\xc5", [15625] = "\x9b\xc4", [15626] = "\x9b\xc3",
++ [15627] = "\x9b\xbf", [15631] = "\x9b\xbe", [15634] = "\x9b\xc2",
++ [15639] = "\xfa\xaf", [15641] = "\x95\xf6", [15666] = "\xfa\xb2",
++ [15675] = "\x9b\xc9", [15676] = "\x9b\xc6", [15678] = "\x9b\xc8",
++ [15680] = "\x97\x92", [15682] = "\x9b\xc7", [15683] = "\xfa\xb0",
++ [15692] = "\x9b\xbd", [15705] = "\x90\x93", [15708] = "\x9b\xca",
++ [15709] = "\xfa\xb3", [15711] = "\x8d\xb5", [15715] = "\x9b\xcb",
++ [15718] = "\x9b\xcc", [15730] = "\x9b\xcf", [15732] = "\x9b\xce",
++ [15735] = "\x9b\xcd", [15739] = "\x93\x88", [15740] = "\x9b\xb8",
++ [15744] = "\x9b\xd5", [15757] = "\x9b\xd1", [15762] = "\x9b\xd0",
++ [15772] = "\x9b\xd2", [15774] = "\x9b\xd3", [15783] = "\x9b\xd6",
++ [15784] = "\xfa\xb4", [15785] = "\xfa\xb5", [15786] = "\x97\xe4",
++ [15788] = "\x9b\xd7", [15789] = "\x9b\xd4", [15801] = "\x9b\xd8",
++ [15804] = "\x8a\xde", [15805] = "\x9b\xd9", [15808] = "\xfa\xb6",
++ [15810] = "\x9b\xdb", [15811] = "\x9b\xda", [15814] = "\x9b\xdc",
++ [15819] = "\x9b\xdd", [15821] = "\x90\xec", [15822] = "\x8f\x42",
++ [15825] = "\x8f\x84", [15827] = "\x91\x83", [15829] = "\x8d\x48",
++ [15830] = "\x8d\xb6", [15831] = "\x8d\x49", [15832] = "\x8b\x90",
++ [15835] = "\x9b\xde", [15838] = "\x8d\xb7", [15841] = "\x8c\xc8",
++ [15842] = "\x9b\xdf", [15843] = "\x96\xa4", [15844] = "\x94\x62",
++ [15845] = "\x9b\xe0", [15847] = "\x8d\x4a", [15851] = "\x8a\xaa",
++ [15853] = "\x92\x46", [15854] = "\x8b\xd0", [15858] = "\x8e\x73",
++ [15859] = "\x95\x7a", [15862] = "\x94\xbf", [15867] = "\x9b\xe1",
++ [15868] = "\x8a\xf3", [15873] = "\x9b\xe4", [15878] = "\x92\x9f",
++ [15881] = "\x9b\xe3", [15882] = "\x9b\xe2", [15883] = "\x9b\xe5",
++ [15885] = "\x92\xe9", [15893] = "\x90\x83", [15899] = "\x8e\x74",
++ [15901] = "\x90\xc8", [15903] = "\x91\xd1", [15904] = "\x8b\x41",
++ [15907] = "\x92\xa0", [15910] = "\x9b\xe6", [15911] = "\x9b\xe7",
++ [15912] = "\x8f\xed", [15917] = "\x96\x58", [15920] = "\x9b\xea",
++ [15923] = "\x9b\xe9", [15924] = "\x9b\xe8", [15925] = "\x95\x9d",
++ [15927] = "\x9b\xf1", [15932] = "\x96\x79", [15934] = "\x9b\xeb",
++ [15940] = "\x9b\xed", [15941] = "\x96\x8b", [15943] = "\x9b\xec",
++ [15951] = "\x9b\xee", [15953] = "\x94\xa6", [15954] = "\x9b\xef",
++ [15955] = "\x95\xbc", [15956] = "\x9b\xf0", [15970] = "\x8a\xb1",
++ [15971] = "\x95\xbd", [15972] = "\x94\x4e", [15973] = "\x9b\xf2",
++ [15974] = "\x9b\xf3", [15976] = "\x8d\x4b", [15977] = "\x8a\xb2",
++ [15978] = "\x9b\xf4", [15979] = "\x8c\xb6", [15980] = "\x97\x63",
++ [15981] = "\x97\x48", [15982] = "\x8a\xf4", [15983] = "\x9b\xf6",
++ [15985] = "\x92\xa1", [15987] = "\x8d\x4c", [15988] = "\x8f\xaf",
++ [15991] = "\x94\xdd", [15994] = "\x8f\xb0", [15999] = "\x8f\x98",
++ [16005] = "\x92\xea", [16006] = "\x95\xf7", [16007] = "\x93\x58",
++ [16010] = "\x8d\x4d", [16012] = "\x95\x7b", [16016] = "\x9b\xf7",
++ [16022] = "\x93\x78", [16023] = "\x8d\xc0", [16027] = "\x8c\xc9",
++ [16029] = "\x92\xeb", [16037] = "\x88\xc1", [16038] = "\x8f\x8e",
++ [16039] = "\x8d\x4e", [16040] = "\x97\x66", [16049] = "\x9b\xf8",
++ [16050] = "\x9b\xf9", [16051] = "\x94\x70", [16056] = "\x9b\xfa",
++ [16057] = "\x97\xf5", [16058] = "\x98\x4c", [16063] = "\x9b\xfc",
++ [16064] = "\x9b\xfb", [16067] = "\x8a\x66", [16070] = "\x9c\x40",
++ [16074] = "\x9c\x43", [16075] = "\x9c\x44", [16077] = "\x9c\x42",
++ [16079] = "\x95\x5f", [16080] = "\x8f\xb1", [16081] = "\x9c\x46",
++ [16082] = "\x9c\x45", [16083] = "\x9c\x41", [16088] = "\x9c\x47",
++ [16089] = "\x9c\x48", [16092] = "\x9c\x49", [16096] = "\x9c\x4c",
++ [16097] = "\x9c\x4a", [16099] = "\x9c\x4b", [16100] = "\x9c\x4d",
++ [16102] = "\x89\x84", [16103] = "\x92\xec", [16104] = "\x9c\x4e",
++ [16106] = "\x8c\x9a", [16107] = "\x89\xf4", [16108] = "\x94\x55",
++ [16110] = "\x9c\x4f", [16111] = "\x93\xf9", [16113] = "\x95\xd9",
++ [16115] = "\x9c\x50", [16116] = "\x98\x4d", [16121] = "\x9c\x51",
++ [16122] = "\x95\xbe", [16123] = "\x9c\x54", [16124] = "\x98\x9f",
++ [16125] = "\x98\xaf", [16127] = "\x8e\xae", [16128] = "\x93\xf3",
++ [16129] = "\x9c\x55", [16131] = "\x8b\x7c", [16132] = "\x92\xa2",
++ [16133] = "\x88\xf8", [16134] = "\x9c\x56", [16135] = "\x95\xa4",
++ [16136] = "\x8d\x4f", [16139] = "\x92\x6f", [16143] = "\x92\xed",
++ [16145] = "\xfa\xb7", [16149] = "\x96\xed", [16150] = "\x8c\xb7",
++ [16151] = "\x8c\xca", [16153] = "\x9c\x57", [16157] = "\x9c\x58",
++ [16159] = "\x9c\x5e", [16161] = "\x8e\xe3", [16164] = "\xfa\xb8",
++ [16165] = "\x92\xa3", [16167] = "\x8b\xad", [16168] = "\x9c\x59",
++ [16172] = "\x95\x4a", [16174] = "\x92\x65", [16177] = "\x9c\x5a",
++ [16181] = "\xfa\x67", [16184] = "\x9c\x5b", [16186] = "\x8b\xae",
++ [16188] = "\x9c\x5c", [16190] = "\x9c\x5d", [16193] = "\x9c\x5f",
++ [16195] = "\x93\x96", [16198] = "\x9c\x60", [16199] = "\x9c\x61",
++ [16201] = "\x9c\x62", [16204] = "\x9c\x53", [16205] = "\x9c\x52",
++ [16209] = "\x9c\x63", [16210] = "\x8c\x60", [16214] = "\x95\x46",
++ [16215] = "\xfa\xb9", [16217] = "\x8d\xca", [16218] = "\x95\x56",
++ [16219] = "\x92\xa4", [16220] = "\x95\x6a", [16221] = "\x9c\x64",
++ [16224] = "\x8f\xb2", [16225] = "\x89\x65", [16227] = "\x9c\x65",
++ [16231] = "\x9c\x66", [16233] = "\x96\xf0", [16236] = "\x94\xde",
++ [16239] = "\x9c\x69", [16240] = "\x89\x9d", [16241] = "\x90\xaa",
++ [16242] = "\x9c\x68", [16243] = "\x9c\x67", [16244] = "\x8c\x61",
++ [16245] = "\x91\xd2", [16247] = "\x9c\x6d", [16248] = "\x9c\x6b",
++ [16250] = "\x9c\x6a", [16251] = "\x97\xa5", [16252] = "\x8c\xe3",
++ [16256] = "\x8f\x99", [16257] = "\x9c\x6c", [16258] = "\x93\x6b",
++ [16259] = "\x8f\x5d", [16263] = "\x93\xbe", [16264] = "\x9c\x70",
++ [16265] = "\x9c\x6f", [16270] = "\x9c\x6e", [16272] = "\x9c\x71",
++ [16273] = "\x8c\xe4", [16280] = "\x9c\x72", [16281] = "\x95\x9c",
++ [16282] = "\x8f\x7a", [16285] = "\x9c\x73", [16286] = "\x94\xf7",
++ [16291] = "\x93\xbf", [16292] = "\x92\xa5", [16295] = "\xfa\xba",
++ [16297] = "\x93\x4f", [16300] = "\x9c\x74", [16301] = "\x8b\x4a",
++ [16307] = "\x90\x53", [16309] = "\x95\x4b", [16316] = "\x8a\xf5",
++ [16317] = "\x94\x45", [16326] = "\x9c\x75", [16327] = "\x8e\x75",
++ [16328] = "\x96\x59", [16329] = "\x96\x5a", [16332] = "\x89\x9e",
++ [16333] = "\x9c\x7a", [16334] = "\xfa\xbb", [16336] = "\x92\x89",
++ [16340] = "\x9c\x77", [16347] = "\x89\xf5", [16352] = "\x9c\xab",
++ [16353] = "\x9c\x79", [16357] = "\x94\x4f", [16360] = "\x9c\x78",
++ [16363] = "\x9c\x76", [16365] = "\x8d\x9a", [16367] = "\x9c\x7c",
++ [16382] = "\x9c\x83", [16383] = "\x9c\x89", [16384] = "\x9c\x81",
++ [16386] = "\x93\x7b", [16389] = "\x9c\x86", [16390] = "\x95\x7c",
++ [16393] = "\x9c\x80", [16395] = "\x9c\x85", [16396] = "\x97\xe5",
++ [16397] = "\x8e\x76", [16400] = "\x91\xd3", [16401] = "\x9c\x7d",
++ [16405] = "\x8b\x7d", [16406] = "\x9c\x88", [16407] = "\x90\xab",
++ [16408] = "\x89\x85", [16409] = "\x9c\x82", [16410] = "\x89\xf6",
++ [16411] = "\x9c\x87", [16415] = "\x8b\xaf", [16417] = "\x9c\x84",
++ [16426] = "\x9c\x8a", [16433] = "\x9c\x8c", [16434] = "\x9c\x96",
++ [16435] = "\x9c\x94", [16438] = "\x9c\x91", [16442] = "\x9c\x90",
++ [16443] = "\x97\xf6", [16445] = "\x9c\x92", [16448] = "\x8b\xb0",
++ [16450] = "\x8d\x50", [16453] = "\x8f\x9a", [16457] = "\x9c\x99",
++ [16458] = "\x9c\x8b", [16461] = "\xfa\xbc", [16463] = "\x9c\x8f",
++ [16464] = "\x9c\x7e", [16466] = "\x89\xf8", [16467] = "\x9c\x93",
++ [16468] = "\x9c\x95", [16469] = "\x92\x70", [16472] = "\x8d\xa6",
++ [16473] = "\x89\xb6", [16474] = "\x9c\x8d", [16475] = "\x9c\x98",
++ [16476] = "\x9c\x97", [16477] = "\x8b\xb1", [16479] = "\x91\xa7",
++ [16480] = "\x8a\x86", [16485] = "\x8c\x62", [16487] = "\x9c\x8e",
++ [16497] = "\x9c\x9a", [16499] = "\x9c\x9d", [16500] = "\x9c\x9f",
++ [16501] = "\xfa\xbd", [16505] = "\x8e\xbb", [16506] = "\xfa\xbe",
++ [16507] = "\x9c\xa5", [16508] = "\x92\xee", [16509] = "\x9c\x9b",
++ [16514] = "\x9c\xa3", [16516] = "\x89\xf7", [16518] = "\x9c\xa1",
++ [16519] = "\x9c\xa2", [16522] = "\x9c\x9e", [16523] = "\x9c\xa0",
++ [16527] = "\x8c\xe5", [16528] = "\x97\x49", [16531] = "\x8a\xb3",
++ [16534] = "\x89\x78", [16535] = "\x9c\xa4", [16537] = "\x94\x59",
++ [16538] = "\x88\xab", [16546] = "\x94\xdf", [16547] = "\x9c\x7b",
++ [16548] = "\x9c\xaa", [16549] = "\x9c\xae", [16550] = "\x96\xe3",
++ [16552] = "\x9c\xa7", [16556] = "\x93\x89", [16557] = "\x9c\xac",
++ [16565] = "\x8f\xee", [16566] = "\x9c\xad", [16567] = "\x93\xd5",
++ [16577] = "\x98\x66", [16579] = "\x9c\xa9", [16581] = "\xfa\xc0",
++ [16584] = "\x9c\xaf", [16586] = "\x8d\x9b", [16588] = "\x90\xc9",
++ [16590] = "\xfa\xbf", [16591] = "\x88\xd2", [16592] = "\x9c\xa8",
++ [16593] = "\x9c\xa6", [16595] = "\x91\x79", [16599] = "\x9c\x9c",
++ [16600] = "\x8e\x53", [16608] = "\x91\xc4", [16609] = "\x9c\xbb",
++ [16610] = "\xfa\xc2", [16611] = "\x91\x7a", [16612] = "\x9c\xb6",
++ [16614] = "\x9c\xb3", [16615] = "\x9c\xb4", [16617] = "\x8e\xe4",
++ [16618] = "\x9c\xb7", [16619] = "\x9c\xba", [16624] = "\x9c\xb5",
++ [16625] = "\x8f\x44", [16627] = "\x9c\xb8", [16630] = "\x9c\xb2",
++ [16632] = "\x96\xfa", [16633] = "\x96\xf9", [16637] = "\x9c\xbc",
++ [16638] = "\x9c\xbd", [16639] = "\x88\xd3", [16641] = "\xfa\xc3",
++ [16645] = "\x9c\xb1", [16650] = "\x8b\xf0", [16651] = "\x88\xa4",
++ [16655] = "\x8a\xb4", [16656] = "\xfa\xc1", [16657] = "\x9c\xb9",
++ [16663] = "\x9c\xc1", [16664] = "\x9c\xc0", [16668] = "\x9c\xc5",
++ [16672] = "\xfa\xc5", [16676] = "\x9c\xc6", [16679] = "\xfa\xc4",
++ [16684] = "\x9c\xc4", [16685] = "\x9c\xc7", [16686] = "\x9c\xbf",
++ [16687] = "\x9c\xc3", [16690] = "\x9c\xc8", [16692] = "\x9c\xc9",
++ [16695] = "\x9c\xbe", [16696] = "\x8e\x9c", [16698] = "\x9c\xc2",
++ [16699] = "\x91\xd4", [16700] = "\x8d\x51", [16701] = "\x9c\xb0",
++ [16702] = "\x90\x54", [16707] = "\x9c\xd6", [16709] = "\x95\xe7",
++ [16712] = "\x9c\xcc", [16713] = "\x9c\xcd", [16714] = "\x9c\xce",
++ [16717] = "\x9c\xd5", [16719] = "\x9c\xd4", [16722] = "\x96\x9d",
++ [16723] = "\x8a\xb5", [16725] = "\x9c\xd2", [16727] = "\x8c\x64",
++ [16728] = "\x8a\x53", [16731] = "\x9c\xcf", [16734] = "\x97\xb6",
++ [16735] = "\x9c\xd1", [16736] = "\x88\xd4", [16737] = "\x9c\xd3",
++ [16739] = "\x9c\xca", [16740] = "\x9c\xd0", [16741] = "\x9c\xd7",
++ [16742] = "\x8c\x63", [16743] = "\x9c\xcb", [16750] = "\x97\x7c",
++ [16754] = "\x97\x4a", [16759] = "\x9c\xda", [16762] = "\x9c\xde",
++ [16766] = "\x91\x9e", [16768] = "\x97\xf7", [16769] = "\x9c\xdf",
++ [16772] = "\x9c\xdc", [16774] = "\x9c\xd9", [16776] = "\xfa\xc6",
++ [16777] = "\x9c\xd8", [16778] = "\x9c\xdd", [16788] = "\x95\xae",
++ [16791] = "\x93\xb2", [16793] = "\x8c\x65", [16795] = "\x9c\xe0",
++ [16796] = "\x9c\xdb", [16798] = "\x9c\xe1", [16802] = "\x8c\x9b",
++ [16806] = "\x89\xaf", [16810] = "\x9c\xe9", [16814] = "\x8a\xb6",
++ [16819] = "\x9c\xe7", [16822] = "\x9c\xe8", [16823] = "\x8d\xa7",
++ [16824] = "\x9c\xe6", [16825] = "\x9c\xe4", [16826] = "\x9c\xe3",
++ [16827] = "\x9c\xea", [16828] = "\x9c\xe2", [16829] = "\x9c\xec",
++ [16832] = "\x89\xf9", [16851] = "\x9c\xee", [16854] = "\x9c\xed",
++ [16866] = "\x92\xa6", [16868] = "\x9c\xf1", [16870] = "\x9c\xef",
++ [16871] = "\x9c\xe5", [16872] = "\x8c\x9c", [16874] = "\x9c\xf0",
++ [16876] = "\x9c\xf4", [16877] = "\x9c\xf3", [16878] = "\x9c\xf5",
++ [16879] = "\x9c\xf2", [16880] = "\x9c\xf6", [16888] = "\x9c\xf7",
++ [16889] = "\x9c\xf8", [16890] = "\x95\xe8", [16892] = "\x9c\xfa",
++ [16893] = "\x9c\xf9", [16894] = "\x8f\x5e", [16896] = "\x90\xac",
++ [16897] = "\x89\xe4", [16898] = "\x89\xfa", [16899] = "\xfa\xc7",
++ [16900] = "\x9c\xfb", [16902] = "\x88\xbd", [16906] = "\x90\xca",
++ [16907] = "\x9c\xfc", [16909] = "\xe6\xc1", [16910] = "\x9d\x40",
++ [16911] = "\x8c\x81", [16913] = "\x9d\x41", [16918] = "\x90\xed",
++ [16922] = "\x9d\x42", [16926] = "\x9d\x43", [16927] = "\x8b\x59",
++ [16928] = "\x9d\x44", [16930] = "\x9d\x45", [16931] = "\x9d\x46",
++ [16932] = "\x91\xd5", [16936] = "\x8c\xcb", [16939] = "\x96\xdf",
++ [16943] = "\x96\x5b", [16944] = "\x8f\x8a", [16945] = "\x9d\x47",
++ [16951] = "\x90\xee", [16952] = "\xe7\xbb", [16953] = "\x94\xe0",
++ [16955] = "\x8e\xe8", [16957] = "\x8d\xcb", [16958] = "\x9d\x48",
++ [16963] = "\x91\xc5", [16965] = "\x95\xa5", [16968] = "\x91\xef",
++ [16971] = "\x9d\x4b", [16974] = "\x9d\x49", [16976] = "\x9d\x4c",
++ [16979] = "\x9d\x4a", [16984] = "\x9d\x4d", [16990] = "\x95\xaf",
++ [16993] = "\x88\xb5", [16998] = "\x95\x7d", [17001] = "\x94\xe1",
++ [17004] = "\x9d\x4e", [17006] = "\x9d\x51", [17007] = "\x8f\xb3",
++ [17008] = "\x8b\x5a", [17010] = "\x9d\x4f", [17011] = "\x9d\x56",
++ [17012] = "\x8f\xb4", [17017] = "\x9d\x50", [17018] = "\x94\x63",
++ [17025] = "\x97\x7d", [17026] = "\x9d\x52", [17027] = "\x9d\x53",
++ [17028] = "\x9d\x57", [17029] = "\x93\x8a", [17030] = "\x9d\x54",
++ [17031] = "\x8d\x52", [17032] = "\x90\xdc", [17035] = "\x9d\x65",
++ [17036] = "\x94\xb2", [17038] = "\x91\xf0", [17046] = "\xfa\xc8",
++ [17051] = "\x94\xe2", [17052] = "\x9d\xab", [17057] = "\x95\xf8",
++ [17061] = "\x92\xef", [17065] = "\x96\x95", [17067] = "\x9d\x5a",
++ [17068] = "\x89\x9f", [17069] = "\x92\x8a", [17074] = "\x9d\x63",
++ [17077] = "\x92\x53", [17078] = "\x9d\x5d", [17079] = "\x9d\x64",
++ [17080] = "\x9d\x5f", [17081] = "\x9d\x66", [17082] = "\x9d\x62",
++ [17084] = "\x9d\x61", [17085] = "\x94\x8f", [17087] = "\x9d\x5b",
++ [17088] = "\x89\xfb", [17089] = "\x9d\x59", [17090] = "\x8b\x91",
++ [17091] = "\x91\xf1", [17092] = "\x9d\x55", [17095] = "\x9d\x58",
++ [17096] = "\x8d\x53", [17097] = "\x90\xd9", [17099] = "\x8f\xb5",
++ [17100] = "\x9d\x60", [17101] = "\x94\x71", [17104] = "\x8b\x92",
++ [17105] = "\x8a\x67", [17116] = "\x8a\x87", [17117] = "\x90\x40",
++ [17118] = "\x9d\x68", [17119] = "\x9d\x6d", [17121] = "\x9d\x69",
++ [17123] = "\x8c\x9d", [17125] = "\x9d\x6e", [17126] = "\x8e\x41",
++ [17127] = "\x8d\x89", [17134] = "\x8f\x45", [17135] = "\x9d\x5c",
++ [17137] = "\x8e\x9d", [17138] = "\x9d\x6b", [17143] = "\x8e\x77",
++ [17144] = "\x9d\x6c", [17145] = "\x88\xc2", [17148] = "\x9d\x67",
++ [17153] = "\x92\xa7", [17161] = "\x8b\x93", [17167] = "\x8b\xb2",
++ [17175] = "\x9d\x6a", [17176] = "\x88\xa5", [17179] = "\x8d\xc1",
++ [17183] = "\x90\x55", [17194] = "\x92\xf0", [17197] = "\x94\xd2",
++ [17198] = "\x9d\x70", [17199] = "\x91\x7d", [17209] = "\x91\xa8",
++ [17212] = "\x8e\x4a", [17213] = "\x9d\x71", [17215] = "\x9d\x73",
++ [17216] = "\x9d\x6f", [17221] = "\x95\xdf", [17223] = "\x92\xbb",
++ [17228] = "\x91\x7b", [17239] = "\x95\xf9", [17240] = "\x8e\xcc",
++ [17241] = "\x9d\x80", [17243] = "\x9d\x7e", [17246] = "\x90\x98",
++ [17250] = "\x8c\x9e", [17254] = "\x9d\x78", [17255] = "\x8f\xb7",
++ [17258] = "\x93\xe6", [17259] = "\x94\x50", [17264] = "\x9d\x76",
++ [17267] = "\x91\x7c", [17272] = "\x8e\xf6", [17273] = "\x9d\x7b",
++ [17276] = "\x8f\xb6", [17278] = "\x9d\x75", [17279] = "\x9d\x7a",
++ [17282] = "\x94\x72", [17286] = "\x9d\x74", [17288] = "\x8c\x40",
++ [17291] = "\x8a\x7c", [17295] = "\x9d\x7c", [17296] = "\x97\xa9",
++ [17297] = "\x8d\xcc", [17298] = "\x92\x54", [17299] = "\x9d\x79",
++ [17301] = "\x90\xda", [17303] = "\x8d\x54", [17304] = "\x90\x84",
++ [17305] = "\x89\x86", [17306] = "\x91\x5b", [17307] = "\x9d\x77",
++ [17308] = "\x8b\x64", [17314] = "\x8c\x66", [17316] = "\x92\xcd",
++ [17317] = "\x9d\x7d", [17323] = "\x91\x7e", [17326] = "\x9d\x81",
++ [17328] = "\x9d\x83", [17331] = "\x91\xb5", [17332] = "\x9d\x89",
++ [17334] = "\x9d\x84", [17337] = "\x9d\x86", [17343] = "\x95\x60",
++ [17344] = "\x92\xf1", [17346] = "\x9d\x87", [17350] = "\x97\x4b",
++ [17354] = "\x97\x67", [17355] = "\x8a\xb7", [17361] = "\x88\xac",
++ [17363] = "\x9d\x85", [17369] = "\x9d\x82", [17374] = "\x8a\xf6",
++ [17380] = "\x89\x87", [17381] = "\xfa\xc9", [17382] = "\x9d\x88",
++ [17386] = "\x97\x68", [17398] = "\x9d\x8c", [17405] = "\x91\xb9",
++ [17407] = "\x9d\x93", [17411] = "\x9d\x8d", [17414] = "\x9d\x8a",
++ [17415] = "\x9d\x91", [17420] = "\x9d\x72", [17430] = "\x9d\x8e",
++ [17432] = "\x9d\x92", [17436] = "\x94\xc0", [17437] = "\x93\x8b",
++ [17444] = "\x9d\x8b", [17446] = "\x9d\x8f", [17450] = "\x8c\x67",
++ [17454] = "\x8d\xef", [17458] = "\x90\xdb", [17470] = "\x9d\x97",
++ [17480] = "\x93\x45", [17488] = "\xfa\xca", [17495] = "\x9d\x94",
++ [17497] = "\x96\x80", [17503] = "\x9d\x95", [17510] = "\x9d\x96",
++ [17512] = "\x96\xcc", [17514] = "\x90\xa0", [17523] = "\x8c\x82",
++ [17528] = "\x9d\x9d", [17538] = "\x8e\x54", [17539] = "\x9d\x9a",
++ [17541] = "\x9d\x99", [17546] = "\x94\x51", [17549] = "\xfa\xcb",
++ [17550] = "\x93\xb3", [17556] = "\x93\x50", [17557] = "\x9d\x9b",
++ [17561] = "\x9d\x9c", [17563] = "\x95\x8f", [17565] = "\x94\x64",
++ [17566] = "\x8e\x42", [17568] = "\x90\xef", [17570] = "\x96\x6f",
++ [17577] = "\x8a\x68", [17579] = "\x9d\xa3", [17580] = "\x9d\x9e",
++ [17585] = "\x97\x69", [17586] = "\x9d\xa5", [17589] = "\x9d\xa1",
++ [17591] = "\x9d\xa2", [17597] = "\x91\x80", [17598] = "\xfa\xcc",
++ [17602] = "\x9d\xa0", [17604] = "\x9d\x5e", [17608] = "\x9d\xa4",
++ [17610] = "\x9d\x9f", [17616] = "\x9d\xa9", [17617] = "\x9d\xaa",
++ [17618] = "\x93\x46", [17619] = "\x9d\xac", [17622] = "\x8e\x43",
++ [17623] = "\x9d\xa7", [17628] = "\x8b\x5b", [17631] = "\x9d\xad",
++ [17633] = "\x9d\xa6", [17634] = "\x9d\xb1", [17636] = "\x9d\xb0",
++ [17638] = "\x9d\xaf", [17642] = "\x9d\xb2", [17645] = "\x9d\xb4",
++ [17646] = "\x8f\xef", [17648] = "\x9d\xb3", [17653] = "\x9d\xb7",
++ [17672] = "\x9d\xb5", [17676] = "\x9d\xb6", [17677] = "\x9d\x90",
++ [17683] = "\x9d\xb9", [17684] = "\x9d\xb8", [17690] = "\x9d\x98",
++ [17691] = "\x9d\xba", [17692] = "\x9d\xae", [17695] = "\x8e\x78",
++ [17700] = "\x9d\xbb", [17701] = "\x9d\xbc", [17702] = "\x9d\xbe",
++ [17703] = "\x9d\xbd", [17704] = "\x9d\xbf", [17705] = "\x89\xfc",
++ [17707] = "\x8d\x55", [17710] = "\x95\xfa", [17711] = "\x90\xad",
++ [17717] = "\x8c\xcc", [17720] = "\x9d\xc1", [17725] = "\x9d\xc4",
++ [17726] = "\xfa\xcd", [17727] = "\x95\x71", [17729] = "\x8b\x7e",
++ [17733] = "\x9d\xc3", [17734] = "\x9d\xc2", [17735] = "\x94\x73",
++ [17736] = "\x9d\xc5", [17737] = "\x8b\xb3", [17741] = "\x9d\xc7",
++ [17742] = "\x9d\xc6", [17746] = "\x8a\xb8", [17747] = "\x8e\x55",
++ [17750] = "\x93\xd6", [17756] = "\x8c\x68", [17760] = "\x90\x94",
++ [17762] = "\x9d\xc8", [17764] = "\x90\xae", [17765] = "\x93\x47",
++ [17767] = "\x95\x7e", [17768] = "\x9d\xc9", [17778] = "\x9d\xca",
++ [17779] = "\x9d\xcb", [17783] = "\x95\xb6", [17784] = "\x9b\x7c",
++ [17785] = "\x90\xc4", [17788] = "\x95\x6b", [17790] = "\x8d\xd6",
++ [17792] = "\x94\xe3", [17793] = "\x94\xc1", [17799] = "\x93\x6c",
++ [17801] = "\x97\xbf", [17803] = "\x9d\xcd", [17804] = "\x8e\xce",
++ [17807] = "\x9d\xce", [17809] = "\x88\xb4", [17812] = "\x8b\xd2",
++ [17813] = "\x90\xcb", [17815] = "\x95\x80", [17819] = "\x9d\xcf",
++ [17820] = "\x8e\x61", [17821] = "\x92\x66", [17823] = "\x8e\x7a",
++ [17824] = "\x90\x56", [17831] = "\x9d\xd0", [17833] = "\x95\xfb",
++ [17836] = "\x89\x97", [17837] = "\x8e\x7b", [17841] = "\x9d\xd3",
++ [17843] = "\x9d\xd1", [17844] = "\x9d\xd4", [17845] = "\x97\xb7",
++ [17846] = "\x9d\xd2", [17851] = "\x90\xf9", [17852] = "\x9d\xd5",
++ [17855] = "\x91\xb0", [17858] = "\x9d\xd6", [17863] = "\x8a\xf8",
++ [17865] = "\x9d\xd8", [17867] = "\x9d\xd7", [17872] = "\x9d\xd9",
++ [17873] = "\x9d\xda", [17874] = "\x8a\xf9", [17877] = "\x93\xfa",
++ [17878] = "\x92\x55", [17879] = "\x8b\x8c", [17880] = "\x8e\x7c",
++ [17881] = "\x91\x81", [17884] = "\x8f\x7b", [17885] = "\x88\xae",
++ [17889] = "\x9d\xdb", [17898] = "\x89\xa0", [17899] = "\x9d\xdf",
++ [17904] = "\xfa\xce", [17906] = "\x8d\x56", [17907] = "\x9d\xde",
++ [17910] = "\x8d\xa9", [17911] = "\x8f\xb8", [17913] = "\xfa\xd1",
++ [17914] = "\x9d\xdd", [17916] = "\x8f\xb9", [17918] = "\x96\xbe",
++ [17919] = "\x8d\xa8", [17923] = "\x88\xd5", [17924] = "\x90\xcc",
++ [17925] = "\xfa\xcf", [17932] = "\x9d\xe4", [17934] = "\xfa\xd3",
++ [17935] = "\x90\xaf", [17936] = "\x89\x66", [17940] = "\xfa\xd4",
++ [17941] = "\x8f\x74", [17943] = "\x96\x86", [17944] = "\x8d\xf0",
++ [17949] = "\x8f\xba", [17950] = "\xfa\xd2", [17951] = "\x90\xa5",
++ [17953] = "\xfa\x63", [17956] = "\x9d\xe3", [17957] = "\x9d\xe1",
++ [17958] = "\x9d\xe2", [17963] = "\xfa\xd0", [17964] = "\x92\x8b",
++ [17967] = "\x9e\x45", [17969] = "\x9d\xe8", [17970] = "\x8e\x9e",
++ [17971] = "\x8d\x57", [17972] = "\x9d\xe6", [17977] = "\x9d\xe7",
++ [17979] = "\x90\x57", [17983] = "\x9d\xe5", [17986] = "\x8e\x4e",
++ [17991] = "\xfa\xd6", [17993] = "\xfa\xd7", [17997] = "\x9d\xea",
++ [17998] = "\x9d\xe9", [17999] = "\x9d\xee", [18002] = "\x9d\xef",
++ [18004] = "\x9d\xeb", [18005] = "\xfa\xd5", [18006] = "\x8a\x41",
++ [18007] = "\x9d\xec", [18008] = "\x9d\xed", [18009] = "\x94\xd3",
++ [18014] = "\x95\x81", [18015] = "\x8c\x69", [18016] = "\x9d\xf0",
++ [18019] = "\xfa\xd9", [18020] = "\x90\xb0", [18022] = "\x8f\xbb",
++ [18026] = "\x92\x71", [18033] = "\x8b\xc5", [18035] = "\x9d\xf1",
++ [18036] = "\x9d\xf5", [18039] = "\x89\xc9", [18040] = "\x9d\xf2",
++ [18041] = "\x9d\xf4", [18046] = "\x9d\xf3", [18049] = "\x8f\x8b",
++ [18054] = "\x92\x67", [18055] = "\x88\xc3", [18056] = "\x9d\xf6",
++ [18057] = "\xfa\xda", [18061] = "\x9d\xf7", [18064] = "\xfa\xdb",
++ [18066] = "\x92\xa8", [18070] = "\x97\xef", [18075] = "\x8e\x62",
++ [18078] = "\x95\xe9", [18082] = "\xfa\xdc", [18084] = "\x96\x5c",
++ [18088] = "\x9e\x41", [18089] = "\x9d\xf9", [18092] = "\x9d\xfc",
++ [18094] = "\x9d\xfb", [18095] = "\xfa\xdd", [18097] = "\x9d\xf8",
++ [18100] = "\x9e\x40", [18103] = "\x93\xdc", [18105] = "\x9d\xfa",
++ [18118] = "\x9e\x42", [18121] = "\x8f\x8c", [18122] = "\x9e\x43",
++ [18124] = "\x97\x6a", [18125] = "\x94\x98", [18128] = "\x9e\x44",
++ [18134] = "\x9e\x46", [18137] = "\x9e\x47", [18144] = "\x9e\x48",
++ [18146] = "\x8b\xc8", [18147] = "\x89\x67", [18148] = "\x8d\x58",
++ [18149] = "\x9e\x49", [18151] = "\x9e\x4a", [18152] = "\x8f\x91",
++ [18153] = "\x91\x82", [18154] = "\xfa\xde", [18155] = "\xfa\x66",
++ [18156] = "\x99\xd6", [18157] = "\x91\x5d", [18158] = "\x91\x5c",
++ [18159] = "\x91\xd6", [18160] = "\x8d\xc5", [18163] = "\x98\xf0",
++ [18168] = "\x8c\x8e", [18169] = "\x97\x4c", [18171] = "\x95\xfc",
++ [18173] = "\x95\x9e", [18174] = "\xfa\xdf", [18175] = "\x9e\x4b",
++ [18180] = "\x8d\xf1", [18181] = "\x92\xbd", [18182] = "\x9e\x4c",
++ [18183] = "\x98\x4e", [18187] = "\x96\x5d", [18189] = "\x92\xa9",
++ [18190] = "\x9e\x4d", [18191] = "\x8a\xfa", [18198] = "\x9e\x4e",
++ [18199] = "\x9e\x4f", [18200] = "\x96\xd8", [18202] = "\x96\xa2",
++ [18203] = "\x96\x96", [18204] = "\x96\x7b", [18205] = "\x8e\x44",
++ [18206] = "\x9e\x51", [18209] = "\x8e\xe9", [18212] = "\x96\x70",
++ [18214] = "\x9e\x53", [18215] = "\x9e\x56", [18216] = "\x9e\x55",
++ [18218] = "\x8a\xf7", [18221] = "\x8b\x80", [18223] = "\x9e\x52",
++ [18225] = "\x9e\x54", [18230] = "\x9e\x57", [18233] = "\x90\x99",
++ [18238] = "\x97\x9b", [18239] = "\x88\xc7", [18240] = "\x8d\xde",
++ [18241] = "\x91\xba", [18243] = "\x8e\xdb", [18246] = "\x8f\xf1",
++ [18249] = "\x9e\x5a", [18252] = "\x93\x6d", [18254] = "\x9e\x58",
++ [18255] = "\x91\xa9", [18256] = "\x9e\x59", [18257] = "\x8f\xf0",
++ [18258] = "\x96\xdb", [18259] = "\x9e\x5b", [18260] = "\x9e\x5c",
++ [18261] = "\x97\x88", [18262] = "\xfa\xe1", [18266] = "\x9e\x61",
++ [18269] = "\x8d\x59", [18271] = "\x94\x74", [18272] = "\x9e\x5e",
++ [18273] = "\x93\x8c", [18274] = "\x9d\xdc", [18275] = "\x9d\xe0",
++ [18277] = "\x8b\x6e", [18279] = "\x94\x66", [18284] = "\x9e\x60",
++ [18286] = "\x8f\xbc", [18287] = "\x94\xc2", [18293] = "\x9e\x66",
++ [18295] = "\x94\xf8", [18297] = "\x9e\x5d", [18299] = "\x9e\x63",
++ [18300] = "\x9e\x62", [18304] = "\x90\xcd", [18309] = "\x96\x8d",
++ [18311] = "\x97\xd1", [18314] = "\x96\x87", [18316] = "\x89\xca",
++ [18317] = "\x8e\x7d", [18320] = "\x98\x67", [18321] = "\x9e\x65",
++ [18322] = "\x90\x95", [18326] = "\x9e\x64", [18329] = "\x9e\x5f",
++ [18335] = "\x8c\xcd", [18339] = "\x9e\x6b", [18340] = "\x9e\x69",
++ [18342] = "\x89\xcb", [18343] = "\x9e\x67", [18344] = "\x9e\x6d",
++ [18345] = "\x9e\x73", [18347] = "\xfa\xe2", [18352] = "\xfa\xe4",
++ [18353] = "\x91\xc6", [18356] = "\x95\xbf", [18358] = "\x9e\x75",
++ [18362] = "\x95\x41", [18366] = "\x9e\x74", [18367] = "\x94\x90",
++ [18368] = "\x96\x5e", [18369] = "\x8a\xb9", [18371] = "\x90\xf5",
++ [18372] = "\x8f\x5f", [18376] = "\x92\xd1", [18378] = "\x97\x4d",
++ [18381] = "\x9e\x70", [18382] = "\x9e\x6f", [18386] = "\x9e\x71",
++ [18388] = "\x9e\x6e", [18391] = "\x9e\x76", [18393] = "\x9e\x6c",
++ [18396] = "\x9e\x6a", [18398] = "\x9e\x72", [18399] = "\x9e\x68",
++ [18401] = "\x92\x8c", [18403] = "\x96\xf6", [18404] = "\x8e\xc4",
++ [18405] = "\x8d\xf2", [18411] = "\x8d\xb8", [18414] = "\x96\x8f",
++ [18415] = "\x8a\x60", [18417] = "\xfa\xe5", [18418] = "\x92\xcc",
++ [18419] = "\x93\xc8", [18420] = "\x89\x68", [18435] = "\x90\xf0",
++ [18438] = "\x90\xb2", [18439] = "\x8c\x49", [18446] = "\x9e\x78",
++ [18449] = "\x8d\x5a", [18450] = "\x8a\x9c", [18457] = "\x9e\x7a",
++ [18458] = "\x8a\x94", [18459] = "\x9e\x81", [18466] = "\x9e\x7d",
++ [18468] = "\x90\xf1", [18472] = "\x8a\x6a", [18473] = "\x8d\xaa",
++ [18476] = "\x8a\x69", [18477] = "\x8d\xcd", [18480] = "\x9e\x7b",
++ [18481] = "\x8c\x85", [18482] = "\x8c\x6a", [18483] = "\x93\x8d",
++ [18484] = "\xfa\xe6", [18486] = "\x9e\x79", [18488] = "\x88\xc4",
++ [18493] = "\x9e\x7c", [18494] = "\x9e\x7e", [18496] = "\x8b\xcb",
++ [18497] = "\x8c\x4b", [18498] = "\xfa\xe3", [18499] = "\x8a\xba",
++ [18500] = "\x8b\x6a", [18505] = "\x9e\x82", [18508] = "\x8d\xf7",
++ [18509] = "\x96\x91", [18511] = "\x8e\x56", [18515] = "\x9e\x83",
++ [18519] = "\x95\x4f", [18532] = "\x9e\x8f", [18534] = "\x89\xb1",
++ [18535] = "\x9e\x84", [18542] = "\x9e\x95", [18543] = "\x9e\x85",
++ [18545] = "\x97\xc0", [18547] = "\x9e\x8c", [18549] = "\x94\x7e",
++ [18557] = "\x9e\x94", [18559] = "\x9e\x87", [18563] = "\x88\xb2",
++ [18564] = "\x9e\x89", [18567] = "\x8d\x5b", [18571] = "\x9e\x8b",
++ [18573] = "\x9e\x8a", [18575] = "\x9e\x86", [18576] = "\x9e\x91",
++ [18578] = "\x8f\xbd", [18582] = "\x9a\xeb", [18583] = "\x8c\xe6",
++ [18584] = "\x97\x9c", [18589] = "\x9e\x88", [18591] = "\x92\xf2",
++ [18592] = "\x8a\x42", [18593] = "\x8d\xab", [18595] = "\x9e\x80",
++ [18597] = "\x9e\x90", [18598] = "\x8a\x81", [18601] = "\x9e\x8e",
++ [18602] = "\x9e\x92", [18604] = "\x93\x8e", [18612] = "\x8a\xfc",
++ [18614] = "\x9e\xb0", [18616] = "\xfa\x64", [18617] = "\x96\xc7",
++ [18618] = "\x9e\x97", [18619] = "\x8a\xfb", [18621] = "\x9e\x9e",
++ [18623] = "\xfa\xe7", [18626] = "\x96\x5f", [18628] = "\x9e\x9f",
++ [18629] = "\x9e\xa1", [18631] = "\x9e\xa5", [18632] = "\x9e\x99",
++ [18634] = "\x92\x49", [18639] = "\x93\x8f", [18640] = "\x9e\xa9",
++ [18641] = "\x9e\x9c", [18643] = "\x9e\xa6", [18647] = "\x9e\xa0",
++ [18654] = "\x90\x58", [18655] = "\x9e\xaa", [18658] = "\x90\xb1",
++ [18665] = "\x9e\xa8", [18666] = "\x8a\xbb", [18672] = "\x98\x6f",
++ [18673] = "\x9e\x96", [18676] = "\x9e\xa4", [18677] = "\x88\xd6",
++ [18680] = "\x9e\x98", [18683] = "\x96\xb8", [18684] = "\x9e\x9d",
++ [18685] = "\x90\x41", [18686] = "\x92\xc5", [18687] = "\x9e\x93",
++ [18690] = "\x9e\xa3", [18697] = "\x90\x9a", [18698] = "\x9e\xad",
++ [18699] = "\x8a\x91", [18700] = "\x8c\x9f", [18705] = "\x9e\xaf",
++ [18706] = "\x9e\x9a", [18707] = "\x9e\xae", [18709] = "\x9e\xa7",
++ [18710] = "\x9e\x9b", [18712] = "\x9e\xab", [18714] = "\x9e\xac",
++ [18720] = "\x9e\xbd", [18724] = "\x93\xcc", [18726] = "\x9e\xa2",
++ [18729] = "\x9e\xb9", [18733] = "\x9e\xbb", [18735] = "\x92\xd6",
++ [18746] = "\x97\x6b", [18755] = "\x95\x96", [18756] = "\x9e\xb6",
++ [18757] = "\x91\xc8", [18761] = "\x9e\xbc", [18762] = "\x91\x5e",
++ [18764] = "\x9e\xb3", [18765] = "\x9e\xc0", [18766] = "\x9e\xbf",
++ [18768] = "\x93\xed", [18769] = "\x9e\xbe", [18770] = "\x93\xe8",
++ [18776] = "\xfa\xe9", [18778] = "\x9e\xc2", [18779] = "\x9e\xb5",
++ [18781] = "\x8b\xc6", [18782] = "\x9e\xb8", [18783] = "\x8f\x7c",
++ [18787] = "\x94\x80", [18788] = "\x9e\xba", [18789] = "\x8b\xc9",
++ [18791] = "\x9e\xb2", [18792] = "\x9e\xb4", [18793] = "\x9e\xb1",
++ [18796] = "\x98\x4f", [18797] = "\x8a\x79", [18798] = "\x9e\xb7",
++ [18801] = "\x9e\xc1", [18802] = "\x8a\x54", [18810] = "\x8d\xe5",
++ [18814] = "\x89\x7c", [18817] = "\x9e\xd2", [18820] = "\x98\x50",
++ [18821] = "\x9e\xd5", [18824] = "\xfa\xeb", [18827] = "\x90\x59",
++ [18828] = "\x9e\xd4", [18832] = "\x9e\xd3", [18839] = "\x9e\xd0",
++ [18846] = "\x9e\xc4", [18849] = "\x9e\xe1", [18850] = "\x9e\xc3",
++ [18852] = "\x9e\xd6", [18859] = "\x9e\xce", [18862] = "\x9e\xc9",
++ [18863] = "\x9e\xc6", [18865] = "\x9e\xc7", [18867] = "\x9e\xcf",
++ [18871] = "\xea\xa0", [18874] = "\x9e\xcc", [18875] = "\x8d\x5c",
++ [18876] = "\x92\xc6", [18877] = "\x91\x84", [18878] = "\x9e\xca",
++ [18880] = "\x9e\xc5", [18883] = "\x9e\xc8", [18888] = "\x97\x6c",
++ [18889] = "\x96\x8a", [18893] = "\x9e\xcd", [18894] = "\x9e\xd7",
++ [18898] = "\xfa\xec", [18903] = "\x9e\xdf", [18904] = "\x9e\xd8",
++ [18907] = "\x9e\xe5", [18909] = "\x9e\xe3", [18914] = "\x9e\xde",
++ [18921] = "\x9e\xdd", [18923] = "\x92\xce", [18925] = "\x91\x85",
++ [18927] = "\x9e\xdb", [18930] = "\x9e\xd9", [18933] = "\x9e\xe0",
++ [18938] = "\x9e\xe6", [18939] = "\x94\xf3", [18940] = "\x9e\xec",
++ [18946] = "\x9e\xe7", [18947] = "\x9e\xea", [18948] = "\x9e\xe4",
++ [18951] = "\x92\x94", [18953] = "\x95\x57", [18955] = "\x9e\xda",
++ [18958] = "\x9e\xe2", [18959] = "\x8f\xbe", [18961] = "\x96\xcd",
++ [18962] = "\x9e\xf6", [18963] = "\x9e\xe9", [18969] = "\x8c\xa0",
++ [18970] = "\x89\xa1", [18971] = "\x8a\x7e", [18974] = "\x9e\xd1",
++ [18976] = "\xfa\xed", [18981] = "\x8f\xbf", [18982] = "\x9e\xee",
++ [18984] = "\x9e\xf5", [18985] = "\x8e\xf7", [18986] = "\x8a\x92",
++ [18989] = "\x92\x4d", [18996] = "\x9e\xeb", [18998] = "\xfa\xef",
++ [18999] = "\x9e\xf0", [19000] = "\x9e\xf4", [19003] = "\x8b\xb4",
++ [19016] = "\x8b\x6b", [19017] = "\x9e\xf2", [19023] = "\x8b\x40",
++ [19025] = "\x93\xc9", [19026] = "\x9e\xf1", [19030] = "\x9e\xf3",
++ [19035] = "\xfa\xee", [19042] = "\x9e\xed", [19043] = "\xfa\xf0",
++ [19048] = "\x9e\xef", [19054] = "\xfa\xf1", [19055] = "\x8a\x80",
++ [19056] = "\x92\x68", [19060] = "\x9e\xfa", [19069] = "\x9e\xf8",
++ [19070] = "\x8c\xe7", [19072] = "\x9e\xf7", [19079] = "\x9f\x40",
++ [19084] = "\x9e\x77", [19088] = "\x9e\xf9", [19090] = "\x9e\xfb",
++ [19091] = "\x9e\xfc", [19098] = "\x9f\x4b", [19100] = "\x9f\x47",
++ [19102] = "\x9e\x8d", [19107] = "\x9f\x46", [19112] = "\x9f\x45",
++ [19115] = "\x9f\x42", [19121] = "\x9e\xe8", [19122] = "\x9f\x44",
++ [19123] = "\x9f\x43", [19137] = "\x9f\x49", [19139] = "\x98\x45",
++ [19146] = "\x9f\x4c", [19147] = "\x8b\xf9", [19150] = "\x9f\x48",
++ [19151] = "\x9f\x4a", [19154] = "\xfa\xf2", [19156] = "\xfa\xf3",
++ [19160] = "\x94\xa5", [19162] = "\x9f\x4d", [19178] = "\x9f\x51",
++ [19179] = "\x9f\x4e", [19188] = "\x97\x93", [19189] = "\x9f\x4f",
++ [19194] = "\x9e\xdc", [19202] = "\x9f\x52", [19206] = "\x9f\x53",
++ [19213] = "\x89\x54", [19215] = "\x9f\x55", [19216] = "\x8c\x87",
++ [19217] = "\x8e\x9f", [19219] = "\x8b\xd3", [19223] = "\x89\xa2",
++ [19234] = "\x97\x7e", [19239] = "\x9f\x57", [19240] = "\x9f\x56",
++ [19241] = "\x9f\x59", [19242] = "\x8b\x5c", [19245] = "\x8b\xd4",
++ [19246] = "\x8a\xbc", [19251] = "\x9f\x5c", [19255] = "\x9f\x5b",
++ [19257] = "\x9f\x5d", [19260] = "\x89\xcc", [19262] = "\x92\x56",
++ [19264] = "\x9f\x5e", [19267] = "\x8a\xbd", [19268] = "\x9f\x60",
++ [19273] = "\x9f\x5f", [19275] = "\x9f\x61", [19279] = "\x9f\x62",
++ [19281] = "\x9f\x63", [19282] = "\x8e\x7e", [19283] = "\x90\xb3",
++ [19284] = "\x8d\x9f", [19286] = "\x95\x90", [19289] = "\x95\xe0",
++ [19290] = "\x98\x63", [19295] = "\x8e\x95", [19299] = "\x8d\xce",
++ [19300] = "\x97\xf0", [19304] = "\x9f\x64", [19305] = "\x9f\x65",
++ [19307] = "\x8e\x80", [19311] = "\x9f\x66", [19312] = "\x9f\x67",
++ [19315] = "\x9f\x69", [19316] = "\x9f\x68", [19318] = "\x96\x77",
++ [19321] = "\x8f\x7d", [19322] = "\x8e\xea", [19323] = "\x8e\x63",
++ [19325] = "\x9f\x6a", [19333] = "\x9f\x6c", [19334] = "\x90\x42",
++ [19336] = "\x9f\x6b", [19342] = "\x9f\x6d", [19348] = "\x9f\x6e",
++ [19354] = "\x9f\x6f", [19355] = "\x9f\x70", [19359] = "\x9f\x71",
++ [19361] = "\x9f\x73", [19362] = "\x9f\x72", [19363] = "\x9f\x74",
++ [19364] = "\x89\xa3", [19365] = "\x92\x69", [19367] = "\x9f\x75",
++ [19370] = "\x8e\x45", [19371] = "\x8a\x6b", [19372] = "\x9f\x76",
++ [19375] = "\x93\x61", [19376] = "\x9a\xca", [19381] = "\x8b\x42",
++ [19382] = "\x9f\x77", [19387] = "\x9f\x78", [19389] = "\x95\xea",
++ [19390] = "\x96\x88", [19394] = "\x93\xc5", [19395] = "\x9f\x79",
++ [19396] = "\x94\xe4", [19398] = "\xfa\xf4", [19400] = "\x94\xf9",
++ [19403] = "\x96\xd1", [19407] = "\x9f\x7a", [19419] = "\x9f\x7c",
++ [19420] = "\x9f\x7b", [19423] = "\x9f\x7e", [19427] = "\x9f\x7d",
++ [19448] = "\x9f\x81", [19455] = "\x8e\x81", [19457] = "\x96\xaf",
++ [19459] = "\x9f\x82", [19460] = "\x9f\x83", [19463] = "\x8b\x43",
++ [19467] = "\x9f\x84", [19475] = "\x9f\x86", [19476] = "\x9f\x85",
++ [19492] = "\x90\x85", [19495] = "\x95\x58", [19496] = "\x89\x69",
++ [19502] = "\x94\xc3", [19503] = "\xfa\xf5", [19504] = "\x92\xf3",
++ [19505] = "\x8f\x60", [19506] = "\x8b\x81", [19518] = "\x94\xc4",
++ [19520] = "\x8e\xac", [19525] = "\x9f\x88", [19527] = "\x8a\xbe",
++ [19530] = "\x89\x98", [19532] = "\xfa\xf6", [19533] = "\x93\xf0",
++ [19534] = "\x9f\x87", [19535] = "\x8d\x5d", [19536] = "\x92\x72",
++ [19538] = "\x9f\x89", [19544] = "\x9f\x91", [19546] = "\x9f\x8a",
++ [19551] = "\xfa\xf8", [19552] = "\x91\xbf", [19554] = "\x8b\x82",
++ [19555] = "\x9f\x92", [19562] = "\x8c\x88", [19565] = "\x8b\x44",
++ [19566] = "\x9f\x90", [19569] = "\x9f\x8e", [19570] = "\x9f\x8b",
++ [19571] = "\x97\x80", [19574] = "\xfa\xf7", [19576] = "\x92\xbe",
++ [19580] = "\x93\xd7", [19581] = "\x9f\x8c", [19584] = "\x9f\x94",
++ [19586] = "\x9f\x93", [19587] = "\x8c\x42", [19590] = "\x89\xab",
++ [19593] = "\x8d\xb9", [19594] = "\x9f\x8d", [19595] = "\x9f\x8f",
++ [19601] = "\x96\x76", [19602] = "\x91\xf2", [19611] = "\x96\x97",
++ [19614] = "\x9f\x9c", [19617] = "\x9f\x9d", [19619] = "\x89\xcd",
++ [19624] = "\x95\xa6", [19625] = "\x96\xfb", [19626] = "\x9f\x9f",
++ [19627] = "\x8e\xa1", [19628] = "\x8f\xc0", [19629] = "\x9f\x98",
++ [19630] = "\x9f\x9e", [19631] = "\x89\x88", [19633] = "\x8b\xb5",
++ [19636] = "\x9f\x95", [19637] = "\x9f\x9a", [19641] = "\x90\xf2",
++ [19642] = "\x94\x91", [19644] = "\x94\xe5", [19651] = "\x9f\x97",
++ [19653] = "\x96\x40", [19655] = "\x9f\x99", [19657] = "\x9f\xa2",
++ [19658] = "\xfa\xf9", [19659] = "\x9f\xa0", [19661] = "\x9f\x9b",
++ [19665] = "\x96\x41", [19666] = "\x94\x67", [19667] = "\x8b\x83",
++ [19669] = "\x93\x44", [19672] = "\x92\x8d", [19674] = "\x9f\xa3",
++ [19679] = "\x9f\xa1", [19680] = "\x91\xd7", [19681] = "\x9f\x96",
++ [19683] = "\x89\x6a", [19700] = "\xfa\xfa", [19707] = "\x97\x6d",
++ [19708] = "\x9f\xae", [19714] = "\x9f\xad", [19719] = "\x90\xf4",
++ [19721] = "\x9f\xaa", [19723] = "\x97\x8c", [19726] = "\x93\xb4",
++ [19727] = "\x9f\xa4", [19733] = "\x92\xc3", [19737] = "\x89\x6b",
++ [19738] = "\x8d\x5e", [19739] = "\x9f\xa7", [19746] = "\x8f\x46",
++ [19747] = "\x9f\xac", [19749] = "\x9f\xab", [19750] = "\x9f\xa6",
++ [19752] = "\x9f\xa9", [19755] = "\x8a\x88", [19757] = "\x9f\xa8",
++ [19758] = "\x94\x68", [19761] = "\x97\xac", [19764] = "\x8f\xf2",
++ [19765] = "\x90\xf3", [19785] = "\x9f\xb4", [19786] = "\x9f\xb2",
++ [19788] = "\x95\x6c", [19795] = "\x9f\xaf", [19796] = "\x9f\xb1",
++ [19798] = "\x89\x59", [19801] = "\x8d\x5f", [19802] = "\x98\x51",
++ [19804] = "\x8a\x5c", [19806] = "\x95\x82", [19807] = "\xfa\xfc",
++ [19812] = "\x97\x81", [19815] = "\x8a\x43", [19816] = "\x90\x5a",
++ [19817] = "\x9f\xb3", [19829] = "\x9f\xb8", [19831] = "\xfa\xfb",
++ [19832] = "\x8f\xc1", [19836] = "\x97\x4f", [19838] = "\x9f\xb5",
++ [19843] = "\x9f\xb0", [19845] = "\x9f\xb6", [19846] = "\xfb\x40",
++ [19849] = "\x97\xdc", [19851] = "\x93\x93", [19852] = "\x93\xc0",
++ [19868] = "\xfb\x41", [19871] = "\x8a\x55", [19874] = "\x89\x74",
++ [19877] = "\x9f\xbc", [19880] = "\x9f\xbf", [19884] = "\x97\xc1",
++ [19888] = "\x97\x84", [19893] = "\x9f\xc6", [19894] = "\x9f\xc0",
++ [19895] = "\x9f\xbd", [19899] = "\x97\xd2", [19900] = "\x9f\xc3",
++ [19903] = "\xfb\x42", [19905] = "\x8f\x69", [19906] = "\x9f\xc5",
++ [19909] = "\x9f\xca", [19912] = "\x93\x91", [19913] = "\x9f\xc8",
++ [19918] = "\x9f\xc2", [19921] = "\x92\x57", [19924] = "\x9f\xc9",
++ [19926] = "\x9f\xbe", [19928] = "\x9f\xc4", [19930] = "\x9f\xcb",
++ [19931] = "\x88\xfa", [19932] = "\x9f\xc1", [19934] = "\x9f\xcc",
++ [19937] = "\x90\x5b", [19938] = "\xfb\x44", [19939] = "\x8f\x7e",
++ [19941] = "\x95\xa3", [19943] = "\x8d\xac", [19944] = "\xfb\x43",
++ [19945] = "\x9f\xb9", [19946] = "\x9f\xc7", [19947] = "\x93\x59",
++ [19948] = "\xfb\x45", [19957] = "\x90\xb4", [19959] = "\x8a\x89",
++ [19960] = "\x8d\xcf", [19961] = "\x8f\xc2", [19962] = "\x9f\xbb",
++ [19963] = "\x8f\x61", [19971] = "\x8c\x6b", [19973] = "\x9f\xba",
++ [19977] = "\x9f\xd0", [19978] = "\x8f\x8d", [19979] = "\x8c\xb8",
++ [19981] = "\x9f\xdf", [19983] = "\x9f\xd9", [19984] = "\x8b\x94",
++ [19985] = "\x93\x6e", [19987] = "\x9f\xd4", [19988] = "\x9f\xdd",
++ [19989] = "\x88\xad", [19990] = "\x89\x51", [19991] = "\xfb\x48",
++ [19993] = "\x89\xb7", [19995] = "\x9f\xd6", [19996] = "\x91\xaa",
++ [19997] = "\x9f\xcd", [19998] = "\x9f\xcf", [19999] = "\x8d\x60",
++ [20008] = "\x9f\xe0", [20009] = "\xfb\x46", [20010] = "\x9f\xdb",
++ [20012] = "\xfb\x49", [20014] = "\x9f\xd3", [20019] = "\x9f\xda",
++ [20026] = "\x96\xa9", [20029] = "\x9f\xd8", [20030] = "\x9f\xdc",
++ [20038] = "\x8c\xce", [20040] = "\x8f\xc3", [20043] = "\x92\x58",
++ [20044] = "\xfb\x47", [20047] = "\x9f\xd2", [20055] = "\x97\x4e",
++ [20059] = "\x9f\xd5", [20062] = "\x9f\xce", [20063] = "\x93\x92",
++ [20066] = "\x9f\xd1", [20070] = "\x9f\xd7", [20078] = "\x98\x70",
++ [20079] = "\x8e\xbc", [20080] = "\x96\x9e", [20082] = "\x9f\xe1",
++ [20092] = "\x94\xac", [20095] = "\x9f\xed", [20096] = "\x8c\xb9",
++ [20102] = "\x8f\x80", [20104] = "\x9f\xe3", [20108] = "\x97\xad",
++ [20109] = "\x8d\x61", [20111] = "\x9f\xf0", [20114] = "\x88\xec",
++ [20117] = "\x9f\xee", [20122] = "\x9f\xe2", [20127] = "\x9f\xe8",
++ [20130] = "\x9f\xea", [20134] = "\x97\x6e", [20135] = "\x9f\xe5",
++ [20138] = "\x93\x4d", [20141] = "\x9f\xe7", [20143] = "\xfb\x4a",
++ [20146] = "\x9f\xef", [20148] = "\x9f\xe9", [20149] = "\x96\xc5",
++ [20153] = "\x9f\xe4", [20155] = "\x8e\xa0", [20156] = "\x9f\xfc",
++ [20161] = "\x8a\x8a", [20163] = "\x9f\xe6", [20164] = "\x9f\xeb",
++ [20165] = "\x9f\xec", [20173] = "\x91\xea", [20174] = "\x91\xd8",
++ [20188] = "\x9f\xf4", [20191] = "\x9f\xfa", [20194] = "\x9f\xf8",
++ [20196] = "\x93\x48", [20199] = "\xe0\x42", [20200] = "\x9f\xf5",
++ [20206] = "\x9f\xf6", [20207] = "\x9f\xde", [20209] = "\x8b\x99",
++ [20210] = "\x95\x59", [20214] = "\x8e\xbd", [20217] = "\x8d\x97",
++ [20223] = "\x98\x52", [20225] = "\x9f\xf2", [20227] = "\xe0\x41",
++ [20228] = "\x89\x89", [20229] = "\x91\x86", [20240] = "\x94\x99",
++ [20242] = "\x8a\xbf", [20243] = "\x97\xf8", [20251] = "\x96\x9f",
++ [20252] = "\x92\xd0", [20257] = "\x9f\xf9", [20258] = "\x9f\xfb",
++ [20264] = "\x91\x51", [20270] = "\xe0\x40", [20271] = "\x9f\xf7",
++ [20273] = "\x9f\xf1", [20277] = "\x8a\xc1", [20292] = "\x8c\x89",
++ [20296] = "\xe0\x4e", [20299] = "\xe0\x49", [20300] = "\x90\xf6",
++ [20303] = "\x8a\x83", [20308] = "\x8f\x81", [20310] = "\xe0\x52",
++ [20317] = "\xe0\x4b", [20318] = "\x92\xaa", [20319] = "\xe0\x48",
++ [20320] = "\x92\xd7", [20324] = "\xe0\x6b", [20328] = "\xe0\x45",
++ [20330] = "\xe0\x44", [20332] = "\xe0\x4d", [20336] = "\xe0\x47",
++ [20337] = "\xe0\x46", [20338] = "\xe0\x4c", [20340] = "\x90\x9f",
++ [20342] = "\xe0\x43", [20344] = "\xfb\x4b", [20350] = "\xe0\x4f",
++ [20353] = "\xe0\x50", [20359] = "\x8a\xc0", [20369] = "\xe0\x55",
++ [20371] = "\xe0\x54", [20372] = "\xe0\x56", [20378] = "\xe0\x59",
++ [20385] = "\x93\x62", [20387] = "\xe0\x53", [20389] = "\xfb\x4c",
++ [20393] = "\xe0\x57", [20400] = "\x8c\x83", [20401] = "\x91\xf7",
++ [20402] = "\xe0\x51", [20403] = "\x94\x5a", [20406] = "\xe0\x58",
++ [20420] = "\xe0\x5d", [20421] = "\xe0\x5b", [20424] = "\xe0\x5e",
++ [20427] = "\xe0\x61", [20431] = "\xe0\x5a", [20432] = "\x8d\x8a",
++ [20433] = "\x94\x47", [20436] = "\x9f\xb7", [20443] = "\x97\x94",
++ [20444] = "\xe0\x5c", [20446] = "\xe0\x60", [20447] = "\x91\xf3",
++ [20449] = "\xe0\x5f", [20451] = "\xe0\x4a", [20453] = "\xfb\x4d",
++ [20454] = "\xe8\x89", [20458] = "\xe0\x64", [20462] = "\xe0\x68",
++ [20465] = "\xe0\x66", [20469] = "\xfb\x4e", [20471] = "\xfb\x4f",
++ [20473] = "\xe0\x62", [20475] = "\xe0\x63", [20479] = "\xe0\x67",
++ [20481] = "\xe0\x65", [20485] = "\x95\x6d", [20488] = "\xe0\x6d",
++ [20490] = "\xe0\x6a", [20491] = "\xe0\x69", [20493] = "\xe0\x6c",
++ [20494] = "\x93\xd2", [20495] = "\xe0\x6e", [20502] = "\x92\x95",
++ [20503] = "\x91\xeb", [20504] = "\xfb\x50", [20508] = "\x90\xa3",
++ [20512] = "\xe0\x6f", [20514] = "\xe0\x71", [20526] = "\xe0\x70",
++ [20540] = "\x9f\xf3", [20545] = "\xe0\x72", [20552] = "\x93\xe5",
++ [20563] = "\xe0\x73", [20571] = "\x89\xce", [20575] = "\x93\x94",
++ [20576] = "\x8a\x44", [20584] = "\x8b\x84", [20588] = "\x8e\xdc",
++ [20589] = "\x8d\xd0", [20597] = "\xfb\x51", [20601] = "\x98\x46",
++ [20602] = "\x90\x86", [20606] = "\x89\x8a", [20610] = "\xe0\x75",
++ [20617] = "\xe0\x74", [20635] = "\xfb\x52", [20636] = "\xe0\x78",
++ [20637] = "\x92\x59", [20638] = "\xe0\x7b", [20639] = "\xe0\x76",
++ [20643] = "\xe0\x7a", [20648] = "\xe0\x79", [20649] = "\x93\x5f",
++ [20650] = "\x88\xd7", [20651] = "\xfa\x62", [20664] = "\x97\xf3",
++ [20667] = "\xe0\x7d", [20671] = "\x89\x47", [20681] = "\xe0\x80",
++ [20685] = "\xe0\x7e", [20687] = "\xe0\x7c", [20705] = "\xe0\x77",
++ [20713] = "\x96\x42", [20717] = "\xe0\x82", [20724] = "\xfb\x54",
++ [20729] = "\xe0\x81", [20735] = "\xfb\x53", [20740] = "\x89\x8b",
++ [20745] = "\xe0\x84", [20746] = "\x95\xb0", [20748] = "\xe0\x83",
++ [20753] = "\x96\xb3", [20758] = "\x8f\xc5", [20774] = "\x91\x52",
++ [20780] = "\x8f\xc4", [20790] = "\xfb\x56", [20791] = "\xfb\x57",
++ [20793] = "\x97\xf9", [20796] = "\xe0\x8a", [20798] = "\x90\xf7",
++ [20805] = "\xe0\x86", [20806] = "\xe0\x8b", [20809] = "\x89\x8c",
++ [20812] = "\xfb\x55", [20818] = "\xe0\x89", [20820] = "\x94\x81",
++ [20821] = "\xe0\x85", [20822] = "\xe0\x88", [20823] = "\x8f\xc6",
++ [20825] = "\x94\xcf", [20828] = "\xe0\x8c", [20830] = "\x8e\xcf",
++ [20845] = "\x90\xf8", [20852] = "\xe0\x8f", [20856] = "\xe0\x87",
++ [20858] = "\x8c\x46", [20863] = "\xe0\x8d", [20868] = "\x97\x6f",
++ [20869] = "\xe0\x90", [20873] = "\xea\xa4", [20879] = "\x8f\x6e",
++ [20888] = "\xe0\x91", [20892] = "\xe0\x92", [20897] = "\x94\x4d",
++ [20905] = "\xe0\x94", [20910] = "\xe0\x95", [20913] = "\xfb\x59",
++ [20915] = "\x94\x52", [20920] = "\x93\x95", [20921] = "\xe0\x97",
++ [20926] = "\xe0\x99", [20928] = "\x97\xd3", [20930] = "\xe0\x96",
++ [20932] = "\xe0\x98", [20933] = "\x89\x8d", [20935] = "\xe0\x93",
++ [20943] = "\x9a\x7a", [20944] = "\xe0\x9a", [20949] = "\x91\x87",
++ [20950] = "\x8e\x57", [20951] = "\xe0\x9c", [20956] = "\xe0\x9b",
++ [20957] = "\x90\x43", [20958] = "\x99\xd7", [20965] = "\xe0\x9d",
++ [20969] = "\xe0\x9f", [20971] = "\xe0\x8e", [20972] = "\xe0\x9e",
++ [20974] = "\xfb\x5a", [20975] = "\xe0\xa0", [20982] = "\x94\x9a",
++ [20989] = "\xe0\xa1", [20992] = "\xe0\xa2", [21003] = "\xe0\xa3",
++ [21016] = "\xe0\xa4", [21018] = "\x92\xdc", [21020] = "\xe0\xa6",
++ [21021] = "\xe0\xa5", [21024] = "\xe0\xa7", [21026] = "\xe0\xa8",
++ [21029] = "\x8e\xdd", [21030] = "\x95\x83", [21034] = "\x96\xea",
++ [21035] = "\xe0\xa9", [21036] = "\xe0\xaa", [21037] = "\x91\x75",
++ [21038] = "\x8e\xa2", [21039] = "\xe0\xab", [21040] = "\xe0\xac",
++ [21046] = "\xe0\xad", [21047] = "\x95\xd0", [21048] = "\x94\xc5",
++ [21051] = "\xe0\xae", [21052] = "\x94\x76", [21058] = "\x92\xab",
++ [21064] = "\xe0\xaf", [21065] = "\x89\xe5", [21067] = "\x8b\x8d",
++ [21069] = "\x96\xc4", [21071] = "\x96\xb4", [21073] = "\x89\xb2",
++ [21074] = "\x98\x53", [21079] = "\x96\x71", [21081] = "\x95\xa8",
++ [21090] = "\x90\xb5", [21092] = "\xe0\xb0", [21097] = "\x93\xc1",
++ [21101] = "\x8c\xa1", [21102] = "\xe0\xb1", [21104] = "\x8d\xd2",
++ [21105] = "\xe0\xb3", [21106] = "\xe0\xb2", [21111] = "\xe0\xb4",
++ [21122] = "\xe0\xb5", [21126] = "\xe0\xb6", [21136] = "\x8b\x5d",
++ [21138] = "\xe0\xb7", [21143] = "\xe0\xb8", [21148] = "\x8c\xa2",
++ [21151] = "\x94\xc6", [21153] = "\xfb\x5b", [21154] = "\xe0\xba",
++ [21158] = "\x8f\xf3", [21161] = "\xe0\xb9", [21166] = "\xfb\x5c",
++ [21170] = "\x8b\xb6", [21171] = "\xe0\xbb", [21172] = "\xe0\xbd",
++ [21174] = "\xe0\xbc", [21182] = "\xe0\xbe", [21184] = "\x8c\xcf",
++ [21186] = "\xe0\xbf", [21191] = "\x8b\xe7", [21193] = "\x91\x5f",
++ [21195] = "\x8d\x9d", [21200] = "\xe0\xc1", [21201] = "\xe0\xc2",
++ [21202] = "\xe0\xc0", [21209] = "\x8e\xeb", [21212] = "\x93\xc6",
++ [21213] = "\x8b\xb7", [21223] = "\xe0\xc4", [21224] = "\x92\x4b",
++ [21225] = "\xe0\xc3", [21228] = "\x98\x54", [21229] = "\x94\x82",
++ [21242] = "\xe0\xc7", [21254] = "\xe0\xc9", [21255] = "\xe0\xc6",
++ [21259] = "\x96\xd2", [21260] = "\xe0\xc8", [21261] = "\xe0\xca",
++ [21263] = "\x97\xc2", [21268] = "\xfb\x5d", [21269] = "\xe0\xce",
++ [21273] = "\xe0\xcd", [21274] = "\x92\x96", [21275] = "\x94\x4c",
++ [21278] = "\x8c\xa3", [21279] = "\xe0\xcc", [21284] = "\xe0\xcb",
++ [21286] = "\x97\x50", [21287] = "\x97\x51", [21294] = "\xe0\xcf",
++ [21295] = "\x89\x8e", [21300] = "\x8d\x96", [21301] = "\x8e\x82",
++ [21310] = "\xe0\xd0", [21311] = "\xe0\xd1", [21319] = "\xe0\xd3",
++ [21331] = "\x8f\x62", [21336] = "\xe0\xd5", [21338] = "\xe0\xd4",
++ [21344] = "\xe0\xd6", [21346] = "\x8a\x6c", [21349] = "\xe0\xd8",
++ [21351] = "\xfb\x5f", [21352] = "\xe0\xd7", [21354] = "\xe0\xda",
++ [21355] = "\xe0\xd9", [21364] = "\x8c\xba", [21367] = "\x97\xa6",
++ [21369] = "\x8b\xca", [21371] = "\x89\xa4", [21382] = "\x8b\xe8",
++ [21401] = "\x8a\xdf", [21410] = "\x97\xe6", [21411] = "\xe0\xdc",
++ [21419] = "\xe0\xde", [21421] = "\xfb\x60", [21424] = "\xe0\xdf",
++ [21426] = "\x89\xcf", [21432] = "\xe0\xdb", [21433] = "\xfb\x61",
++ [21434] = "\x8e\x58", [21437] = "\x92\xbf", [21438] = "\xe0\xdd",
++ [21442] = "\xfb\x64", [21446] = "\xfb\x62", [21454] = "\xe0\xe2",
++ [21456] = "\x8e\xec", [21459] = "\xfb\x63", [21461] = "\xe0\xe0",
++ [21466] = "\x8c\x5d", [21469] = "\x94\xc7", [21470] = "\xe0\xe1",
++ [21473] = "\xe0\xfc", [21477] = "\xfb\x66", [21480] = "\xe0\xe7",
++ [21486] = "\x8c\xbb", [21491] = "\x8b\x85", [21493] = "\xe0\xe4",
++ [21494] = "\x97\x9d", [21495] = "\xfb\x65", [21497] = "\x97\xae",
++ [21522] = "\x91\xf4", [21525] = "\xe0\xe6", [21526] = "\xfb\x67",
++ [21529] = "\xfb\x69", [21530] = "\xfb\x68", [21534] = "\xfb\x6a",
++ [21538] = "\xe0\xe8", [21539] = "\x97\xd4", [21540] = "\x8b\xd5",
++ [21541] = "\x94\xfa", [21542] = "\x94\x69", [21546] = "\xe0\xe9",
++ [21551] = "\xe0\xeb", [21553] = "\xe0\xee", [21573] = "\xe0\xea",
++ [21577] = "\xe0\xed", [21578] = "\x8c\xe8", [21579] = "\x89\x6c",
++ [21580] = "\xe0\xef", [21582] = "\x90\x90", [21583] = "\xe0\xec",
++ [21584] = "\x97\xda", [21586] = "\xfb\x6b", [21587] = "\xe0\xf2",
++ [21588] = "\xea\xa2", [21593] = "\xe0\xf0", [21594] = "\xe0\xf3",
++ [21599] = "\xe0\xe5", [21600] = "\xe0\xf1", [21603] = "\x8d\xba",
++ [21606] = "\xe0\xf4", [21614] = "\xe0\xf5", [21619] = "\x97\x9e",
++ [21625] = "\xfb\x6c", [21627] = "\xe0\xf6", [21646] = "\xe0\xf7",
++ [21647] = "\xfb\x6d", [21650] = "\xe0\xe3", [21655] = "\xe0\xf8",
++ [21664] = "\x8a\xc2", [21677] = "\x8e\xa3", [21690] = "\xe0\xf9",
++ [21695] = "\xe0\xfa", [21700] = "\xe0\xfb", [21708] = "\x89\x5a",
++ [21712] = "\xe1\x40", [21714] = "\x95\x5a", [21715] = "\xe1\x41",
++ [21718] = "\x8a\xa2", [21719] = "\xe1\x42", [21721] = "\xe1\x43",
++ [21726] = "\xe1\x44", [21728] = "\xe1\x46", [21729] = "\xe1\x47",
++ [21730] = "\xe1\x45", [21734] = "\x95\x72", [21735] = "\xe1\x49",
++ [21736] = "\xe1\x48", [21745] = "\xfb\x6e", [21747] = "\xe1\x4b",
++ [21748] = "\xe1\x4a", [21749] = "\xe1\x4c", [21756] = "\xe1\x4d",
++ [21757] = "\xe1\x4f", [21758] = "\xe1\x4e", [21761] = "\x8d\x99",
++ [21763] = "\xe1\x51", [21765] = "\xe1\x50", [21768] = "\x8a\xc3",
++ [21770] = "\x90\x72", [21772] = "\x93\x5b", [21774] = "\xe1\x52",
++ [21775] = "\x90\xb6", [21779] = "\x8e\x59", [21781] = "\x89\x99",
++ [21782] = "\xe1\x53", [21784] = "\x97\x70", [21787] = "\x95\xe1",
++ [21788] = "\xe1\x54", [21791] = "\xfa\xa8", [21792] = "\x93\x63",
++ [21793] = "\x97\x52", [21794] = "\x8d\x62", [21795] = "\x90\x5c",
++ [21799] = "\x92\x6a", [21800] = "\x99\xb2", [21802] = "\x92\xac",
++ [21803] = "\x89\xe6", [21804] = "\xe1\x55", [21812] = "\xe1\x56",
++ [21814] = "\xe1\x5b", [21817] = "\xe1\x59", [21818] = "\xe1\x58",
++ [21819] = "\x9d\xc0", [21820] = "\x8a\x45", [21821] = "\xe1\x57",
++ [21823] = "\x88\xd8", [21825] = "\x94\xa8", [21828] = "\x94\xc8",
++ [21833] = "\x97\xaf", [21834] = "\xe1\x5c", [21835] = "\xe1\x5a",
++ [21836] = "\x92\x7b", [21837] = "\x90\xa4", [21840] = "\x94\xa9",
++ [21842] = "\x95\x4c", [21844] = "\xe1\x5e", [21845] = "\x97\xaa",
++ [21846] = "\x8c\x6c", [21847] = "\xe1\x5f", [21849] = "\xe1\x5d",
++ [21850] = "\x94\xd4", [21851] = "\xe1\x60", [21853] = "\xe1\x61",
++ [21855] = "\xfb\x6f", [21856] = "\x88\xd9", [21859] = "\x8f\xf4",
++ [21860] = "\xe1\x66", [21862] = "\xe1\x63", [21863] = "\x93\xeb",
++ [21864] = "\xe1\x62", [21871] = "\x8b\x45", [21874] = "\xe1\x69",
++ [21878] = "\xe1\x64", [21879] = "\xe1\x65", [21881] = "\xe1\x68",
++ [21882] = "\xe1\x67", [21883] = "\x95\x44", [21886] = "\x91\x61",
++ [21887] = "\x91\x60", [21889] = "\x8b\x5e", [21892] = "\xe1\x6a",
++ [21898] = "\xe1\x6b", [21901] = "\xe1\x6c", [21907] = "\xe1\x6e",
++ [21909] = "\xe1\x6d", [21915] = "\x89\x75", [21921] = "\xe1\x76",
++ [21922] = "\x94\xe6", [21923] = "\xe1\x70", [21925] = "\xe1\x72",
++ [21928] = "\xe1\x74", [21929] = "\x90\x5d", [21932] = "\xe1\x75",
++ [21933] = "\xe1\x73", [21934] = "\x8e\xbe", [21938] = "\xe1\x6f",
++ [21939] = "\xe1\x71", [21941] = "\x95\x61", [21943] = "\x8f\xc7",
++ [21946] = "\xe1\x78", [21949] = "\xe1\x77", [21954] = "\xe1\x79",
++ [21956] = "\x8e\xa4", [21957] = "\x8d\xad", [21960] = "\x93\x97",
++ [21961] = "\xe1\x7a", [21963] = "\x92\xc9", [21966] = "\xe1\x7c",
++ [21970] = "\x97\x9f", [21971] = "\xe1\x7b", [21977] = "\x91\x89",
++ [21984] = "\xe1\x82", [21986] = "\xe1\x84", [21987] = "\xe1\x85",
++ [21988] = "\x92\x73", [21994] = "\xe1\x83", [21996] = "\xe1\x80",
++ [21998] = "\xe1\x7d", [21999] = "\xe1\x7e", [22001] = "\xe1\x81",
++ [22009] = "\xe1\x88", [22011] = "\xe1\x86", [22013] = "\xe1\x87",
++ [22031] = "\xe1\x89", [22032] = "\xe1\x8b", [22033] = "\xe1\x8c",
++ [22034] = "\xe1\x8d", [22036] = "\xe1\x8e", [22039] = "\xe1\x8a",
++ [22048] = "\xe1\x90", [22052] = "\xe1\x8f", [22059] = "\xe1\x91",
++ [22066] = "\x97\xc3", [22070] = "\xe1\x94", [22071] = "\xe1\x92",
++ [22072] = "\xe1\x93", [22076] = "\x8a\xe0", [22082] = "\x96\xfc",
++ [22086] = "\x95\xc8", [22088] = "\xe1\x96", [22092] = "\xe1\x95",
++ [22097] = "\xe1\x97", [22098] = "\xe1\x98", [22103] = "\xe1\x9c",
++ [22104] = "\xe1\x99", [22105] = "\xe1\x9a", [22106] = "\xe1\x9b",
++ [22108] = "\xe1\x9d", [22112] = "\xe1\x9e", [22114] = "\xe1\x9f",
++ [22118] = "\xe1\xa0", [22120] = "\xe1\xa1", [22122] = "\x94\xad",
++ [22123] = "\x93\x6f", [22124] = "\xe1\xa2", [22125] = "\x94\x92",
++ [22126] = "\x95\x53", [22128] = "\xe1\xa3", [22130] = "\xfb\x70",
++ [22131] = "\xe1\xa4", [22132] = "\x93\x49", [22134] = "\x8a\x46",
++ [22135] = "\x8d\x63", [22136] = "\xe1\xa5", [22139] = "\xe1\xa6",
++ [22142] = "\xe1\xa7", [22144] = "\x8e\x48", [22147] = "\xe1\xa9",
++ [22150] = "\xe1\xa8", [22153] = "\xe1\xaa", [22154] = "\xe1\xab",
++ [22155] = "\xfb\x73", [22156] = "\xfb\x71", [22158] = "\xfb\x72",
++ [22166] = "\xfb\x74", [22174] = "\x94\xe7", [22176] = "\xe1\xac",
++ [22180] = "\xe1\xad", [22183] = "\xea\x89", [22184] = "\xe1\xae",
++ [22185] = "\xe1\xaf", [22186] = "\xe1\xb0", [22191] = "\x8e\x4d",
++ [22194] = "\xe1\xb1", [22195] = "\x94\x75", [22198] = "\x96\x7e",
++ [22200] = "\x89\x6d", [22202] = "\x89\x76", [22205] = "\xe1\xb2",
++ [22210] = "\xe1\xb4", [22214] = "\xe1\xb3", [22215] = "\x93\x90",
++ [22219] = "\x90\xb7", [22220] = "\x9f\x58", [22222] = "\xe1\xb5",
++ [22223] = "\x96\xbf", [22225] = "\xe1\xb6", [22227] = "\x8a\xc4",
++ [22228] = "\x94\xd5", [22229] = "\xe1\xb7", [22231] = "\xe1\xb8",
++ [22234] = "\xe1\xb9", [22238] = "\x96\xda", [22242] = "\x96\xd3",
++ [22244] = "\x92\xbc", [22248] = "\x91\x8a", [22251] = "\xe1\xbb",
++ [22254] = "\x8f\x82", [22257] = "\x8f\xc8", [22260] = "\xe1\xbe",
++ [22263] = "\xe1\xbd", [22264] = "\xe1\xbc", [22265] = "\x94\xfb",
++ [22267] = "\x8a\xc5", [22268] = "\x8c\xa7", [22283] = "\xe1\xc4",
++ [22286] = "\xe1\xc1", [22287] = "\x90\x5e", [22288] = "\x96\xb0",
++ [22292] = "\xe1\xc0", [22293] = "\xe1\xc2", [22294] = "\xe1\xc3",
++ [22297] = "\xe1\xbf", [22311] = "\xe1\xc5", [22312] = "\xe1\xc6",
++ [22314] = "\x92\xad", [22316] = "\x8a\xe1", [22320] = "\x92\x85",
++ [22326] = "\xfb\x76", [22327] = "\xe1\xc7", [22346] = "\xe1\xc8",
++ [22347] = "\xe1\xcb", [22353] = "\x90\x87", [22355] = "\x93\xc2",
++ [22357] = "\xe1\xcc", [22358] = "\x96\x72", [22360] = "\xe1\xc9",
++ [22363] = "\xe1\xca", [22377] = "\xe1\xcf", [22382] = "\xe1\xce",
++ [22383] = "\xe1\xcd", [22395] = "\xe1\xd1", [22398] = "\xe1\xd0",
++ [22401] = "\xe1\xd2", [22414] = "\xe1\xd4", [22416] = "\xe1\xd3",
++ [22421] = "\x95\xcb", [22428] = "\x8f\x75", [22429] = "\x97\xc4",
++ [22432] = "\xe1\xd5", [22435] = "\x93\xb5", [22438] = "\xe1\xd6",
++ [22441] = "\xe1\xd7", [22443] = "\xe1\xdb", [22444] = "\xe1\xd9",
++ [22445] = "\xe1\xda", [22447] = "\xe1\xd8", [22455] = "\xe1\xdc",
++ [22461] = "\xe1\xdd", [22471] = "\xe1\xde", [22474] = "\xe1\xdf",
++ [22475] = "\x96\xb5", [22476] = "\xe1\xe0", [22482] = "\x96\xee",
++ [22483] = "\xe1\xe1", [22485] = "\x92\x6d", [22487] = "\x94\x8a",
++ [22489] = "\x8b\xe9", [22493] = "\x92\x5a", [22494] = "\xe1\xe2",
++ [22495] = "\x8b\xb8", [22499] = "\x90\xce", [22508] = "\xe1\xe3",
++ [22514] = "\x8d\xbb", [22524] = "\xe1\xe4", [22530] = "\xe1\xe5",
++ [22532] = "\x8c\xa4", [22533] = "\x8d\xd3", [22544] = "\xe1\xe7",
++ [22545] = "\xfb\x78", [22549] = "\x93\x75", [22550] = "\x8d\xd4",
++ [22551] = "\x8b\x6d", [22562] = "\x96\x43", [22564] = "\x94\x6a",
++ [22570] = "\x93\x76", [22575] = "\x8d\x7b", [22581] = "\xe1\xe9",
++ [22590] = "\xfb\x79", [22605] = "\x8f\xc9", [22612] = "\xfb\x7a",
++ [22619] = "\x97\xb0", [22620] = "\x8d\x64", [22623] = "\x8c\xa5",
++ [22626] = "\x94\xa1", [22628] = "\xe1\xeb", [22634] = "\xfb\x7b",
++ [22636] = "\xe1\xed", [22641] = "\x8c\xe9", [22646] = "\xe1\xec",
++ [22647] = "\x92\xf4", [22652] = "\xe1\xef", [22653] = "\x8a\x56",
++ [22654] = "\xe1\xea", [22657] = "\x94\xe8", [22659] = "\x89\x4f",
++ [22661] = "\x8d\xea", [22663] = "\x98\x71", [22666] = "\xe1\xee",
++ [22675] = "\xe1\xf0", [22679] = "\x95\xc9", [22681] = "\x90\xd7",
++ [22682] = "\xe1\xf2", [22687] = "\xe1\xf3", [22693] = "\xe1\xf1",
++ [22698] = "\x8a\x6d", [22700] = "\xe1\xf9", [22702] = "\xe1\xf8",
++ [22705] = "\x8e\xa5", [22709] = "\xe1\xfa", [22710] = "\xe1\xf5",
++ [22714] = "\xe1\xfb", [22715] = "\xe1\xf6", [22720] = "\x94\xd6",
++ [22721] = "\xe1\xf4", [22724] = "\xe1\xf7", [22730] = "\xe2\x41",
++ [22743] = "\xe2\x40", [22744] = "\x96\x81", [22748] = "\xe1\xfc",
++ [22751] = "\x88\xe9", [22756] = "\xe2\x43", [22765] = "\xe2\x42",
++ [22769] = "\x8f\xca", [22775] = "\xe2\x44", [22782] = "\x91\x62",
++ [22785] = "\xe2\x46", [22786] = "\xe2\x45", [22793] = "\xe2\x47",
++ [22806] = "\xe1\xe6", [22810] = "\xe1\xe8", [22811] = "\xe2\x49",
++ [22812] = "\xe2\x48", [22816] = "\xfb\x7c", [22826] = "\x8e\xa6",
++ [22828] = "\x97\xe7", [22830] = "\x8e\xd0", [22832] = "\xe2\x4a",
++ [22833] = "\x8c\x56", [22839] = "\x8b\x5f", [22840] = "\x8b\x46",
++ [22841] = "\x8e\x83", [22848] = "\x97\x53", [22851] = "\xe2\x50",
++ [22853] = "\xe2\x4f", [22854] = "\x91\x63", [22855] = "\xe2\x4c",
++ [22858] = "\xe2\x4e", [22861] = "\x8f\x6a", [22862] = "\x90\x5f",
++ [22863] = "\xe2\x4d", [22864] = "\xe2\x4b", [22866] = "\x94\x49",
++ [22869] = "\x8f\xcb", [22872] = "\x95\x5b", [22877] = "\x8d\xd5",
++ [22887] = "\x93\x98", [22890] = "\xe2\x51", [22895] = "\xe2\x52",
++ [22896] = "\xe2\x68", [22897] = "\x8b\xd6", [22900] = "\x98\x5c",
++ [22901] = "\x91\x54", [22906] = "\xe2\x53", [22909] = "\x89\xd0",
++ [22910] = "\x92\xf5", [22911] = "\x95\x9f", [22916] = "\xfb\x81",
++ [22923] = "\xfb\x83", [22925] = "\xe2\x54", [22934] = "\x8b\x9a",
++ [22935] = "\xe2\x55", [22938] = "\xe2\x57", [22942] = "\xe2\x58",
++ [22944] = "\x94\x48", [22947] = "\xe2\x59", [22953] = "\xe2\x5a",
++ [22954] = "\xe2\x5b", [22957] = "\x8b\xd7", [22958] = "\x89\xd1",
++ [22959] = "\x93\xc3", [22960] = "\x8f\x47", [22961] = "\x8e\x84",
++ [22969] = "\xe2\x5c", [22971] = "\x8f\x48", [22977] = "\x89\xc8",
++ [22978] = "\x95\x62", [22981] = "\xe2\x5d", [22984] = "\x94\xe9",
++ [22991] = "\x91\x64", [22993] = "\xe2\x60", [22995] = "\xe2\x61",
++ [22996] = "\x94\x89", [22998] = "\x90\x60", [22999] = "\xe2\x5e",
++ [23001] = "\x92\x81", [23004] = "\xe2\x5f", [23008] = "\x8f\xcc",
++ [23019] = "\x88\xda", [23024] = "\x8b\x48", [23032] = "\xe2\x62",
++ [23035] = "\x92\xf6", [23037] = "\xe2\x63", [23038] = "\x90\xc5",
++ [23044] = "\x96\xab", [23047] = "\x95\x42", [23048] = "\xe2\x64",
++ [23049] = "\xe2\x65", [23050] = "\x92\x74", [23052] = "\x97\xc5",
++ [23055] = "\xe2\x67", [23056] = "\xe2\x66", [23070] = "\x8e\xed",
++ [23073] = "\xe2\x69", [23074] = "\x88\xee", [23079] = "\xe2\x6c",
++ [23083] = "\xe2\x6a", [23084] = "\x89\xd2", [23085] = "\x8c\x6d",
++ [23086] = "\xe2\x6b", [23087] = "\x8d\x65", [23088] = "\x8d\x92",
++ [23090] = "\x95\xe4", [23091] = "\xe2\x6d", [23094] = "\x96\x73",
++ [23097] = "\xe2\x6f", [23101] = "\x90\xcf", [23102] = "\x89\x6e",
++ [23103] = "\x89\xb8", [23104] = "\x88\xaa", [23111] = "\xe2\x6e",
++ [23121] = "\xe2\x70", [23122] = "\xe2\x71", [23123] = "\x8f\xf5",
++ [23129] = "\xe2\x72", [23131] = "\x8a\x6e", [23136] = "\xe2\x74",
++ [23140] = "\x8c\x8a", [23142] = "\x8b\x86", [23145] = "\xe2\x75",
++ [23146] = "\x8b\xf3", [23149] = "\xe2\x76", [23151] = "\x90\xfa",
++ [23153] = "\x93\xcb", [23155] = "\x90\xde", [23156] = "\x8d\xf3",
++ [23160] = "\xe2\x77", [23170] = "\x92\x82", [23171] = "\x91\x8b",
++ [23173] = "\xe2\x79", [23174] = "\xe2\x7b", [23175] = "\xe2\x78",
++ [23176] = "\xe2\x7a", [23183] = "\x8c\x41", [23193] = "\xe2\x7c",
++ [23194] = "\x8c\x45", [23198] = "\x8b\x87", [23199] = "\x97\x71",
++ [23200] = "\xe2\x7e", [23206] = "\xe2\x80", [23210] = "\x89\x4d",
++ [23215] = "\xe2\x83", [23219] = "\x8a\x96", [23220] = "\xe2\x82",
++ [23221] = "\xe2\x81", [23223] = "\xe2\x85", [23224] = "\xe2\x7d",
++ [23226] = "\xe2\x86", [23227] = "\x97\xa7", [23229] = "\xe2\x87",
++ [23231] = "\xe2\x88", [23233] = "\xfb\x84", [23234] = "\x9a\xf2",
++ [23235] = "\xe2\x8a", [23237] = "\xe2\x89", [23241] = "\xe2\x8b",
++ [23242] = "\xe2\x8c", [23244] = "\x97\xb3", [23245] = "\xe2\x8d",
++ [23247] = "\xe8\xed", [23248] = "\x8f\xcd", [23249] = "\xe2\x8e",
++ [23250] = "\xe2\x8f", [23251] = "\x8f\x76", [23253] = "\x93\xb6",
++ [23254] = "\xe2\x90", [23255] = "\xfb\x85", [23258] = "\x92\x47",
++ [23259] = "\xfb\x87", [23261] = "\xe2\x91", [23263] = "\x92\x5b",
++ [23264] = "\xe2\x92", [23270] = "\x8b\xa3", [23272] = "\x99\x5e",
++ [23273] = "\x92\x7c", [23274] = "\x8e\xb1", [23279] = "\x8a\xc6",
++ [23282] = "\xe2\x93", [23284] = "\xe2\xa0", [23286] = "\xe2\x96",
++ [23288] = "\x8b\x88", [23290] = "\xe2\x95", [23291] = "\xe2\xa2",
++ [23295] = "\xe2\x94", [23297] = "\x8f\xce", [23304] = "\xe2\x98",
++ [23305] = "\xe2\x99", [23307] = "\x93\x4a", [23310] = "\xe2\x9a",
++ [23312] = "\x8a\x7d", [23317] = "\x90\x79", [23318] = "\x95\x84",
++ [23320] = "\xe2\x9c", [23324] = "\x91\xe6", [23331] = "\xe2\x97",
++ [23333] = "\xe2\x9b", [23334] = "\xe2\x9d", [23337] = "\x8d\xf9",
++ [23349] = "\xe2\xa4", [23350] = "\x95\x4d", [23352] = "\x94\xa4",
++ [23353] = "\x93\x99", [23355] = "\x8b\xd8", [23356] = "\xe2\xa3",
++ [23357] = "\xe2\xa1", [23359] = "\x94\xb3", [23360] = "\xe2\x9e",
++ [23361] = "\x92\x7d", [23362] = "\x93\x9b", [23364] = "\x93\x9a",
++ [23366] = "\x8d\xf4", [23373] = "\xe2\xb6", [23381] = "\xe2\xa6",
++ [23383] = "\xe2\xa8", [23388] = "\xe2\xab", [23390] = "\xe2\xac",
++ [23392] = "\xe2\xa9", [23393] = "\xe2\xaa", [23396] = "\xe2\xa7",
++ [23397] = "\xe2\xa5", [23402] = "\xe2\x9f", [23414] = "\x95\xcd",
++ [23415] = "\x89\xd3", [23419] = "\xe2\xb3", [23421] = "\xe2\xb0",
++ [23423] = "\xe2\xb5", [23426] = "\xe2\xb4", [23428] = "\x94\x93",
++ [23429] = "\x96\xa5", [23431] = "\x8e\x5a", [23432] = "\xe2\xae",
++ [23433] = "\xe2\xb7", [23434] = "\xe2\xb2", [23436] = "\xe2\xb1",
++ [23437] = "\xe2\xad", [23438] = "\xfb\x88", [23439] = "\xe2\xaf",
++ [23441] = "\x8a\xc7", [23450] = "\x92\x5c", [23453] = "\x90\xfb",
++ [23457] = "\x94\xa0", [23460] = "\xe2\xbc", [23464] = "\x94\xa2",
++ [23472] = "\x90\xdf", [23473] = "\xe2\xb9", [23476] = "\x94\xcd",
++ [23478] = "\xe2\xbd", [23479] = "\x95\xd1", [23481] = "\x92\x7a",
++ [23483] = "\xe2\xb8", [23484] = "\xe2\xba", [23487] = "\xe2\xbb",
++ [23501] = "\xe2\xbe", [23504] = "\x8e\xc2", [23508] = "\x93\xc4",
++ [23509] = "\xe2\xc3", [23510] = "\xe2\xc2", [23513] = "\xe2\xbf",
++ [23517] = "\x98\x55", [23523] = "\xe2\xc8", [23526] = "\xe2\xcc",
++ [23527] = "\xe2\xc9", [23536] = "\xe2\xc5", [23543] = "\xe2\xc6",
++ [23549] = "\xe2\xcb", [23553] = "\xe2\xc0", [23554] = "\x99\xd3",
++ [23555] = "\xe2\xc7", [23556] = "\xe2\xc1", [23559] = "\xe2\xca",
++ [23567] = "\xe2\xd0", [23569] = "\x8a\xc8", [23571] = "\xe2\xcd",
++ [23575] = "\xe2\xce", [23578] = "\xe2\xcf", [23579] = "\xe2\xd2",
++ [23591] = "\xe2\xd1", [23592] = "\x94\xf4", [23597] = "\xe2\xd3",
++ [23598] = "\x97\xfa", [23599] = "\x95\xeb", [23600] = "\xe2\xd8",
++ [23603] = "\xe2\xd5", [23612] = "\xe2\xd4", [23613] = "\x90\xd0",
++ [23615] = "\xe2\xd7", [23616] = "\xe2\xd9", [23620] = "\xe2\xd6",
++ [23622] = "\xe2\xdd", [23624] = "\xe2\xda", [23631] = "\xe2\xdb",
++ [23632] = "\xe2\xc4", [23636] = "\xe2\xdc", [23637] = "\xe2\xde",
++ [23644] = "\xe2\xdf", [23651] = "\x95\xc4", [23653] = "\xe2\xe0",
++ [23662] = "\x96\xe0", [23665] = "\x8b\xcc", [23666] = "\x8c\x48",
++ [23667] = "\xe2\xe1", [23673] = "\x95\xb2", [23675] = "\x90\x88",
++ [23677] = "\x96\xae", [23680] = "\xe2\xe2", [23682] = "\x97\xb1",
++ [23685] = "\x94\x94", [23687] = "\x91\x65", [23688] = "\x94\x53",
++ [23691] = "\x8f\x6c", [23695] = "\x88\xbe", [23697] = "\xe2\xe7",
++ [23698] = "\xe2\xe5", [23700] = "\xe2\xe3", [23701] = "\x8a\x9f",
++ [23703] = "\x8f\xcf", [23704] = "\xe2\xe8", [23707] = "\xe2\xe6",
++ [23709] = "\xe2\xe4", [23710] = "\xe2\xec", [23713] = "\xe2\xeb",
++ [23714] = "\xe2\xea", [23715] = "\xe2\xe9", [23721] = "\xe2\xed",
++ [23725] = "\xe2\xee", [23726] = "\x90\xb8", [23728] = "\xe2\xef",
++ [23730] = "\xe2\xf1", [23733] = "\xe2\xf0", [23738] = "\x8c\xd0",
++ [23742] = "\x91\x57", [23746] = "\xe2\xf3", [23750] = "\x93\x9c",
++ [23752] = "\xe2\xf2", [23756] = "\xe2\xf4", [23758] = "\x95\xb3",
++ [23759] = "\x91\x8c", [23760] = "\x8d\x66", [23762] = "\xe2\xf5",
++ [23767] = "\x97\xc6", [23775] = "\xe2\xf7", [23778] = "\xe2\xf8",
++ [23780] = "\xe2\xf9", [23782] = "\xe2\xfa", [23784] = "\x8e\x85",
++ [23786] = "\xe2\xfb", [23787] = "\x8c\x6e", [23790] = "\x8b\x8a",
++ [23792] = "\x8b\x49", [23794] = "\xe3\x40", [23796] = "\x96\xf1",
++ [23797] = "\x8d\x67", [23798] = "\xe2\xfc", [23802] = "\xe3\x43",
++ [23803] = "\x96\xe4", [23805] = "\x94\x5b", [23808] = "\x95\x52",
++ [23812] = "\x8f\x83", [23813] = "\xe3\x42", [23815] = "\x8e\xd1",
++ [23816] = "\x8d\x68", [23817] = "\x8e\x86", [23818] = "\x8b\x89",
++ [23819] = "\x95\xb4", [23820] = "\xe3\x41", [23824] = "\x91\x66",
++ [23825] = "\x96\x61", [23826] = "\x8d\xf5", [23835] = "\x8e\x87",
++ [23836] = "\x92\xdb", [23838] = "\xe3\x46", [23839] = "\x97\xdd",
++ [23840] = "\x8d\xd7", [23842] = "\xe3\x47", [23843] = "\x90\x61",
++ [23845] = "\xe3\x49", [23849] = "\x8f\xd0", [23850] = "\x8d\xae",
++ [23855] = "\xe3\x48", [23858] = "\x8f\x49", [23859] = "\x8c\xbc",
++ [23860] = "\x91\x67", [23861] = "\xe3\x44", [23862] = "\xe3\x4a",
++ [23864] = "\xfb\x8a", [23867] = "\xe3\x45", [23868] = "\x8c\x6f",
++ [23870] = "\xe3\x4d", [23871] = "\xe3\x51", [23872] = "\x8c\x8b",
++ [23878] = "\xe3\x4c", [23883] = "\xe3\x55", [23884] = "\xfb\x8b",
++ [23886] = "\x8d\x69", [23889] = "\x97\x8d", [23890] = "\x88\xba",
++ [23891] = "\xe3\x52", [23894] = "\x8b\x8b", [23896] = "\xe3\x4f",
++ [23902] = "\xe3\x50", [23905] = "\x93\x9d", [23906] = "\xe3\x4e",
++ [23907] = "\xe3\x4b", [23909] = "\x8a\x47", [23910] = "\x90\xe2",
++ [23913] = "\x8c\xa6", [23917] = "\xe3\x57", [23929] = "\xe3\x54",
++ [23935] = "\xe3\x56", [23939] = "\xe3\x53", [23945] = "\x8c\x70",
++ [23946] = "\x91\xb1", [23947] = "\xe3\x58", [23948] = "\x91\x8e",
++ [23951] = "\xe3\x65", [23952] = "\xfb\x8d", [23954] = "\xe3\x61",
++ [23955] = "\xe3\x5b", [23963] = "\xe3\x5f", [23964] = "\x8e\xf8",
++ [23965] = "\x88\xdb", [23966] = "\xe3\x5a", [23967] = "\xe3\x62",
++ [23968] = "\xe3\x66", [23969] = "\x8d\x6a", [23970] = "\x96\xd4",
++ [23972] = "\x92\xd4", [23973] = "\xe3\x5c", [23975] = "\xfb\x8c",
++ [23976] = "\xe3\x64", [23978] = "\xe3\x59", [23979] = "\x92\x5d",
++ [23981] = "\xe3\x5e", [23982] = "\x88\xbb", [23983] = "\x96\xc8",
++ [23991] = "\xe3\x5d", [23994] = "\x8b\xd9", [23995] = "\x94\xea",
++ [23999] = "\x91\x8d", [24001] = "\x97\xce", [24002] = "\x8f\x8f",
++ [24005] = "\xe3\x8e", [24006] = "\xfb\x8e", [24008] = "\xe3\x67",
++ [24010] = "\x90\xfc", [24012] = "\xe3\x63", [24013] = "\xe3\x68",
++ [24014] = "\xe3\x6a", [24016] = "\x92\xf7", [24017] = "\xe3\x6d",
++ [24020] = "\xe3\x69", [24024] = "\x95\xd2", [24025] = "\x8a\xc9",
++ [24028] = "\x96\xc9", [24031] = "\x88\xdc", [24034] = "\xe3\x6c",
++ [24036] = "\x97\xfb", [24043] = "\xe3\x6b", [24049] = "\x89\x8f",
++ [24052] = "\x93\xea", [24053] = "\xe3\x6e", [24057] = "\xe3\x75",
++ [24058] = "\xe3\x6f", [24059] = "\xe3\x76", [24066] = "\xe3\x72",
++ [24075] = "\x94\x9b", [24078] = "\x8e\xc8", [24079] = "\xe3\x74",
++ [24081] = "\xe3\x71", [24082] = "\xe3\x77", [24083] = "\xe3\x70",
++ [24086] = "\x8f\x63", [24091] = "\x96\x44", [24094] = "\x8f\x6b",
++ [24097] = "\xe3\x73", [24098] = "\xe3\x80", [24101] = "\xe3\x7b",
++ [24103] = "\xe3\x7e", [24105] = "\xe3\x7c", [24106] = "\xe3\x81",
++ [24107] = "\xe3\x7a", [24109] = "\xe3\x60", [24110] = "\x90\xd1",
++ [24113] = "\x94\xc9", [24115] = "\xe3\x7d", [24118] = "\xe3\x78",
++ [24122] = "\x91\x40", [24123] = "\x8c\x71", [24125] = "\x8f\x4a",
++ [24130] = "\xfb\x8f", [24132] = "\x90\x44", [24133] = "\x91\x55",
++ [24134] = "\xe3\x84", [24137] = "\xe3\x86", [24138] = "\xe3\x87",
++ [24141] = "\xe3\x83", [24142] = "\xe3\x85", [24150] = "\xe3\x79",
++ [24151] = "\xe3\x82", [24153] = "\xe3\x8a", [24154] = "\xe3\x89",
++ [24157] = "\x96\x9a", [24160] = "\x8c\x4a", [24169] = "\xe3\x88",
++ [24171] = "\xe3\x8c", [24172] = "\xe3\x8b", [24173] = "\xe3\x8f",
++ [24175] = "\xe3\x91", [24178] = "\x8e\x5b", [24179] = "\xe3\x8d",
++ [24184] = "\xe3\x92", [24185] = "\xe3\x93", [24186] = "\xfa\x5c",
++ [24188] = "\xe3\x94", [24190] = "\xe3\x9a", [24191] = "\x93\x5a",
++ [24192] = "\xe3\x96", [24194] = "\xe3\x95", [24195] = "\xe3\x97",
++ [24196] = "\xe3\x98", [24198] = "\xe3\x99", [24203] = "\xe3\x9b",
++ [24204] = "\xe3\x9c", [24358] = "\x8a\xca", [24360] = "\xe3\x9d",
++ [24362] = "\xe3\x9e", [24373] = "\xe3\x9f", [24375] = "\xfb\x90",
++ [24380] = "\xe3\xa0", [24381] = "\xe3\xa1", [24382] = "\xe3\xa2",
++ [24384] = "\xe3\xa3", [24385] = "\xe3\xa4", [24388] = "\xe3\xa6",
++ [24389] = "\xe3\xa5", [24392] = "\xe3\xa7", [24399] = "\xe3\xa8",
++ [24400] = "\xe3\xa9", [24407] = "\xe3\xac", [24408] = "\xe3\xaa",
++ [24409] = "\xe3\xab", [24410] = "\x8d\xdf", [24411] = "\x8c\x72",
++ [24414] = "\x92\x75", [24416] = "\x94\xb1", [24418] = "\x8f\x90",
++ [24421] = "\x94\x6c", [24423] = "\x94\xeb", [24424] = "\xe3\xad",
++ [24425] = "\x9c\xeb", [24434] = "\xe3\xae", [24435] = "\xe3\xb0",
++ [24437] = "\x97\x85", [24438] = "\xe3\xaf", [24439] = "\xe3\xb2",
++ [24440] = "\xe3\xb1", [24442] = "\x97\x72", [24444] = "\xe3\xb3",
++ [24446] = "\x94\xfc", [24452] = "\xe3\xb4", [24458] = "\xe3\xb7",
++ [24461] = "\xe3\xb6", [24462] = "\xe3\xb5", [24465] = "\xfb\x91",
++ [24467] = "\xe3\xb8", [24468] = "\x8c\x51", [24472] = "\x91\x41",
++ [24473] = "\x8b\x60", [24478] = "\xe3\xbc", [24479] = "\xe3\xb9",
++ [24482] = "\xe3\xba", [24486] = "\xe3\xbd", [24488] = "\xe3\xbe",
++ [24489] = "\xe3\xbb", [24493] = "\x89\x48", [24497] = "\x89\xa5",
++ [24501] = "\xe3\xc0", [24502] = "\xe3\xc1", [24506] = "\xe3\xc2",
++ [24508] = "\x97\x82", [24514] = "\x8f\x4b", [24516] = "\xe3\xc4",
++ [24517] = "\xe3\xc3", [24528] = "\x90\x89", [24529] = "\xe3\xc5",
++ [24534] = "\xe3\xc6", [24537] = "\xe3\xc7", [24539] = "\x8a\xe3",
++ [24544] = "\x8a\xcb", [24547] = "\xe3\xc8", [24553] = "\xe3\xc9",
++ [24555] = "\x96\x7c", [24556] = "\x97\x83", [24560] = "\x97\x73",
++ [24561] = "\x98\x56", [24563] = "\x8d\x6c", [24564] = "\xe3\xcc",
++ [24565] = "\x8e\xd2", [24566] = "\xe3\xcb", [24571] = "\xe3\xcd",
++ [24572] = "\x8e\xa7", [24576] = "\x91\xcf", [24578] = "\xe3\xce",
++ [24581] = "\x8d\x6b", [24583] = "\x96\xd5", [24584] = "\xe3\xcf",
++ [24585] = "\xe3\xd0", [24588] = "\xe3\xd1", [24593] = "\xe3\xd2",
++ [24600] = "\xe3\xd3", [24611] = "\x8e\xa8", [24614] = "\x96\xeb",
++ [24619] = "\xe3\xd5", [24621] = "\x92\x5e", [24623] = "\xe3\xd4",
++ [24630] = "\xe3\xd7", [24634] = "\xe3\xd6", [24642] = "\xe3\xd8",
++ [24646] = "\x90\xb9", [24648] = "\xe3\xd9", [24650] = "\xe3\xda",
++ [24654] = "\x95\xb7", [24655] = "\xe3\xdb", [24657] = "\x91\x8f",
++ [24658] = "\xe3\xdc", [24664] = "\xe3\xdd", [24671] = "\x97\xfc",
++ [24672] = "\xe3\xe0", [24674] = "\xe3\xdf", [24675] = "\xe3\xde",
++ [24676] = "\x92\xae", [24678] = "\xe3\xe1", [24679] = "\x90\x45",
++ [24681] = "\xe3\xe2", [24685] = "\xe3\xe3", [24686] = "\x98\x57",
++ [24687] = "\xe3\xe4", [24692] = "\xe3\xe5", [24693] = "\xe3\xe7",
++ [24694] = "\xe3\xe6", [24695] = "\x94\xa3", [24697] = "\x93\xf7",
++ [24699] = "\x98\x5d", [24700] = "\x94\xa7", [24707] = "\xe3\xe9",
++ [24710] = "\x8f\xd1", [24712] = "\x95\x49", [24714] = "\xe3\xea",
++ [24715] = "\xe3\xe8", [24717] = "\x8a\xcc", [24721] = "\x8c\xd2",
++ [24722] = "\x8e\x88", [24725] = "\x94\xec", [24729] = "\x8c\xa8",
++ [24730] = "\x96\x62", [24732] = "\xe3\xed", [24733] = "\xe3\xeb",
++ [24735] = "\x8d\x6d", [24737] = "\x8d\x6e", [24738] = "\x88\xe7",
++ [24740] = "\x8d\xe6", [24746] = "\x94\x78", [24755] = "\x88\xdd",
++ [24756] = "\xe3\xf2", [24758] = "\x92\x5f", [24764] = "\x94\x77",
++ [24766] = "\x91\xd9", [24774] = "\xe3\xf4", [24777] = "\xe3\xf0",
++ [24778] = "\xe3\xf3", [24779] = "\xe3\xee", [24781] = "\xe3\xf1",
++ [24782] = "\x96\x45", [24785] = "\x8c\xd3", [24788] = "\x88\xfb",
++ [24789] = "\xe3\xef", [24799] = "\xe3\xf6", [24801] = "\xe3\xf7",
++ [24804] = "\x93\xb7", [24808] = "\x8b\xb9", [24812] = "\xe4\x45",
++ [24813] = "\x94\x5c", [24818] = "\x8e\x89", [24821] = "\x8b\xba",
++ [24822] = "\x90\xc6", [24823] = "\x98\x65", [24824] = "\x96\xac",
++ [24825] = "\xe3\xf5", [24826] = "\x90\xd2", [24842] = "\x8b\x72",
++ [24843] = "\xe3\xf8", [24851] = "\xe3\xfa", [24857] = "\xe3\xf9",
++ [24863] = "\xe3\xfb", [24865] = "\x92\x45", [24867] = "\x94\x5d",
++ [24873] = "\x92\xaf", [24878] = "\xe4\x42", [24886] = "\xe4\x41",
++ [24891] = "\xe3\xfc", [24894] = "\x90\x74", [24896] = "\x95\x85",
++ [24897] = "\xe4\x44", [24899] = "\xe4\x43", [24900] = "\x8d\x6f",
++ [24901] = "\x98\x72", [24911] = "\xe4\x54", [24917] = "\xe4\x48",
++ [24918] = "\xe4\x49", [24923] = "\x8e\xee", [24926] = "\xe4\x47",
++ [24928] = "\x8d\x98", [24929] = "\xe4\x46", [24932] = "\xe4\x4a",
++ [24936] = "\x92\xb0", [24937] = "\x95\xa0", [24938] = "\x91\x42",
++ [24943] = "\x91\xda", [24944] = "\xe4\x4e", [24946] = "\xe4\x4f",
++ [24947] = "\xe4\x4b", [24952] = "\xe4\x4c", [24954] = "\xe4\x4d",
++ [24959] = "\x8d\x70", [24963] = "\xe4\x55", [24965] = "\xe4\x51",
++ [24970] = "\x95\x86", [24972] = "\x96\x8c", [24973] = "\x95\x47",
++ [24976] = "\xe4\x50", [24979] = "\xe4\x53", [24980] = "\xe4\x52",
++ [24984] = "\x96\x63", [24985] = "\xe4\x56", [24992] = "\xe4\x57",
++ [24995] = "\x91\x56", [24997] = "\xe4\x58", [25000] = "\xe4\x5a",
++ [25002] = "\xe4\x5e", [25005] = "\xe4\x5b", [25006] = "\xe4\x59",
++ [25007] = "\x94\x5e", [25008] = "\xe4\x5c", [25010] = "\xe4\x5d",
++ [25014] = "\x89\xb0", [25016] = "\xe4\x64", [25017] = "\xe4\x5f",
++ [25021] = "\xe4\x60", [25025] = "\xe4\x61", [25027] = "\x91\x9f",
++ [25032] = "\xe4\x63", [25033] = "\xe4\x62", [25034] = "\xe4\x65",
++ [25039] = "\xe4\x66", [25040] = "\xe4\x67", [25043] = "\x90\x62",
++ [25045] = "\x89\xe7", [25047] = "\xe4\x68", [25048] = "\x97\xd5",
++ [25050] = "\x8e\xa9", [25053] = "\x8f\x4c", [25059] = "\x8e\x8a",
++ [25060] = "\x92\x76", [25066] = "\xe4\x69", [25067] = "\xe4\x6a",
++ [25068] = "\x89\x50", [25070] = "\xe4\x6b", [25073] = "\xe4\x6c",
++ [25074] = "\xe4\x6d", [25077] = "\xe4\x6e", [25079] = "\xe4\x6f",
++ [25080] = "\x8b\xbb", [25081] = "\x9d\xa8", [25082] = "\xe4\x70",
++ [25084] = "\x90\xe3", [25085] = "\xe4\x71", [25086] = "\x8e\xc9",
++ [25088] = "\xe4\x72", [25090] = "\x98\xae", [25094] = "\xe4\x73",
++ [25095] = "\x95\xdc", [25096] = "\x8a\xda", [25099] = "\x91\x43",
++ [25100] = "\x8f\x77", [25102] = "\x95\x91", [25103] = "\x8f\x4d",
++ [25113] = "\xe4\x74", [25114] = "\x8d\x71", [25115] = "\xe4\x75",
++ [25116] = "\x94\xca", [25118] = "\xe4\x84", [25123] = "\xe4\x77",
++ [25125] = "\x91\xc7", [25126] = "\x94\x95", [25127] = "\x8c\xbd",
++ [25128] = "\xe4\x76", [25129] = "\x91\x44", [25136] = "\xe4\x78",
++ [25143] = "\x92\xf8", [25160] = "\xe4\x7a", [25161] = "\xe4\x79",
++ [25162] = "\xe4\x7c", [25165] = "\xe4\x7b", [25167] = "\xe4\x7d",
++ [25170] = "\xe4\x80", [25172] = "\xe4\x7e", [25174] = "\x8a\xcd",
++ [25176] = "\xe4\x81", [25178] = "\xe4\x82", [25179] = "\xe4\x83",
++ [25182] = "\x8d\xaf", [25183] = "\x97\xc7", [25185] = "\xe4\x85",
++ [25186] = "\x90\x46", [25190] = "\x89\x90", [25191] = "\xe4\x86",
++ [25192] = "\xe4\x87", [25198] = "\xe4\x88", [25211] = "\x88\xf0",
++ [25213] = "\xe4\x89", [25218] = "\xe4\x8a", [25225] = "\x95\x87",
++ [25229] = "\x8e\xc5", [25231] = "\xe4\x8c", [25237] = "\x8a\x48",
++ [25238] = "\x88\xb0", [25243] = "\xe4\x8b", [25244] = "\xe4\x8e",
++ [25245] = "\x94\x6d", [25247] = "\x90\x63", [25249] = "\x89\xd4",
++ [25251] = "\x96\x46", [25256] = "\x8c\x7c", [25257] = "\x8b\xda",
++ [25259] = "\xe4\x8d", [25261] = "\x89\xe8", [25269] = "\x8a\xa1",
++ [25281] = "\x89\x91", [25282] = "\xe4\x92", [25283] = "\x97\xe8",
++ [25284] = "\x91\xdb", [25287] = "\x95\x63", [25289] = "\xe4\x9e",
++ [25291] = "\x89\xd5", [25292] = "\xe4\x9c", [25294] = "\xe4\x9a",
++ [25295] = "\xe4\x91", [25297] = "\xe4\x8f", [25299] = "\xe4\x90",
++ [25301] = "\x8e\xe1", [25302] = "\x8b\xea", [25303] = "\x92\x97",
++ [25307] = "\x93\xcf", [25313] = "\x89\x70", [25315] = "\xe4\x94",
++ [25316] = "\xe4\x93", [25321] = "\xe4\x99", [25322] = "\xe4\x95",
++ [25323] = "\xe4\x98", [25329] = "\xfb\x93", [25330] = "\x96\xce",
++ [25331] = "\xe4\x97", [25332] = "\x89\xd6", [25333] = "\x8a\x9d",
++ [25334] = "\xe4\x9b", [25337] = "\xe4\x9d", [25342] = "\x8c\x73",
++ [25350] = "\xe4\xa1", [25351] = "\xe4\xaa", [25352] = "\xe4\xab",
++ [25356] = "\x88\xa9", [25363] = "\xe4\xb2", [25368] = "\x88\xef",
++ [25371] = "\xe4\xa9", [25375] = "\xe4\xa8", [25377] = "\xe4\xa3",
++ [25378] = "\xe4\xa2", [25380] = "\xe4\xa0", [25381] = "\xe4\x9f",
++ [25382] = "\x92\x83", [25384] = "\x91\xf9", [25385] = "\xe4\xa5",
++ [25392] = "\xe4\xa4", [25397] = "\xe4\xa7", [25401] = "\x91\x90",
++ [25402] = "\x8c\x74", [25407] = "\x89\x60", [25408] = "\xe4\xa6",
++ [25410] = "\x8d\x72", [25416] = "\x91\x91", [25426] = "\xfb\x94",
++ [25443] = "\xe4\xb8", [25445] = "\xe4\xb9", [25447] = "\x89\xd7",
++ [25451] = "\x89\xac", [25452] = "\xe4\xb6", [25455] = "\xfb\x95",
++ [25461] = "\xe4\xac", [25463] = "\xe4\xb4", [25465] = "\xe4\xbb",
++ [25466] = "\xe4\xb5", [25470] = "\xe4\xb3", [25475] = "\xe4\x96",
++ [25478] = "\xe4\xb1", [25482] = "\xe4\xad", [25486] = "\x8a\xce",
++ [25487] = "\xe4\xaf", [25488] = "\xe4\xba", [25490] = "\xe4\xb0",
++ [25496] = "\xe4\xbc", [25498] = "\xe4\xae", [25499] = "\x94\x9c",
++ [25505] = "\x97\x89", [25509] = "\xe4\xb7", [25517] = "\xe4\xcd",
++ [25521] = "\xe4\xc5", [25525] = "\x90\x9b", [25527] = "\xfb\x96",
++ [25530] = "\x8b\x65", [25532] = "\x8b\xdb", [25534] = "\xe4\xc0",
++ [25539] = "\x89\xd9", [25542] = "\x8f\xd2", [25544] = "\xe4\xc3",
++ [25548] = "\x8d\xd8", [25551] = "\x93\x70", [25552] = "\xe4\xc8",
++ [25561] = "\x95\xec", [25563] = "\xe4\xbf", [25567] = "\x89\xd8",
++ [25568] = "\x8c\xd4", [25569] = "\x95\x48", [25570] = "\xe4\xc9",
++ [25572] = "\xe4\xbd", [25574] = "\xfb\x97", [25575] = "\xe4\xc6",
++ [25579] = "\xe4\xd0", [25581] = "\xe4\xc1", [25587] = "\xe4\xc2",
++ [25588] = "\x93\xb8", [25591] = "\xe4\xc7", [25595] = "\xe4\xc4",
++ [25596] = "\x96\x47", [25597] = "\xe4\xca", [25598] = "\x88\xde",
++ [25603] = "\xe4\xbe", [25616] = "\xe4\xcc", [25618] = "\xe4\xcb",
++ [25625] = "\x94\x8b", [25626] = "\xe4\xd2", [25628] = "\xe4\xdd",
++ [25633] = "\x8a\x9e", [25637] = "\xe4\xe0", [25640] = "\xe4\xce",
++ [25644] = "\xe4\xd3", [25645] = "\x97\x8e", [25654] = "\xe4\xdc",
++ [25656] = "\xfb\x98", [25657] = "\x97\x74", [25662] = "\x97\xa8",
++ [25671] = "\x92\x98", [25675] = "\x8a\x8b", [25681] = "\x95\x92",
++ [25682] = "\xe4\xe2", [25683] = "\x93\x9f", [25686] = "\x88\xaf",
++ [25689] = "\xe4\xdb", [25691] = "\xe4\xd7", [25692] = "\x91\x92",
++ [25693] = "\xe4\xd1", [25694] = "\xe4\xd9", [25695] = "\xe4\xde",
++ [25697] = "\x94\x4b", [25701] = "\x88\xa8", [25703] = "\xe4\xd6",
++ [25705] = "\xe4\xdf", [25706] = "\x95\x98", [25714] = "\xe4\xda",
++ [25716] = "\xe4\xd5", [25723] = "\x8f\xd3", [25728] = "\x8f\x4e",
++ [25732] = "\x8e\xaa", [25737] = "\x96\xd6", [25740] = "\x95\x66",
++ [25743] = "\xe4\xe5", [25745] = "\xe4\xee", [25757] = "\xe4\xd8",
++ [25762] = "\x8a\x97", [25764] = "\xfb\x99", [25768] = "\x8f\xf6",
++ [25769] = "\xe4\xe3", [25771] = "\xe4\xe8", [25772] = "\x91\x93",
++ [25775] = "\xe4\xe4", [25777] = "\xe4\xeb", [25780] = "\x92\x7e",
++ [25782] = "\xe4\xec", [25785] = "\x97\x75", [25786] = "\xe4\xe1",
++ [25787] = "\x8a\x57", [25789] = "\xe4\xe7", [25792] = "\xe4\xea",
++ [25793] = "\x96\xaa", [25798] = "\xe4\xed", [25801] = "\xe4\xe6",
++ [25802] = "\xe4\xe9", [25804] = "\xfa\x60", [25820] = "\x96\x48",
++ [25822] = "\x98\x40", [25828] = "\xe4\xf1", [25836] = "\xe4\xf8",
++ [25839] = "\xe4\xf0", [25840] = "\x8e\xc1", [25846] = "\xe4\xcf",
++ [25857] = "\x95\xcc", [25859] = "\x96\xa0", [25860] = "\xe4\xf7",
++ [25861] = "\xe4\xf6", [25863] = "\xe4\xf2", [25864] = "\xe4\xf3",
++ [25866] = "\x89\x55", [25871] = "\xe4\xf5", [25873] = "\xe4\xef",
++ [25878] = "\x92\xd3", [25884] = "\xe4\xf4", [25885] = "\x88\xfc",
++ [25893] = "\x91\xa0", [25901] = "\x95\xc1", [25904] = "\xe4\xf9",
++ [25905] = "\xe5\x40", [25907] = "\x94\xd7", [25912] = "\xe4\xfc",
++ [25913] = "\x8f\xd4", [25914] = "\x8e\xc7", [25915] = "\xe5\x42",
++ [25918] = "\x8b\xbc", [25923] = "\xfb\x9a", [25925] = "\xe5\x43",
++ [25927] = "\x95\x99", [25928] = "\xe4\xfb", [25929] = "\xfb\x9b",
++ [25930] = "\xe4\xd4", [25939] = "\xe4\xfa", [25944] = "\x98\x6e",
++ [25945] = "\x93\xa0", [25946] = "\x95\x93", [25947] = "\xfb\x9c",
++ [25949] = "\xe5\x4a", [25959] = "\xe5\x50", [25966] = "\xe5\x51",
++ [25968] = "\xe5\x44", [25972] = "\x94\x96", [25975] = "\xe5\x4e",
++ [25976] = "\xe5\x46", [25978] = "\xe5\x48", [25984] = "\xe5\x52",
++ [25985] = "\xe5\x47", [25988] = "\xe5\x4b", [25991] = "\x89\x92",
++ [25993] = "\x93\xe3", [25995] = "\xe5\x4c", [25996] = "\xe5\x4f",
++ [26004] = "\xe5\x45", [26006] = "\x91\x45", [26008] = "\xe5\x49",
++ [26009] = "\x8e\x46", [26010] = "\x90\x64", [26011] = "\x8c\x4f",
++ [26012] = "\x96\xf2", [26014] = "\x96\xf7", [26015] = "\x8f\x92",
++ [26016] = "\xfb\x9e", [26025] = "\xe5\x56", [26026] = "\xe5\x54",
++ [26033] = "\x98\x6d", [26041] = "\xe5\x53", [26045] = "\x97\x95",
++ [26047] = "\xe5\x55", [26048] = "\xe5\x57", [26053] = "\xe5\x58",
++ [26060] = "\xe5\x5b", [26061] = "\xe5\x59", [26068] = "\x93\xa1",
++ [26069] = "\xe5\x5a", [26073] = "\x94\xcb", [26074] = "\xe5\x4d",
++ [26087] = "\x8f\x93", [26089] = "\xe5\x5c", [26090] = "\xe5\x61",
++ [26091] = "\x91\x94", [26094] = "\xe5\x60", [26098] = "\xe5\x41",
++ [26102] = "\xe5\x62", [26103] = "\x91\x68", [26106] = "\xe5\x5d",
++ [26107] = "\xe5\x5f", [26115] = "\xe5\x5e", [26118] = "\x9f\x50",
++ [26119] = "\x9f\x41", [26122] = "\xe5\x64", [26130] = "\xe5\x63",
++ [26141] = "\x97\x96", [26143] = "\xe1\xba", [26144] = "\xe5\x65",
++ [26159] = "\xe5\x66", [26173] = "\xe5\x67", [26174] = "\x8c\xd5",
++ [26176] = "\x8b\x73", [26180] = "\xe5\x69", [26181] = "\x99\x7c",
++ [26186] = "\x8b\x95", [26188] = "\x97\xb8", [26190] = "\x8b\xf1",
++ [26191] = "\xe5\x6a", [26199] = "\xe5\x6b", [26203] = "\x92\x8e",
++ [26209] = "\xe5\x6c", [26217] = "\x93\xf8", [26219] = "\x88\xb8",
++ [26234] = "\x89\xe1", [26235] = "\xe5\x71", [26236] = "\xe5\x72",
++ [26243] = "\xe5\x6d", [26245] = "\x8e\x5c", [26259] = "\xe5\x6e",
++ [26260] = "\x94\x61", [26265] = "\xe5\x6f", [26266] = "\xe5\x70",
++ [26267] = "\xe5\x7a", [26271] = "\xe5\x74", [26272] = "\xe5\x77",
++ [26278] = "\xe5\x73", [26292] = "\xe5\x75", [26294] = "\xe5\x76",
++ [26295] = "\x8e\xd6", [26297] = "\xe5\x78", [26299] = "\x92\x60",
++ [26301] = "\x8c\x75", [26302] = "\x8a\x61", [26308] = "\xe5\x7b",
++ [26313] = "\x8a\x5e", [26315] = "\xe5\x81", [26318] = "\xe5\x7c",
++ [26319] = "\xe5\x80", [26324] = "\x94\xb8", [26329] = "\xe5\x7d",
++ [26332] = "\xe5\x7e", [26333] = "\x95\x67", [26334] = "\x94\xd8",
++ [26335] = "\xe5\x82", [26344] = "\x91\xfb", [26345] = "\xe5\x8c",
++ [26347] = "\xe5\x88", [26350] = "\x89\xe9", [26352] = "\xe5\x86",
++ [26354] = "\x96\x49", [26355] = "\xe5\x87", [26358] = "\xe5\x84",
++ [26360] = "\xe5\x85", [26361] = "\xe5\x8a", [26362] = "\xe5\x8d",
++ [26365] = "\xe5\x8b", [26369] = "\xe5\x89", [26370] = "\xe5\x83",
++ [26376] = "\x92\x77", [26378] = "\xe5\x94", [26380] = "\x96\xa8",
++ [26389] = "\xe5\x92", [26393] = "\xe5\x93", [26404] = "\xe5\x8e",
++ [26407] = "\xe5\x90", [26411] = "\xe5\x91", [26415] = "\xe5\x8f",
++ [26425] = "\x90\xe4", [26427] = "\x98\x58", [26428] = "\xe5\x98",
++ [26430] = "\xe5\x99", [26435] = "\xe5\x9f", [26437] = "\x90\x49",
++ [26439] = "\xe5\x9b", [26441] = "\xe5\x9e", [26447] = "\xe5\x96",
++ [26448] = "\xe5\x95", [26451] = "\xe5\xa0", [26454] = "\x89\xda",
++ [26456] = "\xe5\x9c", [26458] = "\xe5\xa1", [26462] = "\xe5\x9d",
++ [26468] = "\xe5\x9a", [26470] = "\x92\xb1", [26472] = "\xe5\x97",
++ [26479] = "\x94\x88", [26482] = "\xe5\xa5", [26493] = "\x97\x5a",
++ [26511] = "\xe5\xa4", [26514] = "\xe5\xa3", [26523] = "\xe5\xac",
++ [26527] = "\xe5\xa6", [26531] = "\xe5\xae", [26538] = "\x97\x86",
++ [26539] = "\xe5\xb1", [26541] = "\xe5\xa8", [26544] = "\xe5\xa9",
++ [26548] = "\xe5\xad", [26550] = "\xe5\xb0", [26551] = "\xe5\xaf",
++ [26555] = "\xe5\xa7", [26560] = "\xe5\xaa", [26562] = "\xe5\xbb",
++ [26576] = "\xe5\xb4", [26591] = "\xe5\xb2", [26594] = "\xe5\xb3",
++ [26598] = "\xe5\xb8", [26599] = "\xe5\xb9", [26601] = "\x8a\x49",
++ [26603] = "\x8b\x61", [26606] = "\xe5\xb7", [26613] = "\xe5\xa2",
++ [26615] = "\xfb\xa1", [26621] = "\xe5\xb6", [26622] = "\xe5\xba",
++ [26623] = "\xe5\xb5", [26625] = "\xe5\xbc", [26629] = "\xe5\xbe",
++ [26630] = "\xe5\xbd", [26641] = "\xe5\xc0", [26642] = "\xe5\xbf",
++ [26643] = "\xe5\x79", [26647] = "\xe5\xc4", [26657] = "\xe5\xc1",
++ [26662] = "\xe5\xc2", [26665] = "\xe5\xc3", [26667] = "\xe5\xc5",
++ [26672] = "\x8c\x8c", [26674] = "\xe5\xc7", [26676] = "\xe5\xc6",
++ [26678] = "\x8f\x4f", [26684] = "\x8d\x73", [26685] = "\x9f\xa5",
++ [26690] = "\xe5\xc8", [26691] = "\x8f\x70", [26695] = "\x8a\x58",
++ [26697] = "\xe5\xc9", [26699] = "\x89\x71", [26701] = "\x8f\xd5",
++ [26702] = "\xe5\xca", [26705] = "\x8d\x74", [26706] = "\xe5\xcb",
++ [26707] = "\x88\xdf", [26712] = "\x95\x5c", [26715] = "\xe5\xcc",
++ [26720] = "\x90\x8a", [26722] = "\xe5\xd3", [26725] = "\xe5\xd0",
++ [26727] = "\x92\x8f", [26733] = "\xe5\xd1", [26734] = "\xe5\xce",
++ [26735] = "\x8b\xdc", [26737] = "\xe5\xcd", [26738] = "\xe5\xd4",
++ [26744] = "\x8c\x55", [26747] = "\x91\xdc", [26749] = "\xe5\xda",
++ [26754] = "\xe5\xd6", [26758] = "\x91\xb3", [26759] = "\xe5\xd5",
++ [26761] = "\xe5\xd8", [26766] = "\xe5\xcf", [26770] = "\xe5\xd9",
++ [26772] = "\xe5\xdb", [26779] = "\x94\xed", [26782] = "\xe5\xd7",
++ [26784] = "\xe5\xdc", [26785] = "\xe5\xde", [26788] = "\x8c\xd1",
++ [26789] = "\xe5\xd2", [26791] = "\x88\xbf", [26799] = "\xe5\xdd",
++ [26801] = "\x8d\xd9", [26802] = "\x97\xf4", [26803] = "\xe5\xdf",
++ [26804] = "\xe5\xe0", [26805] = "\x91\x95", [26815] = "\x97\xa0",
++ [26820] = "\xe5\xe1", [26821] = "\x97\x54", [26824] = "\xe5\xe2",
++ [26825] = "\xe5\xe3", [26828] = "\x95\xe2", [26829] = "\xe5\xe4",
++ [26831] = "\x8d\xbe", [26833] = "\x97\xa1", [26840] = "\xe5\xe9",
++ [26850] = "\xe5\xea", [26851] = "\x8f\xd6", [26852] = "\xe5\xe8",
++ [26853] = "\xfb\xa2", [26856] = "\x97\x87", [26857] = "\xe5\xe5",
++ [26860] = "\xe5\xe7", [26861] = "\x90\xbb", [26862] = "\x90\x9e",
++ [26866] = "\xe5\xe6", [26868] = "\xe5\xeb", [26871] = "\x95\xa1",
++ [26874] = "\xe5\xed", [26876] = "\xe5\xec", [26880] = "\x8a\x8c",
++ [26882] = "\x96\x4a", [26883] = "\xe5\xee", [26892] = "\xfa\x5d",
++ [26893] = "\xe5\xfa", [26894] = "\xe5\xf0", [26901] = "\xe5\xf1",
++ [26906] = "\xe5\xf2", [26907] = "\xe5\xf3", [26918] = "\xe5\xf7",
++ [26920] = "\xe5\xf8", [26923] = "\xe5\xf6", [26929] = "\xe5\xf4",
++ [26931] = "\xe5\xef", [26932] = "\xe5\xf5", [26940] = "\xe5\xf9",
++ [26941] = "\xe8\xb5", [26950] = "\x89\xa6", [26958] = "\xe5\xfc",
++ [26959] = "\x8b\xdd", [26960] = "\xe5\xfb", [26964] = "\xe6\x41",
++ [26966] = "\xe6\x40", [26970] = "\xe6\x43", [26973] = "\xe6\x42",
++ [26975] = "\xe6\x44", [26978] = "\x8f\x50", [26980] = "\xe6\x45",
++ [26983] = "\xe6\x46", [26990] = "\xe6\x47", [26991] = "\x90\xbc",
++ [26993] = "\x97\x76", [26995] = "\xe6\x48", [26998] = "\x95\xa2",
++ [26999] = "\x94\x65", [27000] = "\xe6\x49", [27002] = "\xe6\x4a",
++ [27003] = "\x8c\xa9", [27007] = "\x8b\x4b", [27011] = "\xe6\x4b",
++ [27014] = "\x8e\x8b", [27015] = "\x94\x60", [27016] = "\xe6\x4c",
++ [27018] = "\x8a\x6f", [27025] = "\xe6\x4d", [27030] = "\xe6\x4f",
++ [27031] = "\x97\x97", [27033] = "\xe6\x4e", [27034] = "\x90\x65",
++ [27036] = "\xe6\x50", [27039] = "\xe6\x51", [27042] = "\xe6\x52",
++ [27043] = "\x8a\xcf", [27050] = "\xe6\x53", [27053] = "\xe6\x54",
++ [27055] = "\xe6\x55", [27056] = "\xe6\x56", [27074] = "\x8a\x70",
++ [27082] = "\xe6\x57", [27084] = "\xe6\x58", [27085] = "\xe6\x59",
++ [27091] = "\x89\xf0", [27094] = "\x90\x47", [27095] = "\xe6\x5a",
++ [27108] = "\xe6\x5b", [27112] = "\xe6\x5c", [27120] = "\x8c\xbe",
++ [27122] = "\x92\xf9", [27123] = "\xe6\x5d", [27128] = "\x8c\x76",
++ [27130] = "\x90\x75", [27132] = "\xe6\x60", [27134] = "\x93\xa2",
++ [27136] = "\xe6\x5f", [27138] = "\xfb\xa3", [27139] = "\x8c\x50",
++ [27142] = "\xe6\x5e", [27143] = "\x91\xf5", [27144] = "\x8b\x4c",
++ [27147] = "\xe6\x61", [27149] = "\xe6\x62", [27151] = "\x8f\xd7",
++ [27155] = "\x8c\x8d", [27157] = "\xe6\x63", [27162] = "\x96\x4b",
++ [27165] = "\x90\xdd", [27169] = "\x8b\x96", [27171] = "\x96\xf3",
++ [27172] = "\x91\x69", [27174] = "\xe6\x64", [27175] = "\xfb\xa4",
++ [27178] = "\x90\x66", [27179] = "\x92\x90", [27180] = "\x8f\xd8",
++ [27185] = "\xe6\x65", [27190] = "\xe6\x68", [27192] = "\xe6\x69",
++ [27200] = "\x8d\xbc", [27201] = "\x91\xc0", [27202] = "\xe6\x67",
++ [27204] = "\x8f\xd9", [27205] = "\x95\x5d", [27211] = "\xe6\x66",
++ [27214] = "\x8e\x8c", [27216] = "\x89\x72", [27218] = "\xe6\x6d",
++ [27219] = "\x8c\x77", [27222] = "\x8e\x8e", [27225] = "\x8e\x8d",
++ [27227] = "\x98\x6c", [27228] = "\xe6\x6c", [27229] = "\xe6\x6b",
++ [27230] = "\x91\x46", [27232] = "\x8b\x6c", [27233] = "\x98\x62",
++ [27234] = "\x8a\x59", [27235] = "\x8f\xda", [27241] = "\xfb\xa5",
++ [27244] = "\xe6\x6a", [27250] = "\xe6\x6f", [27252] = "\xe6\x70",
++ [27253] = "\xe6\x6e", [27255] = "\x8c\xd6", [27257] = "\x97\x5f",
++ [27260] = "\x8e\x8f", [27261] = "\x94\x46", [27265] = "\xe6\x73",
++ [27267] = "\x90\xbe", [27269] = "\x92\x61", [27272] = "\x97\x55",
++ [27274] = "\xe6\x76", [27278] = "\x8c\xea", [27280] = "\x90\xbd",
++ [27281] = "\xe6\x72", [27283] = "\xe6\x77", [27284] = "\x8c\xeb",
++ [27285] = "\xe6\x74", [27286] = "\xe6\x75", [27287] = "\xfb\xa6",
++ [27288] = "\xe6\x71", [27292] = "\x90\xe0", [27293] = "\x93\xc7",
++ [27296] = "\x92\x4e", [27298] = "\x89\xdb", [27305] = "\x94\xee",
++ [27308] = "\x8b\x62", [27310] = "\xfb\xa7", [27311] = "\x92\xb2",
++ [27314] = "\xe6\x7a", [27316] = "\xe6\x78", [27319] = "\x92\x6b",
++ [27323] = "\x90\xbf", [27324] = "\x8a\xd0", [27325] = "\xe6\x79",
++ [27327] = "\x90\x7a", [27330] = "\x97\xc8", [27334] = "\x98\x5f",
++ [27338] = "\xe6\x7b", [27339] = "\xe6\x87", [27340] = "\x92\xb3",
++ [27342] = "\xe6\x86", [27343] = "\xfb\xa8", [27344] = "\xe6\x83",
++ [27345] = "\xe6\x8b", [27346] = "\xe6\x84", [27348] = "\xe6\x80",
++ [27350] = "\x92\xfa", [27351] = "\xe6\x7e", [27355] = "\xe6\x7c",
++ [27357] = "\x97\x40", [27358] = "\x8e\x90", [27361] = "\xe6\x81",
++ [27363] = "\xe6\x7d", [27366] = "\xfb\xaa", [27367] = "\xe6\x85",
++ [27368] = "\x8f\x94", [27370] = "\x8c\xbf", [27374] = "\x91\xf8",
++ [27376] = "\x96\x64", [27377] = "\x89\x79", [27378] = "\x88\xe0",
++ [27380] = "\x93\xa3", [27383] = "\xe6\x89", [27388] = "\xe6\x88",
++ [27390] = "\x93\xe4", [27392] = "\xe6\x8d", [27396] = "\xe6\x82",
++ [27398] = "\xe6\x8c", [27399] = "\xe6\x8e", [27401] = "\x8c\xaa",
++ [27402] = "\xe6\x8a", [27403] = "\x8d\x75", [27405] = "\x8e\xd3",
++ [27408] = "\xe6\x8f", [27409] = "\x97\x77", [27414] = "\xe6\x92",
++ [27416] = "\xe6\x95", [27419] = "\xe6\x93", [27420] = "\x95\x54",
++ [27427] = "\xe6\x90", [27433] = "\x8b\xde", [27438] = "\xe6\x94",
++ [27441] = "\xe6\x96", [27449] = "\xe6\x9a", [27452] = "\xe6\x97",
++ [27454] = "\xe6\x99", [27455] = "\xe6\x98", [27459] = "\xfb\xab",
++ [27462] = "\xe6\x9b", [27464] = "\x8e\xaf", [27466] = "\xe6\x9d",
++ [27467] = "\xe6\x9c", [27468] = "\x95\x88", [27471] = "\xe6\x9f",
++ [27478] = "\x8c\x78", [27483] = "\xe6\x9e", [27484] = "\xe6\xa0",
++ [27487] = "\xe6\xa1", [27488] = "\x8b\x63", [27489] = "\xe3\xbf",
++ [27490] = "\x8f\xf7", [27492] = "\xe6\xa2", [27495] = "\x8c\xec",
++ [27501] = "\xe6\xa3", [27503] = "\xfb\xac", [27504] = "\xe6\xa4",
++ [27507] = "\x8e\x5d", [27514] = "\x9d\xcc", [27516] = "\xe6\xa5",
++ [27518] = "\xe6\xa6", [27520] = "\x8f\x51", [27522] = "\xe6\xa7",
++ [27523] = "\xe6\xa8", [27526] = "\xe6\xa9", [27529] = "\xe6\xaa",
++ [27530] = "\xe6\xab", [27687] = "\x92\x4a", [27690] = "\xe6\xac",
++ [27695] = "\xe6\xae", [27697] = "\xe6\xad", [27702] = "\x93\xa4",
++ [27704] = "\xe6\xaf", [27706] = "\x96\x4c", [27708] = "\xe6\xb0",
++ [27710] = "\xe6\xb1", [27712] = "\xe6\xb2", [27717] = "\xe6\xb3",
++ [27722] = "\x93\xd8", [27729] = "\x8f\xdb", [27730] = "\xe6\xb4",
++ [27738] = "\x8d\x8b", [27739] = "\x98\xac", [27740] = "\xe6\xb5",
++ [27752] = "\xe6\xb6", [27753] = "\x95\x5e", [27754] = "\xe6\xb7",
++ [27756] = "\xe6\xbf", [27762] = "\xe6\xb8", [27765] = "\xe6\xba",
++ [27769] = "\xe6\xb9", [27770] = "\xe6\xbb", [27772] = "\x96\x65",
++ [27773] = "\xe6\xbc", [27774] = "\xe6\xbd", [27780] = "\xe6\xbe",
++ [27784] = "\xe6\xc0", [27789] = "\x8a\x4c", [27790] = "\x92\xe5",
++ [27792] = "\x95\x89", [27793] = "\x8d\xe0", [27794] = "\x8d\x76",
++ [27799] = "\x95\x6e", [27800] = "\x89\xdd", [27801] = "\x94\xcc",
++ [27802] = "\xe6\xc3", [27803] = "\x8a\xd1", [27804] = "\x90\xd3",
++ [27805] = "\xe6\xc2", [27806] = "\xe6\xc7", [27807] = "\x92\x99",
++ [27808] = "\x96\xe1", [27810] = "\xe6\xc5", [27811] = "\xe6\xc6",
++ [27812] = "\x8b\x4d", [27814] = "\xe6\xc8", [27815] = "\x94\x83",
++ [27816] = "\x91\xdd", [27819] = "\x94\xef", [27820] = "\x93\x5c",
++ [27821] = "\xe6\xc4", [27823] = "\x96\x66", [27824] = "\x89\xea",
++ [27825] = "\xe6\xca", [27826] = "\x98\x47", [27827] = "\x92\xc0",
++ [27828] = "\x98\x64", [27831] = "\x8e\x91", [27832] = "\xe6\xc9",
++ [27834] = "\x91\xaf", [27837] = "\xe6\xda", [27838] = "\x91\x47",
++ [27841] = "\x93\xf6", [27843] = "\x95\x6f", [27850] = "\xe6\xcd",
++ [27851] = "\x8e\x5e", [27852] = "\x8e\x92", [27854] = "\x8f\xdc",
++ [27856] = "\x94\x85", [27858] = "\x8c\xab", [27859] = "\xe6\xcc",
++ [27860] = "\xe6\xcb", [27862] = "\x95\x8a", [27866] = "\x8e\xbf",
++ [27869] = "\x93\x71", [27872] = "\xfb\xad", [27876] = "\xfb\xae",
++ [27882] = "\xe6\xcf", [27883] = "\xe6\xd0", [27884] = "\x8d\x77",
++ [27885] = "\xe6\xce", [27892] = "\xe6\xd1", [27893] = "\xe6\xd2",
++ [27895] = "\xe6\xd4", [27896] = "\x91\xa1", [27898] = "\xe6\xd3",
++ [27899] = "\x8a\xe4", [27901] = "\xe6\xd6", [27903] = "\xe6\xd5",
++ [27904] = "\xe6\xd7", [27906] = "\xfb\xaf", [27907] = "\xe6\xd9",
++ [27908] = "\xe6\xdb", [27910] = "\xe6\xdc", [27988] = "\x90\xd4",
++ [27990] = "\x8e\xcd", [27991] = "\xe6\xdd", [27995] = "\x8a\x71",
++ [27997] = "\xe6\xde", [28000] = "\x91\x96", [28001] = "\xe6\xdf",
++ [28003] = "\xe6\xe0", [28004] = "\x95\x8b", [28006] = "\xfb\xb0",
++ [28007] = "\x8b\x4e", [28017] = "\xe6\xe1", [28021] = "\x92\xb4",
++ [28026] = "\x89\x7a", [28041] = "\xe6\xe2", [28051] = "\x8e\xef",
++ [28056] = "\x90\x96", [28067] = "\x91\xab", [28074] = "\xe6\xe5",
++ [28078] = "\xe6\xe4", [28082] = "\xe6\xe3", [28091] = "\xe6\xeb",
++ [28092] = "\xe6\xe9", [28095] = "\xe6\xe6", [28102] = "\xe6\xe8",
++ [28106] = "\xe6\xe7", [28107] = "\xe6\xea", [28109] = "\x8b\x97",
++ [28111] = "\xe6\xee", [28113] = "\x90\xd5", [28115] = "\xe6\xef",
++ [28120] = "\x8c\xd7", [28122] = "\xe6\xec", [28123] = "\xe6\xed",
++ [28127] = "\x98\x48", [28131] = "\x92\xb5", [28133] = "\x91\x48",
++ [28140] = "\xe6\xf0", [28143] = "\xe6\xf3", [28152] = "\xe6\xf1",
++ [28153] = "\xe6\xf2", [28154] = "\x97\x78", [28159] = "\x93\xa5",
++ [28160] = "\xe6\xf6", [28173] = "\xe6\xf4", [28174] = "\xe6\xf5",
++ [28175] = "\xe6\xf7", [28186] = "\xe7\x48", [28192] = "\xe6\xfa",
++ [28196] = "\xe6\xfb", [28197] = "\xe6\xf9", [28210] = "\xe6\xf8",
++ [28212] = "\x92\xfb", [28215] = "\xe7\x40", [28216] = "\xe7\x44",
++ [28217] = "\xe7\x41", [28218] = "\xe6\xfc", [28220] = "\xe7\x42",
++ [28224] = "\xe7\x43", [28229] = "\xe7\x4a", [28233] = "\xe7\x45",
++ [28239] = "\x90\xd6", [28240] = "\xe7\x47", [28243] = "\xe7\x49",
++ [28244] = "\xe7\x46", [28258] = "\xe7\x4c", [28260] = "\x8f\x52",
++ [28262] = "\xe7\x4b", [28268] = "\xe7\x4d", [28273] = "\xe7\x4e",
++ [28276] = "\xe7\x51", [28277] = "\xe7\x50", [28279] = "\xe7\x4f",
++ [28282] = "\xe7\x53", [28283] = "\xe7\x52", [28285] = "\x96\xf4",
++ [28289] = "\xe7\x55", [28291] = "\xe7\x54", [28292] = "\xe7\x56",
++ [28297] = "\xe7\x57", [28305] = "\xe7\x59", [28314] = "\xe7\x58",
++ [28315] = "\x90\x67", [28316] = "\xe7\x5a", [28319] = "\x8b\xeb",
++ [28320] = "\xe7\x5b", [28321] = "\xe7\x5d", [28334] = "\xe7\x5e",
++ [28341] = "\xe7\x5f", [28342] = "\xe7\x5c", [28344] = "\xe7\x60",
++ [28346] = "\x8e\xd4", [28347] = "\xe7\x61", [28348] = "\x8b\x4f",
++ [28349] = "\x8c\x52", [28351] = "\xfb\xb2", [28354] = "\x8c\xac",
++ [28363] = "\xe7\x62", [28367] = "\x93\xee", [28370] = "\x93\x5d",
++ [28371] = "\xe7\x63", [28379] = "\xe7\x66", [28392] = "\x8e\xb2",
++ [28395] = "\xe7\x65", [28396] = "\xe7\x64", [28397] = "\x8c\x79",
++ [28398] = "\xe7\x67", [28403] = "\x8a\x72", [28405] = "\xe7\x69",
++ [28409] = "\x8d\xda", [28410] = "\xe7\x68", [28412] = "\xe7\x71",
++ [28418] = "\xe7\x6b", [28419] = "\xe7\x6d", [28420] = "\x95\xe3",
++ [28421] = "\xe7\x6a", [28425] = "\xe7\x6c", [28427] = "\xe7\x70",
++ [28428] = "\xe7\x6e", [28429] = "\x8b\x50", [28431] = "\xe7\x6f",
++ [28438] = "\xe7\x72", [28441] = "\x94\x79", [28442] = "\x97\xd6",
++ [28447] = "\x8f\x53", [28451] = "\xe7\x73", [28456] = "\x97\x41",
++ [28457] = "\xe7\x75", [28459] = "\xe7\x74", [28462] = "\xe7\x78",
++ [28463] = "\x97\x60", [28466] = "\xe7\x77", [28468] = "\x8a\x8d",
++ [28469] = "\xe7\x76", [28470] = "\xe7\x7b", [28473] = "\xe7\x7a",
++ [28476] = "\xe7\x79", [28477] = "\x93\x51", [28478] = "\xe7\x7c",
++ [28487] = "\xe7\x7d", [28492] = "\xe7\x7e", [28495] = "\x8d\x8c",
++ [28497] = "\x8c\x44", [28498] = "\xe7\x80", [28499] = "\xe7\x81",
++ [28500] = "\xe7\x82", [28555] = "\x90\x68", [28556] = "\xe7\x83",
++ [28558] = "\x8e\xab", [28559] = "\xe7\x84", [28563] = "\xe7\x85",
++ [28567] = "\x99\x9f", [28568] = "\x99\x9e", [28573] = "\xe7\x86",
++ [28574] = "\xe3\x90", [28575] = "\xe7\x87", [28576] = "\x92\x43",
++ [28577] = "\x90\x4a", [28578] = "\x94\x5f", [28583] = "\xe7\x88",
++ [28586] = "\x95\xd3", [28587] = "\x92\xd2", [28588] = "\x8d\x9e",
++ [28591] = "\x92\x48", [28594] = "\x89\x49", [28596] = "\x96\x98",
++ [28597] = "\x90\x76", [28606] = "\x8c\x7d", [28609] = "\x8b\xdf",
++ [28612] = "\x95\xd4", [28618] = "\xe7\x89", [28626] = "\xe7\x8b",
++ [28629] = "\xe7\x8a", [28630] = "\x89\xde", [28633] = "\x93\xf4",
++ [28634] = "\xe7\x8c", [28635] = "\x94\x97", [28637] = "\x93\x52",
++ [28639] = "\xe7\x8d", [28640] = "\x8f\x71", [28644] = "\xe7\x8f",
++ [28647] = "\x96\xc0", [28648] = "\xe7\x9e", [28649] = "\xe7\x91",
++ [28650] = "\xe7\x92", [28653] = "\x92\xc7", [28656] = "\x91\xde",
++ [28657] = "\x91\x97", [28659] = "\x93\xa6", [28661] = "\xe7\x90",
++ [28662] = "\x8b\x74", [28667] = "\xe7\x99", [28669] = "\xe7\x96",
++ [28670] = "\xe7\xa3", [28671] = "\x93\xa7", [28672] = "\x92\x80",
++ [28673] = "\xe7\x93", [28675] = "\x92\xfc", [28676] = "\x93\x72",
++ [28677] = "\xe7\x94", [28678] = "\xe7\x98", [28679] = "\x90\x80",
++ [28681] = "\x94\x87", [28682] = "\x92\xca", [28685] = "\x90\xc0",
++ [28686] = "\xe7\x97", [28687] = "\x91\xac", [28688] = "\x91\xa2",
++ [28689] = "\xe7\x95", [28690] = "\x88\xa7", [28691] = "\x98\x41",
++ [28695] = "\xe7\x9a", [28702] = "\x91\xdf", [28705] = "\x8f\x54",
++ [28706] = "\x90\x69", [28709] = "\xe7\x9c", [28710] = "\xe7\x9b",
++ [28712] = "\x88\xed", [28713] = "\xe7\x9d", [28716] = "\x95\x4e",
++ [28718] = "\xe7\xa5", [28721] = "\x93\xd9", [28722] = "\x90\x8b",
++ [28725] = "\x92\x78", [28727] = "\x8b\xf6", [28729] = "\xe7\xa4",
++ [28730] = "\x97\x56", [28731] = "\x89\x5e", [28733] = "\x95\xd5",
++ [28734] = "\x89\xdf", [28735] = "\xe7\x9f", [28736] = "\xe7\xa0",
++ [28737] = "\xe7\xa1", [28738] = "\xe7\xa2", [28739] = "\x93\xb9",
++ [28740] = "\x92\x42", [28741] = "\x88\xe1", [28742] = "\xe7\xa6",
++ [28744] = "\xe7\xa7", [28745] = "\xea\xa1", [28748] = "\x91\xbb",
++ [28750] = "\xe7\xa8", [28752] = "\x89\x93", [28753] = "\x91\x6b",
++ [28755] = "\x8c\xad", [28757] = "\x97\x79", [28759] = "\xfb\xb5",
++ [28760] = "\xe7\xa9", [28761] = "\x93\x4b", [28765] = "\x91\x98",
++ [28766] = "\x8e\xd5", [28767] = "\xe7\xaa", [28770] = "\xe7\xad",
++ [28773] = "\x8f\x85", [28774] = "\xe7\xab", [28775] = "\x91\x4a",
++ [28776] = "\x91\x49", [28778] = "\x88\xe2", [28780] = "\x97\xc9",
++ [28781] = "\xe7\xaf", [28783] = "\x94\xf0", [28784] = "\xe7\xb1",
++ [28785] = "\xe7\xb0", [28786] = "\xe7\xae", [28787] = "\xe2\x84",
++ [28788] = "\x8a\xd2", [28791] = "\xe7\x8e", [28793] = "\xe7\xb3",
++ [28794] = "\xe7\xb2", [28799] = "\xe7\xb4", [28801] = "\x97\x57",
++ [28819] = "\x93\xdf", [28822] = "\x96\x4d", [28824] = "\xe7\xb5",
++ [28826] = "\x8e\xd7", [28831] = "\xe7\xb6", [28833] = "\xe7\xb7",
++ [28837] = "\xe7\xb8", [28840] = "\x93\x40", [28849] = "\x88\xe8",
++ [28858] = "\x8d\x78", [28862] = "\x98\x59", [28875] = "\xe7\xbc",
++ [28878] = "\xfb\xb6", [28881] = "\x8c\x53", [28882] = "\xe7\xb9",
++ [28884] = "\xe7\xba", [28888] = "\x95\x94", [28893] = "\x8a\x73",
++ [28901] = "\x97\x58", [28903] = "\x8b\xbd", [28909] = "\x93\x73",
++ [28914] = "\xe7\xbd", [28930] = "\xe7\xbe", [28933] = "\xfb\xb8",
++ [28937] = "\xe7\xbf", [28951] = "\xfb\xb9", [28957] = "\x93\x41",
++ [28960] = "\xe7\xc1", [28962] = "\xe7\xc0", [28985] = "\x93\xd1",
++ [28986] = "\xe7\xc2", [28987] = "\x8f\x55", [28988] = "\x8e\xde",
++ [28989] = "\x94\x7a", [28990] = "\x92\x91", [28994] = "\x8e\xf0",
++ [28996] = "\x90\x8c", [28998] = "\xe7\xc3", [29000] = "\xe7\xc4",
++ [29010] = "\x90\x7c", [29011] = "\xe7\xc5", [29013] = "\xe7\xc6",
++ [29017] = "\xe7\xc7", [29018] = "\x97\x8f", [29020] = "\x8f\x56",
++ [29026] = "\xe7\xc9", [29027] = "\xe7\xc8", [29029] = "\x8d\x79",
++ [29031] = "\x8d\x93", [29032] = "\x8e\x5f", [29042] = "\xe7\xcc",
++ [29047] = "\x8f\x86", [29049] = "\xe7\xcb", [29051] = "\xe7\xca",
++ [29053] = "\x91\xe7", [29056] = "\x8c\xed", [29058] = "\x90\xc1",
++ [29063] = "\x94\xae", [29068] = "\x8f\x58", [29074] = "\xe7\xcd",
++ [29076] = "\x8f\xdd", [29082] = "\xe7\xd0", [29083] = "\xe7\xce",
++ [29087] = "\xe7\xcf", [29092] = "\xe7\xd2", [29093] = "\xe7\xd1",
++ [29096] = "\x8f\xf8", [29098] = "\xe7\xd3", [29104] = "\xe7\xd4",
++ [29105] = "\xe7\xd5", [29110] = "\x94\xce", [29111] = "\x8d\xd1",
++ [29112] = "\x8e\xdf", [29113] = "\xe7\xd6", [29115] = "\xe7\xd7",
++ [29116] = "\x97\xa2", [29117] = "\x8f\x64", [29118] = "\x96\xec",
++ [29119] = "\x97\xca", [29120] = "\xe7\xd8", [29121] = "\x8b\xe0",
++ [29126] = "\xe7\xd9", [29127] = "\xfb\xbb", [29128] = "\x93\x42",
++ [29130] = "\xfb\xba", [29131] = "\xe7\xdc", [29132] = "\x8a\x98",
++ [29133] = "\x90\x6a", [29134] = "\xfb\xbc", [29135] = "\xe7\xda",
++ [29137] = "\xe7\xdb", [29139] = "\x92\xde", [29140] = "\xfb\xbf",
++ [29141] = "\xfb\xc0", [29142] = "\x96\x74", [29143] = "\x8b\xfa",
++ [29149] = "\xfb\xbd", [29150] = "\xfb\xbe", [29157] = "\xe7\xde",
++ [29158] = "\xe7\xdf", [29164] = "\xe7\xdd", [29167] = "\xe7\xe1",
++ [29174] = "\xfb\xc1", [29178] = "\xfb\xc3", [29181] = "\x93\xdd",
++ [29182] = "\x8a\x62", [29184] = "\xfb\xc2", [29185] = "\xe7\xe5",
++ [29188] = "\xe7\xe2", [29189] = "\xe7\xe4", [29198] = "\xe7\xe0",
++ [29209] = "\xe8\x6e", [29212] = "\xe7\xe3", [29220] = "\x97\xe9",
++ [29223] = "\x8c\xd8", [29225] = "\xfb\xca", [29226] = "\xfb\xc4",
++ [29228] = "\xfb\xc6", [29231] = "\xe7\xed", [29232] = "\xfb\xc5",
++ [29236] = "\x93\x53", [29237] = "\xe7\xe8", [29240] = "\xe7\xeb",
++ [29241] = "\xe7\xe9", [29243] = "\xe7\xee", [29246] = "\xfb\xc7",
++ [29248] = "\xe7\xef", [29249] = "\xfb\xc9", [29255] = "\xe7\xe7",
++ [29257] = "\xfb\xc8", [29258] = "\xe7\xf4", [29259] = "\x89\x94",
++ [29262] = "\xe7\xe6", [29266] = "\x94\xab", [29268] = "\xe7\xea",
++ [29270] = "\x8f\xde", [29271] = "\xfb\xcb", [29281] = "\x8d\x7a",
++ [29287] = "\xfb\xcd", [29288] = "\xfb\xce", [29294] = "\x96\x67",
++ [29296] = "\x8b\xe2", [29299] = "\x8f\x65", [29301] = "\x93\xba",
++ [29304] = "\xfa\x5f", [29313] = "\x91\x4c", [29315] = "\xe7\xf2",
++ [29317] = "\xe7\xec", [29318] = "\xe7\xf1", [29320] = "\x96\xc1",
++ [29322] = "\x92\xb6", [29323] = "\xe7\xf3", [29324] = "\xe7\xf0",
++ [29335] = "\xfb\xcc", [29341] = "\x91\x4b", [29351] = "\xe7\xf7",
++ [29353] = "\xe7\xf6", [29375] = "\xe7\xf5", [29376] = "\xfb\xd2",
++ [29378] = "\x96\x4e", [29379] = "\xfb\xd6", [29381] = "\xfb\xd4",
++ [29383] = "\xfb\xd0", [29385] = "\xfb\xd1", [29392] = "\xfb\xd5",
++ [29396] = "\x8f\x9b", [29399] = "\xfb\xcf", [29401] = "\xe7\xf8",
++ [29402] = "\x95\xdd", [29405] = "\x89\x73", [29410] = "\x95\x65",
++ [29411] = "\x92\x92", [29416] = "\x8b\x98", [29417] = "\xfa\x65",
++ [29418] = "\xe7\xfa", [29419] = "\xfb\xd9", [29420] = "\x8d\x7c",
++ [29423] = "\xfb\xdc", [29426] = "\xfb\xde", [29430] = "\x8e\x4b",
++ [29439] = "\xe7\xf9", [29440] = "\x90\x8d", [29448] = "\x90\x8e",
++ [29449] = "\xe8\x40", [29450] = "\xe8\x42", [29453] = "\xfb\xdd",
++ [29454] = "\xfb\xdb", [29456] = "\x8f\xf9", [29457] = "\xfb\xd8",
++ [29458] = "\xe8\x41", [29459] = "\xe8\x43", [29461] = "\xfb\xd7",
++ [29462] = "\x8b\xd1", [29464] = "\x95\x64", [29467] = "\x8e\xe0",
++ [29468] = "\x98\x42", [29470] = "\xe7\xfc", [29471] = "\x8d\xf6",
++ [29474] = "\x98\x5e", [29477] = "\xe8\x45", [29482] = "\xe8\x44",
++ [29483] = "\xe8\x46", [29492] = "\xe7\xfb", [29496] = "\xfa\x5e",
++ [29499] = "\x93\xe7", [29501] = "\x93\x74", [29508] = "\x92\xd5",
++ [29510] = "\xe8\x4b", [29511] = "\xfb\xe0", [29515] = "\x92\x62",
++ [29516] = "\xe8\x47", [29520] = "\xe8\x48", [29532] = "\x8c\x4c",
++ [29534] = "\xe8\x4a", [29536] = "\xfb\xdf", [29541] = "\x8c\xae",
++ [29548] = "\xe8\x49", [29550] = "\x8f\xdf", [29564] = "\x8a\x99",
++ [29572] = "\xe8\x4f", [29574] = "\x8d\xbd", [29575] = "\x91\x99",
++ [29578] = "\x92\xc8", [29588] = "\xfb\xe1", [29591] = "\x8a\x5a",
++ [29596] = "\xe8\x4d", [29597] = "\xe8\x4e", [29598] = "\x92\xc1",
++ [29600] = "\xe8\x4c", [29609] = "\xe8\x50", [29619] = "\xe8\x56",
++ [29622] = "\xfb\xe2", [29624] = "\xe8\x59", [29632] = "\xe8\x58",
++ [29633] = "\x93\x4c", [29638] = "\xe8\x51", [29639] = "\xe8\x52",
++ [29640] = "\xe8\x55", [29645] = "\xe8\x57", [29646] = "\xfb\xe3",
++ [29649] = "\x8b\xbe", [29652] = "\xe8\x5a", [29653] = "\xe8\x54",
++ [29656] = "\xe8\x53", [29672] = "\xfb\xe4", [29683] = "\xe8\x5e",
++ [29687] = "\xe8\x5f", [29696] = "\xe8\x60", [29699] = "\xe8\x5d",
++ [29700] = "\xe8\x5c", [29704] = "\x8f\xe0", [29705] = "\x93\xa8",
++ [29706] = "\xe8\x5b", [29713] = "\xe8\x64", [29723] = "\xe8\x62",
++ [29729] = "\xfb\xe5", [29733] = "\xe8\x63", [29734] = "\xe8\x61",
++ [29736] = "\x91\xf6", [29738] = "\xe8\x65", [29745] = "\xe8\x66",
++ [29748] = "\xe8\x68", [29749] = "\xfb\xe6", [29752] = "\xfb\xe7",
++ [29761] = "\x8a\xd3", [29762] = "\xe8\x67", [29763] = "\x96\xf8",
++ [29770] = "\xe8\x73", [29771] = "\xe8\x69", [29774] = "\xe8\x6c",
++ [29776] = "\xe8\x6a", [29778] = "\xe8\x6b", [29786] = "\xe8\x6d",
++ [29792] = "\xe8\x6f", [29797] = "\xe8\x70", [29799] = "\xe8\x71",
++ [29804] = "\xe8\x74", [29805] = "\xe8\x72", [29806] = "\xe8\x75",
++ [29807] = "\xe8\x77", [29809] = "\xe8\x76", [30055] = "\x92\xb7",
++ [30064] = "\x96\xe5", [30066] = "\xe8\x78", [30067] = "\x91\x4d",
++ [30071] = "\xe8\x79", [30073] = "\x95\xc2", [30074] = "\xe8\x7a",
++ [30075] = "\x8a\x4a", [30079] = "\x89\x5b", [30081] = "\x8a\xd5",
++ [30082] = "\xfb\xe8", [30083] = "\x8a\xd4", [30084] = "\xe8\x7b",
++ [30086] = "\xe8\x7c", [30088] = "\xe8\x7d", [30089] = "\xe8\x7e",
++ [30096] = "\xe8\x80", [30098] = "\x8a\xd6", [30099] = "\x8a\x74",
++ [30100] = "\x8d\x7d", [30101] = "\x94\xb4", [30103] = "\xe8\x82",
++ [30104] = "\xe8\x81", [30109] = "\xe8\x83", [30114] = "\x89\x7b",
++ [30121] = "\xe8\x86", [30123] = "\xe8\x85", [30124] = "\xe8\x84",
++ [30126] = "\xe8\x87", [30131] = "\xe8\x8a", [30135] = "\x88\xc5",
++ [30138] = "\xe8\x88", [30140] = "\xe8\x8c", [30141] = "\xe8\x8b",
++ [30148] = "\xe8\x8e", [30149] = "\xe8\x8d", [30150] = "\xe8\x8f",
++ [30152] = "\x93\xac", [30156] = "\xe8\x90", [30161] = "\xe8\x91",
++ [30162] = "\xe8\x93", [30165] = "\xe8\x92", [30220] = "\x95\x8c",
++ [30225] = "\xe8\x94", [30232] = "\xe8\x95", [30234] = "\x8d\xe3",
++ [30238] = "\xe8\x96", [30239] = "\xe8\x97", [30242] = "\x96\x68",
++ [30251] = "\x91\x6a", [30255] = "\x88\xa2", [30256] = "\x91\xc9",
++ [30258] = "\xe8\x98", [30260] = "\x95\x8d", [30267] = "\xe8\x9b",
++ [30268] = "\xe8\x99", [30269] = "\x8d\x7e", [30271] = "\xe8\x9a",
++ [30272] = "\x8c\xc0", [30283] = "\x95\xc3", [30284] = "\xe8\x9d",
++ [30285] = "\xe8\x9f", [30286] = "\xe8\x9e", [30287] = "\xe8\xa0",
++ [30290] = "\x89\x40", [30291] = "\x90\x77", [30292] = "\x8f\x9c",
++ [30293] = "\x8a\xd7", [30294] = "\xe8\xa1", [30298] = "\x94\x86",
++ [30300] = "\xe8\xa3", [30304] = "\x89\x41", [30306] = "\xe8\xa2",
++ [30307] = "\x92\xc2", [30309] = "\x97\xcb", [30310] = "\x93\xa9",
++ [30311] = "\xe8\x9c", [30312] = "\x97\xa4", [30314] = "\x8c\xaf",
++ [30317] = "\x97\x7a", [30325] = "\x8b\xf7", [30326] = "\x97\xb2",
++ [30328] = "\x8c\x47", [30330] = "\x91\xe0", [30331] = "\xe4\x40",
++ [30333] = "\xe8\xa4", [30334] = "\x8a\x4b", [30335] = "\x90\x8f",
++ [30340] = "\x8a\x75", [30341] = "\xe8\xa6", [30343] = "\xe8\xa7",
++ [30344] = "\xe8\xa5", [30345] = "\x8c\x84", [30347] = "\x8d\xdb",
++ [30348] = "\x8f\xe1", [30349] = "\xfb\xeb", [30352] = "\x89\x42",
++ [30355] = "\x97\xd7", [30359] = "\xe8\xa9", [30360] = "\xe7\xac",
++ [30362] = "\xe8\xa8", [30367] = "\xfb\xec", [30368] = "\xe8\xac",
++ [30369] = "\xe8\xaa", [30370] = "\xe8\xab", [30372] = "\xe8\xad",
++ [30374] = "\xe8\xae", [30375] = "\x97\xea", [30376] = "\xe8\xaf",
++ [30377] = "\xe8\xb0", [30379] = "\x90\xc7", [30380] = "\x94\xb9",
++ [30384] = "\x90\x9d", [30385] = "\x8a\xe5", [30388] = "\x97\x59",
++ [30389] = "\x89\xeb", [30390] = "\x8f\x57", [30391] = "\x8c\xd9",
++ [30393] = "\xe8\xb3", [30395] = "\xe8\xb2", [30396] = "\x8e\x93",
++ [30397] = "\xe8\xb4", [30398] = "\xe8\xb1", [30401] = "\x8e\x47",
++ [30405] = "\xe8\xb8", [30406] = "\xe5\xab", [30409] = "\x99\xd4",
++ [30411] = "\x90\x97", [30412] = "\xe8\xb6", [30418] = "\x97\xa3",
++ [30419] = "\x93\xef", [30424] = "\x89\x4a", [30426] = "\x90\xe1",
++ [30427] = "\x8e\xb4", [30432] = "\x95\xb5", [30434] = "\x89\x5f",
++ [30438] = "\x97\xeb", [30439] = "\x97\x8b", [30441] = "\xe8\xb9",
++ [30443] = "\x93\x64", [30448] = "\x8e\xf9", [30452] = "\xe8\xba",
++ [30454] = "\xe8\xbb", [30455] = "\x90\x6b", [30456] = "\xe8\xbc",
++ [30458] = "\x97\xec", [30461] = "\xe8\xb7", [30462] = "\xe8\xbe",
++ [30463] = "\xe8\xc0", [30465] = "\xe8\xbf", [30467] = "\xe8\xbd",
++ [30470] = "\xe8\xc1", [30473] = "\xe8\xc2", [30476] = "\x91\x9a",
++ [30478] = "\x89\xe0", [30484] = "\xe8\xc3", [30487] = "\x96\xb6",
++ [30490] = "\xe8\xc4", [30496] = "\xe8\xc5", [30498] = "\x98\x49",
++ [30499] = "\xfb\xed", [30504] = "\x9e\x50", [30505] = "\xe8\xc6",
++ [30507] = "\xfb\xee", [30509] = "\xe8\xc7", [30510] = "\xe8\xc8",
++ [30514] = "\xe8\xcc", [30515] = "\xfb\xef", [30516] = "\xe8\xc9",
++ [30518] = "\xe8\xca", [30520] = "\xe8\xcb", [30521] = "\xe8\xcd",
++ [30525] = "\xfb\xf0", [30527] = "\xfb\xf1", [30529] = "\xfb\xf2",
++ [30530] = "\x90\xc2", [30533] = "\xfb\xf3", [30534] = "\x96\xf5",
++ [30537] = "\x90\xc3", [30540] = "\xe8\xce", [30542] = "\x94\xf1",
++ [30544] = "\xe8\xcf", [30545] = "\xea\x72", [30546] = "\x96\xca",
++ [30548] = "\xe8\xd0", [30550] = "\xe8\xd1", [30552] = "\xe8\xd2",
++ [30553] = "\x8a\x76", [30555] = "\xe8\xd4", [30557] = "\x90\x78",
++ [30561] = "\xe8\xd5", [30564] = "\x8c\x43", [30569] = "\xe8\xd6",
++ [30570] = "\xe8\xda", [30572] = "\xe8\xd8", [30577] = "\xe8\xd9",
++ [30580] = "\x8a\x93", [30581] = "\xe8\xd7", [30582] = "\xe8\xdb",
++ [30587] = "\xe8\xdc", [30589] = "\x88\xc6", [30591] = "\xe8\xdd",
++ [30592] = "\xe8\xde", [30600] = "\x8f\xe2", [30604] = "\xe8\xdf",
++ [30608] = "\x8b\x66", [30611] = "\xe8\xe2", [30614] = "\xe8\xe1",
++ [30616] = "\xe8\xe0", [30619] = "\xe6\x91", [30621] = "\x95\xda",
++ [30627] = "\xe8\xe3", [30628] = "\xe8\xe4", [30643] = "\xe8\xe5",
++ [30646] = "\xe8\xe6", [30648] = "\xe8\xe7", [30651] = "\xe8\xe8",
++ [30659] = "\x8a\xd8", [30668] = "\xe8\xe9", [30685] = "\xe8\xea",
++ [30686] = "\x94\x42", [30690] = "\xe8\xec", [30691] = "\x89\xb9",
++ [30693] = "\xe8\xef", [30694] = "\xe8\xee", [30699] = "\x89\x43",
++ [30703] = "\x8b\xbf", [30705] = "\x95\xc5", [30706] = "\x92\xb8",
++ [30707] = "\x8d\xa0", [30709] = "\x8d\x80", [30710] = "\x8f\x87",
++ [30712] = "\x90\x7b", [30716] = "\xe8\xf1", [30719] = "\xe8\xf0",
++ [30720] = "\x97\x61", [30721] = "\x8a\xe6", [30722] = "\x94\xd0",
++ [30723] = "\x93\xda", [30727] = "\x90\x9c", [30728] = "\x97\xcc",
++ [30730] = "\x8c\x7a", [30737] = "\xe8\xf4", [30740] = "\xe8\xf3",
++ [30748] = "\x96\x6a", [30749] = "\x93\xaa", [30756] = "\x89\x6f",
++ [30759] = "\xe8\xf5", [30760] = "\xe8\xf2", [30763] = "\x95\x70",
++ [30764] = "\x97\x8a", [30765] = "\xe8\xf6", [30774] = "\xe8\xf7",
++ [30779] = "\xe8\xf9", [30780] = "\x91\xe8", [30781] = "\x8a\x7a",
++ [30782] = "\x8a\x7b", [30783] = "\xe8\xf8", [30788] = "\x8a\xe7",
++ [30789] = "\x8c\xb0", [30791] = "\xfb\xf4", [30792] = "\x8a\xe8",
++ [30795] = "\x93\x5e", [30798] = "\x97\xde", [30805] = "\xfb\xf5",
++ [30807] = "\x8c\xda", [30811] = "\xe8\xfa", [30815] = "\xe8\xfb",
++ [30816] = "\xe8\xfc", [30817] = "\xe9\x40", [30819] = "\xe9\x42",
++ [30820] = "\xe9\x41", [30872] = "\x95\x97", [30874] = "\xe9\x43",
++ [30879] = "\xe9\x44", [30881] = "\xe9\x45", [30886] = "\xe9\x46",
++ [30899] = "\xe9\x48", [30900] = "\xe9\x47", [30902] = "\xe9\x49",
++ [30923] = "\x94\xf2", [30924] = "\xe3\xca", [30927] = "\x90\x48",
++ [30930] = "\x8b\x51", [30937] = "\xe9\x4a", [30939] = "\xe9\x4b",
++ [30941] = "\x99\xaa", [30942] = "\x9f\x5a", [30943] = "\x94\xd1",
++ [30946] = "\x88\xf9", [30948] = "\x88\xb9", [30956] = "\x8e\x94",
++ [30957] = "\x96\x4f", [30958] = "\x8f\xfc", [30963] = "\xe9\x4c",
++ [30965] = "\x96\xdd", [30969] = "\xe9\x4d", [30970] = "\x97\x7b",
++ [30972] = "\x89\x61", [30976] = "\x8e\x60", [30978] = "\xe9\x4e",
++ [30979] = "\x89\xec", [30980] = "\xe9\x4f", [30984] = "\xe9\x50",
++ [30989] = "\xe9\x52", [30990] = "\xe9\x53", [30992] = "\xe9\x55",
++ [30993] = "\xe9\x51", [30996] = "\xe9\x54", [30999] = "\xfb\xf8",
++ [31000] = "\x8a\xd9", [31004] = "\xe9\x56", [31006] = "\xe9\x57",
++ [31021] = "\xe9\x58", [31022] = "\xe9\x59", [31026] = "\xe9\x5a",
++ [31029] = "\xe9\x5c", [31033] = "\xe9\x5b", [31035] = "\xe9\x5e",
++ [31036] = "\xe9\x61", [31040] = "\xe9\x5d", [31041] = "\xe9\x5f",
++ [31042] = "\xe9\x60", [31045] = "\xe9\x62", [31047] = "\x8b\xc0",
++ [31110] = "\x8e\xf1", [31111] = "\xe9\x63", [31112] = "\xe9\x64",
++ [31113] = "\x8d\x81", [31118] = "\xfb\xfa", [31125] = "\xe9\x65",
++ [31128] = "\x8a\x5d", [31132] = "\x94\x6e", [31133] = "\xe9\x66",
++ [31134] = "\xe9\x67", [31139] = "\x92\x79", [31140] = "\x93\xe9",
++ [31148] = "\xe9\x68", [31153] = "\x94\x9d", [31156] = "\x91\xca",
++ [31157] = "\x89\x77", [31158] = "\x8b\xec", [31160] = "\x8b\xed",
++ [31168] = "\x92\x93", [31169] = "\xe9\x6d", [31170] = "\x8b\xee",
++ [31173] = "\x89\xed", [31176] = "\xe9\x6c", [31179] = "\xe9\x6a",
++ [31181] = "\xe9\x6b", [31183] = "\xe9\x69", [31186] = "\xe9\x77",
++ [31197] = "\xe9\x6e", [31198] = "\xe9\x6f", [31201] = "\xe9\x70",
++ [31202] = "\xe9\x71", [31208] = "\xe9\x73", [31211] = "\xe9\x72",
++ [31215] = "\x8f\x78", [31217] = "\xe9\x74", [31221] = "\xe9\x76",
++ [31230] = "\x8b\x52", [31231] = "\xe9\x75", [31234] = "\x91\x9b",
++ [31235] = "\x8c\xb1", [31241] = "\xe9\x78", [31256] = "\x91\xcb",
++ [31259] = "\xe9\x79", [31264] = "\x93\xab", [31271] = "\xe9\x7a",
++ [31278] = "\xe9\x80", [31280] = "\xe9\x7d", [31282] = "\xe9\x7c",
++ [31283] = "\xe9\x7e", [31285] = "\xe9\x7b", [31293] = "\xe9\x82",
++ [31294] = "\xfb\xfb", [31301] = "\xe9\x81", [31303] = "\xe9\x84",
++ [31306] = "\x8b\xc1", [31307] = "\xe9\x83", [31311] = "\xe9\x85",
++ [31314] = "\xe9\x86", [31316] = "\xe9\x88", [31317] = "\xe9\x87",
++ [31321] = "\xe9\x89", [31322] = "\xe9\x8b", [31323] = "\xe9\x8a",
++ [31384] = "\x8d\x9c", [31389] = "\xe9\x8c", [31392] = "\xe9\x8d",
++ [31400] = "\x8a\x5b", [31404] = "\xe9\x8e", [31408] = "\xe9\x8f",
++ [31412] = "\x90\x91", [31423] = "\xe9\x90", [31425] = "\xe9\x91",
++ [31427] = "\xe9\x92", [31428] = "\xe9\x93", [31432] = "\x8d\x82",
++ [31433] = "\xfb\xfc", [31436] = "\xfc\x40", [31438] = "\xe9\x94",
++ [31439] = "\xe9\x95", [31442] = "\xe9\x96", [31443] = "\xe9\x97",
++ [31446] = "\xe9\x98", [31450] = "\x94\xaf", [31451] = "\xe9\x9a",
++ [31453] = "\x95\x45", [31454] = "\xe9\x9b", [31455] = "\xe9\x99",
++ [31457] = "\xe9\x9d", [31460] = "\xe9\x9c", [31463] = "\xe9\x9e",
++ [31467] = "\xe9\x9f", [31478] = "\xe9\xa0", [31496] = "\xe9\xa1",
++ [31498] = "\xe9\xa2", [31503] = "\xe9\xa3", [31506] = "\xe9\xa4",
++ [31507] = "\xe9\xa5", [31509] = "\xe9\xa6", [31511] = "\xe9\xa7",
++ [31512] = "\xe9\xa8", [31513] = "\xe9\xa9", [31514] = "\xe9\xaa",
++ [31518] = "\xe9\xab", [31519] = "\xe9\xac", [31521] = "\x9f\x54",
++ [31522] = "\xe9\xad", [31531] = "\xe2\xf6", [31532] = "\x8b\x53",
++ [31537] = "\x8a\x40", [31538] = "\x8d\xb0", [31539] = "\xe9\xaf",
++ [31540] = "\xe9\xae", [31541] = "\x96\xa3", [31549] = "\xe9\xb1",
++ [31550] = "\xe9\xb2", [31551] = "\xe9\xb0", [31553] = "\xe9\xb3",
++ [31556] = "\x96\x82", [31560] = "\xe9\xb4", [31562] = "\x8b\x9b",
++ [31583] = "\x98\x44", [31586] = "\xfc\x42", [31588] = "\xe9\xb5",
++ [31589] = "\xfc\x41", [31603] = "\xe9\xb7", [31614] = "\x88\xbc",
++ [31615] = "\xfc\x43", [31617] = "\xe9\xb8", [31618] = "\x95\xa9",
++ [31619] = "\xe9\xb6", [31622] = "\xe9\xb9", [31623] = "\xe9\xba",
++ [31631] = "\xe9\xbb", [31632] = "\xe9\xbc", [31640] = "\xe9\xbd",
++ [31642] = "\x96\x8e", [31643] = "\x8e\x4c", [31645] = "\x8d\xf8",
++ [31646] = "\x91\x4e", [31649] = "\xfc\x44", [31652] = "\xe9\xbe",
++ [31657] = "\xe9\xc1", [31659] = "\xfc\x45", [31664] = "\xe9\xbf",
++ [31670] = "\xe9\xc2", [31673] = "\x8c\xef", [31674] = "\xe9\xc0",
++ [31679] = "\xe9\xc3", [31681] = "\xe9\xc4", [31682] = "\xe9\xc5",
++ [31684] = "\xe9\xc9", [31686] = "\x8e\x49", [31691] = "\x91\xe2",
++ [31697] = "\xe9\xca", [31698] = "\xe9\xc7", [31699] = "\xe9\xc6",
++ [31700] = "\xe9\xc8", [31704] = "\x8c\x7e", [31712] = "\xe9\xce",
++ [31713] = "\xe9\xcd", [31714] = "\xe9\xcc", [31717] = "\x88\xb1",
++ [31728] = "\xfc\x46", [31732] = "\xe9\xd8", [31734] = "\xe9\xd4",
++ [31736] = "\xe9\xd5", [31737] = "\xe9\xd1", [31738] = "\xe9\xd7",
++ [31740] = "\xe9\xd3", [31741] = "\x8a\x82", [31744] = "\x98\x6b",
++ [31746] = "\xe9\xd6", [31747] = "\xe9\xd2", [31748] = "\xe9\xd0",
++ [31749] = "\xe9\xcf", [31755] = "\xe9\xda", [31761] = "\xe9\xdd",
++ [31764] = "\xe9\xdc", [31765] = "\xe9\xdb", [31773] = "\x95\x68",
++ [31774] = "\xe9\xd9", [31775] = "\x88\xf1", [31776] = "\xe9\xde",
++ [31778] = "\xe9\xe0", [31785] = "\x8a\x8f", [31786] = "\xe9\xcb",
++ [31787] = "\x89\x56", [31790] = "\xe9\xe2", [31798] = "\xe9\xe1",
++ [31799] = "\xe9\xdf", [31800] = "\x92\x4c", [31810] = "\x96\x90",
++ [31815] = "\x97\xd8", [31818] = "\xe9\xe3", [31824] = "\xe9\xe4",
++ [31831] = "\xe9\xe5", [31846] = "\xe9\xe6", [31848] = "\xe9\xe7",
++ [31957] = "\x92\xb9", [31959] = "\xe9\xe8", [31961] = "\x94\xb5",
++ [31963] = "\xe9\xed", [31964] = "\xe9\xe9", [31968] = "\xe9\xea",
++ [31971] = "\x96\x50", [31972] = "\x96\xc2", [31974] = "\x93\xce",
++ [31987] = "\xe9\xee", [31990] = "\xe9\xef", [31991] = "\x93\xbc",
++ [31992] = "\xe9\xec", [31993] = "\xe9\xeb", [31998] = "\x89\xa8",
++ [32002] = "\xe9\xf7", [32005] = "\xe9\xf6", [32011] = "\x89\x95",
++ [32015] = "\xe9\xf4", [32019] = "\xe9\xf3", [32022] = "\xe9\xf1",
++ [32024] = "\x8a\x9b", [32026] = "\xe9\xf0", [32027] = "\x8e\xb0",
++ [32028] = "\x89\xa7", [32043] = "\x8d\x83", [32046] = "\xe9\xfa",
++ [32047] = "\xe9\xf9", [32049] = "\xe9\xf8", [32052] = "\xe9\xf5",
++ [32054] = "\xe9\xfb", [32056] = "\xe9\xfc", [32064] = "\xea\x44",
++ [32065] = "\xea\x43", [32073] = "\xea\x45", [32076] = "\x89\x4c",
++ [32077] = "\xea\x40", [32078] = "\xea\x41", [32080] = "\x8d\x94",
++ [32081] = "\x96\xb7", [32084] = "\xea\x42", [32091] = "\xfc\x48",
++ [32092] = "\x96\x51", [32095] = "\xea\x4a", [32096] = "\xfc\x47",
++ [32098] = "\xea\x46", [32106] = "\xea\x4b", [32119] = "\xea\x48",
++ [32121] = "\xea\x47", [32127] = "\x8c\x7b", [32138] = "\xea\x4c",
++ [32148] = "\xea\x4d", [32153] = "\xea\x4e", [32155] = "\xea\x49",
++ [32159] = "\xe9\xf2", [32162] = "\xea\x4f", [32164] = "\x92\xdf",
++ [32168] = "\xea\x53", [32170] = "\xea\x54", [32171] = "\xea\x52",
++ [32177] = "\xea\x51", [32178] = "\xea\x57", [32180] = "\xea\x50",
++ [32182] = "\xea\x55", [32191] = "\xea\x56", [32195] = "\xea\x59",
++ [32201] = "\xea\x58", [32214] = "\xea\x5b", [32221] = "\xea\x5c",
++ [32223] = "\xea\x5d", [32226] = "\x98\x68", [32232] = "\xea\x5a",
++ [32233] = "\x91\xe9", [32234] = "\x8d\xeb", [32237] = "\xea\x5e",
++ [32265] = "\xfc\x4a", [32266] = "\xea\x5f", [32267] = "\xea\x60",
++ [32270] = "\xea\x61", [32357] = "\xea\x62", [32360] = "\x8c\xb2",
++ [32361] = "\xea\x63", [32365] = "\xea\x64", [32367] = "\x8e\xad",
++ [32369] = "\xea\x65", [32376] = "\xea\x66", [32379] = "\xea\x67",
++ [32380] = "\xea\x68", [32385] = "\xea\x6b", [32386] = "\xea\x69",
++ [32387] = "\x98\x5b", [32389] = "\xea\x6a", [32391] = "\x97\xed",
++ [32397] = "\xea\x6c", [32399] = "\x97\xd9", [32405] = "\xea\x6d",
++ [32406] = "\x94\x9e", [32409] = "\xea\x6e", [32410] = "\xea\x70",
++ [32413] = "\xea\x71", [32424] = "\xea\x6f", [32425] = "\x8d\x8d",
++ [32426] = "\x96\xcb", [32427] = "\x96\x83", [32428] = "\x9b\xf5",
++ [32430] = "\x9f\x80", [32431] = "\x96\x9b", [32436] = "\x89\xa9",
++ [32444] = "\xea\x73", [32445] = "\x8b\x6f", [32446] = "\xea\x74",
++ [32447] = "\xea\x75", [32448] = "\xea\x76", [32449] = "\xfc\x4b",
++ [32450] = "\x8d\x95", [32452] = "\xea\x77", [32456] = "\xe0\xd2",
++ [32457] = "\x96\xd9", [32459] = "\x91\xe1", [32460] = "\xea\x78",
++ [32461] = "\xea\x7a", [32462] = "\xea\x79", [32464] = "\xea\x7b",
++ [32469] = "\xea\x7c", [32472] = "\xea\x7d", [32479] = "\xea\x7e",
++ [32484] = "\xea\x80", [32486] = "\xea\x81", [32487] = "\xea\x82",
++ [32489] = "\xea\x83", [32491] = "\xea\x84", [32492] = "\xea\x85",
++ [32493] = "\xea\x86", [32503] = "\xea\x87", [32504] = "\xea\x88",
++ [32510] = "\x93\x43", [32515] = "\x8c\xdb", [32517] = "\xea\x8a",
++ [32528] = "\x91\x6c", [32529] = "\xea\x8b", [32540] = "\xea\x8c",
++ [32555] = "\x95\x40", [32558] = "\xea\x8d", [32570] = "\xea\x8e",
++ [32571] = "\xe2\x56", [32574] = "\xe6\xd8", [32575] = "\xe8\xeb",
++ [32578] = "\xea\x8f", [32580] = "\xea\x90", [32591] = "\xea\x92",
++ [32592] = "\xea\x93", [32593] = "\xea\x94", [32594] = "\x97\xee",
++ [32595] = "\xea\x91", [32598] = "\xea\x95", [32599] = "\xea\x96",
++ [32602] = "\xea\x98", [32604] = "\xea\x97", [32610] = "\xea\x9a",
++ [32614] = "\xea\x9b", [32615] = "\xea\x99", [32637] = "\x97\xb4",
++ [32645] = "\xea\x9c", [32652] = "\xea\x9d", [32653] = "\xe2\x73",
++ [32656] = "\xea\x9e"
++};
++
++static const char from_ucs4_cjkcpt[261][2] =
++{
++ /* start = 0xf929, end = 0xfa2d */
++ [ 0] = "\xfa\xe0", [ 179] = "\xfb\xe9", [ 229] = "\xfa\x90",
++ [ 230] = "\xfa\x9b", [ 231] = "\xfa\x9c", [ 232] = "\xfa\xb1",
++ [ 233] = "\xfa\xd8", [ 234] = "\xfa\xe8", [ 235] = "\xfa\xea",
++ [ 236] = "\xfb\x58", [ 237] = "\xfb\x5e", [ 238] = "\xfb\x75",
++ [ 239] = "\xfb\x7d", [ 240] = "\xfb\x7e", [ 241] = "\xfb\x80",
++ [ 242] = "\xfb\x82", [ 243] = "\xfb\x86", [ 244] = "\xfb\x89",
++ [ 245] = "\xfb\x92", [ 246] = "\xfb\x9d", [ 247] = "\xfb\x9f",
++ [ 248] = "\xfb\xa0", [ 249] = "\xfb\xa9", [ 250] = "\xfb\xb1",
++ [ 251] = "\xfb\xb3", [ 252] = "\xfb\xb4", [ 253] = "\xfb\xb7",
++ [ 254] = "\xfb\xd3", [ 255] = "\xfb\xda", [ 256] = "\xfb\xea",
++ [ 257] = "\xfb\xf6", [ 258] = "\xfb\xf7", [ 259] = "\xfb\xf9",
++ [ 260] = "\xfc\x49"
++};
++
++static const char from_ucs4_extra[229][2] =
++{
++ /* start = 0xff01, end = 0xffe5 */
++ [ 0] = "\x81\x49", [ 1] = "\xfa\x57", [ 2] = "\x81\x94",
++ [ 3] = "\x81\x90", [ 4] = "\x81\x93", [ 5] = "\x81\x95",
++ [ 6] = "\xfa\x56", [ 7] = "\x81\x69", [ 8] = "\x81\x6a",
++ [ 9] = "\x81\x96", [ 10] = "\x81\x7b", [ 11] = "\x81\x43",
++ [ 12] = "\x81\x7c", [ 13] = "\x81\x44", [ 14] = "\x81\x5e",
++ [ 15] = "\x82\x4f", [ 16] = "\x82\x50", [ 17] = "\x82\x51",
++ [ 18] = "\x82\x52", [ 19] = "\x82\x53", [ 20] = "\x82\x54",
++ [ 21] = "\x82\x55", [ 22] = "\x82\x56", [ 23] = "\x82\x57",
++ [ 24] = "\x82\x58", [ 25] = "\x81\x46", [ 26] = "\x81\x47",
++ [ 27] = "\x81\x83", [ 28] = "\x81\x81", [ 29] = "\x81\x84",
++ [ 30] = "\x81\x48", [ 31] = "\x81\x97", [ 32] = "\x82\x60",
++ [ 33] = "\x82\x61", [ 34] = "\x82\x62", [ 35] = "\x82\x63",
++ [ 36] = "\x82\x64", [ 37] = "\x82\x65", [ 38] = "\x82\x66",
++ [ 39] = "\x82\x67", [ 40] = "\x82\x68", [ 41] = "\x82\x69",
++ [ 42] = "\x82\x6a", [ 43] = "\x82\x6b", [ 44] = "\x82\x6c",
++ [ 45] = "\x82\x6d", [ 46] = "\x82\x6e", [ 47] = "\x82\x6f",
++ [ 48] = "\x82\x70", [ 49] = "\x82\x71", [ 50] = "\x82\x72",
++ [ 51] = "\x82\x73", [ 52] = "\x82\x74", [ 53] = "\x82\x75",
++ [ 54] = "\x82\x76", [ 55] = "\x82\x77", [ 56] = "\x82\x78",
++ [ 57] = "\x82\x79", [ 58] = "\x81\x6d", [ 59] = "\x81\x5f",
++ [ 60] = "\x81\x6e", [ 61] = "\x81\x4f", [ 62] = "\x81\x51",
++ [ 63] = "\x81\x4d", [ 64] = "\x82\x81", [ 65] = "\x82\x82",
++ [ 66] = "\x82\x83", [ 67] = "\x82\x84", [ 68] = "\x82\x85",
++ [ 69] = "\x82\x86", [ 70] = "\x82\x87", [ 71] = "\x82\x88",
++ [ 72] = "\x82\x89", [ 73] = "\x82\x8a", [ 74] = "\x82\x8b",
++ [ 75] = "\x82\x8c", [ 76] = "\x82\x8d", [ 77] = "\x82\x8e",
++ [ 78] = "\x82\x8f", [ 79] = "\x82\x90", [ 80] = "\x82\x91",
++ [ 81] = "\x82\x92", [ 82] = "\x82\x93", [ 83] = "\x82\x94",
++ [ 84] = "\x82\x95", [ 85] = "\x82\x96", [ 86] = "\x82\x97",
++ [ 87] = "\x82\x98", [ 88] = "\x82\x99", [ 89] = "\x82\x9a",
++ [ 90] = "\x81\x6f", [ 91] = "\x81\x62", [ 92] = "\x81\x70",
++ [ 93] = "\x81\x60", [ 96] = "\xa1\x00", [ 97] = "\xa2\x00",
++ [ 98] = "\xa3\x00", [ 99] = "\xa4\x00", [ 100] = "\xa5\x00",
++ [ 101] = "\xa6\x00", [ 102] = "\xa7\x00", [ 103] = "\xa8\x00",
++ [ 104] = "\xa9\x00", [ 105] = "\xaa\x00", [ 106] = "\xab\x00",
++ [ 107] = "\xac\x00", [ 108] = "\xad\x00", [ 109] = "\xae\x00",
++ [ 110] = "\xaf\x00", [ 111] = "\xb0\x00", [ 112] = "\xb1\x00",
++ [ 113] = "\xb2\x00", [ 114] = "\xb3\x00", [ 115] = "\xb4\x00",
++ [ 116] = "\xb5\x00", [ 117] = "\xb6\x00", [ 118] = "\xb7\x00",
++ [ 119] = "\xb8\x00", [ 120] = "\xb9\x00", [ 121] = "\xba\x00",
++ [ 122] = "\xbb\x00", [ 123] = "\xbc\x00", [ 124] = "\xbd\x00",
++ [ 125] = "\xbe\x00", [ 126] = "\xbf\x00", [ 127] = "\xc0\x00",
++ [ 128] = "\xc1\x00", [ 129] = "\xc2\x00", [ 130] = "\xc3\x00",
++ [ 131] = "\xc4\x00", [ 132] = "\xc5\x00", [ 133] = "\xc6\x00",
++ [ 134] = "\xc7\x00", [ 135] = "\xc8\x00", [ 136] = "\xc9\x00",
++ [ 137] = "\xca\x00", [ 138] = "\xcb\x00", [ 139] = "\xcc\x00",
++ [ 140] = "\xcd\x00", [ 141] = "\xce\x00", [ 142] = "\xcf\x00",
++ [ 143] = "\xd0\x00", [ 144] = "\xd1\x00", [ 145] = "\xd2\x00",
++ [ 146] = "\xd3\x00", [ 147] = "\xd4\x00", [ 148] = "\xd5\x00",
++ [ 149] = "\xd6\x00", [ 150] = "\xd7\x00", [ 151] = "\xd8\x00",
++ [ 152] = "\xd9\x00", [ 153] = "\xda\x00", [ 154] = "\xdb\x00",
++ [ 155] = "\xdc\x00", [ 156] = "\xdd\x00", [ 157] = "\xde\x00",
++ [ 158] = "\xdf\x00", [ 223] = "\x81\x91", [ 224] = "\x81\x92",
++ [ 225] = "\x81\xca", [ 226] = "\x81\x50", [ 227] = "\xfa\x55",
++ [ 228] = "\x81\x8f"
++};
++
++/* Definitions used in the body of the `gconv' function. */
++#define CHARSET_NAME "CP932//"
++#define FROM_LOOP from_cp932
++#define TO_LOOP to_cp932
++#define DEFINE_INIT 1
++#define DEFINE_FINI 1
++#define MIN_NEEDED_FROM 1
++#define MAX_NEEDED_FROM 2
++#define MIN_NEEDED_TO 4
++
++/* First define the conversion function from CP932 to UCS4. */
++#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
++#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
++#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
++#define LOOPFCT FROM_LOOP
++#define BODY \
++ { \
++ uint32_t ch = *inptr; \
++ \
++ if (ch < 0x80) \
++ ++inptr; \
++ else if (ch >= 0xa1 && ch <= 0xdf) \
++ { \
++ ch += 0xfec0; \
++ ++inptr; \
++ } \
++ else if (__builtin_expect (ch, 0) == 0xa0 \
++ || __builtin_expect (ch <= 0x80, 0) \
++ || __builtin_expect (ch > 0xfc, 0)) \
++ { \
++ /* These are illegal. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ /* This is an illegal character. */ \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ \
++ ++inptr; \
++ ++*irreversible; \
++ continue; \
++ } \
++ else \
++ { \
++ /* Two-byte character. First test whether the next character \
++ is also available. */ \
++ uint32_t ch2; \
++ uint_fast32_t idx; \
++ \
++ if (__builtin_expect (inptr + 1 >= inend, 0)) \
++ { \
++ /* The second character is not available. Store \
++ the intermediate result. */ \
++ result = __GCONV_INCOMPLETE_INPUT; \
++ break; \
++ } \
++ \
++ ch2 = inptr[1]; \
++ idx = ch * 256 + ch2; \
++ if (__builtin_expect (ch2 < 0x40, 0) \
++ || __builtin_expect (ch2 > 0xfc, 0) \
++ || __builtin_expect (ch2 == 0x7f, 0) \
++ || (__builtin_expect (idx > 0x84be, 0) && idx < 0x8740) \
++ || (__builtin_expect (idx > 0x879c, 0) && idx < 0x889f) \
++ || (__builtin_expect (idx > 0x88fc, 0) && idx < 0x8940) \
++ || (__builtin_expect (idx > 0x9ffc, 0) && idx < 0xe040) \
++ || (__builtin_expect (idx > 0xeaa4, 0) && idx < 0xed40) \
++ || (__builtin_expect (idx > 0xeefc, 0) && idx < 0xf040) \
++ || __builtin_expect (idx > 0xfc4b, 0)) \
++ { \
++ /* This is illegal. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ /* This is an illegal character. */ \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ \
++ ++inptr; \
++ ++*irreversible; \
++ continue; \
++ } \
++ else \
++ { \
++ /* We could pack the data a bit more dense. The second \
++ byte will never be 0x7f and it will also be never \
++ >0xfc. But this would mean yet more `if's. */ \
++ if (idx <= 0x84be) \
++ ch = cjk_block1[(ch - 0x81) * 192 + ch2 - 0x40]; \
++ else if (idx <= 0x879c) \
++ ch = cjk_block2[(ch - 0x87) * 192 + ch2 - 0x40]; \
++ else if (idx <= 0x88fc) \
++ ch = cjk_block3[(ch - 0x88) * 192 + ch2 - 0x9f]; \
++ else if (idx <= 0x9ffc) \
++ ch = cjk_block4[(ch - 0x89) * 192 + ch2 - 0x40]; \
++ else if (idx <= 0xeaa4) \
++ ch = cjk_block5[(ch - 0xe0) * 192 + ch2 - 0x40]; \
++ else if (idx <= 0xeefc) \
++ ch = cjk_block6[(ch - 0xed) * 192 + ch2 - 0x40]; \
++ else if (idx <= 0xf9fc) \
++ ch = (ch-0xf0)*188 + ch2-((ch2<0x7f)?0x40:0x41) + 0xe000; \
++ else \
++ ch = cjk_block7[(ch - 0xfa) * 192 + ch2 - 0x40]; \
++ \
++ inptr += 2; \
++ } \
++ \
++ if (__builtin_expect (ch, 1) == 0) \
++ { \
++ /* This is an illegal character. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ /* This is an illegal character. */ \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ \
++ inptr += 2; \
++ ++*irreversible; \
++ continue; \
++ } \
++ } \
++ \
++ put32 (outptr, ch); \
++ outptr += 4; \
++ }
++#define LOOP_NEED_FLAGS
++#include <iconv/loop.c>
++
++
++/* Next, define the other direction. */
++#define MIN_NEEDED_INPUT MIN_NEEDED_TO
++#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
++#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
++#define LOOPFCT TO_LOOP
++#define BODY \
++ { \
++ uint32_t ch = get32 (inptr); \
++ const char *cp; \
++ unsigned char pua[2]; \
++ \
++ if (ch >= (sizeof (from_ucs4_lat1) / sizeof (from_ucs4_lat1[0]))) \
++ { \
++ if (ch >= 0x0391 && ch <= 0x0451) \
++ cp = from_ucs4_greek[ch - 0x391]; \
++ else if (ch >= 0x2010 && ch <= 0x9fa0) \
++ cp = from_ucs4_cjk[ch - 0x2010]; \
++ else if (ch >= 0xe000 && ch <= 0xe757) \
++ { \
++ pua[0] = (ch - 0xe000) / 188 + 0xf0; \
++ pua[1] = (ch - 0xe000) % 188 + 0x40; \
++ if (pua[1] > 0x7e) \
++ pua[1]++; \
++ cp = (const char *)&(pua[0]); \
++ } \
++ else if (ch >= 0xf929 && ch <= 0xfa2d) \
++ cp = from_ucs4_cjkcpt[ch - 0xf929]; \
++ else if (__builtin_expect (ch >= 0xff01, 1) \
++ && __builtin_expect (ch <= 0xffe5, 1)) \
++ cp = from_ucs4_extra[ch - 0xff01]; \
++ else \
++ { \
++ UNICODE_TAG_HANDLER (ch, 4); \
++ /* Illegal character. */ \
++ cp = ""; \
++ } \
++ } \
++ else \
++ cp = from_ucs4_lat1[ch]; \
++ \
++ if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \
++ { \
++ /* Illegal character. */ \
++ STANDARD_TO_LOOP_ERR_HANDLER (4); \
++ } \
++ else \
++ { \
++ *outptr = cp[0]; \
++ /* Now test for a possible second byte and write this if possible. */\
++ if (cp[1] != '\0') \
++ { \
++ if (__builtin_expect (outptr + 1 >= outend, 0)) \
++ { \
++ /* The result does not fit into the buffer. */ \
++ result = __GCONV_FULL_OUTPUT; \
++ break; \
++ } \
++ *++outptr = cp[1]; \
++ } \
++ ++outptr; \
++ } \
++ \
++ inptr += 4; \
++ }
++#define LOOP_NEED_FLAGS
++#include <iconv/loop.c>
++
++
++/* Now define the toplevel functions. */
++#include <iconv/skeleton.c>
+--- glibc-2.3.2/iconvdata/euc-jp-ms.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/iconvdata/euc-jp-ms.c 2003-08-14 04:37:44.000000000 -0400
+@@ -0,0 +1,4931 @@
++/* Mapping tables for EUCJP-MS handling.
++ Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <stdint.h>
++#include <gconv.h>
++#include <jis0201.h>
++#include <jis0208.h>
++#include <jis0212.h>
++
++static const uint16_t cjk_block1[752] =
++{
++ /* 0xa1a1 */ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
++ /* 0xa1a9 */ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
++ /* 0xa1b1 */ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
++ /* 0xa1b9 */ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
++ /* 0xa1c1 */ 0xff5e, 0x2225, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
++ /* 0xa1c9 */ 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
++ /* 0xa1d1 */ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
++ /* 0xa1d9 */ 0x300f, 0x3010, 0x3011, 0xff0b, 0xff0d, 0x00b1, 0x00d7, 0x00f7,
++ /* 0xa1e1 */ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
++ /* 0xa1e9 */ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
++ /* 0xa1f1 */ 0xffe0, 0xffe1, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
++ /* 0xa1f9 */ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
++ /* 0xa2a3 */ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192,
++ /* 0xa2ab */ 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa2b3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208,
++ /* 0xa2bb */ 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x0000,
++ /* 0xa2c3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227,
++ /* 0xa2cb */ 0x2228, 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x0000, 0x0000,
++ /* 0xa2d3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa2db */ 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252,
++ /* 0xa2e3 */ 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c,
++ /* 0xa2eb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212b,
++ /* 0xa2f3 */ 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6, 0x0000,
++ /* 0xa2fb */ 0x0000, 0x0000, 0x0000, 0x25ef, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa3a5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa3ad */ 0x0000, 0x0000, 0x0000, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
++ /* 0xa3b5 */ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x0000, 0x0000, 0x0000,
++ /* 0xa3bd */ 0x0000, 0x0000, 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24,
++ /* 0xa3c5 */ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
++ /* 0xa3cd */ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
++ /* 0xa3d5 */ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000,
++ /* 0xa3dd */ 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 0xff44,
++ /* 0xa3e5 */ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
++ /* 0xa3ed */ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
++ /* 0xa3f5 */ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000,
++ /* 0xa3fd */ 0x0000, 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
++ /* 0xa4a7 */ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
++ /* 0xa4af */ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
++ /* 0xa4b7 */ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
++ /* 0xa4bf */ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
++ /* 0xa4c7 */ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
++ /* 0xa4cf */ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
++ /* 0xa4d7 */ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
++ /* 0xa4df */ 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
++ /* 0xa4e7 */ 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e,
++ /* 0xa4ef */ 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000,
++ /* 0xa4f7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa5a1 */ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
++ /* 0xa5a9 */ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
++ /* 0xa5b1 */ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
++ /* 0xa5b9 */ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
++ /* 0xa5c1 */ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
++ /* 0xa5c9 */ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
++ /* 0xa5d1 */ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
++ /* 0xa5d9 */ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
++ /* 0xa5e1 */ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
++ /* 0xa5e9 */ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
++ /* 0xa5f1 */ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000,
++ /* 0xa5f9 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392,
++ /* 0xa6a3 */ 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a,
++ /* 0xa6ab */ 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3,
++ /* 0xa6b3 */ 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000,
++ /* 0xa6bb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2,
++ /* 0xa6c3 */ 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba,
++ /* 0xa6cb */ 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3,
++ /* 0xa6d3 */ 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000,
++ /* 0xa6db */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa6e3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa6eb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa6f3 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa6fb */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413,
++ /* 0xa7a5 */ 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
++ /* 0xa7ad */ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
++ /* 0xa7b5 */ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
++ /* 0xa7bd */ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000,
++ /* 0xa7c5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa7cd */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433,
++ /* 0xa7d5 */ 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a,
++ /* 0xa7dd */ 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442,
++ /* 0xa7e5 */ 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a,
++ /* 0xa7ed */ 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000,
++ /* 0xa7f5 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa7fd */ 0x0000, 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514,
++ /* 0xa8a7 */ 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f,
++ /* 0xa8af */ 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b,
++ /* 0xa8b7 */ 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525,
++ /* 0xa8bf */ 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8c7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8cf */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8d7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8df */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8e7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8ef */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
++ /* 0xa8f7 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
++};
++
++static const uint16_t cjk_block2[94] =
++{
++ /* 0xada1 */ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
++ /* 0xada9 */ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
++ /* 0xadb1 */ 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163,
++ /* 0xadb9 */ 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000, 0x3349,
++ /* 0xadc1 */ 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351,
++ /* 0xadc9 */ 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c,
++ /* 0xadd1 */ 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000, 0x0000,
++ /* 0xadd9 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b, 0x301d,
++ /* 0xade1 */ 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6, 0x32a7,
++ /* 0xade9 */ 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c, 0x2252,
++ /* 0xadf1 */ 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220, 0x221f,
++ /* 0xadf9 */ 0x22bf, 0x2235, 0x2229, 0x222a, 0x0000, 0x0000
++};
++
++static const uint16_t cjk_block_ibm[268] =
++{
++ /* start = 0x8ff3f3, end = 0x8ff4fe */
++ /* 0x8ff3f3 */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
++ /* 0x8ff3fb */ 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165,
++ /* 0x8ff4a5 */ 0x2166, 0x2167, 0x2168, 0x2169, 0xff07, 0xff02, 0x3231, 0x2116,
++ /* 0x8ff4ad */ 0x2121, 0x70bb, 0x4efc, 0x50f4, 0x51ec, 0x5307, 0x5324, 0xfa0e,
++ /* 0x8ff4b5 */ 0x548a, 0x5759, 0xfa0f, 0xfa10, 0x589e, 0x5bec, 0x5cf5, 0x5d53,
++ /* 0x8ff4bd */ 0xfa11, 0x5fb7, 0x6085, 0x6120, 0x654e, 0x663b, 0x6665, 0xfa12,
++ /* 0x8ff4c5 */ 0xf929, 0x6801, 0xfa13, 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, 0x6df2,
++ /* 0x8ff4cd */ 0x7028, 0xfa15, 0xfa16, 0x7501, 0x7682, 0x769e, 0xfa17, 0x7930,
++ /* 0x8ff4d5 */ 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, 0x7da0,
++ /* 0x8ff4dd */ 0x7dd6, 0xfa1e, 0x8362, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807,
++ /* 0x8ff4e5 */ 0xfa22, 0x8b7f, 0x8cf4, 0x8d76, 0xfa23, 0xfa24, 0xfa25, 0x90de,
++ /* 0x8ff4ed */ 0xfa26, 0x9115, 0xfa27, 0xfa28, 0x9592, 0xf9dc, 0xfa29, 0x973b,
++ /* 0x8ff4f5 */ 0x974d, 0x9751, 0xfa2a, 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, 0x9b72,
++ /* 0x8ff4fd */ 0xfa2d, 0x9ed1
++};
++
++static const char from_ucs4_lat1[256][2] =
++{
++ /* start = 0x0000, end = 0x00ff */
++ [ 0] = "\x00\x00", [ 1] = "\x01\x00", [ 2] = "\x02\x00",
++ [ 3] = "\x03\x00", [ 4] = "\x04\x00", [ 5] = "\x05\x00",
++ [ 6] = "\x06\x00", [ 7] = "\x07\x00", [ 8] = "\x08\x00",
++ [ 9] = "\x09\x00", [ 10] = "\x0a\x00", [ 11] = "\x0b\x00",
++ [ 12] = "\x0c\x00", [ 13] = "\x0d\x00", [ 14] = "\x0e\x00",
++ [ 15] = "\x0f\x00", [ 16] = "\x10\x00", [ 17] = "\x11\x00",
++ [ 18] = "\x12\x00", [ 19] = "\x13\x00", [ 20] = "\x14\x00",
++ [ 21] = "\x15\x00", [ 22] = "\x16\x00", [ 23] = "\x17\x00",
++ [ 24] = "\x18\x00", [ 25] = "\x19\x00", [ 26] = "\x1a\x00",
++ [ 27] = "\x1b\x00", [ 28] = "\x1c\x00", [ 29] = "\x1d\x00",
++ [ 30] = "\x1e\x00", [ 31] = "\x1f\x00", [ 32] = "\x20\x00",
++ [ 33] = "\x21\x00", [ 34] = "\x22\x00", [ 35] = "\x23\x00",
++ [ 36] = "\x24\x00", [ 37] = "\x25\x00", [ 38] = "\x26\x00",
++ [ 39] = "\x27\x00", [ 40] = "\x28\x00", [ 41] = "\x29\x00",
++ [ 42] = "\x2a\x00", [ 43] = "\x2b\x00", [ 44] = "\x2c\x00",
++ [ 45] = "\x2d\x00", [ 46] = "\x2e\x00", [ 47] = "\x2f\x00",
++ [ 48] = "\x30\x00", [ 49] = "\x31\x00", [ 50] = "\x32\x00",
++ [ 51] = "\x33\x00", [ 52] = "\x34\x00", [ 53] = "\x35\x00",
++ [ 54] = "\x36\x00", [ 55] = "\x37\x00", [ 56] = "\x38\x00",
++ [ 57] = "\x39\x00", [ 58] = "\x3a\x00", [ 59] = "\x3b\x00",
++ [ 60] = "\x3c\x00", [ 61] = "\x3d\x00", [ 62] = "\x3e\x00",
++ [ 63] = "\x3f\x00", [ 64] = "\x40\x00", [ 65] = "\x41\x00",
++ [ 66] = "\x42\x00", [ 67] = "\x43\x00", [ 68] = "\x44\x00",
++ [ 69] = "\x45\x00", [ 70] = "\x46\x00", [ 71] = "\x47\x00",
++ [ 72] = "\x48\x00", [ 73] = "\x49\x00", [ 74] = "\x4a\x00",
++ [ 75] = "\x4b\x00", [ 76] = "\x4c\x00", [ 77] = "\x4d\x00",
++ [ 78] = "\x4e\x00", [ 79] = "\x4f\x00", [ 80] = "\x50\x00",
++ [ 81] = "\x51\x00", [ 82] = "\x52\x00", [ 83] = "\x53\x00",
++ [ 84] = "\x54\x00", [ 85] = "\x55\x00", [ 86] = "\x56\x00",
++ [ 87] = "\x57\x00", [ 88] = "\x58\x00", [ 89] = "\x59\x00",
++ [ 90] = "\x5a\x00", [ 91] = "\x5b\x00", [ 92] = "\x5c\x00",
++ [ 93] = "\x5d\x00", [ 94] = "\x5e\x00", [ 95] = "\x5f\x00",
++ [ 96] = "\x60\x00", [ 97] = "\x61\x00", [ 98] = "\x62\x00",
++ [ 99] = "\x63\x00", [ 100] = "\x64\x00", [ 101] = "\x65\x00",
++ [ 102] = "\x66\x00", [ 103] = "\x67\x00", [ 104] = "\x68\x00",
++ [ 105] = "\x69\x00", [ 106] = "\x6a\x00", [ 107] = "\x6b\x00",
++ [ 108] = "\x6c\x00", [ 109] = "\x6d\x00", [ 110] = "\x6e\x00",
++ [ 111] = "\x6f\x00", [ 112] = "\x70\x00", [ 113] = "\x71\x00",
++ [ 114] = "\x72\x00", [ 115] = "\x73\x00", [ 116] = "\x74\x00",
++ [ 117] = "\x75\x00", [ 118] = "\x76\x00", [ 119] = "\x77\x00",
++ [ 120] = "\x78\x00", [ 121] = "\x79\x00", [ 122] = "\x7a\x00",
++ [ 123] = "\x7b\x00", [ 124] = "\x7c\x00", [ 125] = "\x7d\x00",
++ [ 126] = "\x7e\x00", [ 127] = "\x7f\x00", [ 128] = "\x80\x00",
++ [ 129] = "\x81\x00", [ 130] = "\x82\x00", [ 131] = "\x83\x00",
++ [ 132] = "\x84\x00", [ 133] = "\x85\x00", [ 134] = "\x86\x00",
++ [ 135] = "\x87\x00", [ 136] = "\x88\x00", [ 137] = "\x89\x00",
++ [ 138] = "\x8a\x00", [ 139] = "\x8b\x00", [ 140] = "\x8c\x00",
++ [ 141] = "\x8d\x00", [ 144] = "\x90\x00", [ 145] = "\x91\x00",
++ [ 146] = "\x92\x00", [ 147] = "\x93\x00", [ 148] = "\x94\x00",
++ [ 149] = "\x95\x00", [ 150] = "\x96\x00", [ 151] = "\x97\x00",
++ [ 152] = "\x98\x00", [ 153] = "\x99\x00", [ 154] = "\x9a\x00",
++ [ 155] = "\x9b\x00", [ 156] = "\x9c\x00", [ 157] = "\x9d\x00",
++ [ 158] = "\x9e\x00", [ 159] = "\x9f\x00", [ 161] = "\xa2\x42",
++ [ 162] = "\xa1\xf1", [ 163] = "\xa1\xf2", [ 164] = "\xa2\x70",
++ [ 165] = "\x5c\x00", [ 166] = "\xa2\x43", [ 167] = "\xa1\xf8",
++ [ 168] = "\xa1\xaf", [ 169] = "\xa2\x6d", [ 170] = "\xa2\x6c",
++ [ 172] = "\xa2\xcc", [ 174] = "\xa2\x6e", [ 175] = "\xa2\x34",
++ [ 176] = "\xa1\xeb", [ 177] = "\xa1\xde", [ 180] = "\xa1\xad",
++ [ 182] = "\xa2\xf9", [ 184] = "\xa2\x31", [ 186] = "\xa2\x6b",
++ [ 191] = "\xa2\x44", [ 192] = "\xaa\x22", [ 193] = "\xaa\x21",
++ [ 194] = "\xaa\x24", [ 195] = "\xaa\x2a", [ 196] = "\xaa\x23",
++ [ 197] = "\xaa\x29", [ 198] = "\xa9\x21", [ 199] = "\xaa\x2e",
++ [ 200] = "\xaa\x32", [ 201] = "\xaa\x31", [ 202] = "\xaa\x34",
++ [ 203] = "\xaa\x33", [ 204] = "\xaa\x40", [ 205] = "\xaa\x3f",
++ [ 206] = "\xaa\x42", [ 207] = "\xaa\x41", [ 209] = "\xaa\x50",
++ [ 210] = "\xaa\x52", [ 211] = "\xaa\x51", [ 212] = "\xaa\x54",
++ [ 213] = "\xaa\x58", [ 214] = "\xaa\x53", [ 215] = "\xa1\xdf",
++ [ 216] = "\xa9\x2c", [ 217] = "\xaa\x63", [ 218] = "\xaa\x62",
++ [ 219] = "\xaa\x65", [ 220] = "\xaa\x64", [ 221] = "\xaa\x72",
++ [ 222] = "\xa9\x30", [ 223] = "\xa9\x4e", [ 224] = "\xab\x22",
++ [ 225] = "\xab\x21", [ 226] = "\xab\x24", [ 227] = "\xab\x2a",
++ [ 228] = "\xab\x23", [ 229] = "\xab\x29", [ 230] = "\xa9\x41",
++ [ 231] = "\xab\x2e", [ 232] = "\xab\x32", [ 233] = "\xab\x31",
++ [ 234] = "\xab\x34", [ 235] = "\xab\x33", [ 236] = "\xab\x40",
++ [ 237] = "\xab\x3f", [ 238] = "\xab\x42", [ 239] = "\xab\x41",
++ [ 240] = "\xa9\x43", [ 241] = "\xab\x50", [ 242] = "\xab\x52",
++ [ 243] = "\xab\x51", [ 244] = "\xab\x54", [ 245] = "\xab\x58",
++ [ 246] = "\xab\x53", [ 247] = "\xa1\xe0", [ 248] = "\xa9\x4c",
++ [ 249] = "\xab\x63", [ 250] = "\xab\x62", [ 251] = "\xab\x65",
++ [ 252] = "\xab\x64", [ 253] = "\xab\x72", [ 254] = "\xa9\x50",
++ [ 255] = "\xab\x73"
++};
++
++static const char from_ucs4_greek[864][2] =
++{
++ /* start = 0x0100, end = 0x045f */
++ [ 0] = "\xaa\x27", [ 1] = "\xab\x27", [ 2] = "\xaa\x25",
++ [ 3] = "\xab\x25", [ 4] = "\xaa\x28", [ 5] = "\xab\x28",
++ [ 6] = "\xaa\x2b", [ 7] = "\xab\x2b", [ 8] = "\xaa\x2c",
++ [ 9] = "\xab\x2c", [ 10] = "\xaa\x2f", [ 11] = "\xab\x2f",
++ [ 12] = "\xaa\x2d", [ 13] = "\xab\x2d", [ 14] = "\xaa\x30",
++ [ 15] = "\xab\x30", [ 16] = "\xa9\x22", [ 17] = "\xa9\x42",
++ [ 18] = "\xaa\x37", [ 19] = "\xab\x37", [ 22] = "\xaa\x36",
++ [ 23] = "\xab\x36", [ 24] = "\xaa\x38", [ 25] = "\xab\x38",
++ [ 26] = "\xaa\x35", [ 27] = "\xab\x35", [ 28] = "\xaa\x3a",
++ [ 29] = "\xab\x3a", [ 30] = "\xaa\x3b", [ 31] = "\xab\x3b",
++ [ 32] = "\xaa\x3d", [ 33] = "\xab\x3d", [ 34] = "\xaa\x3c",
++ [ 36] = "\xaa\x3e", [ 37] = "\xab\x3e", [ 38] = "\xa9\x24",
++ [ 39] = "\xa9\x44", [ 40] = "\xaa\x47", [ 41] = "\xab\x47",
++ [ 42] = "\xaa\x45", [ 43] = "\xab\x45", [ 46] = "\xaa\x46",
++ [ 47] = "\xab\x46", [ 48] = "\xaa\x44", [ 49] = "\xa9\x45",
++ [ 50] = "\xa9\x26", [ 51] = "\xa9\x46", [ 52] = "\xaa\x48",
++ [ 53] = "\xab\x48", [ 54] = "\xaa\x49", [ 55] = "\xab\x49",
++ [ 56] = "\xa9\x47", [ 57] = "\xaa\x4a", [ 58] = "\xab\x4a",
++ [ 59] = "\xaa\x4c", [ 60] = "\xab\x4c", [ 61] = "\xaa\x4b",
++ [ 62] = "\xab\x4b", [ 63] = "\xa9\x29", [ 64] = "\xa9\x49",
++ [ 65] = "\xa9\x28", [ 66] = "\xa9\x48", [ 67] = "\xaa\x4d",
++ [ 68] = "\xab\x4d", [ 69] = "\xaa\x4f", [ 70] = "\xab\x4f",
++ [ 71] = "\xaa\x4e", [ 72] = "\xab\x4e", [ 73] = "\xa9\x4a",
++ [ 74] = "\xa9\x2b", [ 75] = "\xa9\x4b", [ 76] = "\xaa\x57",
++ [ 77] = "\xab\x57", [ 80] = "\xaa\x56", [ 81] = "\xab\x56",
++ [ 82] = "\xa9\x2d", [ 83] = "\xa9\x4d", [ 84] = "\xaa\x59",
++ [ 85] = "\xab\x59", [ 86] = "\xaa\x5b", [ 87] = "\xab\x5b",
++ [ 88] = "\xaa\x5a", [ 89] = "\xab\x5a", [ 90] = "\xaa\x5c",
++ [ 91] = "\xab\x5c", [ 92] = "\xaa\x5d", [ 93] = "\xab\x5d",
++ [ 94] = "\xaa\x5f", [ 95] = "\xab\x5f", [ 96] = "\xaa\x5e",
++ [ 97] = "\xab\x5e", [ 98] = "\xaa\x61", [ 99] = "\xab\x61",
++ [ 100] = "\xaa\x60", [ 101] = "\xab\x60", [ 102] = "\xa9\x2f",
++ [ 103] = "\xa9\x4f", [ 104] = "\xaa\x6c", [ 105] = "\xab\x6c",
++ [ 106] = "\xaa\x69", [ 107] = "\xab\x69", [ 108] = "\xaa\x66",
++ [ 109] = "\xab\x66", [ 110] = "\xaa\x6b", [ 111] = "\xab\x6b",
++ [ 112] = "\xaa\x68", [ 113] = "\xab\x68", [ 114] = "\xaa\x6a",
++ [ 115] = "\xab\x6a", [ 116] = "\xaa\x71", [ 117] = "\xab\x71",
++ [ 118] = "\xaa\x74", [ 119] = "\xab\x74", [ 120] = "\xaa\x73",
++ [ 121] = "\xaa\x75", [ 122] = "\xab\x75", [ 123] = "\xaa\x77",
++ [ 124] = "\xab\x77", [ 125] = "\xaa\x76", [ 126] = "\xab\x76",
++ [ 205] = "\xaa\x26", [ 206] = "\xab\x26", [ 207] = "\xaa\x43",
++ [ 208] = "\xab\x43", [ 209] = "\xaa\x55", [ 210] = "\xab\x55",
++ [ 211] = "\xaa\x67", [ 212] = "\xab\x67", [ 213] = "\xaa\x70",
++ [ 214] = "\xab\x70", [ 215] = "\xaa\x6d", [ 216] = "\xab\x6d",
++ [ 217] = "\xaa\x6f", [ 218] = "\xab\x6f", [ 219] = "\xaa\x6e",
++ [ 220] = "\xab\x6e", [ 245] = "\xab\x39", [ 455] = "\xa2\x30",
++ [ 472] = "\xa2\x2f", [ 473] = "\xa2\x32", [ 474] = "\xa2\x36",
++ [ 475] = "\xa2\x35", [ 477] = "\xa2\x33", [ 644] = "\xa2\x38",
++ [ 645] = "\xa2\x39", [ 646] = "\xa6\x61", [ 648] = "\xa6\x62",
++ [ 649] = "\xa6\x63", [ 650] = "\xa6\x64", [ 652] = "\xa6\x67",
++ [ 654] = "\xa6\x69", [ 655] = "\xa6\x6c", [ 656] = "\xa6\x76",
++ [ 657] = "\xa6\xa1", [ 658] = "\xa6\xa2", [ 659] = "\xa6\xa3",
++ [ 660] = "\xa6\xa4", [ 661] = "\xa6\xa5", [ 662] = "\xa6\xa6",
++ [ 663] = "\xa6\xa7", [ 664] = "\xa6\xa8", [ 665] = "\xa6\xa9",
++ [ 666] = "\xa6\xaa", [ 667] = "\xa6\xab", [ 668] = "\xa6\xac",
++ [ 669] = "\xa6\xad", [ 670] = "\xa6\xae", [ 671] = "\xa6\xaf",
++ [ 672] = "\xa6\xb0", [ 673] = "\xa6\xb1", [ 675] = "\xa6\xb2",
++ [ 676] = "\xa6\xb3", [ 677] = "\xa6\xb4", [ 678] = "\xa6\xb5",
++ [ 679] = "\xa6\xb6", [ 680] = "\xa6\xb7", [ 681] = "\xa6\xb8",
++ [ 682] = "\xa6\x65", [ 683] = "\xa6\x6a", [ 684] = "\xa6\x71",
++ [ 685] = "\xa6\x72", [ 686] = "\xa6\x73", [ 687] = "\xa6\x74",
++ [ 688] = "\xa6\x7b", [ 689] = "\xa6\xc1", [ 690] = "\xa6\xc2",
++ [ 691] = "\xa6\xc3", [ 692] = "\xa6\xc4", [ 693] = "\xa6\xc5",
++ [ 694] = "\xa6\xc6", [ 695] = "\xa6\xc7", [ 696] = "\xa6\xc8",
++ [ 697] = "\xa6\xc9", [ 698] = "\xa6\xca", [ 699] = "\xa6\xcb",
++ [ 700] = "\xa6\xcc", [ 701] = "\xa6\xcd", [ 702] = "\xa6\xce",
++ [ 703] = "\xa6\xcf", [ 704] = "\xa6\xd0", [ 705] = "\xa6\xd1",
++ [ 706] = "\xa6\x78", [ 707] = "\xa6\xd2", [ 708] = "\xa6\xd3",
++ [ 709] = "\xa6\xd4", [ 710] = "\xa6\xd5", [ 711] = "\xa6\xd6",
++ [ 712] = "\xa6\xd7", [ 713] = "\xa6\xd8", [ 714] = "\xa6\x75",
++ [ 715] = "\xa6\x7a", [ 716] = "\xa6\x77", [ 717] = "\xa6\x79",
++ [ 718] = "\xa6\x7c", [ 769] = "\xa7\xa7", [ 770] = "\xa7\x42",
++ [ 771] = "\xa7\x43", [ 772] = "\xa7\x44", [ 773] = "\xa7\x45",
++ [ 774] = "\xa7\x46", [ 775] = "\xa7\x47", [ 776] = "\xa7\x48",
++ [ 777] = "\xa7\x49", [ 778] = "\xa7\x4a", [ 779] = "\xa7\x4b",
++ [ 780] = "\xa7\x4c", [ 782] = "\xa7\x4d", [ 783] = "\xa7\x4e",
++ [ 784] = "\xa7\xa1", [ 785] = "\xa7\xa2", [ 786] = "\xa7\xa3",
++ [ 787] = "\xa7\xa4", [ 788] = "\xa7\xa5", [ 789] = "\xa7\xa6",
++ [ 790] = "\xa7\xa8", [ 791] = "\xa7\xa9", [ 792] = "\xa7\xaa",
++ [ 793] = "\xa7\xab", [ 794] = "\xa7\xac", [ 795] = "\xa7\xad",
++ [ 796] = "\xa7\xae", [ 797] = "\xa7\xaf", [ 798] = "\xa7\xb0",
++ [ 799] = "\xa7\xb1", [ 800] = "\xa7\xb2", [ 801] = "\xa7\xb3",
++ [ 802] = "\xa7\xb4", [ 803] = "\xa7\xb5", [ 804] = "\xa7\xb6",
++ [ 805] = "\xa7\xb7", [ 806] = "\xa7\xb8", [ 807] = "\xa7\xb9",
++ [ 808] = "\xa7\xba", [ 809] = "\xa7\xbb", [ 810] = "\xa7\xbc",
++ [ 811] = "\xa7\xbd", [ 812] = "\xa7\xbe", [ 813] = "\xa7\xbf",
++ [ 814] = "\xa7\xc0", [ 815] = "\xa7\xc1", [ 816] = "\xa7\xd1",
++ [ 817] = "\xa7\xd2", [ 818] = "\xa7\xd3", [ 819] = "\xa7\xd4",
++ [ 820] = "\xa7\xd5", [ 821] = "\xa7\xd6", [ 822] = "\xa7\xd8",
++ [ 823] = "\xa7\xd9", [ 824] = "\xa7\xda", [ 825] = "\xa7\xdb",
++ [ 826] = "\xa7\xdc", [ 827] = "\xa7\xdd", [ 828] = "\xa7\xde",
++ [ 829] = "\xa7\xdf", [ 830] = "\xa7\xe0", [ 831] = "\xa7\xe1",
++ [ 832] = "\xa7\xe2", [ 833] = "\xa7\xe3", [ 834] = "\xa7\xe4",
++ [ 835] = "\xa7\xe5", [ 836] = "\xa7\xe6", [ 837] = "\xa7\xe7",
++ [ 838] = "\xa7\xe8", [ 839] = "\xa7\xe9", [ 840] = "\xa7\xea",
++ [ 841] = "\xa7\xeb", [ 842] = "\xa7\xec", [ 843] = "\xa7\xed",
++ [ 844] = "\xa7\xee", [ 845] = "\xa7\xef", [ 846] = "\xa7\xf0",
++ [ 847] = "\xa7\xf1", [ 849] = "\xa7\xd7", [ 850] = "\xa7\x72",
++ [ 851] = "\xa7\x73", [ 852] = "\xa7\x74", [ 853] = "\xa7\x75",
++ [ 854] = "\xa7\x76", [ 855] = "\xa7\x77", [ 856] = "\xa7\x78",
++ [ 857] = "\xa7\x79", [ 858] = "\xa7\x7a", [ 859] = "\xa7\x7b",
++ [ 860] = "\xa7\x7c", [ 862] = "\xa7\x7d", [ 863] = "\xa7\x7e"
++};
++
++static const char from_ucs4_cjk[32662][2] =
++{
++ /* start = 0x2010, end = 0x9fa5 */
++ [ 0] = "\xa1\xbe", [ 4] = "\xa1\xbd", [ 5] = "\xa1\xbd",
++ [ 6] = "\xa1\xc2", [ 8] = "\xa1\xc6", [ 9] = "\xa1\xc7",
++ [ 12] = "\xa1\xc8", [ 13] = "\xa1\xc9", [ 16] = "\xa2\xf7",
++ [ 17] = "\xa2\xf8", [ 21] = "\xa1\xc5", [ 22] = "\xa1\xc4",
++ [ 32] = "\xa2\xf3", [ 34] = "\xa1\xec", [ 35] = "\xa1\xed",
++ [ 43] = "\xa2\xa8", [ 46] = "\x7e\x00", [ 243] = "\xa1\xee",
++ [ 262] = "\xad\xe2", [ 273] = "\xad\xe4", [ 274] = "\xa2\x6f",
++ [ 283] = "\xa2\xf2", [ 336] = "\xad\xb5", [ 337] = "\xad\xb6",
++ [ 338] = "\xad\xb7", [ 339] = "\xad\xb8", [ 340] = "\xad\xb9",
++ [ 341] = "\xad\xba", [ 342] = "\xad\xbb", [ 343] = "\xad\xbc",
++ [ 344] = "\xad\xbd", [ 345] = "\xad\xbe", [ 352] = "\xf3\x73",
++ [ 353] = "\xf3\x74", [ 354] = "\xf3\x75", [ 355] = "\xf3\x76",
++ [ 356] = "\xf3\x77", [ 357] = "\xf3\x78", [ 358] = "\xf3\x79",
++ [ 359] = "\xf3\x7a", [ 360] = "\xf3\x7b", [ 361] = "\xf3\x7c",
++ [ 384] = "\xa2\xab", [ 385] = "\xa2\xac", [ 386] = "\xa2\xaa",
++ [ 387] = "\xa2\xad", [ 450] = "\xa2\xcd", [ 452] = "\xa2\xce",
++ [ 496] = "\xa2\xcf", [ 498] = "\xa2\xdf", [ 499] = "\xa2\xd0",
++ [ 503] = "\xa2\xe0", [ 504] = "\xa2\xba", [ 507] = "\xa2\xbb",
++ [ 513] = "\xad\xf4", [ 514] = "\xa1\xdd", [ 522] = "\xa2\xe5",
++ [ 525] = "\xa2\xe7", [ 526] = "\xa1\xe7", [ 527] = "\xad\xf8",
++ [ 528] = "\xa2\xdc", [ 533] = "\xa1\xc2", [ 535] = "\xa2\xca",
++ [ 536] = "\xa2\xcb", [ 537] = "\xa2\xc1", [ 538] = "\xa2\xc0",
++ [ 539] = "\xa2\xe9", [ 540] = "\xa2\xea", [ 542] = "\xad\xf3",
++ [ 548] = "\xa1\xe8", [ 549] = "\xa2\xe8", [ 557] = "\xa2\xe6",
++ [ 578] = "\xa2\xe2", [ 592] = "\xa1\xe2", [ 593] = "\xa2\xe1",
++ [ 598] = "\xa1\xe5", [ 599] = "\xa1\xe6", [ 602] = "\xa2\xe3",
++ [ 603] = "\xa2\xe4", [ 626] = "\xa2\xbe", [ 627] = "\xa2\xbf",
++ [ 630] = "\xa2\xbc", [ 631] = "\xa2\xbd", [ 661] = "\xa2\xdd",
++ [ 687] = "\xad\xf9", [ 770] = "\xa2\xde", [ 1104] = "\xad\xa1",
++ [ 1105] = "\xad\xa2", [ 1106] = "\xad\xa3", [ 1107] = "\xad\xa4",
++ [ 1108] = "\xad\xa5", [ 1109] = "\xad\xa6", [ 1110] = "\xad\xa7",
++ [ 1111] = "\xad\xa8", [ 1112] = "\xad\xa9", [ 1113] = "\xad\xaa",
++ [ 1114] = "\xad\xab", [ 1115] = "\xad\xac", [ 1116] = "\xad\xad",
++ [ 1117] = "\xad\xae", [ 1118] = "\xad\xaf", [ 1119] = "\xad\xb0",
++ [ 1120] = "\xad\xb1", [ 1121] = "\xad\xb2", [ 1122] = "\xad\xb3",
++ [ 1123] = "\xad\xb4", [ 1264] = "\xa8\xa1", [ 1265] = "\xa8\xac",
++ [ 1266] = "\xa8\xa2", [ 1267] = "\xa8\xad", [ 1276] = "\xa8\xa3",
++ [ 1279] = "\xa8\xae", [ 1280] = "\xa8\xa4", [ 1283] = "\xa8\xaf",
++ [ 1284] = "\xa8\xa6", [ 1287] = "\xa8\xb1", [ 1288] = "\xa8\xa5",
++ [ 1291] = "\xa8\xb0", [ 1292] = "\xa8\xa7", [ 1293] = "\xa8\xbc",
++ [ 1296] = "\xa8\xb7", [ 1299] = "\xa8\xb2", [ 1300] = "\xa8\xa9",
++ [ 1301] = "\xa8\xbe", [ 1304] = "\xa8\xb9", [ 1307] = "\xa8\xb4",
++ [ 1308] = "\xa8\xa8", [ 1311] = "\xa8\xb8", [ 1312] = "\xa8\xbd",
++ [ 1315] = "\xa8\xb3", [ 1316] = "\xa8\xaa", [ 1319] = "\xa8\xba",
++ [ 1320] = "\xa8\xbf", [ 1323] = "\xa8\xb5", [ 1324] = "\xa8\xab",
++ [ 1327] = "\xa8\xbb", [ 1330] = "\xa8\xc0", [ 1339] = "\xa8\xb6",
++ [ 1424] = "\xa2\xa3", [ 1425] = "\xa2\xa2", [ 1442] = "\xa2\xa5",
++ [ 1443] = "\xa2\xa4", [ 1452] = "\xa2\xa7", [ 1453] = "\xa2\xa6",
++ [ 1462] = "\xa2\xa1", [ 1463] = "\xa1\xfe", [ 1467] = "\xa1\xfb",
++ [ 1470] = "\xa1\xfd", [ 1471] = "\xa1\xfc", [ 1503] = "\xa2\xfe",
++ [ 1525] = "\xa1\xfa", [ 1526] = "\xa1\xf9", [ 1584] = "\xa1\xea",
++ [ 1586] = "\xa1\xe9", [ 1626] = "\xa2\xf6", [ 1629] = "\xa2\xf5",
++ [ 1631] = "\xa2\xf4", [ 4080] = "\xa1\xa1", [ 4081] = "\xa1\xa2",
++ [ 4082] = "\xa1\xa3", [ 4083] = "\xa1\xb7", [ 4085] = "\xa1\xb9",
++ [ 4086] = "\xa1\xba", [ 4087] = "\xa1\xbb", [ 4088] = "\xa1\xd2",
++ [ 4089] = "\xa1\xd3", [ 4090] = "\xa1\xd4", [ 4091] = "\xa1\xd5",
++ [ 4092] = "\xa1\xd6", [ 4093] = "\xa1\xd7", [ 4094] = "\xa1\xd8",
++ [ 4095] = "\xa1\xd9", [ 4096] = "\xa1\xda", [ 4097] = "\xa1\xdb",
++ [ 4098] = "\xa2\xa9", [ 4099] = "\xa2\xae", [ 4100] = "\xa1\xcc",
++ [ 4101] = "\xa1\xcd", [ 4108] = "\xa1\xc1", [ 4109] = "\xad\xe0",
++ [ 4111] = "\xad\xe1", [ 4145] = "\xa4\xa1", [ 4146] = "\xa4\xa2",
++ [ 4147] = "\xa4\xa3", [ 4148] = "\xa4\xa4", [ 4149] = "\xa4\xa5",
++ [ 4150] = "\xa4\xa6", [ 4151] = "\xa4\xa7", [ 4152] = "\xa4\xa8",
++ [ 4153] = "\xa4\xa9", [ 4154] = "\xa4\xaa", [ 4155] = "\xa4\xab",
++ [ 4156] = "\xa4\xac", [ 4157] = "\xa4\xad", [ 4158] = "\xa4\xae",
++ [ 4159] = "\xa4\xaf", [ 4160] = "\xa4\xb0", [ 4161] = "\xa4\xb1",
++ [ 4162] = "\xa4\xb2", [ 4163] = "\xa4\xb3", [ 4164] = "\xa4\xb4",
++ [ 4165] = "\xa4\xb5", [ 4166] = "\xa4\xb6", [ 4167] = "\xa4\xb7",
++ [ 4168] = "\xa4\xb8", [ 4169] = "\xa4\xb9", [ 4170] = "\xa4\xba",
++ [ 4171] = "\xa4\xbb", [ 4172] = "\xa4\xbc", [ 4173] = "\xa4\xbd",
++ [ 4174] = "\xa4\xbe", [ 4175] = "\xa4\xbf", [ 4176] = "\xa4\xc0",
++ [ 4177] = "\xa4\xc1", [ 4178] = "\xa4\xc2", [ 4179] = "\xa4\xc3",
++ [ 4180] = "\xa4\xc4", [ 4181] = "\xa4\xc5", [ 4182] = "\xa4\xc6",
++ [ 4183] = "\xa4\xc7", [ 4184] = "\xa4\xc8", [ 4185] = "\xa4\xc9",
++ [ 4186] = "\xa4\xca", [ 4187] = "\xa4\xcb", [ 4188] = "\xa4\xcc",
++ [ 4189] = "\xa4\xcd", [ 4190] = "\xa4\xce", [ 4191] = "\xa4\xcf",
++ [ 4192] = "\xa4\xd0", [ 4193] = "\xa4\xd1", [ 4194] = "\xa4\xd2",
++ [ 4195] = "\xa4\xd3", [ 4196] = "\xa4\xd4", [ 4197] = "\xa4\xd5",
++ [ 4198] = "\xa4\xd6", [ 4199] = "\xa4\xd7", [ 4200] = "\xa4\xd8",
++ [ 4201] = "\xa4\xd9", [ 4202] = "\xa4\xda", [ 4203] = "\xa4\xdb",
++ [ 4204] = "\xa4\xdc", [ 4205] = "\xa4\xdd", [ 4206] = "\xa4\xde",
++ [ 4207] = "\xa4\xdf", [ 4208] = "\xa4\xe0", [ 4209] = "\xa4\xe1",
++ [ 4210] = "\xa4\xe2", [ 4211] = "\xa4\xe3", [ 4212] = "\xa4\xe4",
++ [ 4213] = "\xa4\xe5", [ 4214] = "\xa4\xe6", [ 4215] = "\xa4\xe7",
++ [ 4216] = "\xa4\xe8", [ 4217] = "\xa4\xe9", [ 4218] = "\xa4\xea",
++ [ 4219] = "\xa4\xeb", [ 4220] = "\xa4\xec", [ 4221] = "\xa4\xed",
++ [ 4222] = "\xa4\xee", [ 4223] = "\xa4\xef", [ 4224] = "\xa4\xf0",
++ [ 4225] = "\xa4\xf1", [ 4226] = "\xa4\xf2", [ 4227] = "\xa4\xf3",
++ [ 4235] = "\xa1\xab", [ 4236] = "\xa1\xac", [ 4237] = "\xa1\xb5",
++ [ 4238] = "\xa1\xb6", [ 4241] = "\xa5\xa1", [ 4242] = "\xa5\xa2",
++ [ 4243] = "\xa5\xa3", [ 4244] = "\xa5\xa4", [ 4245] = "\xa5\xa5",
++ [ 4246] = "\xa5\xa6", [ 4247] = "\xa5\xa7", [ 4248] = "\xa5\xa8",
++ [ 4249] = "\xa5\xa9", [ 4250] = "\xa5\xaa", [ 4251] = "\xa5\xab",
++ [ 4252] = "\xa5\xac", [ 4253] = "\xa5\xad", [ 4254] = "\xa5\xae",
++ [ 4255] = "\xa5\xaf", [ 4256] = "\xa5\xb0", [ 4257] = "\xa5\xb1",
++ [ 4258] = "\xa5\xb2", [ 4259] = "\xa5\xb3", [ 4260] = "\xa5\xb4",
++ [ 4261] = "\xa5\xb5", [ 4262] = "\xa5\xb6", [ 4263] = "\xa5\xb7",
++ [ 4264] = "\xa5\xb8", [ 4265] = "\xa5\xb9", [ 4266] = "\xa5\xba",
++ [ 4267] = "\xa5\xbb", [ 4268] = "\xa5\xbc", [ 4269] = "\xa5\xbd",
++ [ 4270] = "\xa5\xbe", [ 4271] = "\xa5\xbf", [ 4272] = "\xa5\xc0",
++ [ 4273] = "\xa5\xc1", [ 4274] = "\xa5\xc2", [ 4275] = "\xa5\xc3",
++ [ 4276] = "\xa5\xc4", [ 4277] = "\xa5\xc5", [ 4278] = "\xa5\xc6",
++ [ 4279] = "\xa5\xc7", [ 4280] = "\xa5\xc8", [ 4281] = "\xa5\xc9",
++ [ 4282] = "\xa5\xca", [ 4283] = "\xa5\xcb", [ 4284] = "\xa5\xcc",
++ [ 4285] = "\xa5\xcd", [ 4286] = "\xa5\xce", [ 4287] = "\xa5\xcf",
++ [ 4288] = "\xa5\xd0", [ 4289] = "\xa5\xd1", [ 4290] = "\xa5\xd2",
++ [ 4291] = "\xa5\xd3", [ 4292] = "\xa5\xd4", [ 4293] = "\xa5\xd5",
++ [ 4294] = "\xa5\xd6", [ 4295] = "\xa5\xd7", [ 4296] = "\xa5\xd8",
++ [ 4297] = "\xa5\xd9", [ 4298] = "\xa5\xda", [ 4299] = "\xa5\xdb",
++ [ 4300] = "\xa5\xdc", [ 4301] = "\xa5\xdd", [ 4302] = "\xa5\xde",
++ [ 4303] = "\xa5\xdf", [ 4304] = "\xa5\xe0", [ 4305] = "\xa5\xe1",
++ [ 4306] = "\xa5\xe2", [ 4307] = "\xa5\xe3", [ 4308] = "\xa5\xe4",
++ [ 4309] = "\xa5\xe5", [ 4310] = "\xa5\xe6", [ 4311] = "\xa5\xe7",
++ [ 4312] = "\xa5\xe8", [ 4313] = "\xa5\xe9", [ 4314] = "\xa5\xea",
++ [ 4315] = "\xa5\xeb", [ 4316] = "\xa5\xec", [ 4317] = "\xa5\xed",
++ [ 4318] = "\xa5\xee", [ 4319] = "\xa5\xef", [ 4320] = "\xa5\xf0",
++ [ 4321] = "\xa5\xf1", [ 4322] = "\xa5\xf2", [ 4323] = "\xa5\xf3",
++ [ 4324] = "\xa5\xf4", [ 4325] = "\xa5\xf5", [ 4326] = "\xa5\xf6",
++ [ 4331] = "\xa1\xa6", [ 4332] = "\xa1\xbc", [ 4333] = "\xa1\xb3",
++ [ 4334] = "\xa1\xb4", [ 4641] = "\xad\xea", [ 4642] = "\xad\xeb",
++ [ 4649] = "\xad\xec", [ 4756] = "\xad\xe5", [ 4757] = "\xad\xe6",
++ [ 4758] = "\xad\xe7", [ 4759] = "\xad\xe8", [ 4760] = "\xad\xe9",
++ [ 4851] = "\xad\xc6", [ 4861] = "\xad\xca", [ 4868] = "\xad\xc1",
++ [ 4872] = "\xad\xc4", [ 4882] = "\xad\xc2", [ 4883] = "\xad\xcc",
++ [ 4886] = "\xad\xcb", [ 4887] = "\xad\xc5", [ 4891] = "\xad\xcd",
++ [ 4902] = "\xad\xc7", [ 4907] = "\xad\xcf", [ 4921] = "\xad\xc0",
++ [ 4922] = "\xad\xce", [ 4925] = "\xad\xc3", [ 4929] = "\xad\xc8",
++ [ 4935] = "\xad\xc9", [ 4971] = "\xad\xdf", [ 4972] = "\xad\xef",
++ [ 4973] = "\xad\xee", [ 4974] = "\xad\xed", [ 4990] = "\xad\xd3",
++ [ 4991] = "\xad\xd4", [ 5004] = "\xad\xd0", [ 5005] = "\xad\xd1",
++ [ 5006] = "\xad\xd2", [ 5009] = "\xad\xd6", [ 5044] = "\xad\xd5",
++ [ 5053] = "\xad\xe3", [11760] = "\xb0\xec", [11761] = "\xc3\xfa",
++ [11762] = "\xb0\x21", [11763] = "\xbc\xb7", [11764] = "\xb0\x22",
++ [11765] = "\xb0\x23", [11767] = "\xcb\xfc", [11768] = "\xbe\xe6",
++ [11769] = "\xbb\xb0", [11770] = "\xbe\xe5", [11771] = "\xb2\xbc",
++ [11772] = "\xb0\x24", [11773] = "\xc9\xd4", [11774] = "\xcd\xbf",
++ [11776] = "\xd0\xa2", [11777] = "\xb1\xaf", [11778] = "\xb0\x25",
++ [11780] = "\xb3\xee", [11781] = "\xd0\xa3", [11782] = "\xc0\xa4",
++ [11783] = "\xd2\xc2", [11784] = "\xb5\xd6", [11785] = "\xca\xba",
++ [11790] = "\xbe\xe7", [11791] = "\xb0\x26", [11793] = "\xce\xbe",
++ [11795] = "\xb0\x27", [11796] = "\xb0\x28", [11798] = "\xca\xc2",
++ [11800] = "\xb0\x29", [11802] = "\xd0\xa4", [11803] = "\xb0\x2a",
++ [11805] = "\xc3\xe6", [11806] = "\xb0\x2b", [11807] = "\xb0\x2c",
++ [11808] = "\xb0\x2d", [11809] = "\xd0\xa5", [11810] = "\xb6\xfa",
++ [11813] = "\xb0\x2e", [11814] = "\xd0\xa6", [11816] = "\xb4\xdd",
++ [11817] = "\xc3\xb0", [11819] = "\xbc\xe7", [11820] = "\xd0\xa7",
++ [11823] = "\xd0\xa8", [11824] = "\xb0\x2f", [11825] = "\xb0\x30",
++ [11826] = "\xd0\xa9", [11827] = "\xc7\xb5", [11828] = "\xb0\x31",
++ [11829] = "\xb5\xd7", [11831] = "\xb0\x32", [11835] = "\xc7\xb7",
++ [11837] = "\xc6\xe3", [11838] = "\xb8\xc3", [11839] = "\xcb\xb3",
++ [11841] = "\xb0\x33", [11845] = "\xe9\xc9", [11846] = "\xd0\xaa",
++ [11847] = "\xbe\xe8", [11848] = "\xd0\xab", [11849] = "\xb2\xb5",
++ [11850] = "\xb0\x34", [11852] = "\xb0\x35", [11853] = "\xb6\xe5",
++ [11854] = "\xb8\xf0", [11855] = "\xcc\xe9", [11858] = "\xd6\xa6",
++ [11859] = "\xb0\x36", [11864] = "\xb0\x37", [11865] = "\xb0\x38",
++ [11873] = "\xcd\xf0", [11875] = "\xc6\xfd", [11876] = "\xb0\x39",
++ [11877] = "\xb0\x3a", [11881] = "\xb0\x3b", [11886] = "\xb4\xa5",
++ [11887] = "\xb0\x3c", [11888] = "\xb5\xb5", [11890] = "\xd0\xac",
++ [11893] = "\xd0\xad", [11894] = "\xce\xbb", [11896] = "\xcd\xbd",
++ [11897] = "\xc1\xe8", [11898] = "\xd0\xaf", [11899] = "\xbb\xf6",
++ [11900] = "\xc6\xf3", [11901] = "\xb0\x3d", [11902] = "\xd0\xb2",
++ [11905] = "\xb1\xbe", [11906] = "\xb8\xdf", [11908] = "\xb8\xde",
++ [11909] = "\xb0\xe6", [11910] = "\xb0\x3e", [11911] = "\xb0\x3f",
++ [11912] = "\xcf\xcb", [11913] = "\xcf\xca", [11915] = "\xba\xb3",
++ [11916] = "\xb0\xa1", [11917] = "\xb0\x40", [11918] = "\xd0\xb3",
++ [11919] = "\xd0\xb4", [11920] = "\xd0\xb5", [11921] = "\xcb\xb4",
++ [11922] = "\xd0\xb6", [11924] = "\xb8\xf2", [11925] = "\xb0\xe7",
++ [11926] = "\xcb\xf2", [11928] = "\xb5\xfc", [11931] = "\xb5\xfd",
++ [11932] = "\xb5\xfe", [11933] = "\xc4\xe2", [11934] = "\xce\xbc",
++ [11935] = "\xb0\x41", [11936] = "\xd0\xb7", [11939] = "\xd0\xb8",
++ [11942] = "\xd0\xb9", [11945] = "\xb0\x42", [11946] = "\xbf\xcd",
++ [11952] = "\xbd\xba", [11953] = "\xbf\xce", [11954] = "\xd0\xbe",
++ [11955] = "\xb0\x43", [11956] = "\xd0\xbc", [11958] = "\xd0\xbd",
++ [11959] = "\xb5\xd8", [11962] = "\xba\xa3", [11963] = "\xb2\xf0",
++ [11965] = "\xd0\xbb", [11966] = "\xd0\xba", [11967] = "\xca\xa9",
++ [11968] = "\xb0\x44", [11972] = "\xbb\xc6", [11973] = "\xbb\xc5",
++ [11974] = "\xc2\xbe", [11975] = "\xd0\xbf", [11976] = "\xc9\xd5",
++ [11977] = "\xc0\xe7", [11978] = "\xb0\x45", [11979] = "\xb0\x46",
++ [11981] = "\xa1\xb8", [11982] = "\xd0\xc0", [11983] = "\xd0\xc2",
++ [11984] = "\xb0\x47", [11985] = "\xb0\x48", [11986] = "\xb0\x49",
++ [11987] = "\xc2\xe5", [11988] = "\xce\xe1", [11989] = "\xb0\xca",
++ [11992] = "\xb0\x4a", [11997] = "\xd0\xc1", [11998] = "\xb2\xbe",
++ [11999] = "\xb0\x4b", [12000] = "\xb6\xc4", [12001] = "\xb0\x4c",
++ [12002] = "\xc3\xe7", [12003] = "\xb0\x4d", [12005] = "\xb0\x4e",
++ [12006] = "\xb7\xef", [12007] = "\xd0\xc3", [12011] = "\xc7\xa4",
++ [12012] = "\xf4\x2f", [12013] = "\xb0\x4f", [12014] = "\xb0\x50",
++ [12015] = "\xb0\x51", [12016] = "\xb0\x52", [12017] = "\xb4\xeb",
++ [12018] = "\xb0\x53", [12019] = "\xb0\x54", [12024] = "\xb0\x55",
++ [12025] = "\xd0\xc4", [12026] = "\xb0\xcb", [12027] = "\xb0\x56",
++ [12028] = "\xb0\x57", [12029] = "\xb8\xe0", [12030] = "\xb4\xec",
++ [12031] = "\xc9\xfa", [12032] = "\xc8\xb2", [12033] = "\xb5\xd9",
++ [12034] = "\xb0\x58", [12037] = "\xb0\x59", [12038] = "\xb0\x5a",
++ [12039] = "\xb0\x5b", [12041] = "\xb0\x5c", [12042] = "\xb2\xf1",
++ [12044] = "\xd0\xe7", [12045] = "\xc5\xc1", [12062] = "\xb0\x5d",
++ [12063] = "\xc7\xec", [12064] = "\xd0\xc6", [12065] = "\xb0\x5e",
++ [12067] = "\xb0\x60", [12068] = "\xc8\xbc", [12069] = "\xb0\x61",
++ [12070] = "\xce\xe2", [12071] = "\xb0\x62", [12072] = "\xbf\xad",
++ [12073] = "\xb0\x63", [12074] = "\xbb\xc7", [12075] = "\xb0\x64",
++ [12076] = "\xbb\xf7", [12077] = "\xb2\xc0", [12078] = "\xb0\x65",
++ [12080] = "\xb0\x66", [12082] = "\xb0\x67", [12083] = "\xc4\xd1",
++ [12086] = "\xc3\xa2", [12087] = "\xd0\xca", [12088] = "\xb0\x68",
++ [12089] = "\xb0\x69", [12091] = "\xb0\x6a", [12092] = "\xb0\x6b",
++ [12093] = "\xb0\xcc", [12094] = "\xc4\xe3", [12095] = "\xbd\xbb",
++ [12096] = "\xba\xb4", [12097] = "\xcd\xa4", [12098] = "\xb0\x6c",
++ [12099] = "\xc2\xce", [12100] = "\xb0\x6d", [12101] = "\xb2\xbf",
++ [12102] = "\xb0\x6e", [12103] = "\xd0\xc9", [12104] = "\xb0\x6f",
++ [12105] = "\xcd\xbe", [12106] = "\xd0\xc5", [12107] = "\xd0\xc7",
++ [12108] = "\xba\xee", [12109] = "\xd0\xc8", [12110] = "\xd5\xa4",
++ [12111] = "\xb0\x70", [12112] = "\xb0\x5f", [12115] = "\xb0\x71",
++ [12121] = "\xd0\xd0", [12122] = "\xb0\x72", [12124] = "\xb0\x73",
++ [12126] = "\xb0\x74", [12127] = "\xd0\xd3", [12128] = "\xd0\xd1",
++ [12129] = "\xb0\x75", [12131] = "\xb2\xc2", [12133] = "\xca\xbb",
++ [12134] = "\xd0\xcb", [12135] = "\xb0\x76", [12136] = "\xb0\x77",
++ [12137] = "\xb0\x78", [12138] = "\xb0\x79", [12139] = "\xd0\xcf",
++ [12140] = "\xb8\xf3", [12141] = "\xb0\x7a", [12142] = "\xb0\x7b",
++ [12143] = "\xbb\xc8", [12145] = "\xb0\x7c", [12146] = "\xb0\x7d",
++ [12147] = "\xb4\xa6", [12148] = "\xb0\x7e", [12149] = "\xb1\x21",
++ [12150] = "\xd0\xd4", [12152] = "\xd0\xcc", [12153] = "\xb1\x22",
++ [12154] = "\xb1\x23", [12155] = "\xce\xe3", [12156] = "\xb1\x24",
++ [12157] = "\xbb\xf8", [12158] = "\xb1\x25", [12159] = "\xd0\xcd",
++ [12160] = "\xb1\x26", [12161] = "\xd0\xd2", [12162] = "\xb1\x27",
++ [12163] = "\xb1\x28", [12164] = "\xb1\x29", [12166] = "\xd0\xd5",
++ [12167] = "\xb1\x2a", [12168] = "\xd0\xce", [12169] = "\xb1\x2b",
++ [12170] = "\xb1\x2c", [12171] = "\xb6\xa1", [12173] = "\xb0\xcd",
++ [12174] = "\xb1\x2d", [12175] = "\xb1\x2e", [12176] = "\xb6\xa2",
++ [12177] = "\xb2\xc1", [12187] = "\xd5\xa5", [12189] = "\xcb\xf9",
++ [12190] = "\xc9\xee", [12191] = "\xb8\xf4", [12194] = "\xb1\x2f",
++ [12197] = "\xbf\xaf", [12198] = "\xce\xb7", [12199] = "\xb1\x30",
++ [12201] = "\xb1\x31", [12203] = "\xb1\x32", [12204] = "\xb1\x33",
++ [12205] = "\xb1\x34", [12206] = "\xb1\x35", [12207] = "\xca\xd8",
++ [12208] = "\xb1\x36", [12209] = "\xb1\x37", [12210] = "\xb7\xb8",
++ [12211] = "\xc2\xa5", [12212] = "\xb2\xe4", [12213] = "\xb1\x38",
++ [12214] = "\xb1\x39", [12216] = "\xb1\x3a", [12217] = "\xb1\x3b",
++ [12218] = "\xbd\xd3", [12219] = "\xb1\x3c", [12220] = "\xb1\x3d",
++ [12221] = "\xb1\x3e", [12222] = "\xd0\xd9", [12223] = "\xb1\x3f",
++ [12224] = "\xd0\xde", [12225] = "\xd0\xdc", [12226] = "\xb1\x40",
++ [12228] = "\xd0\xd7", [12231] = "\xc2\xaf", [12232] = "\xd0\xda",
++ [12234] = "\xd0\xdd", [12235] = "\xd0\xdb", [12236] = "\xb1\x41",
++ [12237] = "\xca\xdd", [12239] = "\xd0\xd8", [12240] = "\xb1\x42",
++ [12241] = "\xbf\xae", [12242] = "\xb1\x43", [12243] = "\xcb\xf3",
++ [12244] = "\xd0\xdf", [12245] = "\xd0\xe0", [12254] = "\xbd\xa4",
++ [12255] = "\xd0\xed", [12256] = "\xb1\x44", [12258] = "\xb1\x45",
++ [12259] = "\xc7\xd0", [12261] = "\xc9\xb6", [12262] = "\xd0\xe8",
++ [12264] = "\xca\xf0", [12266] = "\xb2\xb6", [12268] = "\xb1\x46",
++ [12269] = "\xb1\x47", [12270] = "\xd0\xec", [12271] = "\xb1\x48",
++ [12272] = "\xb1\x49", [12273] = "\xb1\x4a", [12276] = "\xb1\x4b",
++ [12277] = "\xd0\xe6", [12278] = "\xd0\xef", [12279] = "\xb1\x4c",
++ [12281] = "\xc1\xd2", [12282] = "\xb1\x4d", [12283] = "\xb8\xc4",
++ [12284] = "\xb1\x4e", [12285] = "\xc7\xdc", [12286] = "\xb1\x4f",
++ [12287] = "\xe0\xc7", [12288] = "\xb1\x50", [12289] = "\xd0\xee",
++ [12290] = "\xc5\xdd", [12291] = "\xb1\x51", [12292] = "\xd0\xe3",
++ [12294] = "\xb8\xf6", [12295] = "\xb1\x52", [12296] = "\xb1\x53",
++ [12297] = "\xb8\xf5", [12298] = "\xd0\xe1", [12299] = "\xb1\x54",
++ [12300] = "\xb1\x55", [12301] = "\xb1\x56", [12302] = "\xb1\x57",
++ [12303] = "\xbc\xda", [12305] = "\xd0\xe9", [12306] = "\xb1\x58",
++ [12307] = "\xca\xef", [12308] = "\xc3\xcd", [12309] = "\xd0\xe5",
++ [12310] = "\xb7\xf1", [12311] = "\xb1\x59", [12312] = "\xd0\xe2",
++ [12313] = "\xd0\xea", [12314] = "\xd0\xe4", [12315] = "\xce\xd1",
++ [12316] = "\xd0\xeb", [12317] = "\xcf\xc1", [12318] = "\xb1\x5a",
++ [12320] = "\xb1\x5b", [12322] = "\xb1\x5c", [12323] = "\xb1\x5d",
++ [12325] = "\xb1\x5e", [12326] = "\xb6\xe6", [12329] = "\xb7\xf0",
++ [12331] = "\xb1\x76", [12336] = "\xb1\x5f", [12337] = "\xb1\x60",
++ [12338] = "\xb1\x61", [12339] = "\xd0\xf0", [12341] = "\xb1\x62",
++ [12342] = "\xb1\x63", [12343] = "\xd0\xf1", [12344] = "\xd0\xf5",
++ [12345] = "\xb0\xce", [12346] = "\xb1\x64", [12348] = "\xb1\x65",
++ [12350] = "\xb1\x66", [12351] = "\xca\xd0", [12352] = "\xd0\xf4",
++ [12353] = "\xb1\x67", [12354] = "\xb1\x68", [12355] = "\xb1\x69",
++ [12357] = "\xd0\xf3", [12358] = "\xd0\xf7", [12359] = "\xb1\x6a",
++ [12361] = "\xb1\x6b", [12362] = "\xd0\xf6", [12364] = "\xc4\xe4",
++ [12367] = "\xb1\x6c", [12368] = "\xb1\x6d", [12370] = "\xb1\x6e",
++ [12371] = "\xb1\x6f", [12373] = "\xb7\xf2", [12374] = "\xb1\x70",
++ [12375] = "\xb1\x71", [12378] = "\xb1\x72", [12380] = "\xd0\xf8",
++ [12381] = "\xb1\x73", [12384] = "\xb1\x74", [12385] = "\xb1\x75",
++ [12386] = "\xbc\xc5", [12388] = "\xc2\xa6", [12389] = "\xc4\xe5",
++ [12390] = "\xb6\xf6", [12392] = "\xd0\xf9", [12397] = "\xb5\xb6",
++ [12400] = "\xd0\xfa", [12401] = "\xb1\x77", [12403] = "\xb1\x78",
++ [12404] = "\xb1\x79", [12405] = "\xd0\xfc", [12406] = "\xb1\x7a",
++ [12410] = "\xb1\x7b", [12413] = "\xcb\xb5", [12414] = "\xb1\x7c",
++ [12415] = "\xb1\x7d", [12416] = "\xb1\x7e", [12417] = "\xb7\xe6",
++ [12418] = "\xb2\x21", [12419] = "\xb2\x22", [12420] = "\xb2\x23",
++ [12422] = "\xb2\x24", [12424] = "\xbb\xb1", [12425] = "\xc8\xf7",
++ [12426] = "\xd0\xfb", [12427] = "\xb2\x25", [12428] = "\xb2\x26",
++ [12430] = "\xb2\x27", [12431] = "\xb2\x28", [12432] = "\xb2\x29",
++ [12433] = "\xb2\x2a", [12434] = "\xb2\x2b", [12442] = "\xb2\x2c",
++ [12444] = "\xba\xc5", [12445] = "\xcd\xc3", [12447] = "\xb2\x2d",
++ [12448] = "\xb2\x2e", [12450] = "\xd0\xfe", [12451] = "\xd1\xa3",
++ [12452] = "\xd0\xfd", [12453] = "\xba\xc4", [12455] = "\xbd\xfd",
++ [12457] = "\xb2\x2f", [12458] = "\xb2\x30", [12461] = "\xb2\x31",
++ [12462] = "\xb7\xb9", [12464] = "\xb2\x32", [12466] = "\xd1\xa4",
++ [12467] = "\xb2\x33", [12468] = "\xb2\x34", [12469] = "\xb6\xcf",
++ [12471] = "\xb2\x35", [12473] = "\xd1\xa1", [12474] = "\xd1\xa2",
++ [12476] = "\xb2\x36", [12477] = "\xc6\xaf", [12478] = "\xb2\x37",
++ [12479] = "\xc1\xfc", [12480] = "\xb2\x38", [12481] = "\xb6\xa3",
++ [12483] = "\xb2\x39", [12484] = "\xb2\x3a", [12485] = "\xcb\xcd",
++ [12486] = "\xd1\xa5", [12488] = "\xb2\x3b", [12490] = "\xce\xbd",
++ [12492] = "\xb2\x3c", [12493] = "\xb2\x3d", [12494] = "\xd1\xa6",
++ [12495] = "\xb2\x3e", [12498] = "\xb2\x3f", [12499] = "\xd1\xa9",
++ [12500] = "\xb2\x40", [12501] = "\xd1\xa7", [12502] = "\xb2\x41",
++ [12503] = "\xc1\xce", [12504] = "\xb2\x42", [12505] = "\xb2\x43",
++ [12509] = "\xd1\xa8", [12510] = "\xd1\xaa", [12511] = "\xb2\x44",
++ [12513] = "\xb2\x45", [12514] = "\xb2\x51", [12516] = "\xf4\x30",
++ [12517] = "\xd1\xac", [12518] = "\xb2\x46", [12521] = "\xd1\xab",
++ [12522] = "\xb2\x47", [12523] = "\xca\xc8", [12526] = "\xb2\x48",
++ [12528] = "\xb5\xb7", [12529] = "\xd1\xae", [12530] = "\xd1\xaf",
++ [12531] = "\xb2\x49", [12532] = "\xb2\xaf", [12534] = "\xb2\x4a",
++ [12535] = "\xb2\x4b", [12536] = "\xb2\x4c", [12537] = "\xd1\xad",
++ [12539] = "\xb2\x4d", [12540] = "\xb2\x4e", [12541] = "\xb2\x4f",
++ [12542] = "\xb2\x50", [12544] = "\xb2\x52", [12546] = "\xbc\xf4",
++ [12548] = "\xd1\xb2", [12549] = "\xd1\xb1", [12550] = "\xd1\xb0",
++ [12551] = "\xb2\x53", [12552] = "\xd0\xd6", [12553] = "\xb2\x54",
++ [12554] = "\xd1\xb3", [12555] = "\xb2\x55", [12556] = "\xb2\x56",
++ [12557] = "\xb2\x57", [12558] = "\xb2\x58", [12559] = "\xbd\xfe",
++ [12561] = "\xd1\xb4", [12563] = "\xb2\x59", [12567] = "\xb2\x5a",
++ [12568] = "\xb2\x5b", [12570] = "\xcd\xa5", [12572] = "\xb2\x5c",
++ [12573] = "\xb2\x5d", [12575] = "\xb2\x5e", [12577] = "\xb2\x5f",
++ [12578] = "\xcc\xd9", [12579] = "\xb2\x60", [12580] = "\xb2\x61",
++ [12581] = "\xb2\x62", [12583] = "\xd1\xb6", [12584] = "\xb2\x63",
++ [12585] = "\xb2\x64", [12586] = "\xd1\xb5", [12587] = "\xd1\xb8",
++ [12588] = "\xd1\xb7", [12591] = "\xd1\xb9", [12592] = "\xd1\xba",
++ [12593] = "\xb0\xf4", [12594] = "\xb2\x65", [12595] = "\xb8\xb5",
++ [12596] = "\xb7\xbb", [12597] = "\xbd\xbc", [12598] = "\xc3\xfb",
++ [12599] = "\xb6\xa4", [12600] = "\xc0\xe8", [12601] = "\xb8\xf7",
++ [12602] = "\xb2\x66", [12603] = "\xb9\xee", [12604] = "\xd1\xbc",
++ [12605] = "\xcc\xc8", [12606] = "\xc5\xc6", [12607] = "\xb2\x67",
++ [12608] = "\xbb\xf9", [12610] = "\xd1\xbb", [12611] = "\xb2\x68",
++ [12612] = "\xd1\xbd", [12613] = "\xb2\x69", [12615] = "\xb2\x6a",
++ [12616] = "\xb2\x6b", [12618] = "\xc5\xde", [12620] = "\xb3\xf5",
++ [12623] = "\xb2\x6c", [12626] = "\xd1\xbe", [12628] = "\xb2\x6d",
++ [12629] = "\xc6\xfe", [12630] = "\xb2\x6e", [12632] = "\xc1\xb4",
++ [12633] = "\xd1\xc0", [12634] = "\xd1\xc1", [12635] = "\xc8\xac",
++ [12636] = "\xb8\xf8", [12637] = "\xcf\xbb", [12638] = "\xd1\xc2",
++ [12641] = "\xb6\xa6", [12645] = "\xca\xbc", [12646] = "\xc2\xb6",
++ [12647] = "\xb6\xf1", [12648] = "\xc5\xb5", [12652] = "\xb7\xf3",
++ [12654] = "\xb2\x6f", [12656] = "\xd1\xc3", [12658] = "\xd1\xc4",
++ [12659] = "\xb2\x70", [12660] = "\xb2\x71", [12661] = "\xc6\xe2",
++ [12662] = "\xb1\xdf", [12665] = "\xd1\xc7", [12666] = "\xba\xfd",
++ [12667] = "\xb2\x72", [12668] = "\xd1\xc6", [12669] = "\xba\xc6",
++ [12670] = "\xb2\x73", [12671] = "\xd1\xc8", [12672] = "\xe6\xee",
++ [12673] = "\xd1\xc9", [12674] = "\xcb\xc1", [12675] = "\xd1\xca",
++ [12677] = "\xd1\xcb", [12678] = "\xd1\xcc", [12679] = "\xbe\xe9",
++ [12680] = "\xb2\x74", [12681] = "\xbc\xcc", [12685] = "\xb2\x75",
++ [12688] = "\xb4\xa7", [12689] = "\xb2\x76", [12690] = "\xd1\xcf",
++ [12691] = "\xb2\x77", [12692] = "\xd1\xcd", [12693] = "\xcc\xbd",
++ [12694] = "\xd1\xce", [12696] = "\xc9\xda", [12697] = "\xd1\xd0",
++ [12698] = "\xd1\xd1", [12699] = "\xd1\xd2", [12700] = "\xc5\xdf",
++ [12701] = "\xb2\x78", [12704] = "\xd1\xd6", [12705] = "\xd1\xd4",
++ [12706] = "\xd1\xd5", [12707] = "\xd1\xd3", [12708] = "\xba\xe3",
++ [12709] = "\xd1\xd7", [12710] = "\xcc\xea", [12711] = "\xce\xe4",
++ [12712] = "\xb2\x79", [12714] = "\xb2\x7a", [12716] = "\xb2\x7b",
++ [12717] = "\xd1\xd8", [12718] = "\xb2\x7c", [12719] = "\xb2\x7d",
++ [12722] = "\xb2\x7e", [12724] = "\xc0\xa8", [12725] = "\xd1\xd9",
++ [12726] = "\xbd\xda", [12728] = "\xb3\x21", [12729] = "\xd1\xda",
++ [12731] = "\xc3\xfc", [12732] = "\xce\xbf", [12733] = "\xc5\xe0",
++ [12735] = "\xb3\x22", [12737] = "\xb3\x23", [12738] = "\xb3\x24",
++ [12739] = "\xb3\x25", [12741] = "\xb3\x26", [12742] = "\xd2\xc5",
++ [12744] = "\xb3\x27", [12747] = "\xd1\xdb", [12748] = "\xf4\xa5",
++ [12749] = "\xb6\xc5", [12750] = "\xb3\x28", [12752] = "\xd1\xdc",
++ [12753] = "\xcb\xde", [12754] = "\xb3\x29", [12757] = "\xb3\x2a",
++ [12758] = "\xbd\xe8", [12759] = "\xc2\xfc", [12761] = "\xd1\xde",
++ [12762] = "\xc6\xe4", [12764] = "\xf4\x31", [12765] = "\xd1\xdf",
++ [12766] = "\xb3\x2b", [12768] = "\xd1\xe0", [12769] = "\xb3\xae",
++ [12770] = "\xb3\x2c", [12771] = "\xb3\x2d", [12772] = "\xb3\x2e",
++ [12773] = "\xd1\xe1", [12774] = "\xb6\xa7", [12775] = "\xb3\x2f",
++ [12776] = "\xc6\xcc", [12777] = "\xb1\xfa", [12778] = "\xbd\xd0",
++ [12781] = "\xc8\xa1", [12782] = "\xd1\xe2", [12784] = "\xc5\xe1",
++ [12785] = "\xb3\x30", [12786] = "\xb3\x31", [12787] = "\xbf\xcf",
++ [12788] = "\xd1\xe3", [12789] = "\xb3\x32", [12790] = "\xca\xac",
++ [12791] = "\xc0\xda", [12792] = "\xb4\xa2", [12794] = "\xb4\xa9",
++ [12795] = "\xd1\xe4", [12798] = "\xd1\xe6", [12801] = "\xb7\xba",
++ [12802] = "\xb3\x33", [12803] = "\xb3\x34", [12804] = "\xd1\xe5",
++ [12805] = "\xb3\x35", [12806] = "\xb3\x36", [12807] = "\xce\xf3",
++ [12808] = "\xb3\x37", [12813] = "\xbd\xe9", [12818] = "\xb3\x38",
++ [12820] = "\xc8\xbd", [12821] = "\xca\xcc", [12823] = "\xd1\xe7",
++ [12824] = "\xb3\x39", [12825] = "\xcd\xf8", [12826] = "\xd1\xe8",
++ [12830] = "\xd1\xe9", [12832] = "\xc5\xfe", [12833] = "\xb3\x3a",
++ [12834] = "\xb3\x3b", [12835] = "\xd1\xea", [12837] = "\xb3\x3c",
++ [12838] = "\xc0\xa9", [12839] = "\xba\xfe", [12840] = "\xb7\xf4",
++ [12841] = "\xd1\xeb", [12842] = "\xbb\xc9", [12843] = "\xb9\xef",
++ [12844] = "\xb3\x3d", [12851] = "\xc4\xe6", [12852] = "\xd1\xed",
++ [12853] = "\xb3\x3e", [12855] = "\xc2\xa7", [12857] = "\xb3\x3f",
++ [12858] = "\xba\xef", [12859] = "\xd1\xee", [12860] = "\xd1\xef",
++ [12861] = "\xc1\xb0", [12863] = "\xd1\xec", [12868] = "\xd1\xf1",
++ [12869] = "\xb3\x40", [12870] = "\xcb\xb6", [12871] = "\xb3\x41",
++ [12872] = "\xb3\x42", [12874] = "\xb3\x43", [12875] = "\xb9\xe4",
++ [12876] = "\xb3\x44", [12878] = "\xd1\xf0", [12879] = "\xb3\x45",
++ [12880] = "\xb3\x46", [12881] = "\xb3\x47", [12883] = "\xb7\xf5",
++ [12884] = "\xba\xde", [12885] = "\xc7\xed", [12886] = "\xb3\x48",
++ [12889] = "\xd1\xf4", [12890] = "\xd1\xf2", [12894] = "\xb3\x49",
++ [12895] = "\xc9\xfb", [12896] = "\xbe\xea", [12897] = "\xd1\xfb",
++ [12898] = "\xb3\xe4", [12899] = "\xd1\xf5", [12900] = "\xd1\xf3",
++ [12901] = "\xc1\xcf", [12903] = "\xb3\x4a", [12904] = "\xb3\x4b",
++ [12905] = "\xb3\x4c", [12909] = "\xd1\xf7", [12911] = "\xd1\xf6",
++ [12912] = "\xb3\x4d", [12914] = "\xb3\x4e", [12915] = "\xb3\xc4",
++ [12917] = "\xb3\x4f", [12919] = "\xb7\xe0", [12920] = "\xd1\xfc",
++ [12921] = "\xce\xad", [12922] = "\xb3\x50", [12924] = "\xb3\x51",
++ [12925] = "\xd1\xf8", [12929] = "\xd1\xfd", [12930] = "\xd1\xfa",
++ [12931] = "\xb3\x52", [12932] = "\xd1\xf9", [12933] = "\xb3\x53",
++ [12934] = "\xb3\x54", [12935] = "\xb3\x55", [12936] = "\xb3\x56",
++ [12938] = "\xb3\x57", [12939] = "\xce\xcf", [12940] = "\xb3\x58",
++ [12943] = "\xb8\xf9", [12944] = "\xb2\xc3", [12947] = "\xce\xf4",
++ [12948] = "\xb3\x59", [12949] = "\xb3\x5a", [12950] = "\xb3\x5b",
++ [12951] = "\xb3\x5c", [12953] = "\xbd\xf5", [12954] = "\xc5\xd8",
++ [12955] = "\xb9\xe5", [12956] = "\xd2\xa2", [12957] = "\xd2\xa3",
++ [12959] = "\xb3\x5d", [12960] = "\xb3\x5e", [12961] = "\xce\xe5",
++ [12964] = "\xcf\xab", [12965] = "\xd2\xa5", [12966] = "\xb3\x5f",
++ [12967] = "\xb3\x60", [12968] = "\xb3\x61", [12969] = "\xb8\xfa",
++ [12970] = "\xb3\x62", [12971] = "\xb3\x63", [12972] = "\xd2\xa4",
++ [12973] = "\xb3\x64", [12974] = "\xb3\xaf", [12976] = "\xb3\x65",
++ [12977] = "\xd2\xa6", [12979] = "\xcb\xd6", [12980] = "\xb3\x66",
++ [12981] = "\xc4\xbc", [12982] = "\xb3\x67", [12983] = "\xcd\xa6",
++ [12984] = "\xb3\x68", [12985] = "\xca\xd9", [12988] = "\xb3\x69",
++ [12989] = "\xd2\xa7", [12991] = "\xb3\x6a", [12993] = "\xb3\x6b",
++ [12994] = "\xf0\xd5", [12996] = "\xb3\x6c", [12997] = "\xc6\xb0",
++ [12998] = "\xb3\x6d", [12999] = "\xd2\xa8", [13000] = "\xb4\xaa",
++ [13001] = "\xcc\xb3", [13003] = "\xb3\x6e", [13004] = "\xb3\x6f",
++ [13005] = "\xbe\xa1", [13006] = "\xd2\xa9", [13007] = "\xca\xe7",
++ [13008] = "\xd2\xad", [13009] = "\xb3\x70", [13010] = "\xc0\xaa",
++ [13011] = "\xd2\xaa", [13012] = "\xb6\xd0", [13013] = "\xb3\x71",
++ [13014] = "\xd2\xab", [13015] = "\xb4\xab", [13016] = "\xb3\x72",
++ [13017] = "\xb3\x73", [13018] = "\xb3\x74", [13020] = "\xb3\x75",
++ [13024] = "\xb3\x76", [13025] = "\xb3\x77", [13026] = "\xb7\xae",
++ [13027] = "\xd2\xae", [13028] = "\xb3\x78", [13029] = "\xd2\xaf",
++ [13030] = "\xb3\x79", [13031] = "\xb3\x7a", [13032] = "\xd2\xb0",
++ [13033] = "\xd2\xb1", [13034] = "\xbc\xdb", [13038] = "\xb8\xfb",
++ [13039] = "\xcc\xde", [13040] = "\xb3\x7b", [13041] = "\xcc\xe8",
++ [13042] = "\xc6\xf7", [13043] = "\xb3\x7c", [13045] = "\xca\xf1",
++ [13046] = "\xd2\xb2", [13047] = "\xf4\x32", [13048] = "\xd2\xb3",
++ [13050] = "\xb3\x7d", [13051] = "\xb3\x7e", [13052] = "\xb4\x21",
++ [13053] = "\xd2\xb5", [13055] = "\xd2\xb7", [13056] = "\xd2\xb6",
++ [13057] = "\xb4\x22", [13059] = "\xb4\x23", [13061] = "\xd2\xb8",
++ [13062] = "\xb2\xbd", [13063] = "\xcb\xcc", [13064] = "\xb4\x24",
++ [13065] = "\xba\xfc", [13066] = "\xd2\xb9", [13067] = "\xb4\x25",
++ [13068] = "\xb4\x26", [13069] = "\xc1\xd9", [13070] = "\xb4\x27",
++ [13071] = "\xb4\x28", [13072] = "\xbe\xa2", [13073] = "\xb6\xa9",
++ [13075] = "\xd2\xba", [13076] = "\xf4\x33", [13077] = "\xb4\x29",
++ [13079] = "\xb4\x2a", [13080] = "\xb4\x2b", [13081] = "\xb4\x2c",
++ [13082] = "\xc8\xdb", [13083] = "\xb4\x2d", [13084] = "\xb4\x2e",
++ [13085] = "\xb4\x2f", [13087] = "\xd2\xbb", [13088] = "\xb4\x30",
++ [13089] = "\xd2\xbc", [13090] = "\xb4\x31", [13091] = "\xd2\xbd",
++ [13093] = "\xb4\x32", [13096] = "\xd2\xbe", [13097] = "\xc9\xa4",
++ [13098] = "\xb6\xe8", [13099] = "\xb0\xe5", [13100] = "\xb4\x33",
++ [13101] = "\xb4\x34", [13102] = "\xb4\x35", [13103] = "\xc6\xbf",
++ [13104] = "\xd2\xbf", [13105] = "\xbd\xbd", [13106] = "\xb4\x36",
++ [13107] = "\xc0\xe9", [13109] = "\xd2\xc1", [13110] = "\xd2\xc0",
++ [13111] = "\xbe\xa3", [13112] = "\xb8\xe1", [13113] = "\xd2\xc3",
++ [13114] = "\xc8\xbe", [13115] = "\xb4\x38", [13116] = "\xb4\x37",
++ [13117] = "\xd2\xc4", [13121] = "\xc8\xdc", [13122] = "\xc2\xb4",
++ [13123] = "\xc2\xee", [13124] = "\xb6\xa8", [13127] = "\xc6\xee",
++ [13128] = "\xc3\xb1", [13129] = "\xb4\x39", [13130] = "\xc7\xee",
++ [13131] = "\xb4\x3a", [13132] = "\xcb\xce", [13134] = "\xd2\xc6",
++ [13136] = "\xc0\xea", [13137] = "\xb4\x3b", [13139] = "\xb4\x3c",
++ [13141] = "\xb4\x3d", [13142] = "\xb7\xb5", [13145] = "\xd2\xc7",
++ [13148] = "\xb4\x3e", [13149] = "\xb4\x3f", [13150] = "\xd2\xc8",
++ [13151] = "\xb1\xac", [13152] = "\xb0\xf5", [13153] = "\xb4\xed",
++ [13154] = "\xb4\x40", [13155] = "\xc2\xa8", [13156] = "\xb5\xd1",
++ [13157] = "\xcd\xf1", [13159] = "\xd2\xcb", [13160] = "\xb2\xb7",
++ [13161] = "\xb4\x41", [13163] = "\xd2\xca", [13166] = "\xb4\x42",
++ [13167] = "\xb6\xaa", [13170] = "\xd2\xcc", [13171] = "\xb4\x43",
++ [13172] = "\xcc\xf1", [13175] = "\xb4\x44", [13176] = "\xb4\x45",
++ [13182] = "\xb4\x46", [13187] = "\xb4\x47", [13188] = "\xb4\x48",
++ [13190] = "\xd2\xcd", [13192] = "\xce\xd2", [13193] = "\xb4\x49",
++ [13194] = "\xb8\xfc", [13197] = "\xb4\x4a", [13199] = "\xb8\xb6",
++ [13200] = "\xd2\xce", [13201] = "\xb4\x4b", [13204] = "\xb4\x4c",
++ [13205] = "\xd2\xd0", [13206] = "\xd2\xcf", [13208] = "\xbf\xdf",
++ [13209] = "\xb1\xb9", [13210] = "\xb4\x4d", [13211] = "\xb4\x4e",
++ [13213] = "\xb1\xde", [13214] = "\xd2\xd1", [13215] = "\xb4\x4f",
++ [13216] = "\xd2\xd2", [13218] = "\xb4\x50", [13219] = "\xb8\xb7",
++ [13220] = "\xb4\x51", [13221] = "\xb4\x52", [13222] = "\xd2\xd3",
++ [13223] = "\xb4\x53", [13224] = "\xb4\x54", [13226] = "\xb4\x55",
++ [13227] = "\xb5\xee", [13229] = "\xb4\x56", [13232] = "\xb4\x57",
++ [13234] = "\xbb\xb2", [13235] = "\xd2\xd4", [13237] = "\xb4\x58",
++ [13240] = "\xcb\xf4", [13241] = "\xba\xb5", [13242] = "\xb5\xda",
++ [13243] = "\xcd\xa7", [13244] = "\xc1\xd0", [13245] = "\xc8\xbf",
++ [13246] = "\xbc\xfd", [13247] = "\xb4\x59", [13250] = "\xb4\x5a",
++ [13251] = "\xb4\x5b", [13252] = "\xbd\xc7", [13253] = "\xb4\x5c",
++ [13254] = "\xbc\xe8", [13255] = "\xbc\xf5", [13257] = "\xbd\xf6",
++ [13258] = "\xb4\x5d", [13259] = "\xc8\xc0", [13261] = "\xb4\x5e",
++ [13262] = "\xb4\x5f", [13263] = "\xd2\xd7", [13264] = "\xb4\x60",
++ [13265] = "\xb1\xc3", [13266] = "\xc1\xd1", [13267] = "\xb8\xfd",
++ [13268] = "\xb8\xc5", [13269] = "\xb6\xe7", [13270] = "\xb4\x61",
++ [13271] = "\xb4\x62", [13272] = "\xd2\xdb", [13273] = "\xc3\xa1",
++ [13274] = "\xc2\xfe", [13275] = "\xb6\xab", [13276] = "\xbe\xa4",
++ [13277] = "\xd2\xdc", [13278] = "\xd2\xda", [13279] = "\xb2\xc4",
++ [13280] = "\xc2\xe6", [13281] = "\xbc\xb8", [13282] = "\xbb\xcb",
++ [13283] = "\xb1\xa6", [13285] = "\xb4\x63", [13286] = "\xb3\xf0",
++ [13287] = "\xb9\xe6", [13288] = "\xbb\xca", [13290] = "\xd2\xdd",
++ [13297] = "\xd2\xde", [13298] = "\xb4\x64", [13299] = "\xb5\xc9",
++ [13300] = "\xb3\xc6", [13304] = "\xb9\xe7", [13305] = "\xb5\xc8",
++ [13306] = "\xc4\xdf", [13307] = "\xb1\xa5", [13308] = "\xc6\xb1",
++ [13309] = "\xcc\xbe", [13310] = "\xb9\xa1", [13311] = "\xcd\xf9",
++ [13312] = "\xc5\xc7", [13313] = "\xb8\xfe", [13315] = "\xb4\x65",
++ [13322] = "\xb4\x66", [13323] = "\xb7\xaf", [13325] = "\xd2\xe7",
++ [13327] = "\xb6\xe3", [13328] = "\xcb\xca", [13329] = "\xb4\x67",
++ [13334] = "\xc8\xdd", [13335] = "\xb4\x68", [13336] = "\xb4\x69",
++ [13337] = "\xd2\xe6", [13338] = "\xb4\x6a", [13339] = "\xb4\xde",
++ [13340] = "\xd2\xe1", [13341] = "\xd2\xe2", [13342] = "\xd2\xe4",
++ [13343] = "\xb4\x6b", [13345] = "\xb4\x6c", [13348] = "\xb4\x6d",
++ [13349] = "\xb4\x6e", [13350] = "\xd2\xe5", [13352] = "\xb5\xdb",
++ [13353] = "\xbf\xe1", [13355] = "\xca\xad", [13356] = "\xd2\xe3",
++ [13357] = "\xd2\xdf", [13358] = "\xb8\xe3", [13360] = "\xd2\xe0",
++ [13362] = "\xcf\xa4", [13363] = "\xb4\x6f", [13364] = "\xb4\x70",
++ [13366] = "\xca\xf2", [13367] = "\xb4\x71", [13368] = "\xc4\xe8",
++ [13369] = "\xb8\xe2", [13370] = "\xb9\xf0", [13373] = "\xb4\x72",
++ [13374] = "\xd2\xe8", [13375] = "\xb4\x73", [13377] = "\xc6\xdd",
++ [13390] = "\xb4\x74", [13391] = "\xd2\xec", [13394] = "\xb4\x75",
++ [13396] = "\xb4\x76", [13398] = "\xb4\x77", [13399] = "\xb4\x78",
++ [13400] = "\xbc\xfe", [13401] = "\xb4\x79", [13402] = "\xbc\xf6",
++ [13403] = "\xb4\x7a", [13405] = "\xb4\x7b", [13406] = "\xb4\x7c",
++ [13408] = "\xd2\xef", [13409] = "\xd2\xed", [13411] = "\xcc\xa3",
++ [13412] = "\xb4\x7d", [13413] = "\xd2\xea", [13414] = "\xd2\xf3",
++ [13415] = "\xd2\xee", [13419] = "\xd2\xf1", [13420] = "\xb8\xc6",
++ [13421] = "\xcc\xbf", [13423] = "\xb4\x7e", [13424] = "\xd2\xf2",
++ [13425] = "\xb5\x21", [13427] = "\xb5\x22", [13428] = "\xd2\xf4",
++ [13429] = "\xb5\x23", [13430] = "\xd2\xf6", [13432] = "\xb5\x24",
++ [13433] = "\xb5\x25", [13434] = "\xf4\x35", [13435] = "\xba\xf0",
++ [13436] = "\xcf\xc2", [13437] = "\xb5\x26", [13438] = "\xd2\xeb",
++ [13439] = "\xd2\xe9", [13440] = "\xd2\xf5", [13441] = "\xb5\x27",
++ [13442] = "\xd2\xf0", [13445] = "\xb5\x28", [13446] = "\xb5\x29",
++ [13452] = "\xb5\x2a", [13455] = "\xb5\x2b", [13457] = "\xb5\x2c",
++ [13458] = "\xd2\xf8", [13460] = "\xd3\xa3", [13461] = "\xd2\xfa",
++ [13462] = "\xb5\x2d", [13463] = "\xb5\x2e", [13464] = "\xd2\xfe",
++ [13465] = "\xb5\x2f", [13466] = "\xb5\x30", [13467] = "\xd3\xa1",
++ [13468] = "\xd2\xfb", [13469] = "\xb5\x31", [13470] = "\xb5\x32",
++ [13471] = "\xd3\xbe", [13473] = "\xb5\x33", [13474] = "\xba\xe9",
++ [13475] = "\xb3\xb1", [13479] = "\xb5\x34", [13480] = "\xd2\xf9",
++ [13481] = "\xb5\x35", [13482] = "\xb5\x36", [13483] = "\xb5\x37",
++ [13484] = "\xd3\xa5", [13485] = "\xb0\xf6", [13486] = "\xd3\xa4",
++ [13487] = "\xb5\x38", [13488] = "\xb0\xa5", [13489] = "\xc9\xca",
++ [13490] = "\xd3\xa2", [13492] = "\xd2\xfc", [13494] = "\xb5\x39",
++ [13495] = "\xd2\xf7", [13496] = "\xd2\xfd", [13497] = "\xba\xc8",
++ [13498] = "\xb5\x3a", [13501] = "\xb5\x3b", [13502] = "\xb5\x3c",
++ [13512] = "\xd3\xa6", [13520] = "\xb5\x3d", [13521] = "\xb0\xf7",
++ [13522] = "\xd3\xaf", [13525] = "\xd3\xa7", [13526] = "\xd3\xa8",
++ [13528] = "\xbe\xa5", [13529] = "\xcb\xe9", [13530] = "\xb5\x3e",
++ [13532] = "\xb5\x3f", [13533] = "\xd3\xad", [13534] = "\xd3\xac",
++ [13535] = "\xb5\x40", [13538] = "\xc5\xaf", [13542] = "\xb5\x41",
++ [13546] = "\xd3\xae", [13548] = "\xb5\x42", [13549] = "\xd3\xab",
++ [13550] = "\xb5\x43", [13551] = "\xb5\x44", [13552] = "\xb5\x45",
++ [13553] = "\xb5\x46", [13556] = "\xb1\xb4", [13557] = "\xb5\x47",
++ [13558] = "\xba\xb6", [13559] = "\xbf\xb0", [13560] = "\xb5\x48",
++ [13561] = "\xb5\x49", [13564] = "\xb5\x4a", [13565] = "\xb5\x4b",
++ [13566] = "\xb5\x4c", [13567] = "\xd3\xa9", [13568] = "\xc5\xe2",
++ [13572] = "\xd3\xaa", [13573] = "\xb5\x4d", [13574] = "\xb0\xa2",
++ [13594] = "\xb5\x4e", [13595] = "\xb5\x4f", [13598] = "\xd3\xb4",
++ [13599] = "\xcd\xa3", [13601] = "\xbe\xa7", [13602] = "\xb5\x50",
++ [13603] = "\xd3\xba", [13605] = "\xb5\x51", [13606] = "\xb5\x52",
++ [13608] = "\xd3\xb9", [13609] = "\xd3\xb0", [13611] = "\xb5\x53",
++ [13612] = "\xb5\x54", [13613] = "\xb5\x55", [13614] = "\xc2\xc3",
++ [13616] = "\xd3\xb1", [13617] = "\xb5\x56", [13620] = "\xc2\xef",
++ [13621] = "\xd3\xb6", [13622] = "\xbe\xa6", [13623] = "\xb5\x57",
++ [13625] = "\xb5\x58", [13626] = "\xb5\x59", [13628] = "\xd3\xb3",
++ [13629] = "\xb5\x5a", [13631] = "\xcc\xe4", [13632] = "\xb5\x5b",
++ [13633] = "\xb5\x5c", [13635] = "\xb7\xbc", [13638] = "\xd3\xb7",
++ [13639] = "\xd3\xb8", [13640] = "\xb5\x5d", [13642] = "\xb5\x5e",
++ [13643] = "\xb5\x5f", [13644] = "\xd3\xb5", [13645] = "\xd3\xbb",
++ [13646] = "\xb5\x60", [13648] = "\xb5\x61", [13649] = "\xb5\x62",
++ [13651] = "\xd3\xb2", [13652] = "\xb5\x63", [13654] = "\xb5\x64",
++ [13675] = "\xd3\xc1", [13676] = "\xd3\xc6", [13678] = "\xd3\xc2",
++ [13679] = "\xb5\x65", [13680] = "\xd3\xbd", [13681] = "\xb5\x66",
++ [13682] = "\xb5\x67", [13683] = "\xd3\xc7", [13684] = "\xc1\xb1",
++ [13686] = "\xb5\x68", [13687] = "\xd3\xc9", [13688] = "\xb5\x69",
++ [13689] = "\xb9\xa2", [13690] = "\xd3\xbf", [13691] = "\xc3\xfd",
++ [13694] = "\xb5\x6a", [13695] = "\xb5\x6b", [13697] = "\xb5\x6c",
++ [13698] = "\xb5\x6d", [13699] = "\xb5\x6e", [13700] = "\xb5\x6f",
++ [13703] = "\xb5\x70", [13704] = "\xd3\xc3", [13705] = "\xd3\xbc",
++ [13706] = "\xb4\xad", [13708] = "\xb4\xee", [13709] = "\xb3\xe5",
++ [13710] = "\xd3\xc4", [13711] = "\xd3\xc0", [13715] = "\xb5\x71",
++ [13716] = "\xb5\x72", [13719] = "\xb7\xf6", [13720] = "\xd3\xca",
++ [13721] = "\xd3\xc8", [13722] = "\xc1\xd3", [13723] = "\xb5\xca",
++ [13724] = "\xb6\xac", [13725] = "\xb5\x73", [13726] = "\xd3\xc5",
++ [13728] = "\xb6\xf4", [13730] = "\xb5\x74", [13734] = "\xb1\xc4",
++ [13743] = "\xb5\x75", [13745] = "\xb5\x76", [13747] = "\xb5\x77",
++ [13748] = "\xd3\xce", [13749] = "\xd3\xcc", [13750] = "\xb5\x78",
++ [13751] = "\xd4\xa7", [13753] = "\xb5\x79", [13755] = "\xb5\x7a",
++ [13756] = "\xb5\x7b", [13758] = "\xb5\x7c", [13761] = "\xb5\x7d",
++ [13762] = "\xb5\x7e", [13763] = "\xb6\x21", [13764] = "\xd3\xd1",
++ [13767] = "\xb6\x22", [13768] = "\xb6\x23", [13770] = "\xd3\xcb",
++ [13771] = "\xb6\x24", [13772] = "\xd3\xcf", [13774] = "\xb6\x25",
++ [13775] = "\xd3\xcd", [13778] = "\xb6\x26", [13779] = "\xbb\xcc",
++ [13780] = "\xd3\xd0", [13785] = "\xb6\x27", [13798] = "\xb6\x28",
++ [13799] = "\xd3\xd3", [13801] = "\xd3\xd8", [13805] = "\xd3\xd6",
++ [13806] = "\xd3\xd5", [13807] = "\xb6\x29", [13813] = "\xb6\x2a",
++ [13814] = "\xc3\xb2", [13816] = "\xb6\x2b", [13817] = "\xb2\xc5",
++ [13818] = "\xb6\x2c", [13821] = "\xb6\x2d", [13822] = "\xb6\x2e",
++ [13823] = "\xb6\x2f", [13824] = "\xb6\x30", [13825] = "\xb6\x31",
++ [13826] = "\xb6\x32", [13828] = "\xd3\xd2", [13830] = "\xd3\xd4",
++ [13831] = "\xbe\xa8", [13832] = "\xb1\xb3", [13833] = "\xb6\x33",
++ [13835] = "\xd3\xd7", [13849] = "\xb2\xde", [13852] = "\xb6\x34",
++ [13855] = "\xd3\xe2", [13856] = "\xb6\x35", [13857] = "\xbe\xfc",
++ [13858] = "\xd3\xde", [13859] = "\xb6\x36", [13860] = "\xd3\xdc",
++ [13861] = "\xb6\x37", [13862] = "\xd3\xdd", [13863] = "\xb6\x38",
++ [13864] = "\xd3\xdf", [13865] = "\xb6\x39", [13867] = "\xb6\x3a",
++ [13868] = "\xb6\x3b", [13869] = "\xb6\x3c", [13871] = "\xb6\x3d",
++ [13872] = "\xb6\x3e", [13873] = "\xb6\x3f", [13874] = "\xb1\xbd",
++ [13875] = "\xb6\x40", [13876] = "\xb6\x41", [13878] = "\xb6\x42",
++ [13881] = "\xb6\x43", [13883] = "\xb6\x44", [13884] = "\xc1\xb9",
++ [13885] = "\xb6\x45", [13886] = "\xd3\xd9", [13887] = "\xb6\x46",
++ [13888] = "\xd3\xda", [13892] = "\xb6\x47", [13899] = "\xb3\xfa",
++ [13902] = "\xb6\x48", [13904] = "\xb6\x49", [13905] = "\xb6\x4a",
++ [13906] = "\xb6\x4b", [13907] = "\xb6\x4c", [13908] = "\xd3\xe1",
++ [13910] = "\xb6\x4d", [13912] = "\xb4\xef", [13913] = "\xb6\x4e",
++ [13914] = "\xd3\xe4", [13915] = "\xd3\xe0", [13916] = "\xd3\xe3",
++ [13917] = "\xb6\x4f", [13919] = "\xb6\x50", [13921] = "\xb6\x51",
++ [13922] = "\xb6\x52", [13924] = "\xca\xae", [13925] = "\xb6\x53",
++ [13928] = "\xc6\xd5", [13930] = "\xc8\xb8", [13936] = "\xd3\xe6",
++ [13940] = "\xb6\x54", [13941] = "\xb6\x55", [13942] = "\xd3\xe5",
++ [13943] = "\xb3\xc5", [13944] = "\xb6\x56", [13946] = "\xd3\xe7",
++ [13947] = "\xb6\x57", [13948] = "\xb6\x58", [13951] = "\xd3\xea",
++ [13956] = "\xd3\xe9", [13957] = "\xb6\x59", [13961] = "\xb6\x5a",
++ [13962] = "\xb6\x5b", [13965] = "\xb6\x5c", [13966] = "\xb6\x5d",
++ [13967] = "\xb6\x5e", [13968] = "\xd3\xe8", [13970] = "\xc7\xb9",
++ [13973] = "\xd3\xeb", [13974] = "\xb6\x5f", [13975] = "\xb6\x60",
++ [13976] = "\xb6\x61", [13977] = "\xb6\x62", [13979] = "\xb6\x63",
++ [13980] = "\xb6\x64", [13981] = "\xb6\x65", [13982] = "\xd3\xec",
++ [13985] = "\xb6\x66", [13987] = "\xb6\x67", [13988] = "\xd3\xee",
++ [13990] = "\xd3\xed", [13991] = "\xb6\x68", [13996] = "\xd3\xf0",
++ [13998] = "\xb6\x69", [14000] = "\xd3\xf3", [14001] = "\xd3\xf1",
++ [14002] = "\xd3\xef", [14003] = "\xd3\xf2", [14005] = "\xb6\x6a",
++ [14008] = "\xd3\xf4", [14009] = "\xb6\x6b", [14010] = "\xb6\x6c",
++ [14011] = "\xb6\x6d", [14012] = "\xb6\x70", [14013] = "\xb6\x71",
++ [14014] = "\xd3\xf5", [14015] = "\xb6\x6e", [14016] = "\xb6\x6f",
++ [14017] = "\xd3\xf6", [14019] = "\xd3\xf7", [14023] = "\xd3\xf8",
++ [14024] = "\xd1\xc5", [14025] = "\xb6\x72", [14026] = "\xbc\xfc",
++ [14027] = "\xbb\xcd", [14028] = "\xb6\x73", [14029] = "\xb6\x74",
++ [14030] = "\xb2\xf3", [14031] = "\xb6\x75", [14032] = "\xb0\xf8",
++ [14033] = "\xb6\x76", [14035] = "\xc3\xc4", [14036] = "\xb6\x77",
++ [14037] = "\xb6\x78", [14038] = "\xb6\x79", [14039] = "\xb6\x7a",
++ [14040] = "\xb6\x7b", [14043] = "\xb6\x7d", [14045] = "\xb6\x7e",
++ [14046] = "\xd3\xf9", [14048] = "\xba\xa4", [14049] = "\xb6\x7c",
++ [14050] = "\xb0\xcf", [14051] = "\xbf\xde", [14054] = "\xb7\x21",
++ [14055] = "\xb7\x22", [14057] = "\xd3\xfa", [14058] = "\xb8\xc7",
++ [14061] = "\xb9\xf1", [14063] = "\xd3\xfc", [14064] = "\xd3\xfb",
++ [14065] = "\xb7\x23", [14066] = "\xb7\x24", [14067] = "\xca\xe0",
++ [14068] = "\xd3\xfd", [14071] = "\xb7\x25", [14072] = "\xd4\xa1",
++ [14073] = "\xd3\xfe", [14074] = "\xb7\x26", [14075] = "\xd4\xa2",
++ [14076] = "\xb7\x27", [14077] = "\xd4\xa3", [14079] = "\xb7\xf7",
++ [14081] = "\xb7\x28", [14082] = "\xb1\xe0", [14083] = "\xd4\xa4",
++ [14085] = "\xb7\x29", [14086] = "\xd4\xa6", [14088] = "\xd4\xa5",
++ [14090] = "\xb7\x2a", [14091] = "\xb7\x2b", [14092] = "\xd4\xa8",
++ [14093] = "\xb7\x2c", [14095] = "\xc5\xda", [14096] = "\xb7\x2d",
++ [14098] = "\xb7\x2e", [14099] = "\xb7\x2f", [14100] = "\xb7\x30",
++ [14101] = "\xb7\x31", [14102] = "\xd4\xa9", [14103] = "\xb0\xb5",
++ [14104] = "\xba\xdf", [14105] = "\xb7\x32", [14106] = "\xb7\x33",
++ [14108] = "\xb7\x34", [14109] = "\xb7\xbd", [14110] = "\xb7\x35",
++ [14111] = "\xb7\x36", [14112] = "\xc3\xcf", [14115] = "\xb7\x37",
++ [14116] = "\xb7\x38", [14119] = "\xd4\xaa", [14120] = "\xd4\xab",
++ [14123] = "\xd4\xad", [14125] = "\xb7\x39", [14126] = "\xb7\x3a",
++ [14127] = "\xb7\x3b", [14128] = "\xd4\xae", [14130] = "\xba\xe4",
++ [14133] = "\xb7\x3c", [14134] = "\xb7\x3d", [14135] = "\xb6\xd1",
++ [14138] = "\xcb\xb7", [14140] = "\xb7\x3e", [14141] = "\xb7\x3f",
++ [14142] = "\xd4\xac", [14143] = "\xd4\xaf", [14144] = "\xba\xc1",
++ [14145] = "\xb9\xa3", [14146] = "\xb7\x40", [14153] = "\xf4\x36",
++ [14161] = "\xd4\xb3", [14162] = "\xb7\x41", [14164] = "\xba\xa5",
++ [14165] = "\xb7\x42", [14166] = "\xc3\xb3", [14167] = "\xb7\x43",
++ [14168] = "\xb7\x44", [14169] = "\xd4\xb0", [14170] = "\xc4\xda",
++ [14171] = "\xb7\x45", [14173] = "\xb7\x46", [14174] = "\xb7\x47",
++ [14175] = "\xb7\x48", [14176] = "\xb7\x49", [14177] = "\xb7\x4a",
++ [14179] = "\xb7\x4b", [14180] = "\xb7\x4c", [14181] = "\xb7\x4d",
++ [14183] = "\xb7\x4e", [14185] = "\xb7\x4f", [14186] = "\xb7\x50",
++ [14187] = "\xb7\x51", [14188] = "\xb7\x52", [14190] = "\xb7\x53",
++ [14191] = "\xd4\xb4", [14193] = "\xb7\x54", [14194] = "\xbf\xe2",
++ [14195] = "\xb7\x55", [14200] = "\xd4\xb2", [14201] = "\xd4\xb5",
++ [14203] = "\xb7\xbf", [14204] = "\xb7\x56", [14211] = "\xd4\xb6",
++ [14212] = "\xb7\x57", [14213] = "\xb7\x60", [14215] = "\xb7\x58",
++ [14217] = "\xb7\x59", [14218] = "\xb7\x5a", [14220] = "\xb7\x5b",
++ [14221] = "\xb7\x5c", [14222] = "\xb7\x5d", [14223] = "\xb7\x5e",
++ [14224] = "\xd4\xb7", [14225] = "\xb7\x5f", [14226] = "\xb9\xa4",
++ [14227] = "\xb3\xc0", [14228] = "\xd4\xb9", [14231] = "\xb7\x61",
++ [14232] = "\xb7\x62", [14233] = "\xb7\x63", [14234] = "\xd4\xba",
++ [14236] = "\xb7\x64", [14240] = "\xd4\xbb", [14243] = "\xd4\xb8",
++ [14248] = "\xb7\x65", [14253] = "\xb7\x66", [14256] = "\xd4\xb1",
++ [14259] = "\xd4\xbc", [14262] = "\xd4\xbd", [14263] = "\xb7\x67",
++ [14264] = "\xb7\x68", [14267] = "\xcb\xe4", [14268] = "\xb7\x69",
++ [14270] = "\xbe\xeb", [14271] = "\xb7\x6a", [14274] = "\xd4\xbf",
++ [14275] = "\xd4\xc0", [14276] = "\xd4\xbe", [14277] = "\xb7\x6b",
++ [14278] = "\xd4\xc2", [14284] = "\xc7\xb8", [14285] = "\xb7\x6c",
++ [14286] = "\xb7\x6d", [14287] = "\xb0\xe8", [14288] = "\xc9\xd6",
++ [14289] = "\xb7\x7e", [14291] = "\xd4\xc3", [14292] = "\xb7\x6e",
++ [14294] = "\xb7\x6f", [14295] = "\xb7\x70", [14297] = "\xb7\x71",
++ [14301] = "\xb7\x72", [14304] = "\xb7\x73", [14308] = "\xbe\xfd",
++ [14309] = "\xb7\x74", [14310] = "\xb7\x75", [14311] = "\xbc\xb9",
++ [14312] = "\xb7\x76", [14313] = "\xc7\xdd", [14314] = "\xb4\xf0",
++ [14316] = "\xba\xeb", [14317] = "\xb7\x77", [14318] = "\xb7\x78",
++ [14319] = "\xb7\x79", [14320] = "\xcb\xd9", [14322] = "\xc6\xb2",
++ [14323] = "\xb7\x7a", [14324] = "\xb7\x7b", [14325] = "\xb7\xf8",
++ [14326] = "\xc2\xcf", [14328] = "\xb7\x7c", [14329] = "\xb7\x7d",
++ [14330] = "\xd4\xc1", [14331] = "\xd4\xc4", [14332] = "\xb8\x21",
++ [14333] = "\xb8\x22", [14341] = "\xc2\xc4", [14345] = "\xd4\xc5",
++ [14347] = "\xb8\x23", [14349] = "\xd4\xc6", [14350] = "\xb8\x24",
++ [14351] = "\xb8\x25", [14352] = "\xb8\x26", [14353] = "\xd4\xc8",
++ [14356] = "\xc4\xe9", [14358] = "\xb8\x27", [14359] = "\xb8\x28",
++ [14362] = "\xb4\xae", [14365] = "\xb8\x29", [14367] = "\xf4\xa1",
++ [14368] = "\xb1\xe1", [14369] = "\xca\xf3", [14370] = "\xb8\x2a",
++ [14372] = "\xbe\xec", [14373] = "\xc5\xc8", [14377] = "\xb8\x2b",
++ [14378] = "\xba\xe6", [14381] = "\xd4\xce", [14383] = "\xb8\x2c",
++ [14384] = "\xca\xbd", [14385] = "\xce\xdd", [14393] = "\xb8\x2d",
++ [14394] = "\xb2\xf4", [14395] = "\xd4\xca", [14396] = "\xb8\x2e",
++ [14397] = "\xb8\x2f", [14399] = "\xb8\x30", [14400] = "\xb8\x31",
++ [14401] = "\xc1\xba", [14402] = "\xd4\xcd", [14404] = "\xc5\xe3",
++ [14405] = "\xb8\x32", [14407] = "\xc5\xc9", [14408] = "\xc5\xe4",
++ [14409] = "\xc8\xb9", [14410] = "\xc4\xcd", [14414] = "\xba\xc9",
++ [14415] = "\xb8\x33", [14417] = "\xb8\x34", [14418] = "\xd4\xc9",
++ [14420] = "\xb8\x35", [14423] = "\xb8\x36", [14424] = "\xb8\x37",
++ [14425] = "\xb1\xf6", [14427] = "\xc5\xb6", [14432] = "\xd4\xcb",
++ [14434] = "\xd4\xc7", [14437] = "\xbf\xd0", [14440] = "\xb8\x38",
++ [14441] = "\xd4\xcf", [14444] = "\xb8\x39", [14446] = "\xbd\xce",
++ [14447] = "\xb8\x3a", [14448] = "\xb8\x3b", [14449] = "\xb8\x3c",
++ [14451] = "\xb6\xad", [14453] = "\xd4\xd0", [14455] = "\xb8\x3d",
++ [14456] = "\xb8\x3e", [14457] = "\xb8\x3f", [14458] = "\xb8\x40",
++ [14460] = "\xb8\x41", [14461] = "\xb8\x42", [14463] = "\xb8\x43",
++ [14464] = "\xb8\x44", [14467] = "\xca\xe8", [14468] = "\xb8\x45",
++ [14470] = "\xb8\x46", [14471] = "\xc1\xfd", [14476] = "\xc4\xc6",
++ [14477] = "\xb8\x47", [14478] = "\xf4\x39", [14479] = "\xd4\xd2",
++ [14480] = "\xb8\x48", [14481] = "\xb8\x49", [14482] = "\xb8\x4a",
++ [14486] = "\xb8\x4b", [14488] = "\xcb\xcf", [14489] = "\xb8\x4c",
++ [14491] = "\xd4\xd3", [14494] = "\xd4\xd8", [14497] = "\xb8\x4d",
++ [14498] = "\xb8\x4e", [14499] = "\xca\xaf", [14504] = "\xd4\xd7",
++ [14505] = "\xd4\xd1", [14506] = "\xd4\xd4", [14507] = "\xd4\xd6",
++ [14508] = "\xb8\x50", [14510] = "\xba\xa6", [14513] = "\xca\xc9",
++ [14514] = "\xb8\x51", [14516] = "\xb8\x4f", [14517] = "\xd4\xd9",
++ [14519] = "\xc3\xc5", [14520] = "\xb8\x52", [14522] = "\xb2\xf5",
++ [14524] = "\xbe\xed", [14525] = "\xb8\x53", [14526] = "\xb8\x54",
++ [14528] = "\xb8\x55", [14529] = "\xd4\xdb", [14530] = "\xb8\x56",
++ [14531] = "\xd4\xda", [14532] = "\xb8\x57", [14533] = "\xb9\xe8",
++ [14534] = "\xb8\x58", [14535] = "\xd4\xdc", [14536] = "\xd4\xde",
++ [14537] = "\xd4\xdd", [14538] = "\xb8\x59", [14540] = "\xd4\xe0",
++ [14541] = "\xb8\x5a", [14542] = "\xd4\xd5", [14543] = "\xd4\xe2",
++ [14545] = "\xb8\x5b", [14546] = "\xb8\x5c", [14548] = "\xd4\xe1",
++ [14549] = "\xd4\xdf", [14553] = "\xb8\x5d", [14555] = "\xbb\xce",
++ [14556] = "\xbf\xd1", [14558] = "\xc1\xd4", [14559] = "\xd4\xe3",
++ [14560] = "\xc0\xbc", [14561] = "\xb0\xed", [14562] = "\xc7\xe4",
++ [14563] = "\xb8\x5e", [14567] = "\xc4\xdb", [14569] = "\xd4\xe5",
++ [14570] = "\xd4\xe4", [14571] = "\xd4\xe6", [14572] = "\xd4\xe7",
++ [14573] = "\xd4\xe8", [14578] = "\xd4\xe9", [14581] = "\xb8\x5f",
++ [14582] = "\xb8\x60", [14585] = "\xca\xd1", [14586] = "\xd4\xea",
++ [14587] = "\xb8\x61", [14588] = "\xb8\x62", [14591] = "\xb2\xc6",
++ [14592] = "\xd4\xeb", [14594] = "\xb8\x63", [14595] = "\xb8\x64",
++ [14596] = "\xb8\x65", [14597] = "\xcd\xbc", [14598] = "\xb3\xb0",
++ [14600] = "\xd2\xc9", [14601] = "\xbd\xc8", [14602] = "\xc2\xbf",
++ [14603] = "\xd4\xec", [14604] = "\xcc\xeb", [14605] = "\xb8\x67",
++ [14609] = "\xb8\x68", [14610] = "\xcc\xb4", [14611] = "\xb8\x69",
++ [14612] = "\xb8\x6a", [14613] = "\xd4\xee", [14615] = "\xc2\xe7",
++ [14616] = "\xb8\x6b", [14617] = "\xc5\xb7", [14618] = "\xc2\xc0",
++ [14619] = "\xc9\xd7", [14620] = "\xd4\xef", [14621] = "\xd4\xf0",
++ [14622] = "\xb1\xfb", [14623] = "\xb8\x6c", [14624] = "\xb8\x6d",
++ [14625] = "\xbc\xba", [14626] = "\xd4\xf1", [14627] = "\xb8\x6e",
++ [14629] = "\xb8\x6f", [14630] = "\xb8\x70", [14631] = "\xb0\xd0",
++ [14632] = "\xd4\xf2", [14638] = "\xd4\xf3", [14639] = "\xb8\x71",
++ [14643] = "\xb8\x72", [14644] = "\xb1\xe2", [14646] = "\xb8\x73",
++ [14647] = "\xb4\xf1", [14648] = "\xc6\xe0", [14649] = "\xca\xf4",
++ [14654] = "\xd4\xf7", [14655] = "\xc1\xd5", [14656] = "\xd4\xf6",
++ [14657] = "\xb7\xc0", [14658] = "\xb8\x74", [14659] = "\xb8\x75",
++ [14660] = "\xcb\xdb", [14661] = "\xd4\xf5", [14663] = "\xc5\xe5",
++ [14664] = "\xd4\xf9", [14665] = "\xb8\x76", [14666] = "\xd4\xf8",
++ [14667] = "\xb8\x77", [14669] = "\xb8\x78", [14670] = "\xb8\x79",
++ [14671] = "\xb8\x7a", [14672] = "\xd4\xfb", [14673] = "\xb8\x7b",
++ [14674] = "\xd4\xfa", [14675] = "\xb8\x7c", [14677] = "\xb1\xfc",
++ [14679] = "\xd4\xfc", [14680] = "\xbe\xa9", [14681] = "\xd4\xfe",
++ [14682] = "\xc3\xa5", [14683] = "\xb8\x7d", [14684] = "\xd4\xfd",
++ [14685] = "\xb8\x7e", [14686] = "\xca\xb3", [14687] = "\xb9\x21",
++ [14690] = "\xb9\x22", [14691] = "\xbd\xf7", [14692] = "\xc5\xdb",
++ [14693] = "\xb9\x23", [14694] = "\xb9\x24", [14696] = "\xd5\xa1",
++ [14697] = "\xb9\x25", [14699] = "\xb9\x26", [14700] = "\xb9\x27",
++ [14701] = "\xb9\xa5", [14705] = "\xd5\xa2", [14706] = "\xc7\xa1",
++ [14707] = "\xc8\xde", [14708] = "\xcc\xd1", [14714] = "\xc7\xa5",
++ [14715] = "\xb9\x28", [14716] = "\xb9\x29", [14717] = "\xd5\xab",
++ [14718] = "\xb9\x2a", [14722] = "\xb9\x2b", [14723] = "\xb5\xb8",
++ [14725] = "\xb9\x2c", [14726] = "\xcd\xc5", [14727] = "\xb9\x2d",
++ [14729] = "\xcc\xaf", [14731] = "\xd6\xac", [14733] = "\xd5\xa3",
++ [14735] = "\xb9\x2e", [14739] = "\xd5\xa6", [14740] = "\xb9\x2f",
++ [14741] = "\xc2\xc5", [14743] = "\xb9\x30", [14744] = "\xcb\xb8",
++ [14748] = "\xc5\xca", [14749] = "\xb9\x31", [14750] = "\xb9\x32",
++ [14751] = "\xb9\x33", [14752] = "\xb9\x34", [14754] = "\xd5\xa7",
++ [14755] = "\xb9\x35", [14759] = "\xb9\x36", [14761] = "\xcb\xe5",
++ [14762] = "\xb9\x37", [14763] = "\xba\xca", [14764] = "\xb9\x38",
++ [14766] = "\xbe\xaa", [14769] = "\xb9\x39", [14771] = "\xb9\x3a",
++ [14772] = "\xb9\x3b", [14774] = "\xd5\xa8", [14776] = "\xb9\x3c",
++ [14777] = "\xbb\xd0", [14778] = "\xb9\x3d", [14779] = "\xbb\xcf",
++ [14781] = "\xb9\x3e", [14784] = "\xb0\xb9", [14785] = "\xb8\xc8",
++ [14786] = "\xb9\x3f", [14787] = "\xc0\xab", [14788] = "\xb0\xd1",
++ [14793] = "\xd5\xac", [14794] = "\xd5\xad", [14796] = "\xd5\xaa",
++ [14797] = "\xb9\x40", [14798] = "\xb9\x41", [14799] = "\xb9\x42",
++ [14803] = "\xb9\x43", [14804] = "\xb9\x44", [14805] = "\xb1\xb8",
++ [14806] = "\xb4\xaf", [14807] = "\xb9\x45", [14808] = "\xd5\xa9",
++ [14810] = "\xcc\xc5", [14811] = "\xc9\xb1", [14814] = "\xb9\x46",
++ [14815] = "\xb9\x47", [14817] = "\xb9\x48", [14818] = "\xb9\x49",
++ [14820] = "\xb9\x4a", [14822] = "\xb0\xa8", [14823] = "\xb9\x4b",
++ [14827] = "\xb0\xf9", [14831] = "\xbb\xd1", [14832] = "\xb9\x4c",
++ [14833] = "\xb0\xd2", [14835] = "\xb0\xa3", [14836] = "\xb9\x4d",
++ [14841] = "\xd5\xb2", [14844] = "\xb9\x4e", [14845] = "\xb9\x4f",
++ [14846] = "\xb9\x50", [14849] = "\xd5\xb0", [14850] = "\xb9\x51",
++ [14851] = "\xb9\x52", [14856] = "\xcc\xbc", [14858] = "\xd5\xb3",
++ [14860] = "\xd5\xb1", [14862] = "\xb9\x53", [14863] = "\xd5\xaf",
++ [14864] = "\xbf\xb1", [14867] = "\xb9\x54", [14868] = "\xb9\x55",
++ [14869] = "\xd5\xae", [14871] = "\xb9\x56", [14872] = "\xb9\x57",
++ [14873] = "\xca\xda", [14874] = "\xb9\x58", [14877] = "\xb9\x59",
++ [14879] = "\xb8\xe4", [14880] = "\xb9\x5a", [14885] = "\xd5\xb7",
++ [14886] = "\xd5\xb8", [14892] = "\xbe\xab", [14896] = "\xd5\xb4",
++ [14897] = "\xcf\xac", [14900] = "\xb9\x5b", [14901] = "\xb9\x5c",
++ [14902] = "\xc7\xcc", [14903] = "\xb9\x5d", [14904] = "\xb9\x5e",
++ [14905] = "\xd5\xb6", [14908] = "\xb9\x5f", [14912] = "\xb9\x60",
++ [14917] = "\xb9\x61", [14922] = "\xba\xa7", [14926] = "\xb9\x62",
++ [14930] = "\xd5\xb9", [14931] = "\xb9\x63", [14933] = "\xb9\x64",
++ [14934] = "\xc9\xd8", [14935] = "\xb9\x65", [14938] = "\xd5\xba",
++ [14940] = "\xd5\xb5", [14941] = "\xb9\x66", [14951] = "\xb9\x67",
++ [14954] = "\xb9\x68", [14955] = "\xb9\x69", [14958] = "\xb9\x6a",
++ [14959] = "\xcc\xbb", [14971] = "\xb9\x6b", [14976] = "\xb9\x6c",
++ [14978] = "\xc7\xde", [14979] = "\xb9\x6d", [14982] = "\xb9\x6e",
++ [14985] = "\xb9\x6f", [14986] = "\xd5\xbb", [14987] = "\xc9\xb2",
++ [14988] = "\xb9\x70", [14990] = "\xb9\x71", [14991] = "\xb9\x72",
++ [14992] = "\xb9\x73", [14994] = "\xb9\x74", [14999] = "\xb9\x75",
++ [15004] = "\xb9\x76", [15009] = "\xb9\x77", [15010] = "\xb9\x78",
++ [15011] = "\xb9\x79", [15013] = "\xb9\x7a", [15016] = "\xb9\x7b",
++ [15018] = "\xb9\x7c", [15019] = "\xb9\x7d", [15020] = "\xd5\xbc",
++ [15021] = "\xd5\xc0", [15022] = "\xd5\xbd", [15023] = "\xb9\x7e",
++ [15025] = "\xb2\xc7", [15026] = "\xd5\xbf", [15028] = "\xba\x21",
++ [15030] = "\xba\x22", [15032] = "\xba\x23", [15033] = "\xbc\xbb",
++ [15035] = "\xd5\xbe", [15036] = "\xb7\xf9", [15039] = "\xba\x24",
++ [15040] = "\xd5\xcc", [15046] = "\xd5\xc5", [15047] = "\xd5\xc2",
++ [15050] = "\xba\x25", [15052] = "\xba\x26", [15056] = "\xba\x27",
++ [15057] = "\xc3\xe4", [15059] = "\xd5\xc1", [15061] = "\xba\x28",
++ [15062] = "\xd5\xc3", [15065] = "\xd5\xc4", [15066] = "\xba\x29",
++ [15070] = "\xba\x2a", [15077] = "\xba\x2b", [15078] = "\xba\x2c",
++ [15082] = "\xd5\xc6", [15083] = "\xd5\xc7", [15085] = "\xba\x2d",
++ [15088] = "\xba\x2e", [15089] = "\xba\x2f", [15096] = "\xba\x30",
++ [15097] = "\xb4\xf2", [15099] = "\xd5\xc9", [15100] = "\xd5\xc8",
++ [15110] = "\xd5\xca", [15111] = "\xba\x31", [15113] = "\xba\x33",
++ [15115] = "\xba\x34", [15117] = "\xba\x35", [15121] = "\xba\x36",
++ [15122] = "\xbe\xee", [15125] = "\xba\x37", [15130] = "\xd5\xcd",
++ [15132] = "\xc4\xdc", [15133] = "\xba\x38", [15136] = "\xb1\xc5",
++ [15138] = "\xd5\xcb", [15140] = "\xba\x32", [15142] = "\xd5\xce",
++ [15144] = "\xba\x39", [15150] = "\xd5\xcf", [15152] = "\xd5\xd2",
++ [15153] = "\xba\x3a", [15155] = "\xd5\xd0", [15157] = "\xd5\xd1",
++ [15163] = "\xba\x3b", [15164] = "\xba\x3c", [15168] = "\xbb\xd2",
++ [15169] = "\xd5\xd3", [15170] = "\xba\x3d", [15172] = "\xb9\xa6",
++ [15173] = "\xd5\xd4", [15174] = "\xba\x3e", [15175] = "\xbb\xfa",
++ [15176] = "\xc2\xb8", [15178] = "\xd5\xd5", [15179] = "\xd5\xd6",
++ [15180] = "\xbb\xda", [15181] = "\xb9\xa7", [15182] = "\xba\x3f",
++ [15183] = "\xcc\xd2", [15187] = "\xb5\xa8", [15188] = "\xb8\xc9",
++ [15189] = "\xd5\xd7", [15190] = "\xb3\xd8", [15192] = "\xba\x40",
++ [15193] = "\xd5\xd8", [15195] = "\xc2\xb9", [15198] = "\xba\x41",
++ [15199] = "\xba\x42", [15200] = "\xd5\xd9", [15201] = "\xd6\xa3",
++ [15203] = "\xd5\xda", [15205] = "\xd5\xdb", [15208] = "\xd5\xdc",
++ [15210] = "\xd5\xde", [15212] = "\xba\x43", [15213] = "\xba\x44",
++ [15214] = "\xba\x45", [15215] = "\xba\x46", [15216] = "\xd5\xdf",
++ [15217] = "\xba\x47", [15219] = "\xd5\xe0", [15220] = "\xba\x48",
++ [15221] = "\xc2\xf0", [15222] = "\xba\x49", [15223] = "\xb1\xa7",
++ [15224] = "\xbc\xe9", [15225] = "\xb0\xc2", [15226] = "\xba\x4a",
++ [15227] = "\xc1\xd7", [15228] = "\xb4\xb0", [15229] = "\xbc\xb5",
++ [15230] = "\xba\x4b", [15231] = "\xb9\xa8", [15232] = "\xba\x4c",
++ [15233] = "\xba\x4d", [15235] = "\xba\x4e", [15236] = "\xba\x4f",
++ [15237] = "\xc5\xe6", [15238] = "\xba\x50", [15239] = "\xbd\xa1",
++ [15240] = "\xb4\xb1", [15241] = "\xc3\xe8", [15242] = "\xc4\xea",
++ [15243] = "\xb0\xb8", [15244] = "\xb5\xb9", [15245] = "\xca\xf5",
++ [15247] = "\xbc\xc2", [15250] = "\xb5\xd2", [15251] = "\xc0\xeb",
++ [15252] = "\xbc\xbc", [15253] = "\xcd\xa8", [15254] = "\xd5\xe1",
++ [15256] = "\xba\x51", [15257] = "\xba\x52", [15260] = "\xba\x53",
++ [15261] = "\xba\x54", [15262] = "\xb5\xdc", [15263] = "\xba\x55",
++ [15264] = "\xba\xcb", [15265] = "\xba\x56", [15266] = "\xba\x57",
++ [15267] = "\xb3\xb2", [15268] = "\xb1\xe3", [15269] = "\xbe\xac",
++ [15270] = "\xb2\xc8", [15271] = "\xba\x58", [15272] = "\xd5\xe2",
++ [15273] = "\xcd\xc6", [15274] = "\xba\x59", [15276] = "\xba\x5a",
++ [15279] = "\xbd\xc9", [15280] = "\xba\x5b", [15281] = "\xba\x5c",
++ [15282] = "\xbc\xe4", [15283] = "\xd5\xe3", [15284] = "\xb4\xf3",
++ [15285] = "\xc6\xd2", [15286] = "\xcc\xa9", [15287] = "\xd5\xe4",
++ [15289] = "\xd5\xe5", [15292] = "\xc9\xd9", [15293] = "\xba\x5d",
++ [15295] = "\xba\x5e", [15296] = "\xd5\xe7", [15298] = "\xb4\xa8",
++ [15299] = "\xb6\xf7", [15300] = "\xd5\xe6", [15302] = "\xba\x5f",
++ [15303] = "\xba\x60", [15304] = "\xba\x61", [15305] = "\xba\x62",
++ [15306] = "\xba\x63", [15307] = "\xb4\xb2", [15309] = "\xbf\xb2",
++ [15310] = "\xd5\xeb", [15311] = "\xbb\xa1", [15312] = "\xba\x64",
++ [15313] = "\xb2\xc9", [15314] = "\xd5\xea", [15316] = "\xd5\xe8",
++ [15317] = "\xd5\xec", [15318] = "\xd5\xe9", [15319] = "\xc7\xab",
++ [15320] = "\xdc\xcd", [15321] = "\xbf\xb3", [15323] = "\xd5\xed",
++ [15324] = "\xf4\x3a", [15326] = "\xce\xc0", [15327] = "\xba\x65",
++ [15328] = "\xd5\xee", [15329] = "\xba\x66", [15331] = "\xd5\xf0",
++ [15332] = "\xba\x67", [15333] = "\xc3\xfe", [15334] = "\xd5\xef",
++ [15336] = "\xc0\xa3", [15338] = "\xbb\xfb", [15341] = "\xba\x68",
++ [15342] = "\xc2\xd0", [15343] = "\xbc\xf7", [15345] = "\xc9\xf5",
++ [15346] = "\xc0\xec", [15348] = "\xbc\xcd", [15349] = "\xd5\xf1",
++ [15350] = "\xbe\xad", [15351] = "\xd5\xf2", [15352] = "\xd5\xf3",
++ [15353] = "\xb0\xd3", [15354] = "\xc2\xba", [15355] = "\xbf\xd2",
++ [15356] = "\xba\x69", [15357] = "\xd5\xf4", [15358] = "\xc6\xb3",
++ [15359] = "\xbe\xae", [15361] = "\xbe\xaf", [15363] = "\xd5\xf5",
++ [15366] = "\xc0\xed", [15367] = "\xba\x6a", [15370] = "\xbe\xb0",
++ [15374] = "\xba\x6b", [15375] = "\xba\x6c", [15376] = "\xd5\xf6",
++ [15378] = "\xd5\xf7", [15379] = "\xba\x6d", [15380] = "\xcc\xe0",
++ [15382] = "\xba\x6e", [15384] = "\xd5\xf8", [15385] = "\xba\x6f",
++ [15387] = "\xba\x70", [15388] = "\xba\x71", [15389] = "\xb6\xc6",
++ [15390] = "\xba\x72", [15392] = "\xba\x73", [15393] = "\xbd\xa2",
++ [15394] = "\xba\x74", [15397] = "\xba\x75", [15398] = "\xba\x76",
++ [15400] = "\xd5\xf9", [15401] = "\xd5\xfa", [15402] = "\xbc\xdc",
++ [15403] = "\xbf\xac", [15404] = "\xc6\xf4", [15405] = "\xbf\xd4",
++ [15406] = "\xc8\xf8", [15407] = "\xc7\xa2", [15408] = "\xb6\xc9",
++ [15409] = "\xd5\xfb", [15413] = "\xb5\xef", [15414] = "\xd5\xfc",
++ [15416] = "\xb6\xfe", [15418] = "\xc6\xcf", [15419] = "\xb2\xb0",
++ [15421] = "\xbb\xd3", [15422] = "\xd5\xfd", [15423] = "\xd6\xa2",
++ [15424] = "\xd6\xa1", [15425] = "\xb6\xfd", [15427] = "\xd5\xfe",
++ [15429] = "\xc5\xb8", [15433] = "\xba\x77", [15434] = "\xba\x78",
++ [15436] = "\xba\x79", [15438] = "\xc2\xb0", [15440] = "\xc5\xcb",
++ [15441] = "\xbc\xc8", [15442] = "\xba\x7a", [15443] = "\xba\x7b",
++ [15444] = "\xc1\xd8", [15445] = "\xcd\xfa", [15447] = "\xba\x7c",
++ [15448] = "\xba\x7d", [15449] = "\xba\x7e", [15452] = "\xd6\xa4",
++ [15453] = "\xbb\x21", [15454] = "\xd6\xa5", [15455] = "\xc6\xd6",
++ [15456] = "\xbb\x22", [15457] = "\xbb\xb3", [15460] = "\xbb\x23",
++ [15461] = "\xbb\x24", [15462] = "\xd6\xa7", [15465] = "\xd6\xa8",
++ [15466] = "\xbb\x25", [15467] = "\xbb\x26", [15468] = "\xbb\x27",
++ [15469] = "\xbb\x28", [15479] = "\xbb\x29", [15480] = "\xbb\x2a",
++ [15482] = "\xbb\x2b", [15484] = "\xd6\xa9", [15487] = "\xbb\x2c",
++ [15488] = "\xb4\xf4", [15489] = "\xd6\xaa", [15490] = "\xbb\x2d",
++ [15492] = "\xd6\xab", [15501] = "\xbb\x2e", [15503] = "\xbb\x2f",
++ [15504] = "\xbb\x30", [15505] = "\xb2\xac", [15506] = "\xbb\x31",
++ [15507] = "\xbb\x32", [15510] = "\xbb\x33", [15512] = "\xc1\xbb",
++ [15513] = "\xb4\xe4", [15514] = "\xbb\x34", [15515] = "\xd6\xad",
++ [15516] = "\xcc\xa8", [15521] = "\xc2\xd2", [15522] = "\xbb\x35",
++ [15523] = "\xb3\xd9", [15524] = "\xbb\x36", [15525] = "\xbb\x37",
++ [15526] = "\xd6\xaf", [15527] = "\xd6\xb1", [15528] = "\xb4\xdf",
++ [15530] = "\xbb\x38", [15531] = "\xd6\xae", [15532] = "\xd6\xb0",
++ [15534] = "\xd6\xb3", [15541] = "\xd6\xb2", [15543] = "\xd6\xb4",
++ [15545] = "\xbb\x39", [15547] = "\xbb\x3a", [15554] = "\xbb\x3b",
++ [15559] = "\xbb\x3d", [15561] = "\xd6\xb5", [15565] = "\xbb\x3c",
++ [15568] = "\xc6\xbd", [15569] = "\xb6\xae", [15576] = "\xb2\xe5",
++ [15577] = "\xd6\xb6", [15578] = "\xd6\xbb", [15581] = "\xd6\xb9",
++ [15582] = "\xbb\x3e", [15583] = "\xca\xf7", [15584] = "\xca\xf6",
++ [15585] = "\xbb\x3f", [15586] = "\xbb\x40", [15588] = "\xbb\x41",
++ [15589] = "\xf4\x3b", [15590] = "\xc5\xe7", [15594] = "\xd6\xb8",
++ [15595] = "\xbd\xd4", [15597] = "\xd6\xb7", [15601] = "\xbb\x42",
++ [15606] = "\xbb\x43", [15607] = "\xbf\xf2", [15611] = "\xd6\xbc",
++ [15613] = "\xbb\x44", [15614] = "\xba\xea", [15617] = "\xd6\xc2",
++ [15618] = "\xbb\x45", [15620] = "\xd6\xc3", [15621] = "\xd6\xbd",
++ [15622] = "\xb3\xb3", [15623] = "\xd6\xbe", [15624] = "\xd6\xc7",
++ [15625] = "\xd6\xc6", [15626] = "\xd6\xc5", [15627] = "\xd6\xc1",
++ [15631] = "\xd6\xc0", [15634] = "\xd6\xc4", [15635] = "\xbb\x47",
++ [15636] = "\xbb\x48", [15638] = "\xbb\x49", [15639] = "\xbb\x4a",
++ [15641] = "\xca\xf8", [15643] = "\xbb\x46", [15649] = "\xbb\x4b",
++ [15652] = "\xbb\x4c", [15657] = "\xbb\x4d", [15661] = "\xbb\x4e",
++ [15663] = "\xbb\x4f", [15666] = "\xbb\x50", [15667] = "\xbb\x51",
++ [15670] = "\xbb\x52", [15672] = "\xbb\x53", [15674] = "\xbb\x57",
++ [15675] = "\xd6\xcb", [15676] = "\xd6\xc8", [15678] = "\xd6\xca",
++ [15680] = "\xcd\xf2", [15681] = "\xbb\x55", [15682] = "\xd6\xc9",
++ [15683] = "\xf4\x3c", [15685] = "\xbb\x54", [15689] = "\xbb\x56",
++ [15692] = "\xd6\xbf", [15695] = "\xbb\x58", [15696] = "\xbb\x59",
++ [15697] = "\xbb\x5a", [15698] = "\xbb\x5b", [15700] = "\xbb\x5c",
++ [15705] = "\xbf\xf3", [15706] = "\xbb\x5d", [15708] = "\xd6\xcc",
++ [15709] = "\xbb\x5e", [15711] = "\xba\xb7", [15712] = "\xbb\x5f",
++ [15715] = "\xd6\xcd", [15718] = "\xd6\xce", [15721] = "\xbb\x60",
++ [15722] = "\xbb\x61", [15726] = "\xbb\x62", [15727] = "\xbb\x63",
++ [15729] = "\xbb\x64", [15730] = "\xd6\xd1", [15731] = "\xbb\x65",
++ [15732] = "\xd6\xd0", [15735] = "\xd6\xcf", [15736] = "\xbb\x66",
++ [15738] = "\xbb\x67", [15739] = "\xc5\xe8", [15740] = "\xd6\xba",
++ [15744] = "\xd6\xd7", [15746] = "\xbb\x68", [15747] = "\xbb\x69",
++ [15748] = "\xbb\x6a", [15749] = "\xbb\x6b", [15753] = "\xbb\x6c",
++ [15755] = "\xbb\x6d", [15757] = "\xd6\xd3", [15759] = "\xbb\x6e",
++ [15760] = "\xbb\x6f", [15762] = "\xd6\xd2", [15767] = "\xbb\x70",
++ [15771] = "\xbb\x71", [15772] = "\xd6\xd4", [15774] = "\xd6\xd5",
++ [15776] = "\xbb\x72", [15778] = "\xe6\x74", [15780] = "\xbb\x73",
++ [15783] = "\xd6\xd8", [15784] = "\xbb\x74", [15785] = "\xbb\x75",
++ [15786] = "\xce\xe6", [15788] = "\xd6\xd9", [15789] = "\xd6\xd6",
++ [15795] = "\xbb\x76", [15799] = "\xbb\x77", [15801] = "\xd6\xda",
++ [15803] = "\xbb\x78", [15804] = "\xb4\xe0", [15805] = "\xd6\xdb",
++ [15806] = "\xbb\x7a", [15808] = "\xbb\x79", [15810] = "\xd6\xdd",
++ [15811] = "\xd6\xdc", [15814] = "\xd6\xde", [15816] = "\xbb\x7b",
++ [15817] = "\xbb\x7c", [15819] = "\xd6\xdf", [15821] = "\xc0\xee",
++ [15822] = "\xbd\xa3", [15824] = "\xbb\x7d", [15825] = "\xbd\xe4",
++ [15827] = "\xc1\xe3", [15828] = "\xbb\x7e", [15829] = "\xb9\xa9",
++ [15830] = "\xba\xb8", [15831] = "\xb9\xaa", [15832] = "\xb5\xf0",
++ [15833] = "\xbc\x21", [15835] = "\xd6\xe0", [15838] = "\xba\xb9",
++ [15841] = "\xb8\xca", [15842] = "\xd6\xe1", [15843] = "\xcc\xa6",
++ [15844] = "\xc7\xc3", [15845] = "\xd6\xe2", [15847] = "\xb9\xab",
++ [15848] = "\xbc\x22", [15849] = "\xbc\x23", [15851] = "\xb4\xac",
++ [15853] = "\xc3\xa7", [15854] = "\xb6\xd2", [15856] = "\xbc\x24",
++ [15858] = "\xbb\xd4", [15859] = "\xc9\xdb", [15862] = "\xc8\xc1",
++ [15863] = "\xbc\x25", [15867] = "\xd6\xe3", [15868] = "\xb4\xf5",
++ [15869] = "\xbc\x26", [15873] = "\xd6\xe6", [15874] = "\xbc\x27",
++ [15876] = "\xbc\x28", [15877] = "\xbc\x29", [15878] = "\xc4\xa1",
++ [15880] = "\xbc\x2a", [15881] = "\xd6\xe5", [15882] = "\xd6\xe4",
++ [15883] = "\xd6\xe7", [15885] = "\xc4\xeb", [15887] = "\xbc\x2b",
++ [15888] = "\xbc\x2c", [15893] = "\xbf\xe3", [15896] = "\xbc\x2e",
++ [15899] = "\xbb\xd5", [15901] = "\xc0\xca", [15902] = "\xbc\x2d",
++ [15903] = "\xc2\xd3", [15904] = "\xb5\xa2", [15906] = "\xbc\x2f",
++ [15907] = "\xc4\xa2", [15909] = "\xbc\x30", [15910] = "\xd6\xe8",
++ [15911] = "\xd6\xe9", [15912] = "\xbe\xef", [15917] = "\xcb\xb9",
++ [15918] = "\xbc\x31", [15920] = "\xd6\xec", [15923] = "\xd6\xeb",
++ [15924] = "\xd6\xea", [15925] = "\xc9\xfd", [15927] = "\xd6\xf3",
++ [15929] = "\xbc\x34", [15931] = "\xbc\x32", [15932] = "\xcb\xda",
++ [15934] = "\xd6\xed", [15936] = "\xbc\x33", [15937] = "\xbc\x35",
++ [15940] = "\xd6\xef", [15941] = "\xcb\xeb", [15942] = "\xbc\x36",
++ [15943] = "\xd6\xee", [15944] = "\xbc\x37", [15947] = "\xbc\x38",
++ [15948] = "\xbc\x39", [15950] = "\xbc\x3a", [15951] = "\xd6\xf0",
++ [15953] = "\xc8\xa8", [15954] = "\xd6\xf1", [15955] = "\xca\xbe",
++ [15956] = "\xd6\xf2", [15960] = "\xbc\x3b", [15962] = "\xbc\x3c",
++ [15963] = "\xbc\x3d", [15964] = "\xbc\x3e", [15965] = "\xbc\x3f",
++ [15966] = "\xbc\x40", [15968] = "\xbc\x41", [15970] = "\xb4\xb3",
++ [15971] = "\xca\xbf", [15972] = "\xc7\xaf", [15973] = "\xd6\xf4",
++ [15974] = "\xd6\xf5", [15976] = "\xb9\xac", [15977] = "\xb4\xb4",
++ [15978] = "\xd6\xf6", [15979] = "\xb8\xb8", [15980] = "\xcd\xc4",
++ [15981] = "\xcd\xa9", [15982] = "\xb4\xf6", [15983] = "\xd6\xf8",
++ [15984] = "\xbc\x42", [15985] = "\xc4\xa3", [15987] = "\xb9\xad",
++ [15988] = "\xbe\xb1", [15991] = "\xc8\xdf", [15994] = "\xbe\xb2",
++ [15995] = "\xbc\x43", [15998] = "\xbc\x44", [15999] = "\xbd\xf8",
++ [16005] = "\xc4\xec", [16006] = "\xca\xf9", [16007] = "\xc5\xb9",
++ [16010] = "\xb9\xae", [16012] = "\xc9\xdc", [16016] = "\xd6\xf9",
++ [16018] = "\xbc\x45", [16020] = "\xbc\x46", [16021] = "\xbc\x47",
++ [16022] = "\xc5\xd9", [16023] = "\xba\xc2", [16024] = "\xbc\x48",
++ [16026] = "\xbc\x49", [16027] = "\xb8\xcb", [16028] = "\xbc\x4a",
++ [16029] = "\xc4\xed", [16033] = "\xbc\x4b", [16035] = "\xbc\x4c",
++ [16037] = "\xb0\xc3", [16038] = "\xbd\xee", [16039] = "\xb9\xaf",
++ [16040] = "\xcd\xc7", [16045] = "\xbc\x4d", [16046] = "\xbc\x4e",
++ [16047] = "\xbc\x4f", [16049] = "\xd6\xfa", [16050] = "\xd6\xfb",
++ [16051] = "\xc7\xd1", [16054] = "\xbc\x50", [16056] = "\xd6\xfc",
++ [16057] = "\xce\xf7", [16058] = "\xcf\xad", [16059] = "\xbc\x52",
++ [16060] = "\xbc\x51", [16062] = "\xbc\x53", [16063] = "\xd6\xfe",
++ [16064] = "\xd6\xfd", [16065] = "\xbc\x54", [16066] = "\xbc\x55",
++ [16067] = "\xb3\xc7", [16068] = "\xbc\x56", [16069] = "\xbc\x57",
++ [16070] = "\xd7\xa1", [16074] = "\xd7\xa4", [16075] = "\xd7\xa5",
++ [16076] = "\xbc\x58", [16077] = "\xd7\xa3", [16078] = "\xbc\x59",
++ [16079] = "\xc9\xc0", [16080] = "\xbe\xb3", [16081] = "\xd7\xa7",
++ [16082] = "\xd7\xa6", [16083] = "\xd7\xa2", [16085] = "\xbc\x5a",
++ [16088] = "\xd7\xa8", [16089] = "\xd7\xa9", [16091] = "\xbc\x5b",
++ [16092] = "\xd7\xaa", [16096] = "\xd7\xad", [16097] = "\xd7\xab",
++ [16099] = "\xd7\xac", [16100] = "\xd7\xae", [16102] = "\xb1\xe4",
++ [16103] = "\xc4\xee", [16104] = "\xd7\xaf", [16106] = "\xb7\xfa",
++ [16107] = "\xb2\xf6", [16108] = "\xc7\xb6", [16110] = "\xd7\xb0",
++ [16111] = "\xc6\xfb", [16113] = "\xca\xdb", [16114] = "\xbc\x5c",
++ [16115] = "\xd7\xb1", [16116] = "\xcf\xae", [16118] = "\xbc\x5d",
++ [16119] = "\xbc\x5e", [16120] = "\xbc\x5f", [16121] = "\xd7\xb2",
++ [16122] = "\xca\xc0", [16123] = "\xd7\xb5", [16124] = "\xd0\xa1",
++ [16125] = "\xd0\xb1", [16126] = "\xbc\x60", [16127] = "\xbc\xb0",
++ [16128] = "\xc6\xf5", [16129] = "\xd7\xb6", [16131] = "\xb5\xdd",
++ [16132] = "\xc4\xa4", [16133] = "\xb0\xfa", [16134] = "\xd7\xb7",
++ [16135] = "\xca\xa6", [16136] = "\xb9\xb0", [16137] = "\xbc\x61",
++ [16139] = "\xc3\xd0", [16140] = "\xbc\x62", [16141] = "\xbc\x63",
++ [16143] = "\xc4\xef", [16145] = "\xbc\x64", [16146] = "\xbc\x65",
++ [16147] = "\xbc\x66", [16148] = "\xbc\x67", [16149] = "\xcc\xef",
++ [16150] = "\xb8\xb9", [16151] = "\xb8\xcc", [16152] = "\xbc\x68",
++ [16153] = "\xd7\xb8", [16155] = "\xbc\x69", [16156] = "\xbc\x6a",
++ [16157] = "\xd7\xb9", [16158] = "\xbc\x6b", [16159] = "\xd7\xbf",
++ [16160] = "\xbc\x6c", [16161] = "\xbc\xe5", [16164] = "\xbc\x6d",
++ [16165] = "\xc4\xa5", [16166] = "\xbc\x6e", [16167] = "\xb6\xaf",
++ [16168] = "\xd7\xba", [16171] = "\xbc\x6f", [16172] = "\xc9\xab",
++ [16173] = "\xbc\x70", [16174] = "\xc3\xc6", [16175] = "\xbc\x71",
++ [16176] = "\xbc\x72", [16177] = "\xd7\xbb", [16180] = "\xbc\x73",
++ [16181] = "\xbc\x74", [16183] = "\xbc\x75", [16184] = "\xd7\xbc",
++ [16186] = "\xb6\xb0", [16188] = "\xd7\xbd", [16189] = "\xbc\x76",
++ [16190] = "\xd7\xbe", [16192] = "\xbc\x77", [16193] = "\xd7\xc0",
++ [16195] = "\xc5\xf6", [16196] = "\xbc\x78", [16198] = "\xd7\xc1",
++ [16199] = "\xd7\xc2", [16200] = "\xbc\x79", [16201] = "\xd7\xc3",
++ [16203] = "\xbc\x7a", [16204] = "\xd7\xb4", [16205] = "\xd7\xb3",
++ [16208] = "\xbc\x7b", [16209] = "\xd7\xc4", [16210] = "\xb7\xc1",
++ [16211] = "\xbc\x7c", [16212] = "\xbc\x7d", [16214] = "\xc9\xa7",
++ [16215] = "\xbc\x7e", [16217] = "\xba\xcc", [16218] = "\xc9\xb7",
++ [16219] = "\xc4\xa6", [16220] = "\xc9\xcb", [16221] = "\xd7\xc5",
++ [16223] = "\xbd\x21", [16224] = "\xbe\xb4", [16225] = "\xb1\xc6",
++ [16226] = "\xbd\x22", [16227] = "\xd7\xc6", [16228] = "\xbd\x23",
++ [16229] = "\xbd\x24", [16231] = "\xd7\xc7", [16232] = "\xbd\x25",
++ [16233] = "\xcc\xf2", [16234] = "\xbd\x26", [16236] = "\xc8\xe0",
++ [16237] = "\xbd\x27", [16238] = "\xbd\x28", [16239] = "\xd7\xca",
++ [16240] = "\xb1\xfd", [16241] = "\xc0\xac", [16242] = "\xd7\xc9",
++ [16243] = "\xd7\xc8", [16244] = "\xb7\xc2", [16245] = "\xc2\xd4",
++ [16247] = "\xd7\xce", [16248] = "\xd7\xcc", [16249] = "\xbd\x29",
++ [16250] = "\xd7\xcb", [16251] = "\xce\xa7", [16252] = "\xb8\xe5",
++ [16253] = "\xbd\x2a", [16255] = "\xbd\x2b", [16256] = "\xbd\xf9",
++ [16257] = "\xd7\xcd", [16258] = "\xc5\xcc", [16259] = "\xbd\xbe",
++ [16262] = "\xbd\x2c", [16263] = "\xc6\xc0", [16264] = "\xd7\xd1",
++ [16265] = "\xd7\xd0", [16268] = "\xbd\x2d", [16269] = "\xbd\x2e",
++ [16270] = "\xd7\xcf", [16272] = "\xd7\xd2", [16273] = "\xb8\xe6",
++ [16274] = "\xbd\x2f", [16276] = "\xbd\x32", [16279] = "\xbd\x30",
++ [16280] = "\xd7\xd3", [16281] = "\xc9\xfc", [16282] = "\xbd\xdb",
++ [16283] = "\xbd\x31", [16284] = "\xbd\x33", [16285] = "\xd7\xd4",
++ [16286] = "\xc8\xf9", [16287] = "\xbd\x34", [16288] = "\xbd\x35",
++ [16289] = "\xbd\x36", [16291] = "\xc6\xc1", [16292] = "\xc4\xa7",
++ [16295] = "\xf4\x3e", [16296] = "\xbd\x37", [16297] = "\xc5\xb0",
++ [16300] = "\xd7\xd5", [16301] = "\xb5\xab", [16307] = "\xbf\xb4",
++ [16308] = "\xbd\x38", [16309] = "\xc9\xac", [16311] = "\xbd\x39",
++ [16312] = "\xbd\x3a", [16313] = "\xbd\x3b", [16315] = "\xbd\x3c",
++ [16316] = "\xb4\xf7", [16317] = "\xc7\xa6", [16320] = "\xbd\x3d",
++ [16321] = "\xbd\x3e", [16322] = "\xbd\x3f", [16323] = "\xbd\x40",
++ [16324] = "\xbd\x41", [16326] = "\xd7\xd6", [16327] = "\xbb\xd6",
++ [16328] = "\xcb\xba", [16329] = "\xcb\xbb", [16332] = "\xb1\xfe",
++ [16333] = "\xd7\xdb", [16334] = "\xbd\x42", [16336] = "\xc3\xe9",
++ [16337] = "\xbd\x43", [16338] = "\xbd\x44", [16340] = "\xd7\xd8",
++ [16344] = "\xbd\x45", [16345] = "\xbd\x46", [16346] = "\xbd\x47",
++ [16347] = "\xb2\xf7", [16348] = "\xbd\x48", [16349] = "\xbd\x49",
++ [16350] = "\xbd\x4a", [16351] = "\xbd\x4b", [16352] = "\xd8\xad",
++ [16353] = "\xd7\xda", [16354] = "\xbd\x4c", [16355] = "\xbd\x4d",
++ [16357] = "\xc7\xb0", [16358] = "\xbd\x4e", [16360] = "\xd7\xd9",
++ [16362] = "\xbd\x4f", [16363] = "\xd7\xd7", [16364] = "\xbd\x50",
++ [16365] = "\xb9\xfa", [16367] = "\xd7\xdd", [16375] = "\xbd\x51",
++ [16378] = "\xbd\x52", [16381] = "\xbd\x53", [16382] = "\xd7\xe3",
++ [16383] = "\xd7\xe9", [16384] = "\xd7\xe1", [16386] = "\xc5\xdc",
++ [16387] = "\xbd\x54", [16388] = "\xbd\x55", [16389] = "\xd7\xe6",
++ [16390] = "\xc9\xdd", [16391] = "\xbd\x56", [16392] = "\xbd\x57",
++ [16393] = "\xd7\xe0", [16394] = "\xbd\x58", [16395] = "\xd7\xe5",
++ [16396] = "\xce\xe7", [16397] = "\xbb\xd7", [16399] = "\xbd\x59",
++ [16400] = "\xc2\xd5", [16401] = "\xd7\xde", [16404] = "\xbd\x5a",
++ [16405] = "\xb5\xde", [16406] = "\xd7\xe8", [16407] = "\xc0\xad",
++ [16408] = "\xb1\xe5", [16409] = "\xd7\xe2", [16410] = "\xb2\xf8",
++ [16411] = "\xd7\xe7", [16413] = "\xbd\x5b", [16415] = "\xb6\xb1",
++ [16417] = "\xd7\xe4", [16419] = "\xbd\x5c", [16421] = "\xbd\x5d",
++ [16426] = "\xd7\xea", [16432] = "\xbd\x5e", [16433] = "\xd7\xec",
++ [16434] = "\xd7\xf6", [16435] = "\xd7\xf4", [16438] = "\xd7\xf1",
++ [16439] = "\xbd\x5f", [16440] = "\xbd\x60", [16441] = "\xbd\x61",
++ [16442] = "\xd7\xf0", [16443] = "\xce\xf8", [16444] = "\xbd\x62",
++ [16445] = "\xd7\xf2", [16448] = "\xb6\xb2", [16449] = "\xbd\x63",
++ [16450] = "\xb9\xb1", [16452] = "\xbd\x64", [16453] = "\xbd\xfa",
++ [16454] = "\xbd\x65", [16455] = "\xbd\x66", [16457] = "\xd7\xf9",
++ [16458] = "\xd7\xeb", [16461] = "\xbd\x67", [16463] = "\xd7\xef",
++ [16464] = "\xd7\xdf", [16465] = "\xbd\x68", [16466] = "\xb2\xfa",
++ [16467] = "\xd7\xf3", [16468] = "\xd7\xf5", [16469] = "\xc3\xd1",
++ [16471] = "\xbd\x69", [16472] = "\xba\xa8", [16473] = "\xb2\xb8",
++ [16474] = "\xd7\xed", [16475] = "\xd7\xf8", [16476] = "\xd7\xf7",
++ [16477] = "\xb6\xb3", [16479] = "\xc2\xa9", [16480] = "\xb3\xe6",
++ [16481] = "\xbd\x6a", [16485] = "\xb7\xc3", [16487] = "\xd7\xee",
++ [16494] = "\xbd\x6b", [16495] = "\xbd\x6c", [16497] = "\xd7\xfa",
++ [16498] = "\xbd\x6d", [16499] = "\xd7\xfd", [16500] = "\xd8\xa1",
++ [16501] = "\xf4\x3f", [16502] = "\xbd\x6e", [16504] = "\xbd\x6f",
++ [16505] = "\xbc\xbd", [16506] = "\xbd\x70", [16507] = "\xd8\xa7",
++ [16508] = "\xc4\xf0", [16509] = "\xd7\xfb", [16510] = "\xbd\x71",
++ [16513] = "\xbd\x72", [16514] = "\xd8\xa5", [16515] = "\xbd\x73",
++ [16516] = "\xb2\xf9", [16517] = "\xbd\x74", [16518] = "\xd8\xa3",
++ [16519] = "\xd8\xa4", [16520] = "\xbd\x75", [16522] = "\xd7\xfe",
++ [16523] = "\xd8\xa2", [16525] = "\xbd\x76", [16526] = "\xbd\x77",
++ [16527] = "\xb8\xe7", [16528] = "\xcd\xaa", [16530] = "\xbd\x78",
++ [16531] = "\xb4\xb5", [16532] = "\xbd\x79", [16533] = "\xbd\x7a",
++ [16534] = "\xb1\xd9", [16535] = "\xd8\xa6", [16536] = "\xbd\x7b",
++ [16537] = "\xc7\xba", [16538] = "\xb0\xad", [16544] = "\xbd\x7c",
++ [16545] = "\xbd\x7d", [16546] = "\xc8\xe1", [16547] = "\xd7\xdc",
++ [16548] = "\xd8\xac", [16549] = "\xd8\xb0", [16550] = "\xcc\xe5",
++ [16551] = "\xbd\x7e", [16552] = "\xd8\xa9", [16555] = "\xbe\x21",
++ [16556] = "\xc5\xe9", [16557] = "\xd8\xae", [16558] = "\xbe\x22",
++ [16562] = "\xbe\x23", [16564] = "\xbe\x24", [16565] = "\xbe\xf0",
++ [16566] = "\xd8\xaf", [16567] = "\xc6\xd7", [16568] = "\xbe\x25",
++ [16569] = "\xbe\x26", [16570] = "\xbe\x27", [16571] = "\xbe\x28",
++ [16574] = "\xbe\x29", [16575] = "\xbe\x2a", [16577] = "\xcf\xc7",
++ [16579] = "\xd8\xab", [16580] = "\xbe\x2b", [16581] = "\xbe\x2c",
++ [16584] = "\xd8\xb1", [16585] = "\xbe\x2d", [16586] = "\xb9\xfb",
++ [16587] = "\xbe\x2e", [16588] = "\xc0\xcb", [16589] = "\xbe\x2f",
++ [16590] = "\xbe\x30", [16591] = "\xb0\xd4", [16592] = "\xd8\xaa",
++ [16593] = "\xd8\xa8", [16594] = "\xbe\x31", [16595] = "\xc1\xda",
++ [16597] = "\xbe\x32", [16599] = "\xd7\xfc", [16600] = "\xbb\xb4",
++ [16608] = "\xc2\xc6", [16609] = "\xd8\xbd", [16610] = "\xbe\x33",
++ [16611] = "\xc1\xdb", [16612] = "\xd8\xb8", [16613] = "\xbe\x34",
++ [16614] = "\xd8\xb5", [16615] = "\xd8\xb6", [16616] = "\xbe\x35",
++ [16617] = "\xbc\xe6", [16618] = "\xd8\xb9", [16619] = "\xd8\xbc",
++ [16620] = "\xbe\x36", [16621] = "\xbe\x37", [16624] = "\xd8\xb7",
++ [16625] = "\xbd\xa5", [16626] = "\xbe\x38", [16627] = "\xd8\xba",
++ [16630] = "\xd8\xb4", [16631] = "\xbe\x39", [16632] = "\xcc\xfc",
++ [16633] = "\xcc\xfb", [16634] = "\xbe\x3a", [16636] = "\xbe\x3b",
++ [16637] = "\xd8\xbe", [16638] = "\xd8\xbf", [16639] = "\xb0\xd5",
++ [16640] = "\xbe\x3c", [16641] = "\xbe\x3d", [16642] = "\xbe\x3e",
++ [16643] = "\xbe\x3f", [16644] = "\xbe\x40", [16645] = "\xd8\xb3",
++ [16646] = "\xbe\x41", [16647] = "\xbe\x42", [16649] = "\xbe\x43",
++ [16650] = "\xb6\xf2", [16651] = "\xb0\xa6", [16652] = "\xbe\x44",
++ [16654] = "\xbe\x45", [16655] = "\xb4\xb6", [16656] = "\xf4\x40",
++ [16657] = "\xd8\xbb", [16658] = "\xbe\x46", [16663] = "\xd8\xc3",
++ [16664] = "\xd8\xc2", [16666] = "\xbe\x47", [16667] = "\xbe\x48",
++ [16668] = "\xd8\xc7", [16672] = "\xbe\x49", [16673] = "\xbe\x4a",
++ [16676] = "\xd8\xc8", [16677] = "\xbe\x4b", [16678] = "\xbe\x4c",
++ [16679] = "\xbe\x4d", [16681] = "\xbe\x4e", [16684] = "\xd8\xc6",
++ [16685] = "\xd8\xc9", [16686] = "\xd8\xc1", [16687] = "\xd8\xc5",
++ [16689] = "\xbe\x4f", [16690] = "\xd8\xca", [16692] = "\xd8\xcb",
++ [16693] = "\xbe\x50", [16694] = "\xbe\x51", [16695] = "\xd8\xc0",
++ [16696] = "\xbb\xfc", [16697] = "\xbe\x52", [16698] = "\xd8\xc4",
++ [16699] = "\xc2\xd6", [16700] = "\xb9\xb2", [16701] = "\xd8\xb2",
++ [16702] = "\xbf\xb5", [16707] = "\xd8\xd8", [16709] = "\xca\xe9",
++ [16712] = "\xd8\xce", [16713] = "\xd8\xcf", [16714] = "\xd8\xd0",
++ [16717] = "\xd8\xd7", [16718] = "\xbe\x53", [16719] = "\xd8\xd6",
++ [16720] = "\xbe\x54", [16722] = "\xcb\xfd", [16723] = "\xb4\xb7",
++ [16725] = "\xd8\xd4", [16727] = "\xb7\xc5", [16728] = "\xb3\xb4",
++ [16731] = "\xd8\xd1", [16732] = "\xbe\x55", [16734] = "\xce\xb8",
++ [16735] = "\xd8\xd3", [16736] = "\xb0\xd6", [16737] = "\xd8\xd5",
++ [16738] = "\xbe\x56", [16739] = "\xd8\xcc", [16740] = "\xd8\xd2",
++ [16741] = "\xd8\xd9", [16742] = "\xb7\xc4", [16743] = "\xd8\xcd",
++ [16744] = "\xbe\x57", [16747] = "\xbe\x58", [16748] = "\xbe\x59",
++ [16750] = "\xcd\xdd", [16751] = "\xbe\x5a", [16752] = "\xbe\x5b",
++ [16753] = "\xbe\x5c", [16754] = "\xcd\xab", [16755] = "\xbe\x5d",
++ [16756] = "\xbe\x5e", [16759] = "\xd8\xdc", [16762] = "\xd8\xe0",
++ [16763] = "\xbe\x5f", [16765] = "\xbe\x60", [16766] = "\xc1\xfe",
++ [16768] = "\xce\xf9", [16769] = "\xd8\xe1", [16770] = "\xbe\x61",
++ [16771] = "\xbe\x62", [16772] = "\xd8\xde", [16774] = "\xd8\xdb",
++ [16775] = "\xbe\x63", [16776] = "\xbe\x64", [16777] = "\xd8\xda",
++ [16778] = "\xd8\xdf", [16780] = "\xbe\x65", [16781] = "\xbe\x66",
++ [16783] = "\xbe\x67", [16784] = "\xbe\x68", [16788] = "\xca\xb0",
++ [16789] = "\xbe\x69", [16791] = "\xc6\xb4", [16792] = "\xbe\x6a",
++ [16793] = "\xb7\xc6", [16794] = "\xbe\x6b", [16795] = "\xd8\xe2",
++ [16796] = "\xd8\xdd", [16797] = "\xbe\x6c", [16798] = "\xd8\xe3",
++ [16802] = "\xb7\xfb", [16806] = "\xb2\xb1", [16808] = "\xbe\x6d",
++ [16809] = "\xbe\x6e", [16810] = "\xd8\xeb", [16812] = "\xbe\x6f",
++ [16814] = "\xb4\xb8", [16816] = "\xbe\x70", [16817] = "\xbe\x71",
++ [16818] = "\xbe\x72", [16819] = "\xd8\xe9", [16822] = "\xd8\xea",
++ [16823] = "\xba\xa9", [16824] = "\xd8\xe8", [16825] = "\xd8\xe6",
++ [16826] = "\xd8\xe5", [16827] = "\xd8\xec", [16828] = "\xd8\xe4",
++ [16829] = "\xd8\xee", [16830] = "\xbe\x73", [16831] = "\xbe\x74",
++ [16832] = "\xb2\xfb", [16837] = "\xbe\x75", [16844] = "\xbe\x76",
++ [16845] = "\xbe\x77", [16846] = "\xbe\x78", [16847] = "\xbe\x79",
++ [16849] = "\xbe\x7a", [16850] = "\xbe\x7b", [16851] = "\xd8\xf0",
++ [16853] = "\xbe\x7e", [16854] = "\xd8\xef", [16855] = "\xbe\x7c",
++ [16857] = "\xbe\x7d", [16860] = "\xbf\x21", [16861] = "\xbf\x22",
++ [16863] = "\xbf\x23", [16866] = "\xc4\xa8", [16868] = "\xd8\xf3",
++ [16870] = "\xd8\xf1", [16871] = "\xd8\xe7", [16872] = "\xb7\xfc",
++ [16874] = "\xd8\xf2", [16876] = "\xd8\xf6", [16877] = "\xd8\xf5",
++ [16878] = "\xd8\xf7", [16879] = "\xd8\xf4", [16880] = "\xd8\xf8",
++ [16881] = "\xbf\x24", [16883] = "\xbf\x25", [16884] = "\xbf\x26",
++ [16887] = "\xbf\x27", [16888] = "\xd8\xf9", [16889] = "\xd8\xfa",
++ [16890] = "\xca\xea", [16892] = "\xd8\xfc", [16893] = "\xd8\xfb",
++ [16894] = "\xbd\xbf", [16896] = "\xc0\xae", [16897] = "\xb2\xe6",
++ [16898] = "\xb2\xfc", [16899] = "\xbf\x28", [16900] = "\xd8\xfd",
++ [16901] = "\xbf\x29", [16902] = "\xb0\xbf", [16906] = "\xc0\xcc",
++ [16907] = "\xd8\xfe", [16908] = "\xbf\x2a", [16909] = "\xec\xc3",
++ [16910] = "\xd9\xa1", [16911] = "\xb7\xe1", [16912] = "\xbf\x2b",
++ [16913] = "\xd9\xa2", [16914] = "\xbf\x2c", [16915] = "\xbf\x2d",
++ [16918] = "\xc0\xef", [16919] = "\xbf\x2e", [16921] = "\xbf\x2f",
++ [16922] = "\xd9\xa3", [16923] = "\xbf\x30", [16926] = "\xd9\xa4",
++ [16927] = "\xb5\xba", [16928] = "\xd9\xa5", [16930] = "\xd9\xa6",
++ [16931] = "\xd9\xa7", [16932] = "\xc2\xd7", [16936] = "\xb8\xcd",
++ [16937] = "\xbf\x31", [16939] = "\xcc\xe1", [16941] = "\xbf\x32",
++ [16943] = "\xcb\xbc", [16944] = "\xbd\xea", [16945] = "\xd9\xa8",
++ [16946] = "\xbf\x33", [16947] = "\xbf\x34", [16948] = "\xbf\x35",
++ [16950] = "\xbf\x36", [16951] = "\xc0\xf0", [16952] = "\xee\xbd",
++ [16953] = "\xc8\xe2", [16955] = "\xbc\xea", [16956] = "\xbf\x37",
++ [16957] = "\xba\xcd", [16958] = "\xd9\xa9", [16960] = "\xbf\x38",
++ [16961] = "\xbf\x39", [16962] = "\xbf\x3a", [16963] = "\xc2\xc7",
++ [16964] = "\xbf\x3b", [16965] = "\xca\xa7", [16966] = "\xbf\x3c",
++ [16968] = "\xc2\xf1", [16970] = "\xbf\x3d", [16971] = "\xd9\xac",
++ [16972] = "\xbf\x3e", [16974] = "\xd9\xaa", [16976] = "\xd9\xad",
++ [16979] = "\xd9\xab", [16980] = "\xbf\x3f", [16984] = "\xd9\xae",
++ [16989] = "\xbf\x40", [16990] = "\xca\xb1", [16991] = "\xbf\x41",
++ [16993] = "\xb0\xb7", [16995] = "\xbf\x42", [16998] = "\xc9\xde",
++ [17001] = "\xc8\xe3", [17002] = "\xbf\x43", [17004] = "\xd9\xaf",
++ [17005] = "\xbf\x44", [17006] = "\xd9\xb2", [17007] = "\xbe\xb5",
++ [17008] = "\xb5\xbb", [17010] = "\xd9\xb0", [17011] = "\xd9\xb7",
++ [17012] = "\xbe\xb6", [17017] = "\xd9\xb1", [17018] = "\xc7\xc4",
++ [17021] = "\xbf\x45", [17022] = "\xbf\x46", [17023] = "\xbf\x47",
++ [17024] = "\xbf\x48", [17025] = "\xcd\xde", [17026] = "\xd9\xb3",
++ [17027] = "\xd9\xb4", [17028] = "\xd9\xb8", [17029] = "\xc5\xea",
++ [17030] = "\xd9\xb5", [17031] = "\xb9\xb3", [17032] = "\xc0\xde",
++ [17035] = "\xd9\xc6", [17036] = "\xc8\xb4", [17038] = "\xc2\xf2",
++ [17046] = "\xbf\x49", [17048] = "\xbf\x4a", [17051] = "\xc8\xe4",
++ [17052] = "\xda\xad", [17057] = "\xca\xfa", [17059] = "\xbf\x4b",
++ [17061] = "\xc4\xf1", [17062] = "\xbf\x4c", [17063] = "\xbf\x4d",
++ [17065] = "\xcb\xf5", [17066] = "\xbf\x4e", [17067] = "\xd9\xbb",
++ [17068] = "\xb2\xa1", [17069] = "\xc3\xea", [17070] = "\xbf\x4f",
++ [17071] = "\xbf\x50", [17074] = "\xd9\xc4", [17076] = "\xbf\x51",
++ [17077] = "\xc3\xb4", [17078] = "\xd9\xbe", [17079] = "\xd9\xc5",
++ [17080] = "\xd9\xc0", [17081] = "\xd9\xc7", [17082] = "\xd9\xc3",
++ [17084] = "\xd9\xc2", [17085] = "\xc7\xef", [17086] = "\xbf\x52",
++ [17087] = "\xd9\xbc", [17088] = "\xb2\xfd", [17089] = "\xd9\xba",
++ [17090] = "\xb5\xf1", [17091] = "\xc2\xf3", [17092] = "\xd9\xb6",
++ [17093] = "\xbf\x53", [17094] = "\xbf\x54", [17095] = "\xd9\xb9",
++ [17096] = "\xb9\xb4", [17097] = "\xc0\xdb", [17098] = "\xbf\x55",
++ [17099] = "\xbe\xb7", [17100] = "\xd9\xc1", [17101] = "\xc7\xd2",
++ [17104] = "\xb5\xf2", [17105] = "\xb3\xc8", [17114] = "\xbf\x56",
++ [17116] = "\xb3\xe7", [17117] = "\xbf\xa1", [17118] = "\xd9\xc9",
++ [17119] = "\xd9\xce", [17121] = "\xd9\xca", [17122] = "\xbf\x57",
++ [17123] = "\xb7\xfd", [17124] = "\xbf\x58", [17125] = "\xd9\xcf",
++ [17126] = "\xbb\xa2", [17127] = "\xb9\xe9", [17132] = "\xbf\x59",
++ [17133] = "\xbf\x5a", [17134] = "\xbd\xa6", [17135] = "\xd9\xbd",
++ [17137] = "\xbb\xfd", [17138] = "\xd9\xcc", [17139] = "\xbf\x5b",
++ [17140] = "\xbf\x5c", [17143] = "\xbb\xd8", [17144] = "\xd9\xcd",
++ [17145] = "\xb0\xc4", [17146] = "\xbf\x5d", [17147] = "\xbf\x5e",
++ [17148] = "\xd9\xc8", [17149] = "\xbf\x5f", [17152] = "\xbf\x60",
++ [17153] = "\xc4\xa9", [17155] = "\xbf\x61", [17158] = "\xbf\x62",
++ [17160] = "\xbf\x63", [17161] = "\xb5\xf3", [17167] = "\xb6\xb4",
++ [17175] = "\xd9\xcb", [17176] = "\xb0\xa7", [17177] = "\xbf\x64",
++ [17178] = "\xbf\x65", [17179] = "\xba\xc3", [17181] = "\xbf\x66",
++ [17183] = "\xbf\xb6", [17189] = "\xbf\x67", [17190] = "\xbf\x68",
++ [17193] = "\xbf\x69", [17194] = "\xc4\xf2", [17196] = "\xbf\x6a",
++ [17197] = "\xc8\xd4", [17198] = "\xd9\xd1", [17199] = "\xc1\xde",
++ [17201] = "\xbf\x6b", [17202] = "\xbf\x6c", [17203] = "\xbf\x6d",
++ [17204] = "\xbf\x6e", [17206] = "\xbf\x6f", [17209] = "\xc2\xaa",
++ [17210] = "\xbf\x70", [17211] = "\xbf\x71", [17212] = "\xbb\xab",
++ [17213] = "\xd9\xd2", [17214] = "\xbf\x72", [17215] = "\xd9\xd4",
++ [17216] = "\xd9\xd0", [17218] = "\xbf\x73", [17219] = "\xbf\x74",
++ [17220] = "\xbf\x75", [17221] = "\xca\xe1", [17223] = "\xc4\xbd",
++ [17224] = "\xbf\x76", [17227] = "\xbf\x77", [17228] = "\xc1\xdc",
++ [17237] = "\xbf\x78", [17238] = "\xbf\x79", [17239] = "\xca\xfb",
++ [17240] = "\xbc\xce", [17241] = "\xd9\xe0", [17243] = "\xd9\xdf",
++ [17244] = "\xbf\x7a", [17245] = "\xbf\x7b", [17246] = "\xbf\xf8",
++ [17249] = "\xbf\x7c", [17250] = "\xb7\xfe", [17252] = "\xbf\x7d",
++ [17253] = "\xbf\x7e", [17254] = "\xd9\xd9", [17255] = "\xbe\xb9",
++ [17256] = "\xc0\x21", [17258] = "\xc6\xe8", [17259] = "\xc7\xb1",
++ [17260] = "\xc0\x22", [17261] = "\xc0\x23", [17263] = "\xc0\x24",
++ [17264] = "\xd9\xd7", [17266] = "\xc0\x25", [17267] = "\xc1\xdd",
++ [17268] = "\xc0\x26", [17271] = "\xc0\x27", [17272] = "\xbc\xf8",
++ [17273] = "\xd9\xdc", [17274] = "\xc0\x28", [17276] = "\xbe\xb8",
++ [17278] = "\xd9\xd6", [17279] = "\xd9\xdb", [17280] = "\xc0\x29",
++ [17282] = "\xc7\xd3", [17284] = "\xc0\x2a", [17285] = "\xc0\x2b",
++ [17286] = "\xd9\xd5", [17288] = "\xb7\xa1", [17289] = "\xc0\x2c",
++ [17290] = "\xc0\x2d", [17291] = "\xb3\xdd", [17294] = "\xc0\x2e",
++ [17295] = "\xd9\xdd", [17296] = "\xce\xab", [17297] = "\xba\xce",
++ [17298] = "\xc3\xb5", [17299] = "\xd9\xda", [17300] = "\xc0\x2f",
++ [17301] = "\xc0\xdc", [17302] = "\xc0\x30", [17303] = "\xb9\xb5",
++ [17304] = "\xbf\xe4", [17305] = "\xb1\xe6", [17306] = "\xc1\xbc",
++ [17307] = "\xd9\xd8", [17308] = "\xb5\xc5", [17309] = "\xc0\x31",
++ [17310] = "\xc0\x32", [17311] = "\xc0\x33", [17314] = "\xb7\xc7",
++ [17316] = "\xc4\xcf", [17317] = "\xd9\xde", [17323] = "\xc1\xdf",
++ [17325] = "\xc0\x34", [17326] = "\xd9\xe1", [17328] = "\xd9\xe3",
++ [17329] = "\xc0\x35", [17331] = "\xc2\xb7", [17332] = "\xd9\xe9",
++ [17333] = "\xc0\x36", [17334] = "\xd9\xe4", [17336] = "\xc0\x37",
++ [17337] = "\xd9\xe6", [17342] = "\xc0\x38", [17343] = "\xc9\xc1",
++ [17344] = "\xc4\xf3", [17345] = "\xc0\x39", [17346] = "\xd9\xe7",
++ [17347] = "\xc0\x3a", [17348] = "\xc0\x3b", [17349] = "\xc0\x3c",
++ [17350] = "\xcd\xac", [17354] = "\xcd\xc8", [17355] = "\xb4\xb9",
++ [17356] = "\xc0\x3d", [17360] = "\xc0\x3e", [17361] = "\xb0\xae",
++ [17363] = "\xd9\xe5", [17365] = "\xc0\x3f", [17369] = "\xd9\xe2",
++ [17370] = "\xc0\x40", [17372] = "\xc0\x41", [17374] = "\xb4\xf8",
++ [17378] = "\xc0\x42", [17379] = "\xc0\x43", [17380] = "\xb1\xe7",
++ [17381] = "\xc0\x44", [17382] = "\xd9\xe8", [17384] = "\xc0\x45",
++ [17385] = "\xc0\x46", [17386] = "\xcd\xc9", [17398] = "\xd9\xec",
++ [17401] = "\xc0\x47", [17402] = "\xc0\x48", [17405] = "\xc2\xbb",
++ [17407] = "\xd9\xf3", [17408] = "\xc0\x49", [17410] = "\xc0\x4a",
++ [17411] = "\xd9\xed", [17412] = "\xc0\x4b", [17414] = "\xd9\xea",
++ [17415] = "\xd9\xf1", [17416] = "\xc0\x4c", [17420] = "\xd9\xd3",
++ [17422] = "\xc0\x4d", [17424] = "\xc0\x4e", [17426] = "\xc0\x4f",
++ [17428] = "\xc0\x50", [17429] = "\xc0\x51", [17430] = "\xd9\xee",
++ [17432] = "\xd9\xf2", [17433] = "\xc0\x52", [17434] = "\xc0\x53",
++ [17436] = "\xc8\xc2", [17437] = "\xc5\xeb", [17439] = "\xc0\x54",
++ [17440] = "\xc0\x55", [17444] = "\xd9\xeb", [17445] = "\xc0\x56",
++ [17446] = "\xd9\xef", [17450] = "\xb7\xc8", [17453] = "\xc0\x57",
++ [17454] = "\xba\xf1", [17455] = "\xc0\x58", [17458] = "\xc0\xdd",
++ [17467] = "\xc0\x59", [17470] = "\xd9\xf7", [17471] = "\xc0\x5a",
++ [17473] = "\xc0\x5b", [17474] = "\xc0\x5c", [17475] = "\xc0\x5d",
++ [17476] = "\xc0\x5e", [17480] = "\xc5\xa6", [17482] = "\xc0\x5f",
++ [17483] = "\xc0\x60", [17484] = "\xc0\x61", [17485] = "\xc0\x62",
++ [17487] = "\xc0\x63", [17488] = "\xc0\x64", [17489] = "\xc0\x65",
++ [17491] = "\xc0\x66", [17495] = "\xd9\xf4", [17497] = "\xcb\xe0",
++ [17501] = "\xc0\x67", [17503] = "\xd9\xf5", [17507] = "\xc0\x68",
++ [17508] = "\xc0\x69", [17510] = "\xd9\xf6", [17512] = "\xcc\xce",
++ [17514] = "\xc0\xa2", [17515] = "\xc0\x6a", [17517] = "\xc0\x6b",
++ [17523] = "\xb7\xe2", [17525] = "\xc0\x6c", [17527] = "\xc0\x6d",
++ [17528] = "\xd9\xfd", [17535] = "\xc0\x6e", [17536] = "\xc0\x6f",
++ [17537] = "\xc0\x70", [17538] = "\xbb\xb5", [17539] = "\xd9\xfa",
++ [17541] = "\xd9\xf9", [17544] = "\xc0\x71", [17545] = "\xc0\x72",
++ [17546] = "\xc7\xb2", [17547] = "\xc0\x73", [17549] = "\xc0\x74",
++ [17550] = "\xc6\xb5", [17551] = "\xc0\x75", [17553] = "\xc0\x76",
++ [17555] = "\xc0\x77", [17556] = "\xc5\xb1", [17557] = "\xd9\xfb",
++ [17558] = "\xc0\x78", [17560] = "\xc0\x79", [17561] = "\xd9\xfc",
++ [17563] = "\xc9\xef", [17564] = "\xc0\x7a", [17565] = "\xc7\xc5",
++ [17566] = "\xbb\xa3", [17568] = "\xc0\xf1", [17570] = "\xcb\xd0",
++ [17571] = "\xc0\x7b", [17577] = "\xb3\xc9", [17579] = "\xda\xa5",
++ [17580] = "\xd9\xfe", [17581] = "\xc0\x7c", [17582] = "\xc0\x7d",
++ [17583] = "\xc0\x7e", [17585] = "\xcd\xca", [17586] = "\xda\xa7",
++ [17588] = "\xc1\x21", [17589] = "\xda\xa3", [17591] = "\xda\xa4",
++ [17593] = "\xc1\x22", [17594] = "\xc1\x23", [17595] = "\xc1\x24",
++ [17596] = "\xc1\x25", [17597] = "\xc1\xe0", [17598] = "\xc1\x26",
++ [17600] = "\xc1\x27", [17601] = "\xc1\x28", [17602] = "\xda\xa2",
++ [17604] = "\xd9\xbf", [17605] = "\xc1\x29", [17607] = "\xc1\x2a",
++ [17608] = "\xda\xa6", [17610] = "\xda\xa1", [17616] = "\xda\xab",
++ [17617] = "\xda\xac", [17618] = "\xc5\xa7", [17619] = "\xda\xae",
++ [17620] = "\xc1\x2b", [17621] = "\xc1\x2c", [17622] = "\xbb\xa4",
++ [17623] = "\xda\xa9", [17625] = "\xc1\x2d", [17626] = "\xc1\x2e",
++ [17628] = "\xb5\xbc", [17629] = "\xc1\x2f", [17631] = "\xda\xaf",
++ [17632] = "\xc1\x30", [17633] = "\xda\xa8", [17634] = "\xda\xb3",
++ [17636] = "\xda\xb2", [17637] = "\xc1\x31", [17638] = "\xda\xb1",
++ [17639] = "\xc1\x32", [17642] = "\xda\xb4", [17643] = "\xc1\x33",
++ [17645] = "\xda\xb6", [17646] = "\xbe\xf1", [17647] = "\xc1\x34",
++ [17648] = "\xda\xb5", [17649] = "\xc1\x35", [17652] = "\xc1\x36",
++ [17653] = "\xda\xb9", [17656] = "\xc1\x37", [17657] = "\xc1\x38",
++ [17658] = "\xc1\x39", [17663] = "\xc1\x3a", [17667] = "\xc1\x3b",
++ [17668] = "\xc1\x3c", [17670] = "\xc1\x3d", [17672] = "\xda\xb7",
++ [17673] = "\xc1\x3e", [17675] = "\xc1\x3f", [17676] = "\xda\xb8",
++ [17677] = "\xd9\xf0", [17678] = "\xc1\x40", [17679] = "\xc1\x41",
++ [17682] = "\xc1\x42", [17683] = "\xda\xbb", [17684] = "\xda\xba",
++ [17686] = "\xc1\x43", [17689] = "\xc1\x44", [17690] = "\xd9\xf8",
++ [17691] = "\xda\xbc", [17692] = "\xda\xb0", [17694] = "\xc1\x45",
++ [17695] = "\xbb\xd9", [17697] = "\xc1\x46", [17700] = "\xda\xbd",
++ [17701] = "\xda\xbe", [17702] = "\xda\xc0", [17703] = "\xda\xbf",
++ [17704] = "\xda\xc1", [17705] = "\xb2\xfe", [17706] = "\xc1\x47",
++ [17707] = "\xb9\xb6", [17708] = "\xc1\x48", [17709] = "\xc1\x49",
++ [17710] = "\xca\xfc", [17711] = "\xc0\xaf", [17715] = "\xc1\x4a",
++ [17717] = "\xb8\xce", [17719] = "\xc1\x4b", [17720] = "\xda\xc3",
++ [17721] = "\xc1\x4c", [17725] = "\xda\xc6", [17726] = "\xf4\x41",
++ [17727] = "\xc9\xd2", [17728] = "\xc1\x4d", [17729] = "\xb5\xdf",
++ [17730] = "\xc1\x4e", [17732] = "\xc1\x4f", [17733] = "\xda\xc5",
++ [17734] = "\xda\xc4", [17735] = "\xc7\xd4", [17736] = "\xda\xc7",
++ [17737] = "\xb6\xb5", [17741] = "\xda\xc9", [17742] = "\xda\xc8",
++ [17743] = "\xc1\x50", [17744] = "\xc1\x51", [17746] = "\xb4\xba",
++ [17747] = "\xbb\xb6", [17750] = "\xc6\xd8", [17751] = "\xc1\x52",
++ [17755] = "\xc1\x53", [17756] = "\xb7\xc9", [17760] = "\xbf\xf4",
++ [17762] = "\xda\xca", [17764] = "\xc0\xb0", [17765] = "\xc5\xa8",
++ [17767] = "\xc9\xdf", [17768] = "\xda\xcb", [17770] = "\xc1\x54",
++ [17773] = "\xc1\x55", [17777] = "\xc1\x56", [17778] = "\xda\xcc",
++ [17779] = "\xda\xcd", [17781] = "\xc1\x57", [17783] = "\xca\xb8",
++ [17784] = "\xd5\xdd", [17785] = "\xc0\xc6", [17786] = "\xc1\x58",
++ [17788] = "\xc9\xcc", [17790] = "\xba\xd8", [17792] = "\xc8\xe5",
++ [17793] = "\xc8\xc3", [17794] = "\xc1\x59", [17797] = "\xc1\x5a",
++ [17799] = "\xc5\xcd", [17800] = "\xc1\x5b", [17801] = "\xce\xc1",
++ [17803] = "\xda\xcf", [17804] = "\xbc\xd0", [17805] = "\xc1\x5c",
++ [17807] = "\xda\xd0", [17808] = "\xc1\x5d", [17809] = "\xb0\xb6",
++ [17811] = "\xc1\x5e", [17812] = "\xb6\xd4", [17813] = "\xc0\xcd",
++ [17814] = "\xc1\x5f", [17815] = "\xc9\xe0", [17819] = "\xda\xd1",
++ [17820] = "\xbb\xc2", [17821] = "\xc3\xc7", [17822] = "\xc1\x60",
++ [17823] = "\xbb\xdb", [17824] = "\xbf\xb7", [17826] = "\xc1\x61",
++ [17827] = "\xc1\x62", [17828] = "\xc1\x63", [17831] = "\xda\xd2",
++ [17833] = "\xca\xfd", [17836] = "\xb1\xf7", [17837] = "\xbb\xdc",
++ [17839] = "\xc1\x64", [17841] = "\xda\xd5", [17842] = "\xc1\x65",
++ [17843] = "\xda\xd3", [17844] = "\xda\xd6", [17845] = "\xce\xb9",
++ [17846] = "\xda\xd4", [17848] = "\xc1\x66", [17849] = "\xc1\x67",
++ [17851] = "\xc0\xfb", [17852] = "\xda\xd7", [17854] = "\xc1\x68",
++ [17855] = "\xc2\xb2", [17856] = "\xc1\x69", [17858] = "\xda\xd8",
++ [17860] = "\xc1\x6a", [17862] = "\xc1\x6b", [17863] = "\xb4\xfa",
++ [17864] = "\xc1\x6c", [17865] = "\xda\xda", [17867] = "\xda\xd9",
++ [17871] = "\xc1\x6d", [17872] = "\xda\xdb", [17873] = "\xda\xdc",
++ [17874] = "\xb4\xfb", [17877] = "\xc6\xfc", [17878] = "\xc3\xb6",
++ [17879] = "\xb5\xec", [17880] = "\xbb\xdd", [17881] = "\xc1\xe1",
++ [17884] = "\xbd\xdc", [17885] = "\xb0\xb0", [17888] = "\xc1\x6e",
++ [17889] = "\xda\xdd", [17890] = "\xc1\x6f", [17892] = "\xc1\x70",
++ [17893] = "\xc1\x71", [17897] = "\xc1\x72", [17898] = "\xb2\xa2",
++ [17899] = "\xda\xe1", [17902] = "\xc1\x73", [17903] = "\xc1\x74",
++ [17904] = "\xc1\x75", [17906] = "\xb9\xb7", [17907] = "\xda\xe0",
++ [17908] = "\xc1\x76", [17910] = "\xba\xab", [17911] = "\xbe\xba",
++ [17912] = "\xc1\x77", [17913] = "\xc1\x78", [17914] = "\xda\xdf",
++ [17916] = "\xbe\xbb", [17917] = "\xc1\x79", [17918] = "\xcc\xc0",
++ [17919] = "\xba\xaa", [17921] = "\xc1\x7a", [17922] = "\xc1\x7b",
++ [17923] = "\xb0\xd7", [17924] = "\xc0\xce", [17925] = "\xc1\x7c",
++ [17926] = "\xc1\x7d", [17932] = "\xda\xe6", [17933] = "\xc1\x7e",
++ [17934] = "\xc2\x21", [17935] = "\xc0\xb1", [17936] = "\xb1\xc7",
++ [17937] = "\xc2\x22", [17938] = "\xc2\x23", [17939] = "\xc2\x24",
++ [17940] = "\xc2\x25", [17941] = "\xbd\xd5", [17942] = "\xc2\x26",
++ [17943] = "\xcb\xe6", [17944] = "\xba\xf2", [17945] = "\xc2\x27",
++ [17946] = "\xc2\x28", [17947] = "\xc2\x29", [17948] = "\xc2\x2a",
++ [17949] = "\xbe\xbc", [17950] = "\xc2\x2b", [17951] = "\xc0\xa7",
++ [17952] = "\xc2\x2c", [17953] = "\xc2\x2d", [17955] = "\xc2\x2e",
++ [17956] = "\xda\xe5", [17957] = "\xda\xe3", [17958] = "\xda\xe4",
++ [17959] = "\xc2\x30", [17961] = "\xc2\x2f", [17963] = "\xf4\x42",
++ [17964] = "\xc3\xeb", [17967] = "\xdb\xa6", [17968] = "\xc2\x31",
++ [17969] = "\xda\xea", [17970] = "\xbb\xfe", [17971] = "\xb9\xb8",
++ [17972] = "\xda\xe8", [17973] = "\xc2\x32", [17974] = "\xc2\x33",
++ [17977] = "\xda\xe9", [17978] = "\xc2\x34", [17979] = "\xbf\xb8",
++ [17980] = "\xc2\x35", [17982] = "\xc2\x37", [17983] = "\xda\xe7",
++ [17985] = "\xc2\x36", [17986] = "\xbb\xaf", [17991] = "\xc2\x38",
++ [17992] = "\xc2\x39", [17993] = "\xc2\x3a", [17995] = "\xc2\x3b",
++ [17996] = "\xc2\x3c", [17997] = "\xda\xec", [17998] = "\xda\xeb",
++ [17999] = "\xda\xf0", [18000] = "\xc2\x3d", [18001] = "\xc2\x3e",
++ [18002] = "\xda\xf1", [18004] = "\xda\xed", [18005] = "\xf4\x43",
++ [18006] = "\xb3\xa2", [18007] = "\xda\xee", [18008] = "\xda\xef",
++ [18009] = "\xc8\xd5", [18010] = "\xc2\x40", [18011] = "\xc2\x41",
++ [18012] = "\xc2\x42", [18014] = "\xc9\xe1", [18015] = "\xb7\xca",
++ [18016] = "\xda\xf2", [18019] = "\xc2\x44", [18020] = "\xc0\xb2",
++ [18021] = "\xc2\x45", [18022] = "\xbe\xbd", [18023] = "\xc2\x47",
++ [18024] = "\xc2\x48", [18025] = "\xc2\x49", [18026] = "\xc3\xd2",
++ [18027] = "\xc2\x4a", [18028] = "\xc2\x4c", [18030] = "\xc2\x43",
++ [18031] = "\xc2\x46", [18032] = "\xc2\x4b", [18033] = "\xb6\xc7",
++ [18035] = "\xda\xf3", [18036] = "\xda\xf7", [18039] = "\xb2\xcb",
++ [18040] = "\xda\xf4", [18041] = "\xda\xf6", [18043] = "\xc2\x4d",
++ [18044] = "\xc2\x4e", [18045] = "\xc2\x4f", [18046] = "\xda\xf5",
++ [18048] = "\xc2\x50", [18049] = "\xbd\xeb", [18050] = "\xc2\x51",
++ [18054] = "\xc3\xc8", [18055] = "\xb0\xc5", [18056] = "\xda\xf8",
++ [18057] = "\xc2\x52", [18058] = "\xc2\x53", [18059] = "\xc2\x54",
++ [18060] = "\xc2\x55", [18061] = "\xda\xf9", [18063] = "\xc2\x56",
++ [18064] = "\xc2\x57", [18066] = "\xc4\xaa", [18068] = "\xc2\x58",
++ [18070] = "\xce\xf1", [18075] = "\xbb\xc3", [18077] = "\xc2\x59",
++ [18078] = "\xca\xeb", [18081] = "\xc2\x5a", [18082] = "\xc2\x5b",
++ [18084] = "\xcb\xbd", [18085] = "\xc2\x5c", [18088] = "\xdb\xa2",
++ [18089] = "\xda\xfb", [18091] = "\xc2\x5d", [18092] = "\xda\xfe",
++ [18094] = "\xda\xfd", [18095] = "\xc2\x5e", [18096] = "\xc2\x5f",
++ [18097] = "\xda\xfa", [18098] = "\xc2\x60", [18099] = "\xc2\x61",
++ [18100] = "\xdb\xa1", [18103] = "\xc6\xde", [18104] = "\xc2\x62",
++ [18105] = "\xda\xfc", [18108] = "\xc2\x63", [18110] = "\xc2\x64",
++ [18111] = "\xc2\x65", [18116] = "\xc2\x66", [18118] = "\xdb\xa3",
++ [18121] = "\xbd\xec", [18122] = "\xdb\xa4", [18123] = "\xc2\x67",
++ [18124] = "\xcd\xcb", [18125] = "\xc7\xf8", [18127] = "\xc2\x68",
++ [18128] = "\xdb\xa5", [18134] = "\xdb\xa7", [18136] = "\xc2\x69",
++ [18137] = "\xdb\xa8", [18139] = "\xc2\x6a", [18140] = "\xc2\x6b",
++ [18142] = "\xc2\x6c", [18144] = "\xdb\xa9", [18146] = "\xb6\xca",
++ [18147] = "\xb1\xc8", [18148] = "\xb9\xb9", [18149] = "\xdb\xaa",
++ [18151] = "\xdb\xab", [18152] = "\xbd\xf1", [18153] = "\xc1\xe2",
++ [18154] = "\xc2\x6d", [18155] = "\xc2\x3f", [18156] = "\xd2\xd8",
++ [18157] = "\xc1\xbe", [18158] = "\xc1\xbd", [18159] = "\xc2\xd8",
++ [18160] = "\xba\xc7", [18163] = "\xd0\xf2", [18165] = "\xc2\x6e",
++ [18167] = "\xc2\x6f", [18168] = "\xb7\xee", [18169] = "\xcd\xad",
++ [18171] = "\xca\xfe", [18173] = "\xc9\xfe", [18174] = "\xc2\x70",
++ [18175] = "\xdb\xac", [18179] = "\xc2\x71", [18180] = "\xba\xf3",
++ [18181] = "\xc4\xbf", [18182] = "\xdb\xad", [18183] = "\xcf\xaf",
++ [18185] = "\xc2\x72", [18187] = "\xcb\xbe", [18188] = "\xc2\x73",
++ [18189] = "\xc4\xab", [18190] = "\xdb\xae", [18191] = "\xb4\xfc",
++ [18192] = "\xc2\x74", [18194] = "\xc2\x75", [18198] = "\xdb\xaf",
++ [18199] = "\xdb\xb0", [18200] = "\xcc\xda", [18202] = "\xcc\xa4",
++ [18203] = "\xcb\xf6", [18204] = "\xcb\xdc", [18205] = "\xbb\xa5",
++ [18206] = "\xdb\xb2", [18209] = "\xbc\xeb", [18211] = "\xc2\x76",
++ [18212] = "\xcb\xd1", [18214] = "\xdb\xb4", [18215] = "\xdb\xb7",
++ [18216] = "\xdb\xb6", [18218] = "\xb4\xf9", [18221] = "\xb5\xe0",
++ [18222] = "\xc2\x77", [18223] = "\xdb\xb3", [18225] = "\xdb\xb5",
++ [18229] = "\xc2\x78", [18230] = "\xdb\xb8", [18231] = "\xc2\x79",
++ [18232] = "\xc2\x7a", [18233] = "\xbf\xf9", [18236] = "\xc2\x7b",
++ [18238] = "\xcd\xfb", [18239] = "\xb0\xc9", [18240] = "\xba\xe0",
++ [18241] = "\xc2\xbc", [18243] = "\xbc\xdd", [18244] = "\xc2\x7c",
++ [18245] = "\xc2\x7d", [18246] = "\xbe\xf3", [18249] = "\xdb\xbb",
++ [18252] = "\xc5\xce", [18253] = "\xc2\x7e", [18254] = "\xdb\xb9",
++ [18255] = "\xc2\xab", [18256] = "\xdb\xba", [18257] = "\xbe\xf2",
++ [18258] = "\xcc\xdd", [18259] = "\xdb\xbc", [18260] = "\xdb\xbd",
++ [18261] = "\xcd\xe8", [18262] = "\xc3\x21", [18266] = "\xdb\xc2",
++ [18268] = "\xc3\x22", [18269] = "\xb9\xba", [18270] = "\xc3\x23",
++ [18271] = "\xc7\xd5", [18272] = "\xdb\xbf", [18273] = "\xc5\xec",
++ [18274] = "\xda\xde", [18275] = "\xda\xe2", [18276] = "\xc3\x24",
++ [18277] = "\xb5\xcf", [18278] = "\xc3\x25", [18279] = "\xc7\xc7",
++ [18283] = "\xc3\x26", [18284] = "\xdb\xc1", [18286] = "\xbe\xbe",
++ [18287] = "\xc8\xc4", [18289] = "\xc3\x27", [18292] = "\xc3\x28",
++ [18293] = "\xdb\xc7", [18295] = "\xc8\xfa", [18297] = "\xdb\xbe",
++ [18299] = "\xdb\xc4", [18300] = "\xdb\xc3", [18302] = "\xc3\x29",
++ [18303] = "\xc3\x2a", [18304] = "\xc0\xcf", [18305] = "\xc3\x2b",
++ [18307] = "\xc3\x2c", [18309] = "\xcb\xed", [18310] = "\xc3\x2d",
++ [18311] = "\xce\xd3", [18312] = "\xc3\x2e", [18313] = "\xc3\x2f",
++ [18314] = "\xcb\xe7", [18315] = "\xc3\x30", [18316] = "\xb2\xcc",
++ [18317] = "\xbb\xde", [18320] = "\xcf\xc8", [18321] = "\xdb\xc6",
++ [18322] = "\xbf\xf5", [18326] = "\xdb\xc5", [18329] = "\xdb\xc0",
++ [18335] = "\xb8\xcf", [18336] = "\xc3\x31", [18337] = "\xc3\x32",
++ [18338] = "\xc3\x33", [18339] = "\xdb\xcc", [18340] = "\xdb\xca",
++ [18341] = "\xc3\x34", [18342] = "\xb2\xcd", [18343] = "\xdb\xc8",
++ [18344] = "\xdb\xce", [18345] = "\xdb\xd4", [18347] = "\xc3\x35",
++ [18348] = "\xc3\x36", [18349] = "\xc3\x37", [18352] = "\xc3\x39",
++ [18353] = "\xc2\xc8", [18354] = "\xc3\x3a", [18355] = "\xc3\x3b",
++ [18356] = "\xca\xc1", [18357] = "\xc3\x3c", [18358] = "\xdb\xd6",
++ [18360] = "\xc3\x3d", [18361] = "\xc3\x3e", [18362] = "\xc9\xa2",
++ [18366] = "\xdb\xd5", [18367] = "\xc7\xf0", [18368] = "\xcb\xbf",
++ [18369] = "\xb4\xbb", [18370] = "\xc3\x3f", [18371] = "\xc0\xf7",
++ [18372] = "\xbd\xc0", [18375] = "\xc3\x40", [18376] = "\xc4\xd3",
++ [18377] = "\xc3\x41", [18378] = "\xcd\xae", [18380] = "\xc3\x42",
++ [18381] = "\xdb\xd1", [18382] = "\xdb\xd0", [18385] = "\xc3\x43",
++ [18386] = "\xdb\xd2", [18388] = "\xdb\xcf", [18390] = "\xc3\x44",
++ [18391] = "\xdb\xd7", [18393] = "\xdb\xcd", [18396] = "\xdb\xcb",
++ [18398] = "\xdb\xd3", [18399] = "\xdb\xc9", [18400] = "\xc3\x45",
++ [18401] = "\xc3\xec", [18402] = "\xc3\x46", [18403] = "\xcc\xf8",
++ [18404] = "\xbc\xc6", [18405] = "\xba\xf4", [18406] = "\xc3\x47",
++ [18407] = "\xc3\x48", [18409] = "\xc3\x38", [18411] = "\xba\xba",
++ [18414] = "\xcb\xef", [18415] = "\xb3\xc1", [18417] = "\xf4\x46",
++ [18418] = "\xc4\xce", [18419] = "\xc6\xca", [18420] = "\xb1\xc9",
++ [18435] = "\xc0\xf2", [18436] = "\xc3\x4a", [18438] = "\xc0\xb4",
++ [18439] = "\xb7\xaa", [18441] = "\xc3\x4b", [18445] = "\xc3\x4c",
++ [18446] = "\xdb\xd9", [18447] = "\xc3\x4d", [18449] = "\xb9\xbb",
++ [18450] = "\xb3\xfc", [18455] = "\xc3\x4f", [18456] = "\xc3\x4e",
++ [18457] = "\xdb\xdb", [18458] = "\xb3\xf4", [18459] = "\xdb\xe1",
++ [18460] = "\xc3\x50", [18461] = "\xc3\x51", [18463] = "\xc3\x52",
++ [18464] = "\xc3\x53", [18465] = "\xc3\x54", [18466] = "\xdb\xde",
++ [18467] = "\xc3\x55", [18468] = "\xc0\xf3", [18472] = "\xb3\xcb",
++ [18473] = "\xba\xac", [18475] = "\xc3\x56", [18476] = "\xb3\xca",
++ [18477] = "\xba\xcf", [18479] = "\xc3\x57", [18480] = "\xdb\xdc",
++ [18481] = "\xb7\xe5", [18482] = "\xb7\xcb", [18483] = "\xc5\xed",
++ [18484] = "\xc3\x58", [18485] = "\xc3\x59", [18486] = "\xdb\xda",
++ [18488] = "\xb0\xc6", [18490] = "\xc3\x5a", [18492] = "\xc3\x5b",
++ [18493] = "\xdb\xdd", [18494] = "\xdb\xdf", [18496] = "\xb6\xcd",
++ [18497] = "\xb7\xac", [18498] = "\xc3\x49", [18499] = "\xb4\xbc",
++ [18500] = "\xb5\xcb", [18501] = "\xc3\x5c", [18503] = "\xc3\x5d",
++ [18504] = "\xc3\x5e", [18505] = "\xdb\xe2", [18507] = "\xc3\x5f",
++ [18508] = "\xba\xf9", [18509] = "\xcb\xf1", [18511] = "\xbb\xb7",
++ [18515] = "\xdb\xe3", [18519] = "\xc9\xb0", [18523] = "\xc3\x60",
++ [18526] = "\xc3\x61", [18527] = "\xc3\x62", [18528] = "\xc3\x63",
++ [18529] = "\xc3\x64", [18530] = "\xc3\x65", [18532] = "\xdb\xef",
++ [18533] = "\xc3\x66", [18534] = "\xb2\xb3", [18535] = "\xdb\xe4",
++ [18537] = "\xc3\x67", [18538] = "\xc3\x68", [18539] = "\xc3\x69",
++ [18540] = "\xc3\x6a", [18542] = "\xdb\xf5", [18543] = "\xdb\xe5",
++ [18545] = "\xce\xc2", [18546] = "\xc3\x6b", [18547] = "\xdb\xec",
++ [18548] = "\xc3\x6c", [18549] = "\xc7\xdf", [18550] = "\xc3\x6d",
++ [18552] = "\xc3\x6e", [18557] = "\xdb\xf4", [18559] = "\xdb\xe7",
++ [18563] = "\xb0\xb4", [18564] = "\xdb\xe9", [18566] = "\xc3\x6f",
++ [18567] = "\xb9\xbc", [18568] = "\xc3\x70", [18570] = "\xc3\x71",
++ [18571] = "\xdb\xeb", [18572] = "\xc3\x72", [18573] = "\xdb\xea",
++ [18575] = "\xdb\xe6", [18576] = "\xdb\xf1", [18577] = "\xc3\x73",
++ [18578] = "\xbe\xbf", [18579] = "\xc3\x74", [18581] = "\xc3\x75",
++ [18582] = "\xd4\xed", [18583] = "\xb8\xe8", [18584] = "\xcd\xfc",
++ [18585] = "\xc3\x76", [18586] = "\xc3\x77", [18589] = "\xdb\xe8",
++ [18590] = "\xc3\x78", [18591] = "\xc4\xf4", [18592] = "\xb3\xa3",
++ [18593] = "\xba\xad", [18594] = "\xc3\x79", [18595] = "\xdb\xe0",
++ [18597] = "\xdb\xf0", [18598] = "\xb3\xe1", [18601] = "\xdb\xee",
++ [18602] = "\xdb\xf2", [18603] = "\xc3\x7a", [18604] = "\xc5\xee",
++ [18612] = "\xb4\xfe", [18613] = "\xc3\x7b", [18614] = "\xdc\xb2",
++ [18616] = "\xc3\x7c", [18617] = "\xcc\xc9", [18618] = "\xdb\xf7",
++ [18619] = "\xb4\xfd", [18620] = "\xc3\x7d", [18621] = "\xdb\xfe",
++ [18623] = "\xc3\x7e", [18624] = "\xc4\x21", [18625] = "\xc4\x22",
++ [18626] = "\xcb\xc0", [18627] = "\xc4\x23", [18628] = "\xdc\xa1",
++ [18629] = "\xdc\xa3", [18630] = "\xc4\x24", [18631] = "\xdc\xa7",
++ [18632] = "\xdb\xf9", [18633] = "\xc4\x25", [18634] = "\xc3\xaa",
++ [18636] = "\xc4\x26", [18637] = "\xc4\x27", [18639] = "\xc5\xef",
++ [18640] = "\xdc\xab", [18641] = "\xdb\xfc", [18643] = "\xdc\xa8",
++ [18645] = "\xc4\x28", [18647] = "\xdc\xa2", [18648] = "\xc4\x29",
++ [18650] = "\xc4\x2a", [18651] = "\xc4\x2b", [18652] = "\xc4\x2c",
++ [18653] = "\xc4\x2d", [18654] = "\xbf\xb9", [18655] = "\xdc\xac",
++ [18656] = "\xc4\x2e", [18657] = "\xc4\x2f", [18658] = "\xc0\xb3",
++ [18661] = "\xc4\x30", [18662] = "\xc4\x31", [18665] = "\xdc\xaa",
++ [18666] = "\xb4\xbd", [18667] = "\xc4\x32", [18668] = "\xc4\x33",
++ [18669] = "\xc4\x34", [18672] = "\xcf\xd0", [18673] = "\xdb\xf6",
++ [18676] = "\xdc\xa6", [18677] = "\xb0\xd8", [18678] = "\xc4\x35",
++ [18680] = "\xdb\xf8", [18681] = "\xc4\x36", [18682] = "\xc4\x37",
++ [18683] = "\xcc\xba", [18684] = "\xdb\xfd", [18685] = "\xbf\xa2",
++ [18686] = "\xc4\xc7", [18687] = "\xdb\xf3", [18688] = "\xc4\x38",
++ [18689] = "\xc4\x39", [18690] = "\xdc\xa5", [18691] = "\xc4\x3a",
++ [18694] = "\xc4\x3b", [18695] = "\xc4\x3c", [18697] = "\xbf\xfa",
++ [18698] = "\xdc\xaf", [18699] = "\xb3\xf1", [18700] = "\xb8\xa1",
++ [18705] = "\xdc\xb1", [18706] = "\xdb\xfa", [18707] = "\xdc\xb0",
++ [18709] = "\xdc\xa9", [18710] = "\xdb\xfb", [18712] = "\xdc\xad",
++ [18714] = "\xdc\xae", [18720] = "\xdc\xbf", [18721] = "\xc4\x3d",
++ [18723] = "\xc4\x3e", [18724] = "\xc6\xce", [18725] = "\xc4\x3f",
++ [18726] = "\xdc\xa4", [18728] = "\xc4\x40", [18729] = "\xdc\xbb",
++ [18731] = "\xc4\x41", [18733] = "\xdc\xbd", [18735] = "\xc4\xd8",
++ [18738] = "\xc4\x42", [18741] = "\xc4\x43", [18745] = "\xc4\x44",
++ [18746] = "\xcd\xcc", [18750] = "\xc4\x45", [18755] = "\xc9\xf6",
++ [18756] = "\xdc\xb8", [18757] = "\xc2\xca", [18759] = "\xc4\x46",
++ [18761] = "\xdc\xbe", [18762] = "\xc1\xbf", [18763] = "\xc4\x47",
++ [18764] = "\xdc\xb5", [18765] = "\xdc\xc2", [18766] = "\xdc\xc1",
++ [18768] = "\xc6\xef", [18769] = "\xdc\xc0", [18770] = "\xc6\xea",
++ [18771] = "\xc4\x48", [18772] = "\xc4\x49", [18773] = "\xc4\x4a",
++ [18774] = "\xc4\x4b", [18776] = "\xc4\x4c", [18777] = "\xc4\x4d",
++ [18778] = "\xdc\xc4", [18779] = "\xdc\xb7", [18780] = "\xc4\x4e",
++ [18781] = "\xb6\xc8", [18782] = "\xdc\xba", [18783] = "\xbd\xdd",
++ [18784] = "\xc4\x4f", [18785] = "\xc4\x50", [18786] = "\xc4\x51",
++ [18787] = "\xc7\xe0", [18788] = "\xdc\xbc", [18789] = "\xb6\xcb",
++ [18791] = "\xdc\xb4", [18792] = "\xdc\xb6", [18793] = "\xdc\xb3",
++ [18794] = "\xc4\x52", [18795] = "\xc4\x53", [18796] = "\xcf\xb0",
++ [18797] = "\xb3\xda", [18798] = "\xdc\xb9", [18799] = "\xc4\x54",
++ [18800] = "\xc4\x55", [18801] = "\xdc\xc3", [18802] = "\xb3\xb5",
++ [18810] = "\xba\xe7", [18813] = "\xc4\x56", [18814] = "\xb1\xdd",
++ [18817] = "\xdc\xd4", [18818] = "\xc4\x57", [18820] = "\xcf\xb1",
++ [18821] = "\xdc\xd7", [18822] = "\xc4\x58", [18824] = "\xc4\x59",
++ [18827] = "\xbf\xba", [18828] = "\xdc\xd6", [18832] = "\xdc\xd5",
++ [18833] = "\xc4\x5a", [18837] = "\xc4\x5b", [18838] = "\xc4\x5c",
++ [18839] = "\xdc\xd2", [18840] = "\xc4\x5d", [18843] = "\xc4\x5e",
++ [18845] = "\xc4\x5f", [18846] = "\xdc\xc6", [18847] = "\xc4\x60",
++ [18849] = "\xdc\xe3", [18850] = "\xdc\xc5", [18852] = "\xdc\xd8",
++ [18855] = "\xc4\x61", [18856] = "\xc4\x62", [18858] = "\xc4\x63",
++ [18859] = "\xdc\xd0", [18860] = "\xc4\x64", [18862] = "\xdc\xcb",
++ [18863] = "\xdc\xc8", [18865] = "\xdc\xc9", [18867] = "\xdc\xd1",
++ [18869] = "\xc4\x65", [18871] = "\xf4\xa2", [18872] = "\xc4\x66",
++ [18874] = "\xdc\xce", [18875] = "\xb9\xbd", [18876] = "\xc4\xc8",
++ [18877] = "\xc1\xe4", [18878] = "\xdc\xcc", [18880] = "\xdc\xc7",
++ [18881] = "\xc4\x67", [18883] = "\xdc\xca", [18886] = "\xc4\x68",
++ [18887] = "\xc4\x69", [18888] = "\xcd\xcd", [18889] = "\xcb\xea",
++ [18893] = "\xdc\xcf", [18894] = "\xdc\xd9", [18898] = "\xc4\x6a",
++ [18901] = "\xc4\x6b", [18903] = "\xdc\xe1", [18904] = "\xdc\xda",
++ [18907] = "\xdc\xe7", [18909] = "\xdc\xe5", [18910] = "\xc4\x6c",
++ [18911] = "\xc4\x6d", [18913] = "\xc4\x6e", [18914] = "\xdc\xe0",
++ [18915] = "\xc4\x6f", [18917] = "\xc4\x70", [18921] = "\xdc\xdf",
++ [18923] = "\xc4\xd0", [18925] = "\xc1\xe5", [18926] = "\xc4\x71",
++ [18927] = "\xdc\xdd", [18928] = "\xc4\x72", [18929] = "\xc4\x73",
++ [18930] = "\xdc\xdb", [18931] = "\xc4\x74", [18933] = "\xdc\xe2",
++ [18938] = "\xdc\xe8", [18939] = "\xc8\xf5", [18940] = "\xdc\xee",
++ [18943] = "\xc4\x75", [18945] = "\xc4\x76", [18946] = "\xdc\xe9",
++ [18947] = "\xdc\xec", [18948] = "\xdc\xe6", [18949] = "\xc4\x77",
++ [18951] = "\xc3\xf4", [18953] = "\xc9\xb8", [18954] = "\xc4\x78",
++ [18955] = "\xdc\xdc", [18957] = "\xc4\x79", [18958] = "\xdc\xe4",
++ [18959] = "\xbe\xc0", [18960] = "\xc4\x7a", [18961] = "\xcc\xcf",
++ [18962] = "\xdc\xf8", [18963] = "\xdc\xeb", [18964] = "\xc4\x7b",
++ [18968] = "\xc4\x7c", [18969] = "\xb8\xa2", [18970] = "\xb2\xa3",
++ [18971] = "\xb3\xdf", [18974] = "\xdc\xd3", [18976] = "\xc4\x7d",
++ [18978] = "\xc4\x7e", [18980] = "\xc5\x21", [18981] = "\xbe\xc1",
++ [18982] = "\xdc\xf0", [18983] = "\xc5\x22", [18984] = "\xdc\xf7",
++ [18985] = "\xbc\xf9", [18986] = "\xb3\xf2", [18987] = "\xc5\x23",
++ [18989] = "\xc3\xae", [18990] = "\xc5\x24", [18991] = "\xc5\x25",
++ [18996] = "\xdc\xed", [18997] = "\xc5\x26", [18998] = "\xc5\x27",
++ [18999] = "\xdc\xf2", [19000] = "\xdc\xf6", [19001] = "\xc5\x28",
++ [19002] = "\xc5\x29", [19003] = "\xb6\xb6", [19006] = "\xc5\x2a",
++ [19008] = "\xc5\x2b", [19009] = "\xc5\x2c", [19010] = "\xc5\x2d",
++ [19013] = "\xc5\x2e", [19014] = "\xc5\x2f", [19016] = "\xb5\xcc",
++ [19017] = "\xdc\xf4", [19019] = "\xc5\x30", [19023] = "\xb5\xa1",
++ [19025] = "\xc6\xcb", [19026] = "\xdc\xf3", [19028] = "\xc5\x31",
++ [19030] = "\xdc\xf5", [19031] = "\xc5\x32", [19034] = "\xc5\x33",
++ [19035] = "\xf4\x49", [19041] = "\xc5\x34", [19042] = "\xdc\xef",
++ [19043] = "\xc5\x35", [19048] = "\xdc\xf1", [19054] = "\xc5\x36",
++ [19055] = "\xb3\xe0", [19056] = "\xc3\xc9", [19057] = "\xc5\x37",
++ [19059] = "\xc5\x38", [19060] = "\xdc\xfc", [19062] = "\xc5\x39",
++ [19063] = "\xc5\x3a", [19065] = "\xc5\x3b", [19067] = "\xc5\x3c",
++ [19069] = "\xdc\xfa", [19070] = "\xb8\xe9", [19072] = "\xdc\xf9",
++ [19073] = "\xc5\x3d", [19079] = "\xdd\xa1", [19083] = "\xc5\x3e",
++ [19084] = "\xdb\xd8", [19085] = "\xc5\x3f", [19086] = "\xc5\x40",
++ [19087] = "\xc5\x41", [19088] = "\xdc\xfb", [19090] = "\xdc\xfd",
++ [19091] = "\xdc\xfe", [19093] = "\xc5\x42", [19098] = "\xdd\xac",
++ [19099] = "\xc5\x43", [19100] = "\xdd\xa8", [19102] = "\xdb\xed",
++ [19103] = "\xc5\x44", [19104] = "\xc5\x45", [19105] = "\xc5\x46",
++ [19107] = "\xdd\xa7", [19108] = "\xc5\x47", [19112] = "\xdd\xa6",
++ [19115] = "\xdd\xa3", [19117] = "\xc5\x48", [19118] = "\xc5\x49",
++ [19119] = "\xc5\x4a", [19121] = "\xdc\xea", [19122] = "\xdd\xa5",
++ [19123] = "\xdd\xa4", [19126] = "\xc5\x4b", [19128] = "\xc5\x4d",
++ [19129] = "\xc5\x4c", [19132] = "\xc5\x4e", [19136] = "\xc5\x4f",
++ [19137] = "\xdd\xaa", [19139] = "\xcf\xa6", [19140] = "\xc5\x50",
++ [19141] = "\xc5\x51", [19142] = "\xc5\x52", [19146] = "\xdd\xad",
++ [19147] = "\xb6\xfb", [19148] = "\xc5\x53", [19149] = "\xc5\x54",
++ [19150] = "\xdd\xa9", [19151] = "\xdd\xab", [19154] = "\xf4\x4a",
++ [19156] = "\xc5\x55", [19159] = "\xc5\x56", [19160] = "\xc8\xa7",
++ [19162] = "\xdd\xae", [19164] = "\xc5\x57", [19168] = "\xc5\x58",
++ [19169] = "\xc5\x59", [19170] = "\xc5\x5a", [19178] = "\xdd\xb2",
++ [19179] = "\xdd\xaf", [19180] = "\xc5\x5b", [19181] = "\xc5\x5c",
++ [19186] = "\xc5\x5d", [19187] = "\xc5\x5e", [19188] = "\xcd\xf3",
++ [19189] = "\xdd\xb0", [19190] = "\xc5\x5f", [19191] = "\xc5\x60",
++ [19193] = "\xc5\x61", [19194] = "\xdc\xde", [19199] = "\xc5\x62",
++ [19200] = "\xc5\x63", [19201] = "\xc5\x64", [19202] = "\xdd\xb3",
++ [19206] = "\xdd\xb4", [19207] = "\xc5\x65", [19211] = "\xc5\x66",
++ [19213] = "\xb1\xb5", [19214] = "\xc5\x67", [19215] = "\xdd\xb6",
++ [19216] = "\xb7\xe7", [19217] = "\xbc\xa1", [19219] = "\xb6\xd5",
++ [19220] = "\xc5\x68", [19223] = "\xb2\xa4", [19224] = "\xc5\x69",
++ [19227] = "\xc5\x6a", [19228] = "\xc5\x6b", [19231] = "\xc5\x6c",
++ [19234] = "\xcd\xdf", [19237] = "\xc5\x6d", [19238] = "\xc5\x6e",
++ [19239] = "\xdd\xb8", [19240] = "\xdd\xb7", [19241] = "\xdd\xba",
++ [19242] = "\xb5\xbd", [19243] = "\xc5\x6f", [19245] = "\xb6\xd6",
++ [19246] = "\xb4\xbe", [19247] = "\xc5\x70", [19251] = "\xdd\xbd",
++ [19254] = "\xc5\x71", [19255] = "\xdd\xbc", [19257] = "\xdd\xbe",
++ [19258] = "\xc5\x72", [19260] = "\xb2\xce", [19261] = "\xc5\x73",
++ [19262] = "\xc3\xb7", [19264] = "\xdd\xbf", [19266] = "\xc5\x74",
++ [19267] = "\xb4\xbf", [19268] = "\xdd\xc1", [19270] = "\xc5\x75",
++ [19272] = "\xc5\x76", [19273] = "\xdd\xc0", [19275] = "\xdd\xc2",
++ [19277] = "\xc5\x77", [19279] = "\xdd\xc3", [19280] = "\xc5\x78",
++ [19281] = "\xdd\xc4", [19282] = "\xbb\xdf", [19283] = "\xc0\xb5",
++ [19284] = "\xba\xa1", [19286] = "\xc9\xf0", [19287] = "\xc5\x79",
++ [19289] = "\xca\xe2", [19290] = "\xcf\xc4", [19291] = "\xc5\x7a",
++ [19294] = "\xc5\x7b", [19295] = "\xbb\xf5", [19296] = "\xc5\x7c",
++ [19299] = "\xba\xd0", [19300] = "\xce\xf2", [19301] = "\xc5\x7d",
++ [19304] = "\xdd\xc5", [19305] = "\xdd\xc6", [19307] = "\xbb\xe0",
++ [19309] = "\xc5\x7e", [19310] = "\xc6\x21", [19311] = "\xdd\xc7",
++ [19312] = "\xdd\xc8", [19314] = "\xc6\x22", [19315] = "\xdd\xca",
++ [19316] = "\xdd\xc9", [19317] = "\xc6\x23", [19318] = "\xcb\xd8",
++ [19321] = "\xbd\xde", [19322] = "\xbc\xec", [19323] = "\xbb\xc4",
++ [19325] = "\xdd\xcb", [19333] = "\xdd\xcd", [19334] = "\xbf\xa3",
++ [19335] = "\xc6\x24", [19336] = "\xdd\xcc", [19339] = "\xc6\x25",
++ [19342] = "\xdd\xce", [19343] = "\xc6\x26", [19344] = "\xc6\x27",
++ [19346] = "\xc6\x28", [19347] = "\xc6\x29", [19348] = "\xdd\xcf",
++ [19352] = "\xc6\x2a", [19353] = "\xc6\x2b", [19354] = "\xdd\xd0",
++ [19355] = "\xdd\xd1", [19356] = "\xc6\x2c", [19357] = "\xc6\x2d",
++ [19358] = "\xc6\x2e", [19359] = "\xdd\xd2", [19360] = "\xc6\x2f",
++ [19361] = "\xdd\xd4", [19362] = "\xdd\xd3", [19363] = "\xdd\xd5",
++ [19364] = "\xb2\xa5", [19365] = "\xc3\xca", [19367] = "\xdd\xd6",
++ [19368] = "\xc6\x30", [19369] = "\xc6\x31", [19370] = "\xbb\xa6",
++ [19371] = "\xb3\xcc", [19372] = "\xdd\xd7", [19373] = "\xc6\x32",
++ [19374] = "\xc6\x33", [19375] = "\xc5\xc2", [19376] = "\xd4\xcc",
++ [19379] = "\xc6\x34", [19380] = "\xc6\x35", [19381] = "\xb5\xa3",
++ [19382] = "\xdd\xd8", [19385] = "\xc6\x36", [19387] = "\xdd\xd9",
++ [19388] = "\xc6\x37", [19389] = "\xca\xec", [19390] = "\xcb\xe8",
++ [19394] = "\xc6\xc7", [19395] = "\xdd\xda", [19396] = "\xc8\xe6",
++ [19398] = "\xc6\x38", [19400] = "\xc8\xfb", [19402] = "\xc6\x39",
++ [19403] = "\xcc\xd3", [19407] = "\xdd\xdb", [19409] = "\xc6\x3a",
++ [19411] = "\xc6\x3b", [19414] = "\xc6\x3c", [19415] = "\xc6\x3d",
++ [19419] = "\xdd\xdd", [19420] = "\xdd\xdc", [19422] = "\xc6\x3e",
++ [19423] = "\xdd\xdf", [19425] = "\xc6\x3f", [19427] = "\xdd\xde",
++ [19431] = "\xc6\x40", [19433] = "\xc6\x41", [19439] = "\xc6\x42",
++ [19442] = "\xc6\x43", [19444] = "\xc6\x44", [19445] = "\xc6\x45",
++ [19448] = "\xdd\xe1", [19449] = "\xc6\x46", [19453] = "\xc6\x47",
++ [19454] = "\xc6\x48", [19455] = "\xbb\xe1", [19456] = "\xc6\x49",
++ [19457] = "\xcc\xb1", [19458] = "\xc6\x4a", [19459] = "\xdd\xe2",
++ [19460] = "\xdd\xe3", [19463] = "\xb5\xa4", [19465] = "\xc6\x4b",
++ [19467] = "\xdd\xe4", [19471] = "\xc6\x4c", [19475] = "\xdd\xe6",
++ [19476] = "\xdd\xe5", [19478] = "\xc6\x4d", [19479] = "\xc6\x4e",
++ [19480] = "\xc6\x4f", [19484] = "\xc6\x50", [19486] = "\xc6\x51",
++ [19491] = "\xc6\x52", [19492] = "\xbf\xe5", [19493] = "\xc6\x53",
++ [19494] = "\xc6\x54", [19495] = "\xc9\xb9", [19496] = "\xb1\xca",
++ [19498] = "\xc6\x55", [19499] = "\xc6\x56", [19502] = "\xc8\xc5",
++ [19503] = "\xc6\x57", [19504] = "\xc4\xf5", [19505] = "\xbd\xc1",
++ [19506] = "\xb5\xe1", [19514] = "\xc6\x58", [19515] = "\xc6\x59",
++ [19517] = "\xc6\x5a", [19518] = "\xc8\xc6", [19519] = "\xc6\x5b",
++ [19520] = "\xbc\xae", [19522] = "\xc6\x5c", [19524] = "\xc6\x5d",
++ [19525] = "\xdd\xe8", [19527] = "\xb4\xc0", [19529] = "\xc6\x5e",
++ [19530] = "\xb1\xf8", [19531] = "\xc6\x5f", [19532] = "\xc6\x60",
++ [19533] = "\xc6\xf2", [19534] = "\xdd\xe7", [19535] = "\xb9\xbe",
++ [19536] = "\xc3\xd3", [19538] = "\xdd\xe9", [19543] = "\xc7\x36",
++ [19544] = "\xdd\xf1", [19546] = "\xdd\xea", [19547] = "\xc6\x61",
++ [19549] = "\xc6\x62", [19551] = "\xc6\x63", [19552] = "\xc2\xc1",
++ [19554] = "\xb5\xe2", [19555] = "\xdd\xf2", [19556] = "\xc6\x64",
++ [19558] = "\xc6\x65", [19560] = "\xc6\x66", [19561] = "\xc6\x67",
++ [19562] = "\xb7\xe8", [19563] = "\xc6\x68", [19565] = "\xb5\xa5",
++ [19566] = "\xdd\xf0", [19569] = "\xdd\xee", [19570] = "\xdd\xeb",
++ [19571] = "\xcd\xe0", [19573] = "\xc6\x69", [19574] = "\xc6\x6a",
++ [19575] = "\xc6\x6b", [19576] = "\xc4\xc0", [19577] = "\xc6\x6c",
++ [19580] = "\xc6\xd9", [19581] = "\xdd\xec", [19584] = "\xdd\xf4",
++ [19586] = "\xdd\xf3", [19587] = "\xb7\xa3", [19588] = "\xc6\x6d",
++ [19589] = "\xc6\x6e", [19590] = "\xb2\xad", [19591] = "\xc6\x6f",
++ [19592] = "\xc6\x70", [19593] = "\xba\xbb", [19594] = "\xdd\xed",
++ [19595] = "\xdd\xef", [19596] = "\xc6\x71", [19599] = "\xc6\x72",
++ [19601] = "\xcb\xd7", [19602] = "\xc2\xf4", [19611] = "\xcb\xf7",
++ [19614] = "\xdd\xfc", [19616] = "\xc6\x73", [19617] = "\xdd\xfd",
++ [19618] = "\xc6\x74", [19619] = "\xb2\xcf", [19620] = "\xc6\x75",
++ [19624] = "\xca\xa8", [19625] = "\xcc\xfd", [19626] = "\xde\xa1",
++ [19627] = "\xbc\xa3", [19628] = "\xbe\xc2", [19629] = "\xdd\xf8",
++ [19630] = "\xdd\xfe", [19631] = "\xb1\xe8", [19633] = "\xb6\xb7",
++ [19634] = "\xc6\x76", [19636] = "\xdd\xf5", [19637] = "\xdd\xfa",
++ [19638] = "\xc6\x77", [19641] = "\xc0\xf4", [19642] = "\xc7\xf1",
++ [19644] = "\xc8\xe7", [19645] = "\xc6\x78", [19647] = "\xc6\x79",
++ [19648] = "\xc6\x7a", [19649] = "\xc6\x7b", [19650] = "\xc6\x7c",
++ [19651] = "\xdd\xf7", [19652] = "\xc6\x7d", [19653] = "\xcb\xa1",
++ [19654] = "\xc6\x7e", [19655] = "\xdd\xf9", [19657] = "\xde\xa4",
++ [19658] = "\xc7\x21", [19659] = "\xde\xa2", [19660] = "\xc7\x22",
++ [19661] = "\xdd\xfb", [19664] = "\xc7\x23", [19665] = "\xcb\xa2",
++ [19666] = "\xc7\xc8", [19667] = "\xb5\xe3", [19669] = "\xc5\xa5",
++ [19671] = "\xc7\x24", [19672] = "\xc3\xed", [19673] = "\xc7\x25",
++ [19674] = "\xde\xa5", [19675] = "\xc7\x26", [19676] = "\xc7\x27",
++ [19678] = "\xc7\x28", [19679] = "\xde\xa3", [19680] = "\xc2\xd9",
++ [19681] = "\xdd\xf6", [19682] = "\xc7\x29", [19683] = "\xb1\xcb",
++ [19684] = "\xc7\x2a", [19700] = "\xc7\x2b", [19703] = "\xc7\x2c",
++ [19706] = "\xc7\x2d", [19707] = "\xcd\xce", [19708] = "\xde\xb0",
++ [19710] = "\xc7\x2e", [19711] = "\xc7\x2f", [19713] = "\xc7\x30",
++ [19714] = "\xde\xaf", [19715] = "\xc7\x31", [19719] = "\xc0\xf6",
++ [19721] = "\xde\xac", [19722] = "\xc7\x32", [19723] = "\xcd\xec",
++ [19726] = "\xc6\xb6", [19727] = "\xde\xa6", [19733] = "\xc4\xc5",
++ [19734] = "\xc7\x33", [19735] = "\xc7\x34", [19736] = "\xc7\x35",
++ [19737] = "\xb1\xcc", [19738] = "\xb9\xbf", [19739] = "\xde\xa9",
++ [19742] = "\xc7\x37", [19743] = "\xc7\x38", [19745] = "\xc7\x39",
++ [19746] = "\xbd\xa7", [19747] = "\xde\xae", [19749] = "\xde\xad",
++ [19750] = "\xde\xa8", [19752] = "\xde\xab", [19753] = "\xc7\x3a",
++ [19755] = "\xb3\xe8", [19756] = "\xc7\x3b", [19757] = "\xde\xaa",
++ [19758] = "\xc7\xc9", [19759] = "\xc7\x3c", [19761] = "\xce\xae",
++ [19764] = "\xbe\xf4", [19765] = "\xc0\xf5", [19783] = "\xc7\x3d",
++ [19785] = "\xde\xb6", [19786] = "\xde\xb4", [19788] = "\xc9\xcd",
++ [19790] = "\xc7\x3e", [19791] = "\xc7\x3f", [19793] = "\xc7\x40",
++ [19795] = "\xde\xb1", [19796] = "\xde\xb3", [19797] = "\xc7\x41",
++ [19798] = "\xb1\xba", [19799] = "\xc7\x42", [19801] = "\xb9\xc0",
++ [19802] = "\xcf\xb2", [19804] = "\xb3\xbd", [19806] = "\xc9\xe2",
++ [19807] = "\xc7\x43", [19808] = "\xc7\x44", [19812] = "\xcd\xe1",
++ [19815] = "\xb3\xa4", [19816] = "\xbf\xbb", [19817] = "\xde\xb5",
++ [19820] = "\xc7\x45", [19826] = "\xc7\x46", [19829] = "\xde\xba",
++ [19831] = "\xc7\x47", [19832] = "\xbe\xc3", [19836] = "\xcd\xb0",
++ [19838] = "\xde\xb7", [19841] = "\xc7\x48", [19842] = "\xc7\x49",
++ [19843] = "\xde\xb2", [19844] = "\xc7\x4a", [19845] = "\xde\xb8",
++ [19846] = "\xc7\x4b", [19847] = "\xc7\x4c", [19848] = "\xc7\x4d",
++ [19849] = "\xce\xde", [19851] = "\xc5\xf3", [19852] = "\xc6\xc2",
++ [19866] = "\xc7\x4e", [19868] = "\xc7\x4f", [19871] = "\xb3\xb6",
++ [19874] = "\xb1\xd5", [19876] = "\xc7\x50", [19877] = "\xde\xbe",
++ [19879] = "\xc7\x51", [19880] = "\xde\xc1", [19881] = "\xc7\x52",
++ [19884] = "\xce\xc3", [19885] = "\xc7\x53", [19887] = "\xc7\x54",
++ [19888] = "\xcd\xe4", [19892] = "\xc7\x55", [19893] = "\xde\xc8",
++ [19894] = "\xde\xc2", [19895] = "\xde\xbf", [19896] = "\xc7\x56",
++ [19898] = "\xc7\x57", [19899] = "\xce\xd4", [19900] = "\xde\xc5",
++ [19902] = "\xc7\x58", [19903] = "\xc7\x59", [19905] = "\xbd\xca",
++ [19906] = "\xde\xc7", [19909] = "\xde\xcc", [19910] = "\xc7\x5a",
++ [19912] = "\xc5\xf1", [19913] = "\xde\xca", [19915] = "\xc7\x5b",
++ [19917] = "\xc7\x5c", [19918] = "\xde\xc4", [19919] = "\xc7\x5d",
++ [19920] = "\xc7\x5e", [19921] = "\xc3\xb8", [19922] = "\xc7\x5f",
++ [19924] = "\xde\xcb", [19925] = "\xc7\x60", [19926] = "\xde\xc0",
++ [19928] = "\xde\xc6", [19929] = "\xc7\x61", [19930] = "\xde\xcd",
++ [19931] = "\xb0\xfc", [19932] = "\xde\xc3", [19934] = "\xde\xce",
++ [19935] = "\xc7\x62", [19936] = "\xc7\x63", [19937] = "\xbf\xbc",
++ [19938] = "\xf4\x4c", [19939] = "\xbd\xdf", [19940] = "\xc7\x64",
++ [19941] = "\xca\xa5", [19942] = "\xc7\x65", [19943] = "\xba\xae",
++ [19944] = "\xf4\x4b", [19945] = "\xde\xbb", [19946] = "\xde\xc9",
++ [19947] = "\xc5\xba", [19948] = "\xc7\x66", [19952] = "\xc7\x67",
++ [19956] = "\xc7\x68", [19957] = "\xc0\xb6", [19959] = "\xb3\xe9",
++ [19960] = "\xba\xd1", [19961] = "\xbe\xc4", [19962] = "\xde\xbd",
++ [19963] = "\xbd\xc2", [19971] = "\xb7\xcc", [19973] = "\xde\xbc",
++ [19977] = "\xde\xd2", [19978] = "\xbd\xed", [19979] = "\xb8\xba",
++ [19981] = "\xde\xe1", [19982] = "\xc7\x69", [19983] = "\xde\xdb",
++ [19984] = "\xb5\xf4", [19985] = "\xc5\xcf", [19986] = "\xc7\x6a",
++ [19987] = "\xde\xd6", [19988] = "\xde\xdf", [19989] = "\xb0\xaf",
++ [19990] = "\xb1\xb2", [19991] = "\xc7\x6b", [19993] = "\xb2\xb9",
++ [19995] = "\xde\xd8", [19996] = "\xc2\xac", [19997] = "\xde\xcf",
++ [19998] = "\xde\xd1", [19999] = "\xb9\xc1", [20002] = "\xc7\x6c",
++ [20006] = "\xc7\x6d", [20008] = "\xde\xe2", [20009] = "\xc7\x6e",
++ [20010] = "\xde\xdd", [20011] = "\xc7\x6f", [20012] = "\xc7\x70",
++ [20014] = "\xde\xd5", [20019] = "\xde\xdc", [20020] = "\xc7\x71",
++ [20021] = "\xc7\x72", [20024] = "\xc7\x73", [20025] = "\xc7\x74",
++ [20026] = "\xcc\xab", [20027] = "\xc7\x75", [20029] = "\xde\xda",
++ [20030] = "\xde\xde", [20031] = "\xc7\x76", [20033] = "\xc7\x77",
++ [20034] = "\xc7\x78", [20035] = "\xc7\x79", [20036] = "\xc7\x7a",
++ [20038] = "\xb8\xd0", [20039] = "\xc7\x7b", [20040] = "\xbe\xc5",
++ [20043] = "\xc3\xb9", [20044] = "\xc7\x7c", [20045] = "\xc7\x7d",
++ [20046] = "\xc7\x7e", [20047] = "\xde\xd4", [20050] = "\xc8\x21",
++ [20051] = "\xc8\x22", [20055] = "\xcd\xaf", [20056] = "\xc8\x23",
++ [20059] = "\xde\xd7", [20062] = "\xde\xd0", [20063] = "\xc5\xf2",
++ [20066] = "\xde\xd3", [20067] = "\xc8\x24", [20070] = "\xde\xd9",
++ [20075] = "\xc8\x25", [20077] = "\xc8\x26", [20078] = "\xcf\xd1",
++ [20079] = "\xbc\xbe", [20080] = "\xcb\xfe", [20082] = "\xde\xe3",
++ [20092] = "\xc8\xae", [20093] = "\xc8\x27", [20095] = "\xde\xef",
++ [20096] = "\xb8\xbb", [20099] = "\xc8\x28", [20102] = "\xbd\xe0",
++ [20104] = "\xde\xe5", [20105] = "\xc8\x29", [20108] = "\xce\xaf",
++ [20109] = "\xb9\xc2", [20111] = "\xde\xf2", [20112] = "\xc8\x2a",
++ [20114] = "\xb0\xee", [20117] = "\xde\xf0", [20119] = "\xc8\x2b",
++ [20122] = "\xde\xe4", [20125] = "\xc8\x2c", [20126] = "\xc8\x2d",
++ [20127] = "\xde\xea", [20129] = "\xc8\x2e", [20130] = "\xde\xec",
++ [20131] = "\xc8\x2f", [20134] = "\xcd\xcf", [20135] = "\xde\xe7",
++ [20138] = "\xc5\xae", [20139] = "\xc8\x30", [20141] = "\xde\xe9",
++ [20143] = "\xc8\x31", [20144] = "\xc8\x32", [20145] = "\xc8\x33",
++ [20146] = "\xde\xf1", [20147] = "\xc8\x34", [20148] = "\xde\xeb",
++ [20149] = "\xcc\xc7", [20151] = "\xc8\x35", [20152] = "\xc8\x36",
++ [20153] = "\xde\xe6", [20154] = "\xc8\x37", [20155] = "\xbc\xa2",
++ [20156] = "\xde\xfe", [20157] = "\xc8\x38", [20158] = "\xc8\x39",
++ [20159] = "\xc8\x3a", [20161] = "\xb3\xea", [20163] = "\xde\xe8",
++ [20164] = "\xde\xed", [20165] = "\xde\xee", [20173] = "\xc2\xec",
++ [20174] = "\xc2\xda", [20187] = "\xc8\x3b", [20188] = "\xde\xf6",
++ [20189] = "\xc8\x3c", [20190] = "\xc8\x3d", [20191] = "\xde\xfc",
++ [20194] = "\xde\xfa", [20196] = "\xc5\xa9", [20199] = "\xdf\xa3",
++ [20200] = "\xde\xf7", [20201] = "\xc8\x3e", [20203] = "\xc8\x3f",
++ [20205] = "\xc8\x40", [20206] = "\xde\xf8", [20207] = "\xde\xe0",
++ [20209] = "\xb5\xf9", [20210] = "\xc9\xba", [20212] = "\xc8\x41",
++ [20214] = "\xbc\xbf", [20216] = "\xc8\x42", [20217] = "\xb9\xf7",
++ [20218] = "\xc8\x43", [20220] = "\xc8\x44", [20221] = "\xc8\x45",
++ [20223] = "\xcf\xb3", [20225] = "\xde\xf4", [20227] = "\xdf\xa2",
++ [20228] = "\xb1\xe9", [20229] = "\xc1\xe6", [20230] = "\xc8\x46",
++ [20232] = "\xc8\x47", [20234] = "\xc8\x48", [20235] = "\xc8\x49",
++ [20240] = "\xc7\xf9", [20242] = "\xb4\xc1", [20243] = "\xce\xfa",
++ [20246] = "\xc8\x4a", [20249] = "\xc8\x4b", [20250] = "\xc8\x4c",
++ [20251] = "\xcc\xa1", [20252] = "\xc4\xd2", [20253] = "\xc8\x53",
++ [20255] = "\xc8\x4d", [20256] = "\xc8\x4e", [20257] = "\xde\xfb",
++ [20258] = "\xde\xfd", [20259] = "\xc8\x4f", [20262] = "\xc8\x50",
++ [20264] = "\xc1\xb2", [20267] = "\xc8\x51", [20268] = "\xc8\x52",
++ [20270] = "\xdf\xa1", [20271] = "\xde\xf9", [20273] = "\xde\xf3",
++ [20277] = "\xb4\xc3", [20287] = "\xc8\x54", [20289] = "\xc8\x55",
++ [20290] = "\xc8\x56", [20291] = "\xc8\x57", [20292] = "\xb7\xe9",
++ [20295] = "\xc8\x58", [20296] = "\xdf\xaf", [20297] = "\xc8\x59",
++ [20298] = "\xc8\x5a", [20299] = "\xdf\xaa", [20300] = "\xc0\xf8",
++ [20301] = "\xc8\x5b", [20302] = "\xc8\x5c", [20303] = "\xb3\xe3",
++ [20305] = "\xc8\x5d", [20306] = "\xc8\x5e", [20308] = "\xbd\xe1",
++ [20310] = "\xdf\xb3", [20312] = "\xc8\x5f", [20316] = "\xc8\x60",
++ [20317] = "\xdf\xac", [20318] = "\xc4\xac", [20319] = "\xdf\xa9",
++ [20320] = "\xc4\xd9", [20324] = "\xdf\xcc", [20328] = "\xdf\xa6",
++ [20330] = "\xdf\xa5", [20332] = "\xdf\xae", [20333] = "\xc8\x61",
++ [20334] = "\xc8\x62", [20336] = "\xdf\xa8", [20337] = "\xdf\xa7",
++ [20338] = "\xdf\xad", [20339] = "\xc8\x63", [20340] = "\xc0\xa1",
++ [20342] = "\xdf\xa4", [20343] = "\xc8\x64", [20344] = "\xc8\x65",
++ [20347] = "\xc8\x66", [20348] = "\xc8\x67", [20349] = "\xc8\x68",
++ [20350] = "\xdf\xb0", [20352] = "\xc8\x69", [20353] = "\xdf\xb1",
++ [20354] = "\xc8\x6a", [20355] = "\xc8\x6b", [20356] = "\xc8\x6c",
++ [20358] = "\xc8\x6d", [20359] = "\xb4\xc2", [20362] = "\xc8\x6e",
++ [20367] = "\xc8\x6f", [20368] = "\xc8\x70", [20369] = "\xdf\xb6",
++ [20371] = "\xdf\xb5", [20372] = "\xdf\xb7", [20373] = "\xc8\x71",
++ [20374] = "\xc8\x72", [20375] = "\xc8\x73", [20376] = "\xc8\x74",
++ [20378] = "\xdf\xba", [20382] = "\xc8\x75", [20383] = "\xc8\x76",
++ [20384] = "\xc8\x77", [20385] = "\xc5\xc3", [20387] = "\xdf\xb4",
++ [20389] = "\xc8\x78", [20390] = "\xc8\x79", [20393] = "\xdf\xb8",
++ [20396] = "\xc8\x7a", [20400] = "\xb7\xe3", [20401] = "\xc2\xf9",
++ [20402] = "\xdf\xb2", [20403] = "\xc7\xbb", [20405] = "\xc8\x7b",
++ [20406] = "\xdf\xb9", [20407] = "\xc8\x7c", [20408] = "\xc8\x7d",
++ [20410] = "\xc8\x7e", [20420] = "\xdf\xbe", [20421] = "\xdf\xbc",
++ [20424] = "\xdf\xbf", [20426] = "\xc9\x21", [20427] = "\xdf\xc2",
++ [20430] = "\xc9\x22", [20431] = "\xdf\xbb", [20432] = "\xb9\xea",
++ [20433] = "\xc7\xa8", [20436] = "\xde\xb9", [20440] = "\xc9\x23",
++ [20441] = "\xc9\x24", [20443] = "\xcd\xf4", [20444] = "\xdf\xbd",
++ [20446] = "\xdf\xc1", [20447] = "\xc2\xf5", [20448] = "\xc9\x25",
++ [20449] = "\xdf\xc0", [20451] = "\xdf\xab", [20453] = "\xc9\x26",
++ [20454] = "\xef\xe9", [20457] = "\xc9\x27", [20458] = "\xdf\xc5",
++ [20460] = "\xc9\x28", [20461] = "\xc9\x29", [20462] = "\xdf\xc9",
++ [20464] = "\xc9\x2a", [20465] = "\xdf\xc7", [20469] = "\xc9\x2b",
++ [20470] = "\xc9\x2c", [20471] = "\xc9\x2d", [20473] = "\xdf\xc3",
++ [20475] = "\xdf\xc4", [20477] = "\xc9\x2e", [20479] = "\xdf\xc8",
++ [20481] = "\xdf\xc6", [20485] = "\xc9\xce", [20487] = "\xc9\x2f",
++ [20488] = "\xdf\xce", [20490] = "\xdf\xcb", [20491] = "\xdf\xca",
++ [20493] = "\xdf\xcd", [20494] = "\xc6\xd4", [20495] = "\xdf\xcf",
++ [20496] = "\xc9\x30", [20499] = "\xc9\x31", [20502] = "\xc3\xf5",
++ [20503] = "\xc2\xed", [20504] = "\xf4\x4d", [20508] = "\xc0\xa5",
++ [20511] = "\xc9\x32", [20512] = "\xdf\xd0", [20514] = "\xdf\xd2",
++ [20516] = "\xc9\x33", [20519] = "\xc9\x34", [20521] = "\xc9\x35",
++ [20524] = "\xc9\x36", [20526] = "\xdf\xd1", [20531] = "\xc9\x37",
++ [20532] = "\xc9\x38", [20536] = "\xc9\x39", [20537] = "\xc9\x3a",
++ [20538] = "\xc9\x3b", [20539] = "\xc9\x3c", [20540] = "\xde\xf5",
++ [20542] = "\xc9\x41", [20545] = "\xdf\xd3", [20548] = "\xc9\x3d",
++ [20549] = "\xc9\x3e", [20552] = "\xc6\xe7", [20557] = "\xc9\x3f",
++ [20558] = "\xc9\x40", [20563] = "\xdf\xd4", [20564] = "\xc9\x42",
++ [20565] = "\xc9\x43", [20571] = "\xb2\xd0", [20572] = "\xc9\x44",
++ [20574] = "\xc9\x45", [20575] = "\xc5\xf4", [20576] = "\xb3\xa5",
++ [20581] = "\xc9\x46", [20582] = "\xc9\x47", [20584] = "\xb5\xe4",
++ [20588] = "\xbc\xde", [20589] = "\xba\xd2", [20590] = "\xc9\x48",
++ [20593] = "\xc9\x49", [20597] = "\xc9\x4a", [20598] = "\xc9\x4b",
++ [20601] = "\xcf\xa7", [20602] = "\xbf\xe6", [20606] = "\xb1\xea",
++ [20610] = "\xdf\xd6", [20612] = "\xc9\x4c", [20613] = "\xc9\x4d",
++ [20614] = "\xc9\x4e", [20615] = "\xc9\x4f", [20616] = "\xc9\x50",
++ [20617] = "\xdf\xd5", [20619] = "\xc9\x51", [20628] = "\xc9\x52",
++ [20635] = "\xc9\x53", [20636] = "\xdf\xd9", [20637] = "\xc3\xba",
++ [20638] = "\xdf\xdc", [20639] = "\xdf\xd7", [20640] = "\xc9\x54",
++ [20641] = "\xc9\x55", [20643] = "\xdf\xdb", [20644] = "\xc9\x56",
++ [20647] = "\xc9\x57", [20648] = "\xdf\xda", [20649] = "\xc5\xc0",
++ [20650] = "\xb0\xd9", [20651] = "\xf4\x2e", [20664] = "\xce\xf5",
++ [20666] = "\xc9\x58", [20667] = "\xdf\xde", [20671] = "\xb1\xa8",
++ [20673] = "\xc9\x59", [20675] = "\xc9\x5a", [20676] = "\xc9\x5b",
++ [20677] = "\xc9\x5c", [20678] = "\xc9\x5d", [20680] = "\xc9\x5e",
++ [20681] = "\xdf\xe0", [20684] = "\xc9\x5f", [20685] = "\xdf\xdf",
++ [20687] = "\xdf\xdd", [20692] = "\xc9\x60", [20705] = "\xdf\xd8",
++ [20713] = "\xcb\xa3", [20714] = "\xc9\x61", [20717] = "\xdf\xe2",
++ [20723] = "\xc9\x62", [20724] = "\xc9\x63", [20725] = "\xc9\x64",
++ [20726] = "\xc9\x65", [20727] = "\xc9\x66", [20729] = "\xdf\xe1",
++ [20731] = "\xc9\x67", [20732] = "\xc9\x68", [20735] = "\xc9\x69",
++ [20740] = "\xb1\xeb", [20745] = "\xdf\xe4", [20746] = "\xca\xb2",
++ [20748] = "\xdf\xe3", [20750] = "\xc9\x6a", [20752] = "\xc9\x6b",
++ [20753] = "\xcc\xb5", [20758] = "\xbe\xc7", [20763] = "\xc9\x6c",
++ [20765] = "\xc9\x6d", [20767] = "\xc9\x6e", [20768] = "\xc9\x6f",
++ [20769] = "\xc9\x70", [20774] = "\xc1\xb3", [20776] = "\xc9\x71",
++ [20780] = "\xbe\xc6", [20785] = "\xc9\x72", [20789] = "\xc9\x73",
++ [20790] = "\xc9\x74", [20791] = "\xc9\x75", [20793] = "\xce\xfb",
++ [20794] = "\xc9\x76", [20795] = "\xc9\x77", [20796] = "\xdf\xea",
++ [20798] = "\xc0\xf9", [20800] = "\xc9\x78", [20802] = "\xc9\x79",
++ [20805] = "\xdf\xe6", [20806] = "\xdf\xeb", [20807] = "\xc9\x7a",
++ [20809] = "\xb1\xec", [20810] = "\xc9\x7b", [20812] = "\xc9\x7c",
++ [20814] = "\xc9\x7d", [20816] = "\xc9\x7e", [20818] = "\xdf\xe9",
++ [20820] = "\xc7\xe1", [20821] = "\xdf\xe5", [20822] = "\xdf\xe8",
++ [20823] = "\xbe\xc8", [20824] = "\xca\x21", [20825] = "\xc8\xd1",
++ [20828] = "\xdf\xec", [20830] = "\xbc\xd1", [20841] = "\xca\x22",
++ [20845] = "\xc0\xfa", [20848] = "\xca\x23", [20852] = "\xdf\xef",
++ [20853] = "\xca\x24", [20855] = "\xca\x25", [20856] = "\xdf\xe7",
++ [20858] = "\xb7\xa7", [20860] = "\xca\x26", [20863] = "\xdf\xed",
++ [20866] = "\xca\x27", [20868] = "\xcd\xd0", [20869] = "\xdf\xf0",
++ [20873] = "\xf4\xa6", [20874] = "\xca\x28", [20875] = "\xca\x29",
++ [20879] = "\xbd\xcf", [20880] = "\xca\x2a", [20882] = "\xca\x2b",
++ [20888] = "\xdf\xf1", [20892] = "\xdf\xf2", [20895] = "\xca\x2c",
++ [20896] = "\xca\x2d", [20897] = "\xc7\xae", [20898] = "\xca\x2e",
++ [20899] = "\xca\x2f", [20905] = "\xdf\xf4", [20906] = "\xca\x30",
++ [20910] = "\xdf\xf5", [20911] = "\xca\x31", [20912] = "\xca\x32",
++ [20913] = "\xca\x33", [20915] = "\xc7\xb3", [20916] = "\xca\x34",
++ [20920] = "\xc5\xf5", [20921] = "\xdf\xf7", [20923] = "\xca\x35",
++ [20924] = "\xca\x36", [20926] = "\xdf\xf9", [20928] = "\xce\xd5",
++ [20930] = "\xdf\xf6", [20931] = "\xca\x37", [20932] = "\xdf\xf8",
++ [20933] = "\xb1\xed", [20934] = "\xca\x38", [20935] = "\xdf\xf3",
++ [20937] = "\xca\x39", [20938] = "\xca\x3a", [20940] = "\xca\x3b",
++ [20943] = "\xd3\xdb", [20944] = "\xdf\xfa", [20949] = "\xc1\xe7",
++ [20950] = "\xbb\xb8", [20951] = "\xdf\xfc", [20956] = "\xdf\xfb",
++ [20957] = "\xbf\xa4", [20958] = "\xd2\xd9", [20965] = "\xdf\xfd",
++ [20968] = "\xca\x3c", [20969] = "\xe0\xa1", [20971] = "\xdf\xee",
++ [20972] = "\xdf\xfe", [20974] = "\xca\x3d", [20975] = "\xe0\xa2",
++ [20976] = "\xca\x3e", [20982] = "\xc7\xfa", [20983] = "\xca\x3f",
++ [20984] = "\xca\x40", [20985] = "\xca\x41", [20989] = "\xe0\xa3",
++ [20992] = "\xe0\xa4", [20995] = "\xca\x42", [20999] = "\xca\x43",
++ [21002] = "\xca\x44", [21003] = "\xe0\xa5", [21005] = "\xca\x45",
++ [21007] = "\xca\x46", [21012] = "\xca\x47", [21016] = "\xe0\xa6",
++ [21018] = "\xc4\xde", [21019] = "\xca\x48", [21020] = "\xe0\xa8",
++ [21021] = "\xe0\xa7", [21023] = "\xca\x49", [21024] = "\xe0\xa9",
++ [21026] = "\xe0\xaa", [21028] = "\xca\x4a", [21029] = "\xbc\xdf",
++ [21030] = "\xc9\xe3", [21032] = "\xca\x4b", [21033] = "\xca\x4c",
++ [21034] = "\xcc\xec", [21035] = "\xe0\xab", [21036] = "\xe0\xac",
++ [21037] = "\xc1\xd6", [21038] = "\xbc\xa4", [21039] = "\xe0\xad",
++ [21040] = "\xe0\xae", [21041] = "\xca\x4d", [21042] = "\xca\x4e",
++ [21043] = "\xca\x4f", [21045] = "\xca\x50", [21046] = "\xe0\xaf",
++ [21047] = "\xca\xd2", [21048] = "\xc8\xc7", [21051] = "\xe0\xb0",
++ [21052] = "\xc7\xd7", [21054] = "\xca\x51", [21055] = "\xca\x52",
++ [21056] = "\xca\x53", [21058] = "\xc4\xad", [21059] = "\xca\x54",
++ [21061] = "\xca\x55", [21062] = "\xca\x56", [21064] = "\xe0\xb1",
++ [21065] = "\xb2\xe7", [21066] = "\xca\x57", [21067] = "\xb5\xed",
++ [21068] = "\xca\x58", [21069] = "\xcc\xc6", [21070] = "\xca\x59",
++ [21071] = "\xcc\xb6", [21072] = "\xca\x5a", [21073] = "\xb2\xb4",
++ [21074] = "\xcf\xb4", [21075] = "\xca\x5b", [21079] = "\xcb\xd2",
++ [21080] = "\xca\x5c", [21081] = "\xca\xaa", [21083] = "\xca\x5d",
++ [21086] = "\xca\x5e", [21087] = "\xca\x5f", [21089] = "\xca\x60",
++ [21090] = "\xc0\xb7", [21092] = "\xe0\xb2", [21095] = "\xca\x61",
++ [21096] = "\xca\x62", [21097] = "\xc6\xc3", [21099] = "\xca\x63",
++ [21100] = "\xca\x64", [21101] = "\xb8\xa3", [21102] = "\xe0\xb3",
++ [21103] = "\xca\x65", [21104] = "\xba\xd4", [21105] = "\xe0\xb5",
++ [21106] = "\xe0\xb4", [21108] = "\xca\x66", [21111] = "\xe0\xb6",
++ [21113] = "\xca\x67", [21117] = "\xca\x68", [21118] = "\xca\x69",
++ [21122] = "\xe0\xb7", [21123] = "\xca\x6a", [21126] = "\xe0\xb8",
++ [21131] = "\xca\x6b", [21136] = "\xb5\xbe", [21138] = "\xe0\xb9",
++ [21143] = "\xe0\xba", [21144] = "\xca\x6c", [21148] = "\xb8\xa4",
++ [21149] = "\xca\x6d", [21150] = "\xca\x6e", [21151] = "\xc8\xc8",
++ [21153] = "\xca\x6f", [21154] = "\xe0\xbc", [21156] = "\xca\x70",
++ [21158] = "\xbe\xf5", [21161] = "\xe0\xbb", [21166] = "\xca\x71",
++ [21169] = "\xca\x72", [21170] = "\xb6\xb8", [21171] = "\xe0\xbd",
++ [21172] = "\xe0\xbf", [21174] = "\xe0\xbe", [21175] = "\xca\x73",
++ [21177] = "\xca\x74", [21180] = "\xca\x75", [21182] = "\xe0\xc0",
++ [21184] = "\xb8\xd1", [21186] = "\xe0\xc1", [21189] = "\xca\x76",
++ [21190] = "\xca\x77", [21191] = "\xb6\xe9", [21192] = "\xca\x78",
++ [21193] = "\xc1\xc0", [21195] = "\xb9\xfd", [21199] = "\xca\x79",
++ [21200] = "\xe0\xc3", [21201] = "\xe0\xc4", [21202] = "\xe0\xc2",
++ [21205] = "\xca\x7a", [21209] = "\xbc\xed", [21212] = "\xc6\xc8",
++ [21213] = "\xb6\xb9", [21219] = "\xca\x7b", [21220] = "\xca\x7c",
++ [21223] = "\xe0\xc6", [21224] = "\xc3\xac", [21225] = "\xe0\xc5",
++ [21226] = "\xca\x7d", [21227] = "\xca\x7e", [21228] = "\xcf\xb5",
++ [21229] = "\xc7\xe2", [21230] = "\xcb\x21", [21234] = "\xcb\x22",
++ [21236] = "\xcb\x23", [21237] = "\xcb\x24", [21239] = "\xcb\x25",
++ [21242] = "\xe0\xc9", [21243] = "\xcb\x26", [21245] = "\xcb\x27",
++ [21250] = "\xcb\x28", [21251] = "\xcb\x29", [21254] = "\xe0\xcb",
++ [21255] = "\xe0\xc8", [21256] = "\xcb\x2a", [21257] = "\xcb\x2b",
++ [21259] = "\xcc\xd4", [21260] = "\xe0\xca", [21261] = "\xe0\xcc",
++ [21262] = "\xcb\x2c", [21263] = "\xce\xc4", [21266] = "\xcb\x2d",
++ [21268] = "\xcb\x2e", [21269] = "\xe0\xd0", [21271] = "\xcb\x2f",
++ [21272] = "\xcb\x30", [21273] = "\xe0\xcf", [21274] = "\xc3\xf6",
++ [21275] = "\xc7\xad", [21276] = "\xcb\x31", [21278] = "\xb8\xa5",
++ [21279] = "\xe0\xce", [21281] = "\xcb\x32", [21282] = "\xcb\x33",
++ [21284] = "\xe0\xcd", [21285] = "\xcb\x34", [21286] = "\xcd\xb1",
++ [21287] = "\xcd\xb2", [21290] = "\xcb\x35", [21291] = "\xcb\x36",
++ [21293] = "\xcb\x37", [21294] = "\xe0\xd1", [21295] = "\xb1\xee",
++ [21299] = "\xcb\x38", [21300] = "\xb9\xf6", [21301] = "\xbb\xe2",
++ [21309] = "\xcb\x39", [21310] = "\xe0\xd2", [21311] = "\xe0\xd3",
++ [21312] = "\xcb\x3a", [21314] = "\xcb\x3b", [21318] = "\xcb\x3c",
++ [21319] = "\xe0\xd5", [21320] = "\xcb\x3d", [21325] = "\xcb\x3e",
++ [21326] = "\xcb\x3f", [21327] = "\xcb\x40", [21328] = "\xcb\x41",
++ [21331] = "\xbd\xc3", [21334] = "\xcb\x42", [21335] = "\xcb\x43",
++ [21336] = "\xe0\xd7", [21337] = "\xcb\x44", [21338] = "\xe0\xd6",
++ [21339] = "\xcb\x45", [21340] = "\xcb\x46", [21342] = "\xcb\x47",
++ [21343] = "\xcb\x48", [21344] = "\xe0\xd8", [21345] = "\xcb\x49",
++ [21346] = "\xb3\xcd", [21349] = "\xe0\xda", [21351] = "\xcb\x4a",
++ [21352] = "\xe0\xd9", [21353] = "\xcb\x4b", [21354] = "\xe0\xdc",
++ [21355] = "\xe0\xdb", [21356] = "\xcb\x4c", [21360] = "\xcb\x4d",
++ [21361] = "\xcb\x4e", [21363] = "\xcb\x4f", [21364] = "\xb8\xbc",
++ [21365] = "\xcb\x50", [21366] = "\xcb\x51", [21367] = "\xce\xa8",
++ [21369] = "\xb6\xcc", [21371] = "\xb2\xa6", [21374] = "\xcb\x52",
++ [21376] = "\xcb\x53", [21379] = "\xcb\x54", [21381] = "\xcb\x55",
++ [21382] = "\xb6\xea", [21383] = "\xcb\x56", [21384] = "\xcb\x57",
++ [21388] = "\xcb\x58", [21390] = "\xcb\x59", [21391] = "\xcb\x5a",
++ [21392] = "\xcb\x5b", [21394] = "\xcb\x5c", [21397] = "\xcb\x5d",
++ [21398] = "\xcb\x5e", [21401] = "\xb4\xe1", [21402] = "\xcb\x5f",
++ [21403] = "\xcb\x60", [21405] = "\xcb\x61", [21410] = "\xce\xe8",
++ [21411] = "\xe0\xde", [21413] = "\xcb\x62", [21415] = "\xcb\x63",
++ [21417] = "\xcb\x64", [21419] = "\xe0\xe0", [21420] = "\xcb\x65",
++ [21421] = "\xcb\x66", [21423] = "\xcb\x67", [21424] = "\xe0\xe1",
++ [21426] = "\xb2\xd1", [21429] = "\xcb\x68", [21430] = "\xcb\x69",
++ [21432] = "\xe0\xdd", [21433] = "\xcb\x6a", [21434] = "\xbb\xb9",
++ [21435] = "\xcb\x6b", [21436] = "\xcb\x6c", [21437] = "\xc4\xc1",
++ [21438] = "\xe0\xdf", [21439] = "\xcb\x6d", [21442] = "\xcb\x6e",
++ [21443] = "\xcb\x6f", [21446] = "\xcb\x70", [21449] = "\xcb\x71",
++ [21453] = "\xcb\x72", [21454] = "\xe0\xe4", [21456] = "\xbc\xee",
++ [21457] = "\xcb\x73", [21459] = "\xcb\x74", [21461] = "\xe0\xe2",
++ [21462] = "\xcb\x75", [21463] = "\xcb\x76", [21465] = "\xcb\x77",
++ [21466] = "\xb7\xbe", [21469] = "\xc8\xc9", [21470] = "\xe0\xe3",
++ [21473] = "\xe0\xfe", [21476] = "\xcb\x78", [21477] = "\xcb\x79",
++ [21479] = "\xcb\x7a", [21480] = "\xe0\xe9", [21481] = "\xcb\x7b",
++ [21482] = "\xcb\x7c", [21483] = "\xcb\x7d", [21485] = "\xcb\x7e",
++ [21486] = "\xb8\xbd", [21487] = "\xcc\x21", [21488] = "\xcc\x22",
++ [21489] = "\xcc\x23", [21491] = "\xb5\xe5", [21492] = "\xcc\x24",
++ [21493] = "\xe0\xe6", [21494] = "\xcd\xfd", [21495] = "\xcc\x25",
++ [21497] = "\xce\xb0", [21498] = "\xcc\x26", [21505] = "\xcc\x27",
++ [21514] = "\xcc\x28", [21515] = "\xcc\x29", [21522] = "\xc2\xf6",
++ [21524] = "\xcc\x2a", [21525] = "\xe0\xe8", [21526] = "\xcc\x2b",
++ [21528] = "\xcc\x2c", [21529] = "\xcc\x2d", [21530] = "\xcc\x2e",
++ [21531] = "\xcc\x2f", [21532] = "\xcc\x30", [21533] = "\xcc\x31",
++ [21534] = "\xcc\x32", [21535] = "\xcc\x33", [21536] = "\xcc\x34",
++ [21537] = "\xcc\x35", [21538] = "\xe0\xea", [21539] = "\xce\xd6",
++ [21540] = "\xb6\xd7", [21541] = "\xc8\xfc", [21542] = "\xc7\xca",
++ [21545] = "\xcc\x36", [21546] = "\xe0\xeb", [21551] = "\xe0\xed",
++ [21552] = "\xcc\x37", [21553] = "\xe0\xf0", [21555] = "\xcc\x38",
++ [21556] = "\xcc\x39", [21558] = "\xcc\x3a", [21559] = "\xcc\x3b",
++ [21563] = "\xcc\x3c", [21565] = "\xcc\x3d", [21569] = "\xcc\x3e",
++ [21570] = "\xcc\x3f", [21573] = "\xe0\xec", [21575] = "\xcc\x40",
++ [21577] = "\xe0\xef", [21578] = "\xb8\xea", [21579] = "\xb1\xcd",
++ [21580] = "\xe0\xf1", [21581] = "\xcc\x41", [21582] = "\xbf\xf0",
++ [21583] = "\xe0\xee", [21584] = "\xce\xdc", [21586] = "\xcc\x42",
++ [21587] = "\xe0\xf4", [21588] = "\xf4\xa4", [21590] = "\xcc\x43",
++ [21591] = "\xcc\x44", [21592] = "\xcc\x45", [21593] = "\xe0\xf2",
++ [21594] = "\xe0\xf5", [21595] = "\xcc\x46", [21597] = "\xcc\x47",
++ [21598] = "\xcc\x48", [21599] = "\xe0\xe7", [21600] = "\xe0\xf3",
++ [21601] = "\xcc\x49", [21602] = "\xcc\x4a", [21603] = "\xba\xbc",
++ [21606] = "\xe0\xf6", [21614] = "\xe0\xf7", [21616] = "\xcc\x4b",
++ [21617] = "\xcc\x4c", [21619] = "\xcd\xfe", [21621] = "\xcc\x4d",
++ [21622] = "\xcc\x4e", [21623] = "\xcc\x4f", [21625] = "\xcc\x50",
++ [21627] = "\xe0\xf8", [21631] = "\xcc\x51", [21632] = "\xcc\x52",
++ [21633] = "\xcc\x53", [21634] = "\xcc\x54", [21640] = "\xcc\x55",
++ [21641] = "\xcc\x56", [21642] = "\xcc\x57", [21644] = "\xcc\x58",
++ [21646] = "\xe0\xf9", [21647] = "\xcc\x59", [21648] = "\xcc\x5a",
++ [21649] = "\xcc\x5b", [21650] = "\xe0\xe5", [21651] = "\xcc\x5c",
++ [21654] = "\xcc\x5d", [21655] = "\xe0\xfa", [21656] = "\xcc\x5e",
++ [21657] = "\xcc\x5f", [21658] = "\xcc\x60", [21659] = "\xcc\x61",
++ [21662] = "\xcc\x62", [21663] = "\xcc\x63", [21664] = "\xb4\xc4",
++ [21665] = "\xcc\x64", [21666] = "\xcc\x65", [21669] = "\xcc\x66",
++ [21673] = "\xcc\x67", [21675] = "\xcc\x68", [21677] = "\xbc\xa5",
++ [21679] = "\xcc\x69", [21688] = "\xcc\x6a", [21689] = "\xcc\x6b",
++ [21690] = "\xe0\xfb", [21692] = "\xcc\x6c", [21695] = "\xe0\xfc",
++ [21696] = "\xcc\x6d", [21699] = "\xcc\x6e", [21700] = "\xe0\xfd",
++ [21704] = "\xcc\x6f", [21706] = "\xcc\x70", [21707] = "\xcc\x71",
++ [21708] = "\xb1\xbb", [21710] = "\xcc\x72", [21711] = "\xcc\x73",
++ [21712] = "\xe1\xa1", [21714] = "\xc9\xbb", [21715] = "\xe1\xa2",
++ [21716] = "\xcc\x74", [21718] = "\xb4\xa4", [21719] = "\xe1\xa3",
++ [21720] = "\xcc\x75", [21721] = "\xe1\xa4", [21722] = "\xcc\x76",
++ [21723] = "\xcc\x77", [21726] = "\xe1\xa5", [21727] = "\xcc\x78",
++ [21728] = "\xe1\xa7", [21729] = "\xe1\xa8", [21730] = "\xe1\xa6",
++ [21732] = "\xcc\x79", [21734] = "\xc9\xd3", [21735] = "\xe1\xaa",
++ [21736] = "\xe1\xa9", [21738] = "\xcc\x7a", [21739] = "\xcc\x7b",
++ [21740] = "\xcc\x7c", [21743] = "\xcc\x7d", [21745] = "\xf4\x50",
++ [21747] = "\xe1\xac", [21748] = "\xe1\xab", [21749] = "\xe1\xad",
++ [21750] = "\xcc\x7e", [21756] = "\xe1\xae", [21757] = "\xe1\xb0",
++ [21758] = "\xe1\xaf", [21761] = "\xb9\xf9", [21762] = "\xcd\x21",
++ [21763] = "\xe1\xb2", [21765] = "\xe1\xb1", [21766] = "\xcd\x22",
++ [21767] = "\xcd\x23", [21768] = "\xb4\xc5", [21770] = "\xbf\xd3",
++ [21772] = "\xc5\xbc", [21774] = "\xe1\xb3", [21775] = "\xc0\xb8",
++ [21776] = "\xcd\x24", [21777] = "\xcd\x25", [21779] = "\xbb\xba",
++ [21780] = "\xcd\x26", [21781] = "\xb1\xf9", [21782] = "\xe1\xb4",
++ [21783] = "\xcd\x27", [21784] = "\xcd\xd1", [21785] = "\xcd\x28",
++ [21786] = "\xcd\x29", [21787] = "\xca\xe3", [21788] = "\xe1\xb5",
++ [21791] = "\xcd\x2a", [21792] = "\xc5\xc4", [21793] = "\xcd\xb3",
++ [21794] = "\xb9\xc3", [21795] = "\xbf\xbd", [21798] = "\xcd\x2b",
++ [21799] = "\xc3\xcb", [21800] = "\xd2\xb4", [21801] = "\xcd\x2c",
++ [21802] = "\xc4\xae", [21803] = "\xb2\xe8", [21804] = "\xe1\xb6",
++ [21805] = "\xcd\x2d", [21806] = "\xcd\x2e", [21807] = "\xcd\x2f",
++ [21808] = "\xcd\x30", [21811] = "\xcd\x31", [21812] = "\xe1\xb7",
++ [21814] = "\xe1\xbc", [21815] = "\xcd\x32", [21816] = "\xcd\x33",
++ [21817] = "\xe1\xba", [21818] = "\xe1\xb9", [21819] = "\xda\xc2",
++ [21820] = "\xb3\xa6", [21821] = "\xe1\xb8", [21822] = "\xcd\x34",
++ [21823] = "\xb0\xda", [21824] = "\xcd\x35", [21825] = "\xc8\xaa",
++ [21826] = "\xcd\x36", [21828] = "\xc8\xca", [21831] = "\xcd\x37",
++ [21833] = "\xce\xb1", [21834] = "\xe1\xbd", [21835] = "\xe1\xbb",
++ [21836] = "\xc3\xdc", [21837] = "\xc0\xa6", [21838] = "\xcd\x38",
++ [21839] = "\xcd\x39", [21840] = "\xc8\xab", [21841] = "\xcd\x3a",
++ [21842] = "\xc9\xad", [21844] = "\xe1\xbf", [21845] = "\xce\xac",
++ [21846] = "\xb7\xcd", [21847] = "\xe1\xc0", [21849] = "\xe1\xbe",
++ [21850] = "\xc8\xd6", [21851] = "\xe1\xc1", [21853] = "\xe1\xc2",
++ [21855] = "\xcd\x3b", [21856] = "\xb0\xdb", [21857] = "\xcd\x3c",
++ [21859] = "\xbe\xf6", [21860] = "\xe1\xc7", [21862] = "\xe1\xc4",
++ [21863] = "\xc6\xed", [21864] = "\xe1\xc3", [21865] = "\xcd\x3d",
++ [21866] = "\xcd\x3e", [21867] = "\xcd\x3f", [21868] = "\xcd\x40",
++ [21869] = "\xcd\x41", [21870] = "\xcd\x42", [21871] = "\xb5\xa6",
++ [21873] = "\xcd\x43", [21874] = "\xe1\xca", [21877] = "\xcd\x44",
++ [21878] = "\xe1\xc5", [21879] = "\xe1\xc6", [21881] = "\xe1\xc9",
++ [21882] = "\xe1\xc8", [21883] = "\xc9\xa5", [21886] = "\xc1\xc2",
++ [21887] = "\xc1\xc1", [21888] = "\xcd\x45", [21889] = "\xb5\xbf",
++ [21890] = "\xcd\x46", [21891] = "\xcd\x47", [21892] = "\xe1\xcb",
++ [21893] = "\xcd\x48", [21897] = "\xcd\x49", [21898] = "\xe1\xcc",
++ [21900] = "\xcd\x4a", [21901] = "\xe1\xcd", [21906] = "\xcd\x4b",
++ [21907] = "\xe1\xcf", [21908] = "\xcd\x4c", [21909] = "\xe1\xce",
++ [21915] = "\xb1\xd6", [21921] = "\xe1\xd7", [21922] = "\xc8\xe8",
++ [21923] = "\xe1\xd1", [21924] = "\xcd\x4d", [21925] = "\xe1\xd3",
++ [21928] = "\xe1\xd5", [21929] = "\xbf\xbe", [21930] = "\xcd\x4e",
++ [21932] = "\xe1\xd6", [21933] = "\xe1\xd4", [21934] = "\xbc\xc0",
++ [21935] = "\xcd\x4f", [21936] = "\xcd\x50", [21937] = "\xcd\x51",
++ [21938] = "\xe1\xd0", [21939] = "\xe1\xd2", [21940] = "\xcd\x52",
++ [21941] = "\xc9\xc2", [21942] = "\xcd\x53", [21943] = "\xbe\xc9",
++ [21946] = "\xe1\xd9", [21948] = "\xcd\x54", [21949] = "\xe1\xd8",
++ [21950] = "\xcd\x55", [21951] = "\xcd\x56", [21954] = "\xe1\xda",
++ [21956] = "\xbc\xa6", [21957] = "\xba\xaf", [21959] = "\xcd\x57",
++ [21960] = "\xc5\xf7", [21961] = "\xe1\xdb", [21963] = "\xc4\xcb",
++ [21964] = "\xcd\x58", [21966] = "\xe1\xdd", [21967] = "\xcd\x59",
++ [21968] = "\xcd\x5a", [21969] = "\xcd\x5b", [21970] = "\xce\xa1",
++ [21971] = "\xe1\xdc", [21972] = "\xcd\x5c", [21975] = "\xcd\x5d",
++ [21977] = "\xc1\xe9", [21980] = "\xcd\x5e", [21982] = "\xcd\x5f",
++ [21983] = "\xcd\x60", [21984] = "\xe1\xe2", [21985] = "\xcd\x61",
++ [21986] = "\xe1\xe4", [21987] = "\xe1\xe5", [21988] = "\xc3\xd4",
++ [21993] = "\xcd\x62", [21994] = "\xe1\xe3", [21996] = "\xe1\xe0",
++ [21998] = "\xe1\xde", [21999] = "\xe1\xdf", [22000] = "\xcd\x63",
++ [22001] = "\xe1\xe1", [22002] = "\xcd\x64", [22003] = "\xcd\x65",
++ [22004] = "\xcd\x66", [22007] = "\xcd\x67", [22008] = "\xcd\x68",
++ [22009] = "\xe1\xe8", [22010] = "\xcd\x69", [22011] = "\xe1\xe6",
++ [22012] = "\xcd\x6a", [22013] = "\xe1\xe7", [22015] = "\xcd\x6b",
++ [22018] = "\xcd\x6c", [22019] = "\xcd\x6d", [22021] = "\xcd\x6e",
++ [22022] = "\xcd\x6f", [22025] = "\xcd\x70", [22027] = "\xcd\x71",
++ [22028] = "\xcd\x72", [22029] = "\xcd\x73", [22030] = "\xcd\x74",
++ [22031] = "\xe1\xe9", [22032] = "\xe1\xeb", [22033] = "\xe1\xec",
++ [22034] = "\xe1\xed", [22035] = "\xcd\x75", [22036] = "\xe1\xee",
++ [22037] = "\xcd\x76", [22038] = "\xcd\x77", [22039] = "\xe1\xea",
++ [22041] = "\xcd\x78", [22045] = "\xcd\x79", [22048] = "\xe1\xf0",
++ [22050] = "\xcd\x7a", [22051] = "\xcd\x7b", [22052] = "\xe1\xef",
++ [22053] = "\xcd\x7c", [22056] = "\xcd\x7d", [22057] = "\xcd\x7e",
++ [22058] = "\xce\x21", [22059] = "\xe1\xf1", [22060] = "\xce\x22",
++ [22064] = "\xce\x24", [22065] = "\xce\x25", [22066] = "\xce\xc5",
++ [22067] = "\xce\x26", [22068] = "\xce\x27", [22069] = "\xce\x28",
++ [22070] = "\xe1\xf4", [22071] = "\xe1\xf2", [22072] = "\xe1\xf3",
++ [22073] = "\xce\x29", [22074] = "\xce\x23", [22075] = "\xce\x2a",
++ [22076] = "\xb4\xe2", [22082] = "\xcc\xfe", [22085] = "\xce\x2b",
++ [22086] = "\xca\xca", [22088] = "\xe1\xf6", [22089] = "\xce\x2c",
++ [22092] = "\xe1\xf5", [22095] = "\xce\x2d", [22097] = "\xe1\xf7",
++ [22098] = "\xe1\xf8", [22100] = "\xce\x2e", [22101] = "\xce\x2f",
++ [22103] = "\xe1\xfc", [22104] = "\xe1\xf9", [22105] = "\xe1\xfa",
++ [22106] = "\xe1\xfb", [22108] = "\xe1\xfd", [22109] = "\xce\x30",
++ [22110] = "\xce\x31", [22111] = "\xce\x32", [22112] = "\xe1\xfe",
++ [22113] = "\xce\x33", [22114] = "\xe2\xa1", [22116] = "\xce\x34",
++ [22118] = "\xe2\xa2", [22120] = "\xe2\xa3", [22122] = "\xc8\xaf",
++ [22123] = "\xc5\xd0", [22124] = "\xe2\xa4", [22125] = "\xc7\xf2",
++ [22126] = "\xc9\xb4", [22128] = "\xe2\xa5", [22129] = "\xce\x35",
++ [22130] = "\xf4\x51", [22131] = "\xe2\xa6", [22132] = "\xc5\xaa",
++ [22133] = "\xce\x36", [22134] = "\xb3\xa7", [22135] = "\xb9\xc4",
++ [22136] = "\xe2\xa7", [22139] = "\xe2\xa8", [22140] = "\xce\x37",
++ [22141] = "\xce\x38", [22142] = "\xe2\xa9", [22144] = "\xbb\xa9",
++ [22147] = "\xe2\xab", [22149] = "\xce\x39", [22150] = "\xe2\xaa",
++ [22153] = "\xe2\xac", [22154] = "\xe2\xad", [22155] = "\xce\x3a",
++ [22156] = "\xce\x3b", [22157] = "\xce\x3c", [22158] = "\xf4\x52",
++ [22159] = "\xce\x3d", [22160] = "\xce\x3e", [22162] = "\xce\x3f",
++ [22163] = "\xce\x40", [22164] = "\xce\x41", [22165] = "\xce\x42",
++ [22166] = "\xce\x43", [22167] = "\xce\x44", [22168] = "\xce\x45",
++ [22170] = "\xce\x46", [22173] = "\xce\x47", [22174] = "\xc8\xe9",
++ [22176] = "\xe2\xae", [22180] = "\xe2\xaf", [22183] = "\xf3\xe9",
++ [22184] = "\xe2\xb0", [22185] = "\xe2\xb1", [22186] = "\xe2\xb2",
++ [22189] = "\xce\x48", [22191] = "\xbb\xae", [22193] = "\xce\x49",
++ [22194] = "\xe2\xb3", [22195] = "\xc7\xd6", [22197] = "\xce\x4a",
++ [22198] = "\xcb\xdf", [22200] = "\xb1\xce", [22201] = "\xce\x4b",
++ [22202] = "\xb1\xd7", [22203] = "\xce\x4c", [22204] = "\xce\x4d",
++ [22205] = "\xe2\xb4", [22206] = "\xce\x4e", [22210] = "\xe2\xb6",
++ [22212] = "\xce\x4f", [22214] = "\xe2\xb5", [22215] = "\xc5\xf0",
++ [22217] = "\xce\x50", [22219] = "\xc0\xb9", [22220] = "\xdd\xb9",
++ [22222] = "\xe2\xb7", [22223] = "\xcc\xc1", [22224] = "\xce\x51",
++ [22225] = "\xe2\xb8", [22227] = "\xb4\xc6", [22228] = "\xc8\xd7",
++ [22229] = "\xe2\xb9", [22230] = "\xce\x52", [22231] = "\xe2\xba",
++ [22232] = "\xce\x53", [22234] = "\xe2\xbb", [22236] = "\xce\x54",
++ [22238] = "\xcc\xdc", [22240] = "\xce\x55", [22241] = "\xce\x56",
++ [22242] = "\xcc\xd5", [22244] = "\xc4\xbe", [22246] = "\xce\x57",
++ [22248] = "\xc1\xea", [22249] = "\xce\x58", [22251] = "\xe2\xbd",
++ [22252] = "\xce\x59", [22254] = "\xbd\xe2", [22256] = "\xce\x5a",
++ [22257] = "\xbe\xca", [22260] = "\xe2\xc0", [22262] = "\xce\x5b",
++ [22263] = "\xe2\xbf", [22264] = "\xe2\xbe", [22265] = "\xc8\xfd",
++ [22266] = "\xce\x5c", [22267] = "\xb4\xc7", [22268] = "\xb8\xa9",
++ [22270] = "\xce\x5d", [22274] = "\xce\x5e", [22276] = "\xce\x5f",
++ [22277] = "\xce\x60", [22279] = "\xce\x61", [22281] = "\xce\x62",
++ [22282] = "\xce\x63", [22283] = "\xe2\xc6", [22284] = "\xce\x64",
++ [22286] = "\xe2\xc3", [22287] = "\xbf\xbf", [22288] = "\xcc\xb2",
++ [22290] = "\xce\x65", [22292] = "\xe2\xc2", [22293] = "\xe2\xc4",
++ [22294] = "\xe2\xc5", [22296] = "\xce\x66", [22297] = "\xe2\xc1",
++ [22301] = "\xce\x67", [22302] = "\xce\x68", [22303] = "\xce\x69",
++ [22308] = "\xce\x6a", [22309] = "\xce\x6b", [22310] = "\xce\x6c",
++ [22311] = "\xe2\xc7", [22312] = "\xe2\xc8", [22313] = "\xce\x6d",
++ [22314] = "\xc4\xaf", [22316] = "\xb4\xe3", [22317] = "\xce\x6e",
++ [22318] = "\xce\x6f", [22320] = "\xc3\xe5", [22322] = "\xce\x70",
++ [22325] = "\xce\x71", [22326] = "\xce\x72", [22327] = "\xe2\xc9",
++ [22330] = "\xce\x73", [22333] = "\xce\x74", [22334] = "\xce\x75",
++ [22335] = "\xce\x76", [22338] = "\xce\x77", [22342] = "\xce\x78",
++ [22343] = "\xce\x79", [22346] = "\xe2\xca", [22347] = "\xe2\xcd",
++ [22348] = "\xce\x7a", [22350] = "\xce\x7b", [22351] = "\xce\x7c",
++ [22352] = "\xce\x7d", [22353] = "\xbf\xe7", [22354] = "\xce\x7e",
++ [22355] = "\xc6\xc4", [22356] = "\xcf\x21", [22357] = "\xe2\xce",
++ [22358] = "\xcb\xd3", [22359] = "\xcf\x22", [22360] = "\xe2\xcb",
++ [22362] = "\xcf\x23", [22363] = "\xe2\xcc", [22364] = "\xcf\x24",
++ [22368] = "\xcf\x25", [22370] = "\xcf\x26", [22371] = "\xcf\x27",
++ [22372] = "\xcf\x28", [22377] = "\xe2\xd1", [22378] = "\xcf\x29",
++ [22381] = "\xcf\x2a", [22382] = "\xe2\xd0", [22383] = "\xe2\xcf",
++ [22384] = "\xcf\x2b", [22388] = "\xcf\x2c", [22395] = "\xe2\xd3",
++ [22396] = "\xcf\x2d", [22397] = "\xcf\x2e", [22398] = "\xe2\xd2",
++ [22401] = "\xe2\xd4", [22404] = "\xcf\x2f", [22405] = "\xcf\x30",
++ [22406] = "\xcf\x31", [22410] = "\xcf\x32", [22414] = "\xe2\xd6",
++ [22415] = "\xcf\x33", [22416] = "\xe2\xd5", [22418] = "\xcf\x34",
++ [22421] = "\xca\xcd", [22423] = "\xcf\x35", [22426] = "\xcf\x36",
++ [22428] = "\xbd\xd6", [22429] = "\xce\xc6", [22430] = "\xcf\x37",
++ [22431] = "\xcf\x38", [22432] = "\xe2\xd7", [22433] = "\xcf\x39",
++ [22435] = "\xc6\xb7", [22437] = "\xcf\x3a", [22438] = "\xe2\xd8",
++ [22441] = "\xe2\xd9", [22443] = "\xe2\xdd", [22444] = "\xe2\xdb",
++ [22445] = "\xe2\xdc", [22446] = "\xcf\x3b", [22447] = "\xe2\xda",
++ [22451] = "\xcf\x3c", [22455] = "\xe2\xde", [22457] = "\xcf\x3d",
++ [22461] = "\xe2\xdf", [22465] = "\xcf\x3e", [22466] = "\xcf\x3f",
++ [22469] = "\xcf\x40", [22471] = "\xe2\xe0", [22473] = "\xcf\x41",
++ [22474] = "\xe2\xe1", [22475] = "\xcc\xb7", [22476] = "\xe2\xe2",
++ [22478] = "\xcf\x42", [22479] = "\xcf\x43", [22480] = "\xcf\x44",
++ [22482] = "\xcc\xf0", [22483] = "\xe2\xe3", [22484] = "\xcf\x45",
++ [22485] = "\xc3\xce", [22486] = "\xcf\x46", [22487] = "\xc7\xea",
++ [22489] = "\xb6\xeb", [22490] = "\xcf\x47", [22492] = "\xcf\x48",
++ [22493] = "\xc3\xbb", [22494] = "\xe2\xe4", [22495] = "\xb6\xba",
++ [22496] = "\xcf\x49", [22497] = "\xcf\x4a", [22499] = "\xc0\xd0",
++ [22500] = "\xcf\x4b", [22504] = "\xcf\x4c", [22507] = "\xcf\x4d",
++ [22508] = "\xe2\xe5", [22514] = "\xba\xbd", [22517] = "\xcf\x4e",
++ [22518] = "\xcf\x4f", [22521] = "\xcf\x50", [22524] = "\xe2\xe6",
++ [22525] = "\xcf\x51", [22526] = "\xcf\x52", [22529] = "\xcf\x53",
++ [22530] = "\xe2\xe7", [22532] = "\xb8\xa6", [22533] = "\xba\xd5",
++ [22541] = "\xcf\x54", [22544] = "\xe2\xe9", [22545] = "\xcf\x55",
++ [22546] = "\xcf\x56", [22547] = "\xcf\x57", [22549] = "\xc5\xd6",
++ [22550] = "\xba\xd6", [22551] = "\xb5\xce", [22557] = "\xcf\x58",
++ [22558] = "\xcf\x59", [22560] = "\xcf\x5a", [22562] = "\xcb\xa4",
++ [22564] = "\xc7\xcb", [22565] = "\xcf\x5b", [22567] = "\xcf\x5c",
++ [22570] = "\xc5\xd7", [22575] = "\xb9\xdc", [22579] = "\xcf\x5d",
++ [22580] = "\xcf\x5e", [22581] = "\xe2\xeb", [22583] = "\xcf\x5f",
++ [22584] = "\xcf\x60", [22588] = "\xcf\x61", [22590] = "\xcf\x62",
++ [22594] = "\xcf\x63", [22604] = "\xcf\x64", [22605] = "\xbe\xcb",
++ [22606] = "\xcf\x65", [22608] = "\xcf\x66", [22609] = "\xcf\x67",
++ [22611] = "\xcf\x68", [22612] = "\xcf\x69", [22616] = "\xcf\x6a",
++ [22618] = "\xcf\x6b", [22619] = "\xce\xb2", [22620] = "\xb9\xc5",
++ [22622] = "\xcf\x6c", [22623] = "\xb8\xa7", [22626] = "\xc8\xa3",
++ [22628] = "\xe2\xed", [22634] = "\xcf\x6d", [22636] = "\xe2\xef",
++ [22638] = "\xcf\x6e", [22641] = "\xb8\xeb", [22646] = "\xe2\xee",
++ [22647] = "\xc4\xf6", [22650] = "\xcf\x6f", [22652] = "\xe2\xf1",
++ [22653] = "\xb3\xb7", [22654] = "\xe2\xec", [22655] = "\xcf\x70",
++ [22657] = "\xc8\xea", [22659] = "\xb1\xb0", [22660] = "\xcf\x71",
++ [22661] = "\xba\xec", [22663] = "\xcf\xd2", [22664] = "\xcf\x72",
++ [22666] = "\xe2\xf0", [22669] = "\xcf\x74", [22670] = "\xcf\x75",
++ [22671] = "\xcf\x76", [22673] = "\xcf\x73", [22675] = "\xe2\xf2",
++ [22676] = "\xcf\x77", [22679] = "\xca\xcb", [22680] = "\xcf\x78",
++ [22681] = "\xc0\xd9", [22682] = "\xe2\xf4", [22684] = "\xcf\x79",
++ [22685] = "\xcf\x7a", [22687] = "\xe2\xf5", [22688] = "\xcf\x7b",
++ [22689] = "\xcf\x7c", [22690] = "\xcf\x7d", [22691] = "\xcf\x7e",
++ [22693] = "\xe2\xf3", [22698] = "\xb3\xce", [22699] = "\xd0\x21",
++ [22700] = "\xe2\xfb", [22701] = "\xd0\x22", [22702] = "\xe2\xfa",
++ [22703] = "\xd0\x23", [22705] = "\xbc\xa7", [22709] = "\xe2\xfc",
++ [22710] = "\xe2\xf7", [22711] = "\xd0\x24", [22712] = "\xd0\x25",
++ [22713] = "\xd0\x26", [22714] = "\xe2\xfd", [22715] = "\xe2\xf8",
++ [22716] = "\xd0\x27", [22718] = "\xd0\x28", [22720] = "\xc8\xd8",
++ [22721] = "\xe2\xf6", [22722] = "\xd0\x29", [22723] = "\xd0\x2a",
++ [22724] = "\xe2\xf9", [22725] = "\xd0\x2b", [22726] = "\xd0\x2c",
++ [22730] = "\xe3\xa2", [22731] = "\xd0\x2e", [22735] = "\xd0\x2f",
++ [22736] = "\xd0\x30", [22737] = "\xd0\x31", [22740] = "\xd0\x2d",
++ [22742] = "\xd0\x32", [22743] = "\xe3\xa1", [22744] = "\xcb\xe1",
++ [22746] = "\xd0\x33", [22748] = "\xe2\xfe", [22751] = "\xb0\xeb",
++ [22754] = "\xd0\x34", [22755] = "\xd0\x35", [22756] = "\xe3\xa4",
++ [22758] = "\xd0\x37", [22759] = "\xd0\x38", [22762] = "\xd0\x39",
++ [22763] = "\xd0\x3a", [22765] = "\xe3\xa3", [22767] = "\xd0\x3b",
++ [22768] = "\xd0\x36", [22769] = "\xbe\xcc", [22774] = "\xd0\x3c",
++ [22775] = "\xe3\xa5", [22780] = "\xd0\x3d", [22782] = "\xc1\xc3",
++ [22784] = "\xd0\x3e", [22785] = "\xe3\xa7", [22786] = "\xe3\xa6",
++ [22793] = "\xe3\xa8", [22794] = "\xd0\x3f", [22796] = "\xd0\x40",
++ [22798] = "\xd0\x41", [22799] = "\xd0\x42", [22800] = "\xd0\x43",
++ [22805] = "\xd0\x44", [22806] = "\xe2\xe8", [22807] = "\xd0\x45",
++ [22809] = "\xd0\x46", [22810] = "\xe2\xea", [22811] = "\xe3\xaa",
++ [22812] = "\xe3\xa9", [22813] = "\xd0\x47", [22816] = "\xf4\x54",
++ [22817] = "\xd0\x48", [22820] = "\xd0\x49", [22821] = "\xd0\x4a",
++ [22826] = "\xbc\xa8", [22827] = "\xd0\x4b", [22828] = "\xce\xe9",
++ [22829] = "\xd0\x4c", [22830] = "\xbc\xd2", [22831] = "\xd0\x4d",
++ [22832] = "\xe3\xab", [22833] = "\xb7\xb7", [22836] = "\xd0\x4e",
++ [22837] = "\xd0\x4f", [22838] = "\xd0\x50", [22839] = "\xb5\xc0",
++ [22840] = "\xb5\xa7", [22841] = "\xbb\xe3", [22842] = "\xd0\x51",
++ [22843] = "\xd0\x52", [22847] = "\xd0\x53", [22848] = "\xcd\xb4",
++ [22849] = "\xd0\x54", [22851] = "\xe3\xb1", [22852] = "\xd0\x55",
++ [22853] = "\xe3\xb0", [22854] = "\xc1\xc4", [22855] = "\xe3\xad",
++ [22856] = "\xd0\x56", [22858] = "\xe3\xaf", [22859] = "\xd0\x57",
++ [22860] = "\xd0\x58", [22861] = "\xbd\xcb", [22862] = "\xbf\xc0",
++ [22863] = "\xe3\xae", [22864] = "\xe3\xac", [22866] = "\xc7\xaa",
++ [22869] = "\xbe\xcd", [22871] = "\xd0\x59", [22872] = "\xc9\xbc",
++ [22873] = "\xd0\x5a", [22875] = "\xd0\x5b", [22877] = "\xba\xd7",
++ [22882] = "\xd0\x5c", [22887] = "\xc5\xf8", [22889] = "\xd0\x5d",
++ [22890] = "\xe3\xb2", [22891] = "\xd0\x5e", [22892] = "\xd0\x5f",
++ [22894] = "\xd0\x60", [22895] = "\xe3\xb3", [22896] = "\xe3\xc9",
++ [22897] = "\xb6\xd8", [22900] = "\xcf\xbd", [22901] = "\xc1\xb5",
++ [22906] = "\xe3\xb4", [22907] = "\xd0\x61", [22908] = "\xd0\x62",
++ [22909] = "\xb2\xd2", [22910] = "\xc4\xf7", [22911] = "\xca\xa1",
++ [22913] = "\xd0\x63", [22915] = "\xd0\x64", [22916] = "\xd0\x65",
++ [22917] = "\xd0\x66", [22918] = "\xd0\x67", [22920] = "\xd0\x68",
++ [22923] = "\xd0\x69", [22924] = "\xd0\x6a", [22925] = "\xe3\xb5",
++ [22929] = "\xd0\x6b", [22934] = "\xb5\xfa", [22935] = "\xe3\xb6",
++ [22936] = "\xd0\x6c", [22937] = "\xd0\x6d", [22938] = "\xe3\xb8",
++ [22939] = "\xd0\x6e", [22942] = "\xe3\xb9", [22943] = "\xd0\x6f",
++ [22944] = "\xc7\xa9", [22945] = "\xd0\x70", [22947] = "\xe3\xba",
++ [22948] = "\xd0\x71", [22952] = "\xd0\x72", [22953] = "\xe3\xbb",
++ [22954] = "\xe3\xbc", [22955] = "\xd0\x73", [22957] = "\xb6\xd9",
++ [22958] = "\xb2\xd3", [22959] = "\xc6\xc5", [22960] = "\xbd\xa8",
++ [22961] = "\xbb\xe4", [22962] = "\xd0\x74", [22964] = "\xd0\x75",
++ [22967] = "\xd0\x76", [22968] = "\xd0\x77", [22969] = "\xe3\xbd",
++ [22970] = "\xd0\x78", [22971] = "\xbd\xa9", [22975] = "\xd0\x79",
++ [22977] = "\xb2\xca", [22978] = "\xc9\xc3", [22980] = "\xd0\x7a",
++ [22981] = "\xe3\xbe", [22982] = "\xd0\x7b", [22984] = "\xc8\xeb",
++ [22986] = "\xd0\x7c", [22989] = "\xd0\x7d", [22990] = "\xd0\x7e",
++ [22991] = "\xc1\xc5", [22992] = "\xd1\x21", [22993] = "\xe3\xc1",
++ [22994] = "\xd1\x22", [22995] = "\xe3\xc2", [22996] = "\xc7\xe9",
++ [22997] = "\xd1\x23", [22998] = "\xbf\xc1", [22999] = "\xe3\xbf",
++ [23001] = "\xc3\xe1", [23002] = "\xd1\x24", [23003] = "\xd1\x25",
++ [23004] = "\xe3\xc0", [23005] = "\xd1\x26", [23008] = "\xbe\xce",
++ [23009] = "\xd1\x27", [23016] = "\xd1\x28", [23019] = "\xb0\xdc",
++ [23020] = "\xd1\x29", [23024] = "\xb5\xa9", [23026] = "\xd1\x2a",
++ [23027] = "\xd1\x2b", [23031] = "\xd1\x2c", [23032] = "\xe3\xc3",
++ [23033] = "\xd1\x2d", [23034] = "\xd1\x2e", [23035] = "\xc4\xf8",
++ [23036] = "\xd1\x2f", [23037] = "\xe3\xc4", [23038] = "\xc0\xc7",
++ [23041] = "\xd1\x30", [23044] = "\xcc\xad", [23045] = "\xd1\x31",
++ [23047] = "\xc9\xa3", [23048] = "\xe3\xc5", [23049] = "\xe3\xc6",
++ [23050] = "\xc3\xd5", [23051] = "\xd1\x32", [23052] = "\xce\xc7",
++ [23054] = "\xd1\x33", [23055] = "\xe3\xc8", [23056] = "\xe3\xc7",
++ [23057] = "\xd1\x34", [23063] = "\xd1\x35", [23067] = "\xd1\x36",
++ [23069] = "\xd1\x37", [23070] = "\xbc\xef", [23071] = "\xd1\x38",
++ [23072] = "\xd1\x39", [23073] = "\xe3\xca", [23074] = "\xb0\xf0",
++ [23076] = "\xd1\x3a", [23077] = "\xd1\x3b", [23079] = "\xe3\xcd",
++ [23080] = "\xd1\x3c", [23081] = "\xd1\x3d", [23082] = "\xd1\x3e",
++ [23083] = "\xe3\xcb", [23084] = "\xb2\xd4", [23085] = "\xb7\xce",
++ [23086] = "\xe3\xcc", [23087] = "\xb9\xc6", [23088] = "\xb9\xf2",
++ [23090] = "\xca\xe6", [23091] = "\xe3\xce", [23092] = "\xd1\x3f",
++ [23093] = "\xd1\x40", [23094] = "\xcb\xd4", [23095] = "\xd1\x41",
++ [23096] = "\xd1\x42", [23097] = "\xe3\xd0", [23100] = "\xd1\x43",
++ [23101] = "\xc0\xd1", [23102] = "\xb1\xcf", [23103] = "\xb2\xba",
++ [23104] = "\xb0\xac", [23109] = "\xd1\x44", [23110] = "\xd1\x45",
++ [23111] = "\xe3\xcf", [23113] = "\xd1\x46", [23116] = "\xd1\x47",
++ [23117] = "\xd1\x48", [23119] = "\xd1\x49", [23120] = "\xd1\x4a",
++ [23121] = "\xe3\xd1", [23122] = "\xe3\xd2", [23123] = "\xbe\xf7",
++ [23125] = "\xd1\x4b", [23127] = "\xd1\x4c", [23129] = "\xe3\xd3",
++ [23130] = "\xd1\x4d", [23131] = "\xb3\xcf", [23133] = "\xd1\x4e",
++ [23136] = "\xe3\xd5", [23140] = "\xb7\xea", [23141] = "\xd1\x4f",
++ [23142] = "\xb5\xe6", [23144] = "\xd1\x50", [23145] = "\xe3\xd6",
++ [23146] = "\xb6\xf5", [23149] = "\xe3\xd7", [23150] = "\xd1\x51",
++ [23151] = "\xc0\xfc", [23152] = "\xd1\x52", [23153] = "\xc6\xcd",
++ [23154] = "\xd1\x53", [23155] = "\xc0\xe0", [23156] = "\xba\xf5",
++ [23157] = "\xd1\x54", [23158] = "\xd1\x55", [23160] = "\xe3\xd8",
++ [23162] = "\xd1\x56", [23163] = "\xd1\x57", [23168] = "\xd1\x58",
++ [23169] = "\xd1\x59", [23170] = "\xc3\xe2", [23171] = "\xc1\xeb",
++ [23172] = "\xd1\x5a", [23173] = "\xe3\xda", [23174] = "\xe3\xdc",
++ [23175] = "\xe3\xd9", [23176] = "\xe3\xdb", [23182] = "\xd1\x5b",
++ [23183] = "\xb7\xa2", [23184] = "\xd1\x5c", [23187] = "\xd1\x5d",
++ [23193] = "\xe3\xdd", [23194] = "\xb7\xa6", [23196] = "\xd1\x5e",
++ [23198] = "\xb5\xe7", [23199] = "\xcd\xd2", [23200] = "\xe3\xdf",
++ [23203] = "\xd1\x5f", [23205] = "\xd1\x60", [23206] = "\xe3\xe0",
++ [23209] = "\xd1\x61", [23210] = "\xb1\xae", [23211] = "\xd1\x62",
++ [23212] = "\xd1\x63", [23215] = "\xe3\xe3", [23219] = "\xb3\xf6",
++ [23220] = "\xe3\xe2", [23221] = "\xe3\xe1", [23222] = "\xd1\x64",
++ [23223] = "\xe3\xe5", [23224] = "\xe3\xde", [23225] = "\xd1\x65",
++ [23226] = "\xe3\xe6", [23227] = "\xce\xa9", [23228] = "\xd1\x66",
++ [23229] = "\xe3\xe7", [23230] = "\xd1\x67", [23231] = "\xe3\xe8",
++ [23233] = "\xd1\x68", [23234] = "\xd4\xf4", [23235] = "\xe3\xea",
++ [23237] = "\xe3\xe9", [23241] = "\xe3\xeb", [23242] = "\xe3\xec",
++ [23243] = "\xd1\x69", [23244] = "\xce\xb5", [23245] = "\xe3\xed",
++ [23247] = "\xf0\xef", [23248] = "\xbe\xcf", [23249] = "\xe3\xee",
++ [23250] = "\xe3\xef", [23251] = "\xbd\xd7", [23253] = "\xc6\xb8",
++ [23254] = "\xe3\xf0", [23255] = "\xf4\x59", [23256] = "\xd1\x6a",
++ [23257] = "\xd1\x6b", [23258] = "\xc3\xa8", [23259] = "\xd1\x6c",
++ [23260] = "\xd1\x6d", [23261] = "\xe3\xf1", [23263] = "\xc3\xbc",
++ [23264] = "\xe3\xf2", [23265] = "\xd1\x6e", [23268] = "\xd1\x6f",
++ [23270] = "\xb6\xa5", [23272] = "\xd1\xbf", [23273] = "\xc3\xdd",
++ [23274] = "\xbc\xb3", [23275] = "\xd1\x70", [23277] = "\xd1\x71",
++ [23278] = "\xd1\x72", [23279] = "\xb4\xc8", [23282] = "\xe3\xf3",
++ [23284] = "\xe4\xa2", [23286] = "\xe3\xf6", [23287] = "\xd1\x73",
++ [23288] = "\xb5\xe8", [23290] = "\xe3\xf5", [23291] = "\xe4\xa4",
++ [23295] = "\xe3\xf4", [23297] = "\xbe\xd0", [23300] = "\xd1\x74",
++ [23304] = "\xe3\xf8", [23305] = "\xe3\xf9", [23307] = "\xc5\xab",
++ [23310] = "\xe3\xfa", [23311] = "\xd1\x75", [23312] = "\xb3\xde",
++ [23315] = "\xd1\x76", [23317] = "\xbf\xda", [23318] = "\xc9\xe4",
++ [23319] = "\xd1\x77", [23320] = "\xe3\xfc", [23321] = "\xd1\x78",
++ [23322] = "\xd1\x79", [23323] = "\xd1\x7a", [23324] = "\xc2\xe8",
++ [23325] = "\xd1\x7b", [23326] = "\xd1\x7c", [23327] = "\xd1\x7d",
++ [23328] = "\xd1\x7e", [23329] = "\xd2\x21", [23331] = "\xe3\xf7",
++ [23332] = "\xd2\x22", [23333] = "\xe3\xfb", [23334] = "\xe3\xfd",
++ [23337] = "\xba\xfb", [23341] = "\xd2\x23", [23343] = "\xd2\x24",
++ [23344] = "\xd2\x25", [23345] = "\xd2\x26", [23349] = "\xe4\xa6",
++ [23350] = "\xc9\xae", [23351] = "\xd2\x27", [23352] = "\xc8\xa6",
++ [23353] = "\xc5\xf9", [23355] = "\xb6\xda", [23356] = "\xe4\xa5",
++ [23357] = "\xe4\xa3", [23358] = "\xd2\x28", [23359] = "\xc8\xb5",
++ [23360] = "\xe3\xfe", [23361] = "\xc3\xde", [23362] = "\xc5\xfb",
++ [23364] = "\xc5\xfa", [23365] = "\xd2\x29", [23366] = "\xba\xf6",
++ [23373] = "\xe4\xb8", [23376] = "\xd2\x2a", [23380] = "\xd2\x2b",
++ [23381] = "\xe4\xa8", [23382] = "\xd2\x2c", [23383] = "\xe4\xaa",
++ [23385] = "\xd2\x2d", [23386] = "\xd2\x2e", [23388] = "\xe4\xad",
++ [23389] = "\xd2\x2f", [23390] = "\xe4\xae", [23391] = "\xd2\x30",
++ [23392] = "\xe4\xab", [23393] = "\xe4\xac", [23394] = "\xd2\x31",
++ [23395] = "\xd2\x32", [23396] = "\xe4\xa9", [23397] = "\xe4\xa7",
++ [23399] = "\xd2\x33", [23402] = "\xe4\xa1", [23412] = "\xd2\x34",
++ [23414] = "\xca\xcf", [23415] = "\xb2\xd5", [23417] = "\xd2\x35",
++ [23419] = "\xe4\xb5", [23421] = "\xe4\xb2", [23422] = "\xd2\x36",
++ [23423] = "\xe4\xb7", [23424] = "\xd2\x37", [23425] = "\xd2\x38",
++ [23426] = "\xe4\xb6", [23428] = "\xc7\xf3", [23429] = "\xcc\xa7",
++ [23430] = "\xd2\x39", [23431] = "\xbb\xbb", [23432] = "\xe4\xb0",
++ [23433] = "\xe4\xb9", [23434] = "\xe4\xb4", [23435] = "\xd2\x3a",
++ [23436] = "\xe4\xb3", [23437] = "\xe4\xaf", [23438] = "\xd2\x3b",
++ [23439] = "\xe4\xb1", [23440] = "\xd2\x3c", [23441] = "\xb4\xc9",
++ [23445] = "\xd2\x3d", [23450] = "\xc3\xbd", [23452] = "\xd2\x3e",
++ [23453] = "\xc0\xfd", [23455] = "\xd2\x3f", [23456] = "\xd2\x40",
++ [23457] = "\xc8\xa2", [23458] = "\xd2\x41", [23460] = "\xe4\xbe",
++ [23461] = "\xd2\x42", [23462] = "\xd2\x43", [23464] = "\xc8\xa4",
++ [23466] = "\xd2\x44", [23467] = "\xd2\x45", [23468] = "\xd2\x46",
++ [23469] = "\xd2\x47", [23472] = "\xc0\xe1", [23473] = "\xe4\xbb",
++ [23474] = "\xd2\x48", [23476] = "\xc8\xcf", [23477] = "\xd2\x49",
++ [23478] = "\xe4\xbf", [23479] = "\xca\xd3", [23480] = "\xd2\x4a",
++ [23481] = "\xc3\xdb", [23482] = "\xd2\x4b", [23483] = "\xe4\xba",
++ [23484] = "\xe4\xbc", [23487] = "\xe4\xbd", [23492] = "\xd2\x4c",
++ [23494] = "\xd2\x4d", [23495] = "\xd2\x4e", [23497] = "\xd2\x4f",
++ [23498] = "\xd2\x50", [23499] = "\xd2\x51", [23501] = "\xe4\xc0",
++ [23504] = "\xbc\xc4", [23508] = "\xc6\xc6", [23509] = "\xe4\xc5",
++ [23510] = "\xe4\xc4", [23512] = "\xd2\x52", [23513] = "\xe4\xc1",
++ [23514] = "\xd2\x53", [23517] = "\xcf\xb6", [23522] = "\xd2\x54",
++ [23523] = "\xe4\xca", [23524] = "\xd2\x55", [23525] = "\xd2\x56",
++ [23526] = "\xe4\xce", [23527] = "\xe4\xcb", [23528] = "\xd2\x57",
++ [23529] = "\xd2\x58", [23530] = "\xd2\x59", [23532] = "\xd2\x5a",
++ [23534] = "\xd2\x5b", [23536] = "\xe4\xc7", [23537] = "\xd2\x5c",
++ [23538] = "\xd2\x5d", [23539] = "\xd2\x5e", [23540] = "\xd2\x5f",
++ [23542] = "\xd2\x60", [23543] = "\xe4\xc8", [23545] = "\xd2\x61",
++ [23547] = "\xd2\x62", [23548] = "\xd2\x63", [23549] = "\xe4\xcd",
++ [23550] = "\xd2\x64", [23551] = "\xd2\x65", [23553] = "\xe4\xc2",
++ [23554] = "\xd2\xd5", [23555] = "\xe4\xc9", [23556] = "\xe4\xc3",
++ [23559] = "\xe4\xcc", [23561] = "\xd2\x66", [23563] = "\xd2\x67",
++ [23567] = "\xe4\xd2", [23568] = "\xd2\x68", [23569] = "\xb4\xca",
++ [23571] = "\xe4\xcf", [23573] = "\xd2\x69", [23574] = "\xd2\x6a",
++ [23575] = "\xe4\xd0", [23576] = "\xd2\x6b", [23578] = "\xe4\xd1",
++ [23579] = "\xe4\xd4", [23580] = "\xd2\x6c", [23585] = "\xd2\x6d",
++ [23587] = "\xd2\x6e", [23588] = "\xd2\x6f", [23590] = "\xd2\x70",
++ [23591] = "\xe4\xd3", [23592] = "\xc8\xf6", [23593] = "\xd2\x71",
++ [23594] = "\xd2\x72", [23597] = "\xe4\xd5", [23598] = "\xce\xfc",
++ [23599] = "\xca\xed", [23600] = "\xe4\xda", [23603] = "\xe4\xd7",
++ [23606] = "\xd2\x73", [23610] = "\xd2\x74", [23612] = "\xe4\xd6",
++ [23613] = "\xc0\xd2", [23615] = "\xe4\xd9", [23616] = "\xe4\xdb",
++ [23617] = "\xd2\x76", [23618] = "\xd2\x77", [23619] = "\xd2\x78",
++ [23620] = "\xe4\xd8", [23621] = "\xd2\x75", [23622] = "\xe4\xdf",
++ [23624] = "\xe4\xdc", [23625] = "\xd2\x79", [23626] = "\xd2\x7a",
++ [23627] = "\xd2\x7b", [23628] = "\xd2\x7c", [23629] = "\xd2\x7d",
++ [23630] = "\xd2\x7e", [23631] = "\xe4\xdd", [23632] = "\xe4\xc6",
++ [23633] = "\xd3\x21", [23635] = "\xd3\x22", [23636] = "\xe4\xde",
++ [23637] = "\xe4\xe0", [23639] = "\xd3\x23", [23641] = "\xd3\x24",
++ [23644] = "\xe4\xe1", [23645] = "\xd3\x25", [23646] = "\xd3\x26",
++ [23648] = "\xd3\x27", [23650] = "\xd3\x28", [23651] = "\xca\xc6",
++ [23653] = "\xe4\xe2", [23657] = "\xd3\x29", [23660] = "\xd3\x2a",
++ [23661] = "\xd3\x2b", [23662] = "\xcc\xe2", [23665] = "\xb6\xce",
++ [23666] = "\xb7\xa9", [23667] = "\xe4\xe3", [23670] = "\xd3\x2c",
++ [23671] = "\xd3\x2d", [23673] = "\xca\xb4", [23675] = "\xbf\xe8",
++ [23677] = "\xcc\xb0", [23679] = "\xd3\x2e", [23680] = "\xe4\xe4",
++ [23682] = "\xce\xb3", [23684] = "\xd3\x2f", [23685] = "\xc7\xf4",
++ [23687] = "\xc1\xc6", [23688] = "\xc7\xb4", [23691] = "\xbd\xcd",
++ [23694] = "\xd3\x30", [23695] = "\xb0\xc0", [23696] = "\xd3\x31",
++ [23697] = "\xe4\xe9", [23698] = "\xe4\xe7", [23700] = "\xe4\xe5",
++ [23701] = "\xb4\xa1", [23702] = "\xd3\x32", [23703] = "\xbe\xd1",
++ [23704] = "\xe4\xea", [23707] = "\xe4\xe8", [23709] = "\xe4\xe6",
++ [23710] = "\xe4\xee", [23712] = "\xd3\x33", [23713] = "\xe4\xed",
++ [23714] = "\xe4\xec", [23715] = "\xe4\xeb", [23718] = "\xd3\x34",
++ [23719] = "\xd3\x35", [23721] = "\xe4\xef", [23722] = "\xd3\x36",
++ [23723] = "\xd3\x37", [23724] = "\xd3\x38", [23725] = "\xe4\xf0",
++ [23726] = "\xc0\xba", [23727] = "\xd3\x39", [23728] = "\xe4\xf1",
++ [23730] = "\xe4\xf3", [23732] = "\xd3\x3a", [23733] = "\xe4\xf2",
++ [23735] = "\xd3\x3b", [23736] = "\xd3\x3c", [23737] = "\xd3\x3d",
++ [23738] = "\xb8\xd2", [23741] = "\xd3\x3e", [23742] = "\xc1\xb8",
++ [23743] = "\xd3\x3f", [23746] = "\xe4\xf5", [23747] = "\xd3\x40",
++ [23748] = "\xd3\x41", [23749] = "\xd3\x42", [23750] = "\xc5\xfc",
++ [23751] = "\xd3\x43", [23752] = "\xe4\xf4", [23753] = "\xd3\x44",
++ [23754] = "\xd3\x45", [23756] = "\xe4\xf6", [23757] = "\xd3\x46",
++ [23758] = "\xca\xb5", [23759] = "\xc1\xec", [23760] = "\xb9\xc7",
++ [23762] = "\xe4\xf7", [23766] = "\xd3\x47", [23767] = "\xce\xc8",
++ [23769] = "\xd3\x48", [23771] = "\xd3\x49", [23775] = "\xe4\xf9",
++ [23778] = "\xe4\xfa", [23780] = "\xe4\xfb", [23781] = "\xd3\x4a",
++ [23782] = "\xe4\xfc", [23784] = "\xbb\xe5", [23786] = "\xe4\xfd",
++ [23787] = "\xb7\xcf", [23790] = "\xb5\xea", [23792] = "\xb5\xaa",
++ [23794] = "\xe5\xa1", [23795] = "\xd3\x4b", [23796] = "\xcc\xf3",
++ [23797] = "\xb9\xc8", [23798] = "\xe4\xfe", [23799] = "\xd3\x4c",
++ [23800] = "\xd3\x4d", [23801] = "\xd3\x4e", [23802] = "\xe5\xa4",
++ [23803] = "\xcc\xe6", [23805] = "\xc7\xbc", [23807] = "\xd3\x4f",
++ [23808] = "\xc9\xb3", [23809] = "\xd3\x50", [23810] = "\xd3\x51",
++ [23811] = "\xd3\x52", [23812] = "\xbd\xe3", [23813] = "\xe5\xa3",
++ [23814] = "\xd3\x53", [23815] = "\xbc\xd3", [23816] = "\xb9\xc9",
++ [23817] = "\xbb\xe6", [23818] = "\xb5\xe9", [23819] = "\xca\xb6",
++ [23820] = "\xe5\xa2", [23821] = "\xd3\x54", [23822] = "\xd3\x55",
++ [23824] = "\xc1\xc7", [23825] = "\xcb\xc2", [23826] = "\xba\xf7",
++ [23827] = "\xd3\x56", [23830] = "\xd3\x57", [23834] = "\xd3\x58",
++ [23835] = "\xbb\xe7", [23836] = "\xc4\xdd", [23837] = "\xd3\x59",
++ [23838] = "\xe5\xa7", [23839] = "\xce\xdf", [23840] = "\xba\xd9",
++ [23841] = "\xd3\x5a", [23842] = "\xe5\xa8", [23843] = "\xbf\xc2",
++ [23845] = "\xe5\xaa", [23849] = "\xbe\xd2", [23850] = "\xba\xb0",
++ [23852] = "\xd3\x5b", [23853] = "\xd3\x5c", [23854] = "\xd3\x5d",
++ [23855] = "\xe5\xa9", [23856] = "\xd3\x5e", [23857] = "\xd3\x5f",
++ [23858] = "\xbd\xaa", [23859] = "\xb8\xbe", [23860] = "\xc1\xc8",
++ [23861] = "\xe5\xa5", [23862] = "\xe5\xab", [23863] = "\xd3\x60",
++ [23864] = "\xd3\x61", [23867] = "\xe5\xa6", [23868] = "\xb7\xd0",
++ [23869] = "\xd3\x62", [23870] = "\xe5\xae", [23871] = "\xe5\xb2",
++ [23872] = "\xb7\xeb", [23873] = "\xd3\x63", [23875] = "\xd3\x64",
++ [23878] = "\xe5\xad", [23879] = "\xd3\x65", [23881] = "\xd3\x66",
++ [23882] = "\xd3\x67", [23883] = "\xe5\xb6", [23884] = "\xd3\x68",
++ [23885] = "\xd3\x69", [23886] = "\xb9\xca", [23889] = "\xcd\xed",
++ [23890] = "\xb0\xbc", [23891] = "\xe5\xb3", [23893] = "\xd3\x6a",
++ [23894] = "\xb5\xeb", [23895] = "\xd3\x6b", [23896] = "\xe5\xb0",
++ [23898] = "\xd3\x6c", [23902] = "\xe5\xb1", [23904] = "\xd3\x6d",
++ [23905] = "\xc5\xfd", [23906] = "\xe5\xaf", [23907] = "\xe5\xac",
++ [23909] = "\xb3\xa8", [23910] = "\xc0\xe4", [23912] = "\xd3\x6e",
++ [23913] = "\xb8\xa8", [23914] = "\xd3\x6f", [23915] = "\xd3\x70",
++ [23917] = "\xe5\xb8", [23919] = "\xd3\x71", [23921] = "\xd3\x72",
++ [23922] = "\xd3\x73", [23923] = "\xd3\x74", [23925] = "\xd3\x75",
++ [23926] = "\xd3\x76", [23928] = "\xd3\x77", [23929] = "\xe5\xb5",
++ [23931] = "\xd3\x78", [23932] = "\xd3\x79", [23933] = "\xd3\x7a",
++ [23935] = "\xe5\xb7", [23937] = "\xd3\x7b", [23939] = "\xe5\xb4",
++ [23942] = "\xd3\x7c", [23943] = "\xd3\x7d", [23945] = "\xb7\xd1",
++ [23946] = "\xc2\xb3", [23947] = "\xe5\xb9", [23948] = "\xc1\xee",
++ [23949] = "\xd3\x7e", [23950] = "\xd4\x21", [23951] = "\xe5\xc6",
++ [23952] = "\xf4\x5c", [23954] = "\xe5\xc2", [23955] = "\xe5\xbc",
++ [23958] = "\xd4\x22", [23959] = "\xd4\x23", [23962] = "\xd4\x24",
++ [23963] = "\xe5\xc0", [23964] = "\xbc\xfa", [23965] = "\xb0\xdd",
++ [23966] = "\xe5\xbb", [23967] = "\xe5\xc3", [23968] = "\xe5\xc7",
++ [23969] = "\xb9\xcb", [23970] = "\xcc\xd6", [23971] = "\xd4\x25",
++ [23972] = "\xc4\xd6", [23973] = "\xe5\xbd", [23974] = "\xd4\x26",
++ [23975] = "\xd4\x27", [23976] = "\xe5\xc5", [23977] = "\xd4\x28",
++ [23978] = "\xe5\xba", [23979] = "\xc3\xbe", [23981] = "\xe5\xbf",
++ [23982] = "\xb0\xbd", [23983] = "\xcc\xca", [23986] = "\xd4\x29",
++ [23987] = "\xd4\x2a", [23988] = "\xd4\x2b", [23989] = "\xd4\x2c",
++ [23990] = "\xd4\x2d", [23991] = "\xe5\xbe", [23994] = "\xb6\xdb",
++ [23995] = "\xc8\xec", [23996] = "\xd4\x2e", [23997] = "\xd4\x2f",
++ [23998] = "\xd4\x30", [23999] = "\xc1\xed", [24001] = "\xce\xd0",
++ [24002] = "\xbd\xef", [24005] = "\xe5\xee", [24006] = "\xf4\x5d",
++ [24007] = "\xd4\x31", [24008] = "\xe5\xc8", [24009] = "\xd4\x32",
++ [24010] = "\xc0\xfe", [24012] = "\xe5\xc4", [24013] = "\xe5\xc9",
++ [24014] = "\xe5\xcb", [24016] = "\xc4\xf9", [24017] = "\xe5\xce",
++ [24018] = "\xd4\x34", [24020] = "\xe5\xca", [24021] = "\xd4\x35",
++ [24022] = "\xd4\x36", [24024] = "\xca\xd4", [24025] = "\xb4\xcb",
++ [24026] = "\xd4\x37", [24027] = "\xd4\x38", [24028] = "\xcc\xcb",
++ [24029] = "\xd4\x39", [24031] = "\xb0\xde", [24033] = "\xd4\x3a",
++ [24034] = "\xe5\xcd", [24036] = "\xce\xfd", [24037] = "\xd4\x3b",
++ [24038] = "\xd4\x3c", [24041] = "\xd4\x3d", [24042] = "\xd4\x3e",
++ [24043] = "\xe5\xcc", [24048] = "\xd4\x33", [24049] = "\xb1\xef",
++ [24052] = "\xc6\xec", [24053] = "\xe5\xcf", [24056] = "\xd4\x3f",
++ [24057] = "\xe5\xd6", [24058] = "\xe5\xd0", [24059] = "\xe5\xd7",
++ [24064] = "\xd4\x40", [24065] = "\xd4\x41", [24066] = "\xe5\xd3",
++ [24069] = "\xd4\x42", [24071] = "\xd4\x43", [24075] = "\xc7\xfb",
++ [24076] = "\xd4\x44", [24077] = "\xd4\x45", [24078] = "\xbc\xca",
++ [24079] = "\xe5\xd5", [24080] = "\xd4\x46", [24081] = "\xe5\xd2",
++ [24082] = "\xe5\xd8", [24083] = "\xe5\xd1", [24086] = "\xbd\xc4",
++ [24087] = "\xd4\x47", [24088] = "\xd4\x48", [24091] = "\xcb\xa5",
++ [24092] = "\xd4\x49", [24093] = "\xd4\x4a", [24094] = "\xbd\xcc",
++ [24095] = "\xd4\x4b", [24097] = "\xe5\xd4", [24098] = "\xe5\xe0",
++ [24099] = "\xd4\x4c", [24101] = "\xe5\xdc", [24102] = "\xd4\x4d",
++ [24103] = "\xe5\xdf", [24105] = "\xe5\xdd", [24106] = "\xe5\xe1",
++ [24107] = "\xe5\xdb", [24109] = "\xe5\xc1", [24110] = "\xc0\xd3",
++ [24111] = "\xd4\x4e", [24113] = "\xc8\xcb", [24115] = "\xe5\xde",
++ [24116] = "\xd4\x4f", [24117] = "\xd4\x50", [24118] = "\xe5\xd9",
++ [24119] = "\xd4\x51", [24122] = "\xc1\xa1", [24123] = "\xb7\xd2",
++ [24125] = "\xbd\xab", [24126] = "\xd4\x52", [24128] = "\xd4\x53",
++ [24130] = "\xd4\x54", [24132] = "\xbf\xa5", [24133] = "\xc1\xb6",
++ [24134] = "\xe5\xe4", [24136] = "\xd4\x55", [24137] = "\xe5\xe6",
++ [24138] = "\xe5\xe7", [24141] = "\xe5\xe3", [24142] = "\xe5\xe5",
++ [24143] = "\xd4\x56", [24145] = "\xd4\x57", [24146] = "\xd4\x58",
++ [24149] = "\xd4\x59", [24150] = "\xe5\xda", [24151] = "\xe5\xe2",
++ [24153] = "\xe5\xea", [24154] = "\xe5\xe9", [24155] = "\xd4\x5a",
++ [24157] = "\xcb\xfa", [24158] = "\xd4\x5b", [24159] = "\xd4\x5c",
++ [24160] = "\xb7\xab", [24163] = "\xd4\x5d", [24168] = "\xd4\x5e",
++ [24169] = "\xe5\xe8", [24171] = "\xe5\xec", [24172] = "\xe5\xeb",
++ [24173] = "\xe5\xef", [24174] = "\xd4\x5f", [24175] = "\xe5\xf1",
++ [24177] = "\xd4\x60", [24178] = "\xbb\xbc", [24179] = "\xe5\xed",
++ [24182] = "\xd4\x61", [24183] = "\xd4\x62", [24184] = "\xe5\xf2",
++ [24185] = "\xe5\xf3", [24186] = "\xd4\x63", [24188] = "\xe5\xf4",
++ [24189] = "\xd4\x64", [24190] = "\xe5\xfa", [24191] = "\xc5\xbb",
++ [24192] = "\xe5\xf6", [24193] = "\xd4\x65", [24194] = "\xe5\xf5",
++ [24195] = "\xe5\xf7", [24196] = "\xe5\xf8", [24197] = "\xd4\x66",
++ [24198] = "\xe5\xf9", [24200] = "\xd4\x67", [24202] = "\xd4\x68",
++ [24203] = "\xe5\xfb", [24204] = "\xe5\xfc", [24205] = "\xd4\x69",
++ [24206] = "\xd4\x6a", [24358] = "\xb4\xcc", [24360] = "\xe5\xfd",
++ [24362] = "\xe5\xfe", [24363] = "\xd4\x6c", [24364] = "\xd4\x6b",
++ [24365] = "\xd4\x6d", [24366] = "\xd4\x6e", [24367] = "\xd4\x6f",
++ [24371] = "\xd4\x70", [24372] = "\xd4\x71", [24373] = "\xe6\xa1",
++ [24375] = "\xd4\x72", [24380] = "\xe6\xa2", [24381] = "\xe6\xa3",
++ [24382] = "\xe6\xa4", [24383] = "\xd4\x73", [24384] = "\xe6\xa5",
++ [24385] = "\xe6\xa6", [24386] = "\xd4\x74", [24387] = "\xd4\x75",
++ [24388] = "\xe6\xa8", [24389] = "\xe6\xa7", [24392] = "\xe6\xa9",
++ [24395] = "\xd4\x76", [24396] = "\xd4\x77", [24397] = "\xd4\x78",
++ [24399] = "\xe6\xaa", [24400] = "\xe6\xab", [24401] = "\xd4\x79",
++ [24403] = "\xd4\x7a", [24404] = "\xd4\x7b", [24405] = "\xd4\x7c",
++ [24406] = "\xd4\x7d", [24407] = "\xe6\xae", [24408] = "\xe6\xac",
++ [24409] = "\xe6\xad", [24410] = "\xba\xe1", [24411] = "\xb7\xd3",
++ [24413] = "\xd4\x7e", [24414] = "\xc3\xd6", [24416] = "\xc8\xb3",
++ [24417] = "\xd5\x21", [24418] = "\xbd\xf0", [24421] = "\xc7\xcd",
++ [24423] = "\xc8\xed", [24424] = "\xe6\xaf", [24425] = "\xd8\xed",
++ [24429] = "\xd5\x22", [24430] = "\xd5\x23", [24431] = "\xd5\x24",
++ [24432] = "\xd5\x25", [24434] = "\xe6\xb0", [24435] = "\xe6\xb2",
++ [24437] = "\xcd\xe5", [24438] = "\xe6\xb1", [24439] = "\xe6\xb4",
++ [24440] = "\xe6\xb3", [24442] = "\xcd\xd3", [24443] = "\xd5\x26",
++ [24444] = "\xe6\xb5", [24445] = "\xd5\x27", [24446] = "\xc8\xfe",
++ [24447] = "\xd5\x28", [24448] = "\xd5\x29", [24449] = "\xd5\x2a",
++ [24452] = "\xe6\xb6", [24454] = "\xd5\x2b", [24455] = "\xd5\x2c",
++ [24458] = "\xe6\xb9", [24460] = "\xd5\x2d", [24461] = "\xe6\xb8",
++ [24462] = "\xe6\xb7", [24465] = "\xd5\x2e", [24466] = "\xd5\x2f",
++ [24467] = "\xe6\xba", [24468] = "\xb7\xb2", [24470] = "\xd5\x30",
++ [24472] = "\xc1\xa2", [24473] = "\xb5\xc1", [24474] = "\xd5\x31",
++ [24477] = "\xd5\x32", [24478] = "\xe6\xbe", [24479] = "\xe6\xbb",
++ [24482] = "\xe6\xbc", [24484] = "\xd5\x33", [24486] = "\xe6\xbf",
++ [24488] = "\xe6\xc0", [24489] = "\xe6\xbd", [24492] = "\xd5\x34",
++ [24493] = "\xb1\xa9", [24495] = "\xd5\x35", [24496] = "\xd5\x36",
++ [24497] = "\xb2\xa7", [24499] = "\xd5\x37", [24501] = "\xe6\xc2",
++ [24502] = "\xe6\xc3", [24504] = "\xd5\x38", [24506] = "\xe6\xc4",
++ [24508] = "\xcd\xe2", [24510] = "\xd5\x39", [24511] = "\xd5\x3a",
++ [24514] = "\xbd\xac", [24516] = "\xe6\xc6", [24517] = "\xe6\xc5",
++ [24523] = "\xd5\x3b", [24527] = "\xd5\x3c", [24528] = "\xbf\xe9",
++ [24529] = "\xe6\xc7", [24531] = "\xd5\x3d", [24533] = "\xd5\x3e",
++ [24534] = "\xe6\xc8", [24536] = "\xd5\x3f", [24537] = "\xe6\xc9",
++ [24539] = "\xb4\xe5", [24540] = "\xd5\x40", [24542] = "\xd5\x41",
++ [24543] = "\xd5\x42", [24544] = "\xb4\xcd", [24546] = "\xd5\x43",
++ [24547] = "\xe6\xca", [24553] = "\xe6\xcb", [24554] = "\xd5\x44",
++ [24555] = "\xcb\xdd", [24556] = "\xcd\xe3", [24557] = "\xd5\x45",
++ [24558] = "\xd5\x46", [24559] = "\xd5\x47", [24560] = "\xcd\xd4",
++ [24561] = "\xcf\xb7", [24563] = "\xb9\xcd", [24564] = "\xe6\xce",
++ [24565] = "\xbc\xd4", [24566] = "\xe6\xcd", [24567] = "\xd5\x48",
++ [24568] = "\xd5\x49", [24570] = "\xd5\x4a", [24571] = "\xe6\xcf",
++ [24572] = "\xbc\xa9", [24573] = "\xd5\x4b", [24574] = "\xd5\x4c",
++ [24575] = "\xd5\x4d", [24576] = "\xc2\xd1", [24577] = "\xd5\x4e",
++ [24578] = "\xe6\xd0", [24579] = "\xd5\x4f", [24580] = "\xd5\x50",
++ [24581] = "\xb9\xcc", [24582] = "\xd5\x51", [24583] = "\xcc\xd7",
++ [24584] = "\xe6\xd1", [24585] = "\xe6\xd2", [24588] = "\xe6\xd3",
++ [24589] = "\xd5\x52", [24590] = "\xd5\x53", [24591] = "\xd5\x54",
++ [24592] = "\xd5\x55", [24593] = "\xe6\xd4", [24596] = "\xd5\x56",
++ [24598] = "\xd5\x57", [24600] = "\xe6\xd5", [24604] = "\xd5\x58",
++ [24606] = "\xd5\x59", [24608] = "\xd5\x5a", [24611] = "\xbc\xaa",
++ [24612] = "\xd5\x5b", [24613] = "\xd5\x5c", [24614] = "\xcc\xed",
++ [24615] = "\xd5\x5d", [24617] = "\xd5\x5e", [24618] = "\xd5\x5f",
++ [24619] = "\xe6\xd7", [24620] = "\xd5\x60", [24621] = "\xc3\xbf",
++ [24622] = "\xd5\x61", [24623] = "\xe6\xd6", [24624] = "\xd5\x62",
++ [24628] = "\xd5\x63", [24630] = "\xe6\xd9", [24634] = "\xe6\xd8",
++ [24642] = "\xe6\xda", [24646] = "\xc0\xbb", [24648] = "\xe6\xdb",
++ [24650] = "\xe6\xdc", [24654] = "\xca\xb9", [24655] = "\xe6\xdd",
++ [24656] = "\xd5\x64", [24657] = "\xc1\xef", [24658] = "\xe6\xde",
++ [24660] = "\xd5\x65", [24662] = "\xd5\x66", [24664] = "\xe6\xdf",
++ [24669] = "\xd5\x67", [24671] = "\xce\xfe", [24672] = "\xe6\xe2",
++ [24673] = "\xd5\x68", [24674] = "\xe6\xe1", [24675] = "\xe6\xe0",
++ [24676] = "\xc4\xb0", [24677] = "\xd5\x69", [24678] = "\xe6\xe3",
++ [24679] = "\xbf\xa6", [24681] = "\xe6\xe4", [24685] = "\xe6\xe5",
++ [24686] = "\xcf\xb8", [24687] = "\xe6\xe6", [24689] = "\xd5\x6a",
++ [24692] = "\xe6\xe7", [24693] = "\xe6\xe9", [24694] = "\xe6\xe8",
++ [24695] = "\xc8\xa5", [24696] = "\xd5\x6b", [24697] = "\xc6\xf9",
++ [24699] = "\xcf\xbe", [24700] = "\xc8\xa9", [24702] = "\xd5\x6c",
++ [24707] = "\xe6\xeb", [24710] = "\xbe\xd3", [24712] = "\xc9\xaa",
++ [24714] = "\xe6\xec", [24715] = "\xe6\xea", [24716] = "\xd5\x6d",
++ [24717] = "\xb4\xce", [24718] = "\xd5\x6e", [24721] = "\xb8\xd4",
++ [24722] = "\xbb\xe8", [24725] = "\xc8\xee", [24726] = "\xd5\x6f",
++ [24727] = "\xd5\x70", [24729] = "\xb8\xaa", [24730] = "\xcb\xc3",
++ [24731] = "\xd5\x71", [24732] = "\xe6\xef", [24733] = "\xe6\xed",
++ [24735] = "\xb9\xce", [24737] = "\xb9\xcf", [24738] = "\xb0\xe9",
++ [24740] = "\xba\xe8", [24744] = "\xd5\x72", [24745] = "\xd5\x73",
++ [24746] = "\xc7\xd9", [24755] = "\xb0\xdf", [24756] = "\xe6\xf4",
++ [24758] = "\xc3\xc0", [24760] = "\xd5\x74", [24764] = "\xc7\xd8",
++ [24765] = "\xd5\x75", [24766] = "\xc2\xdb", [24767] = "\xd5\x76",
++ [24770] = "\xd5\x77", [24772] = "\xd5\x78", [24773] = "\xd5\x79",
++ [24774] = "\xe6\xf6", [24775] = "\xd5\x7a", [24776] = "\xd5\x7b",
++ [24777] = "\xe6\xf2", [24778] = "\xe6\xf5", [24779] = "\xe6\xf0",
++ [24781] = "\xe6\xf3", [24782] = "\xcb\xa6", [24784] = "\xd5\x7c",
++ [24785] = "\xb8\xd5", [24788] = "\xb0\xfd", [24789] = "\xe6\xf1",
++ [24797] = "\xd5\x7d", [24798] = "\xd5\x7e", [24799] = "\xe6\xf8",
++ [24800] = "\xd6\x21", [24801] = "\xe6\xf9", [24802] = "\xd6\x22",
++ [24803] = "\xd6\x23", [24804] = "\xc6\xb9", [24806] = "\xd6\x24",
++ [24808] = "\xb6\xbb", [24809] = "\xd6\x25", [24810] = "\xd6\x26",
++ [24812] = "\xe7\xa6", [24813] = "\xc7\xbd", [24814] = "\xd6\x27",
++ [24818] = "\xbb\xe9", [24819] = "\xd6\x28", [24821] = "\xb6\xbc",
++ [24822] = "\xc0\xc8", [24823] = "\xcf\xc6", [24824] = "\xcc\xae",
++ [24825] = "\xe6\xf7", [24826] = "\xc0\xd4", [24827] = "\xd6\x29",
++ [24838] = "\xd6\x2a", [24839] = "\xd6\x2b", [24840] = "\xd6\x2c",
++ [24842] = "\xb5\xd3", [24843] = "\xe6\xfa", [24844] = "\xd6\x2d",
++ [24846] = "\xd6\x2e", [24848] = "\xd6\x2f", [24851] = "\xe6\xfc",
++ [24852] = "\xd6\x30", [24855] = "\xd6\x31", [24857] = "\xe6\xfb",
++ [24860] = "\xd6\x32", [24863] = "\xe6\xfd", [24864] = "\xd6\x33",
++ [24865] = "\xc3\xa6", [24867] = "\xc7\xbe", [24869] = "\xd6\x34",
++ [24873] = "\xc4\xb1", [24874] = "\xd6\x35", [24876] = "\xd6\x36",
++ [24878] = "\xe7\xa3", [24885] = "\xd6\x37", [24886] = "\xe7\xa2",
++ [24887] = "\xd6\x38", [24890] = "\xd6\x39", [24891] = "\xe6\xfe",
++ [24892] = "\xd6\x3a", [24894] = "\xbf\xd5", [24896] = "\xc9\xe5",
++ [24897] = "\xe7\xa5", [24898] = "\xd6\x3b", [24899] = "\xe7\xa4",
++ [24900] = "\xb9\xd0", [24901] = "\xcf\xd3", [24903] = "\xd6\x3c",
++ [24911] = "\xe7\xb5", [24912] = "\xd6\x3d", [24913] = "\xd6\x3e",
++ [24917] = "\xe7\xa9", [24918] = "\xe7\xaa", [24919] = "\xd6\x3f",
++ [24920] = "\xd6\x40", [24921] = "\xd6\x41", [24923] = "\xbc\xf0",
++ [24925] = "\xd6\x42", [24926] = "\xe7\xa8", [24927] = "\xd6\x43",
++ [24928] = "\xb9\xf8", [24929] = "\xe7\xa7", [24932] = "\xe7\xab",
++ [24935] = "\xd6\x44", [24936] = "\xc4\xb2", [24937] = "\xca\xa2",
++ [24938] = "\xc1\xa3", [24943] = "\xc2\xdc", [24944] = "\xe7\xaf",
++ [24945] = "\xd6\x45", [24946] = "\xe7\xb0", [24947] = "\xe7\xac",
++ [24948] = "\xd6\x47", [24949] = "\xd6\x48", [24950] = "\xd6\x49",
++ [24952] = "\xe7\xad", [24954] = "\xe7\xae", [24955] = "\xd6\x4a",
++ [24958] = "\xd6\x4b", [24959] = "\xb9\xd1", [24960] = "\xd6\x46",
++ [24963] = "\xe7\xb6", [24965] = "\xe7\xb2", [24966] = "\xd6\x4c",
++ [24968] = "\xd6\x4d", [24970] = "\xc9\xe6", [24971] = "\xd6\x4e",
++ [24972] = "\xcb\xec", [24973] = "\xc9\xa8", [24974] = "\xd6\x4f",
++ [24976] = "\xe7\xb1", [24978] = "\xd6\x50", [24979] = "\xe7\xb4",
++ [24980] = "\xe7\xb3", [24984] = "\xcb\xc4", [24985] = "\xe7\xb7",
++ [24990] = "\xd6\x51", [24992] = "\xe7\xb8", [24994] = "\xd6\x52",
++ [24995] = "\xc1\xb7", [24996] = "\xd6\x53", [24997] = "\xe7\xb9",
++ [25000] = "\xe7\xbb", [25002] = "\xe7\xbf", [25003] = "\xd6\x54",
++ [25005] = "\xe7\xbc", [25006] = "\xe7\xba", [25007] = "\xc7\xbf",
++ [25008] = "\xe7\xbd", [25010] = "\xe7\xbe", [25011] = "\xd6\x56",
++ [25013] = "\xd6\x57", [25014] = "\xb2\xb2", [25016] = "\xe7\xc5",
++ [25017] = "\xe7\xc0", [25018] = "\xd6\x58", [25019] = "\xd6\x55",
++ [25021] = "\xe7\xc1", [25022] = "\xd6\x59", [25023] = "\xd6\x5a",
++ [25025] = "\xe7\xc2", [25027] = "\xc2\xa1", [25029] = "\xd6\x5b",
++ [25031] = "\xd6\x5c", [25032] = "\xe7\xc4", [25033] = "\xe7\xc3",
++ [25034] = "\xe7\xc6", [25035] = "\xd6\x5d", [25037] = "\xd6\x5e",
++ [25038] = "\xd6\x5f", [25039] = "\xe7\xc7", [25040] = "\xe7\xc8",
++ [25041] = "\xd6\x60", [25043] = "\xbf\xc3", [25044] = "\xd6\x61",
++ [25045] = "\xb2\xe9", [25047] = "\xe7\xc9", [25048] = "\xce\xd7",
++ [25050] = "\xbc\xab", [25051] = "\xd6\x62", [25052] = "\xd6\x63",
++ [25053] = "\xbd\xad", [25056] = "\xd6\x64", [25057] = "\xd6\x65",
++ [25058] = "\xd6\x66", [25059] = "\xbb\xea", [25060] = "\xc3\xd7",
++ [25061] = "\xd6\x67", [25062] = "\xd6\x68", [25064] = "\xd6\x69",
++ [25065] = "\xd6\x6a", [25066] = "\xe7\xca", [25067] = "\xe7\xcb",
++ [25068] = "\xb1\xb1", [25069] = "\xd6\x6b", [25070] = "\xe7\xcc",
++ [25071] = "\xd6\x6c", [25072] = "\xd6\x6d", [25073] = "\xe7\xcd",
++ [25074] = "\xe7\xce", [25075] = "\xd6\x6e", [25077] = "\xe7\xcf",
++ [25079] = "\xe7\xd0", [25080] = "\xb6\xbd", [25081] = "\xda\xaa",
++ [25082] = "\xe7\xd1", [25084] = "\xc0\xe5", [25085] = "\xe7\xd2",
++ [25086] = "\xbc\xcb", [25087] = "\xd6\x6f", [25088] = "\xe7\xd3",
++ [25090] = "\xd0\xb0", [25091] = "\xd6\x70", [25092] = "\xd6\x71",
++ [25094] = "\xe7\xd4", [25095] = "\xca\xde", [25096] = "\xb4\xdc",
++ [25097] = "\xd6\x72", [25098] = "\xd6\x73", [25099] = "\xc1\xa4",
++ [25100] = "\xbd\xd8", [25101] = "\xd6\x74", [25102] = "\xc9\xf1",
++ [25103] = "\xbd\xae", [25105] = "\xd6\x75", [25106] = "\xd6\x76",
++ [25112] = "\xd6\x77", [25113] = "\xe7\xd5", [25114] = "\xb9\xd2",
++ [25115] = "\xe7\xd6", [25116] = "\xc8\xcc", [25118] = "\xe7\xe4",
++ [25122] = "\xd6\x78", [25123] = "\xe7\xd8", [25124] = "\xd6\x79",
++ [25125] = "\xc2\xc9", [25126] = "\xc7\xf5", [25127] = "\xb8\xbf",
++ [25128] = "\xe7\xd7", [25129] = "\xc1\xa5", [25130] = "\xd6\x7a",
++ [25136] = "\xe7\xd9", [25139] = "\xd6\x7b", [25140] = "\xd6\x7c",
++ [25141] = "\xd6\x7d", [25142] = "\xd6\x7e", [25143] = "\xc4\xfa",
++ [25147] = "\xd7\x21", [25150] = "\xd7\x22", [25151] = "\xd7\x23",
++ [25153] = "\xd7\x24", [25158] = "\xd7\x25", [25160] = "\xe7\xdb",
++ [25161] = "\xe7\xda", [25162] = "\xe7\xdd", [25164] = "\xd7\x26",
++ [25165] = "\xe7\xdc", [25167] = "\xe7\xde", [25168] = "\xd7\x27",
++ [25170] = "\xe7\xe0", [25171] = "\xd7\x28", [25172] = "\xe7\xdf",
++ [25174] = "\xb4\xcf", [25175] = "\xd7\x29", [25176] = "\xe7\xe1",
++ [25178] = "\xe7\xe2", [25179] = "\xe7\xe3", [25181] = "\xd7\x2a",
++ [25182] = "\xba\xb1", [25183] = "\xce\xc9", [25185] = "\xe7\xe5",
++ [25186] = "\xbf\xa7", [25188] = "\xd7\x2b", [25190] = "\xb1\xf0",
++ [25191] = "\xe7\xe6", [25192] = "\xe7\xe7", [25195] = "\xd7\x2c",
++ [25197] = "\xd7\x2d", [25198] = "\xe7\xe8", [25199] = "\xd7\x2e",
++ [25200] = "\xd7\x2f", [25201] = "\xd7\x30", [25203] = "\xd7\x31",
++ [25204] = "\xd7\x32", [25207] = "\xd7\x33", [25209] = "\xd7\x34",
++ [25210] = "\xd7\x35", [25211] = "\xb0\xf2", [25213] = "\xe7\xe9",
++ [25214] = "\xd7\x36", [25217] = "\xd7\x37", [25218] = "\xe7\xea",
++ [25220] = "\xd7\x38", [25222] = "\xd7\x39", [25224] = "\xd7\x3a",
++ [25225] = "\xc9\xe7", [25226] = "\xd7\x3b", [25227] = "\xd7\x3c",
++ [25229] = "\xbc\xc7", [25231] = "\xe7\xec", [25232] = "\xd7\x3d",
++ [25233] = "\xd7\x3e", [25235] = "\xd7\x3f", [25236] = "\xd7\x40",
++ [25237] = "\xb3\xa9", [25238] = "\xb0\xb2", [25239] = "\xd7\x41",
++ [25240] = "\xd7\x42", [25241] = "\xd7\x43", [25242] = "\xd7\x44",
++ [25243] = "\xe7\xeb", [25244] = "\xe7\xee", [25245] = "\xc7\xce",
++ [25246] = "\xd7\x45", [25247] = "\xbf\xc4", [25248] = "\xd7\x46",
++ [25249] = "\xb2\xd6", [25250] = "\xd7\x47", [25251] = "\xcb\xa7",
++ [25252] = "\xd7\x48", [25255] = "\xd7\x49", [25256] = "\xb7\xdd",
++ [25257] = "\xb6\xdc", [25258] = "\xd7\x4a", [25259] = "\xe7\xed",
++ [25260] = "\xd7\x4b", [25261] = "\xb2\xea", [25262] = "\xd7\x4c",
++ [25263] = "\xd7\x4d", [25269] = "\xb4\xa3", [25270] = "\xd7\x4e",
++ [25280] = "\xd7\x4f", [25281] = "\xb1\xf1", [25282] = "\xe7\xf2",
++ [25283] = "\xce\xea", [25284] = "\xc2\xdd", [25285] = "\xd7\x50",
++ [25287] = "\xc9\xc4", [25289] = "\xe7\xfe", [25290] = "\xd7\x51",
++ [25291] = "\xb2\xd7", [25292] = "\xe7\xfc", [25294] = "\xe7\xfa",
++ [25295] = "\xe7\xf1", [25296] = "\xd7\x52", [25297] = "\xe7\xef",
++ [25298] = "\xd7\x53", [25299] = "\xe7\xf0", [25300] = "\xd7\x54",
++ [25301] = "\xbc\xe3", [25302] = "\xb6\xec", [25303] = "\xc3\xf7",
++ [25304] = "\xd7\x55", [25306] = "\xd7\x56", [25307] = "\xc6\xd1",
++ [25309] = "\xd7\x57", [25311] = "\xd7\x58", [25313] = "\xb1\xd1",
++ [25315] = "\xe7\xf4", [25316] = "\xe7\xf3", [25318] = "\xd7\x59",
++ [25319] = "\xd7\x5a", [25321] = "\xe7\xf9", [25322] = "\xe7\xf5",
++ [25323] = "\xe7\xf8", [25325] = "\xd7\x5b", [25326] = "\xd7\x5c",
++ [25328] = "\xd7\x5d", [25329] = "\xd7\x5e", [25330] = "\xcc\xd0",
++ [25331] = "\xe7\xf7", [25332] = "\xb2\xd8", [25333] = "\xb3\xfd",
++ [25334] = "\xe7\xfb", [25335] = "\xd7\x5f", [25336] = "\xd7\x60",
++ [25337] = "\xe7\xfd", [25338] = "\xd7\x61", [25339] = "\xd7\x62",
++ [25342] = "\xb7\xd4", [25350] = "\xe8\xa3", [25351] = "\xe8\xac",
++ [25352] = "\xe8\xad", [25355] = "\xd7\x64", [25356] = "\xb0\xab",
++ [25357] = "\xd7\x65", [25358] = "\xd7\x66", [25359] = "\xd7\x67",
++ [25361] = "\xd7\x68", [25362] = "\xd7\x69", [25363] = "\xe8\xb4",
++ [25368] = "\xb0\xf1", [25371] = "\xe8\xab", [25372] = "\xd7\x6a",
++ [25373] = "\xd7\x6b", [25374] = "\xd7\x6c", [25375] = "\xe8\xaa",
++ [25376] = "\xd7\x6d", [25377] = "\xe8\xa5", [25378] = "\xe8\xa4",
++ [25379] = "\xd7\x6e", [25380] = "\xe8\xa2", [25381] = "\xe8\xa1",
++ [25382] = "\xc3\xe3", [25383] = "\xd7\x6f", [25384] = "\xc2\xfb",
++ [25385] = "\xe8\xa7", [25386] = "\xd7\x70", [25388] = "\xd7\x71",
++ [25389] = "\xd7\x72", [25392] = "\xe8\xa6", [25394] = "\xd7\x73",
++ [25395] = "\xd7\x74", [25396] = "\xd7\x75", [25397] = "\xe8\xa9",
++ [25399] = "\xd7\x76", [25401] = "\xc1\xf0", [25402] = "\xb7\xd5",
++ [25405] = "\xd7\x77", [25406] = "\xd7\x78", [25407] = "\xb1\xc1",
++ [25408] = "\xe8\xa8", [25409] = "\xd7\x79", [25410] = "\xb9\xd3",
++ [25411] = "\xd8\x3e", [25412] = "\xd7\x63", [25413] = "\xd7\x7a",
++ [25414] = "\xd7\x7b", [25415] = "\xd7\x7c", [25416] = "\xc1\xf1",
++ [25426] = "\xf4\x5f", [25440] = "\xd7\x7d", [25443] = "\xe8\xba",
++ [25445] = "\xe8\xbb", [25447] = "\xb2\xd9", [25448] = "\xd7\x7e",
++ [25451] = "\xb2\xae", [25452] = "\xe8\xb8", [25453] = "\xd8\x21",
++ [25455] = "\xd8\x22", [25456] = "\xd8\x23", [25458] = "\xd8\x24",
++ [25460] = "\xd8\x25", [25461] = "\xe8\xae", [25462] = "\xd8\x26",
++ [25463] = "\xe8\xb6", [25465] = "\xe8\xbd", [25466] = "\xe8\xb7",
++ [25469] = "\xd8\x27", [25470] = "\xe8\xb5", [25474] = "\xd8\x28",
++ [25475] = "\xe7\xf6", [25476] = "\xd8\x29", [25477] = "\xd8\x2a",
++ [25478] = "\xe8\xb3", [25480] = "\xd8\x2b", [25481] = "\xd8\x2c",
++ [25482] = "\xe8\xaf", [25483] = "\xd8\x2d", [25484] = "\xd8\x2e",
++ [25485] = "\xd8\x2f", [25486] = "\xb4\xd0", [25487] = "\xe8\xb1",
++ [25488] = "\xe8\xbc", [25490] = "\xe8\xb2", [25494] = "\xd8\x30",
++ [25495] = "\xd8\x31", [25496] = "\xe8\xbe", [25497] = "\xd8\x32",
++ [25498] = "\xe8\xb0", [25499] = "\xc7\xfc", [25500] = "\xd8\x33",
++ [25501] = "\xd8\x4c", [25505] = "\xcd\xe9", [25509] = "\xe8\xb9",
++ [25517] = "\xe8\xcf", [25518] = "\xd8\x34", [25519] = "\xd8\x35",
++ [25520] = "\xd8\x36", [25521] = "\xe8\xc7", [25525] = "\xbf\xfb",
++ [25527] = "\xd8\x37", [25529] = "\xd8\x38", [25530] = "\xb5\xc6",
++ [25532] = "\xb6\xdd", [25534] = "\xe8\xc2", [25535] = "\xd8\x39",
++ [25536] = "\xd8\x3a", [25537] = "\xd8\x3b", [25539] = "\xb2\xdb",
++ [25540] = "\xd8\x3c", [25542] = "\xbe\xd4", [25544] = "\xe8\xc5",
++ [25548] = "\xba\xda", [25549] = "\xd8\x3d", [25551] = "\xc5\xd1",
++ [25552] = "\xe8\xca", [25560] = "\xd8\x3f", [25561] = "\xca\xee",
++ [25562] = "\xd8\x40", [25563] = "\xe8\xc1", [25567] = "\xb2\xda",
++ [25568] = "\xb8\xd6", [25569] = "\xc9\xa9", [25570] = "\xe8\xcb",
++ [25572] = "\xe8\xbf", [25574] = "\xd8\x41", [25575] = "\xe8\xc8",
++ [25576] = "\xd8\x42", [25577] = "\xd8\x43", [25579] = "\xe8\xd2",
++ [25580] = "\xd8\x44", [25581] = "\xe8\xc3", [25585] = "\xd8\x45",
++ [25587] = "\xe8\xc4", [25588] = "\xc6\xba", [25590] = "\xd8\x46",
++ [25591] = "\xe8\xc9", [25594] = "\xd8\x47", [25595] = "\xe8\xc6",
++ [25596] = "\xcb\xa8", [25597] = "\xe8\xcc", [25598] = "\xb0\xe0",
++ [25599] = "\xd8\x48", [25601] = "\xd8\x49", [25603] = "\xe8\xc0",
++ [25605] = "\xd8\x4a", [25609] = "\xd8\x4b", [25616] = "\xe8\xce",
++ [25618] = "\xe8\xcd", [25625] = "\xc7\xeb", [25626] = "\xe8\xd4",
++ [25628] = "\xe8\xdf", [25631] = "\xd8\x4d", [25633] = "\xb3\xfe",
++ [25637] = "\xe8\xe2", [25640] = "\xe8\xd0", [25641] = "\xd8\x4e",
++ [25644] = "\xe8\xd5", [25645] = "\xcd\xee", [25653] = "\xd8\x4f",
++ [25654] = "\xe8\xde", [25655] = "\xd8\x50", [25656] = "\xd8\x51",
++ [25657] = "\xcd\xd5", [25658] = "\xd8\x52", [25661] = "\xd8\x53",
++ [25662] = "\xce\xaa", [25663] = "\xd8\x54", [25665] = "\xd8\x55",
++ [25666] = "\xd8\x56", [25670] = "\xd8\x57", [25671] = "\xc3\xf8",
++ [25672] = "\xd8\x58", [25673] = "\xd8\x59", [25674] = "\xd8\x5a",
++ [25675] = "\xb3\xeb", [25676] = "\xd8\x5b", [25680] = "\xd8\x5c",
++ [25681] = "\xc9\xf2", [25682] = "\xe8\xe4", [25683] = "\xc6\xa1",
++ [25684] = "\xd8\x5d", [25685] = "\xd8\x5e", [25686] = "\xb0\xb1",
++ [25687] = "\xd8\x5f", [25689] = "\xe8\xdd", [25690] = "\xd8\x60",
++ [25691] = "\xe8\xd9", [25692] = "\xc1\xf2", [25693] = "\xe8\xd3",
++ [25694] = "\xe8\xdb", [25695] = "\xe8\xe0", [25696] = "\xd8\x61",
++ [25697] = "\xc7\xac", [25699] = "\xd8\x62", [25700] = "\xd8\x63",
++ [25701] = "\xb0\xaa", [25702] = "\xd8\x64", [25703] = "\xe8\xd8",
++ [25704] = "\xd8\x65", [25705] = "\xe8\xe1", [25706] = "\xc9\xf8",
++ [25708] = "\xd8\x66", [25709] = "\xd8\x67", [25713] = "\xd8\x68",
++ [25714] = "\xe8\xdc", [25716] = "\xe8\xd7", [25717] = "\xd8\x69",
++ [25723] = "\xbe\xd5", [25728] = "\xbd\xaf", [25730] = "\xd8\x6a",
++ [25731] = "\xd8\x6b", [25732] = "\xbc\xac", [25733] = "\xd8\x6c",
++ [25737] = "\xcc\xd8", [25740] = "\xc9\xc7", [25742] = "\xd8\x6d",
++ [25743] = "\xe8\xe7", [25745] = "\xe8\xf0", [25750] = "\xd8\x6e",
++ [25752] = "\xd8\x6f", [25753] = "\xd8\x70", [25754] = "\xd8\x71",
++ [25757] = "\xe8\xda", [25759] = "\xd8\x72", [25761] = "\xd8\x73",
++ [25762] = "\xb3\xf7", [25764] = "\xd8\x74", [25768] = "\xbe\xf8",
++ [25769] = "\xe8\xe5", [25770] = "\xd8\x75", [25771] = "\xe8\xea",
++ [25772] = "\xc1\xf3", [25773] = "\xd8\x76", [25774] = "\xd8\x77",
++ [25775] = "\xe8\xe6", [25776] = "\xd8\x78", [25777] = "\xe8\xed",
++ [25778] = "\xd8\x79", [25780] = "\xc3\xdf", [25782] = "\xe8\xee",
++ [25783] = "\xd8\x7a", [25784] = "\xd8\x7b", [25785] = "\xcd\xd6",
++ [25786] = "\xe8\xe3", [25787] = "\xb3\xb8", [25788] = "\xd8\x7c",
++ [25789] = "\xe8\xe9", [25791] = "\xd8\x7d", [25792] = "\xe8\xec",
++ [25793] = "\xcc\xac", [25795] = "\xd8\x7e", [25798] = "\xe8\xef",
++ [25801] = "\xe8\xe8", [25802] = "\xe8\xeb", [25804] = "\xd9\x21",
++ [25815] = "\xd9\x22", [25818] = "\xd9\x23", [25820] = "\xcb\xa9",
++ [25822] = "\xcf\xa1", [25823] = "\xd9\x24", [25824] = "\xd9\x25",
++ [25825] = "\xd9\x26", [25826] = "\xd9\x27", [25828] = "\xe8\xf3",
++ [25831] = "\xd9\x28", [25834] = "\xd9\x2a", [25835] = "\xd9\x2b",
++ [25836] = "\xe8\xfa", [25837] = "\xd9\x2c", [25839] = "\xe8\xf2",
++ [25840] = "\xbc\xc3", [25842] = "\xd9\x2d", [25843] = "\xd9\x2e",
++ [25846] = "\xe8\xd1", [25847] = "\xd9\x2f", [25852] = "\xd9\x30",
++ [25854] = "\xd9\x31", [25856] = "\xd9\x32", [25857] = "\xca\xce",
++ [25859] = "\xcc\xa2", [25860] = "\xe8\xf9", [25861] = "\xe8\xf8",
++ [25863] = "\xe8\xf4", [25864] = "\xe8\xf5", [25866] = "\xb1\xb6",
++ [25868] = "\xd9\x33", [25870] = "\xd9\x34", [25871] = "\xe8\xf7",
++ [25873] = "\xe8\xf1", [25874] = "\xd9\x35", [25875] = "\xd9\x36",
++ [25876] = "\xd9\x37", [25877] = "\xd9\x38", [25878] = "\xc4\xd5",
++ [25879] = "\xd9\x39", [25882] = "\xd9\x3a", [25883] = "\xd9\x3b",
++ [25884] = "\xe8\xf6", [25885] = "\xb0\xfe", [25887] = "\xd9\x3c",
++ [25890] = "\xd9\x29", [25891] = "\xd9\x3d", [25892] = "\xd9\x3e",
++ [25893] = "\xc2\xa2", [25894] = "\xd9\x3f", [25901] = "\xca\xc3",
++ [25903] = "\xd9\x40", [25904] = "\xe8\xfb", [25905] = "\xe9\xa1",
++ [25907] = "\xc8\xd9", [25910] = "\xd9\x41", [25912] = "\xe8\xfe",
++ [25913] = "\xbe\xd6", [25914] = "\xbc\xc9", [25915] = "\xe9\xa3",
++ [25918] = "\xb6\xbe", [25919] = "\xd9\x42", [25920] = "\xd9\x43",
++ [25921] = "\xd9\x44", [25922] = "\xd9\x45", [25923] = "\xd9\x46",
++ [25925] = "\xe9\xa4", [25926] = "\xd9\x47", [25927] = "\xc9\xf9",
++ [25928] = "\xe8\xfd", [25929] = "\xd9\x48", [25930] = "\xe8\xd6",
++ [25932] = "\xd9\x49", [25933] = "\xd9\x4a", [25934] = "\xd9\x4b",
++ [25935] = "\xd9\x4c", [25936] = "\xd9\x4d", [25937] = "\xd9\x4e",
++ [25938] = "\xd9\x4f", [25939] = "\xe8\xfc", [25940] = "\xd9\x50",
++ [25944] = "\xcf\xcf", [25945] = "\xc6\xa2", [25946] = "\xc9\xf3",
++ [25947] = "\xd9\x51", [25949] = "\xe9\xab", [25951] = "\xd9\x52",
++ [25959] = "\xe9\xb1", [25961] = "\xd9\x53", [25962] = "\xd9\x54",
++ [25963] = "\xd9\x55", [25965] = "\xd9\x56", [25966] = "\xe9\xb2",
++ [25967] = "\xd9\x57", [25968] = "\xe9\xa5", [25969] = "\xd9\x58",
++ [25972] = "\xc7\xf6", [25973] = "\xd9\x59", [25974] = "\xd9\x5a",
++ [25975] = "\xe9\xaf", [25976] = "\xe9\xa7", [25977] = "\xd9\x5b",
++ [25978] = "\xe9\xa9", [25979] = "\xd9\x5c", [25980] = "\xd9\x5d",
++ [25983] = "\xd9\x5e", [25984] = "\xe9\xb3", [25985] = "\xe9\xa8",
++ [25987] = "\xd9\x5f", [25988] = "\xe9\xac", [25991] = "\xb1\xf2",
++ [25992] = "\xd9\x60", [25993] = "\xc6\xe5", [25995] = "\xe9\xad",
++ [25996] = "\xe9\xb0", [25997] = "\xd9\x61", [25999] = "\xd9\x62",
++ [26000] = "\xd9\x63", [26002] = "\xd9\x64", [26004] = "\xe9\xa6",
++ [26005] = "\xd9\x65", [26006] = "\xc1\xa6", [26007] = "\xd9\x66",
++ [26008] = "\xe9\xaa", [26009] = "\xbb\xa7", [26010] = "\xbf\xc5",
++ [26011] = "\xb7\xb0", [26012] = "\xcc\xf4", [26013] = "\xd9\x74",
++ [26014] = "\xcc\xf9", [26015] = "\xbd\xf2", [26016] = "\xf4\x61",
++ [26020] = "\xd9\x67", [26022] = "\xd9\x68", [26023] = "\xd9\x69",
++ [26024] = "\xd9\x6a", [26025] = "\xe9\xb7", [26026] = "\xe9\xb5",
++ [26028] = "\xd9\x6b", [26029] = "\xd9\x6c", [26030] = "\xd9\x6d",
++ [26031] = "\xd9\x6e", [26033] = "\xcf\xce", [26034] = "\xd9\x6f",
++ [26039] = "\xd9\x70", [26041] = "\xe9\xb4", [26042] = "\xd9\x71",
++ [26043] = "\xd9\x72", [26045] = "\xcd\xf5", [26046] = "\xd9\x73",
++ [26047] = "\xe9\xb6", [26048] = "\xe9\xb8", [26053] = "\xe9\xb9",
++ [26056] = "\xd9\x75", [26058] = "\xd9\x76", [26060] = "\xe9\xbc",
++ [26061] = "\xe9\xba", [26063] = "\xd9\x77", [26064] = "\xd9\x78",
++ [26068] = "\xc6\xa3", [26069] = "\xe9\xbb", [26070] = "\xd9\x79",
++ [26072] = "\xd9\x7a", [26073] = "\xc8\xcd", [26074] = "\xe9\xae",
++ [26077] = "\xd9\x7b", [26083] = "\xd9\x7c", [26086] = "\xd9\x7d",
++ [26087] = "\xbd\xf3", [26089] = "\xe9\xbd", [26090] = "\xe9\xc2",
++ [26091] = "\xc1\xf4", [26092] = "\xd9\x7e", [26094] = "\xe9\xc1",
++ [26095] = "\xda\x21", [26096] = "\xda\x22", [26098] = "\xe9\xa2",
++ [26100] = "\xda\x23", [26101] = "\xda\x24", [26102] = "\xe9\xc3",
++ [26103] = "\xc1\xc9", [26106] = "\xe9\xbe", [26107] = "\xe9\xc0",
++ [26109] = "\xda\x25", [26110] = "\xda\x26", [26112] = "\xda\x27",
++ [26113] = "\xda\x28", [26114] = "\xda\x29", [26115] = "\xe9\xbf",
++ [26118] = "\xdd\xb1", [26119] = "\xdd\xa2", [26120] = "\xda\x2a",
++ [26121] = "\xda\x2b", [26122] = "\xe9\xc5", [26123] = "\xda\x2c",
++ [26126] = "\xda\x2d", [26129] = "\xda\x2e", [26130] = "\xe9\xc4",
++ [26135] = "\xda\x2f", [26137] = "\xda\x30", [26141] = "\xcd\xf6",
++ [26143] = "\xe2\xbc", [26144] = "\xe9\xc6", [26150] = "\xda\x31",
++ [26152] = "\xda\x32", [26154] = "\xda\x33", [26156] = "\xda\x34",
++ [26157] = "\xda\x35", [26159] = "\xe9\xc7", [26160] = "\xda\x36",
++ [26161] = "\xb8\x66", [26162] = "\xda\x37", [26166] = "\xda\x38",
++ [26173] = "\xe9\xc8", [26174] = "\xb8\xd7", [26176] = "\xb5\xd4",
++ [26178] = "\xda\x39", [26179] = "\xda\x3a", [26180] = "\xe9\xca",
++ [26181] = "\xd1\xdd", [26182] = "\xda\x3b", [26183] = "\xda\x3c",
++ [26184] = "\xda\x3d", [26185] = "\xda\x3e", [26186] = "\xb5\xf5",
++ [26188] = "\xce\xba", [26189] = "\xda\x3f", [26190] = "\xb6\xf3",
++ [26191] = "\xe9\xcb", [26192] = "\xda\x40", [26193] = "\xda\x41",
++ [26194] = "\xda\x42", [26195] = "\xda\x43", [26196] = "\xda\x44",
++ [26199] = "\xe9\xcc", [26201] = "\xda\x45", [26203] = "\xc3\xee",
++ [26204] = "\xda\x46", [26207] = "\xda\x47", [26209] = "\xe9\xcd",
++ [26213] = "\xda\x48", [26214] = "\xda\x49", [26215] = "\xda\x4a",
++ [26217] = "\xc6\xfa", [26218] = "\xda\x4b", [26219] = "\xb0\xba",
++ [26232] = "\xda\x6d", [26234] = "\xb2\xe3", [26235] = "\xe9\xd2",
++ [26236] = "\xe9\xd3", [26237] = "\xda\x4c", [26241] = "\xda\x4d",
++ [26243] = "\xe9\xce", [26245] = "\xbb\xbd", [26246] = "\xda\x4e",
++ [26248] = "\xda\x4f", [26250] = "\xda\x50", [26252] = "\xda\x51",
++ [26257] = "\xda\x52", [26259] = "\xe9\xcf", [26260] = "\xc7\xc2",
++ [26262] = "\xda\x53", [26263] = "\xda\x54", [26264] = "\xda\x55",
++ [26265] = "\xe9\xd0", [26266] = "\xe9\xd1", [26267] = "\xe9\xdb",
++ [26269] = "\xda\x56", [26271] = "\xe9\xd5", [26272] = "\xe9\xd8",
++ [26273] = "\xda\x57", [26275] = "\xda\x58", [26276] = "\xda\x59",
++ [26277] = "\xda\x5a", [26278] = "\xe9\xd4", [26279] = "\xda\x5b",
++ [26280] = "\xda\x5c", [26281] = "\xda\x5d", [26287] = "\xda\x5e",
++ [26288] = "\xda\x5f", [26289] = "\xda\x60", [26291] = "\xda\x61",
++ [26292] = "\xe9\xd6", [26293] = "\xda\x62", [26294] = "\xe9\xd7",
++ [26295] = "\xbc\xd8", [26297] = "\xe9\xd9", [26299] = "\xc3\xc1",
++ [26301] = "\xb7\xd6", [26302] = "\xb3\xc2", [26305] = "\xda\x63",
++ [26306] = "\xda\x64", [26308] = "\xe9\xdc", [26309] = "\xda\x65",
++ [26311] = "\xda\x66", [26313] = "\xb3\xbf", [26314] = "\xda\x67",
++ [26315] = "\xe9\xe1", [26316] = "\xda\x68", [26318] = "\xe9\xdd",
++ [26319] = "\xe9\xe0", [26320] = "\xda\x69", [26323] = "\xda\x6a",
++ [26324] = "\xc8\xba", [26325] = "\xda\x6b", [26327] = "\xda\x6c",
++ [26329] = "\xe9\xde", [26332] = "\xe9\xdf", [26333] = "\xc9\xc8",
++ [26334] = "\xc8\xda", [26335] = "\xe9\xe2", [26344] = "\xc2\xfd",
++ [26345] = "\xe9\xec", [26346] = "\xda\x6e", [26347] = "\xe9\xe8",
++ [26348] = "\xda\x6f", [26349] = "\xda\x70", [26350] = "\xb2\xeb",
++ [26352] = "\xe9\xe6", [26354] = "\xcb\xaa", [26355] = "\xe9\xe7",
++ [26356] = "\xda\x71", [26357] = "\xda\x72", [26358] = "\xe9\xe4",
++ [26359] = "\xda\x73", [26360] = "\xe9\xe5", [26361] = "\xe9\xea",
++ [26362] = "\xe9\xed", [26363] = "\xda\x74", [26365] = "\xe9\xeb",
++ [26366] = "\xda\x75", [26367] = "\xda\x76", [26368] = "\xda\x77",
++ [26369] = "\xe9\xe9", [26370] = "\xe9\xe3", [26371] = "\xda\x78",
++ [26372] = "\xda\x79", [26376] = "\xc3\xd8", [26377] = "\xda\x7a",
++ [26378] = "\xe9\xf4", [26380] = "\xcc\xaa", [26382] = "\xda\x7b",
++ [26383] = "\xda\x7c", [26385] = "\xda\x7d", [26387] = "\xda\x7e",
++ [26389] = "\xe9\xf2", [26392] = "\xdb\x21", [26393] = "\xe9\xf3",
++ [26398] = "\xdb\x22", [26399] = "\xdb\x23", [26401] = "\xdb\x24",
++ [26402] = "\xdb\x25", [26404] = "\xe9\xee", [26407] = "\xe9\xf0",
++ [26409] = "\xdb\x26", [26410] = "\xdb\x27", [26411] = "\xe9\xf1",
++ [26412] = "\xdb\x28", [26413] = "\xdb\x29", [26414] = "\xdb\x2a",
++ [26415] = "\xe9\xef", [26416] = "\xdb\x2b", [26419] = "\xdb\x2c",
++ [26421] = "\xdb\x2d", [26425] = "\xc0\xe6", [26427] = "\xcf\xb9",
++ [26428] = "\xe9\xf8", [26429] = "\xdb\x2e", [26430] = "\xe9\xf9",
++ [26435] = "\xea\xa1", [26437] = "\xbf\xaa", [26439] = "\xe9\xfb",
++ [26440] = "\xdb\x2f", [26441] = "\xe9\xfe", [26445] = "\xdb\x30",
++ [26447] = "\xe9\xf6", [26448] = "\xe9\xf5", [26449] = "\xdb\x31",
++ [26451] = "\xea\xa2", [26452] = "\xdb\x32", [26453] = "\xdb\x33",
++ [26454] = "\xb2\xdc", [26456] = "\xe9\xfc", [26458] = "\xea\xa3",
++ [26462] = "\xe9\xfd", [26463] = "\xdb\x34", [26465] = "\xdb\x35",
++ [26466] = "\xdb\x36", [26468] = "\xe9\xfa", [26470] = "\xc4\xb3",
++ [26472] = "\xe9\xf7", [26475] = "\xdb\x37", [26479] = "\xc7\xe8",
++ [26482] = "\xea\xa7", [26483] = "\xdb\x38", [26484] = "\xdb\x39",
++ [26485] = "\xdb\x3a", [26486] = "\xdb\x3b", [26487] = "\xdb\x3c",
++ [26488] = "\xdb\x3d", [26489] = "\xdb\x3e", [26491] = "\xdb\x3f",
++ [26492] = "\xdb\x40", [26493] = "\xcd\xbb", [26496] = "\xdb\x41",
++ [26499] = "\xdb\x42", [26501] = "\xdb\x43", [26503] = "\xdb\x44",
++ [26504] = "\xdb\x45", [26505] = "\xdb\x46", [26510] = "\xdb\x47",
++ [26511] = "\xea\xa6", [26512] = "\xdb\x48", [26514] = "\xea\xa5",
++ [26515] = "\xdb\x49", [26519] = "\xdb\x4a", [26523] = "\xea\xae",
++ [26524] = "\xdb\x4b", [26525] = "\xdb\x4c", [26526] = "\xdb\x4d",
++ [26527] = "\xea\xa8", [26529] = "\xdb\x4e", [26531] = "\xea\xb0",
++ [26533] = "\xdb\x4f", [26538] = "\xcd\xe6", [26539] = "\xea\xb3",
++ [26541] = "\xea\xaa", [26542] = "\xdb\x50", [26543] = "\xdb\x51",
++ [26544] = "\xea\xab", [26545] = "\xdb\x52", [26548] = "\xea\xaf",
++ [26550] = "\xea\xb2", [26551] = "\xea\xb1", [26552] = "\xdb\x53",
++ [26553] = "\xdb\x54", [26554] = "\xdb\x55", [26555] = "\xea\xa9",
++ [26558] = "\xdb\x56", [26560] = "\xea\xac", [26562] = "\xea\xbd",
++ [26565] = "\xdb\x57", [26566] = "\xdb\x58", [26569] = "\xdb\x59",
++ [26570] = "\xdb\x5a", [26572] = "\xdb\x5b", [26575] = "\xdb\x5c",
++ [26576] = "\xea\xb6", [26578] = "\xdb\x5d", [26579] = "\xdb\x5e",
++ [26580] = "\xdb\x5f", [26586] = "\xdb\x60", [26587] = "\xdb\x61",
++ [26589] = "\xdb\x62", [26591] = "\xea\xb4", [26593] = "\xdb\x63",
++ [26594] = "\xea\xb5", [26595] = "\xdb\x64", [26598] = "\xea\xba",
++ [26599] = "\xea\xbb", [26600] = "\xdb\x65", [26601] = "\xb3\xaa",
++ [26602] = "\xdb\x66", [26603] = "\xb5\xc2", [26606] = "\xea\xb9",
++ [26607] = "\xdb\x67", [26609] = "\xdb\x68", [26611] = "\xdb\x69",
++ [26613] = "\xea\xa4", [26614] = "\xdb\x6a", [26615] = "\xf4\x64",
++ [26617] = "\xdb\x6b", [26618] = "\xdb\x6c", [26619] = "\xdb\x6d",
++ [26621] = "\xea\xb8", [26622] = "\xea\xbc", [26623] = "\xea\xb7",
++ [26624] = "\xdb\x6e", [26625] = "\xea\xbe", [26626] = "\xdb\x70",
++ [26627] = "\xdb\x71", [26628] = "\xdb\x72", [26629] = "\xea\xc0",
++ [26630] = "\xea\xbf", [26632] = "\xdb\x73", [26633] = "\xdb\x6f",
++ [26634] = "\xdb\x74", [26635] = "\xdb\x75", [26636] = "\xdb\x76",
++ [26638] = "\xdb\x77", [26639] = "\xdb\x78", [26641] = "\xea\xc2",
++ [26642] = "\xea\xc1", [26643] = "\xe9\xda", [26647] = "\xea\xc6",
++ [26648] = "\xdb\x79", [26653] = "\xdb\x7a", [26654] = "\xdb\x7b",
++ [26656] = "\xdb\x7c", [26657] = "\xea\xc3", [26658] = "\xdb\x7d",
++ [26661] = "\xdb\x7e", [26662] = "\xea\xc4", [26665] = "\xea\xc5",
++ [26666] = "\xdc\x21", [26667] = "\xea\xc7", [26668] = "\xdc\x22",
++ [26672] = "\xb7\xec", [26673] = "\xdc\x23", [26674] = "\xea\xc9",
++ [26675] = "\xdc\x24", [26676] = "\xea\xc8", [26677] = "\xdc\x25",
++ [26678] = "\xbd\xb0", [26680] = "\xdc\x26", [26681] = "\xdc\x27",
++ [26682] = "\xdc\x28", [26683] = "\xdc\x29", [26684] = "\xb9\xd4",
++ [26685] = "\xde\xa7", [26686] = "\xdc\x2a", [26689] = "\xdc\x2b",
++ [26690] = "\xea\xca", [26691] = "\xbd\xd1", [26693] = "\xdc\x2c",
++ [26694] = "\xdc\x2d", [26695] = "\xb3\xb9", [26696] = "\xdc\x2e",
++ [26697] = "\xea\xcb", [26698] = "\xdc\x2f", [26699] = "\xb1\xd2",
++ [26700] = "\xdc\x30", [26701] = "\xbe\xd7", [26702] = "\xea\xcc",
++ [26703] = "\xdc\x31", [26704] = "\xdc\x32", [26705] = "\xb9\xd5",
++ [26706] = "\xea\xcd", [26707] = "\xb0\xe1", [26708] = "\xdc\x33",
++ [26712] = "\xc9\xbd", [26713] = "\xdc\x34", [26715] = "\xea\xce",
++ [26720] = "\xbf\xea", [26721] = "\xdc\x35", [26722] = "\xea\xd5",
++ [26725] = "\xea\xd2", [26727] = "\xc3\xef", [26729] = "\xdc\x36",
++ [26731] = "\xdc\x37", [26733] = "\xea\xd3", [26734] = "\xea\xd0",
++ [26735] = "\xb6\xde", [26736] = "\xdc\x38", [26737] = "\xea\xcf",
++ [26738] = "\xea\xd6", [26744] = "\xb7\xb6", [26747] = "\xc2\xde",
++ [26749] = "\xea\xdc", [26754] = "\xea\xd8", [26758] = "\xc2\xb5",
++ [26759] = "\xea\xd7", [26760] = "\xdc\x39", [26761] = "\xea\xda",
++ [26762] = "\xdc\x3a", [26763] = "\xdc\x3b", [26764] = "\xdc\x3c",
++ [26766] = "\xea\xd1", [26767] = "\xdc\x3d", [26768] = "\xdc\x3e",
++ [26770] = "\xea\xdb", [26772] = "\xea\xdd", [26776] = "\xdc\x3f",
++ [26778] = "\xdc\x40", [26779] = "\xc8\xef", [26782] = "\xea\xd9",
++ [26784] = "\xea\xde", [26785] = "\xea\xe0", [26788] = "\xb8\xd3",
++ [26789] = "\xea\xd4", [26791] = "\xb0\xc1", [26794] = "\xdc\x41",
++ [26797] = "\xdc\x42", [26798] = "\xdc\x43", [26799] = "\xea\xdf",
++ [26800] = "\xdc\x44", [26801] = "\xba\xdb", [26802] = "\xce\xf6",
++ [26803] = "\xea\xe1", [26804] = "\xea\xe2", [26805] = "\xc1\xf5",
++ [26810] = "\xdc\x45", [26811] = "\xdc\x46", [26812] = "\xdc\x47",
++ [26813] = "\xdc\x48", [26814] = "\xdc\x49", [26815] = "\xce\xa2",
++ [26817] = "\xdc\x4a", [26818] = "\xdc\x4b", [26819] = "\xdc\x4c",
++ [26820] = "\xea\xe3", [26821] = "\xcd\xb5", [26824] = "\xea\xe4",
++ [26825] = "\xea\xe5", [26827] = "\xdc\x4d", [26828] = "\xca\xe4",
++ [26829] = "\xea\xe6", [26830] = "\xdc\x4e", [26831] = "\xba\xc0",
++ [26833] = "\xce\xa3", [26839] = "\xdc\x4f", [26840] = "\xea\xeb",
++ [26847] = "\xdc\x50", [26848] = "\xdc\x51", [26849] = "\xdc\x52",
++ [26850] = "\xea\xec", [26851] = "\xbe\xd8", [26852] = "\xea\xea",
++ [26853] = "\xdc\x53", [26855] = "\xdc\x54", [26856] = "\xcd\xe7",
++ [26857] = "\xea\xe7", [26860] = "\xea\xe9", [26861] = "\xc0\xbd",
++ [26862] = "\xbf\xfe", [26865] = "\xdc\x55", [26866] = "\xea\xe8",
++ [26868] = "\xea\xed", [26870] = "\xdc\x56", [26871] = "\xca\xa3",
++ [26874] = "\xea\xef", [26876] = "\xea\xee", [26877] = "\xdc\x57",
++ [26878] = "\xdc\x58", [26879] = "\xdc\x59", [26880] = "\xb3\xec",
++ [26882] = "\xcb\xab", [26883] = "\xea\xf0", [26885] = "\xdc\x5a",
++ [26886] = "\xdc\x5b", [26888] = "\xdc\x5c", [26889] = "\xdc\x5d",
++ [26890] = "\xdc\x5e", [26892] = "\xdc\x5f", [26893] = "\xea\xfc",
++ [26894] = "\xea\xf2", [26896] = "\xdc\x60", [26901] = "\xea\xf3",
++ [26902] = "\xdc\x61", [26903] = "\xdc\x62", [26904] = "\xdc\x63",
++ [26906] = "\xea\xf4", [26907] = "\xea\xf5", [26912] = "\xdc\x64",
++ [26913] = "\xdc\x65", [26914] = "\xdc\x66", [26917] = "\xdc\x67",
++ [26918] = "\xea\xf9", [26920] = "\xea\xfa", [26921] = "\xdc\x68",
++ [26922] = "\xdc\x69", [26923] = "\xea\xf8", [26926] = "\xdc\x6a",
++ [26928] = "\xdc\x6b", [26929] = "\xea\xf6", [26930] = "\xdc\x6c",
++ [26931] = "\xea\xf1", [26932] = "\xea\xf7", [26933] = "\xdc\x6d",
++ [26934] = "\xdc\x6e", [26937] = "\xdc\x6f", [26940] = "\xea\xfb",
++ [26941] = "\xf0\xb7", [26943] = "\xdc\x70", [26946] = "\xdc\x71",
++ [26950] = "\xb2\xa8", [26951] = "\xdc\x72", [26954] = "\xdc\x73",
++ [26955] = "\xdc\x74", [26956] = "\xdc\x75", [26958] = "\xea\xfe",
++ [26959] = "\xb6\xdf", [26960] = "\xea\xfd", [26961] = "\xdc\x76",
++ [26962] = "\xdc\x77", [26963] = "\xdc\x78", [26964] = "\xeb\xa2",
++ [26966] = "\xeb\xa1", [26970] = "\xeb\xa4", [26971] = "\xdc\x79",
++ [26973] = "\xeb\xa3", [26974] = "\xdc\x7a", [26975] = "\xeb\xa5",
++ [26976] = "\xdc\x7b", [26978] = "\xbd\xb1", [26979] = "\xdc\x7c",
++ [26980] = "\xeb\xa6", [26981] = "\xdc\x7d", [26983] = "\xeb\xa7",
++ [26986] = "\xdc\x7e", [26987] = "\xdd\x21", [26988] = "\xdd\x22",
++ [26989] = "\xdd\x23", [26990] = "\xeb\xa8", [26991] = "\xc0\xbe",
++ [26993] = "\xcd\xd7", [26995] = "\xeb\xa9", [26998] = "\xca\xa4",
++ [26999] = "\xc7\xc6", [27000] = "\xeb\xaa", [27001] = "\xdd\x24",
++ [27002] = "\xeb\xab", [27003] = "\xb8\xab", [27005] = "\xdd\x25",
++ [27007] = "\xb5\xac", [27008] = "\xdd\x26", [27011] = "\xeb\xac",
++ [27012] = "\xdd\x27", [27013] = "\xdd\x28", [27014] = "\xbb\xeb",
++ [27015] = "\xc7\xc1", [27016] = "\xeb\xad", [27018] = "\xb3\xd0",
++ [27019] = "\xdd\x29", [27020] = "\xdd\x2a", [27023] = "\xdd\x2b",
++ [27024] = "\xdd\x2c", [27025] = "\xeb\xae", [27029] = "\xdd\x2d",
++ [27030] = "\xeb\xb0", [27031] = "\xcd\xf7", [27033] = "\xeb\xaf",
++ [27034] = "\xbf\xc6", [27036] = "\xeb\xb1", [27039] = "\xeb\xb2",
++ [27040] = "\xdd\x2e", [27042] = "\xeb\xb3", [27043] = "\xb4\xd1",
++ [27044] = "\xdd\x2f", [27045] = "\xdd\x30", [27046] = "\xdd\x31",
++ [27047] = "\xdd\x32", [27050] = "\xeb\xb4", [27052] = "\xdd\x33",
++ [27053] = "\xeb\xb5", [27055] = "\xeb\xb6", [27056] = "\xeb\xb7",
++ [27074] = "\xb3\xd1", [27076] = "\xdd\x34", [27077] = "\xdd\x35",
++ [27078] = "\xdd\x36", [27079] = "\xdd\x37", [27080] = "\xdd\x38",
++ [27082] = "\xeb\xb8", [27084] = "\xeb\xb9", [27085] = "\xeb\xba",
++ [27091] = "\xb2\xf2", [27093] = "\xdd\x39", [27094] = "\xbf\xa8",
++ [27095] = "\xeb\xbb", [27097] = "\xdd\x3a", [27099] = "\xdd\x3b",
++ [27101] = "\xdd\x3c", [27105] = "\xdd\x3d", [27107] = "\xdd\x3e",
++ [27108] = "\xeb\xbc", [27110] = "\xdd\x3f", [27112] = "\xeb\xbd",
++ [27113] = "\xdd\x40", [27117] = "\xdd\x41", [27119] = "\xdd\x42",
++ [27120] = "\xb8\xc0", [27122] = "\xc4\xfb", [27123] = "\xeb\xbe",
++ [27124] = "\xdd\x43", [27125] = "\xdd\x44", [27127] = "\xdd\x45",
++ [27128] = "\xb7\xd7", [27130] = "\xbf\xd6", [27132] = "\xeb\xc1",
++ [27134] = "\xc6\xa4", [27135] = "\xdd\x46", [27136] = "\xeb\xc0",
++ [27137] = "\xdd\x47", [27138] = "\xdd\x48", [27139] = "\xb7\xb1",
++ [27140] = "\xdd\x49", [27141] = "\xdd\x4a", [27142] = "\xeb\xbf",
++ [27143] = "\xc2\xf7", [27144] = "\xb5\xad", [27147] = "\xeb\xc2",
++ [27149] = "\xeb\xc3", [27150] = "\xdd\x4b", [27151] = "\xbe\xd9",
++ [27152] = "\xdd\x4c", [27154] = "\xdd\x4d", [27155] = "\xb7\xed",
++ [27156] = "\xdd\x4e", [27157] = "\xeb\xc4", [27158] = "\xdd\x4f",
++ [27162] = "\xcb\xac", [27163] = "\xdd\x50", [27164] = "\xdd\x51",
++ [27165] = "\xc0\xdf", [27167] = "\xdd\x52", [27169] = "\xb5\xf6",
++ [27171] = "\xcc\xf5", [27172] = "\xc1\xca", [27173] = "\xdd\x53",
++ [27174] = "\xeb\xc5", [27175] = "\xdd\x54", [27178] = "\xbf\xc7",
++ [27179] = "\xc3\xf0", [27180] = "\xbe\xda", [27181] = "\xdd\x55",
++ [27182] = "\xdd\x56", [27184] = "\xdd\x57", [27185] = "\xeb\xc6",
++ [27187] = "\xdd\x58", [27189] = "\xdd\x59", [27190] = "\xeb\xc9",
++ [27191] = "\xdd\x5a", [27192] = "\xeb\xca", [27193] = "\xdd\x5b",
++ [27197] = "\xdd\x5c", [27198] = "\xdd\x5d", [27200] = "\xba\xbe",
++ [27201] = "\xc2\xc2", [27202] = "\xeb\xc8", [27203] = "\xdd\x5e",
++ [27204] = "\xbe\xdb", [27205] = "\xc9\xbe", [27206] = "\xdd\x5f",
++ [27207] = "\xdd\x60", [27208] = "\xdd\x61", [27211] = "\xeb\xc7",
++ [27212] = "\xdd\x62", [27213] = "\xdd\x63", [27214] = "\xbb\xec",
++ [27216] = "\xb1\xd3", [27217] = "\xdd\x64", [27218] = "\xeb\xce",
++ [27219] = "\xb7\xd8", [27221] = "\xdd\x65", [27222] = "\xbb\xee",
++ [27223] = "\xdd\x66", [27225] = "\xbb\xed", [27227] = "\xcf\xcd",
++ [27228] = "\xeb\xcd", [27229] = "\xeb\xcc", [27230] = "\xc1\xa7",
++ [27232] = "\xb5\xcd", [27233] = "\xcf\xc3", [27234] = "\xb3\xba",
++ [27235] = "\xbe\xdc", [27237] = "\xdd\x67", [27238] = "\xdd\x68",
++ [27239] = "\xdd\x69", [27241] = "\xdd\x6a", [27242] = "\xdd\x6b",
++ [27243] = "\xdd\x6c", [27244] = "\xeb\xcb", [27246] = "\xdd\x6d",
++ [27247] = "\xdd\x6e", [27248] = "\xdd\x6f", [27250] = "\xeb\xd0",
++ [27251] = "\xdd\x70", [27252] = "\xeb\xd1", [27253] = "\xeb\xcf",
++ [27254] = "\xdd\x71", [27255] = "\xb8\xd8", [27257] = "\xcd\xc0",
++ [27259] = "\xdd\x72", [27260] = "\xbb\xef", [27261] = "\xc7\xa7",
++ [27263] = "\xdd\x73", [27264] = "\xdd\x74", [27265] = "\xeb\xd4",
++ [27266] = "\xdd\x75", [27267] = "\xc0\xc0", [27269] = "\xc3\xc2",
++ [27270] = "\xdd\x76", [27271] = "\xdd\x77", [27272] = "\xcd\xb6",
++ [27273] = "\xdd\x78", [27274] = "\xeb\xd7", [27278] = "\xb8\xec",
++ [27279] = "\xdd\x79", [27280] = "\xc0\xbf", [27281] = "\xeb\xd3",
++ [27283] = "\xeb\xd8", [27284] = "\xb8\xed", [27285] = "\xeb\xd5",
++ [27286] = "\xeb\xd6", [27287] = "\xdd\x7a", [27288] = "\xeb\xd2",
++ [27289] = "\xdd\x7b", [27292] = "\xc0\xe2", [27293] = "\xc6\xc9",
++ [27294] = "\xdd\x7c", [27295] = "\xdd\x7d", [27296] = "\xc3\xaf",
++ [27298] = "\xb2\xdd", [27299] = "\xdd\x7e", [27302] = "\xde\x21",
++ [27303] = "\xde\x22", [27305] = "\xc8\xf0", [27307] = "\xde\x23",
++ [27308] = "\xb5\xc3", [27310] = "\xde\x24", [27311] = "\xc4\xb4",
++ [27314] = "\xeb\xdb", [27315] = "\xde\x25", [27316] = "\xeb\xd9",
++ [27318] = "\xde\x26", [27319] = "\xc3\xcc", [27320] = "\xde\x27",
++ [27321] = "\xde\x28", [27322] = "\xde\x29", [27323] = "\xc0\xc1",
++ [27324] = "\xb4\xd2", [27325] = "\xeb\xda", [27327] = "\xbf\xdb",
++ [27329] = "\xde\x2a", [27330] = "\xce\xca", [27331] = "\xde\x2b",
++ [27332] = "\xde\x2c", [27333] = "\xde\x2d", [27334] = "\xcf\xc0",
++ [27335] = "\xde\x2e", [27338] = "\xeb\xdc", [27339] = "\xeb\xe7",
++ [27340] = "\xc4\xb5", [27341] = "\xde\x2f", [27342] = "\xeb\xe6",
++ [27343] = "\xde\x30", [27344] = "\xeb\xe3", [27345] = "\xeb\xeb",
++ [27346] = "\xeb\xe4", [27348] = "\xeb\xe0", [27350] = "\xc4\xfc",
++ [27351] = "\xeb\xdf", [27355] = "\xeb\xdd", [27356] = "\xde\x31",
++ [27357] = "\xcd\xa1", [27358] = "\xbb\xf0", [27360] = "\xde\x32",
++ [27361] = "\xeb\xe1", [27363] = "\xeb\xde", [27364] = "\xde\x33",
++ [27365] = "\xde\x34", [27366] = "\xde\x35", [27367] = "\xeb\xe5",
++ [27368] = "\xbd\xf4", [27370] = "\xb8\xc1", [27372] = "\xde\x36",
++ [27374] = "\xc2\xfa", [27375] = "\xde\x37", [27376] = "\xcb\xc5",
++ [27377] = "\xb1\xda", [27378] = "\xb0\xe2", [27380] = "\xc6\xa5",
++ [27381] = "\xde\x38", [27382] = "\xde\x39", [27383] = "\xeb\xe9",
++ [27386] = "\xde\x3f", [27387] = "\xde\x3a", [27388] = "\xeb\xe8",
++ [27390] = "\xc6\xe6", [27392] = "\xeb\xed", [27393] = "\xde\x3b",
++ [27396] = "\xeb\xe2", [27398] = "\xeb\xec", [27399] = "\xeb\xee",
++ [27401] = "\xb8\xac", [27402] = "\xeb\xea", [27403] = "\xb9\xd6",
++ [27404] = "\xde\x3c", [27405] = "\xbc\xd5", [27406] = "\xde\x3d",
++ [27407] = "\xde\x3e", [27408] = "\xeb\xef", [27409] = "\xcd\xd8",
++ [27414] = "\xeb\xf2", [27416] = "\xeb\xf5", [27419] = "\xeb\xf3",
++ [27420] = "\xc9\xb5", [27421] = "\xde\x40", [27424] = "\xde\x41",
++ [27427] = "\xeb\xf0", [27431] = "\xde\x42", [27433] = "\xb6\xe0",
++ [27436] = "\xde\x43", [27438] = "\xeb\xf4", [27441] = "\xeb\xf6",
++ [27442] = "\xde\x44", [27443] = "\xde\x45", [27444] = "\xde\x46",
++ [27445] = "\xde\x47", [27446] = "\xde\x48", [27448] = "\xde\x49",
++ [27449] = "\xeb\xfa", [27452] = "\xeb\xf7", [27453] = "\xde\x4e",
++ [27454] = "\xeb\xf9", [27455] = "\xeb\xf8", [27458] = "\xde\x4a",
++ [27459] = "\xde\x4b", [27460] = "\xde\x4c", [27462] = "\xeb\xfb",
++ [27464] = "\xbc\xb1", [27465] = "\xde\x4d", [27466] = "\xeb\xfd",
++ [27467] = "\xeb\xfc", [27468] = "\xc9\xe8", [27470] = "\xde\x4f",
++ [27471] = "\xec\xa1", [27475] = "\xde\x50", [27478] = "\xb7\xd9",
++ [27483] = "\xeb\xfe", [27484] = "\xec\xa2", [27485] = "\xde\x51",
++ [27487] = "\xec\xa3", [27488] = "\xb5\xc4", [27489] = "\xe6\xc1",
++ [27490] = "\xbe\xf9", [27492] = "\xec\xa4", [27494] = "\xde\x52",
++ [27495] = "\xb8\xee", [27496] = "\xde\x53", [27497] = "\xde\x54",
++ [27500] = "\xde\x55", [27501] = "\xec\xa5", [27502] = "\xde\x56",
++ [27503] = "\xf4\x66", [27504] = "\xec\xa6", [27505] = "\xde\x57",
++ [27507] = "\xbb\xbe", [27508] = "\xde\x58", [27509] = "\xde\x59",
++ [27514] = "\xda\xce", [27515] = "\xde\x5a", [27516] = "\xec\xa7",
++ [27517] = "\xde\x5b", [27518] = "\xec\xa8", [27519] = "\xde\x5c",
++ [27520] = "\xbd\xb2", [27522] = "\xec\xa9", [27523] = "\xec\xaa",
++ [27524] = "\xde\x5d", [27525] = "\xde\x5e", [27526] = "\xec\xab",
++ [27529] = "\xec\xac", [27530] = "\xec\xad", [27532] = "\xde\x5f",
++ [27534] = "\xde\x60", [27535] = "\xde\x61", [27687] = "\xc3\xab",
++ [27688] = "\xde\x62", [27689] = "\xde\x63", [27690] = "\xec\xae",
++ [27693] = "\xde\x64", [27694] = "\xde\x65", [27695] = "\xec\xb0",
++ [27697] = "\xec\xaf", [27701] = "\xde\x66", [27702] = "\xc6\xa6",
++ [27703] = "\xde\x67", [27704] = "\xec\xb1", [27705] = "\xde\x68",
++ [27706] = "\xcb\xad", [27707] = "\xde\x69", [27708] = "\xec\xb2",
++ [27710] = "\xec\xb3", [27711] = "\xde\x6a", [27712] = "\xec\xb4",
++ [27713] = "\xde\x6b", [27715] = "\xde\x6c", [27716] = "\xde\x6d",
++ [27717] = "\xec\xb5", [27719] = "\xde\x6e", [27720] = "\xde\x6f",
++ [27721] = "\xde\x72", [27722] = "\xc6\xda", [27723] = "\xde\x70",
++ [27725] = "\xde\x71", [27729] = "\xbe\xdd", [27730] = "\xec\xb6",
++ [27731] = "\xde\x73", [27732] = "\xde\x74", [27734] = "\xde\x75",
++ [27736] = "\xde\x76", [27737] = "\xde\x77", [27738] = "\xb9\xeb",
++ [27739] = "\xd0\xae", [27740] = "\xec\xb7", [27741] = "\xde\x78",
++ [27747] = "\xde\x79", [27749] = "\xde\x7a", [27750] = "\xde\x7b",
++ [27752] = "\xec\xb8", [27753] = "\xc9\xbf", [27754] = "\xec\xb9",
++ [27755] = "\xde\x7c", [27756] = "\xec\xc1", [27758] = "\xde\x7d",
++ [27762] = "\xec\xba", [27765] = "\xec\xbc", [27766] = "\xde\x7e",
++ [27767] = "\xdf\x21", [27769] = "\xec\xbb", [27770] = "\xec\xbd",
++ [27771] = "\xdf\x22", [27772] = "\xcb\xc6", [27773] = "\xec\xbe",
++ [27774] = "\xec\xbf", [27776] = "\xdf\x23", [27778] = "\xdf\x24",
++ [27779] = "\xdf\x25", [27780] = "\xec\xc0", [27784] = "\xec\xc2",
++ [27785] = "\xdf\x26", [27787] = "\xdf\x27", [27788] = "\xdf\x28",
++ [27789] = "\xb3\xad", [27790] = "\xc4\xe7", [27792] = "\xc9\xe9",
++ [27793] = "\xba\xe2", [27794] = "\xb9\xd7", [27796] = "\xdf\x29",
++ [27799] = "\xc9\xcf", [27800] = "\xb2\xdf", [27801] = "\xc8\xce",
++ [27802] = "\xec\xc5", [27803] = "\xb4\xd3", [27804] = "\xc0\xd5",
++ [27805] = "\xec\xc4", [27806] = "\xec\xc9", [27807] = "\xc3\xf9",
++ [27808] = "\xcc\xe3", [27810] = "\xec\xc7", [27811] = "\xec\xc8",
++ [27812] = "\xb5\xae", [27814] = "\xec\xca", [27815] = "\xc7\xe3",
++ [27816] = "\xc2\xdf", [27817] = "\xdf\x2a", [27818] = "\xdf\x2b",
++ [27819] = "\xc8\xf1", [27820] = "\xc5\xbd", [27821] = "\xec\xc6",
++ [27823] = "\xcb\xc7", [27824] = "\xb2\xec", [27825] = "\xec\xcc",
++ [27826] = "\xcf\xa8", [27827] = "\xc4\xc2", [27828] = "\xcf\xc5",
++ [27829] = "\xdf\x2c", [27830] = "\xdf\x2d", [27831] = "\xbb\xf1",
++ [27832] = "\xec\xcb", [27833] = "\xdf\x2e", [27834] = "\xc2\xb1",
++ [27835] = "\xdf\x2f", [27837] = "\xec\xdc", [27838] = "\xc1\xa8",
++ [27839] = "\xdf\x30", [27841] = "\xc6\xf8", [27843] = "\xc9\xd0",
++ [27845] = "\xdf\x32", [27846] = "\xdf\x31", [27849] = "\xdf\x33",
++ [27850] = "\xec\xcf", [27851] = "\xbb\xbf", [27852] = "\xbb\xf2",
++ [27853] = "\xdf\x34", [27854] = "\xbe\xde", [27856] = "\xc7\xe5",
++ [27857] = "\xdf\x35", [27858] = "\xb8\xad", [27859] = "\xec\xce",
++ [27860] = "\xec\xcd", [27862] = "\xc9\xea", [27864] = "\xdf\x36",
++ [27866] = "\xbc\xc1", [27868] = "\xdf\x37", [27869] = "\xc5\xd2",
++ [27871] = "\xdf\x38", [27872] = "\xdf\x39", [27874] = "\xdf\x3a",
++ [27876] = "\xf4\x67", [27877] = "\xdf\x3b", [27879] = "\xdf\x3c",
++ [27880] = "\xdf\x3d", [27882] = "\xec\xd1", [27883] = "\xec\xd2",
++ [27884] = "\xb9\xd8", [27885] = "\xec\xd0", [27886] = "\xdf\x3e",
++ [27887] = "\xdf\x3f", [27889] = "\xdf\x40", [27891] = "\xdf\x41",
++ [27892] = "\xec\xd3", [27893] = "\xec\xd4", [27895] = "\xec\xd6",
++ [27896] = "\xc2\xa3", [27897] = "\xdf\x42", [27898] = "\xec\xd5",
++ [27899] = "\xb4\xe6", [27901] = "\xec\xd8", [27903] = "\xec\xd7",
++ [27904] = "\xec\xd9", [27906] = "\xdf\x43", [27907] = "\xec\xdb",
++ [27908] = "\xec\xdd", [27910] = "\xec\xde", [27911] = "\xdf\x44",
++ [27915] = "\xdf\x45", [27988] = "\xc0\xd6", [27989] = "\xdf\x46",
++ [27990] = "\xbc\xcf", [27991] = "\xec\xdf", [27993] = "\xdf\x47",
++ [27995] = "\xb3\xd2", [27996] = "\xdf\x48", [27997] = "\xec\xe0",
++ [27998] = "\xdf\x49", [28000] = "\xc1\xf6", [28001] = "\xec\xe1",
++ [28003] = "\xec\xe2", [28004] = "\xc9\xeb", [28006] = "\xf4\x68",
++ [28007] = "\xb5\xaf", [28015] = "\xdf\x4a", [28017] = "\xec\xe3",
++ [28018] = "\xdf\x4b", [28020] = "\xdf\x4c", [28021] = "\xc4\xb6",
++ [28024] = "\xdf\x4d", [28026] = "\xb1\xdb", [28029] = "\xdf\x4e",
++ [28032] = "\xdf\x4f", [28033] = "\xdf\x50", [28037] = "\xdf\x51",
++ [28041] = "\xec\xe4", [28046] = "\xdf\x52", [28047] = "\xdf\x53",
++ [28048] = "\xdf\x54", [28051] = "\xbc\xf1", [28054] = "\xdf\x55",
++ [28056] = "\xbf\xf6", [28059] = "\xdf\x56", [28060] = "\xdf\x57",
++ [28063] = "\xdf\x58", [28066] = "\xdf\x59", [28067] = "\xc2\xad",
++ [28069] = "\xdf\x5a", [28071] = "\xdf\x5b", [28073] = "\xdf\x5c",
++ [28074] = "\xec\xe7", [28075] = "\xdf\x5d", [28076] = "\xdf\x6f",
++ [28078] = "\xec\xe6", [28080] = "\xdf\x5e", [28082] = "\xec\xe5",
++ [28085] = "\xdf\x5f", [28086] = "\xdf\x60", [28087] = "\xdf\x61",
++ [28088] = "\xdf\x62", [28090] = "\xdf\x63", [28091] = "\xec\xed",
++ [28092] = "\xec\xeb", [28094] = "\xdf\x64", [28095] = "\xec\xe8",
++ [28097] = "\xdf\x65", [28100] = "\xdf\x66", [28101] = "\xdf\x67",
++ [28102] = "\xec\xea", [28103] = "\xdf\x68", [28105] = "\xdf\x69",
++ [28106] = "\xec\xe9", [28107] = "\xec\xec", [28109] = "\xb5\xf7",
++ [28111] = "\xec\xf0", [28113] = "\xc0\xd7", [28115] = "\xec\xf1",
++ [28116] = "\xdf\x6a", [28117] = "\xdf\x6b", [28119] = "\xdf\x6c",
++ [28120] = "\xb8\xd9", [28122] = "\xec\xee", [28123] = "\xec\xef",
++ [28124] = "\xdf\x6d", [28127] = "\xcf\xa9", [28128] = "\xdf\x6e",
++ [28129] = "\xdf\x70", [28130] = "\xdf\x71", [28131] = "\xc4\xb7",
++ [28132] = "\xdf\x72", [28133] = "\xc1\xa9", [28140] = "\xec\xf2",
++ [28141] = "\xdf\x73", [28143] = "\xec\xf5", [28145] = "\xdf\x74",
++ [28148] = "\xdf\x75", [28149] = "\xdf\x76", [28150] = "\xdf\x77",
++ [28152] = "\xec\xf3", [28153] = "\xec\xf4", [28154] = "\xcd\xd9",
++ [28155] = "\xdf\x78", [28159] = "\xc6\xa7", [28160] = "\xec\xf8",
++ [28161] = "\xdf\x79", [28164] = "\xdf\x7a", [28166] = "\xdf\x7b",
++ [28173] = "\xec\xf6", [28174] = "\xec\xf7", [28175] = "\xec\xf9",
++ [28176] = "\xdf\x7c", [28177] = "\xdf\x7d", [28178] = "\xdf\x7e",
++ [28179] = "\xe0\x21", [28182] = "\xe0\x22", [28183] = "\xe0\x23",
++ [28186] = "\xed\xa9", [28192] = "\xec\xfc", [28193] = "\xe0\x24",
++ [28195] = "\xe0\x25", [28196] = "\xec\xfd", [28197] = "\xec\xfb",
++ [28198] = "\xe0\x26", [28199] = "\xe0\x27", [28200] = "\xe0\x28",
++ [28201] = "\xe0\x29", [28205] = "\xe0\x2a", [28208] = "\xe0\x2b",
++ [28209] = "\xe0\x2c", [28210] = "\xec\xfa", [28212] = "\xc4\xfd",
++ [28215] = "\xed\xa1", [28216] = "\xed\xa5", [28217] = "\xed\xa2",
++ [28218] = "\xec\xfe", [28219] = "\xe0\x2d", [28220] = "\xed\xa3",
++ [28221] = "\xe0\x2e", [28222] = "\xe0\x2f", [28223] = "\xe0\x30",
++ [28224] = "\xed\xa4", [28228] = "\xe0\x31", [28229] = "\xed\xab",
++ [28233] = "\xed\xa6", [28235] = "\xe0\x32", [28236] = "\xe0\x33",
++ [28237] = "\xe0\x34", [28238] = "\xe0\x35", [28239] = "\xc0\xd8",
++ [28240] = "\xed\xa8", [28241] = "\xe0\x36", [28242] = "\xe0\x37",
++ [28243] = "\xed\xaa", [28244] = "\xed\xa7", [28249] = "\xe0\x38",
++ [28252] = "\xe0\x39", [28253] = "\xe0\x3a", [28255] = "\xe0\x3b",
++ [28256] = "\xe0\x3c", [28257] = "\xe0\x3d", [28258] = "\xed\xad",
++ [28260] = "\xbd\xb3", [28262] = "\xed\xac", [28265] = "\xe0\x3e",
++ [28266] = "\xe0\x3f", [28267] = "\xe0\x40", [28268] = "\xed\xae",
++ [28273] = "\xed\xaf", [28274] = "\xe0\x41", [28275] = "\xe0\x42",
++ [28276] = "\xed\xb2", [28277] = "\xed\xb1", [28279] = "\xed\xb0",
++ [28281] = "\xe0\x43", [28282] = "\xed\xb4", [28283] = "\xed\xb3",
++ [28285] = "\xcc\xf6", [28288] = "\xe0\x44", [28289] = "\xed\xb6",
++ [28290] = "\xe0\x45", [28291] = "\xed\xb5", [28292] = "\xed\xb7",
++ [28293] = "\xe0\x46", [28297] = "\xed\xb8", [28298] = "\xe0\x47",
++ [28299] = "\xe0\x48", [28301] = "\xe0\x49", [28302] = "\xe0\x4a",
++ [28305] = "\xed\xba", [28306] = "\xe0\x4b", [28311] = "\xe0\x4c",
++ [28313] = "\xe0\x4d", [28314] = "\xed\xb9", [28315] = "\xbf\xc8",
++ [28316] = "\xed\xbb", [28317] = "\xe0\x4e", [28318] = "\xe0\x4f",
++ [28319] = "\xb6\xed", [28320] = "\xed\xbc", [28321] = "\xed\xbe",
++ [28323] = "\xe0\x50", [28325] = "\xe0\x51", [28330] = "\xe0\x52",
++ [28331] = "\xe0\x53", [28334] = "\xed\xbf", [28336] = "\xe0\x54",
++ [28337] = "\xe0\x55", [28339] = "\xe0\x56", [28340] = "\xe0\x57",
++ [28341] = "\xed\xc0", [28342] = "\xed\xbd", [28343] = "\xe0\x58",
++ [28344] = "\xed\xc1", [28346] = "\xbc\xd6", [28347] = "\xed\xc2",
++ [28348] = "\xb5\xb0", [28349] = "\xb7\xb3", [28351] = "\xe0\x59",
++ [28353] = "\xe0\x5a", [28354] = "\xb8\xae", [28356] = "\xe0\x5b",
++ [28363] = "\xed\xc3", [28364] = "\xe0\x5c", [28367] = "\xc6\xf0",
++ [28370] = "\xc5\xbe", [28371] = "\xed\xc4", [28376] = "\xe0\x5d",
++ [28379] = "\xed\xc7", [28381] = "\xe0\x64", [28382] = "\xe0\x5e",
++ [28384] = "\xe0\x5f", [28385] = "\xe0\x60", [28391] = "\xe0\x61",
++ [28392] = "\xbc\xb4", [28393] = "\xe0\x62", [28394] = "\xe0\x63",
++ [28395] = "\xed\xc6", [28396] = "\xed\xc5", [28397] = "\xb7\xda",
++ [28398] = "\xed\xc8", [28400] = "\xe0\x65", [28402] = "\xe0\x66",
++ [28403] = "\xb3\xd3", [28405] = "\xed\xca", [28407] = "\xe0\x67",
++ [28408] = "\xe0\x68", [28409] = "\xba\xdc", [28410] = "\xed\xc9",
++ [28412] = "\xed\xd2", [28415] = "\xe0\x69", [28416] = "\xe0\x6a",
++ [28418] = "\xed\xcc", [28419] = "\xed\xce", [28420] = "\xca\xe5",
++ [28421] = "\xed\xcb", [28422] = "\xe0\x6b", [28423] = "\xe0\x6c",
++ [28424] = "\xe0\x6d", [28425] = "\xed\xcd", [28427] = "\xed\xd1",
++ [28428] = "\xed\xcf", [28429] = "\xb5\xb1", [28430] = "\xe0\x6e",
++ [28431] = "\xed\xd0", [28432] = "\xe0\x6f", [28433] = "\xe0\x70",
++ [28435] = "\xe0\x71", [28437] = "\xe0\x72", [28438] = "\xed\xd3",
++ [28439] = "\xe0\x73", [28440] = "\xe0\x74", [28441] = "\xc7\xda",
++ [28442] = "\xce\xd8", [28444] = "\xe0\x75", [28445] = "\xe0\x76",
++ [28446] = "\xe0\x77", [28447] = "\xbd\xb4", [28451] = "\xed\xd4",
++ [28452] = "\xe0\x78", [28453] = "\xe0\x79", [28454] = "\xe0\x7a",
++ [28455] = "\xe0\x7b", [28456] = "\xcd\xa2", [28457] = "\xed\xd6",
++ [28458] = "\xe0\x7c", [28459] = "\xed\xd5", [28462] = "\xed\xd9",
++ [28463] = "\xcd\xc1", [28464] = "\xe0\x7d", [28465] = "\xe0\x7e",
++ [28466] = "\xed\xd8", [28467] = "\xe1\x21", [28468] = "\xb3\xed",
++ [28469] = "\xed\xd7", [28470] = "\xed\xdc", [28471] = "\xe1\x22",
++ [28473] = "\xed\xdb", [28476] = "\xed\xda", [28477] = "\xc5\xb2",
++ [28478] = "\xed\xdd", [28479] = "\xe1\x23", [28481] = "\xe1\x24",
++ [28482] = "\xe1\x25", [28483] = "\xe1\x26", [28484] = "\xe1\x27",
++ [28485] = "\xe1\x28", [28487] = "\xed\xde", [28488] = "\xe1\x29",
++ [28492] = "\xed\xdf", [28493] = "\xe1\x2a", [28494] = "\xe1\x2b",
++ [28495] = "\xb9\xec", [28497] = "\xb7\xa5", [28498] = "\xed\xe0",
++ [28499] = "\xed\xe1", [28500] = "\xed\xe2", [28501] = "\xe1\x2c",
++ [28555] = "\xbf\xc9", [28556] = "\xed\xe3", [28557] = "\xe1\x2d",
++ [28558] = "\xbc\xad", [28559] = "\xed\xe4", [28560] = "\xe1\x2e",
++ [28561] = "\xe1\x2f", [28563] = "\xed\xe5", [28564] = "\xe1\x30",
++ [28565] = "\xe1\x31", [28566] = "\xe1\x32", [28567] = "\xd2\xa1",
++ [28568] = "\xd1\xfe", [28573] = "\xed\xe6", [28574] = "\xe5\xf0",
++ [28575] = "\xed\xe7", [28576] = "\xc3\xa4", [28577] = "\xbf\xab",
++ [28578] = "\xc7\xc0", [28581] = "\xe1\x33", [28582] = "\xe1\x34",
++ [28583] = "\xed\xe8", [28584] = "\xe1\x35", [28586] = "\xca\xd5",
++ [28587] = "\xc4\xd4", [28588] = "\xb9\xfe", [28590] = "\xe1\x36",
++ [28591] = "\xc3\xa9", [28592] = "\xe1\x37", [28593] = "\xe1\x38",
++ [28594] = "\xb1\xaa", [28596] = "\xcb\xf8", [28597] = "\xbf\xd7",
++ [28598] = "\xe1\x39", [28602] = "\xe1\x3a", [28603] = "\xe1\x3b",
++ [28605] = "\xe1\x3c", [28606] = "\xb7\xde", [28608] = "\xe1\x3d",
++ [28609] = "\xb6\xe1", [28610] = "\xe1\x3e", [28611] = "\xe1\x3f",
++ [28612] = "\xca\xd6", [28613] = "\xe1\x40", [28618] = "\xed\xe9",
++ [28624] = "\xe1\x41", [28626] = "\xed\xeb", [28627] = "\xe1\x42",
++ [28628] = "\xe1\x43", [28629] = "\xed\xea", [28630] = "\xb2\xe0",
++ [28632] = "\xe1\x44", [28633] = "\xc6\xf6", [28634] = "\xed\xec",
++ [28635] = "\xc7\xf7", [28637] = "\xc5\xb3", [28638] = "\xe1\x45",
++ [28639] = "\xed\xed", [28640] = "\xbd\xd2", [28641] = "\xe1\x46",
++ [28644] = "\xed\xef", [28645] = "\xe1\x47", [28646] = "\xe1\x48",
++ [28647] = "\xcc\xc2", [28648] = "\xed\xfe", [28649] = "\xed\xf1",
++ [28650] = "\xed\xf2", [28651] = "\xe1\x49", [28653] = "\xc4\xc9",
++ [28654] = "\xe1\x4a", [28656] = "\xc2\xe0", [28657] = "\xc1\xf7",
++ [28658] = "\xe1\x4b", [28659] = "\xc6\xa8", [28660] = "\xe1\x4c",
++ [28661] = "\xed\xf0", [28662] = "\xb5\xd5", [28664] = "\xe1\x4d",
++ [28667] = "\xed\xf9", [28668] = "\xe1\x4e", [28669] = "\xed\xf6",
++ [28670] = "\xee\xa5", [28671] = "\xc6\xa9", [28672] = "\xc3\xe0",
++ [28673] = "\xed\xf3", [28675] = "\xc4\xfe", [28676] = "\xc5\xd3",
++ [28677] = "\xed\xf4", [28678] = "\xed\xf8", [28679] = "\xbf\xe0",
++ [28680] = "\xe1\x4f", [28681] = "\xc7\xe7", [28682] = "\xc4\xcc",
++ [28683] = "\xe1\x50", [28685] = "\xc0\xc2", [28686] = "\xed\xf7",
++ [28687] = "\xc2\xae", [28688] = "\xc2\xa4", [28689] = "\xed\xf5",
++ [28690] = "\xb0\xa9", [28691] = "\xcf\xa2", [28695] = "\xed\xfa",
++ [28696] = "\xe1\x51", [28697] = "\xe1\x52", [28698] = "\xe1\x54",
++ [28700] = "\xe1\x55", [28701] = "\xe1\x56", [28702] = "\xc2\xe1",
++ [28703] = "\xe1\x53", [28705] = "\xbd\xb5", [28706] = "\xbf\xca",
++ [28707] = "\xe1\x57", [28708] = "\xe1\x58", [28709] = "\xed\xfc",
++ [28710] = "\xed\xfb", [28711] = "\xe1\x59", [28712] = "\xb0\xef",
++ [28713] = "\xed\xfd", [28716] = "\xc9\xaf", [28718] = "\xee\xa7",
++ [28719] = "\xe1\x5a", [28721] = "\xc6\xdb", [28722] = "\xbf\xeb",
++ [28723] = "\xe1\x5b", [28724] = "\xe1\x5c", [28725] = "\xc3\xd9",
++ [28727] = "\xb6\xf8", [28729] = "\xee\xa6", [28730] = "\xcd\xb7",
++ [28731] = "\xb1\xbf", [28732] = "\xe1\x5d", [28733] = "\xca\xd7",
++ [28734] = "\xb2\xe1", [28735] = "\xee\xa1", [28736] = "\xee\xa2",
++ [28737] = "\xee\xa3", [28738] = "\xee\xa4", [28739] = "\xc6\xbb",
++ [28740] = "\xc3\xa3", [28741] = "\xb0\xe3", [28742] = "\xee\xa8",
++ [28744] = "\xee\xa9", [28745] = "\xf4\xa3", [28747] = "\xe1\x5e",
++ [28748] = "\xc2\xbd", [28749] = "\xe1\x5f", [28750] = "\xee\xaa",
++ [28752] = "\xb1\xf3", [28753] = "\xc1\xcc", [28754] = "\xe1\x60",
++ [28755] = "\xb8\xaf", [28757] = "\xcd\xda", [28758] = "\xe1\x61",
++ [28759] = "\xe1\x62", [28760] = "\xee\xab", [28761] = "\xc5\xac",
++ [28764] = "\xe1\x63", [28765] = "\xc1\xf8", [28766] = "\xbc\xd7",
++ [28767] = "\xee\xac", [28768] = "\xe1\x64", [28770] = "\xee\xaf",
++ [28772] = "\xe1\x65", [28773] = "\xbd\xe5", [28774] = "\xee\xad",
++ [28775] = "\xc1\xab", [28776] = "\xc1\xaa", [28777] = "\xe1\x66",
++ [28778] = "\xb0\xe4", [28780] = "\xce\xcb", [28781] = "\xee\xb1",
++ [28783] = "\xc8\xf2", [28784] = "\xee\xb3", [28785] = "\xee\xb2",
++ [28786] = "\xee\xb0", [28787] = "\xe3\xe4", [28788] = "\xb4\xd4",
++ [28789] = "\xe1\x67", [28791] = "\xed\xee", [28792] = "\xe1\x68",
++ [28793] = "\xee\xb5", [28794] = "\xee\xb4", [28795] = "\xe1\x69",
++ [28796] = "\xe1\x6a", [28798] = "\xe1\x6b", [28799] = "\xee\xb6",
++ [28800] = "\xe1\x6c", [28801] = "\xcd\xb8", [28805] = "\xe1\x6d",
++ [28807] = "\xe1\x6e", [28808] = "\xe1\x6f", [28809] = "\xe1\x70",
++ [28811] = "\xe1\x71", [28816] = "\xe1\x72", [28817] = "\xe1\x73",
++ [28818] = "\xe1\x74", [28819] = "\xc6\xe1", [28821] = "\xe1\x75",
++ [28822] = "\xcb\xae", [28824] = "\xee\xb7", [28826] = "\xbc\xd9",
++ [28831] = "\xee\xb8", [28832] = "\xe1\x76", [28833] = "\xee\xb9",
++ [28834] = "\xe1\x77", [28835] = "\xe1\x78", [28836] = "\xe1\x79",
++ [28837] = "\xee\xba", [28838] = "\xe1\x7a", [28840] = "\xc5\xa1",
++ [28845] = "\xe1\x7b", [28846] = "\xe1\x7d", [28849] = "\xb0\xea",
++ [28851] = "\xe1\x7e", [28852] = "\xe2\x21", [28853] = "\xe2\x22",
++ [28855] = "\xe2\x23", [28856] = "\xe2\x24", [28858] = "\xb9\xd9",
++ [28860] = "\xe1\x7c", [28862] = "\xcf\xba", [28866] = "\xe2\x2d",
++ [28869] = "\xe2\x25", [28871] = "\xe2\x26", [28872] = "\xe2\x27",
++ [28873] = "\xe2\x28", [28875] = "\xee\xbe", [28876] = "\xe2\x29",
++ [28877] = "\xe2\x2a", [28878] = "\xf4\x6c", [28879] = "\xe2\x2b",
++ [28881] = "\xb7\xb4", [28882] = "\xee\xbb", [28884] = "\xee\xbc",
++ [28885] = "\xe2\x2c", [28888] = "\xc9\xf4", [28891] = "\xe2\x2f",
++ [28893] = "\xb3\xd4", [28895] = "\xe2\x30", [28896] = "\xe2\x31",
++ [28900] = "\xe2\x32", [28901] = "\xcd\xb9", [28902] = "\xe2\x2e",
++ [28903] = "\xb6\xbf", [28909] = "\xc5\xd4", [28910] = "\xe2\x33",
++ [28911] = "\xe2\x34", [28912] = "\xe2\x35", [28914] = "\xee\xbf",
++ [28916] = "\xe2\x36", [28917] = "\xe2\x37", [28918] = "\xe2\x38",
++ [28920] = "\xe2\x39", [28925] = "\xe2\x3a", [28928] = "\xe2\x3b",
++ [28930] = "\xee\xc0", [28932] = "\xe2\x3c", [28933] = "\xf4\x6e",
++ [28934] = "\xe2\x3d", [28935] = "\xe2\x3e", [28936] = "\xe2\x3f",
++ [28937] = "\xee\xc1", [28938] = "\xe2\x40", [28940] = "\xe2\x41",
++ [28942] = "\xe2\x42", [28944] = "\xe2\x43", [28946] = "\xe2\x45",
++ [28947] = "\xe2\x46", [28949] = "\xe2\x44", [28951] = "\xe2\x47",
++ [28953] = "\xe2\x48", [28957] = "\xc5\xa2", [28958] = "\xe2\x49",
++ [28959] = "\xe2\x4a", [28960] = "\xee\xc3", [28961] = "\xe2\x4b",
++ [28962] = "\xee\xc2", [28964] = "\xe2\x4c", [28966] = "\xe2\x4d",
++ [28967] = "\xe2\x4e", [28969] = "\xe2\x4f", [28970] = "\xe2\x50",
++ [28972] = "\xe2\x51", [28973] = "\xe2\x52", [28979] = "\xe2\x53",
++ [28983] = "\xe2\x54", [28984] = "\xe2\x55", [28985] = "\xc6\xd3",
++ [28986] = "\xee\xc4", [28987] = "\xbd\xb6", [28988] = "\xbc\xe0",
++ [28989] = "\xc7\xdb", [28990] = "\xc3\xf1", [28991] = "\xe2\x56",
++ [28994] = "\xbc\xf2", [28995] = "\xe2\x57", [28996] = "\xbf\xec",
++ [28998] = "\xee\xc5", [28999] = "\xe2\x58", [29000] = "\xee\xc6",
++ [29001] = "\xe2\x59", [29002] = "\xe2\x5a", [29003] = "\xe2\x5b",
++ [29009] = "\xe2\x5c", [29010] = "\xbf\xdd", [29011] = "\xee\xc7",
++ [29012] = "\xe2\x5d", [29013] = "\xee\xc8", [29015] = "\xe2\x5e",
++ [29017] = "\xee\xc9", [29018] = "\xcd\xef", [29020] = "\xbd\xb7",
++ [29021] = "\xe2\x5f", [29026] = "\xee\xcb", [29027] = "\xee\xca",
++ [29028] = "\xe2\x60", [29029] = "\xb9\xda", [29031] = "\xb9\xf3",
++ [29032] = "\xbb\xc0", [29033] = "\xe2\x61", [29034] = "\xe2\x62",
++ [29035] = "\xe2\x63", [29041] = "\xe2\x64", [29042] = "\xee\xce",
++ [29043] = "\xe2\x65", [29045] = "\xe2\x66", [29046] = "\xe2\x67",
++ [29047] = "\xbd\xe6", [29049] = "\xee\xcd", [29050] = "\xe2\x68",
++ [29051] = "\xee\xcc", [29053] = "\xc2\xe9", [29054] = "\xe2\x69",
++ [29056] = "\xb8\xef", [29057] = "\xe2\x6a", [29058] = "\xc0\xc3",
++ [29059] = "\xe2\x6b", [29060] = "\xe2\x6c", [29061] = "\xe2\x6d",
++ [29063] = "\xc8\xb0", [29064] = "\xe2\x6e", [29068] = "\xbd\xb9",
++ [29070] = "\xe2\x6f", [29073] = "\xe2\x70", [29074] = "\xee\xcf",
++ [29076] = "\xbe\xdf", [29078] = "\xe2\x71", [29080] = "\xe2\x72",
++ [29082] = "\xee\xd2", [29083] = "\xee\xd0", [29084] = "\xe2\x73",
++ [29085] = "\xe2\x74", [29086] = "\xe2\x75", [29087] = "\xee\xd1",
++ [29088] = "\xe2\x76", [29089] = "\xe2\x77", [29090] = "\xe2\x78",
++ [29091] = "\xe2\x79", [29092] = "\xee\xd4", [29093] = "\xee\xd3",
++ [29094] = "\xe2\x7a", [29096] = "\xbe\xfa", [29098] = "\xee\xd5",
++ [29099] = "\xe2\x7b", [29100] = "\xe2\x7c", [29101] = "\xe2\x7d",
++ [29103] = "\xe2\x7e", [29104] = "\xee\xd6", [29105] = "\xee\xd7",
++ [29106] = "\xe3\x21", [29107] = "\xe3\x22", [29109] = "\xe3\x23",
++ [29110] = "\xc8\xd0", [29111] = "\xba\xd3", [29112] = "\xbc\xe1",
++ [29113] = "\xee\xd8", [29115] = "\xee\xd9", [29116] = "\xce\xa4",
++ [29117] = "\xbd\xc5", [29118] = "\xcc\xee", [29119] = "\xce\xcc",
++ [29120] = "\xee\xda", [29121] = "\xb6\xe2", [29123] = "\xe3\x24",
++ [29124] = "\xe3\x25", [29126] = "\xee\xdb", [29127] = "\xe3\x26",
++ [29128] = "\xc5\xa3", [29129] = "\xe3\x27", [29130] = "\xe3\x28",
++ [29131] = "\xee\xde", [29132] = "\xb3\xf8", [29133] = "\xbf\xcb",
++ [29134] = "\xe3\x29", [29135] = "\xee\xdc", [29137] = "\xee\xdd",
++ [29139] = "\xc4\xe0", [29140] = "\xe3\x2a", [29141] = "\xe3\x2b",
++ [29142] = "\xcb\xd5", [29143] = "\xb6\xfc", [29145] = "\xe3\x2c",
++ [29146] = "\xe3\x2d", [29148] = "\xe3\x2e", [29149] = "\xe3\x2f",
++ [29150] = "\xe3\x30", [29151] = "\xe3\x31", [29152] = "\xe3\x32",
++ [29153] = "\xe3\x33", [29157] = "\xee\xe0", [29158] = "\xee\xe1",
++ [29159] = "\xe3\x34", [29161] = "\xe3\x35", [29163] = "\xe3\x36",
++ [29164] = "\xee\xdf", [29165] = "\xe3\x37", [29167] = "\xee\xe3",
++ [29168] = "\xe3\x38", [29169] = "\xe3\x39", [29172] = "\xe3\x3a",
++ [29173] = "\xe3\x3b", [29174] = "\xe3\x3c", [29175] = "\xe3\x3d",
++ [29177] = "\xe3\x3e", [29178] = "\xe3\x3f", [29180] = "\xe3\x40",
++ [29181] = "\xc6\xdf", [29182] = "\xb3\xc3", [29184] = "\xe3\x41",
++ [29185] = "\xee\xe7", [29186] = "\xe3\x42", [29187] = "\xe3\x43",
++ [29188] = "\xee\xe4", [29189] = "\xee\xe6", [29190] = "\xe3\x44",
++ [29192] = "\xe3\x45", [29196] = "\xe3\x46", [29197] = "\xe3\x47",
++ [29198] = "\xee\xe2", [29203] = "\xe3\x48", [29204] = "\xe3\x49",
++ [29205] = "\xe3\x4a", [29206] = "\xe3\x4b", [29208] = "\xe3\x4c",
++ [29209] = "\xef\xcf", [29212] = "\xee\xe5", [29214] = "\xe3\x4d",
++ [29215] = "\xe3\x4e", [29216] = "\xe3\x4f", [29219] = "\xe3\x50",
++ [29220] = "\xce\xeb", [29221] = "\xe3\x51", [29222] = "\xe3\x52",
++ [29223] = "\xb8\xda", [29224] = "\xe3\x53", [29225] = "\xe3\x54",
++ [29226] = "\xe3\x55", [29228] = "\xe3\x56", [29230] = "\xe3\x57",
++ [29231] = "\xee\xef", [29232] = "\xe3\x58", [29234] = "\xe3\x59",
++ [29235] = "\xe3\x5a", [29236] = "\xc5\xb4", [29237] = "\xee\xea",
++ [29238] = "\xe3\x5b", [29239] = "\xe3\x5c", [29240] = "\xee\xed",
++ [29241] = "\xee\xeb", [29242] = "\xe3\x5d", [29243] = "\xee\xf0",
++ [29245] = "\xe3\x5e", [29246] = "\xe3\x5f", [29247] = "\xe3\x60",
++ [29248] = "\xee\xf1", [29249] = "\xe3\x61", [29255] = "\xee\xe9",
++ [29256] = "\xe3\x62", [29257] = "\xe3\x63", [29258] = "\xee\xf6",
++ [29259] = "\xb1\xf4", [29260] = "\xe3\x64", [29261] = "\xe3\x65",
++ [29262] = "\xee\xe8", [29264] = "\xe3\x66", [29265] = "\xe3\x67",
++ [29266] = "\xc8\xad", [29268] = "\xee\xec", [29269] = "\xe3\x68",
++ [29270] = "\xbe\xe0", [29271] = "\xe3\x69", [29272] = "\xe3\x6a",
++ [29273] = "\xe3\x6b", [29278] = "\xe3\x6c", [29279] = "\xe3\x6d",
++ [29280] = "\xe3\x6e", [29281] = "\xb9\xdb", [29285] = "\xe3\x6f",
++ [29286] = "\xe3\x70", [29287] = "\xe3\x71", [29288] = "\xe3\x72",
++ [29289] = "\xe3\x73", [29291] = "\xe3\x74", [29292] = "\xe3\x75",
++ [29293] = "\xe3\x76", [29294] = "\xcb\xc8", [29295] = "\xe3\x77",
++ [29296] = "\xb6\xe4", [29299] = "\xbd\xc6", [29301] = "\xc6\xbc",
++ [29304] = "\xe3\x78", [29305] = "\xe3\x79", [29306] = "\xe3\x7a",
++ [29309] = "\xe3\x7b", [29310] = "\xe3\x7c", [29313] = "\xc1\xad",
++ [29314] = "\xe3\x7d", [29315] = "\xee\xf4", [29317] = "\xee\xee",
++ [29318] = "\xee\xf3", [29319] = "\xe3\x7e", [29320] = "\xcc\xc3",
++ [29321] = "\xe4\x21", [29322] = "\xc4\xb8", [29323] = "\xee\xf5",
++ [29324] = "\xee\xf2", [29327] = "\xe4\x22", [29328] = "\xe4\x23",
++ [29332] = "\xe4\x24", [29333] = "\xe4\x25", [29335] = "\xe4\x26",
++ [29336] = "\xe4\x27", [29339] = "\xe4\x28", [29341] = "\xc1\xac",
++ [29343] = "\xe4\x29", [29346] = "\xe4\x2a", [29350] = "\xe4\x2b",
++ [29351] = "\xee\xf9", [29352] = "\xe4\x2c", [29353] = "\xee\xf8",
++ [29354] = "\xe4\x2d", [29355] = "\xe4\x2e", [29356] = "\xe4\x2f",
++ [29357] = "\xe4\x30", [29359] = "\xe4\x31", [29360] = "\xe4\x32",
++ [29361] = "\xe4\x33", [29362] = "\xe4\x34", [29363] = "\xe4\x35",
++ [29365] = "\xe4\x36", [29366] = "\xe4\x37", [29367] = "\xe4\x38",
++ [29368] = "\xe4\x39", [29371] = "\xe4\x3a", [29372] = "\xe4\x3b",
++ [29373] = "\xe4\x3c", [29374] = "\xe4\x3d", [29375] = "\xee\xf7",
++ [29376] = "\xe4\x3e", [29378] = "\xcb\xaf", [29379] = "\xe4\x3f",
++ [29381] = "\xe4\x40", [29383] = "\xe4\x41", [29384] = "\xe4\x42",
++ [29385] = "\xe4\x43", [29388] = "\xe4\x44", [29389] = "\xe4\x45",
++ [29391] = "\xe4\x46", [29392] = "\xe4\x47", [29393] = "\xe4\x48",
++ [29395] = "\xe4\x49", [29396] = "\xbd\xfb", [29397] = "\xe4\x4a",
++ [29399] = "\xe4\x4b", [29400] = "\xe4\x4c", [29401] = "\xee\xfa",
++ [29402] = "\xca\xdf", [29404] = "\xe4\x4d", [29405] = "\xb1\xd4",
++ [29406] = "\xe4\x4e", [29408] = "\xe4\x4f", [29410] = "\xc9\xc6",
++ [29411] = "\xc3\xf2", [29416] = "\xb5\xf8", [29417] = "\xe4\x50",
++ [29418] = "\xee\xfc", [29419] = "\xe4\x51", [29420] = "\xb9\xdd",
++ [29423] = "\xe4\x52", [29424] = "\xe4\x53", [29426] = "\xe4\x54",
++ [29430] = "\xbb\xac", [29432] = "\xe4\x55", [29437] = "\xe4\x56",
++ [29439] = "\xee\xfb", [29440] = "\xbf\xed", [29441] = "\xe4\x57",
++ [29444] = "\xe4\x58", [29445] = "\xe4\x59", [29448] = "\xbf\xee",
++ [29449] = "\xef\xa1", [29450] = "\xef\xa3", [29452] = "\xe4\x5a",
++ [29453] = "\xe4\x5b", [29454] = "\xe4\x5c", [29455] = "\xe4\x5d",
++ [29456] = "\xbe\xfb", [29457] = "\xe4\x5e", [29458] = "\xef\xa2",
++ [29459] = "\xef\xa4", [29460] = "\xe4\x5f", [29461] = "\xe4\x60",
++ [29462] = "\xb6\xd3", [29463] = "\xe4\x61", [29464] = "\xc9\xc5",
++ [29465] = "\xe4\x62", [29466] = "\xe4\x63", [29467] = "\xbc\xe2",
++ [29468] = "\xcf\xa3", [29470] = "\xee\xfe", [29471] = "\xba\xf8",
++ [29474] = "\xcf\xbf", [29475] = "\xe4\x64", [29476] = "\xe4\x65",
++ [29477] = "\xef\xa6", [29478] = "\xe4\x66", [29479] = "\xe4\x67",
++ [29482] = "\xef\xa5", [29483] = "\xef\xa7", [29492] = "\xee\xfd",
++ [29495] = "\xe4\x68", [29496] = "\xe4\x69", [29497] = "\xe4\x6a",
++ [29499] = "\xc6\xe9", [29501] = "\xc5\xd5", [29504] = "\xe4\x6b",
++ [29505] = "\xe4\x6c", [29506] = "\xe4\x6d", [29508] = "\xc4\xd7",
++ [29509] = "\xe4\x6e", [29510] = "\xef\xac", [29511] = "\xe4\x6f",
++ [29512] = "\xe4\x70", [29514] = "\xe4\x71", [29515] = "\xc3\xc3",
++ [29516] = "\xef\xa8", [29518] = "\xe4\x72", [29520] = "\xef\xa9",
++ [29524] = "\xe4\x73", [29525] = "\xe4\x74", [29527] = "\xe4\x75",
++ [29529] = "\xe4\x76", [29530] = "\xe4\x77", [29532] = "\xb7\xad",
++ [29533] = "\xe4\x78", [29534] = "\xef\xab", [29535] = "\xe4\x79",
++ [29536] = "\xe4\x7a", [29537] = "\xe4\x7b", [29539] = "\xe4\x7c",
++ [29540] = "\xe4\x7d", [29541] = "\xb8\xb0", [29542] = "\xe4\x7e",
++ [29546] = "\xe5\x21", [29548] = "\xef\xaa", [29549] = "\xe5\x22",
++ [29550] = "\xbe\xe1", [29551] = "\xe5\x23", [29552] = "\xe5\x24",
++ [29553] = "\xe5\x25", [29554] = "\xe5\x26", [29560] = "\xe5\x27",
++ [29562] = "\xe5\x28", [29563] = "\xe5\x29", [29564] = "\xb3\xf9",
++ [29565] = "\xe5\x2a", [29567] = "\xe5\x2b", [29570] = "\xe5\x2c",
++ [29572] = "\xef\xb0", [29573] = "\xe5\x2d", [29574] = "\xba\xbf",
++ [29575] = "\xc1\xf9", [29576] = "\xe5\x2e", [29578] = "\xc4\xca",
++ [29579] = "\xe5\x2f", [29582] = "\xe5\x30", [29585] = "\xe5\x31",
++ [29587] = "\xe5\x32", [29588] = "\xe5\x33", [29590] = "\xe5\x34",
++ [29591] = "\xb3\xbb", [29592] = "\xe5\x35", [29593] = "\xe5\x3b",
++ [29595] = "\xe5\x36", [29596] = "\xef\xae", [29597] = "\xef\xaf",
++ [29598] = "\xc4\xc3", [29600] = "\xef\xad", [29604] = "\xe5\x37",
++ [29605] = "\xe5\x38", [29606] = "\xe5\x39", [29609] = "\xef\xb1",
++ [29610] = "\xe5\x3a", [29617] = "\xe5\x3c", [29619] = "\xef\xb7",
++ [29620] = "\xe5\x3d", [29621] = "\xe5\x3e", [29622] = "\xe5\x3f",
++ [29623] = "\xe5\x40", [29624] = "\xef\xba", [29625] = "\xe5\x41",
++ [29626] = "\xe5\x42", [29627] = "\xe5\x43", [29628] = "\xe5\x44",
++ [29629] = "\xe5\x45", [29632] = "\xef\xb9", [29633] = "\xc5\xad",
++ [29635] = "\xe5\x46", [29638] = "\xef\xb2", [29639] = "\xef\xb3",
++ [29640] = "\xef\xb6", [29641] = "\xe5\x47", [29644] = "\xe5\x48",
++ [29645] = "\xef\xb8", [29646] = "\xe5\x49", [29647] = "\xe5\x4a",
++ [29649] = "\xb6\xc0", [29650] = "\xe5\x4b", [29652] = "\xef\xbb",
++ [29653] = "\xef\xb5", [29654] = "\xe5\x4c", [29655] = "\xe5\x4d",
++ [29656] = "\xef\xb4", [29671] = "\xe5\x4f", [29672] = "\xe5\x50",
++ [29673] = "\xe5\x4e", [29674] = "\xe5\x51", [29675] = "\xe5\x52",
++ [29677] = "\xe5\x53", [29681] = "\xe5\x54", [29682] = "\xe5\x55",
++ [29683] = "\xef\xbf", [29684] = "\xe5\x56", [29687] = "\xef\xc0",
++ [29688] = "\xe5\x57", [29689] = "\xe5\x58", [29693] = "\xe5\x59",
++ [29694] = "\xe5\x5a", [29695] = "\xe5\x5b", [29696] = "\xef\xc1",
++ [29699] = "\xef\xbe", [29700] = "\xef\xbd", [29701] = "\xe5\x5c",
++ [29702] = "\xe5\x5d", [29703] = "\xe5\x5e", [29704] = "\xbe\xe2",
++ [29705] = "\xc6\xaa", [29706] = "\xef\xbc", [29711] = "\xe5\x5f",
++ [29713] = "\xef\xc5", [29723] = "\xef\xc3", [29726] = "\xe5\x60",
++ [29727] = "\xe5\x61", [29729] = "\xe5\x62", [29730] = "\xe5\x63",
++ [29731] = "\xe5\x64", [29732] = "\xe5\x65", [29733] = "\xef\xc4",
++ [29734] = "\xef\xc2", [29736] = "\xc2\xf8", [29738] = "\xef\xc6",
++ [29739] = "\xe5\x66", [29741] = "\xe5\x68", [29743] = "\xe5\x67",
++ [29745] = "\xef\xc7", [29747] = "\xe5\x69", [29748] = "\xef\xc9",
++ [29749] = "\xe5\x6a", [29752] = "\xe5\x6b", [29754] = "\xe5\x6c",
++ [29756] = "\xe5\x6d", [29761] = "\xb4\xd5", [29762] = "\xef\xc8",
++ [29763] = "\xcc\xfa", [29765] = "\xe5\x6e", [29769] = "\xe5\x6f",
++ [29770] = "\xef\xd4", [29771] = "\xef\xca", [29772] = "\xe5\x70",
++ [29774] = "\xef\xcd", [29775] = "\xe5\x71", [29776] = "\xef\xcb",
++ [29777] = "\xe5\x72", [29778] = "\xef\xcc", [29779] = "\xe5\x73",
++ [29784] = "\xe5\x74", [29786] = "\xef\xce", [29787] = "\xe5\x75",
++ [29789] = "\xe5\x76", [29790] = "\xe5\x77", [29791] = "\xe5\x78",
++ [29792] = "\xef\xd0", [29793] = "\xe5\x79", [29794] = "\xe5\x7a",
++ [29797] = "\xef\xd1", [29799] = "\xef\xd2", [29804] = "\xef\xd5",
++ [29805] = "\xef\xd3", [29806] = "\xef\xd6", [29807] = "\xef\xd8",
++ [29809] = "\xef\xd7", [29811] = "\xe5\x7c", [29812] = "\xe5\x7b",
++ [30055] = "\xc4\xb9", [30056] = "\xe5\x7d", [30057] = "\xe5\x7e",
++ [30062] = "\xe6\x21", [30064] = "\xcc\xe7", [30066] = "\xef\xd9",
++ [30067] = "\xc1\xae", [30068] = "\xe6\x22", [30071] = "\xef\xda",
++ [30072] = "\xe6\x23", [30073] = "\xca\xc4", [30074] = "\xef\xdb",
++ [30075] = "\xb3\xab", [30076] = "\xe6\x24", [30077] = "\xe6\x25",
++ [30078] = "\xe6\x26", [30079] = "\xb1\xbc", [30081] = "\xb4\xd7",
++ [30082] = "\xf4\x71", [30083] = "\xb4\xd6", [30084] = "\xef\xdc",
++ [30086] = "\xef\xdd", [30088] = "\xef\xde", [30089] = "\xef\xdf",
++ [30093] = "\xe6\x27", [30094] = "\xe6\x28", [30095] = "\xe6\x29",
++ [30096] = "\xef\xe0", [30097] = "\xe6\x2a", [30098] = "\xb4\xd8",
++ [30099] = "\xb3\xd5", [30100] = "\xb9\xde", [30101] = "\xc8\xb6",
++ [30102] = "\xe6\x2b", [30103] = "\xef\xe2", [30104] = "\xef\xe1",
++ [30105] = "\xe6\x2c", [30107] = "\xe6\x2d", [30108] = "\xe6\x2e",
++ [30109] = "\xef\xe3", [30114] = "\xb1\xdc", [30116] = "\xe6\x2f",
++ [30118] = "\xe6\x30", [30121] = "\xef\xe6", [30122] = "\xe6\x31",
++ [30123] = "\xef\xe5", [30124] = "\xef\xe4", [30125] = "\xe6\x32",
++ [30126] = "\xef\xe7", [30127] = "\xe6\x33", [30131] = "\xef\xea",
++ [30134] = "\xe6\x34", [30135] = "\xb0\xc7", [30136] = "\xe6\x35",
++ [30137] = "\xe6\x36", [30138] = "\xef\xe8", [30139] = "\xe6\x37",
++ [30140] = "\xef\xec", [30141] = "\xef\xeb", [30144] = "\xe6\x38",
++ [30145] = "\xe6\x39", [30146] = "\xe6\x3a", [30147] = "\xe6\x3b",
++ [30148] = "\xef\xee", [30149] = "\xef\xed", [30150] = "\xef\xef",
++ [30152] = "\xc6\xae", [30153] = "\xe6\x3c", [30154] = "\xe6\x3d",
++ [30156] = "\xef\xf0", [30157] = "\xe6\x3e", [30158] = "\xe6\x3f",
++ [30159] = "\xe6\x40", [30160] = "\xe6\x41", [30161] = "\xef\xf1",
++ [30162] = "\xef\xf3", [30164] = "\xe6\x42", [30165] = "\xef\xf2",
++ [30166] = "\xe6\x43", [30220] = "\xc9\xec", [30221] = "\xe6\x44",
++ [30222] = "\xe6\x45", [30225] = "\xef\xf4", [30226] = "\xe6\x46",
++ [30228] = "\xe6\x47", [30229] = "\xe6\x48", [30230] = "\xe6\x49",
++ [30232] = "\xef\xf5", [30234] = "\xba\xe5", [30236] = "\xe6\x4a",
++ [30238] = "\xef\xf6", [30239] = "\xef\xf7", [30241] = "\xe6\x4b",
++ [30242] = "\xcb\xc9", [30243] = "\xe6\x4c", [30247] = "\xe6\x4d",
++ [30248] = "\xe6\x4e", [30249] = "\xe6\x4f", [30250] = "\xe6\x50",
++ [30251] = "\xc1\xcb", [30252] = "\xe6\x51", [30253] = "\xe6\x52",
++ [30255] = "\xb0\xa4", [30256] = "\xc2\xcb", [30257] = "\xe6\x53",
++ [30258] = "\xef\xf8", [30260] = "\xc9\xed", [30267] = "\xef\xfb",
++ [30268] = "\xef\xf9", [30269] = "\xb9\xdf", [30271] = "\xef\xfa",
++ [30272] = "\xb8\xc2", [30274] = "\xe6\x54", [30276] = "\xe6\x55",
++ [30278] = "\xe6\x56", [30279] = "\xe6\x57", [30280] = "\xe6\x58",
++ [30283] = "\xca\xc5", [30284] = "\xef\xfd", [30285] = "\xf0\xa1",
++ [30286] = "\xef\xfe", [30287] = "\xf0\xa2", [30289] = "\xe6\x59",
++ [30290] = "\xb1\xa1", [30291] = "\xbf\xd8", [30292] = "\xbd\xfc",
++ [30293] = "\xb4\xd9", [30294] = "\xf0\xa3", [30298] = "\xc7\xe6",
++ [30300] = "\xf0\xa5", [30302] = "\xe6\x5a", [30304] = "\xb1\xa2",
++ [30306] = "\xf0\xa4", [30307] = "\xc4\xc4", [30308] = "\xe6\x5b",
++ [30309] = "\xce\xcd", [30310] = "\xc6\xab", [30311] = "\xef\xfc",
++ [30312] = "\xce\xa6", [30314] = "\xb8\xb1", [30315] = "\xe6\x5c",
++ [30316] = "\xe6\x5d", [30317] = "\xcd\xdb", [30318] = "\xe6\x5e",
++ [30319] = "\xe6\x5f", [30321] = "\xe6\x60", [30322] = "\xe6\x61",
++ [30323] = "\xe6\x62", [30324] = "\xe6\x63", [30325] = "\xb6\xf9",
++ [30326] = "\xce\xb4", [30328] = "\xb7\xa8", [30329] = "\xe6\x64",
++ [30330] = "\xc2\xe2", [30331] = "\xe7\xa1", [30333] = "\xf0\xa6",
++ [30334] = "\xb3\xac", [30335] = "\xbf\xef", [30337] = "\xe6\x65",
++ [30340] = "\xb3\xd6", [30341] = "\xf0\xa8", [30342] = "\xe6\x66",
++ [30343] = "\xf0\xa9", [30344] = "\xf0\xa7", [30345] = "\xb7\xe4",
++ [30346] = "\xe6\x67", [30347] = "\xba\xdd", [30348] = "\xbe\xe3",
++ [30349] = "\xe6\x68", [30351] = "\xe6\x69", [30352] = "\xb1\xa3",
++ [30355] = "\xce\xd9", [30356] = "\xe6\x6a", [30357] = "\xe6\x6b",
++ [30358] = "\xe6\x6c", [30359] = "\xf0\xab", [30360] = "\xee\xae",
++ [30361] = "\xe6\x6d", [30362] = "\xf0\xaa", [30366] = "\xe6\x6e",
++ [30367] = "\xe6\x6f", [30368] = "\xf0\xae", [30369] = "\xf0\xac",
++ [30370] = "\xf0\xad", [30371] = "\xe6\x70", [30372] = "\xf0\xaf",
++ [30374] = "\xf0\xb0", [30375] = "\xce\xec", [30376] = "\xf0\xb1",
++ [30377] = "\xf0\xb2", [30378] = "\xe6\x71", [30379] = "\xc0\xc9",
++ [30380] = "\xc8\xbb", [30384] = "\xbf\xfd", [30385] = "\xb4\xe7",
++ [30388] = "\xcd\xba", [30389] = "\xb2\xed", [30390] = "\xbd\xb8",
++ [30391] = "\xb8\xdb", [30393] = "\xf0\xb5", [30394] = "\xe6\x72",
++ [30395] = "\xf0\xb4", [30396] = "\xbb\xf3", [30397] = "\xf0\xb6",
++ [30398] = "\xf0\xb3", [30401] = "\xbb\xa8", [30402] = "\xe6\x73",
++ [30405] = "\xf0\xba", [30406] = "\xea\xad", [30408] = "\xe6\x75",
++ [30409] = "\xd2\xd6", [30410] = "\xe6\x76", [30411] = "\xbf\xf7",
++ [30412] = "\xf0\xb8", [30413] = "\xe6\x77", [30414] = "\xe6\x78",
++ [30415] = "\xe6\x79", [30418] = "\xce\xa5", [30419] = "\xc6\xf1",
++ [30424] = "\xb1\xab", [30425] = "\xe6\x7a", [30426] = "\xc0\xe3",
++ [30427] = "\xbc\xb6", [30431] = "\xe6\x7b", [30432] = "\xca\xb7",
++ [30433] = "\xe6\x7c", [30434] = "\xb1\xc0", [30438] = "\xce\xed",
++ [30439] = "\xcd\xeb", [30441] = "\xf0\xbb", [30442] = "\xe6\x7d",
++ [30443] = "\xc5\xc5", [30448] = "\xbc\xfb", [30450] = "\xe6\x7e",
++ [30451] = "\xe7\x21", [30452] = "\xf0\xbc", [30453] = "\xe7\x22",
++ [30454] = "\xf0\xbd", [30455] = "\xbf\xcc", [30456] = "\xf0\xbe",
++ [30457] = "\xe7\x23", [30458] = "\xce\xee", [30461] = "\xf0\xb9",
++ [30462] = "\xf0\xc0", [30463] = "\xf0\xc2", [30465] = "\xf0\xc1",
++ [30467] = "\xf0\xbf", [30470] = "\xf0\xc3", [30473] = "\xf0\xc4",
++ [30474] = "\xe7\x24", [30475] = "\xe7\x25", [30476] = "\xc1\xfa",
++ [30477] = "\xe7\x26", [30478] = "\xb2\xe2", [30481] = "\xe7\x27",
++ [30482] = "\xe7\x28", [30483] = "\xe7\x29", [30484] = "\xf0\xc5",
++ [30487] = "\xcc\xb8", [30488] = "\xe7\x2a", [30490] = "\xf0\xc6",
++ [30496] = "\xf0\xc7", [30497] = "\xe7\x2b", [30498] = "\xcf\xaa",
++ [30499] = "\xe7\x2c", [30504] = "\xdb\xb1", [30505] = "\xf0\xc8",
++ [30507] = "\xf4\x74", [30509] = "\xf0\xc9", [30510] = "\xf0\xca",
++ [30513] = "\xe7\x2d", [30514] = "\xf0\xce", [30515] = "\xe7\x2e",
++ [30516] = "\xf0\xcb", [30518] = "\xf0\xcc", [30520] = "\xf0\xcd",
++ [30521] = "\xf0\xcf", [30522] = "\xe7\x2f", [30525] = "\xf4\x75",
++ [30526] = "\xe7\x30", [30527] = "\xe7\x31", [30529] = "\xf4\x76",
++ [30530] = "\xc0\xc4", [30533] = "\xe7\x32", [30534] = "\xcc\xf7",
++ [30535] = "\xe7\x33", [30536] = "\xe7\x34", [30537] = "\xc0\xc5",
++ [30538] = "\xe7\x35", [30539] = "\xe7\x36", [30540] = "\xf0\xd0",
++ [30542] = "\xc8\xf3", [30544] = "\xf0\xd1", [30545] = "\xf3\xd3",
++ [30546] = "\xcc\xcc", [30547] = "\xe7\x37", [30548] = "\xf0\xd2",
++ [30550] = "\xf0\xd3", [30551] = "\xe7\x38", [30552] = "\xf0\xd4",
++ [30553] = "\xb3\xd7", [30554] = "\xe7\x39", [30555] = "\xf0\xd6",
++ [30557] = "\xbf\xd9", [30558] = "\xe7\x3a", [30561] = "\xf0\xd7",
++ [30563] = "\xe7\x3b", [30564] = "\xb7\xa4", [30566] = "\xe7\x3c",
++ [30567] = "\xe7\x3d", [30568] = "\xe7\x3e", [30569] = "\xf0\xd8",
++ [30570] = "\xf0\xdc", [30571] = "\xe7\x3f", [30572] = "\xf0\xda",
++ [30573] = "\xe7\x40", [30575] = "\xe7\x41", [30576] = "\xe7\x42",
++ [30577] = "\xf0\xdb", [30580] = "\xb3\xf3", [30581] = "\xf0\xd9",
++ [30582] = "\xf0\xdd", [30585] = "\xe7\x43", [30587] = "\xf0\xde",
++ [30589] = "\xb0\xc8", [30591] = "\xf0\xdf", [30592] = "\xf0\xe0",
++ [30597] = "\xe7\x44", [30598] = "\xe7\x45", [30599] = "\xe7\x46",
++ [30600] = "\xbe\xe4", [30601] = "\xe7\x47", [30602] = "\xe7\x48",
++ [30604] = "\xf0\xe1", [30606] = "\xe7\x49", [30607] = "\xe7\x4a",
++ [30608] = "\xb5\xc7", [30610] = "\xe7\x4b", [30611] = "\xf0\xe4",
++ [30614] = "\xf0\xe3", [30616] = "\xf0\xe2", [30619] = "\xeb\xf1",
++ [30620] = "\xe7\x4c", [30621] = "\xca\xdc", [30622] = "\xe7\x4d",
++ [30625] = "\xe7\x4e", [30626] = "\xe7\x4f", [30627] = "\xf0\xe5",
++ [30628] = "\xf0\xe6", [30629] = "\xe7\x50", [30630] = "\xe7\x51",
++ [30632] = "\xe7\x52", [30633] = "\xe7\x53", [30634] = "\xe7\x54",
++ [30636] = "\xe7\x55", [30638] = "\xe7\x56", [30639] = "\xe7\x57",
++ [30641] = "\xe7\x58", [30643] = "\xf0\xe7", [30644] = "\xe7\x59",
++ [30645] = "\xe7\x5a", [30646] = "\xf0\xe8", [30647] = "\xe7\x5b",
++ [30648] = "\xf0\xe9", [30649] = "\xe7\x5c", [30650] = "\xe7\x5d",
++ [30651] = "\xf0\xea", [30652] = "\xe7\x5e", [30653] = "\xe7\x5f",
++ [30654] = "\xe7\x60", [30656] = "\xe7\x61", [30657] = "\xe7\x62",
++ [30659] = "\xb4\xda", [30660] = "\xe7\x63", [30663] = "\xe7\x64",
++ [30664] = "\xe7\x65", [30665] = "\xe7\x66", [30667] = "\xe7\x6a",
++ [30668] = "\xf0\xeb", [30669] = "\xe7\x67", [30670] = "\xe7\x68",
++ [30672] = "\xe7\x69", [30673] = "\xe7\x6b", [30676] = "\xe7\x6c",
++ [30685] = "\xf0\xec", [30686] = "\xc7\xa3", [30687] = "\xe7\x6d",
++ [30689] = "\xe7\x6e", [30690] = "\xf0\xee", [30691] = "\xb2\xbb",
++ [30692] = "\xe7\x6f", [30693] = "\xf0\xf1", [30694] = "\xf0\xf0",
++ [30695] = "\xe7\x70", [30696] = "\xe7\x71", [30698] = "\xe7\x72",
++ [30699] = "\xb1\xa4", [30703] = "\xb6\xc1", [30705] = "\xca\xc7",
++ [30706] = "\xc4\xba", [30707] = "\xba\xa2", [30709] = "\xb9\xe0",
++ [30710] = "\xbd\xe7", [30711] = "\xe7\x73", [30712] = "\xbf\xdc",
++ [30714] = "\xe7\x74", [30716] = "\xf0\xf3", [30717] = "\xe7\x76",
++ [30718] = "\xe7\x77", [30719] = "\xf0\xf2", [30720] = "\xcd\xc2",
++ [30721] = "\xb4\xe8", [30722] = "\xc8\xd2", [30723] = "\xc6\xdc",
++ [30724] = "\xe7\x78", [30726] = "\xe7\x79", [30727] = "\xbf\xfc",
++ [30728] = "\xce\xce", [30729] = "\xe7\x75", [30730] = "\xb7\xdb",
++ [30732] = "\xe7\x7a", [30734] = "\xe7\x7b", [30736] = "\xe7\x7c",
++ [30737] = "\xf0\xf6", [30739] = "\xe7\x7d", [30740] = "\xf0\xf5",
++ [30741] = "\xe8\x28", [30742] = "\xe7\x7e", [30747] = "\xe8\x21",
++ [30748] = "\xcb\xcb", [30749] = "\xc6\xac", [30750] = "\xe8\x22",
++ [30751] = "\xe8\x23", [30752] = "\xe8\x24", [30754] = "\xe8\x25",
++ [30755] = "\xe8\x26", [30756] = "\xb1\xd0", [30757] = "\xe8\x27",
++ [30759] = "\xf0\xf7", [30760] = "\xf0\xf4", [30763] = "\xc9\xd1",
++ [30764] = "\xcd\xea", [30765] = "\xf0\xf8", [30766] = "\xe8\x29",
++ [30772] = "\xe8\x2a", [30774] = "\xf0\xf9", [30775] = "\xe8\x2b",
++ [30778] = "\xe8\x2c", [30779] = "\xf0\xfb", [30780] = "\xc2\xea",
++ [30781] = "\xb3\xdb", [30782] = "\xb3\xdc", [30783] = "\xf0\xfa",
++ [30785] = "\xe8\x2d", [30786] = "\xe8\x2e", [30787] = "\xe8\x2f",
++ [30788] = "\xb4\xe9", [30789] = "\xb8\xb2", [30790] = "\xe8\x30",
++ [30791] = "\xe8\x31", [30792] = "\xb4\xea", [30793] = "\xe8\x32",
++ [30794] = "\xe8\x33", [30795] = "\xc5\xbf", [30798] = "\xce\xe0",
++ [30802] = "\xe8\x34", [30803] = "\xe8\x35", [30805] = "\xe8\x36",
++ [30806] = "\xe8\x37", [30807] = "\xb8\xdc", [30810] = "\xe8\x38",
++ [30811] = "\xf0\xfc", [30812] = "\xe8\x39", [30815] = "\xf0\xfd",
++ [30816] = "\xf0\xfe", [30817] = "\xf1\xa1", [30819] = "\xf1\xa3",
++ [30820] = "\xf1\xa2", [30872] = "\xc9\xf7", [30874] = "\xf1\xa4",
++ [30875] = "\xe8\x3a", [30877] = "\xe8\x3b", [30878] = "\xe8\x3c",
++ [30879] = "\xf1\xa5", [30880] = "\xe8\x3d", [30881] = "\xf1\xa6",
++ [30884] = "\xe8\x3e", [30886] = "\xf1\xa7", [30887] = "\xe8\x3f",
++ [30888] = "\xe8\x40", [30890] = "\xe8\x41", [30891] = "\xe8\x42",
++ [30895] = "\xe8\x43", [30898] = "\xe8\x44", [30899] = "\xf1\xa9",
++ [30900] = "\xf1\xa8", [30901] = "\xe8\x45", [30902] = "\xf1\xaa",
++ [30904] = "\xe8\x46", [30908] = "\xe8\x47", [30923] = "\xc8\xf4",
++ [30924] = "\xe6\xcc", [30927] = "\xbf\xa9", [30929] = "\xe8\x48",
++ [30930] = "\xb5\xb2", [30931] = "\xe8\x49", [30933] = "\xe8\x4a",
++ [30934] = "\xe8\x4b", [30935] = "\xe8\x4c", [30937] = "\xf1\xab",
++ [30938] = "\xe8\x4d", [30939] = "\xf1\xac", [30941] = "\xd2\xac",
++ [30942] = "\xdd\xbb", [30943] = "\xc8\xd3", [30946] = "\xb0\xfb",
++ [30947] = "\xe8\x4e", [30948] = "\xb0\xbb", [30950] = "\xe8\x4f",
++ [30956] = "\xbb\xf4", [30957] = "\xcb\xb0", [30958] = "\xbe\xfe",
++ [30962] = "\xe8\x50", [30963] = "\xf1\xad", [30965] = "\xcc\xdf",
++ [30967] = "\xe8\x51", [30968] = "\xe8\x52", [30969] = "\xf1\xae",
++ [30970] = "\xcd\xdc", [30972] = "\xb1\xc2", [30976] = "\xbb\xc1",
++ [30977] = "\xe8\x53", [30978] = "\xf1\xaf", [30979] = "\xb2\xee",
++ [30980] = "\xf1\xb0", [30981] = "\xe8\x54", [30982] = "\xe8\x55",
++ [30983] = "\xe8\x56", [30984] = "\xf1\xb1", [30986] = "\xe8\x57",
++ [30987] = "\xe8\x58", [30988] = "\xe8\x59", [30989] = "\xf1\xb3",
++ [30990] = "\xf1\xb4", [30991] = "\xe8\x5a", [30992] = "\xf1\xb6",
++ [30993] = "\xf1\xb2", [30994] = "\xe8\x5b", [30996] = "\xf1\xb5",
++ [30998] = "\xe8\x5c", [30999] = "\xe8\x5d", [31000] = "\xb4\xdb",
++ [31003] = "\xe8\x5e", [31004] = "\xf1\xb7", [31006] = "\xf1\xb8",
++ [31009] = "\xe8\x5f", [31010] = "\xe8\x60", [31011] = "\xe8\x61",
++ [31012] = "\xe8\x62", [31013] = "\xe8\x63", [31017] = "\xe8\x64",
++ [31018] = "\xe8\x65", [31019] = "\xe8\x66", [31020] = "\xe8\x67",
++ [31021] = "\xf1\xb9", [31022] = "\xf1\xba", [31024] = "\xe8\x68",
++ [31025] = "\xe8\x69", [31026] = "\xf1\xbb", [31029] = "\xf1\xbd",
++ [31030] = "\xe8\x6a", [31031] = "\xe8\x6b", [31032] = "\xe8\x6c",
++ [31033] = "\xf1\xbc", [31035] = "\xf1\xbf", [31036] = "\xf1\xc2",
++ [31037] = "\xe8\x6d", [31038] = "\xe8\x6e", [31040] = "\xf1\xbe",
++ [31041] = "\xf1\xc0", [31042] = "\xf1\xc1", [31044] = "\xe8\x6f",
++ [31045] = "\xf1\xc3", [31047] = "\xb6\xc2", [31048] = "\xe8\x70",
++ [31049] = "\xe8\x71", [31051] = "\xe8\x72", [31052] = "\xe8\x73",
++ [31054] = "\xe8\x74", [31055] = "\xe8\x75", [31056] = "\xe8\x76",
++ [31110] = "\xbc\xf3", [31111] = "\xf1\xc4", [31112] = "\xf1\xc5",
++ [31113] = "\xb9\xe1", [31115] = "\xe8\x77", [31117] = "\xe8\x78",
++ [31118] = "\xf4\x7a", [31119] = "\xe8\x79", [31125] = "\xf1\xc6",
++ [31126] = "\xe8\x7a", [31128] = "\xb3\xbe", [31132] = "\xc7\xcf",
++ [31133] = "\xf1\xc7", [31134] = "\xf1\xc8", [31136] = "\xe8\x7b",
++ [31137] = "\xe8\x7c", [31138] = "\xe8\x7d", [31139] = "\xc3\xda",
++ [31140] = "\xc6\xeb", [31141] = "\xe8\x7e", [31145] = "\xe9\x21",
++ [31146] = "\xe9\x22", [31148] = "\xf1\xc9", [31149] = "\xe9\x23",
++ [31151] = "\xe9\x24", [31153] = "\xc7\xfd", [31155] = "\xe9\x25",
++ [31156] = "\xc2\xcc", [31157] = "\xb1\xd8", [31158] = "\xb6\xee",
++ [31160] = "\xb6\xef", [31161] = "\xe9\x26", [31168] = "\xc3\xf3",
++ [31169] = "\xf1\xce", [31170] = "\xb6\xf0", [31171] = "\xe9\x27",
++ [31172] = "\xe9\x28", [31173] = "\xb2\xef", [31176] = "\xf1\xcd",
++ [31177] = "\xe9\x29", [31178] = "\xe9\x2a", [31179] = "\xf1\xcb",
++ [31180] = "\xe9\x2b", [31181] = "\xf1\xcc", [31182] = "\xe9\x2c",
++ [31183] = "\xf1\xca", [31186] = "\xf1\xd8", [31191] = "\xe9\x2d",
++ [31194] = "\xe9\x2e", [31195] = "\xe9\x2f", [31196] = "\xe9\x30",
++ [31197] = "\xf1\xcf", [31198] = "\xf1\xd0", [31200] = "\xe9\x31",
++ [31201] = "\xf1\xd1", [31202] = "\xf1\xd2", [31204] = "\xe9\x32",
++ [31205] = "\xe9\x33", [31208] = "\xf1\xd4", [31209] = "\xe9\x34",
++ [31211] = "\xf1\xd3", [31213] = "\xe9\x35", [31214] = "\xe9\x36",
++ [31215] = "\xbd\xd9", [31217] = "\xf1\xd5", [31218] = "\xe9\x37",
++ [31219] = "\xe9\x38", [31220] = "\xe9\x39", [31221] = "\xf1\xd7",
++ [31227] = "\xe9\x3a", [31228] = "\xe9\x3b", [31230] = "\xb5\xb3",
++ [31231] = "\xf1\xd6", [31232] = "\xe9\x3c", [31233] = "\xe9\x3d",
++ [31234] = "\xc1\xfb", [31235] = "\xb8\xb3", [31238] = "\xe9\x3e",
++ [31241] = "\xf1\xd9", [31246] = "\xe9\x3f", [31248] = "\xe9\x40",
++ [31250] = "\xe9\x41", [31251] = "\xe9\x42", [31252] = "\xe9\x43",
++ [31255] = "\xe9\x44", [31256] = "\xc2\xcd", [31259] = "\xf1\xda",
++ [31261] = "\xe9\x45", [31262] = "\xe9\x46", [31264] = "\xc6\xad",
++ [31267] = "\xe9\x47", [31269] = "\xe9\x48", [31270] = "\xe9\x49",
++ [31271] = "\xf1\xdb", [31272] = "\xe9\x4a", [31278] = "\xf1\xe0",
++ [31280] = "\xf1\xde", [31281] = "\xe9\x4c", [31282] = "\xf1\xdd",
++ [31283] = "\xf1\xdf", [31284] = "\xe9\x4d", [31285] = "\xf1\xdc",
++ [31287] = "\xe9\x4b", [31290] = "\xe9\x4e", [31291] = "\xe9\x4f",
++ [31292] = "\xe9\x50", [31293] = "\xf1\xe2", [31294] = "\xe9\x51",
++ [31297] = "\xe9\x52", [31300] = "\xe9\x53", [31301] = "\xf1\xe1",
++ [31302] = "\xe9\x54", [31303] = "\xf1\xe4", [31306] = "\xb6\xc3",
++ [31307] = "\xf1\xe3", [31309] = "\xe9\x55", [31311] = "\xf1\xe5",
++ [31314] = "\xf1\xe6", [31316] = "\xf1\xe8", [31317] = "\xf1\xe7",
++ [31321] = "\xf1\xe9", [31322] = "\xf1\xeb", [31323] = "\xf1\xea",
++ [31384] = "\xb9\xfc", [31386] = "\xe9\x56", [31388] = "\xe9\x57",
++ [31389] = "\xf1\xec", [31390] = "\xe9\x58", [31391] = "\xe9\x59",
++ [31392] = "\xf1\xed", [31394] = "\xe9\x5a", [31396] = "\xe9\x5b",
++ [31397] = "\xe9\x5c", [31398] = "\xe9\x5d", [31400] = "\xb3\xbc",
++ [31401] = "\xe9\x5e", [31403] = "\xe9\x5f", [31404] = "\xf1\xee",
++ [31406] = "\xe9\x60", [31407] = "\xe9\x61", [31408] = "\xf1\xef",
++ [31409] = "\xe9\x62", [31411] = "\xe9\x63", [31412] = "\xbf\xf1",
++ [31414] = "\xe9\x64", [31416] = "\xe9\x65", [31422] = "\xe9\x66",
++ [31423] = "\xf1\xf0", [31424] = "\xe9\x67", [31425] = "\xf1\xf1",
++ [31426] = "\xe9\x68", [31427] = "\xf1\xf2", [31428] = "\xf1\xf3",
++ [31429] = "\xe9\x69", [31430] = "\xe9\x6a", [31431] = "\xe9\x6b",
++ [31432] = "\xb9\xe2", [31433] = "\xf4\x7b", [31435] = "\xe9\x6c",
++ [31436] = "\xe9\x6d", [31438] = "\xf1\xf4", [31439] = "\xf1\xf5",
++ [31440] = "\xe9\x6e", [31442] = "\xf1\xf6", [31443] = "\xf1\xf7",
++ [31444] = "\xe9\x6f", [31445] = "\xe9\x70", [31446] = "\xf1\xf8",
++ [31447] = "\xe9\x71", [31449] = "\xe9\x72", [31450] = "\xc8\xb1",
++ [31451] = "\xf1\xfa", [31452] = "\xe9\x73", [31453] = "\xc9\xa6",
++ [31454] = "\xf1\xfb", [31455] = "\xf1\xf9", [31457] = "\xf1\xfd",
++ [31458] = "\xe9\x74", [31459] = "\xe9\x75", [31460] = "\xf1\xfc",
++ [31461] = "\xe9\x76", [31463] = "\xf1\xfe", [31465] = "\xe9\x77",
++ [31466] = "\xe9\x78", [31467] = "\xf2\xa1", [31469] = "\xe9\x79",
++ [31471] = "\xe9\x7a", [31472] = "\xe9\x7b", [31473] = "\xe9\x7c",
++ [31474] = "\xe9\x7d", [31475] = "\xe9\x7e", [31476] = "\xea\x21",
++ [31477] = "\xea\x22", [31478] = "\xf2\xa2", [31480] = "\xea\x23",
++ [31481] = "\xea\x24", [31483] = "\xea\x25", [31484] = "\xea\x26",
++ [31485] = "\xea\x27", [31486] = "\xea\x28", [31488] = "\xea\x29",
++ [31490] = "\xea\x2a", [31494] = "\xea\x2b", [31496] = "\xf2\xa3",
++ [31497] = "\xea\x2c", [31498] = "\xf2\xa4", [31499] = "\xea\x2d",
++ [31500] = "\xea\x2e", [31503] = "\xf2\xa5", [31504] = "\xea\x2f",
++ [31506] = "\xf2\xa6", [31507] = "\xf2\xa7", [31509] = "\xf2\xa8",
++ [31510] = "\xea\x30", [31511] = "\xf2\xa9", [31512] = "\xf2\xaa",
++ [31513] = "\xf2\xab", [31514] = "\xf2\xac", [31515] = "\xea\x31",
++ [31517] = "\xea\x32", [31518] = "\xf2\xad", [31519] = "\xf2\xae",
++ [31521] = "\xdd\xb5", [31522] = "\xf2\xaf", [31523] = "\xea\x33",
++ [31524] = "\xea\x34", [31525] = "\xea\x35", [31527] = "\xea\x36",
++ [31529] = "\xea\x37", [31530] = "\xea\x38", [31531] = "\xe4\xf8",
++ [31532] = "\xb5\xb4", [31533] = "\xea\x39", [31537] = "\xb3\xa1",
++ [31538] = "\xba\xb2", [31539] = "\xf2\xb1", [31540] = "\xf2\xb0",
++ [31541] = "\xcc\xa5", [31544] = "\xea\x3a", [31547] = "\xea\x3b",
++ [31548] = "\xea\x3c", [31549] = "\xf2\xb3", [31550] = "\xf2\xb4",
++ [31551] = "\xf2\xb2", [31553] = "\xf2\xb5", [31556] = "\xcb\xe2",
++ [31557] = "\xea\x3d", [31558] = "\xea\x3e", [31559] = "\xea\x3f",
++ [31560] = "\xf2\xb6", [31562] = "\xb5\xfb", [31563] = "\xea\x40",
++ [31566] = "\xea\x41", [31569] = "\xea\x42", [31571] = "\xea\x43",
++ [31573] = "\xea\x44", [31574] = "\xea\x45", [31576] = "\xea\x46",
++ [31578] = "\xea\x47", [31579] = "\xea\x48", [31580] = "\xea\x49",
++ [31581] = "\xea\x4a", [31582] = "\xea\x4b", [31583] = "\xcf\xa5",
++ [31586] = "\xf4\x7c", [31587] = "\xea\x4c", [31588] = "\xf2\xb7",
++ [31589] = "\xea\x4d", [31591] = "\xea\x4e", [31592] = "\xea\x4f",
++ [31593] = "\xea\x50", [31599] = "\xea\x51", [31600] = "\xea\x52",
++ [31603] = "\xf2\xb9", [31604] = "\xea\x53", [31605] = "\xea\x54",
++ [31606] = "\xea\x55", [31607] = "\xea\x56", [31609] = "\xea\x57",
++ [31610] = "\xea\x58", [31611] = "\xea\x59", [31613] = "\xea\x5a",
++ [31614] = "\xb0\xbe", [31615] = "\xea\x5b", [31616] = "\xea\x5c",
++ [31617] = "\xf2\xba", [31618] = "\xca\xab", [31619] = "\xf2\xb8",
++ [31620] = "\xea\x5d", [31622] = "\xf2\xbb", [31623] = "\xf2\xbc",
++ [31626] = "\xea\x5e", [31629] = "\xea\x5f", [31630] = "\xea\x60",
++ [31631] = "\xf2\xbd", [31632] = "\xf2\xbe", [31638] = "\xea\x61",
++ [31639] = "\xea\x62", [31640] = "\xf2\xbf", [31641] = "\xea\x63",
++ [31642] = "\xcb\xee", [31643] = "\xbb\xad", [31644] = "\xea\x64",
++ [31645] = "\xba\xfa", [31646] = "\xc1\xaf", [31648] = "\xea\x65",
++ [31649] = "\xea\x66", [31650] = "\xea\x67", [31652] = "\xf2\xc0",
++ [31655] = "\xea\x68", [31656] = "\xea\x69", [31657] = "\xf2\xc3",
++ [31659] = "\xea\x6a", [31660] = "\xea\x6b", [31662] = "\xea\x6c",
++ [31663] = "\xea\x6d", [31664] = "\xf2\xc1", [31665] = "\xea\x6e",
++ [31670] = "\xf2\xc4", [31671] = "\xea\x6f", [31672] = "\xea\x70",
++ [31673] = "\xb8\xf1", [31674] = "\xf2\xc2", [31678] = "\xea\x71",
++ [31679] = "\xf2\xc5", [31680] = "\xea\x72", [31681] = "\xf2\xc6",
++ [31682] = "\xf2\xc7", [31684] = "\xf2\xcb", [31686] = "\xbb\xaa",
++ [31687] = "\xea\x73", [31688] = "\xea\x74", [31691] = "\xc2\xe4",
++ [31693] = "\xea\x75", [31695] = "\xea\x76", [31697] = "\xf2\xcc",
++ [31698] = "\xf2\xc9", [31699] = "\xf2\xc8", [31700] = "\xf2\xca",
++ [31701] = "\xea\x77", [31703] = "\xea\x78", [31704] = "\xb7\xdf",
++ [31706] = "\xea\x79", [31707] = "\xea\x7a", [31711] = "\xea\x7b",
++ [31712] = "\xf2\xd0", [31713] = "\xf2\xcf", [31714] = "\xf2\xce",
++ [31715] = "\xea\x7c", [31717] = "\xb0\xb3", [31719] = "\xea\x7d",
++ [31720] = "\xea\x7e", [31721] = "\xeb\x21", [31722] = "\xeb\x22",
++ [31725] = "\xeb\x23", [31727] = "\xeb\x24", [31728] = "\xeb\x25",
++ [31730] = "\xeb\x26", [31732] = "\xf2\xda", [31734] = "\xf2\xd6",
++ [31736] = "\xf2\xd7", [31737] = "\xf2\xd3", [31738] = "\xf2\xd9",
++ [31739] = "\xeb\x27", [31740] = "\xf2\xd5", [31741] = "\xb3\xe2",
++ [31743] = "\xeb\x28", [31744] = "\xcf\xcc", [31745] = "\xeb\x29",
++ [31746] = "\xf2\xd8", [31747] = "\xf2\xd4", [31748] = "\xf2\xd2",
++ [31749] = "\xf2\xd1", [31750] = "\xeb\x2a", [31752] = "\xeb\x2b",
++ [31753] = "\xeb\x2c", [31754] = "\xeb\x2d", [31755] = "\xf2\xdc",
++ [31756] = "\xeb\x2e", [31758] = "\xeb\x2f", [31761] = "\xf2\xdf",
++ [31762] = "\xeb\x30", [31763] = "\xeb\x31", [31764] = "\xf2\xde",
++ [31765] = "\xf2\xdd", [31766] = "\xeb\x32", [31767] = "\xeb\x33",
++ [31768] = "\xeb\x34", [31769] = "\xeb\x35", [31770] = "\xeb\x36",
++ [31773] = "\xc9\xc9", [31774] = "\xf2\xdb", [31775] = "\xb0\xf3",
++ [31776] = "\xf2\xe0", [31777] = "\xeb\x37", [31778] = "\xf2\xe2",
++ [31781] = "\xeb\x38", [31782] = "\xeb\x39", [31783] = "\xeb\x3a",
++ [31785] = "\xb3\xef", [31786] = "\xf2\xcd", [31787] = "\xb1\xb7",
++ [31789] = "\xeb\x3b", [31790] = "\xf2\xe4", [31793] = "\xeb\x3c",
++ [31795] = "\xeb\x3d", [31796] = "\xeb\x3e", [31797] = "\xeb\x3f",
++ [31798] = "\xf2\xe3", [31799] = "\xf2\xe1", [31800] = "\xc3\xad",
++ [31801] = "\xeb\x40", [31802] = "\xeb\x41", [31806] = "\xeb\x42",
++ [31807] = "\xeb\x43", [31808] = "\xeb\x44", [31810] = "\xcb\xf0",
++ [31811] = "\xeb\x45", [31812] = "\xeb\x46", [31814] = "\xeb\x47",
++ [31815] = "\xce\xda", [31816] = "\xeb\x48", [31818] = "\xf2\xe5",
++ [31819] = "\xeb\x49", [31820] = "\xeb\x50", [31821] = "\xeb\x4a",
++ [31822] = "\xeb\x4b", [31823] = "\xeb\x4c", [31824] = "\xf2\xe6",
++ [31827] = "\xeb\x4d", [31831] = "\xf2\xe7", [31832] = "\xeb\x52",
++ [31833] = "\xeb\x4e", [31834] = "\xeb\x4f", [31835] = "\xeb\x51",
++ [31838] = "\xeb\x53", [31840] = "\xeb\x54", [31842] = "\xeb\x55",
++ [31845] = "\xeb\x56", [31846] = "\xf2\xe8", [31847] = "\xeb\x57",
++ [31848] = "\xf2\xe9", [31851] = "\xeb\x58", [31957] = "\xc4\xbb",
++ [31958] = "\xeb\x59", [31959] = "\xf2\xea", [31961] = "\xc8\xb7",
++ [31963] = "\xf2\xef", [31964] = "\xf2\xeb", [31968] = "\xf2\xec",
++ [31970] = "\xeb\x5a", [31971] = "\xcb\xb1", [31972] = "\xcc\xc4",
++ [31974] = "\xc6\xd0", [31975] = "\xeb\x5b", [31977] = "\xeb\x5c",
++ [31986] = "\xeb\x5e", [31987] = "\xf2\xf0", [31990] = "\xf2\xf1",
++ [31991] = "\xc6\xbe", [31992] = "\xf2\xee", [31993] = "\xf2\xed",
++ [31995] = "\xeb\x5d", [31998] = "\xb2\xaa", [32001] = "\xeb\x5f",
++ [32002] = "\xf2\xf9", [32005] = "\xf2\xf8", [32007] = "\xeb\x60",
++ [32008] = "\xeb\x61", [32011] = "\xb1\xf5", [32012] = "\xeb\x62",
++ [32013] = "\xeb\x63", [32014] = "\xeb\x64", [32015] = "\xf2\xf6",
++ [32019] = "\xf2\xf5", [32022] = "\xf2\xf3", [32024] = "\xb3\xfb",
++ [32026] = "\xf2\xf2", [32027] = "\xbc\xb2", [32028] = "\xb2\xa9",
++ [32031] = "\xeb\x65", [32032] = "\xeb\x66", [32034] = "\xeb\x67",
++ [32035] = "\xeb\x68", [32036] = "\xeb\x69", [32042] = "\xeb\x6a",
++ [32043] = "\xb9\xe3", [32044] = "\xeb\x6b", [32045] = "\xeb\x6d",
++ [32046] = "\xf2\xfc", [32047] = "\xf2\xfb", [32049] = "\xf2\xfa",
++ [32050] = "\xeb\x6e", [32051] = "\xeb\x6f", [32052] = "\xf2\xf7",
++ [32053] = "\xeb\x6c", [32054] = "\xf2\xfd", [32055] = "\xeb\x70",
++ [32056] = "\xf2\xfe", [32058] = "\xeb\x71", [32064] = "\xf3\xa5",
++ [32065] = "\xf3\xa4", [32067] = "\xeb\x72", [32068] = "\xeb\x73",
++ [32073] = "\xf3\xa6", [32076] = "\xb1\xad", [32077] = "\xf3\xa1",
++ [32078] = "\xf3\xa2", [32079] = "\xeb\x74", [32080] = "\xb9\xf4",
++ [32081] = "\xcc\xb9", [32082] = "\xeb\x76", [32083] = "\xeb\x75",
++ [32084] = "\xf3\xa3", [32085] = "\xeb\x77", [32089] = "\xeb\x78",
++ [32090] = "\xeb\x79", [32091] = "\xeb\x7a", [32092] = "\xcb\xb2",
++ [32095] = "\xf3\xab", [32096] = "\xeb\x7b", [32098] = "\xf3\xa7",
++ [32102] = "\xeb\x7c", [32103] = "\xeb\x7d", [32106] = "\xf3\xac",
++ [32107] = "\xeb\x7e", [32108] = "\xec\x21", [32110] = "\xec\x22",
++ [32115] = "\xec\x23", [32116] = "\xec\x24", [32118] = "\xec\x25",
++ [32119] = "\xf3\xa9", [32121] = "\xf3\xa8", [32122] = "\xec\x26",
++ [32125] = "\xec\x27", [32126] = "\xec\x28", [32127] = "\xb7\xdc",
++ [32130] = "\xec\x29", [32131] = "\xec\x2a", [32133] = "\xec\x2b",
++ [32134] = "\xec\x2c", [32135] = "\xec\x2d", [32136] = "\xec\x2e",
++ [32138] = "\xf3\xad", [32145] = "\xec\x2f", [32148] = "\xf3\xae",
++ [32153] = "\xf3\xaf", [32154] = "\xec\x30", [32155] = "\xf3\xaa",
++ [32156] = "\xec\x31", [32158] = "\xec\x32", [32159] = "\xf2\xf4",
++ [32161] = "\xec\x33", [32162] = "\xf3\xb0", [32164] = "\xc4\xe1",
++ [32165] = "\xec\x34", [32168] = "\xf3\xb4", [32169] = "\xec\x35",
++ [32170] = "\xf3\xb5", [32171] = "\xf3\xb3", [32172] = "\xec\x36",
++ [32175] = "\xec\x37", [32177] = "\xf3\xb2", [32178] = "\xf3\xb8",
++ [32179] = "\xec\x38", [32180] = "\xf3\xb1", [32182] = "\xf3\xb6",
++ [32183] = "\xec\x39", [32185] = "\xec\x3a", [32186] = "\xec\x3b",
++ [32191] = "\xf3\xb7", [32195] = "\xf3\xba", [32196] = "\xec\x3c",
++ [32197] = "\xec\x3d", [32198] = "\xec\x3e", [32199] = "\xec\x3f",
++ [32201] = "\xf3\xb9", [32202] = "\xec\x40", [32206] = "\xec\x41",
++ [32207] = "\xec\x42", [32208] = "\xec\x43", [32213] = "\xec\x44",
++ [32214] = "\xf3\xbc", [32215] = "\xec\x45", [32217] = "\xec\x46",
++ [32219] = "\xec\x47", [32221] = "\xf3\xbd", [32222] = "\xec\x48",
++ [32223] = "\xf3\xbe", [32224] = "\xec\x49", [32226] = "\xcf\xc9",
++ [32227] = "\xec\x4a", [32228] = "\xec\x4b", [32232] = "\xf3\xbb",
++ [32233] = "\xc2\xeb", [32234] = "\xba\xed", [32237] = "\xf3\xbf",
++ [32238] = "\xec\x4c", [32242] = "\xec\x4e", [32247] = "\xec\x4f",
++ [32250] = "\xec\x4d", [32254] = "\xec\x50", [32256] = "\xec\x51",
++ [32257] = "\xec\x52", [32258] = "\xec\x53", [32261] = "\xec\x54",
++ [32262] = "\xec\x55", [32265] = "\xec\x56", [32266] = "\xf3\xc0",
++ [32267] = "\xf3\xc1", [32268] = "\xec\x57", [32269] = "\xec\x58",
++ [32270] = "\xf3\xc2", [32357] = "\xf3\xc3", [32360] = "\xb8\xb4",
++ [32361] = "\xf3\xc4", [32362] = "\xec\x59", [32363] = "\xec\x5a",
++ [32364] = "\xec\x5b", [32365] = "\xf3\xc5", [32367] = "\xbc\xaf",
++ [32368] = "\xec\x5c", [32369] = "\xf3\xc6", [32370] = "\xec\x5d",
++ [32371] = "\xec\x5e", [32372] = "\xec\x5f", [32373] = "\xec\x60",
++ [32375] = "\xec\x61", [32376] = "\xf3\xc7", [32379] = "\xf3\xc8",
++ [32380] = "\xf3\xc9", [32382] = "\xec\x62", [32383] = "\xec\x63",
++ [32385] = "\xf3\xcc", [32386] = "\xf3\xca", [32387] = "\xcf\xbc",
++ [32389] = "\xf3\xcb", [32390] = "\xec\x64", [32391] = "\xce\xef",
++ [32392] = "\xec\x65", [32395] = "\xec\x66", [32397] = "\xf3\xcd",
++ [32398] = "\xec\x67", [32399] = "\xce\xdb", [32404] = "\xec\x68",
++ [32405] = "\xf3\xce", [32406] = "\xc7\xfe", [32408] = "\xec\x69",
++ [32409] = "\xf3\xcf", [32410] = "\xf3\xd1", [32412] = "\xec\x6a",
++ [32413] = "\xf3\xd2", [32414] = "\xec\x6b", [32415] = "\xec\x6c",
++ [32416] = "\xec\x6d", [32419] = "\xec\x6e", [32420] = "\xec\x6f",
++ [32421] = "\xec\x70", [32424] = "\xf3\xd0", [32425] = "\xb9\xed",
++ [32426] = "\xcc\xcd", [32427] = "\xcb\xe3", [32428] = "\xd6\xf7",
++ [32430] = "\xdd\xe0", [32431] = "\xcb\xfb", [32436] = "\xb2\xab",
++ [32438] = "\xec\x71", [32440] = "\xec\x72", [32443] = "\xec\x73",
++ [32444] = "\xf3\xd4", [32445] = "\xb5\xd0", [32446] = "\xf3\xd5",
++ [32447] = "\xf3\xd6", [32448] = "\xf3\xd7", [32449] = "\xf4\x7e",
++ [32450] = "\xb9\xf5", [32452] = "\xf3\xd8", [32453] = "\xec\x74",
++ [32456] = "\xe0\xd4", [32457] = "\xcc\xdb", [32459] = "\xc2\xe3",
++ [32460] = "\xf3\xd9", [32461] = "\xf3\xdb", [32462] = "\xf3\xda",
++ [32463] = "\xec\x75", [32464] = "\xf3\xdc", [32468] = "\xec\x76",
++ [32469] = "\xf3\xdd", [32471] = "\xec\x77", [32472] = "\xf3\xde",
++ [32476] = "\xec\x78", [32477] = "\xec\x79", [32478] = "\xec\x7a",
++ [32479] = "\xf3\xdf", [32480] = "\xec\x7b", [32481] = "\xec\x7c",
++ [32482] = "\xec\x7d", [32484] = "\xf3\xe0", [32485] = "\xec\x7e",
++ [32486] = "\xf3\xe1", [32487] = "\xf3\xe2", [32488] = "\xed\x21",
++ [32489] = "\xf3\xe3", [32491] = "\xf3\xe4", [32492] = "\xf3\xe5",
++ [32493] = "\xf3\xe6", [32495] = "\xed\x22", [32498] = "\xed\x23",
++ [32499] = "\xed\x24", [32503] = "\xf3\xe7", [32504] = "\xf3\xe8",
++ [32505] = "\xed\x25", [32510] = "\xc5\xa4", [32511] = "\xed\x26",
++ [32512] = "\xed\x27", [32513] = "\xed\x28", [32514] = "\xed\x29",
++ [32515] = "\xb8\xdd", [32516] = "\xed\x2a", [32517] = "\xf3\xea",
++ [32518] = "\xed\x2b", [32519] = "\xed\x2c", [32521] = "\xed\x2d",
++ [32522] = "\xed\x2e", [32523] = "\xed\x2f", [32527] = "\xed\x30",
++ [32528] = "\xc1\xcd", [32529] = "\xf3\xeb", [32530] = "\xed\x31",
++ [32534] = "\xed\x32", [32538] = "\xed\x33", [32539] = "\xed\x34",
++ [32540] = "\xf3\xec", [32543] = "\xed\x35", [32545] = "\xed\x36",
++ [32546] = "\xed\x37", [32548] = "\xed\x38", [32551] = "\xed\x39",
++ [32553] = "\xed\x3a", [32554] = "\xed\x3b", [32555] = "\xc9\xa1",
++ [32556] = "\xed\x3c", [32557] = "\xed\x3d", [32558] = "\xf3\xed",
++ [32559] = "\xed\x3e", [32561] = "\xed\x3f", [32563] = "\xed\x40",
++ [32564] = "\xed\x41", [32565] = "\xed\x42", [32566] = "\xed\x43",
++ [32567] = "\xed\x44", [32570] = "\xf3\xee", [32571] = "\xe3\xb7",
++ [32574] = "\xec\xda", [32575] = "\xf0\xed", [32578] = "\xf3\xef",
++ [32579] = "\xed\x45", [32580] = "\xf3\xf0", [32581] = "\xed\x46",
++ [32582] = "\xed\x47", [32583] = "\xed\x48", [32584] = "\xed\x49",
++ [32586] = "\xed\x4a", [32589] = "\xed\x4b", [32590] = "\xed\x4c",
++ [32591] = "\xf3\xf2", [32592] = "\xf3\xf3", [32593] = "\xf3\xf4",
++ [32594] = "\xce\xf0", [32595] = "\xf3\xf1", [32598] = "\xf3\xf5",
++ [32599] = "\xf3\xf6", [32600] = "\xed\x4d", [32601] = "\xed\x4e",
++ [32602] = "\xf3\xf8", [32604] = "\xf3\xf7", [32605] = "\xed\x4f",
++ [32606] = "\xed\x50", [32607] = "\xed\x51", [32608] = "\xed\x52",
++ [32609] = "\xed\x53", [32610] = "\xf3\xfa", [32611] = "\xed\x54",
++ [32613] = "\xed\x55", [32614] = "\xf3\xfb", [32615] = "\xf3\xf9",
++ [32618] = "\xed\x56", [32621] = "\xed\x57", [32637] = "\xce\xb6",
++ [32639] = "\xed\x58", [32640] = "\xed\x59", [32641] = "\xed\x5a",
++ [32642] = "\xed\x5b", [32644] = "\xed\x5c", [32645] = "\xf3\xfc",
++ [32646] = "\xed\x5d", [32647] = "\xed\x5e", [32652] = "\xf3\xfd",
++ [32653] = "\xe3\xd4", [32654] = "\xed\x5f", [32656] = "\xf3\xfe",
++ [32657] = "\xed\x60", [32658] = "\xed\x61", [32659] = "\xed\x62",
++ [32661] = "\xed\x63"
++};
++
++static const char from_ucs4_cjkcpt[261][2] =
++{
++ /* start = 0xf929, end = 0xfa2d */
++ [ 0] = "\xf4\x45", [ 179] = "\xf4\x72", [ 229] = "\xf4\x34",
++ [ 230] = "\xf4\x37", [ 231] = "\xf4\x38", [ 232] = "\xf4\x3d",
++ [ 233] = "\xf4\x44", [ 234] = "\xf4\x47", [ 235] = "\xf4\x48",
++ [ 236] = "\xf4\x4e", [ 237] = "\xf4\x4f", [ 238] = "\xf4\x53",
++ [ 239] = "\xf4\x55", [ 240] = "\xf4\x56", [ 241] = "\xf4\x57",
++ [ 242] = "\xf4\x58", [ 243] = "\xf4\x5a", [ 244] = "\xf4\x5b",
++ [ 245] = "\xf4\x5e", [ 246] = "\xf4\x60", [ 247] = "\xf4\x62",
++ [ 248] = "\xf4\x63", [ 249] = "\xf4\x65", [ 250] = "\xf4\x69",
++ [ 251] = "\xf4\x6a", [ 252] = "\xf4\x6b", [ 253] = "\xf4\x6d",
++ [ 254] = "\xf4\x6f", [ 255] = "\xf4\x70", [ 256] = "\xf4\x73",
++ [ 257] = "\xf4\x77", [ 258] = "\xf4\x78", [ 259] = "\xf4\x79",
++ [ 260] = "\xf4\x7d"
++};
++
++static const char from_ucs4_extra[229][2] =
++{
++ /* start = 0xff01, end = 0xffe5 */
++ [ 0] = "\xa1\xaa", [ 1] = "\xf4\x2a", [ 2] = "\xa1\xf4",
++ [ 3] = "\xa1\xf0", [ 4] = "\xa1\xf3", [ 5] = "\xa1\xf5",
++ [ 6] = "\xf4\x29", [ 7] = "\xa1\xca", [ 8] = "\xa1\xcb",
++ [ 9] = "\xa1\xf6", [ 10] = "\xa1\xdc", [ 11] = "\xa1\xa4",
++ [ 12] = "\xa1\xdd", [ 13] = "\xa1\xa5", [ 14] = "\xa1\xbf",
++ [ 15] = "\xa3\xb0", [ 16] = "\xa3\xb1", [ 17] = "\xa3\xb2",
++ [ 18] = "\xa3\xb3", [ 19] = "\xa3\xb4", [ 20] = "\xa3\xb5",
++ [ 21] = "\xa3\xb6", [ 22] = "\xa3\xb7", [ 23] = "\xa3\xb8",
++ [ 24] = "\xa3\xb9", [ 25] = "\xa1\xa7", [ 26] = "\xa1\xa8",
++ [ 27] = "\xa1\xe3", [ 28] = "\xa1\xe1", [ 29] = "\xa1\xe4",
++ [ 30] = "\xa1\xa9", [ 31] = "\xa1\xf7", [ 32] = "\xa3\xc1",
++ [ 33] = "\xa3\xc2", [ 34] = "\xa3\xc3", [ 35] = "\xa3\xc4",
++ [ 36] = "\xa3\xc5", [ 37] = "\xa3\xc6", [ 38] = "\xa3\xc7",
++ [ 39] = "\xa3\xc8", [ 40] = "\xa3\xc9", [ 41] = "\xa3\xca",
++ [ 42] = "\xa3\xcb", [ 43] = "\xa3\xcc", [ 44] = "\xa3\xcd",
++ [ 45] = "\xa3\xce", [ 46] = "\xa3\xcf", [ 47] = "\xa3\xd0",
++ [ 48] = "\xa3\xd1", [ 49] = "\xa3\xd2", [ 50] = "\xa3\xd3",
++ [ 51] = "\xa3\xd4", [ 52] = "\xa3\xd5", [ 53] = "\xa3\xd6",
++ [ 54] = "\xa3\xd7", [ 55] = "\xa3\xd8", [ 56] = "\xa3\xd9",
++ [ 57] = "\xa3\xda", [ 58] = "\xa1\xce", [ 59] = "\xa1\xc0",
++ [ 60] = "\xa1\xcf", [ 61] = "\xa1\xb0", [ 62] = "\xa1\xb2",
++ [ 63] = "\xa1\xae", [ 64] = "\xa3\xe1", [ 65] = "\xa3\xe2",
++ [ 66] = "\xa3\xe3", [ 67] = "\xa3\xe4", [ 68] = "\xa3\xe5",
++ [ 69] = "\xa3\xe6", [ 70] = "\xa3\xe7", [ 71] = "\xa3\xe8",
++ [ 72] = "\xa3\xe9", [ 73] = "\xa3\xea", [ 74] = "\xa3\xeb",
++ [ 75] = "\xa3\xec", [ 76] = "\xa3\xed", [ 77] = "\xa3\xee",
++ [ 78] = "\xa3\xef", [ 79] = "\xa3\xf0", [ 80] = "\xa3\xf1",
++ [ 81] = "\xa3\xf2", [ 82] = "\xa3\xf3", [ 83] = "\xa3\xf4",
++ [ 84] = "\xa3\xf5", [ 85] = "\xa3\xf6", [ 86] = "\xa3\xf7",
++ [ 87] = "\xa3\xf8", [ 88] = "\xa3\xf9", [ 89] = "\xa3\xfa",
++ [ 90] = "\xa1\xd0", [ 91] = "\xa1\xc3", [ 92] = "\xa1\xd1",
++ [ 93] = "\xa1\xc1", [ 96] = "\x8e\xa1", [ 97] = "\x8e\xa2",
++ [ 98] = "\x8e\xa3", [ 99] = "\x8e\xa4", [ 100] = "\x8e\xa5",
++ [ 101] = "\x8e\xa6", [ 102] = "\x8e\xa7", [ 103] = "\x8e\xa8",
++ [ 104] = "\x8e\xa9", [ 105] = "\x8e\xaa", [ 106] = "\x8e\xab",
++ [ 107] = "\x8e\xac", [ 108] = "\x8e\xad", [ 109] = "\x8e\xae",
++ [ 110] = "\x8e\xaf", [ 111] = "\x8e\xb0", [ 112] = "\x8e\xb1",
++ [ 113] = "\x8e\xb2", [ 114] = "\x8e\xb3", [ 115] = "\x8e\xb4",
++ [ 116] = "\x8e\xb5", [ 117] = "\x8e\xb6", [ 118] = "\x8e\xb7",
++ [ 119] = "\x8e\xb8", [ 120] = "\x8e\xb9", [ 121] = "\x8e\xba",
++ [ 122] = "\x8e\xbb", [ 123] = "\x8e\xbc", [ 124] = "\x8e\xbd",
++ [ 125] = "\x8e\xbe", [ 126] = "\x8e\xbf", [ 127] = "\x8e\xc0",
++ [ 128] = "\x8e\xc1", [ 129] = "\x8e\xc2", [ 130] = "\x8e\xc3",
++ [ 131] = "\x8e\xc4", [ 132] = "\x8e\xc5", [ 133] = "\x8e\xc6",
++ [ 134] = "\x8e\xc7", [ 135] = "\x8e\xc8", [ 136] = "\x8e\xc9",
++ [ 137] = "\x8e\xca", [ 138] = "\x8e\xcb", [ 139] = "\x8e\xcc",
++ [ 140] = "\x8e\xcd", [ 141] = "\x8e\xce", [ 142] = "\x8e\xcf",
++ [ 143] = "\x8e\xd0", [ 144] = "\x8e\xd1", [ 145] = "\x8e\xd2",
++ [ 146] = "\x8e\xd3", [ 147] = "\x8e\xd4", [ 148] = "\x8e\xd5",
++ [ 149] = "\x8e\xd6", [ 150] = "\x8e\xd7", [ 151] = "\x8e\xd8",
++ [ 152] = "\x8e\xd9", [ 153] = "\x8e\xda", [ 154] = "\x8e\xdb",
++ [ 155] = "\x8e\xdc", [ 156] = "\x8e\xdd", [ 157] = "\x8e\xde",
++ [ 158] = "\x8e\xdf", [ 223] = "\xa1\xf1", [ 224] = "\xa1\xf2",
++ [ 225] = "\xa2\xcc", [ 226] = "\xa1\xb1", [ 227] = "\xa2\x43",
++ [ 228] = "\xa1\xef"
++};
++
++/* Definitions used in the body of the `gconv' function. */
++#define CHARSET_NAME "EUC-JP-MS//"
++#define FROM_LOOP from_eucjp_ms
++#define TO_LOOP to_eucjp_ms
++#define DEFINE_INIT 1
++#define DEFINE_FINI 1
++#define MIN_NEEDED_FROM 1
++#define MAX_NEEDED_FROM 3
++#define MIN_NEEDED_TO 4
++
++
++/* First define the conversion function from EUC-JP-MS to UCS4. */
++#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
++#define MAX_NEEDED_INPUT MAX_NEEDED_FROM
++#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
++#define LOOPFCT FROM_LOOP
++#define BODY \
++ { \
++ uint32_t ch = (uint32_t)inptr[0] & 0xff; \
++ \
++ if (ch < 0x8e || (ch >= 0x90 && ch <= 0x9f)) \
++ ++inptr; \
++ else if (ch == 0xff) \
++ { \
++ /* This is illegal. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ \
++ ++inptr; \
++ ++*irreversible; \
++ continue; \
++ } \
++ else \
++ { \
++ /* Two or more byte character. First test whether the next \
++ character is also available. */ \
++ unsigned char ch2; \
++ \
++ if (__builtin_expect (inptr + 1 >= inend, 0)) \
++ { \
++ /* The second character is not available. Store the \
++ intermediate result. */ \
++ result = __GCONV_INCOMPLETE_INPUT; \
++ break; \
++ } \
++ \
++ ch2 = (unsigned char)inptr[1]; \
++ \
++ /* All second bytes of a multibyte character must be >= 0xa1. */ \
++ if (__builtin_expect (ch2 < 0xa1, 0)) \
++ { \
++ /* This is an illegal character. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ \
++ ++inptr; \
++ ++*irreversible; \
++ continue; \
++ } \
++ \
++ if (__builtin_expect(ch == 0x8e, 0)) \
++ { \
++ /* This is code set 2: half-width katakana. */ \
++ ch = jisx0201_to_ucs4 (ch2); \
++ /*if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR)*/ \
++ if (__builtin_expect (ch == __UNKNOWN_10646_CHAR, 0)) \
++ { \
++ /* Illegal character. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ /* This is an illegal character. */ \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ } \
++ \
++ inptr += 2; \
++ } \
++ else \
++ { \
++ const unsigned char *endp; \
++ int mblen = 1; \
++ \
++ if (__builtin_expect(ch == 0x8f, 0)) \
++ { \
++ if (inend - inptr < 3) \
++ ch = 0; \
++ else \
++ { \
++ unsigned char ch3 = (unsigned char)inptr[2]; \
++ mblen = 3; \
++ \
++ if (__builtin_expect(ch3 == 0xff, 0) \
++ || __builtin_expect(ch3 < 0xa1, 0)) \
++ ch = __UNKNOWN_10646_CHAR; \
++ else if (ch2 <= 0xf2) \
++ { \
++ endp = inptr + 1; \
++ \
++ /* This is code set 3: JIS X 0212-1990. */ \
++ ch = jisx0212_to_ucs4 (&endp, inend - endp, 0x80); \
++ \
++ if (ch == 0x00a6) /* BROKEN BAR */ \
++ ch = 0xffe4; /* FULLWIDTH BROKEN BAR */ \
++ else if (ch == __UNKNOWN_10646_CHAR) \
++ endp -= 1; \
++ } \
++ else if (ch2 <= 0xf4) \
++ { \
++ int idx = ((ch2-0xf3)*94 + ch3-0xa1) - (94-12); \
++ \
++ if (0 <= idx && idx < 12 + 94) \
++ { \
++ if ((ch = cjk_block_ibm[idx]) != 0) \
++ endp = inptr + mblen; \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ } \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ } \
++ else if (ch2 <= 0xfe) \
++ { \
++ ch = 0xe3ac + (ch2 - 0xf5) * 94 + (ch3 - 0xa1); \
++ endp = inptr + mblen; \
++ } \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ } \
++ } \
++ else if (__builtin_expect(0xa1 <= ch, 1)) \
++ { \
++ mblen = 2; \
++ \
++ if (inend - inptr < 2) \
++ ch = 0; \
++ else if (__builtin_expect(ch2 == 0xff, 0)) \
++ ch = __UNKNOWN_10646_CHAR; \
++ else if (ch <= 0xa8) \
++ { \
++ if ((ch = cjk_block1[(ch-0xa1)*94 + (ch2-0xa1)]) != 0) \
++ endp = inptr + mblen; \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ } \
++ else if (ch == 0xad) \
++ { \
++ if ((ch = cjk_block2[(ch-0xad)*94 + (ch2-0xa1)]) != 0) \
++ endp = inptr + mblen; \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ } \
++ else if (ch <= 0xf4) \
++ { \
++ endp = inptr; \
++ \
++ /* This is code set 1: JIS X 0208. */ \
++ ch = jisx0208_to_ucs4 (&endp, inend - inptr, 0x80); \
++ } \
++ else if (ch <= 0xfe) \
++ { \
++ ch = 0xe000 + (ch - 0xf5) * 94 + (ch2 - 0xa1); \
++ endp = inptr + mblen; \
++ } \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ } \
++ else \
++ ch = __UNKNOWN_10646_CHAR; \
++ \
++ if (__builtin_expect (ch, 1) == 0) \
++ { \
++ /* Not enough input available. */ \
++ result = __GCONV_INCOMPLETE_INPUT; \
++ break; \
++ } \
++ if (__builtin_expect (ch, 0) == __UNKNOWN_10646_CHAR) \
++ { \
++ /* Illegal character. */ \
++ if (! ignore_errors_p ()) \
++ { \
++ /* This is an illegal character. */ \
++ result = __GCONV_ILLEGAL_INPUT; \
++ break; \
++ } \
++ \
++ inptr += mblen; \
++ ++*irreversible; \
++ continue; \
++ } \
++ inptr = endp; \
++ } \
++ } \
++ \
++ put32 (outptr, ch); \
++ outptr += 4; \
++ }
++#define LOOP_NEED_FLAGS
++#include <iconv/loop.c>
++
++
++/* Next, define the other direction. */
++#define MIN_NEEDED_INPUT MIN_NEEDED_TO
++#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
++#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM
++#define LOOPFCT TO_LOOP
++#define BODY \
++ { \
++ uint32_t ch = get32 (inptr); \
++ const unsigned char *cp; \
++ unsigned char pua[2]; \
++ \
++ if (ch >= (sizeof (from_ucs4_lat1) / sizeof (from_ucs4_lat1[0]))) \
++ { \
++ if (ch >= 0x0100 && ch <= 0x045f) \
++ cp = from_ucs4_greek[ch - 0x0100]; \
++ else if (ch >= 0x2010 && ch <= 0x9fa5) \
++ cp = from_ucs4_cjk[ch - 0x2010]; \
++ else if (ch >= 0xe000 && ch <= 0xe757) \
++ { \
++ if (ch < 0xe3ac) \
++ { \
++ pua[0] = (ch - 0xe000) / 94 + 0xf5; \
++ pua[1] = (ch - 0xe000) % 94 + 0xa1; \
++ } \
++ else \
++ { \
++ pua[0] = (ch - 0xe3ac) / 94 + 0xf5; \
++ pua[1] = (ch - 0xe3ac) % 94 + 0x21; \
++ } \
++ cp = (const unsigned char *)&pua[0]; \
++ } \
++ else if (ch >= 0xf929 && ch <= 0xfa2d) \
++ cp = from_ucs4_cjkcpt[ch - 0xf929]; \
++ else if (__builtin_expect (ch >= 0xff01, 1) \
++ && __builtin_expect (ch <= 0xffe5, 1)) \
++ cp = from_ucs4_extra[ch - 0xff01]; \
++ else \
++ { \
++ UNICODE_TAG_HANDLER (ch, 4); \
++ /* Illegal character. */ \
++ cp = ""; \
++ } \
++ } \
++ else \
++ cp = from_ucs4_lat1[ch]; \
++ \
++ if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \
++ { \
++ /* Illegal character. */ \
++ STANDARD_TO_LOOP_ERR_HANDLER (4); \
++ } \
++ else \
++ { \
++ *outptr = cp[0]; \
++ /* Now test for a possible second byte and write this if possible. */\
++ if (cp[1] != '\0') \
++ { \
++ if (__builtin_expect (outptr + 1 >= outend, 0)) \
++ { \
++ /* The result does not fit into the buffer. */ \
++ result = __GCONV_FULL_OUTPUT; \
++ break; \
++ } \
++ if (__builtin_expect (cp[1] < 0x80, 0)) \
++ { \
++ if (__builtin_expect (outptr + 2 >= outend, 0)) \
++ { \
++ /* The result does not fit into the buffer. */ \
++ result = __GCONV_FULL_OUTPUT; \
++ break; \
++ } \
++ *outptr = 0x8f; \
++ *++outptr = cp[0]; \
++ *++outptr = cp[1] | 0x80; \
++ } \
++ else \
++ *++outptr = cp[1]; \
++ } \
++ ++outptr; \
++ } \
++ \
++ inptr += 4; \
++ }
++#define LOOP_NEED_FLAGS
++#include <iconv/loop.c>
++
++
++/* Now define the toplevel functions. */
++#include <iconv/skeleton.c>
+--- glibc-2.3.2/iconvdata/euc-kr.c 2002-12-02 16:26:10.000000000 -0500
++++ glibc-2.3.2/iconvdata/euc-kr.c 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Mapping tables for EUC-KR handling.
+- Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jungshik Shin <jshin@pantheon.yale.edu>
+ and Ulrich Drepper <drepper@cygnus.com>, 1998.
+@@ -25,6 +25,7 @@
+
+
+ static inline void
++__attribute ((always_inline))
+ euckr_from_ucs4 (uint32_t ch, unsigned char *cp)
+ {
+ if (ch > 0x9f)
+--- glibc-2.3.2/iconvdata/euc-tw.c 2002-12-02 16:26:10.000000000 -0500
++++ glibc-2.3.2/iconvdata/euc-tw.c 2003-04-12 11:39:42.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Mapping tables for EUC-TW handling.
+- Copyright (C) 1998, 1999, 2000-2002 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2000-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -143,7 +143,7 @@
+ if (__builtin_expect (found, 1) == 0) \
+ { \
+ /* We ran out of space. */ \
+- result = __GCONV_INCOMPLETE_INPUT; \
++ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ if (__builtin_expect (found, 1) != __UNKNOWN_10646_CHAR) \
+@@ -160,7 +160,7 @@
+ if (__builtin_expect (found, 1) == 0) \
+ { \
+ /* We ran out of space. */ \
+- result = __GCONV_INCOMPLETE_INPUT; \
++ result = __GCONV_FULL_OUTPUT; \
+ break; \
+ } \
+ if (__builtin_expect (found, 0) == __UNKNOWN_10646_CHAR) \
+--- glibc-2.3.2/iconvdata/extra-module.mk 2001-03-18 03:02:29.000000000 -0500
++++ glibc-2.3.2/iconvdata/extra-module.mk 2003-04-28 08:20:35.000000000 -0400
+@@ -3,7 +3,8 @@
+
+ extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines))
+
+-$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))
++$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\
++ $(common-objpfx)shlib.lds
+ $(build-module)
+
+ # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+--- glibc-2.3.2/iconvdata/gb2312.h 2001-07-07 15:20:59.000000000 -0400
++++ glibc-2.3.2/iconvdata/gb2312.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for GB2312 conversion.
+- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -30,6 +30,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ gb2312_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
+ {
+ unsigned char ch = *(*s);
+@@ -67,6 +68,7 @@
+ extern const char __gb2312_from_ucs4_tab9[][2];
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_gb2312 (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ unsigned int ch = (unsigned int) wch;
+--- glibc-2.3.2/iconvdata/gconv-modules 2003-01-14 04:32:35.000000000 -0500
++++ glibc-2.3.2/iconvdata/gconv-modules 2003-08-21 08:37:01.000000000 -0400
+@@ -393,6 +393,8 @@
+ alias ISO8859-15// ISO-8859-15//
+ alias ISO885915// ISO-8859-15//
+ alias ISO-IR-203// ISO-8859-15//
++alias ISO_8859-15// ISO-8859-15//
++alias LATIN-9// ISO-8859-15//
+ alias ISO_8859-15:1998// ISO-8859-15//
+ module ISO-8859-15// INTERNAL ISO8859-15 1
+ module INTERNAL ISO-8859-15// ISO8859-15 1
+@@ -403,6 +405,8 @@
+ alias ISO-IR-226// ISO-8859-16//
+ alias LATIN10// ISO-8859-16//
+ alias L10// ISO-8859-16//
++alias ISO_8859-16:2001// ISO-8859-16//
++alias ISO_8859-16// ISO-8859-16//
+ module ISO-8859-16// INTERNAL ISO8859-16 1
+ module INTERNAL ISO-8859-16// ISO8859-16 1
+
+@@ -433,13 +437,21 @@
+ # from to module cost
+ alias SHIFT-JIS// SJIS//
+ alias SHIFT_JIS// SJIS//
+-alias CP932// SJIS//
+ alias MS_KANJI// SJIS//
+ alias CSSHIFTJIS// SJIS//
+ module SJIS// INTERNAL SJIS 1
+ module INTERNAL SJIS// SJIS 1
+
+ # from to module cost
++alias WINDOWS-31J// CP932//
++alias MS932// CP932//
++alias SJIS-OPEN// CP932//
++alias SJIS-WIN// CP932//
++alias CSWINDOWS31J// CP932//
++module CP932// INTERNAL CP932 1
++module INTERNAL CP932// CP932 1
++
++# from to module cost
+ alias KOI8// KOI-8//
+ module KOI-8// INTERNAL KOI-8 1
+ module INTERNAL KOI-8// KOI-8 1
+@@ -996,6 +1008,7 @@
+ module INTERNAL IBM1046// IBM1046 1
+
+ # from to module cost
++alias IBM-1047// IBM1047//
+ alias CP1047// IBM1047//
+ alias 1047// IBM1047//
+ alias OSF10020417// IBM1047//
+@@ -1100,6 +1113,13 @@
+ module INTERNAL BIG5HKSCS// BIG5HKSCS 1
+
+ # from to module cost
++alias EUCJP-MS// EUC-JP-MS//
++alias EUCJP-OPEN// EUC-JP-MS//
++alias EUCJP-WIN// EUC-JP-MS//
++module EUC-JP-MS// INTERNAL EUC-JP-MS 1
++module INTERNAL EUC-JP-MS// EUC-JP-MS 1
++
++# from to module cost
+ alias EUCJP// EUC-JP//
+ alias CSEUCPKDFMTJAPANESE// EUC-JP//
+ alias OSF00030010// EUC-JP//
+@@ -1122,6 +1142,8 @@
+ # from to module cost
+ alias GB13000// GBK//
+ alias CP936// GBK//
++alias MS936// GBK//
++alias WINDOWS-936// GBK//
+ module GBK// INTERNAL GBK 1
+ module INTERNAL GBK// GBK 1
+
+--- glibc-2.3.2/iconvdata/iso-ir-165.h 2001-07-07 15:21:02.000000000 -0400
++++ glibc-2.3.2/iconvdata/iso-ir-165.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Tables for conversion to and from ISO-IR-165.
+ converting from UCS using gaps.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000.
+
+@@ -40,6 +40,7 @@
+ /* XXX If we at some point need an offset value to decode the byte
+ sequences another parameter can be added. */
+ static inline uint32_t
++__attribute ((always_inline))
+ isoir165_to_ucs4 (const unsigned char **s, size_t avail)
+ {
+ unsigned char ch = *(*s);
+@@ -70,6 +71,7 @@
+ extern const char __isoir165_from_tab[];
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_isoir165 (uint32_t wch, char *s, size_t avail)
+ {
+ unsigned int ch = (unsigned int) wch;
+--- glibc-2.3.2/iconvdata/jis0201.h 2001-07-07 15:21:02.000000000 -0400
++++ glibc-2.3.2/iconvdata/jis0201.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for JISX0201 conversion.
+- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -26,6 +26,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ jisx0201_to_ucs4 (char ch)
+ {
+ uint32_t val = __jisx0201_to_ucs4[(unsigned char) ch];
+@@ -38,6 +39,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_jisx0201 (uint32_t wch, char *s)
+ {
+ char ch;
+--- glibc-2.3.2/iconvdata/jis0208.h 2001-07-07 15:21:02.000000000 -0400
++++ glibc-2.3.2/iconvdata/jis0208.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for JISX0208 conversion.
+- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -43,6 +43,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
+ {
+ unsigned char ch = *(*s);
+@@ -70,6 +71,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_jisx0208 (uint32_t wch, char *s, size_t avail)
+ {
+ unsigned int ch = (unsigned int) wch;
+--- glibc-2.3.2/iconvdata/jis0212.h 2001-07-07 15:21:02.000000000 -0400
++++ glibc-2.3.2/iconvdata/jis0212.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for JISX0212 conversion.
+- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -42,6 +42,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ jisx0212_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
+ {
+ const struct jisx0212_idx *rp = __jisx0212_to_ucs_idx;
+@@ -77,6 +78,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_jisx0212 (uint32_t wch, char *s, size_t avail)
+ {
+ const struct jisx0212_idx *rp = __jisx0212_from_ucs_idx;
+--- glibc-2.3.2/iconvdata/jisx0213.h 2002-04-20 03:41:04.000000000 -0400
++++ glibc-2.3.2/iconvdata/jisx0213.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Functions for JISX0213 conversion.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Bruno Haible <bruno@clisp.org>, 2002.
+
+@@ -32,6 +32,7 @@
+ #define NELEMS(arr) (sizeof (arr) / sizeof (arr[0]))
+
+ static inline uint32_t
++__attribute ((always_inline))
+ jisx0213_to_ucs4 (unsigned int row, unsigned int col)
+ {
+ uint32_t val;
+@@ -64,6 +65,7 @@
+ }
+
+ static inline uint16_t
++__attribute ((always_inline))
+ ucs4_to_jisx0213 (uint32_t ucs)
+ {
+ if (ucs < NELEMS (__jisx0213_from_ucs_level1) << 6)
+--- glibc-2.3.2/iconvdata/ksc5601.h 2001-07-07 15:21:02.000000000 -0400
++++ glibc-2.3.2/iconvdata/ksc5601.h 2003-08-21 08:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Access functions for KS C 5601-1992 based encoding conversion.
+- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,6 +44,7 @@
+
+
+ static inline uint32_t
++__attribute ((always_inline))
+ ksc5601_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
+ {
+ unsigned char ch = **s;
+@@ -85,6 +86,7 @@
+ }
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_ksc5601_hangul (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ int l = 0;
+@@ -116,6 +118,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_ksc5601_hanja (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ int l = 0;
+@@ -146,6 +149,7 @@
+ }
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_ksc5601_sym (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ int l = 0;
+@@ -177,6 +181,7 @@
+
+
+ static inline size_t
++__attribute ((always_inline))
+ ucs4_to_ksc5601 (uint32_t wch, unsigned char *s, size_t avail)
+ {
+ if (wch >= 0xac00 && wch <= 0xd7a3)
+--- glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ 2001-09-20 01:06:15.000000000 -0400
++++ glibc-2.3.2/iconvdata/testdata/IBM1160.~1~ 1969-12-31 19:00:00.000000000 -0500
+@@ -1,14 +0,0 @@
+- ! " # $ % & ' ( ) * + , - . / 0
+-1 2 3 4 5 6 7 8 9 : ; < = > ? @ A
+-B C D E F G H I J K L M N O P Q R
+-S T U V W X Y Z [ \ ] ^ _ ` a b c
+-d e f g h i j k l m n o p q r s t
+-u v w x y z { | } ~  € ‚ ƒ „ …
+-† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • –
+-— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ §
+-¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸
+-¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É
+-Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú
+-Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë
+-ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü
+-ý þ ÿ
+--- glibc-2.3.2/iconvdata/tst-tables.sh 2003-01-14 04:26:51.000000000 -0500
++++ glibc-2.3.2/iconvdata/tst-tables.sh 2003-08-21 08:37:01.000000000 -0400
+@@ -209,6 +209,7 @@
+ # Multibyte encodings come here
+ #
+ SJIS SHIFT_JIS
++ CP932 WINDOWS-31J
+ #IBM932 This converter looks quite strange
+ #IBM943 This converter looks quite strange
+ EUC-KR
+@@ -217,6 +218,7 @@
+ BIG5
+ BIG5HKSCS BIG5-HKSCS
+ EUC-JP
++ EUC-JP-MS
+ EUC-CN GB2312
+ GBK
+ EUC-TW
+--- glibc-2.3.2/iconvdata/utf-7.c 2002-06-28 15:43:39.000000000 -0400
++++ glibc-2.3.2/iconvdata/utf-7.c 2003-08-21 08:37:02.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Conversion module for UTF-7.
+- Copyright (C) 2000-2002 Free Software Foundation, Inc.
++ Copyright (C) 2000-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
+
+@@ -93,7 +93,7 @@
+
+
+ /* Converts a value in the range 0..63 to a base64 encoded char. */
+-static inline unsigned char
++static unsigned char
+ base64 (unsigned int i)
+ {
+ if (i < 26)
+--- glibc-2.3.2/include/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/include/atomic.h 2003-05-12 12:13:04.000000000 -0400
+@@ -0,0 +1,246 @@
++/* Internal macros for atomic operations for GNU C Library.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _ATOMIC_H
++#define _ATOMIC_H 1
++
++#include <stdlib.h>
++
++#include <bits/atomic.h>
++
++/* Wrapper macros to call pre_NN_post (mem, ...) where NN is the
++ bit width of *MEM. The calling macro puts parens around MEM
++ and following args. */
++#define __atomic_val_bysize(pre, post, mem, ...) \
++ ({ \
++ __typeof (*mem) __result; \
++ if (sizeof (*mem) == 1) \
++ __result = pre##_8_##post (mem, __VA_ARGS__); \
++ else if (sizeof (*mem) == 2) \
++ __result = pre##_16_##post (mem, __VA_ARGS__); \
++ else if (sizeof (*mem) == 4) \
++ __result = pre##_32_##post (mem, __VA_ARGS__); \
++ else if (sizeof (*mem) == 8) \
++ __result = pre##_64_##post (mem, __VA_ARGS__); \
++ else \
++ abort (); \
++ __result; \
++ })
++#define __atomic_bool_bysize(pre, post, mem, ...) \
++ ({ \
++ int __result; \
++ if (sizeof (*mem) == 1) \
++ __result = pre##_8_##post (mem, __VA_ARGS__); \
++ else if (sizeof (*mem) == 2) \
++ __result = pre##_16_##post (mem, __VA_ARGS__); \
++ else if (sizeof (*mem) == 4) \
++ __result = pre##_32_##post (mem, __VA_ARGS__); \
++ else if (sizeof (*mem) == 8) \
++ __result = pre##_64_##post (mem, __VA_ARGS__); \
++ else \
++ abort (); \
++ __result; \
++ })
++
++
++/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
++ Return the old *MEM value. */
++#if !defined atomic_compare_and_exchange_val_acq \
++ && defined __arch_compare_and_exchange_val_32_acq
++# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
++ __atomic_val_bysize (__arch_compare_and_exchange_val,acq, \
++ mem, newval, oldval)
++#endif
++
++
++#ifndef atomic_compare_and_exchange_val_rel
++# define atomic_compare_and_exchange_val_rel(mem, oldval, newval) \
++ atomic_compare_and_exchange_val_acq (mem, oldval, newval)
++#endif
++
++
++/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
++ Return zero if *MEM was changed or non-zero if no exchange happened. */
++#ifndef atomic_compare_and_exchange_bool_acq
++# ifdef __arch_compare_and_exchange_bool_32_acq
++# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
++ __atomic_bool_bysize (__arch_compare_and_exchange_bool,acq, \
++ mem, newval, oldval)
++# else
++# define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
++ ({ /* Cannot use __oldval here, because macros later in this file might \
++ call this macro with __oldval argument. */ \
++ __typeof (oldval) __old = (oldval); \
++ atomic_compare_and_exchange_val_acq (mem, newval, __old) != __old; \
++ })
++# endif
++#endif
++
++
++#ifndef atomic_compare_and_exchange_bool_rel
++# define atomic_compare_and_exchange_bool_rel(mem, oldval, newval) \
++ atomic_compare_and_exchange_bool_acq (mem, oldval, newval)
++#endif
++
++
++/* Store NEWVALUE in *MEM and return the old value. */
++#ifndef atomic_exchange_acq
++# define atomic_exchange_acq(mem, newvalue) \
++ ({ __typeof (*(mem)) __oldval; \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __value = (newvalue); \
++ \
++ do \
++ __oldval = (*__memp); \
++ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
++ __value, \
++ __oldval),\
++ 0)); \
++ \
++ __oldval; })
++#endif
++
++#ifndef atomic_exchange_rel
++# define atomic_exchange_rel(mem, newvalue) atomic_exchange_acq (mem, newvalue)
++#endif
++
++
++/* Add VALUE to *MEM and return the old value of *MEM. */
++#ifndef atomic_exchange_and_add
++# define atomic_exchange_and_add(mem, value) \
++ ({ __typeof (*(mem)) __oldval; \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __value = (value); \
++ \
++ do \
++ __oldval = (*__memp); \
++ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
++ __oldval \
++ + __value,\
++ __oldval),\
++ 0)); \
++ \
++ __oldval; })
++#endif
++
++
++#ifndef atomic_add
++# define atomic_add(mem, value) (void) atomic_exchange_and_add ((mem), (value))
++#endif
++
++
++#ifndef atomic_increment
++# define atomic_increment(mem) atomic_add ((mem), 1)
++#endif
++
++
++/* Add one to *MEM and return true iff it's now zero. */
++#ifndef atomic_increment_and_test
++# define atomic_increment_and_test(mem) \
++ (atomic_exchange_and_add ((mem), 1) + 1 == 0)
++#endif
++
++
++#ifndef atomic_decrement
++# define atomic_decrement(mem) atomic_add ((mem), -1)
++#endif
++
++
++/* Subtract 1 from *MEM and return true iff it's now zero. */
++#ifndef atomic_decrement_and_test
++# define atomic_decrement_and_test(mem) \
++ (atomic_exchange_and_add ((mem), -1) == 1)
++#endif
++
++
++/* Decrement *MEM if it is > 0, and return the old value. */
++#ifndef atomic_decrement_if_positive
++# define atomic_decrement_if_positive(mem) \
++ ({ __typeof (*(mem)) __oldval; \
++ __typeof (mem) __memp = (mem); \
++ \
++ do \
++ { \
++ __oldval = *__memp; \
++ if (__builtin_expect (__oldval <= 0, 0)) \
++ break; \
++ } \
++ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
++ __oldval \
++ - 1, \
++ __oldval),\
++ 0));\
++ __oldval; })
++#endif
++
++
++#ifndef atomic_add_negative
++# define atomic_add_negative(mem, value) \
++ ({ __typeof (value) __aan_value = (value); \
++ atomic_exchange_and_add (mem, __aan_value) < -__aan_value; })
++#endif
++
++
++#ifndef atomic_add_zero
++# define atomic_add_zero(mem, value) \
++ ({ __typeof (value) __aaz_value = (value); \
++ atomic_exchange_and_add (mem, __aaz_value) == -__aaz_value; })
++#endif
++
++
++#ifndef atomic_bit_set
++# define atomic_bit_set(mem, bit) \
++ (void) atomic_bit_test_set(mem, bit)
++#endif
++
++
++#ifndef atomic_bit_test_set
++# define atomic_bit_test_set(mem, bit) \
++ ({ __typeof (*(mem)) __oldval; \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __mask = ((__typeof (*(mem))) 1 << (bit)); \
++ \
++ do \
++ __oldval = (*__memp); \
++ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \
++ __oldval \
++ | __mask, \
++ __oldval),\
++ 0)); \
++ \
++ __oldval & __mask; })
++#endif
++
++
++#ifndef atomic_full_barrier
++# define atomic_full_barrier() __asm ("" ::: "memory")
++#endif
++
++
++#ifndef atomic_read_barrier
++# define atomic_read_barrier() atomic_full_barrier ()
++#endif
++
++
++#ifndef atomic_write_barrier
++# define atomic_write_barrier() atomic_full_barrier ()
++#endif
++
++#endif /* atomic.h */
+--- glibc-2.3.2/include/ctype.h 2002-09-02 14:48:03.000000000 -0400
++++ glibc-2.3.2/include/ctype.h 2003-08-21 08:37:02.000000000 -0400
+@@ -25,31 +25,43 @@
+ CTYPE_EXTERN_INLINE const uint16_t ** __attribute__ ((const))
+ __ctype_b_loc (void)
+ {
+- const uint16_t **tablep =
+- (const uint16_t **) __libc_tsd_address (CTYPE_B);
+- if (__builtin_expect (*tablep == NULL, 0))
+- *tablep = (const uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128;
+- return tablep;
++ union
++ {
++ void **ptr;
++ const uint16_t **tablep;
++ } u;
++ u.ptr = __libc_tsd_address (CTYPE_B);
++ if (__builtin_expect (*u.tablep == NULL, 0))
++ *u.tablep = (const uint16_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CLASS) + 128;
++ return u.tablep;
+ }
+
+ CTYPE_EXTERN_INLINE const int32_t ** __attribute__ ((const))
+ __ctype_toupper_loc (void)
+ {
+- const int32_t **tablep =
+- (const int32_t **) __libc_tsd_address (CTYPE_TOUPPER);
+- if (__builtin_expect (*tablep == NULL, 0))
+- *tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128);
+- return tablep;
++ union
++ {
++ void **ptr;
++ const int32_t **tablep;
++ } u;
++ u.ptr = __libc_tsd_address (CTYPE_TOUPPER);
++ if (__builtin_expect (*u.tablep == NULL, 0))
++ *u.tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128);
++ return u.tablep;
+ }
+
+ CTYPE_EXTERN_INLINE const int32_t ** __attribute__ ((const))
+ __ctype_tolower_loc (void)
+ {
+- const int32_t **tablep =
+- (const int32_t **) __libc_tsd_address (CTYPE_TOLOWER);
+- if (__builtin_expect (*tablep == NULL, 0))
+- *tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128);
+- return tablep;
++ union
++ {
++ void **ptr;
++ const int32_t **tablep;
++ } u;
++ u.ptr = __libc_tsd_address (CTYPE_TOLOWER);
++ if (__builtin_expect (*u.tablep == NULL, 0))
++ *u.tablep = ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128);
++ return u.tablep;
+ }
+
+ # endif /* Not NOT_IN_libc. */
+--- glibc-2.3.2/include/dlfcn.h 2002-11-19 03:18:00.000000000 -0500
++++ glibc-2.3.2/include/dlfcn.h 2003-08-21 08:37:02.000000000 -0400
+@@ -1,5 +1,6 @@
+ #ifndef _DLFCN_H
+ #include <dlfcn/dlfcn.h>
++#include <link.h> /* For ElfW. */
+
+ /* Internally used flag. */
+ #define __RTLD_DLOPEN 0x80000000
+@@ -13,11 +14,17 @@
+ extern void *__libc_dlopen_mode (__const char *__name, int __mode);
+ extern void *__libc_dlsym (void *__map, __const char *__name);
+ extern int __libc_dlclose (void *__map);
++libc_hidden_proto (__libc_dlopen_mode)
++libc_hidden_proto (__libc_dlsym)
++libc_hidden_proto (__libc_dlclose)
+
+ /* Locate shared object containing the given address. */
+-extern int _dl_addr (const void *address, Dl_info *info)
++#ifdef ElfW
++extern int _dl_addr (const void *address, Dl_info *info,
++ struct link_map **mapp, const ElfW(Sym) **symbolp)
+ internal_function;
+ libc_hidden_proto (_dl_addr)
++#endif
+
+ /* Open the shared object NAME, relocate it, and run its initializer if it
+ hasn't already been run. MODE is as for `dlopen' (see <dlfcn.h>). If
+--- glibc-2.3.2/include/fcntl.h 2003-01-12 22:57:51.000000000 -0500
++++ glibc-2.3.2/include/fcntl.h 2003-09-19 22:37:01.000000000 -0400
+@@ -9,6 +9,7 @@
+ libc_hidden_proto (__libc_open)
+ extern int __libc_creat (const char *file, mode_t mode);
+ extern int __libc_fcntl (int fd, int cmd, ...);
++extern int __fcntl_nocancel (int fd, int cmd, ...) attribute_hidden;
+ libc_hidden_proto (__libc_fcntl)
+ extern int __open (__const char *__file, int __oflag, ...);
+ libc_hidden_proto (__open)
+--- glibc-2.3.2/include/features.h 2002-11-04 04:34:54.000000000 -0500
++++ glibc-2.3.2/include/features.h 2003-05-24 14:06:21.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1993,1995-2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1993,1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -188,6 +188,10 @@
+ # define __USE_POSIX199506 1
+ #endif
+
++#if (_POSIX_C_SOURCE - 0) >= 200112L
++# define __USE_XOPEN2K 1
++#endif
++
+ #ifdef _XOPEN_SOURCE
+ # define __USE_XOPEN 1
+ # if (_XOPEN_SOURCE - 0) >= 500
+--- glibc-2.3.2/include/gmp.h 2000-12-05 12:28:08.000000000 -0500
++++ glibc-2.3.2/include/gmp.h 2003-03-15 15:02:08.000000000 -0500
+@@ -1,3 +1,7 @@
++/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
++ and _LONG_LONG_LIMB in it can take effect into gmp.h. */
++#include <gmp-mparam.h>
++
+ #ifndef __GMP_H__
+
+ #include <stdlib/gmp.h>
+--- glibc-2.3.2/include/ifaddrs.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/include/ifaddrs.h 2003-08-21 08:37:02.000000000 -0400
+@@ -0,0 +1,10 @@
++#ifndef _IFADDRS_H
++#include <inet/ifaddrs.h>
++#include <stdbool.h>
++
++libc_hidden_proto (getifaddrs)
++libc_hidden_proto (freeifaddrs)
++
++extern void __check_pf (bool *seen_ipv4, bool *seen_ipv6) attribute_hidden;
++
++#endif /* ifaddrs.h */
+--- glibc-2.3.2/include/libc-symbols.h 2003-01-03 18:21:03.000000000 -0500
++++ glibc-2.3.2/include/libc-symbols.h 2003-08-21 08:37:02.000000000 -0400
+@@ -244,10 +244,10 @@
+ # define link_warning(symbol, msg) \
+ __make_section_unallocated (".gnu.warning." #symbol) \
+ static const char __evoke_link_warning_##symbol[] \
+- __attribute__ ((unused, section (".gnu.warning." #symbol __sec_comment))) \
++ __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \
+ = msg;
+ # define libc_freeres_ptr(decl) \
+- __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", @nobits") \
++ __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", %nobits") \
+ decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment)))
+ # define __libc_freeres_fn_section \
+ __attribute__ ((section ("__libc_freeres_fn")))
+@@ -282,6 +282,16 @@
+ link_warning (name, \
+ "warning: " #name " is not implemented and will always fail")
+
++/* Warning for linking functions calling dlopen into static binaries. */
++#ifdef SHARED
++#define static_link_warning(name)
++#else
++#define static_link_warning(name) static_link_warning1(name)
++#define static_link_warning1(name) \
++ link_warning(name, "Using '" #name "' in statically linked applications \
++requires at runtime the shared libraries from the glibc version used \
++for linking")
++#endif
+
+ /* Declare SYMBOL to be TYPE (`function' or `object') and of SIZE bytes,
+ when the assembler supports such declarations (such as in ELF).
+@@ -334,29 +344,36 @@
+ because it will need to be relocated at run time anyway. */
+ # define _elf_set_element(set, symbol) \
+ static const void *__elf_set_##set##_element_##symbol##__ \
+- __attribute__ ((unused, section (#set))) = &(symbol)
++ __attribute__ ((used, section (#set))) = &(symbol)
+ # else
+ # define _elf_set_element(set, symbol) \
+ static const void *const __elf_set_##set##_element_##symbol##__ \
+- __attribute__ ((unused, section (#set))) = &(symbol)
++ __attribute__ ((used, section (#set))) = &(symbol)
+ # endif
+
+ /* Define SET as a symbol set. This may be required (it is in a.out) to
+ be able to use the set's contents. */
+ # define symbol_set_define(set) symbol_set_declare(set)
+
+-/* Declare SET for use in this module, if defined in another module. */
++/* Declare SET for use in this module, if defined in another module.
++ In a shared library, this is always local to that shared object.
++ For static linking, the set might be wholly absent and so we use
++ weak references. */
+ # define symbol_set_declare(set) \
+- extern void *const __start_##set __attribute__ ((__weak__)); \
+- extern void *const __stop_##set __attribute__ ((__weak__)); \
+- weak_extern (__start_##set) weak_extern (__stop_##set)
++ extern char const __start_##set[] __symbol_set_attribute; \
++ extern char const __stop_##set[] __symbol_set_attribute;
++# ifdef SHARED
++# define __symbol_set_attribute attribute_hidden
++# else
++# define __symbol_set_attribute __attribute__ ((weak))
++# endif
+
+ /* Return a pointer (void *const *) to the first element of SET. */
+-# define symbol_set_first_element(set) (&__start_##set)
++# define symbol_set_first_element(set) ((void *const *) (&__start_##set))
+
+ /* Return true iff PTR (a void *const *) has been incremented
+ past the last element in SET. */
+-# define symbol_set_end_p(set, ptr) ((ptr) >= &__stop_##set)
++# define symbol_set_end_p(set, ptr) ((ptr) >= (void *const *) &__stop_##set)
+
+ # else /* Not ELF: a.out. */
+
+@@ -434,7 +451,8 @@
+ strong_alias(real, name)
+ #endif
+
+-#if defined HAVE_VISIBILITY_ATTRIBUTE && defined SHARED
++#if defined HAVE_VISIBILITY_ATTRIBUTE \
++ && (defined SHARED || defined LIBC_NONSHARED)
+ # define attribute_hidden __attribute__ ((visibility ("hidden")))
+ #else
+ # define attribute_hidden
+@@ -720,4 +738,16 @@
+ # define libm_hidden_data_ver(local, name)
+ #endif
+
++#ifdef HAVE_BUILTIN_REDIRECTION
++# define libc_hidden_builtin_proto(name, attrs...) libc_hidden_proto (name, ##attrs)
++# define libc_hidden_builtin_def(name) libc_hidden_def (name)
++# define libc_hidden_builtin_weak(name) libc_hidden_weak (name)
++# define libc_hidden_builtin_ver(local, name) libc_hidden_ver (local, name)
++#else
++# define libc_hidden_builtin_proto(name, attrs...)
++# define libc_hidden_builtin_def(name)
++# define libc_hidden_builtin_weak(name)
++# define libc_hidden_builtin_ver(local, name)
++#endif
++
+ #endif /* libc-symbols.h */
+--- glibc-2.3.2/include/link.h 2002-12-02 17:36:09.000000000 -0500
++++ glibc-2.3.2/include/link.h 2003-08-21 08:37:02.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Data structure for communication from the run-time dynamic linker for
+ loaded ELF shared objects.
+- Copyright (C) 1995-1999,2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -186,7 +186,9 @@
+ the l_libname list. */
+ unsigned int l_faked:1; /* Nonzero if this is a faked descriptor
+ without associated file. */
+-
++ unsigned int l_need_tls_init:1; /* Nonzero if GL(dl_init_static_tls)
++ should be called on this link map
++ when relocation finishes. */
+ /* Array with version names. */
+ unsigned int l_nversions;
+ struct r_found_version *l_versions;
+@@ -268,6 +270,11 @@
+ size_t l_tls_blocksize;
+ /* Alignment requirement of the TLS block. */
+ size_t l_tls_align;
++ /* Offset of first byte module alignment. */
++ size_t l_tls_firstbyte_offset;
++# ifndef NO_TLS_OFFSET
++# define NO_TLS_OFFSET 0
++# endif
+ /* For objects present at startup time: offset in the static TLS block. */
+ ptrdiff_t l_tls_offset;
+ /* Index of the module in the dtv array. */
+--- glibc-2.3.2/include/netdb.h 2002-12-31 14:14:52.000000000 -0500
++++ glibc-2.3.2/include/netdb.h 2003-04-24 20:05:57.000000000 -0400
+@@ -181,13 +181,9 @@
+ libc_hidden_proto (ruserpass)
+
+
+-/* The following declarations and definitions have been removed from
+- the public header since we don't want people to use them. */
++/* The following definition has been removed from the public header
++ since we don't want people to use them. */
+
+-#define AI_V4MAPPED 0x0008 /* IPv4-mapped addresses are acceptable. */
+-#define AI_ALL 0x0010 /* Return both IPv4 and IPv6 addresses. */
+-#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
+- returned address type. */
+ #define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG)
+
+ #include <inet/netgroup.h>
+--- glibc-2.3.2/include/netinet/in.h 2002-08-07 22:08:13.000000000 -0400
++++ glibc-2.3.2/include/netinet/in.h 2003-08-21 08:37:02.000000000 -0400
+@@ -5,5 +5,6 @@
+ libc_hidden_proto (bindresvport)
+ libc_hidden_proto (in6addr_loopback)
+ libc_hidden_proto (in6addr_any)
++libc_hidden_proto (inet6_option_alloc)
+
+ #endif
+--- glibc-2.3.2/include/resolv.h 2003-02-21 21:38:02.000000000 -0500
++++ glibc-2.3.2/include/resolv.h 2003-08-21 08:37:02.000000000 -0400
+@@ -17,9 +17,10 @@
+ # if USE___THREAD
+ # undef _res
+ # ifndef NOT_IN_libc
+-# define _res __libc_res
++# define __resp __libc_resp
+ # endif
+-extern __thread struct __res_state _res attribute_tls_model_ie;
++# define _res (*__resp)
++extern __thread struct __res_state *__resp attribute_tls_model_ie;
+ # endif
+ # else
+ # ifndef __BIND_NOSTATIC
+--- glibc-2.3.2/include/sched.h 2002-08-15 01:39:03.000000000 -0400
++++ glibc-2.3.2/include/sched.h 2003-03-15 15:02:08.000000000 -0500
+@@ -18,5 +18,5 @@
+ extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
+ int __flags, void *__arg, ...);
+ extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
+- size_t __child_stack_size, int __flags, void *__arg);
++ size_t __child_stack_size, int __flags, void *__arg, ...);
+ #endif
+--- glibc-2.3.2/include/set-hooks.h 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/include/set-hooks.h 2003-08-21 08:37:02.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Macros for using symbol sets for running lists of functions.
+- Copyright (C) 1994, 1995, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -40,12 +40,12 @@
+ /* Run all the functions hooked on the set called NAME.
+ Each function is called like this: `function ARGS'. */
+
+-# define RUN_HOOK(NAME, ARGS) \
+-do { \
+- void *const *__unbounded ptr; \
+- for (ptr = symbol_set_first_element (NAME); \
+- ! symbol_set_end_p (NAME, ptr); ++ptr) \
+- (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
++# define RUN_HOOK(NAME, ARGS) \
++do { \
++ void *const *__unbounded ptr; \
++ for (ptr = (void *const *) symbol_set_first_element (NAME); \
++ ! symbol_set_end_p (NAME, ptr); ++ptr) \
++ (*(__##NAME##_hook_function_t *) *ptr) ARGS; \
+ } while (0)
+
+ /* Define a hook variable with NAME and PROTO, and a function called RUNNER
+--- glibc-2.3.2/include/setjmp.h 2002-12-31 04:40:20.000000000 -0500
++++ glibc-2.3.2/include/setjmp.h 2003-09-19 22:37:01.000000000 -0400
+@@ -22,5 +22,6 @@
+ libc_hidden_proto (__libc_longjmp)
+
+ libc_hidden_proto (_setjmp)
++libc_hidden_proto (__sigsetjmp)
+
+ #endif
+--- glibc-2.3.2/include/signal.h 2002-12-31 14:38:14.000000000 -0500
++++ glibc-2.3.2/include/signal.h 2003-05-12 12:13:04.000000000 -0400
+@@ -6,6 +6,8 @@
+
+ libc_hidden_proto (sigemptyset)
+ libc_hidden_proto (sigfillset)
++libc_hidden_proto (sigaddset)
++libc_hidden_proto (sigdelset)
+ libc_hidden_proto (sigismember)
+ libc_hidden_proto (__sigpause)
+ libc_hidden_proto (raise)
+--- glibc-2.3.2/include/stdio.h 2002-08-10 14:08:27.000000000 -0400
++++ glibc-2.3.2/include/stdio.h 2003-09-19 22:37:01.000000000 -0400
+@@ -108,6 +108,18 @@
+ libc_hidden_proto (fgets_unlocked)
+ libc_hidden_proto (fputs_unlocked)
+ libc_hidden_proto (open_memstream)
++libc_hidden_proto (__libc_fatal)
++
++# if !defined NOT_IN_libc && defined SHARED && defined DO_VERSIONING \
++ && defined HAVE_VISIBILITY_ATTRIBUTE && !defined HAVE_BROKEN_ALIAS_ATTRIBUTE\
++ && !defined NO_HIDDEN
++/* Special gcc builtins. */
++extern size_t __builtin_fwrite (const void *, size_t, size_t, void *)
++ __asm ("__GI_fwrite");
++extern size_t __builtin_fwrite_unlocked (const void *, size_t, size_t, void *)
++ __asm ("__GI_fwrite_unlocked");
++
++# endif
+
+ # endif
+
+--- glibc-2.3.2/include/string.h 2002-12-31 17:38:31.000000000 -0500
++++ glibc-2.3.2/include/string.h 2003-05-12 12:13:04.000000000 -0400
+@@ -79,6 +79,23 @@
+ libc_hidden_proto (basename)
+ libc_hidden_proto (strcoll)
+
++libc_hidden_builtin_proto (memchr)
++libc_hidden_builtin_proto (memcpy)
++libc_hidden_builtin_proto (memmove)
++libc_hidden_builtin_proto (memset)
++libc_hidden_builtin_proto (strcat)
++libc_hidden_builtin_proto (strchr)
++libc_hidden_builtin_proto (strcmp)
++libc_hidden_builtin_proto (strcpy)
++libc_hidden_builtin_proto (strcspn)
++libc_hidden_builtin_proto (strlen)
++libc_hidden_builtin_proto (strncmp)
++libc_hidden_builtin_proto (strncpy)
++libc_hidden_builtin_proto (strpbrk)
++libc_hidden_builtin_proto (strrchr)
++libc_hidden_builtin_proto (strspn)
++libc_hidden_builtin_proto (strstr)
++
+ # ifndef _ISOMAC
+ # ifndef index
+ # define index(s, c) (strchr ((s), (c)))
+--- glibc-2.3.2/include/sys/resource.h 2002-08-04 00:32:39.000000000 -0400
++++ glibc-2.3.2/include/sys/resource.h 2003-08-21 08:37:02.000000000 -0400
+@@ -7,7 +7,8 @@
+ /* Now define the internal interfaces. */
+ extern int __getrlimit (enum __rlimit_resource __resource,
+ struct rlimit *__rlimits);
+-extern int __getrusage (enum __rusage_who __who, struct rusage *__usage);
++extern int __getrusage (enum __rusage_who __who, struct rusage *__usage)
++ attribute_hidden;
+
+ extern int __setrlimit (enum __rlimit_resource __resource,
+ const struct rlimit *__rlimits);
+--- glibc-2.3.2/include/sys/time.h 2002-04-14 05:25:54.000000000 -0400
++++ glibc-2.3.2/include/sys/time.h 2003-08-21 08:37:02.000000000 -0400
+@@ -5,17 +5,21 @@
+ extern int __gettimeofday (struct timeval *__tv,
+ struct timezone *__tz);
+ extern int __gettimeofday_internal (struct timeval *__tv,
+- struct timezone *__tz) attribute_hidden;
++ struct timezone *__tz)
++ attribute_hidden;
+ extern int __settimeofday (__const struct timeval *__tv,
+- __const struct timezone *__tz);
++ __const struct timezone *__tz)
++ attribute_hidden;
+ extern int __adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta);
+ extern int __getitimer (enum __itimer_which __which,
+ struct itimerval *__value);
+ extern int __setitimer (enum __itimer_which __which,
+ __const struct itimerval *__restrict __new,
+- struct itimerval *__restrict __old);
+-extern int __utimes (__const char *__file, const struct timeval __tvp[2]);
++ struct itimerval *__restrict __old)
++ attribute_hidden;
++extern int __utimes (__const char *__file, const struct timeval __tvp[2])
++ attribute_hidden;
+
+ #ifndef NOT_IN_libc
+ # define __gettimeofday(tv, tz) INTUSE(__gettimeofday) (tv, tz)
+--- glibc-2.3.2/include/sys/wait.h 2002-12-20 02:47:59.000000000 -0500
++++ glibc-2.3.2/include/sys/wait.h 2003-08-21 08:37:02.000000000 -0400
+@@ -13,5 +13,6 @@
+ extern __pid_t __wait3 (__WAIT_STATUS __stat_loc,
+ int __options, struct rusage * __usage);
+ extern __pid_t __wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc,
+- int __options, struct rusage *__usage);
++ int __options, struct rusage *__usage)
++ attribute_hidden;
+ #endif
+--- glibc-2.3.2/include/time.h 2003-02-01 15:47:59.000000000 -0500
++++ glibc-2.3.2/include/time.h 2003-08-21 08:37:02.000000000 -0400
+@@ -82,5 +82,12 @@
+
+ /* Determine CLK_TCK value. */
+ extern int __getclktck (void);
++
++
++/* Use in the clock_* functions. Size of the field representing the
++ actual clock ID. */
++#ifndef _ISOMAC
++# define CLOCK_IDFIELD_SIZE 3
++#endif
+ #endif
+ #endif
+--- glibc-2.3.2/include/tls.h 2002-12-19 15:12:03.000000000 -0500
++++ glibc-2.3.2/include/tls.h 2003-04-24 20:05:57.000000000 -0400
+@@ -1,5 +1,8 @@
+ /* This file defines USE___THREAD to 1 or 0 to cut down on the #if mess. */
+
++#ifndef _include_tls_h
++#define _include_tls_h 1
++
+ #include_next <tls.h>
+
+ #if USE_TLS && HAVE___THREAD \
+@@ -12,3 +15,5 @@
+ # define USE___THREAD 0
+
+ #endif
++
++#endif
+--- glibc-2.3.2/include/unistd.h 2002-12-31 14:14:22.000000000 -0500
++++ glibc-2.3.2/include/unistd.h 2003-05-12 12:13:04.000000000 -0400
+@@ -140,6 +140,7 @@
+ and some functions contained in the C library ignore various
+ environment variables that normally affect them. */
+ extern int __libc_enable_secure;
++extern int __libc_enable_secure_decided;
+ #ifdef IS_IN_rtld
+ /* XXX The #ifdef should go. */
+ extern int __libc_enable_secure_internal attribute_hidden;
+--- glibc-2.3.2/inet/Makefile 2002-12-28 05:06:33.000000000 -0500
++++ glibc-2.3.2/inet/Makefile 2003-09-19 22:37:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991-1999,2000,01,02 Free Software Foundation, Inc.
++# Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -22,7 +22,7 @@
+ subdir := inet
+
+ headers := netinet/ether.h netinet/in.h netinet/in_systm.h \
+- netinet/if_ether.h \
++ netinet/if_ether.h netinet/igmp.h \
+ netinet/tcp.h netinet/ip.h $(wildcard arpa/*.h protocols/*.h) \
+ aliases.h ifaddrs.h netinet/ip6.h netinet/icmp6.h bits/in.h
+
+@@ -45,7 +45,9 @@
+ rcmd rexec ruserpass \
+ getnetgrent_r getnetgrent \
+ getaliasent_r getaliasent getaliasname getaliasname_r \
+- in6_addr getnameinfo if_index ifaddrs
++ in6_addr getnameinfo if_index ifaddrs inet6_option
++
++aux := check_pf ifreq
+
+ tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
+ tst-gethnm test-ifaddrs
+@@ -54,9 +56,33 @@
+
+ ifeq ($(have-thread-library),yes)
+
+-CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1
+-CFLAGS-gethstbynm_r.c = -DUSE_NSCD=1
+-CFLAGS-gethstbynm2_r.c = -DUSE_NSCD=1
++CFLAGS-gethstbyad_r.c = -DUSE_NSCD=1 -fexceptions
++CFLAGS-gethstbyad.c = -fexceptions
++CFLAGS-gethstbynm_r.c = -DUSE_NSCD=1 -fexceptions
++CFLAGS-gethstbynm.c = -fexceptions
++CFLAGS-gethstbynm2_r.c = -DUSE_NSCD=1 -fexceptions
++CFLAGS-gethstbynm2.c = -fexceptions
++CFLAGS-gethstent_r.c = -fexceptions
++CFLAGS-gethstent.c = -fexceptions
++CFLAGS-rcmd.c = -fexceptions
++CFLAGS-getnetbynm_r.c = -fexceptions
++CFLAGS-getnetbynm.c = -fexceptions
++CFLAGS-getnetbyad_r.c = -fexceptions
++CFLAGS-getnetbyad.c = -fexceptions
++CFLAGS-getnetent_r.c = -fexceptions
++CFLAGS-getnetent.c = -fexceptions
++CFLAGS-getaliasent_r.c = -fexceptions
++CFLAGS-getaliasent.c = -fexceptions
++CFLAGS-getrpcent_r.c = -fexceptions
++CFLAGS-getrpcent.c = -fexceptions
++CFLAGS-getservent_r.c = -fexceptions
++CFLAGS-getservent.c = -fexceptions
++CFLAGS-getprtent_r.c = -fexceptions
++CFLAGS-getprtent.c = -fexceptions
++CFLAGS-either_ntoh.c = -fexceptions
++CFLAGS-either_hton.c = -fexceptions
++CFLAGS-getnetgrent.c = -fexceptions
++CFLAGS-getnetgrent_r.c = -fexceptions
+
+ endif
+
+--- glibc-2.3.2/inet/Versions 2002-07-25 04:08:18.000000000 -0400
++++ glibc-2.3.2/inet/Versions 2003-08-21 08:37:02.000000000 -0400
+@@ -70,6 +70,10 @@
+ # g*
+ getifaddrs;
+ }
++ GLIBC_2.3.3 {
++ inet6_option_space; inet6_option_init; inet6_option_append;
++ inet6_option_alloc; inet6_option_next; inet6_option_find;
++ }
+ GLIBC_PRIVATE {
+ # functions used in other libraries
+ __internal_endnetgrent; __internal_getnetgrent_r;
+--- glibc-2.3.2/inet/inet6_option.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/inet/inet6_option.c 2003-06-14 04:43:24.000000000 -0400
+@@ -0,0 +1,343 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <assert.h>
++#include <string.h>
++#include <netinet/in.h>
++#include <netinet/ip6.h>
++#include <sys/param.h>
++
++
++static void
++internal_function
++add_pad (struct cmsghdr *cmsg, int len)
++{
++ unsigned char *p = CMSG_DATA (cmsg) + cmsg->cmsg_len - CMSG_LEN (0);
++
++ if (len == 1)
++ /* Special handling for 1, a one-byte solution. */
++ *p++ = IP6OPT_PAD1;
++ else if (len != 0)
++ {
++ /* Multibyte padding. */
++ *p++ = IP6OPT_PADN;
++ *p++ = len - 2; /* Discount the two header bytes. */
++ /* The rest is filled with zero. */
++ memset (p, '\0', len - 2);
++ p += len - 2;
++ }
++
++ /* Account for the bytes. */
++ cmsg->cmsg_len += len;
++}
++
++
++static int
++get_opt_end (const uint8_t **result, const uint8_t *startp,
++ const uint8_t *endp)
++{
++ if (startp >= endp)
++ /* Out of bounds. */
++ return -1;
++
++ if (*startp == IP6OPT_PAD1)
++ {
++ /* Just this one byte. */
++ *result = startp + 1;
++ return 0;
++ }
++
++ /* Now we know there must be at least two bytes. */
++ if (startp + 2 > endp
++ /* Now we can get the length byte. */
++ || startp + startp[1] + 2 > endp)
++ return -1;
++
++ *result = startp + startp[1] + 2;
++
++ return 0;
++}
++
++
++/* RFC 2292, 6.3.1
++
++ This function returns the number of bytes required to hold an option
++ when it is stored as ancillary data, including the cmsghdr structure
++ at the beginning, and any padding at the end (to make its size a
++ multiple of 8 bytes). The argument is the size of the structure
++ defining the option, which must include any pad bytes at the
++ beginning (the value y in the alignment term "xn + y"), the type
++ byte, the length byte, and the option data. */
++int
++inet6_option_space (nbytes)
++ int nbytes;
++{
++ /* Add room for the extension header. */
++ nbytes += sizeof (struct ip6_ext);
++
++ return CMSG_SPACE (roundup (nbytes, 8));
++}
++
++
++/* RFC 2292, 6.3.2
++
++ This function is called once per ancillary data object that will
++ contain either Hop-by-Hop or Destination options. It returns 0 on
++ success or -1 on an error. */
++int
++inet6_option_init (bp, cmsgp, type)
++ void *bp;
++ struct cmsghdr **cmsgp;
++ int type;
++{
++ /* Only Hop-by-Hop or Destination options allowed. */
++ if (type != IPV6_HOPOPTS && type != IPV6_DSTOPTS)
++ return -1;
++
++ /* BP is a pointer to the previously allocated space. */
++ struct cmsghdr *newp = (struct cmsghdr *) bp;
++
++ /* Initialize the message header.
++
++ Length: No data yet, only the cmsghdr struct. */
++ newp->cmsg_len = CMSG_LEN (0);
++ /* Originating protocol: obviously IPv6. */
++ newp->cmsg_level = IPPROTO_IPV6;
++ /* Message type. */
++ newp->cmsg_type = type;
++
++ /* Pass up the result. */
++ *cmsgp = newp;
++
++ return 0;
++}
++
++
++/* RFC 2292, 6.3.3
++
++ This function appends a Hop-by-Hop option or a Destination option
++ into an ancillary data object that has been initialized by
++ inet6_option_init(). This function returns 0 if it succeeds or -1 on
++ an error. */
++int
++inet6_option_append (cmsg, typep, multx, plusy)
++ struct cmsghdr *cmsg;
++ const uint8_t *typep;
++ int multx;
++ int plusy;
++{
++ /* typep is a pointer to the 8-bit option type. It is assumed that this
++ field is immediately followed by the 8-bit option data length field,
++ which is then followed immediately by the option data.
++
++ The option types IP6OPT_PAD1 and IP6OPT_PADN also must be handled. */
++ int len = typep[0] == IP6OPT_PAD1 ? 1 : typep[1] + 2;
++
++ /* Get the pointer to the space in the message. */
++ uint8_t *ptr = inet6_option_alloc (cmsg, len, multx, plusy);
++ if (ptr == NULL)
++ /* Some problem with the parameters. */
++ return -1;
++
++ /* Copy the content. */
++ memcpy (ptr, typep, len);
++
++ return 0;
++}
++
++
++/* RFC 2292, 6.3.4
++
++ This function appends a Hop-by-Hop option or a Destination option
++ into an ancillary data object that has been initialized by
++ inet6_option_init(). This function returns a pointer to the 8-bit
++ option type field that starts the option on success, or NULL on an
++ error. */
++uint8_t *
++inet6_option_alloc (cmsg, datalen, multx, plusy)
++ struct cmsghdr *cmsg;
++ int datalen;
++ int multx;
++ int plusy;
++{
++ /* The RFC limits the value of the alignment values. */
++ if ((multx != 1 && multx != 2 && multx != 4 && multx != 8)
++ || ! (plusy >= 0 && plusy <= 7))
++ return NULL;
++
++ /* Current data size. */
++ int dsize = cmsg->cmsg_len - CMSG_LEN (0);
++
++ /* The first two bytes of the option are for the extended header. */
++ if (__builtin_expect (dsize == 0, 0))
++ {
++ cmsg->cmsg_len += sizeof (struct ip6_ext);
++ dsize = sizeof (struct ip6_ext);
++ }
++
++ /* First add padding. */
++ add_pad (cmsg, ((multx - (dsize & (multx - 1))) & (multx - 1)) + plusy);
++
++ /* Return the pointer to the start of the option space. */
++ uint8_t *result = CMSG_DATA (cmsg) + cmsg->cmsg_len - CMSG_LEN (0);
++ cmsg->cmsg_len += datalen;
++
++ /* The extended option header length is measured in 8-byte groups.
++ To represent the current length we might have to add padding. */
++ dsize = cmsg->cmsg_len - CMSG_LEN (0);
++ add_pad (cmsg, (8 - (dsize & (8 - 1))) & (8 - 1));
++
++ /* Record the new length of the option. */
++ assert (((cmsg->cmsg_len - CMSG_LEN (0)) % 8) == 0);
++ int len8b = (cmsg->cmsg_len - CMSG_LEN (0)) / 8 - 1;
++ if (len8b >= 256)
++ /* Too long. */
++ return NULL;
++
++ ((struct ip6_ext *) CMSG_DATA (cmsg))->ip6e_len = len8b;
++
++ return result;
++}
++libc_hidden_def (inet6_option_alloc)
++
++
++/* RFC 2292, 6.3.5
++
++ This function processes the next Hop-by-Hop option or Destination
++ option in an ancillary data object. If another option remains to be
++ processed, the return value of the function is 0 and *tptrp points to
++ the 8-bit option type field (which is followed by the 8-bit option
++ data length, followed by the option data). If no more options remain
++ to be processed, the return value is -1 and *tptrp is NULL. If an
++ error occurs, the return value is -1 and *tptrp is not NULL. */
++int
++inet6_option_next (cmsg, tptrp)
++ const struct cmsghdr *cmsg;
++ uint8_t **tptrp;
++{
++ /* Make sure it is an option of the right type. */
++ if (cmsg->cmsg_level != IPPROTO_IPV6
++ || (cmsg->cmsg_type != IPV6_HOPOPTS && cmsg->cmsg_type != IPV6_DSTOPTS))
++ return -1;
++
++ /* Pointer to the extension header. We only compute the address, we
++ don't access anything yet. */
++ const struct ip6_ext *ip6e = (const struct ip6_ext *) CMSG_DATA (cmsg);
++
++ /* Make sure the message is long enough. */
++ if (cmsg->cmsg_len < CMSG_LEN (sizeof (struct ip6_ext))
++ /* Now we can access the extension header. */
++ || cmsg->cmsg_len < CMSG_LEN ((ip6e->ip6e_len + 1) * 8))
++ /* Too small. */
++ return -1;
++
++ /* Determine the address of the byte past the message. */
++ const uint8_t *endp = CMSG_DATA (cmsg) + (ip6e->ip6e_len + 1) * 8;
++
++ const uint8_t *result;
++ if (tptrp == NULL)
++ /* This is the first call, return the first option if there is one. */
++ result = (const uint8_t *) (ip6e + 1);
++ else
++ {
++ /* Make sure *TPTRP points to a beginning of a new option in
++ the message. The upper limit is checked in get_opt_end. */
++ if (*tptrp < (const uint8_t *) (ip6e + 1))
++ return -1;
++
++ /* Get the beginning of the next option. */
++ if (get_opt_end (&result, *tptrp, endp) != 0)
++ return -1;
++ }
++
++ /* We know where the next option starts. */
++ *tptrp = (uint8_t *) result;
++
++ /* Check the option is fully represented in the message. */
++ return get_opt_end (&result, result, endp);
++}
++
++
++/* RFC 2292, 6.3.6
++
++ This function is similar to the previously described
++ inet6_option_next() function, except this function lets the caller
++ specify the option type to be searched for, instead of always
++ returning the next option in the ancillary data object. cmsg is a
++ pointer to cmsghdr structure of which cmsg_level equals IPPROTO_IPV6
++ and cmsg_type equals either IPV6_HOPOPTS or IPV6_DSTOPTS. */
++int
++inet6_option_find (cmsg, tptrp, type)
++ const struct cmsghdr *cmsg;
++ uint8_t **tptrp;
++ int type;
++{
++ /* Make sure it is an option of the right type. */
++ if (cmsg->cmsg_level != IPPROTO_IPV6
++ || (cmsg->cmsg_type != IPV6_HOPOPTS && cmsg->cmsg_type != IPV6_DSTOPTS))
++ return -1;
++
++ /* Pointer to the extension header. We only compute the address, we
++ don't access anything yet. */
++ const struct ip6_ext *ip6e = (const struct ip6_ext *) CMSG_DATA (cmsg);
++
++ /* Make sure the message is long enough. */
++ if (cmsg->cmsg_len < CMSG_LEN (sizeof (struct ip6_ext))
++ /* Now we can access the extension header. */
++ || cmsg->cmsg_len < CMSG_LEN ((ip6e->ip6e_len + 1) * 8))
++ /* Too small. */
++ return -1;
++
++ /* Determine the address of the byte past the message. */
++ const uint8_t *endp = CMSG_DATA (cmsg) + (ip6e->ip6e_len + 1) * 8;
++
++ const uint8_t *next;
++ if (tptrp == NULL)
++ /* This is the first call, return the first option if there is one. */
++ next = (const uint8_t *) (ip6e + 1);
++ else
++ {
++ /* Make sure *TPTRP points to a beginning of a new option in
++ the message. The upper limit is checked in get_opt_end. */
++ if (*tptrp < (const uint8_t *) (ip6e + 1))
++ return -1;
++
++ /* Get the beginning of the next option. */
++ if (get_opt_end (&next, *tptrp, endp) != 0)
++ return -1;
++ }
++
++ /* Now search for the appropriate typed entry. */
++ const uint8_t *result;
++ do
++ {
++ result = next;
++
++ /* Get the end of this entry. */
++ if (get_opt_end (&next, result, endp) != 0)
++ return -1;
++ }
++ while (*result != type);
++
++ /* We know where the next option starts. */
++ *tptrp = (uint8_t *) result;
++
++ /* Success. */
++ return 0;
++}
+--- glibc-2.3.2/inet/inet_mkadr.c 2002-11-24 21:23:24.000000000 -0500
++++ glibc-2.3.2/inet/inet_mkadr.c 2003-09-19 22:37:01.000000000 -0400
+@@ -43,17 +43,17 @@
+ inet_makeaddr(net, host)
+ in_addr_t net, host;
+ {
+- u_int32_t addr;
++ struct in_addr in;
+
+ if (net < 128)
+- addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
++ in.s_addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
+ else if (net < 65536)
+- addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
++ in.s_addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
+ else if (net < 16777216L)
+- addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
++ in.s_addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
+ else
+- addr = net | host;
+- addr = htonl(addr);
+- return (*(struct in_addr *)&addr);
++ in.s_addr = net | host;
++ in.s_addr = htonl(in.s_addr);
++ return in;
+ }
+ libc_hidden_def (inet_makeaddr)
+--- glibc-2.3.2/inet/netinet/igmp.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/inet/netinet/igmp.h 2003-05-24 14:06:21.000000000 -0400
+@@ -0,0 +1,126 @@
++/* Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _NETINET_IGMP_H
++#define _NETINET_IGMP_H 1
++
++#include <sys/cdefs.h>
++#include <sys/types.h>
++
++#ifdef __USE_BSD
++
++#include <netinet/in.h>
++
++__BEGIN_DECLS
++
++/*
++ * Copyright (c) 1988 Stephen Deering.
++ * Copyright (c) 1992, 1993
++ * The Regents of the University of California. All rights reserved.
++ *
++ * This code is derived from software contributed to Berkeley by
++ * Stephen Deering of Stanford University.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 4. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ *
++ * @(#)igmp.h 8.1 (Berkeley) 6/10/93
++ * $FreeBSD$
++ */
++
++struct igmp {
++ u_int8_t igmp_type; /* IGMP type */
++ u_int8_t igmp_code; /* routing code */
++ u_int16_t igmp_cksum; /* checksum */
++ struct in_addr igmp_group; /* group address */
++};
++
++#define IGMP_MINLEN 8
++
++/*
++ * Message types, including version number.
++ */
++#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
++#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
++#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
++#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
++
++#define IGMP_DVMRP 0x13 /* DVMRP routing message */
++#define IGMP_PIM 0x14 /* PIM routing message */
++#define IGMP_TRACE 0x15
++
++#define IGMP_MTRACE_RESP 0x1e /* traceroute resp.(to sender)*/
++#define IGMP_MTRACE 0x1f /* mcast traceroute messages */
++
++#define IGMP_MAX_HOST_REPORT_DELAY 10 /* max delay for response to */
++ /* query (in seconds) according */
++ /* to RFC1112 */
++#define IGMP_TIMER_SCALE 10 /* denotes that the igmp code field */
++ /* specifies time in 10th of seconds*/
++
++/*
++ * States for the IGMP v2 state table.
++ */
++#define IGMP_DELAYING_MEMBER 1
++#define IGMP_IDLE_MEMBER 2
++#define IGMP_LAZY_MEMBER 3
++#define IGMP_SLEEPING_MEMBER 4
++#define IGMP_AWAKENING_MEMBER 5
++
++/*
++ * States for IGMP router version cache.
++ */
++#define IGMP_v1_ROUTER 1
++#define IGMP_v2_ROUTER 2
++
++/*
++ * The following four defininitions are for backwards compatibility.
++ * They should be removed as soon as all applications are updated to
++ * use the new constant names.
++ */
++#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
++#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
++#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
++#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
++
++__END_DECLS
++
++#endif
++
++#endif /* netinet/igmp.h */
+--- glibc-2.3.2/inet/netinet/in.h 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/inet/netinet/in.h 2003-08-21 08:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,6 +21,7 @@
+
+ #include <features.h>
+ #include <stdint.h>
++#include <sys/socket.h>
+ #include <bits/types.h>
+
+
+@@ -79,6 +80,8 @@
+ #define IPPROTO_PIM IPPROTO_PIM
+ IPPROTO_COMP = 108, /* Compression Header Protocol. */
+ #define IPPROTO_COMP IPPROTO_COMP
++ IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */
++#define IPPROTO_SCTP IPPROTO_SCTP
+ IPPROTO_RAW = 255, /* Raw IP packets. */
+ #define IPPROTO_RAW IPPROTO_RAW
+ IPPROTO_MAX
+@@ -364,6 +367,23 @@
+ unsigned int ipi6_ifindex; /* send/recv interface index */
+ };
+
++
++#ifdef __USE_GNU
++/* Hop-by-Hop and Destination Options Processing. */
++extern int inet6_option_space (int __nbytes);
++extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
++ int __type);
++extern int inet6_option_append (struct cmsghdr *__cmsg,
++ __const uint8_t *__typep, int __multx,
++ int __plusy);
++extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
++ int __multx, int __plusy);
++extern int inet6_option_next (__const struct cmsghdr *__cmsg,
++ uint8_t **__tptrp);
++extern int inet6_option_find (__const struct cmsghdr *__cmsg,
++ uint8_t **__tptrp, int __type);
++#endif /* use GNU */
++
+ __END_DECLS
+
+ #endif /* netinet/in.h */
+--- glibc-2.3.2/inet/netinet/ip6.h 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/inet/netinet/ip6.h 2003-08-21 08:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1997, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1997, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,51 +47,58 @@
+ #define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
+ #define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
+
++/* Generic extension header. */
++struct ip6_ext
++ {
++ uint8_t ip6e_nxt; /* next header. */
++ uint8_t ip6e_len; /* length in units of 8 octets. */
++ };
++
+ /* Hop-by-Hop options header. */
+ struct ip6_hbh
+ {
+- uint8_t ip6h_nxt; /* next hesder. */
+- uint8_t ip6h_len; /* length in units of 8 octets. */
++ uint8_t ip6h_nxt; /* next header. */
++ uint8_t ip6h_len; /* length in units of 8 octets. */
+ /* followed by options */
+ };
+
+ /* Destination options header */
+ struct ip6_dest
+ {
+- uint8_t ip6d_nxt; /* next header */
+- uint8_t ip6d_len; /* length in units of 8 octets */
++ uint8_t ip6d_nxt; /* next header */
++ uint8_t ip6d_len; /* length in units of 8 octets */
+ /* followed by options */
+ };
+
+ /* Routing header */
+ struct ip6_rthdr
+ {
+- uint8_t ip6r_nxt; /* next header */
+- uint8_t ip6r_len; /* length in units of 8 octets */
+- uint8_t ip6r_type; /* routing type */
+- uint8_t ip6r_segleft; /* segments left */
++ uint8_t ip6r_nxt; /* next header */
++ uint8_t ip6r_len; /* length in units of 8 octets */
++ uint8_t ip6r_type; /* routing type */
++ uint8_t ip6r_segleft; /* segments left */
+ /* followed by routing type specific data */
+ };
+
+ /* Type 0 Routing header */
+ struct ip6_rthdr0
+ {
+- uint8_t ip6r0_nxt; /* next header */
+- uint8_t ip6r0_len; /* length in units of 8 octets */
+- uint8_t ip6r0_type; /* always zero */
+- uint8_t ip6r0_segleft; /* segments left */
+- uint8_t ip6r0_reserved; /* reserved field */
+- uint8_t ip6r0_slmap[3]; /* strict/loose bit map */
++ uint8_t ip6r0_nxt; /* next header */
++ uint8_t ip6r0_len; /* length in units of 8 octets */
++ uint8_t ip6r0_type; /* always zero */
++ uint8_t ip6r0_segleft; /* segments left */
++ uint8_t ip6r0_reserved; /* reserved field */
++ uint8_t ip6r0_slmap[3]; /* strict/loose bit map */
+ struct in6_addr ip6r0_addr[1]; /* up to 23 addresses */
+ };
+
+ /* Fragment header */
+ struct ip6_frag
+ {
+- uint8_t ip6f_nxt; /* next header */
+- uint8_t ip6f_reserved; /* reserved field */
+- uint16_t ip6f_offlg; /* offset, reserved, and flag */
+- uint32_t ip6f_ident; /* identification */
++ uint8_t ip6f_nxt; /* next header */
++ uint8_t ip6f_reserved; /* reserved field */
++ uint16_t ip6f_offlg; /* offset, reserved, and flag */
++ uint32_t ip6f_ident; /* identification */
+ };
+
+ #if BYTE_ORDER == BIG_ENDIAN
+@@ -104,4 +111,8 @@
+ #define IP6F_MORE_FRAG 0x0100 /* more-fragments flag */
+ #endif
+
++/* Special option types for padding. */
++#define IP6OPT_PAD1 0
++#define IP6OPT_PADN 1
++
+ #endif /* netinet/ip6.h */
+--- glibc-2.3.2/inet/rcmd.c 2003-02-20 20:50:13.000000000 -0500
++++ glibc-2.3.2/inet/rcmd.c 2003-09-19 22:37:01.000000000 -0400
+@@ -551,7 +551,7 @@
+ cp = _("not regular file");
+ else
+ {
+- res = fopen (file, "r");
++ res = fopen (file, "rc");
+ if (!res)
+ cp = _("cannot open");
+ else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0)
+--- glibc-2.3.2/inet/ruserpass.c 2002-08-07 22:08:14.000000000 -0400
++++ glibc-2.3.2/inet/ruserpass.c 2003-09-19 22:37:01.000000000 -0400
+@@ -114,7 +114,7 @@
+ buf = alloca (strlen (hdir) + 8);
+
+ __stpcpy (__stpcpy (buf, hdir), "/.netrc");
+- cfile = fopen(buf, "r");
++ cfile = fopen(buf, "rc");
+ if (cfile == NULL) {
+ if (errno != ENOENT)
+ warn("%s", buf);
+--- glibc-2.3.2/inet/test-ifaddrs.c 2002-12-02 17:36:09.000000000 -0500
++++ glibc-2.3.2/inet/test-ifaddrs.c 2003-04-12 11:39:42.000000000 -0400
+@@ -69,6 +69,10 @@
+ #endif
+ case AF_UNSPEC:
+ return "---";
++
++ case AF_PACKET:
++ return "<packet>";
++
+ default:
+ ++failures;
+ printf ("sa_family=%d %08x\n", sa->sa_family,
+--- glibc-2.3.2/intl/Makefile 2002-12-11 19:55:10.000000000 -0500
++++ glibc-2.3.2/intl/Makefile 2003-08-21 08:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -22,8 +22,8 @@
+ headers = libintl.h
+ routines = bindtextdom dcgettext dgettext gettext \
+ dcigettext dcngettext dngettext ngettext \
+- finddomain loadmsgcat localealias textdomain \
+- l10nflist explodename plural plural-exp
++ finddomain loadmsgcat localealias textdomain
++aux = l10nflist explodename plural plural-exp hash-string
+ distribute = gmo.h gettextP.h hash-string.h loadinfo.h locale.alias \
+ plural.y plural-exp.h po2test.sed tst-gettext.sh tst-translit.sh \
+ translit.po tst-gettext2.sh tstlang1.po tstlang2.po tstcodeset.po\
+@@ -77,7 +77,7 @@
+
+ $(objpfx)msgs.h: po2test.sed ../po/de.po
+ $(make-target-directory)
+- sed -f $^ > $@
++ LC_ALL=C sed -f $^ > $@
+
+ CFLAGS-tst-gettext.c = -DTESTSTRS_H=\"$(objpfx)msgs.h\"
+ CFLAGS-tst-gettext2.c = -DOBJPFX=\"$(objpfx)\"
+--- glibc-2.3.2/intl/dcigettext.c 2002-12-11 19:55:10.000000000 -0500
++++ glibc-2.3.2/intl/dcigettext.c 2003-08-21 08:37:02.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Implementation of the internal dcigettext function.
+- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -695,7 +695,7 @@
+ {
+ /* Use the hashing table. */
+ nls_uint32 len = strlen (msgid);
+- nls_uint32 hash_val = hash_string (msgid);
++ nls_uint32 hash_val = __hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+
+--- glibc-2.3.2/intl/hash-string.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/intl/hash-string.c 2003-06-11 17:46:03.000000000 -0400
+@@ -0,0 +1,47 @@
++/* Implements a string hashing function.
++ Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include "hash-string.h"
++
++
++/* Defines the so called `hashpjw' function by P.J. Weinberger
++ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
++ 1986, 1987 Bell Telephone Laboratories, Inc.] */
++unsigned long int
++__hash_string (str_param)
++ const char *str_param;
++{
++ unsigned long int hval, g;
++ const char *str = str_param;
++
++ /* Compute the hash value for the given string. */
++ hval = 0;
++ while (*str != '\0')
++ {
++ hval <<= 4;
++ hval += (unsigned long int) *str++;
++ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
++ if (g != 0)
++ {
++ hval ^= g >> (HASHWORDBITS - 8);
++ hval ^= g;
++ }
++ }
++ return hval;
++}
+--- glibc-2.3.2/intl/hash-string.h 2002-12-11 19:55:10.000000000 -0500
++++ glibc-2.3.2/intl/hash-string.h 2003-08-21 08:37:02.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Implements a string hashing function.
+- Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,27 +34,5 @@
+ /* Defines the so called `hashpjw' function by P.J. Weinberger
+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+ 1986, 1987 Bell Telephone Laboratories, Inc.] */
+-static unsigned long int hash_string PARAMS ((const char *__str_param));
+-
+-static inline unsigned long int
+-hash_string (str_param)
+- const char *str_param;
+-{
+- unsigned long int hval, g;
+- const char *str = str_param;
+-
+- /* Compute the hash value for the given string. */
+- hval = 0;
+- while (*str != '\0')
+- {
+- hval <<= 4;
+- hval += (unsigned long int) *str++;
+- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
+- if (g != 0)
+- {
+- hval ^= g >> (HASHWORDBITS - 8);
+- hval ^= g;
+- }
+- }
+- return hval;
+-}
++extern unsigned long int __hash_string PARAMS ((const char *__str_param))
++ attribute_hidden;
+--- glibc-2.3.2/intl/loadmsgcat.c 2002-12-12 01:55:11.000000000 -0500
++++ glibc-2.3.2/intl/loadmsgcat.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Load needed message catalogs.
+- Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -87,6 +87,7 @@
+
+ #ifdef _LIBC
+ # include "../locale/localeinfo.h"
++# include <not-cancel.h>
+ #endif
+
+ /* Provide fallback values for macros that ought to be defined in <inttypes.h>.
+@@ -453,11 +454,12 @@
+ /* Rename the non ISO C functions. This is required by the standard
+ because some ISO C functions will require linking with this object
+ file and the name space must not be polluted. */
+-# define open __open
+-# define close __close
+-# define read __read
+-# define mmap __mmap
+-# define munmap __munmap
++# define open(name, flags) open_not_cancel_2 (name, flags)
++# define close(fd) close_not_cancel_no_status (fd)
++# define read(fd, buf, n) read_not_cancel (fd, buf, n)
++# define mmap(addr, len, prot, flags, fd, offset) \
++ __mmap (addr, len, prot, flags, fd, offset)
++# define munmap(addr, len) __munmap (addr, len)
+ #endif
+
+ /* For those losing systems which don't have `alloca' we have to add
+@@ -1209,7 +1211,7 @@
+ for (i = 0; i < n_sysdep_strings; i++)
+ {
+ const char *msgid = inmem_orig_sysdep_tab[i].pointer;
+- nls_uint32 hash_val = hash_string (msgid);
++ nls_uint32 hash_val = __hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+
+--- glibc-2.3.2/intl/localealias.c 2002-11-19 22:26:47.000000000 -0500
++++ glibc-2.3.2/intl/localealias.c 2003-09-19 22:37:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Handle aliases for locale names.
+- Copyright (C) 1995-1999, 2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -219,7 +219,9 @@
+ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+ #endif
+
+- fp = fopen (full_fname, "r");
++ /* Note the file is opened with cancellation in the I/O functions
++ disabled. */
++ fp = fopen (full_fname, "rc");
+ freea (full_fname);
+ if (fp == NULL)
+ return 0;
+@@ -243,11 +245,15 @@
+ char *alias;
+ char *value;
+ char *cp;
++ int complete_line;
+
+ if (FGETS (buf, sizeof buf, fp) == NULL)
+ /* EOF reached. */
+ break;
+
++ /* Determine whether the line is complete. */
++ complete_line = strchr (buf, '\n') != NULL;
++
+ cp = buf;
+ /* Ignore leading white space. */
+ while (isspace ((unsigned char) cp[0]))
+@@ -334,11 +340,13 @@
+
+ /* Possibly not the whole line fits into the buffer. Ignore
+ the rest of the line. */
+- while (strchr (buf, '\n') == NULL)
+- if (FGETS (buf, sizeof buf, fp) == NULL)
+- /* Make sure the inner loop will be left. The outer loop
+- will exit at the `feof' test. */
+- break;
++ if (! complete_line)
++ do
++ if (FGETS (buf, sizeof buf, fp) == NULL)
++ /* Make sure the inner loop will be left. The outer loop
++ will exit at the `feof' test. */
++ break;
++ while (strchr (buf, '\n') == NULL);
+ }
+
+ /* Should we test for ferror()? I think we have to silently ignore
+--- glibc-2.3.2/intl/plural.c 2002-06-18 17:12:35.000000000 -0400
++++ glibc-2.3.2/intl/plural.c 2003-05-12 12:13:04.000000000 -0400
+@@ -51,6 +51,7 @@
+
+ #include <stddef.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "plural-exp.h"
+
+ /* The main function generated by the parser is called __gettextparse,
+--- glibc-2.3.2/intl/plural.y 2002-03-11 03:32:00.000000000 -0500
++++ glibc-2.3.2/intl/plural.y 2003-05-12 12:13:04.000000000 -0400
+@@ -32,6 +32,7 @@
+
+ #include <stddef.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "plural-exp.h"
+
+ /* The main function generated by the parser is called __gettextparse,
+--- glibc-2.3.2/intl/po2test.sed 2000-01-22 00:43:54.000000000 -0500
++++ glibc-2.3.2/intl/po2test.sed 2003-04-12 11:39:42.000000000 -0400
+@@ -1,5 +1,5 @@
+ # po2test.sed - Convert Uniforum style .po file to C code for testing.
+-# Copyright (C) 2000 Free Software Foundation, Inc.
++# Copyright (C) 2000,2003 Free Software Foundation, Inc.
+ # Ulrich Drepper <drepper@cygnus.com>, 2000.
+ #
+ # This program is free software; you can redistribute it and/or modify
+@@ -16,55 +16,37 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
++
+ #
+ # We copy the original message as a comment into the .msg file. But enclose
+ # them with INPUT ( ).
+ #
+-/^msgid/ {
+- s/msgid[ ]*"\(.*\)"/INPUT ("\1")/
+-# Clear flag from last substitution.
+- tb
+-# Append the next line.
+- :b
+- N
+-# Look whether second part is a continuation line.
+- s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
+-# Yes, then branch.
+- ta
+- P
+- D
+-# Note that `D' includes a jump to the start!!
+-# We found a continuation line. But before printing insert '\'.
+- :a
+- s/\(.*\)")\(\n.*\)/\1\\\2/
+- P
+-# We cannot use the sed command `D' here
+- s/.*\n\(.*\)/\1/
+- tb
+-}
++s/^msgid[ ]*"\(.*\)"/INPUT ("\1")/
++# Clear flag from last substitution and jump if matching
++tb
++
+ #
+ # Copy the translations as well and enclose them with OUTPUT ( ).
+ #
+-/^msgstr/ {
+- s/msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/
+-# Clear flag from last substitution.
+- tb
++s/^msgstr[ ]*"\(.*\)"/OUTPUT ("\1")/
++# Clear flag from last substitution and jump if matching
++tb
++
++d
++
++:b
+ # Append the next line.
+- :b
+- N
+-# Look whether second part is a continuation line.
+- s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
+-# Yes, then branch.
+- ta
+- P
+- D
+-# Note that `D' includes a jump to the start!!
+-# We found a continuation line. But before printing insert '\'.
+- :a
+- s/\(.*\)")\(\n.*\)/\1\\\2/
+- P
++$!N
++# Check whether second part is a continuation line. If so, before printing
++# insert '\'.
++s/\(.*\)")\(\n\)"\(.*\)"/\1\\\2\3")/
++P
++ta
++# No, go to the top and process it. Note that `D' includes a jump to the start!!
++D
++# Yes, we found a continuation line.
++:a
+ # We cannot use the sed command `D' here
+- s/.*\n\(.*\)/\1/
+- tb
+-}
+-d
++s/[^\n]*\n//
++# Clear the substitution flag and do the next line.
++tb
+--- glibc-2.3.2/intl/tst-gettext2.sh 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/intl/tst-gettext2.sh 2003-09-19 22:37:02.000000000 -0400
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Test of gettext functions.
+-# Copyright (C) 2000 Free Software Foundation, Inc.
++# Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ #
+
+@@ -22,10 +22,6 @@
+ common_objpfx=$1
+ objpfx=$2
+
+-GCONV_PATH=${common_objpfx}iconvdata
+-export GCONV_PATH
+-LOCPATH=${objpfx}domaindir
+-export LOCPATH
+ LC_ALL=C
+ export LC_ALL
+
+@@ -64,6 +60,10 @@
+ msgfmt -o ${objpfx}domaindir/lang2/LC_MESSAGES/tstlang.mo \
+ tstlang2.po
+
++GCONV_PATH=${common_objpfx}iconvdata
++export GCONV_PATH
++LOCPATH=${objpfx}domaindir
++export LOCPATH
+
+ # Now run the test.
+ ${common_objpfx}elf/ld.so --library-path $common_objpfx \
+--- glibc-2.3.2/io/Makefile 2002-10-23 02:21:16.000000000 -0400
++++ glibc-2.3.2/io/Makefile 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1992-1999,2000,01,02 Free Software Foundation, Inc.
++# Copyright (C) 1992-2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -63,7 +63,20 @@
+
+ include ../Rules
+
+-CFLAGS-fts.c = -Wno-uninitialized
++CFLAGS-fcntl.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-poll.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-lockf.c = -fexceptions
++CFLAGS-statfs.c = -fexceptions
++CFLAGS-fstatfs.c = -fexceptions
++CFLAGS-statvfs.c = -fexceptions
++CFLAGS-fstatvfs.c = -fexceptions
++CFLAGS-fts.c = -Wno-uninitialized $(uses-callbacks) -fexceptions
++CFLAGS-ftw.c = $(uses-callbacks) -fexceptions
++CFLAGS-ftw64.c = $(uses-callbacks) -fexceptions
++CFLAGS-lockf.c = -fexceptions
++CFLAGS-posix_fallocate.c = -fexceptions
++CFLAGS-posix_fallocate64.c = -fexceptions
++
+ CFLAGS-test-stat.c = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
+ CFLAGS-test-lfs.c = -D_LARGEFILE64_SOURCE
+
+@@ -83,5 +96,6 @@
+ tests: $(objpfx)ftwtest.out
+
+ $(objpfx)ftwtest.out: $(objpfx)ftwtest
+- $(SHELL) -e ftwtest-sh $(common-objpfx) $(<D)/$(<F) > $@
++ $(SHELL) -e ftwtest-sh $(shell cd $(common-objpfx). && pwd)/ \
++ $(shell cd $(<D) && pwd)/$(<F) > $@
+ endif
+--- glibc-2.3.2/io/fcntl.h 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/io/fcntl.h 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1992,1994-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -56,41 +56,48 @@
+ #endif /* XPG */
+
+ /* Do the file control operation described by CMD on FD.
+- The remaining arguments are interpreted depending on CMD. */
+-extern int fcntl (int __fd, int __cmd, ...) __THROW;
++ The remaining arguments are interpreted depending on CMD.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int fcntl (int __fd, int __cmd, ...);
+
+ /* Open FILE and return a new file descriptor for it, or -1 on error.
+ OFLAG determines the type of access used. If O_CREAT is on OFLAG,
+- the third argument is taken as a `mode_t', the mode of the created file. */
++ the third argument is taken as a `mode_t', the mode of the created file.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ #ifndef __USE_FILE_OFFSET64
+-extern int open (__const char *__file, int __oflag, ...) __THROW;
++extern int open (__const char *__file, int __oflag, ...);
+ #else
+ # ifdef __REDIRECT
+-extern int __REDIRECT (open, (__const char *__file, int __oflag, ...) __THROW,
+- open64);
++extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64);
+ # else
+ # define open open64
+ # endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+-extern int open64 (__const char *__file, int __oflag, ...) __THROW;
++extern int open64 (__const char *__file, int __oflag, ...);
+ #endif
+
+-/* Create and open FILE, with mode MODE.
+- This takes an `int' MODE argument because that is
+- what `mode_t' will be widened to. */
++/* Create and open FILE, with mode MODE. This takes an `int' MODE
++ argument because that is what `mode_t' will be widened to.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ #ifndef __USE_FILE_OFFSET64
+-extern int creat (__const char *__file, __mode_t __mode) __THROW;
++extern int creat (__const char *__file, __mode_t __mode);
+ #else
+ # ifdef __REDIRECT
+-extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode) __THROW,
++extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode),
+ creat64);
+ # else
+ # define creat creat64
+ # endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+-extern int creat64 (__const char *__file, __mode_t __mode) __THROW;
++extern int creat64 (__const char *__file, __mode_t __mode);
+ #endif
+
+ #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
+@@ -109,17 +116,16 @@
+ # define F_TEST 3 /* Test a region for other processes locks. */
+
+ # ifndef __USE_FILE_OFFSET64
+-extern int lockf (int __fd, int __cmd, __off_t __len) __THROW;
++extern int lockf (int __fd, int __cmd, __off_t __len);
+ # else
+ # ifdef __REDIRECT
+-extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW,
+- lockf64);
++extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64);
+ # else
+ # define lockf lockf64
+ # endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW;
++extern int lockf64 (int __fd, int __cmd, __off64_t __len);
+ # endif
+ #endif
+
+@@ -127,38 +133,40 @@
+ /* Advice the system about the expected behaviour of the application with
+ respect to the file associated with FD. */
+ # ifndef __USE_FILE_OFFSET64
+-extern int posix_fadvise (int __fd, __off_t __offset, size_t __len,
++extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
+ int __advise) __THROW;
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (posix_fadvise, (int __fd, __off64_t __offset,
+- size_t __len, int __advise) __THROW,
++ __off64_t __len, int __advise) __THROW,
+ posix_fadvise64);
+ # else
+ # define posix_fadvise posix_fadvise64
+ # endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-extern int posix_fadvise64 (int __fd, __off64_t __offset, size_t __len,
++extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
+ int __advise) __THROW;
+ # endif
+
+
+-/* Reserve storage for the data of the file associated with FD. */
++/* Reserve storage for the data of the file associated with FD.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ # ifndef __USE_FILE_OFFSET64
+-extern int posix_fallocate (int __fd, __off_t __offset, size_t __len) __THROW;
++extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset,
+- size_t __len) __THROW,
++ __off64_t __len),
+ posix_fallocate64);
+ # else
+ # define posix_fallocate posix_fallocate64
+ # endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-extern int posix_fallocate64 (int __fd, __off64_t __offset, size_t __len)
+- __THROW;
++extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
+ # endif
+ #endif
+
+--- glibc-2.3.2/io/fts.c 2002-04-08 03:02:07.000000000 -0400
++++ glibc-2.3.2/io/fts.c 2003-03-18 16:46:07.000000000 -0500
+@@ -581,8 +581,9 @@
+ FTSENT *cur, *tail;
+ DIR *dirp;
+ void *oldaddr;
+- int cderrno, descend, len, level, maxlen, nlinks, saved_errno,
++ int cderrno, descend, len, level, nlinks, saved_errno,
+ nostat, doadjust;
++ size_t maxlen;
+ char *cp;
+
+ /* Set current node pointer. */
+--- glibc-2.3.2/io/fts.h 2001-11-05 15:57:28.000000000 -0500
++++ glibc-2.3.2/io/fts.h 2003-09-19 22:37:02.000000000 -0400
+@@ -120,11 +120,11 @@
+ } FTSENT;
+
+ __BEGIN_DECLS
+-FTSENT *fts_children (FTS *, int) __THROW;
+-int fts_close (FTS *) __THROW;
++FTSENT *fts_children (FTS *, int);
++int fts_close (FTS *);
+ FTS *fts_open (char * const *, int,
+- int (*)(const FTSENT **, const FTSENT **)) __THROW;
+-FTSENT *fts_read (FTS *) __THROW;
++ int (*)(const FTSENT **, const FTSENT **));
++FTSENT *fts_read (FTS *);
+ int fts_set (FTS *, FTSENT *, int) __THROW;
+ __END_DECLS
+
+--- glibc-2.3.2/io/ftw.c 2003-02-08 13:25:54.000000000 -0500
++++ glibc-2.3.2/io/ftw.c 2003-08-21 08:37:02.000000000 -0400
+@@ -258,6 +258,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ open_dir_stream (struct ftw_data *data, struct dir_data *dirp)
+ {
+ int result = 0;
+@@ -348,7 +349,8 @@
+ }
+
+
+-static inline int
++static int
++internal_function
+ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
+ size_t namlen)
+ {
+@@ -482,17 +484,6 @@
+ {
+ if (__fchdir (dirfd (dir.stream)) < 0)
+ {
+- if (errno == ENOSYS)
+- {
+- if (__chdir (data->dirbuf) < 0)
+- result = -1;
+- }
+- else
+- result = -1;
+- }
+-
+- if (result != 0)
+- {
+ int save_err = errno;
+ __closedir (dir.stream);
+ __set_errno (save_err);
+@@ -501,7 +492,7 @@
+ data->actdir = data->maxdir - 1;
+ data->dirstreams[data->actdir] = NULL;
+
+- return result;
++ return -1;
+ }
+ }
+
+--- glibc-2.3.2/io/ftw.h 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/io/ftw.h 2003-04-24 20:05:57.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1992,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -103,40 +103,45 @@
+ # endif
+ #endif
+
+-/* Call a function on every element in a directory tree. */
++/* Call a function on every element in a directory tree.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ #ifndef __USE_FILE_OFFSET64
+-extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors)
+- __THROW;
++extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors);
+ #else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func,
+- int __descriptors) __THROW, ftw64);
++ int __descriptors), ftw64);
+ # else
+ # define ftw ftw64
+ # endif
+ #endif
+ #ifdef __USE_LARGEFILE64
+ extern int ftw64 (__const char *__dir, __ftw64_func_t __func,
+- int __descriptors) __THROW;
++ int __descriptors);
+ #endif
+
+ #ifdef __USE_XOPEN_EXTENDED
+ /* Call a function on every element in a directory tree. FLAG allows
+- to specify the behaviour more detailed. */
++ to specify the behaviour more detailed.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ # ifndef __USE_FILE_OFFSET64
+ extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors,
+- int __flag) __THROW;
++ int __flag);
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func,
+- int __descriptors, int __flag) __THROW, nftw64);
++ int __descriptors, int __flag), nftw64);
+ # else
+ # define nftw nftw64
+ # endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+ extern int nftw64 (__const char *__dir, __nftw64_func_t __func,
+- int __descriptors, int __flag) __THROW;
++ int __descriptors, int __flag);
+ # endif
+ #endif
+
+--- glibc-2.3.2/io/test-utime.c 2002-12-12 04:24:33.000000000 -0500
++++ glibc-2.3.2/io/test-utime.c 2003-08-21 08:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1994, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1994,1996,1997,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -76,6 +76,12 @@
+ return 1;
+ }
+
++ /* The clocks used to set the modification time and that used in the
++ time() call need not be the same. They need not have the same
++ precision. Therefore we delay the following operation by one
++ second which makes sure we can compare with second precision. */
++ sleep (1);
++
+ if (utime (file, NULL))
+ {
+ perror ("utime NULL");
+@@ -83,6 +89,8 @@
+ return 1;
+ }
+
++ sleep (1);
++
+ now2 = time (NULL);
+ if (now2 == (time_t)-1)
+ {
+--- glibc-2.3.2/libio/Makefile 2002-10-25 04:02:04.000000000 -0400
++++ glibc-2.3.2/libio/Makefile 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1995,96,97,98,99,2000,01,02 Free Software Foundation, Inc.
++# Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -53,7 +53,8 @@
+ tst-mmap-setvbuf bug-ungetwc1 bug-ungetwc2 tst-atime tst-eof \
+ tst-freopen bug-rewind bug-rewind2 bug-ungetc bug-fseek \
+ tst-mmap-eofsync tst-mmap-fflushsync bug-mmap-fflush \
+- tst-mmap2-eofsync tst-mmap-offend bug-fopena+ bug-wfflush
++ tst-mmap2-eofsync tst-mmap-offend bug-fopena+ bug-wfflush \
++ bug-ungetc2 bug-ftell
+ test-srcs = test-freopen
+
+ all: # Make this the default target; it will be defined in Rules.
+@@ -75,10 +76,64 @@
+ endif
+
+ # Support for exception handling.
+-CFLAGS-genops.c = $(exceptions)
+-CFLAGS-wgenops.c = $(exceptions)
+ CFLAGS-fileops.c = $(exceptions)
++CFLAGS-fputc.c = $(exceptions)
++CFLAGS-fputwc.c = $(exceptions)
++CFLAGS-freopen64.c = $(exceptions)
++CFLAGS-freopen.c = $(exceptions)
++CFLAGS-fseek.c = $(exceptions)
++CFLAGS-fseeko64.c = $(exceptions)
++CFLAGS-fseeko.c = $(exceptions)
++CFLAGS-ftello64.c = $(exceptions)
++CFLAGS-ftello.c = $(exceptions)
++CFLAGS-fwide.c = $(exceptions)
++CFLAGS-genops.c = $(exceptions)
++CFLAGS-getc.c = $(exceptions)
++CFLAGS-getchar.c = $(exceptions)
++CFLAGS-getwc.c = $(exceptions)
++CFLAGS-getwchar.c = $(exceptions)
++CFLAGS-iofclose.c = $(exceptions)
++CFLAGS-iofflush.c = $(exceptions)
++CFLAGS-iofgetpos64.c = $(exceptions)
++CFLAGS-iofgetpos.c = $(exceptions)
++CFLAGS-iofgets.c = $(exceptions)
++CFLAGS-iofgetws.c = $(exceptions)
++CFLAGS-iofputs.c = $(exceptions)
++CFLAGS-iofputws.c = $(exceptions)
++CFLAGS-iofread.c = $(exceptions)
++CFLAGS-iofsetpos64.c = $(exceptions)
++CFLAGS-iofsetpos.c = $(exceptions)
++CFLAGS-ioftell.c = $(exceptions)
++CFLAGS-iofwrite.c = $(exceptions)
++CFLAGS-iogetdelim.c = $(exceptions)
++CFLAGS-iogetline.c = $(exceptions)
++CFLAGS-iogets.c = $(exceptions)
++CFLAGS-iogetwline.c = $(exceptions)
++CFLAGS-ioputs.c = $(exceptions)
++CFLAGS-ioseekoff.c = $(exceptions)
++CFLAGS-ioseekpos.c = $(exceptions)
++CFLAGS-iosetbuffer.c = $(exceptions)
++CFLAGS-iosetvbuf.c = $(exceptions)
++CFLAGS-ioungetc.c = $(exceptions)
++CFLAGS-ioungetwc.c = $(exceptions)
++CFLAGS-oldfileops.c = $(exceptions)
++CFLAGS-oldiofclose.c = $(exceptions)
++CFLAGS-oldiofgetpos64.c = $(exceptions)
++CFLAGS-oldiofgetpos.c = $(exceptions)
++CFLAGS-oldiofsetpos64.c = $(exceptions)
++CFLAGS-oldiofsetpos.c = $(exceptions)
++CFLAGS-peekc.c = $(exceptions)
++CFLAGS-putc.c = $(exceptions)
++CFLAGS-putchar.c = $(exceptions)
++CFLAGS-putwc.c = $(exceptions)
++CFLAGS-putwchar.c = $(exceptions)
++CFLAGS-rewind.c = $(exceptions)
+ CFLAGS-wfileops.c = $(exceptions)
++CFLAGS-wgenops.c = $(exceptions)
++CFLAGS-oldiofopen.c = $(exceptions)
++CFLAGS-iofopen.c = $(exceptions)
++CFLAGS-iofopen64.c = $(exceptions)
++CFLAGS-oldtmpfile.c = $(exceptions)
+ # XXX Do we need filedoalloc and wfiledoalloc? Others?
+
+ CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\"
+@@ -93,6 +148,7 @@
+ tst-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
+ bug-ungetwc2-ENV = LOCPATH=$(common-objpfx)localedata
+ tst-swscanf-ENV = LOCPATH=$(common-objpfx)localedata
++bug-ftell-ENV = LOCPATH=$(common-objpfx)localedata
+
+ generated = tst-fopenloc.mtrace tst-fopenloc.check
+
+--- glibc-2.3.2/libio/Versions 2000-09-01 04:39:09.000000000 -0400
++++ glibc-2.3.2/libio/Versions 2003-08-21 08:37:02.000000000 -0400
+@@ -145,4 +145,8 @@
+ # w*
+ wprintf; wscanf;
+ }
++ GLIBC_PRIVATE {
++ # Used by NPTL and librt
++ __libc_fatal;
++ }
+ }
+--- glibc-2.3.2/libio/bits/stdio.h 2001-08-02 19:39:43.000000000 -0400
++++ glibc-2.3.2/libio/bits/stdio.h 2003-05-12 12:13:04.000000000 -0400
+@@ -31,14 +31,14 @@
+ #ifdef __USE_EXTERN_INLINES
+ /* Write formatted output to stdout from argument list ARG. */
+ __STDIO_INLINE int
+-vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW
++vprintf (__const char *__restrict __fmt, _G_va_list __arg)
+ {
+ return vfprintf (stdout, __fmt, __arg);
+ }
+
+ /* Read a character from stdin. */
+ __STDIO_INLINE int
+-getchar (void) __THROW
++getchar (void)
+ {
+ return _IO_getc (stdin);
+ }
+@@ -47,14 +47,14 @@
+ # if defined __USE_POSIX || defined __USE_MISC
+ /* This is defined in POSIX.1:1996. */
+ __STDIO_INLINE int
+-getc_unlocked (FILE *__fp) __THROW
++getc_unlocked (FILE *__fp)
+ {
+ return _IO_getc_unlocked (__fp);
+ }
+
+ /* This is defined in POSIX.1:1996. */
+ __STDIO_INLINE int
+-getchar_unlocked (void) __THROW
++getchar_unlocked (void)
+ {
+ return _IO_getc_unlocked (stdin);
+ }
+@@ -63,7 +63,7 @@
+
+ /* Write a character to stdout. */
+ __STDIO_INLINE int
+-putchar (int __c) __THROW
++putchar (int __c)
+ {
+ return _IO_putc (__c, stdout);
+ }
+@@ -72,7 +72,7 @@
+ # ifdef __USE_MISC
+ /* Faster version when locking is not necessary. */
+ __STDIO_INLINE int
+-fputc_unlocked (int __c, FILE *__stream) __THROW
++fputc_unlocked (int __c, FILE *__stream)
+ {
+ return _IO_putc_unlocked (__c, __stream);
+ }
+@@ -82,14 +82,14 @@
+ # if defined __USE_POSIX || defined __USE_MISC
+ /* This is defined in POSIX.1:1996. */
+ __STDIO_INLINE int
+-putc_unlocked (int __c, FILE *__stream) __THROW
++putc_unlocked (int __c, FILE *__stream)
+ {
+ return _IO_putc_unlocked (__c, __stream);
+ }
+
+ /* This is defined in POSIX.1:1996. */
+ __STDIO_INLINE int
+-putchar_unlocked (int __c) __THROW
++putchar_unlocked (int __c)
+ {
+ return _IO_putc_unlocked (__c, stdout);
+ }
+@@ -99,7 +99,7 @@
+ # ifdef __USE_GNU
+ /* Like `getdelim', but reads up to a newline. */
+ __STDIO_INLINE _IO_ssize_t
+-getline (char **__lineptr, size_t *__n, FILE *__stream) __THROW
++getline (char **__lineptr, size_t *__n, FILE *__stream)
+ {
+ return __getdelim (__lineptr, __n, '\n', __stream);
+ }
+--- glibc-2.3.2/libio/bug-ftell.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/libio/bug-ftell.c 2003-09-08 03:04:11.000000000 -0400
+@@ -0,0 +1,57 @@
++#include <locale.h>
++#include <stdio.h>
++#include <wchar.h>
++#include <sys/types.h>
++
++
++static int
++do_test (void)
++{
++ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
++ {
++ puts ("setlocale failed");
++ return 1;
++ }
++
++ FILE *fp = tmpfile ();
++ if (fp == NULL)
++ {
++ puts ("tmpfile failed");
++ return 1;
++ }
++
++ if (fputws (L"hello", fp) == EOF)
++ {
++ puts ("fputws failed");
++ return 1;
++ }
++
++ rewind (fp);
++
++ const wchar_t *cp;
++ unsigned int cnt;
++ for (cp = L"hello", cnt = 1; *cp != L'\0'; ++cp, ++cnt)
++ {
++ wint_t wc = fgetwc (fp);
++ if (wc != (wint_t) *cp)
++ {
++ printf ("fgetwc failed: got L'%lc', expected L'%lc'\n", wc, *cp);
++ return 1;
++ }
++ off_t o = ftello (fp);
++ if (o != cnt)
++ {
++ printf ("ftello failed: got %lu, expected %u\n",
++ (unsigned long int) o, cnt);
++ return 1;
++ }
++ printf ("round %u OK\n", cnt);
++ }
++
++ fclose (fp);
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/libio/bug-ungetc2.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/libio/bug-ungetc2.c 2003-09-06 01:41:42.000000000 -0400
+@@ -0,0 +1,98 @@
++#include <stdio.h>
++#include <sys/types.h>
++
++
++static int
++check (FILE *fp, off_t o)
++{
++ int result = 0;
++ if (feof (fp))
++ {
++ puts ("feof !");
++ result = 1;
++ }
++ if (ferror (fp))
++ {
++ puts ("ferror !");
++ result = 1;
++ }
++ if (ftello (fp) != o)
++ {
++ printf ("position = %lu, not %lu\n", (unsigned long int) ftello (fp),
++ (unsigned long int) o);
++ result = 1;
++ }
++ return result;
++}
++
++
++static int
++do_test (void)
++{
++ FILE *fp = tmpfile ();
++ if (fp == NULL)
++ {
++ puts ("tmpfile failed");
++ return 1;
++ }
++ if (check (fp, 0) != 0)
++ return 1;
++
++ puts ("going to write");
++ if (fputs ("hello", fp) == EOF)
++ {
++ puts ("fputs failed");
++ return 1;
++ }
++ if (check (fp, 5) != 0)
++ return 1;
++
++ puts ("going to rewind");
++ rewind (fp);
++ if (check (fp, 0) != 0)
++ return 1;
++
++ puts ("going to read char");
++ int c = fgetc (fp);
++ if (c != 'h')
++ {
++ printf ("read %c, not %c\n", c, 'h');
++ return 1;
++ }
++ if (check (fp, 1) != 0)
++ return 1;
++
++ puts ("going to put back");
++ if (ungetc (' ', fp) == EOF)
++ {
++ puts ("ungetc failed");
++ return 1;
++ }
++ if (check (fp, 0) != 0)
++ return 1;
++
++ puts ("going to write again");
++ if (fputs ("world", fp) == EOF)
++ {
++ puts ("2nd fputs failed");
++ return 1;
++ }
++ if (check (fp, 5) != 0)
++ return 1;
++
++ puts ("going to rewind again");
++ rewind (fp);
++ if (check (fp, 0) != 0)
++ return 1;
++
++ if (fclose (fp) != 0)
++ {
++ puts ("fclose failed");
++ return 1;
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/libio/fileops.c 2003-01-08 00:18:32.000000000 -0500
++++ glibc-2.3.2/libio/fileops.c 2003-09-19 22:37:02.000000000 -0400
+@@ -47,6 +47,7 @@
+ # include "../iconv/gconv_charset.h"
+ # include "../iconv/gconv_int.h"
+ # include <shlib-compat.h>
++# include <not-cancel.h>
+ #endif
+ #ifndef errno
+ extern int errno;
+@@ -58,11 +59,11 @@
+
+ #ifdef _LIBC
+ # define open(Name, Flags, Prot) __open (Name, Flags, Prot)
+-# define close(FD) __close (FD)
+ # define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence)
+ # define read(FD, Buf, NBytes) __read (FD, Buf, NBytes)
+ # define write(FD, Buf, NBytes) __write (FD, Buf, NBytes)
+ # define _IO_do_write _IO_new_do_write /* For macro uses. */
++# define _IO_file_close_it _IO_new_file_close_it
+ #else
+ # define _IO_new_do_write _IO_do_write
+ # define _IO_new_file_attach _IO_file_attach
+@@ -214,9 +215,6 @@
+ }
+ INTDEF2(_IO_new_file_finish, _IO_file_finish)
+
+-#if defined __GNUC__ && __GNUC__ >= 2
+-__inline__
+-#endif
+ _IO_FILE *
+ _IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64)
+ _IO_FILE *fp;
+@@ -227,10 +225,12 @@
+ int is32not64;
+ {
+ int fdesc;
+-#ifdef _G_OPEN64
+- fdesc = (is32not64
+- ? open (filename, posix_mode, prot)
+- : _G_OPEN64 (filename, posix_mode, prot));
++#ifdef _LIBC
++ if (__builtin_expect (fp->_flags2 & _IO_FLAGS2_NOTCANCEL, 0))
++ fdesc = open_not_cancel (filename,
++ posix_mode | (is32not64 ? 0 : O_LARGEFILE), prot);
++ else
++ fdesc = open (filename, posix_mode | (is32not64 ? 0 : O_LARGEFILE), prot);
+ #else
+ fdesc = open (filename, posix_mode, prot);
+ #endif
+@@ -242,7 +242,7 @@
+ if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_end, _IOS_INPUT|_IOS_OUTPUT)
+ == _IO_pos_BAD && errno != ESPIPE)
+ {
+- close (fdesc);
++ close_not_cancel (fdesc);
+ return NULL;
+ }
+ INTUSE(_IO_link_in) ((struct _IO_FILE_plus *) fp);
+@@ -292,7 +292,7 @@
+ #ifdef _LIBC
+ last_recognized = mode;
+ #endif
+- for (i = 1; i < 5; ++i)
++ for (i = 1; i < 6; ++i)
+ {
+ switch (*++mode)
+ {
+@@ -319,6 +319,9 @@
+ case 'm':
+ fp->_flags2 |= _IO_FLAGS2_MMAP;
+ continue;
++ case 'c':
++ fp->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++ break;
+ default:
+ /* Ignore. */
+ continue;
+@@ -353,6 +356,7 @@
+ /* Something went wrong, we cannot load the conversion modules.
+ This means we cannot proceed since the user explicitly asked
+ for these. */
++ (void) INTUSE(_IO_file_close_it) (fp);
+ __set_errno (EINVAL);
+ return NULL;
+ }
+@@ -397,10 +401,6 @@
+
+ /* Set the mode now. */
+ result->_mode = 1;
+-
+- /* We don't need the step data structure anymore. */
+- __gconv_release_cache (fcts.towc, fcts.towc_nsteps);
+- __gconv_release_cache (fcts.tomb, fcts.tomb_nsteps);
+ }
+ }
+ #endif /* GNU libc */
+@@ -456,7 +456,7 @@
+ _IO_FILE *result;
+
+ /* Change the function table. */
+- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
++ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+
+ /* And perform the normal operation. */
+@@ -566,16 +566,13 @@
+ traditional Unix systems did this for stdout. stderr better
+ not be line buffered. So we do just that here
+ explicitly. --drepper */
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdout);
+- _IO_flockfile (_IO_stdout);
++ _IO_acquire_lock (_IO_stdout);
+
+ if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF))
+ == (_IO_LINKED | _IO_LINE_BUF))
+ _IO_OVERFLOW (_IO_stdout, EOF);
+
+- _IO_funlockfile (_IO_stdout);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdout);
+ #endif
+ }
+
+@@ -708,7 +705,7 @@
+ fp->_IO_buf_base = fp->_IO_buf_end = NULL;
+ _IO_setg (fp, NULL, NULL, NULL);
+ if (fp->_mode <= 0)
+- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
++ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
+ else
+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps;
+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+@@ -801,7 +798,7 @@
+ /* We couldn't use mmap, so revert to the vanilla file operations. */
+
+ if (fp->_mode <= 0)
+- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
++ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
+ else
+ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_wfile_jumps;
+ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+@@ -844,6 +841,15 @@
+ makes room for subsequent output.
+ Otherwise, set the read pointers to _IO_read_end (leaving that
+ alone, so it can continue to correspond to the external position). */
++ if (__builtin_expect (_IO_in_backup (f), 0))
++ {
++ size_t nbackup = f->_IO_read_end - f->_IO_read_ptr;
++ INTUSE(_IO_free_backup_area) (f);
++ f->_IO_read_base -= MIN (nbackup,
++ f->_IO_read_base - f->_IO_buf_base);
++ f->_IO_read_ptr = f->_IO_read_base;
++ }
++
+ if (f->_IO_read_ptr == f->_IO_buf_end)
+ f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base;
+ f->_IO_write_ptr = f->_IO_read_ptr;
+@@ -1207,7 +1213,9 @@
+ void *buf;
+ _IO_ssize_t size;
+ {
+- return read (fp->_fileno, buf, size);
++ return (__builtin_expect (fp->_flags2 & _IO_FLAGS2_NOTCANCEL, 0)
++ ? read_not_cancel (fp->_fileno, buf, size)
++ : read (fp->_fileno, buf, size));
+ }
+ INTDEF(_IO_file_read)
+
+@@ -1245,14 +1253,18 @@
+ /* In addition to closing the file descriptor we have to unmap the file. */
+ (void) __munmap (fp->_IO_buf_base, fp->_IO_buf_end - fp->_IO_buf_base);
+ fp->_IO_buf_base = fp->_IO_buf_end = NULL;
+- return close (fp->_fileno);
++ /* Cancelling close should be avoided if possible since it leaves an
++ unrecoverable state behind. */
++ return close_not_cancel (fp->_fileno);
+ }
+
+ int
+ _IO_file_close (fp)
+ _IO_FILE *fp;
+ {
+- return close (fp->_fileno);
++ /* Cancelling close should be avoided if possible since it leaves an
++ unrecoverable state behind. */
++ return close_not_cancel (fp->_fileno);
+ }
+ INTDEF(_IO_file_close)
+
+@@ -1265,7 +1277,10 @@
+ _IO_ssize_t to_do = n;
+ while (to_do > 0)
+ {
+- _IO_ssize_t count = write (f->_fileno, data, to_do);
++ _IO_ssize_t count = (__builtin_expect (f->_flags2
++ & _IO_FLAGS2_NOTCANCEL, 0)
++ ? write_not_cancel (f->_fileno, data, to_do)
++ : write (f->_fileno, data, to_do));
+ if (count < 0)
+ {
+ f->_flags |= _IO_ERR_SEEN;
+@@ -1548,6 +1563,7 @@
+
+ #ifdef _LIBC
+ # undef _IO_do_write
++# undef _IO_file_close_it
+ versioned_symbol (libc, _IO_new_do_write, _IO_do_write, GLIBC_2_1);
+ versioned_symbol (libc, _IO_new_file_attach, _IO_file_attach, GLIBC_2_1);
+ versioned_symbol (libc, _IO_new_file_close_it, _IO_file_close_it, GLIBC_2_1);
+@@ -1586,7 +1602,7 @@
+ JUMP_INIT(showmanyc, _IO_default_showmanyc),
+ JUMP_INIT(imbue, _IO_default_imbue)
+ };
+-INTVARDEF(_IO_file_jumps)
++libc_hidden_data_def (_IO_file_jumps)
+
+ struct _IO_jump_t _IO_file_jumps_mmap =
+ {
+--- glibc-2.3.2/libio/fputc.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/fputc.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -35,11 +35,9 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_putc_unlocked (c, fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/fputwc.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/fputwc.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -35,13 +35,11 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_fwide (fp, 1) < 0)
+ result = WEOF;
+ else
+ result = _IO_putwc_unlocked (wc, fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/freopen.c 2002-10-03 04:11:25.000000000 -0400
++++ glibc-2.3.2/libio/freopen.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,95,96,97,98,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,95,96,97,98,2000,2001,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -43,8 +44,7 @@
+ CHECK_FILE (fp, NULL);
+ if (!(fp->_flags & _IO_IS_FILEBUF))
+ return NULL;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (filename == NULL && _IO_fileno (fp) >= 0)
+ {
+ fd = __dup (_IO_fileno (fp));
+@@ -67,9 +67,9 @@
+ #endif
+ {
+ INTUSE(_IO_file_close_it) (fp);
+- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
+- if (fp->_vtable_offset == 0 && fp->_wide_data != NULL)
+- fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps);
++ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
++ if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
++ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+ result = INTUSE(_IO_file_fopen) (fp, filename, mode, 1);
+ if (result != NULL)
+ result = __fopen_maybe_mmap (result);
+@@ -83,7 +83,6 @@
+ if (filename != NULL)
+ free ((char *) filename);
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/freopen64.c 2002-10-03 04:11:32.000000000 -0400
++++ glibc-2.3.2/libio/freopen64.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002
++/* Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002, 2003
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+@@ -44,8 +44,7 @@
+ CHECK_FILE (fp, NULL);
+ if (!(fp->_flags & _IO_IS_FILEBUF))
+ return NULL;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (filename == NULL && _IO_fileno (fp) >= 0)
+ {
+ fd = __dup (_IO_fileno (fp));
+@@ -53,9 +52,9 @@
+ filename = fd_to_filename (fd);
+ }
+ INTUSE(_IO_file_close_it) (fp);
+- _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &INTUSE(_IO_file_jumps);
+- if (fp->_vtable_offset == 0 && fp->_wide_data != NULL)
+- fp->_wide_data->_wide_vtable = &INTUSE(_IO_wfile_jumps);
++ _IO_JUMPS ((struct _IO_FILE_plus *) fp) = &_IO_file_jumps;
++ if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL)
++ fp->_wide_data->_wide_vtable = &_IO_wfile_jumps;
+ result = INTUSE(_IO_file_fopen) (fp, filename, mode, 0);
+ if (result != NULL)
+ result = __fopen_maybe_mmap (result);
+@@ -68,8 +67,7 @@
+ if (filename != NULL)
+ free ((char *) filename);
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ #else
+ __set_errno (ENOSYS);
+--- glibc-2.3.2/libio/fseek.c 2002-08-04 14:19:41.000000000 -0400
++++ glibc-2.3.2/libio/fseek.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,11 +37,9 @@
+ {
+ int result;
+ CHECK_FILE (fp, -1);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_fseek (fp, offset, whence);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+ libc_hidden_def (fseek)
+--- glibc-2.3.2/libio/fseeko.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/fseeko.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,10 +36,8 @@
+ {
+ int result;
+ CHECK_FILE (fp, -1);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_fseek (fp, offset, whence);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/fseeko64.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/fseeko64.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,11 +38,9 @@
+ #ifdef _G_LSEEK64
+ int result;
+ CHECK_FILE (fp, -1);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_fseek (fp, offset, whence);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ #else
+ __set_errno (ENOSYS);
+--- glibc-2.3.2/libio/ftello.c 2002-11-05 02:37:46.000000000 -0500
++++ glibc-2.3.2/libio/ftello.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,16 +37,14 @@
+ {
+ _IO_off64_t pos;
+ CHECK_FILE (fp, -1L);
+- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ {
+ if (fp->_mode <= 0)
+ pos -= fp->_IO_save_end - fp->_IO_save_base;
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (pos == _IO_pos_BAD)
+ {
+ #ifdef EIO
+--- glibc-2.3.2/libio/ftello64.c 2002-11-05 02:37:15.000000000 -0500
++++ glibc-2.3.2/libio/ftello64.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,16 +38,14 @@
+ #ifdef _G_LSEEK64
+ _IO_off64_t pos;
+ CHECK_FILE (fp, -1L);
+- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ {
+ if (fp->_mode <= 0)
+ pos -= fp->_IO_save_end - fp->_IO_save_base;
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (pos == _IO_pos_BAD)
+ {
+ #ifdef EIO
+--- glibc-2.3.2/libio/fwide.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/fwide.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,13 +44,9 @@
+ or the orientation already has been determined. */
+ return fp->_mode;
+
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
+-
++ _IO_acquire_lock (fp);
+ result = _IO_fwide (fp, mode);
+-
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+
+ return result;
+ }
+--- glibc-2.3.2/libio/genops.c 2003-01-08 00:22:10.000000000 -0500
++++ glibc-2.3.2/libio/genops.c 2003-08-21 08:37:02.000000000 -0400
+@@ -324,7 +324,7 @@
+ _IO_FILE *fp;
+ {
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+- if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)
++ if (_IO_vtable_offset (fp) == 0 && _IO_fwide (fp, -1) != -1)
+ return EOF;
+ #endif
+
+@@ -357,7 +357,7 @@
+ _IO_FILE *fp;
+ {
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+- if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)
++ if (_IO_vtable_offset (fp) == 0 && _IO_fwide (fp, -1) != -1)
+ return EOF;
+ #endif
+
+@@ -602,12 +602,9 @@
+ INTDEF(_IO_init)
+
+ void
+-_IO_no_init (fp, flags, orientation, wd, jmp)
++_IO_old_init (fp, flags)
+ _IO_FILE *fp;
+ int flags;
+- int orientation;
+- struct _IO_wide_data *wd;
+- struct _IO_jump_t *jmp;
+ {
+ fp->_flags = _IO_MAGIC|flags;
+ fp->_flags2 = 0;
+@@ -633,6 +630,17 @@
+ if (fp->_lock != NULL)
+ _IO_lock_init (*fp->_lock);
+ #endif
++}
++
++void
++_IO_no_init (fp, flags, orientation, wd, jmp)
++ _IO_FILE *fp;
++ int flags;
++ int orientation;
++ struct _IO_wide_data *wd;
++ struct _IO_jump_t *jmp;
++{
++ _IO_old_init (fp, flags);
+ fp->_mode = orientation;
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+ if (orientation >= 0)
+@@ -826,7 +834,7 @@
+
+ if (((fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base)
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+- || (fp->_vtable_offset == 0
++ || (_IO_vtable_offset (fp) == 0
+ && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr
+ > fp->_wide_data->_IO_write_base))
+ #endif
+--- glibc-2.3.2/libio/getc.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/getc.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,11 +37,9 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_getc_unlocked (fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/getchar.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/getchar.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,12 +34,9 @@
+ getchar ()
+ {
+ int result;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdin);
+- _IO_flockfile (_IO_stdin);
++ _IO_acquire_lock (_IO_stdin);
+ result = _IO_getc_unlocked (_IO_stdin);
+- _IO_funlockfile (_IO_stdin);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdin);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/getwc.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/getwc.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,11 +38,9 @@
+ {
+ wint_t result;
+ CHECK_FILE (fp, WEOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_getwc_unlocked (fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/getwchar.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/getwchar.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,11 +34,8 @@
+ getwchar ()
+ {
+ wint_t result;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdin);
+- _IO_flockfile (_IO_stdin);
++ _IO_acquire_lock (_IO_stdin);
+ result = _IO_getwc_unlocked (_IO_stdin);
+- _IO_funlockfile (_IO_stdin);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdin);
+ return result;
+ }
+--- glibc-2.3.2/libio/iofclose.c 2002-04-02 22:00:56.000000000 -0500
++++ glibc-2.3.2/libio/iofclose.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,1995,1997-2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1995,1997-2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,7 +49,7 @@
+ /* We desperately try to help programs which are using streams in a
+ strange way and mix old and new functions. Detect old streams
+ here. */
+- if (fp->_vtable_offset != 0)
++ if (_IO_vtable_offset (fp) != 0)
+ return _IO_old_fclose (fp);
+ #endif
+
+@@ -57,15 +57,13 @@
+ if (fp->_IO_file_flags & _IO_IS_FILEBUF)
+ INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp);
+
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (fp->_IO_file_flags & _IO_IS_FILEBUF)
+ status = INTUSE(_IO_file_close_it) (fp);
+ else
+ status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
+ _IO_FINISH (fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (fp->_mode > 0)
+ {
+ #if _LIBC
+--- glibc-2.3.2/libio/iofdopen.c 2002-08-30 02:56:29.000000000 -0400
++++ glibc-2.3.2/libio/iofdopen.c 2003-04-12 11:39:42.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1994,1997-1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1994,1997,1998,1999,2000,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -152,12 +153,12 @@
+ (use_mmap && (read_write & _IO_NO_WRITES))
+ ? &_IO_wfile_jumps_maybe_mmap :
+ #endif
+- &INTUSE(_IO_wfile_jumps));
++ &_IO_wfile_jumps);
+ _IO_JUMPS (&new_f->fp) =
+ #ifdef _G_HAVE_MMAP
+ (use_mmap && (read_write & _IO_NO_WRITES)) ? &_IO_file_jumps_maybe_mmap :
+ #endif
+- &INTUSE(_IO_file_jumps);
++ &_IO_file_jumps;
+ INTUSE(_IO_file_init) (&new_f->fp);
+ #if !_IO_UNIFIED_JUMPTABLES
+ new_f->fp.vtable = NULL;
+--- glibc-2.3.2/libio/iofflush.c 2002-11-24 21:23:25.000000000 -0500
++++ glibc-2.3.2/libio/iofflush.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,11 +39,9 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_SYNC (fp) ? EOF : 0;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+ }
+--- glibc-2.3.2/libio/iofgetpos.c 2002-11-05 02:38:25.000000000 -0500
++++ glibc-2.3.2/libio/iofgetpos.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,8 +38,7 @@
+ _IO_off64_t pos;
+ int result = 0;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ {
+@@ -72,8 +71,7 @@
+ posp->__state = fp->_wide_data->_IO_state;
+ }
+
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/iofgetpos64.c 2002-11-05 02:38:14.000000000 -0500
++++ glibc-2.3.2/libio/iofgetpos64.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,17 +37,15 @@
+ {
+ #ifdef _G_LSEEK64
+ _IO_off64_t pos;
++ int result = 0;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ {
+ if (fp->_mode <= 0)
+ pos -= fp->_IO_save_end - fp->_IO_save_base;
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
+ if (pos == _IO_pos_BAD)
+ {
+ /* ANSI explicitly requires setting errno to a positive value on
+@@ -56,14 +54,18 @@
+ if (errno == 0)
+ __set_errno (EIO);
+ # endif
+- return EOF;
++ result = EOF;
+ }
+- posp->__pos = pos;
+- if (fp->_mode > 0
+- && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0)
+- /* This is a stateful encoding, safe the state. */
+- posp->__state = fp->_wide_data->_IO_state;
+- return 0;
++ else
++ {
++ posp->__pos = pos;
++ if (fp->_mode > 0
++ && (*fp->_codecvt->__codecvt_do_encoding) (fp->_codecvt) < 0)
++ /* This is a stateful encoding, safe the state. */
++ posp->__state = fp->_wide_data->_IO_state;
++ }
++ _IO_release_lock (fp);
++ return result;
+ #else
+ __set_errno (ENOSYS);
+ return EOF;
+--- glibc-2.3.2/libio/iofgets.c 2002-08-26 17:15:51.000000000 -0400
++++ glibc-2.3.2/libio/iofgets.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -40,8 +41,7 @@
+ CHECK_FILE (fp, NULL);
+ if (n <= 0)
+ return NULL;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ /* This is very tricky since a file descriptor may be in the
+ non-blocking mode. The error flag doesn't mean much in this
+ case. We return an error only when there is a new error. */
+@@ -59,8 +59,7 @@
+ result = buf;
+ }
+ fp->_IO_file_flags |= old_error;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/iofgetws.c 2001-08-08 19:09:25.000000000 -0400
++++ glibc-2.3.2/libio/iofgetws.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2001
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -40,8 +41,7 @@
+ CHECK_FILE (fp, NULL);
+ if (n <= 0)
+ return NULL;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ /* This is very tricky since a file descriptor may be in the
+ non-blocking mode. The error flag doesn't mean much in this
+ case. We return an error only when there is a new error. */
+@@ -58,7 +58,6 @@
+ result = buf;
+ }
+ fp->_IO_file_flags |= old_error;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/iofopen.c 2002-08-30 02:45:05.000000000 -0400
++++ glibc-2.3.2/libio/iofopen.c 2003-04-12 11:39:42.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1997,1998,1999,2000,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -80,11 +81,11 @@
+ new_f->fp.file._lock = &new_f->lock;
+ #endif
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+- _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &INTUSE(_IO_wfile_jumps));
++ _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps);
+ #else
+ _IO_no_init (&new_f->fp.file, 1, 0, NULL, NULL);
+ #endif
+- _IO_JUMPS (&new_f->fp) = &INTUSE(_IO_file_jumps);
++ _IO_JUMPS (&new_f->fp) = &_IO_file_jumps;
+ INTUSE(_IO_file_init) (&new_f->fp);
+ #if !_IO_UNIFIED_JUMPTABLES
+ new_f->fp.vtable = NULL;
+--- glibc-2.3.2/libio/iofputs.c 2002-08-26 17:15:51.000000000 -0400
++++ glibc-2.3.2/libio/iofputs.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1996,1997,1998,1999,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,13 +37,11 @@
+ _IO_size_t len = strlen (str);
+ int result = EOF;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
+- if ((fp->_vtable_offset != 0 || _IO_fwide (fp, -1) == -1)
++ _IO_acquire_lock (fp);
++ if ((_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
+ && _IO_sputn (fp, str, len) == len)
+ result = 1;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+ libc_hidden_def (_IO_fputs)
+--- glibc-2.3.2/libio/iofputws.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/iofputws.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1996,1997,1998,1999,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,12 +37,10 @@
+ _IO_size_t len = __wcslen (str);
+ int result = EOF;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_fwide (fp, 1) == 1
+ && _IO_sputn (fp, (char *) str, len) == len)
+ result = 1;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/iofread.c 2002-08-26 17:15:51.000000000 -0400
++++ glibc-2.3.2/libio/iofread.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1995,1997,1998,1999,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,11 +40,9 @@
+ CHECK_FILE (fp, 0);
+ if (bytes_requested == 0)
+ return 0;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ bytes_read = INTUSE(_IO_sgetn) (fp, (char *) buf, bytes_requested);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return bytes_requested == bytes_read ? count : bytes_read / size;
+ }
+ INTDEF(_IO_fread)
+--- glibc-2.3.2/libio/iofsetpos.c 2002-11-05 02:33:34.000000000 -0500
++++ glibc-2.3.2/libio/iofsetpos.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,8 +37,7 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
+ == _IO_pos_BAD)
+ {
+@@ -57,8 +57,7 @@
+ /* This is a stateful encoding, restore the state. */
+ fp->_wide_data->_IO_state = posp->__state;
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/iofsetpos64.c 2002-11-05 02:33:14.000000000 -0500
++++ glibc-2.3.2/libio/iofsetpos64.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,8 +38,7 @@
+ #ifdef _G_LSEEK64
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
+ == _IO_pos_BAD)
+ {
+@@ -58,8 +58,7 @@
+ /* This is a stateful encoding, safe the state. */
+ fp->_wide_data->_IO_state = posp->__state;
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ #else
+ __set_errno (ENOSYS);
+--- glibc-2.3.2/libio/ioftell.c 2002-11-05 02:38:39.000000000 -0500
++++ glibc-2.3.2/libio/ioftell.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1995-2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,16 +36,14 @@
+ {
+ _IO_off64_t pos;
+ CHECK_FILE (fp, -1L);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ {
+- if (fp->_vtable_offset != 0 || fp->_mode <= 0)
++ if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0)
+ pos -= fp->_IO_save_end - fp->_IO_save_base;
+ }
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (pos == _IO_pos_BAD)
+ {
+ #ifdef EIO
+--- glibc-2.3.2/libio/iofwide.c 2002-03-13 00:16:37.000000000 -0500
++++ glibc-2.3.2/libio/iofwide.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -100,20 +100,18 @@
+ /* Normalize the value. */
+ mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1);
+
+- if (mode == 0)
+- /* The caller simply wants to know about the current orientation. */
+- return fp->_mode;
+-
+ #if defined SHARED && defined _LIBC \
+ && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+ if (__builtin_expect (&_IO_stdin_used == NULL, 0)
+- && (fp == _IO_stdin || fp == _IO_stdout || fp == _IO_stderr))
++ && (fp == _IO_stdin || fp == _IO_stdout || fp == _IO_stderr))
+ /* This is for a stream in the glibc 2.0 format. */
+ return -1;
+ #endif
+
+- if (fp->_mode != 0)
+- /* The orientation already has been determined. */
++ /* The orientation already has been determined. */
++ if (fp->_mode != 0
++ /* Or the caller simply wants to know about the current orientation. */
++ || mode == 0)
+ return fp->_mode;
+
+ /* Set the orientation appropriately. */
+--- glibc-2.3.2/libio/iofwrite.c 2002-11-24 21:23:25.000000000 -0500
++++ glibc-2.3.2/libio/iofwrite.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,96,97,98,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,12 +40,10 @@
+ CHECK_FILE (fp, 0);
+ if (request == 0)
+ return 0;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
+- if (fp->_vtable_offset != 0 || _IO_fwide (fp, -1) == -1)
++ _IO_acquire_lock (fp);
++ if (_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
+ written = _IO_sputn (fp, (const char *) buf, request);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (written == request)
+ return count;
+ else
+--- glibc-2.3.2/libio/iogetdelim.c 2001-12-29 10:26:50.000000000 -0500
++++ glibc-2.3.2/libio/iogetdelim.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1994, 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1994,1996,1997,1998,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -55,8 +55,7 @@
+ return -1;
+ }
+ CHECK_FILE (fp, -1);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_ferror_unlocked (fp))
+ {
+ result = -1;
+@@ -120,8 +119,7 @@
+ result = cur_len;
+
+ unlock_return:
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/iogets.c 2002-02-25 01:46:02.000000000 -0500
++++ glibc-2.3.2/libio/iogets.c 2003-09-19 22:37:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,9 +36,7 @@
+ int ch;
+ char *retval;
+
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdin);
+- _IO_flockfile (_IO_stdin);
++ _IO_acquire_lock (_IO_stdin);
+ ch = _IO_getc_unlocked (_IO_stdin);
+ if (ch == EOF)
+ {
+@@ -67,8 +65,7 @@
+ buf[count] = 0;
+ retval = buf;
+ unlock_return:
+- _IO_funlockfile (_IO_stdin);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdin);
+ return retval;
+ }
+
+--- glibc-2.3.2/libio/iopopen.c 2003-01-08 00:16:51.000000000 -0500
++++ glibc-2.3.2/libio/iopopen.c 2003-08-21 08:37:02.000000000 -0400
+@@ -39,6 +39,7 @@
+ #ifdef _LIBC
+ # include <unistd.h>
+ # include <shlib-compat.h>
++# include <not-cancel.h>
+ #endif
+ #include <sys/types.h>
+ #include <sys/wait.h>
+@@ -74,7 +75,7 @@
+
+ #ifndef _IO_waitpid
+ #ifdef _LIBC
+-#define _IO_waitpid __waitpid
++#define _IO_waitpid waitpid_not_cancel
+ #else
+ #define _IO_waitpid waitpid
+ #endif
+@@ -89,7 +90,7 @@
+
+ #ifndef _IO_close
+ #ifdef _LIBC
+-#define _IO_close __close
++#define _IO_close close_not_cancel
+ #else
+ #define _IO_close close
+ #endif
+--- glibc-2.3.2/libio/ioputs.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/ioputs.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,17 +34,15 @@
+ {
+ int result = EOF;
+ _IO_size_t len = strlen (str);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdout);
+- _IO_flockfile (_IO_stdout);
++ _IO_acquire_lock (_IO_stdout);
+
+- if ((_IO_stdout->_vtable_offset != 0 || _IO_fwide (_IO_stdout, -1) == -1)
++ if ((_IO_vtable_offset (_IO_stdout) != 0
++ || _IO_fwide (_IO_stdout, -1) == -1)
+ && _IO_sputn (_IO_stdout, str, len) == len
+ && _IO_putc_unlocked ('\n', _IO_stdout) != EOF)
+ result = len + 1;
+
+- _IO_funlockfile (_IO_stdout);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdout);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/ioseekoff.c 2002-11-05 02:36:56.000000000 -0500
++++ glibc-2.3.2/libio/ioseekoff.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -56,7 +57,7 @@
+ {
+ if (dir == _IO_seek_cur && _IO_in_backup (fp))
+ {
+- if (fp->_vtable_offset != 0 || fp->_mode <= 0)
++ if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0)
+ offset -= fp->_IO_read_end - fp->_IO_read_ptr;
+ else
+ abort ();
+@@ -80,12 +81,8 @@
+ {
+ _IO_off64_t retval;
+
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
+-
++ _IO_acquire_lock (fp);
+ retval = _IO_seekoff_unlocked (fp, offset, dir, mode);
+-
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return retval;
+ }
+--- glibc-2.3.2/libio/ioseekpos.c 2002-11-05 02:32:43.000000000 -0500
++++ glibc-2.3.2/libio/ioseekpos.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1997,1998,1999,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -59,12 +59,8 @@
+ {
+ _IO_off64_t retval;
+
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
+-
++ _IO_acquire_lock (fp);
+ retval = _IO_seekpos_unlocked (fp, pos, mode);
+-
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return retval;
+ }
+--- glibc-2.3.2/libio/iosetbuffer.c 2002-02-24 23:46:33.000000000 -0500
++++ glibc-2.3.2/libio/iosetbuffer.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,95,96,97,98,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,17 +35,15 @@
+ _IO_size_t size;
+ {
+ CHECK_FILE (fp, );
+- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ fp->_flags &= ~_IO_LINE_BUF;
+ if (!buf)
+ size = 0;
+ (void) _IO_SETBUF (fp, buf, size);
+- if (fp->_vtable_offset == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp))
++ if (_IO_vtable_offset (fp) == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp))
+ /* We also have to set the buffer using the wide char function. */
+ (void) _IO_WSETBUF (fp, buf, size);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ }
+ INTDEF(_IO_setbuffer)
+
+--- glibc-2.3.2/libio/iosetvbuf.c 2002-06-21 20:58:29.000000000 -0400
++++ glibc-2.3.2/libio/iosetvbuf.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -40,8 +41,7 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ switch (mode)
+ {
+ case _IOFBF:
+@@ -96,8 +96,7 @@
+ result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0;
+
+ unlock_return:
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+ INTDEF(_IO_setvbuf)
+--- glibc-2.3.2/libio/ioungetc.c 2002-02-24 23:44:09.000000000 -0500
++++ glibc-2.3.2/libio/ioungetc.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,1996,1997,1998,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,11 +36,9 @@
+ CHECK_FILE (fp, EOF);
+ if (c == EOF)
+ return EOF;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = INTUSE(_IO_sputbackc) (fp, (unsigned char) c);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/ioungetwc.c 2002-02-25 01:54:37.000000000 -0500
++++ glibc-2.3.2/libio/ioungetwc.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993, 1996-1999, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -35,14 +36,12 @@
+ {
+ int result;
+ CHECK_FILE (fp, WEOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ _IO_fwide (fp, 1);
+ if (c == WEOF)
+ result = WEOF;
+ else
+ result = INTUSE(_IO_sputbackwc) (fp, c);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/iovdprintf.c 2002-08-02 17:46:58.000000000 -0400
++++ glibc-2.3.2/libio/iovdprintf.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1997-2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,8 +41,8 @@
+ #ifdef _IO_MTSAFE_IO
+ tmpfil.file._lock = NULL;
+ #endif
+- _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &INTUSE(_IO_wfile_jumps));
+- _IO_JUMPS (&tmpfil) = &INTUSE(_IO_file_jumps);
++ _IO_no_init (&tmpfil.file, _IO_USER_LOCK, 0, &wd, &_IO_wfile_jumps);
++ _IO_JUMPS (&tmpfil) = &_IO_file_jumps;
+ INTUSE(_IO_file_init) (&tmpfil);
+ #if !_IO_UNIFIED_JUMPTABLES
+ tmpfil.vtable = NULL;
+--- glibc-2.3.2/libio/iovsprintf.c 2002-02-25 02:01:40.000000000 -0500
++++ glibc-2.3.2/libio/iovsprintf.c 2003-06-03 09:36:22.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -42,7 +42,7 @@
+ #endif
+ _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+- INTUSE(_IO_str_init_static) (&sf, string, -1, string);
++ _IO_str_init_static_internal (&sf, string, -1, string);
+ ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf._sbf, format, args);
+ _IO_putc_unlocked ('\0', (_IO_FILE *) &sf._sbf);
+ return ret;
+--- glibc-2.3.2/libio/iovsscanf.c 2002-02-25 01:59:37.000000000 -0500
++++ glibc-2.3.2/libio/iovsscanf.c 2003-06-03 09:36:22.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,7 +41,7 @@
+ #endif
+ _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+- INTUSE(_IO_str_init_static) (&sf, (char*)string, 0, NULL);
++ _IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
+ ret = INTUSE(_IO_vfscanf) ((_IO_FILE *) &sf._sbf, format, args, NULL);
+ return ret;
+ }
+--- glibc-2.3.2/libio/libio.h 2002-08-30 02:45:05.000000000 -0400
++++ glibc-2.3.2/libio/libio.h 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1995, 1997-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1995, 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Per Bothner <bothner@cygnus.com>.
+
+@@ -138,6 +138,7 @@
+ #define _IO_USER_LOCK 0x8000
+
+ #define _IO_FLAGS2_MMAP 1
++#define _IO_FLAGS2_NOTCANCEL 2
+
+ /* These are "formatting flags" matching the iostream fmtflags enum values. */
+ #define _IO_SKIPWS 01
+@@ -502,7 +503,7 @@
+ __result = (__fp)->_mode; \
+ } \
+ else if (__builtin_constant_p (__mode) && (__mode) == 0) \
+- __result = (__fp)->_mode; \
++ __result = _IO_fwide_maybe_incompatible ? -1 : (__fp)->_mode; \
+ else \
+ __result = _IO_fwide (__fp, __result); \
+ __result; })
+--- glibc-2.3.2/libio/libioP.h 2003-01-08 00:18:05.000000000 -0500
++++ glibc-2.3.2/libio/libioP.h 2003-09-19 22:37:03.000000000 -0400
+@@ -110,8 +110,10 @@
+ # define _IO_JUMPS_FUNC(THIS) \
+ (*(struct _IO_jump_t **) ((void *) &_IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) \
+ + (THIS)->_vtable_offset))
++# define _IO_vtable_offset(THIS) (THIS)->_vtable_offset
+ #else
+ # define _IO_JUMPS_FUNC(THIS) _IO_JUMPS ((struct _IO_FILE_plus *) (THIS))
++# define _IO_vtable_offset(THIS) 0
+ #endif
+ #define _IO_WIDE_JUMPS_FUNC(THIS) _IO_WIDE_JUMPS(THIS)
+ #ifdef _G_USING_THUNKS
+@@ -450,9 +452,11 @@
+ extern void _IO_default_imbue __P ((_IO_FILE *, void *));
+
+ extern struct _IO_jump_t _IO_file_jumps;
++libc_hidden_proto (_IO_file_jumps)
+ extern struct _IO_jump_t _IO_file_jumps_mmap attribute_hidden;
+ extern struct _IO_jump_t _IO_file_jumps_maybe_mmap attribute_hidden;
+-extern struct _IO_jump_t _IO_wfile_jumps attribute_hidden;
++extern struct _IO_jump_t _IO_wfile_jumps;
++libc_hidden_proto (_IO_wfile_jumps)
+ extern struct _IO_jump_t _IO_wfile_jumps_mmap attribute_hidden;
+ extern struct _IO_jump_t _IO_wfile_jumps_maybe_mmap attribute_hidden;
+ extern struct _IO_jump_t _IO_old_file_jumps attribute_hidden;
+@@ -477,6 +481,7 @@
+ extern int _IO_old_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *));
+ extern int _IO_new_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
+ extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
++extern void _IO_old_init __P ((_IO_FILE *fp, int flags));
+
+
+ #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+@@ -616,8 +621,7 @@
+ extern _IO_ssize_t _IO_str_count __P ((_IO_FILE *));
+
+ /* And the wide character versions. */
+-extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, int, wchar_t *));
+-extern void _IO_wstr_init_readonly __P ((_IO_FILE *, const char *, int));
++extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, _IO_size_t, wchar_t *));
+ extern _IO_ssize_t _IO_wstr_count __P ((_IO_FILE *));
+ extern _IO_wint_t _IO_wstr_overflow __P ((_IO_FILE *, _IO_wint_t));
+ extern _IO_wint_t _IO_wstr_underflow __P ((_IO_FILE *));
+@@ -707,7 +711,7 @@
+ extern _IO_off64_t _IO_str_seekoff_internal __P ((_IO_FILE *, _IO_off64_t,
+ int, int));
+ extern void _IO_str_init_static_internal __P ((struct _IO_strfile_ *, char *,
+- int, char *));
++ _IO_size_t, char *));
+
+ extern struct _IO_jump_t _IO_file_jumps_internal attribute_hidden;
+ extern struct _IO_jump_t _IO_wfile_jumps_internal attribute_hidden;
+@@ -966,3 +970,12 @@
+ #else
+ # define CHECK_FILE(FILE, RET) COERCE_FILE (FILE)
+ #endif
++
++static inline void
++__attribute__ ((__always_inline__))
++_IO_acquire_lock_fct (_IO_FILE **p)
++{
++ _IO_FILE *fp = *p;
++ if ((fp->_flags & _IO_USER_LOCK) == 0)
++ _IO_funlockfile (fp);
++}
+--- glibc-2.3.2/libio/memstream.c 2002-08-10 14:08:29.000000000 -0400
++++ glibc-2.3.2/libio/memstream.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995,1996,1997,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995-1997,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,8 +32,6 @@
+
+ static int _IO_mem_sync __P ((_IO_FILE* fp));
+ static void _IO_mem_finish __P ((_IO_FILE* fp, int));
+-static int _IO_wmem_sync __P ((_IO_FILE* fp));
+-static void _IO_wmem_finish __P ((_IO_FILE* fp, int));
+
+
+ static struct _IO_jump_t _IO_mem_jumps =
+@@ -60,30 +58,6 @@
+ JUMP_INIT(imbue, _IO_default_imbue)
+ };
+
+-static struct _IO_jump_t _IO_wmem_jumps =
+-{
+- JUMP_INIT_DUMMY,
+- JUMP_INIT (finish, (_IO_finish_t) _IO_wmem_finish),
+- JUMP_INIT (overflow, (_IO_overflow_t) _IO_wstr_overflow),
+- JUMP_INIT (underflow, (_IO_underflow_t) _IO_wstr_underflow),
+- JUMP_INIT (uflow, (_IO_underflow_t) INTUSE(_IO_wdefault_uflow)),
+- JUMP_INIT (pbackfail, (_IO_pbackfail_t) _IO_wstr_pbackfail),
+- JUMP_INIT (xsputn, (_IO_xsputn_t) INTUSE(_IO_wdefault_xsputn)),
+- JUMP_INIT (xsgetn, (_IO_xsgetn_t) INTUSE(_IO_wdefault_xsgetn)),
+- JUMP_INIT (seekoff, _IO_wstr_seekoff),
+- JUMP_INIT (seekpos, _IO_default_seekpos),
+- JUMP_INIT (setbuf, _IO_default_setbuf),
+- JUMP_INIT (sync, (_IO_sync_t) _IO_wmem_sync),
+- JUMP_INIT (doallocate, INTUSE(_IO_wdefault_doallocate)),
+- JUMP_INIT (read, _IO_default_read),
+- JUMP_INIT (write, _IO_default_write),
+- JUMP_INIT (seek, _IO_default_seek),
+- JUMP_INIT (close, _IO_default_close),
+- JUMP_INIT (stat, _IO_default_stat),
+- JUMP_INIT(showmanyc, _IO_default_showmanyc),
+- JUMP_INIT(imbue, _IO_default_imbue)
+-};
+-
+ /* Open a stream that writes into a malloc'd buffer that is expanded as
+ necessary. *BUFLOC and *SIZELOC are updated with the buffer's location
+ and the number of characters written on fflush or fclose. */
+@@ -112,9 +86,9 @@
+ buf = malloc (_IO_BUFSIZ);
+ if (buf == NULL)
+ return NULL;
+- _IO_no_init (&new_f->fp._sf._sbf._f, 0, 0, &new_f->wd, &_IO_wmem_jumps);
++ _IO_init (&new_f->fp._sf._sbf._f, 0);
+ _IO_JUMPS ((struct _IO_FILE_plus *) &new_f->fp._sf._sbf) = &_IO_mem_jumps;
+- INTUSE(_IO_str_init_static) (&new_f->fp._sf, buf, _IO_BUFSIZ, buf);
++ _IO_str_init_static_internal (&new_f->fp._sf, buf, _IO_BUFSIZ, buf);
+ new_f->fp._sf._sbf._f._flags &= ~_IO_USER_BUF;
+ new_f->fp._sf._s._allocate_buffer = (_IO_alloc_type) malloc;
+ new_f->fp._sf._s._free_buffer = (_IO_free_type) free;
+@@ -172,55 +146,3 @@
+
+ INTUSE(_IO_default_finish) (fp, 0);
+ }
+-
+-
+-static int
+-_IO_wmem_sync (fp)
+- _IO_FILE* fp;
+-{
+- struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp;
+- int res;
+-
+- res = _IO_default_sync (fp);
+- if (res < 0)
+- return res;
+-
+- if (fp->_wide_data->_IO_write_ptr == fp->_wide_data->_IO_write_end)
+- {
+- _IO_wstr_overflow (fp, L'\0');
+- --fp->_wide_data->_IO_write_ptr;
+- }
+- else
+- *fp->_wide_data->_IO_write_ptr = '\0';
+-
+- *mp->bufloc = (char *) fp->_wide_data->_IO_write_base;
+- *mp->sizeloc = (fp->_wide_data->_IO_write_ptr
+- - fp->_wide_data->_IO_write_base);
+-
+- return 0;
+-}
+-
+-
+-static void
+-_IO_wmem_finish (fp, dummy)
+- _IO_FILE* fp;
+- int dummy;
+-{
+- struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp;
+-
+- *mp->bufloc = (char *) realloc (fp->_wide_data->_IO_write_base,
+- (fp->_wide_data->_IO_write_ptr
+- - fp->_wide_data->_IO_write_base + 1)
+- * sizeof (wchar_t));
+- if (*mp->bufloc != NULL)
+- {
+- ((wchar_t *) (*mp->bufloc))[fp->_wide_data->_IO_write_ptr
+- - fp->_wide_data->_IO_write_base] = '\0';
+- *mp->sizeloc = (fp->_wide_data->_IO_write_ptr
+- - fp->_wide_data->_IO_write_base);
+- }
+-
+- fp->_wide_data->_IO_buf_base = NULL;
+-
+- INTUSE(_IO_default_finish) (fp, 0);
+-}
+--- glibc-2.3.2/libio/obprintf.c 2002-02-25 02:01:53.000000000 -0500
++++ glibc-2.3.2/libio/obprintf.c 2003-06-03 09:36:22.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Print output of stream to given obstack.
+- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1999-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -153,9 +153,9 @@
+ assert (size != 0);
+ }
+
+- INTUSE(_IO_str_init_static) ((struct _IO_strfile_ *) &new_f.ofile,
+- obstack_base (obstack),
+- size, obstack_next_free (obstack));
++ _IO_str_init_static_internal ((struct _IO_strfile_ *) &new_f.ofile,
++ obstack_base (obstack),
++ size, obstack_next_free (obstack));
+ /* Now allocate the rest of the current chunk. */
+ assert (size == (new_f.ofile.file.file._IO_write_end
+ - new_f.ofile.file.file._IO_write_base));
+--- glibc-2.3.2/libio/oldfileops.c 2002-09-24 01:11:47.000000000 -0400
++++ glibc-2.3.2/libio/oldfileops.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,95,97,98,99,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Per Bothner <bothner@cygnus.com>.
+
+@@ -128,6 +128,16 @@
+ fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE)
+ - (int) sizeof (struct _IO_FILE_complete));
+ fp->file._fileno = -1;
++
++#if defined SHARED && defined _LIBC
++ if (__builtin_expect (&_IO_stdin_used != NULL, 1)
++ || (fp != (struct _IO_FILE_plus *) _IO_stdin
++ && fp != (struct _IO_FILE_plus *) _IO_stdout
++ && fp != (struct _IO_FILE_plus *) _IO_stderr))
++ /* The object is dynamically allocated and large enough. Initialize
++ the _mode element as well. */
++ ((struct _IO_FILE_complete *) fp)->_mode = -1;
++#endif
+ }
+
+ int
+--- glibc-2.3.2/libio/oldiofclose.c 2002-02-25 02:30:49.000000000 -0500
++++ glibc-2.3.2/libio/oldiofclose.c 2003-09-19 22:37:03.000000000 -0400
+@@ -52,15 +52,13 @@
+ if (fp->_IO_file_flags & _IO_IS_FILEBUF)
+ INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp);
+
+- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (fp->_IO_file_flags & _IO_IS_FILEBUF)
+ status = _IO_old_file_close_it (fp);
+ else
+ status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
+ _IO_FINISH (fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (_IO_have_backup (fp))
+ INTUSE(_IO_free_backup_area) (fp);
+ if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
+--- glibc-2.3.2/libio/oldiofdopen.c 2002-04-09 03:30:11.000000000 -0400
++++ glibc-2.3.2/libio/oldiofdopen.c 2003-05-12 12:13:04.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,94,97,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,94,97,99,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -114,7 +114,7 @@
+ #ifdef _IO_MTSAFE_IO
+ new_f->fp.file._lock = &new_f->lock;
+ #endif
+- INTUSE(_IO_init) (&new_f->fp.file, 0);
++ _IO_old_init (&new_f->fp.file, 0);
+ _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
+ _IO_old_file_init (&new_f->fp);
+ #if !_IO_UNIFIED_JUMPTABLES
+--- glibc-2.3.2/libio/oldiofgetpos.c 2002-11-05 02:41:48.000000000 -0500
++++ glibc-2.3.2/libio/oldiofgetpos.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,13 +39,11 @@
+ {
+ _IO_off_t pos;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ pos -= fp->_IO_save_end - fp->_IO_save_base;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (pos == _IO_pos_BAD)
+ {
+ /* ANSI explicitly requires setting errno to a positive value on
+--- glibc-2.3.2/libio/oldiofgetpos64.c 2002-11-05 02:41:38.000000000 -0500
++++ glibc-2.3.2/libio/oldiofgetpos64.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,13 +40,11 @@
+ #ifdef _G_LSEEK64
+ _IO_off64_t pos;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
+ if (_IO_in_backup (fp))
+ pos -= fp->_IO_save_end - fp->_IO_save_base;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ if (pos == _IO_pos_BAD)
+ {
+ /* ANSI explicitly requires setting errno to a positive value on
+--- glibc-2.3.2/libio/oldiofopen.c 2002-02-25 02:31:13.000000000 -0500
++++ glibc-2.3.2/libio/oldiofopen.c 2003-05-12 12:13:04.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1997,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -53,7 +53,7 @@
+ #ifdef _IO_MTSAFE_IO
+ new_f->fp.file._lock = &new_f->lock;
+ #endif
+- INTUSE(_IO_init) (&new_f->fp.file, 0);
++ _IO_old_init (&new_f->fp.file, 0);
+ _IO_JUMPS (&new_f->fp) = &_IO_old_file_jumps;
+ _IO_old_file_init (&new_f->fp);
+ #if !_IO_UNIFIED_JUMPTABLES
+--- glibc-2.3.2/libio/oldiofsetpos.c 2002-11-05 02:34:01.000000000 -0500
++++ glibc-2.3.2/libio/oldiofsetpos.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,8 +38,7 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
+ == _IO_pos_BAD)
+ {
+@@ -52,8 +52,7 @@
+ }
+ else
+ result = 0;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/oldiofsetpos64.c 2002-11-05 02:34:11.000000000 -0500
++++ glibc-2.3.2/libio/oldiofsetpos64.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,8 +40,7 @@
+ #ifdef _G_LSEEK64
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
+ == _IO_pos_BAD)
+ {
+@@ -54,8 +54,7 @@
+ }
+ else
+ result = 0;
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ #else
+ __set_errno (ENOSYS);
+--- glibc-2.3.2/libio/oldtmpfile.c 2002-04-08 03:02:09.000000000 -0400
++++ glibc-2.3.2/libio/oldtmpfile.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1993, 1996-1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1993, 1996-2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -43,7 +43,7 @@
+
+ /* Note that this relies on the Unix semantics that
+ a file is not really removed until it is closed. */
+- (void) remove (buf);
++ (void) __unlink (buf);
+
+ if ((f = _IO_old_fdopen (fd, "w+b")) == NULL)
+ __close (fd);
+--- glibc-2.3.2/libio/peekc.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/peekc.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,10 +36,8 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_peekc_unlocked (fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+--- glibc-2.3.2/libio/putc.c 2002-02-25 02:22:50.000000000 -0500
++++ glibc-2.3.2/libio/putc.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,11 +29,9 @@
+ {
+ int result;
+ CHECK_FILE (fp, EOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_putc_unlocked (c, fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+ INTDEF(_IO_putc)
+--- glibc-2.3.2/libio/putchar.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/putchar.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,12 +26,9 @@
+ int c;
+ {
+ int result;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdout);
+- _IO_flockfile (_IO_stdout);
++ _IO_acquire_lock (_IO_stdout);
+ result = _IO_putc_unlocked (c, _IO_stdout);
+- _IO_funlockfile (_IO_stdout);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdout);
+ return result;
+ }
+
+--- glibc-2.3.2/libio/putwc.c 2002-08-10 14:08:29.000000000 -0400
++++ glibc-2.3.2/libio/putwc.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,95,96,97,98,99,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 1999, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,11 +27,9 @@
+ {
+ wint_t result;
+ CHECK_FILE (fp, WEOF);
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ result = _IO_putwc_unlocked (wc, fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ return result;
+ }
+ libc_hidden_def (putwc)
+--- glibc-2.3.2/libio/putwchar.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/putwchar.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
++/* Copyright (C) 1991,95,96,97,98,99,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,11 +24,8 @@
+ wchar_t wc;
+ {
+ wint_t result;
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdout);
+- _IO_flockfile (_IO_stdout);
++ _IO_acquire_lock (_IO_stdout);
+ result = _IO_putwc_unlocked (wc, _IO_stdout);
+- _IO_funlockfile (_IO_stdout);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdout);
+ return result;
+ }
+--- glibc-2.3.2/libio/rewind.c 2002-08-10 14:08:29.000000000 -0400
++++ glibc-2.3.2/libio/rewind.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,96,97,98,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,96,97,98,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,11 +33,9 @@
+ _IO_FILE *fp;
+ {
+ CHECK_FILE (fp, );
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+- _IO_flockfile (fp);
++ _IO_acquire_lock (fp);
+ _IO_rewind (fp);
+ _IO_clearerr (fp);
+- _IO_funlockfile (fp);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (fp);
+ }
+ libc_hidden_def (rewind)
+--- glibc-2.3.2/libio/stdfiles.c 2002-03-12 20:05:41.000000000 -0500
++++ glibc-2.3.2/libio/stdfiles.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993-1997,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993-1997,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,30 +39,30 @@
+ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
+ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
+ static struct _IO_wide_data _IO_wide_data_##FD \
+- = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \
++ = { ._wide_vtable = &_IO_wfile_jumps }; \
+ struct _IO_FILE_plus NAME \
+ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
+- &INTUSE(_IO_file_jumps)};
++ &_IO_file_jumps};
+ # else
+ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
+ static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
+ struct _IO_FILE_plus NAME \
+ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
+- &INTUSE(_IO_file_jumps)};
++ &_IO_file_jumps};
+ # endif
+ #else
+ # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
+ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
+ static struct _IO_wide_data _IO_wide_data_##FD \
+- = { ._wide_vtable = &INTUSE(_IO_wfile_jumps) }; \
++ = { ._wide_vtable = &_IO_wfile_jumps }; \
+ struct _IO_FILE_plus NAME \
+ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
+- &INTUSE(_IO_file_jumps)};
++ &_IO_file_jumps};
+ # else
+ # define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
+ struct _IO_FILE_plus NAME \
+ = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
+- &INTUSE(_IO_file_jumps)};
++ &_IO_file_jumps};
+ # endif
+ #endif
+
+--- glibc-2.3.2/libio/stdio.h 2002-08-27 21:55:38.000000000 -0400
++++ glibc-2.3.2/libio/stdio.h 2003-09-19 22:37:03.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Define ISO C stdio on top of C++ iostreams.
+- Copyright (C) 1991,1994-1999,2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1991,1994-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -156,25 +156,28 @@
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Create a temporary file and open it read/write. */
++/* Create a temporary file and open it read/write.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ #ifndef __USE_FILE_OFFSET64
+-extern FILE *tmpfile (void) __THROW;
++extern FILE *tmpfile (void);
+ #else
+ # ifdef __REDIRECT
+-extern FILE *__REDIRECT (tmpfile, (void) __THROW, tmpfile64);
++extern FILE *__REDIRECT (tmpfile, (void), tmpfile64);
+ # else
+ # define tmpfile tmpfile64
+ # endif
+ #endif
+
++#ifdef __USE_LARGEFILE64
++extern FILE *tmpfile64 (void);
++#endif
++
+ /* Generate a temporary filename. */
+ extern char *tmpnam (char *__s) __THROW;
+ __END_NAMESPACE_STD
+
+-#ifdef __USE_LARGEFILE64
+-extern FILE *tmpfile64 (void) __THROW;
+-#endif
+-
+ #ifdef __USE_MISC
+ /* This is the reentrant variant of `tmpnam'. The only difference is
+ that it does not allow S to be NULL. */
+@@ -196,41 +199,61 @@
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Close STREAM. */
+-extern int fclose (FILE *__stream) __THROW;
+-/* Flush STREAM, or all streams if STREAM is NULL. */
+-extern int fflush (FILE *__stream) __THROW;
++/* Close STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fclose (FILE *__stream);
++/* Flush STREAM, or all streams if STREAM is NULL.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fflush (FILE *__stream);
+ __END_NAMESPACE_STD
+
+ #ifdef __USE_MISC
+-/* Faster versions when locking is not required. */
+-extern int fflush_unlocked (FILE *__stream) __THROW;
++/* Faster versions when locking is not required.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int fflush_unlocked (FILE *__stream);
+ #endif
+
+ #ifdef __USE_GNU
+-/* Close all streams. */
+-extern int fcloseall (void) __THROW;
++/* Close all streams.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int fcloseall (void);
+ #endif
+
+
+ __BEGIN_NAMESPACE_STD
+ #ifndef __USE_FILE_OFFSET64
+-/* Open a file and create a new stream for it. */
++/* Open a file and create a new stream for it.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern FILE *fopen (__const char *__restrict __filename,
+- __const char *__restrict __modes) __THROW;
+-/* Open a file, replacing an existing stream with it. */
++ __const char *__restrict __modes);
++/* Open a file, replacing an existing stream with it.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
+ #else
+ # ifdef __REDIRECT
+ extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
+- __const char *__restrict __modes) __THROW,
+- fopen64);
++ __const char *__restrict __modes), fopen64);
+ extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+- FILE *__restrict __stream) __THROW,
+- freopen64);
++ FILE *__restrict __stream), freopen64);
+ # else
+ # define fopen fopen64
+ # define freopen freopen64
+@@ -239,10 +262,10 @@
+ __END_NAMESPACE_STD
+ #ifdef __USE_LARGEFILE64
+ extern FILE *fopen64 (__const char *__restrict __filename,
+- __const char *__restrict __modes) __THROW;
++ __const char *__restrict __modes);
+ extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
+ #endif
+
+ #ifdef __USE_POSIX
+@@ -291,21 +314,32 @@
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Write formatted output to STREAM. */
++/* Write formatted output to STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int fprintf (FILE *__restrict __stream,
+- __const char *__restrict __format, ...) __THROW;
+-/* Write formatted output to stdout. */
+-extern int printf (__const char *__restrict __format, ...) __THROW;
++ __const char *__restrict __format, ...);
++/* Write formatted output to stdout.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int printf (__const char *__restrict __format, ...);
+ /* Write formatted output to S. */
+ extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __THROW;
+
+-/* Write formatted output to S from argument list ARG. */
++/* Write formatted output to S from argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+- _G_va_list __arg) __THROW;
+-/* Write formatted output to stdout from argument list ARG. */
+-extern int vprintf (__const char *__restrict __format, _G_va_list __arg)
+- __THROW;
++ _G_va_list __arg);
++/* Write formatted output to stdout from argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int vprintf (__const char *__restrict __format, _G_va_list __arg);
+ /* Write formatted output to S from argument list ARG. */
+ extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ _G_va_list __arg) __THROW;
+@@ -337,21 +371,32 @@
+ __const char *__restrict __fmt, ...)
+ __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
+
+-/* Write formatted output to a file descriptor. */
++/* Write formatted output to a file descriptor.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ _G_va_list __arg)
+- __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
++ __attribute__ ((__format__ (__printf__, 2, 0)));
+ extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+- __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
++ __attribute__ ((__format__ (__printf__, 2, 3)));
+ #endif
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Read formatted input from STREAM. */
++/* Read formatted input from STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int fscanf (FILE *__restrict __stream,
+- __const char *__restrict __format, ...) __THROW;
+-/* Read formatted input from stdin. */
+-extern int scanf (__const char *__restrict __format, ...) __THROW;
++ __const char *__restrict __format, ...);
++/* Read formatted input from stdin.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int scanf (__const char *__restrict __format, ...);
+ /* Read formatted input from S. */
+ extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __THROW;
+@@ -359,14 +404,20 @@
+
+ #ifdef __USE_ISOC99
+ __BEGIN_NAMESPACE_C99
+-/* Read formatted input from S into argument list ARG. */
++/* Read formatted input from S into argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ _G_va_list __arg)
+- __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
++ __attribute__ ((__format__ (__scanf__, 2, 0)));
++
++/* Read formatted input from stdin into argument list ARG.
+
+-/* Read formatted input from stdin into argument list ARG. */
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vscanf (__const char *__restrict __format, _G_va_list __arg)
+- __THROW __attribute__ ((__format__ (__scanf__, 1, 0)));
++ __attribute__ ((__format__ (__scanf__, 1, 0)));
+
+ /* Read formatted input from S into argument list ARG. */
+ extern int vsscanf (__const char *__restrict __s,
+@@ -377,12 +428,18 @@
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Read a character from STREAM. */
+-extern int fgetc (FILE *__stream) __THROW;
+-extern int getc (FILE *__stream) __THROW;
++/* Read a character from STREAM.
+
+-/* Read a character from stdin. */
+-extern int getchar (void) __THROW;
++ These functions are possible cancellation points and therefore not
++ marked with __THROW. */
++extern int fgetc (FILE *__stream);
++extern int getc (FILE *__stream);
++
++/* Read a character from stdin.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int getchar (void);
+ __END_NAMESPACE_STD
+
+ /* The C standard explicitly says this is a macro, so we always do the
+@@ -390,24 +447,41 @@
+ #define getc(_fp) _IO_getc (_fp)
+
+ #if defined __USE_POSIX || defined __USE_MISC
+-/* These are defined in POSIX.1:1996. */
+-extern int getc_unlocked (FILE *__stream) __THROW;
+-extern int getchar_unlocked (void) __THROW;
++/* These are defined in POSIX.1:1996.
++
++ These functions are possible cancellation points and therefore not
++ marked with __THROW. */
++extern int getc_unlocked (FILE *__stream);
++extern int getchar_unlocked (void);
+ #endif /* Use POSIX or MISC. */
+
+ #ifdef __USE_MISC
+-/* Faster version when locking is not necessary. */
+-extern int fgetc_unlocked (FILE *__stream) __THROW;
++/* Faster version when locking is not necessary.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int fgetc_unlocked (FILE *__stream);
+ #endif /* Use MISC. */
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Write a character to STREAM. */
+-extern int fputc (int __c, FILE *__stream) __THROW;
+-extern int putc (int __c, FILE *__stream) __THROW;
++/* Write a character to STREAM.
++
++ These functions are possible cancellation points and therefore not
++ marked with __THROW.
+
+-/* Write a character to stdout. */
+-extern int putchar (int __c) __THROW;
++ These functions is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fputc (int __c, FILE *__stream);
++extern int putc (int __c, FILE *__stream);
++
++/* Write a character to stdout.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int putchar (int __c);
+ __END_NAMESPACE_STD
+
+ /* The C standard explicitly says this can be a macro,
+@@ -415,40 +489,59 @@
+ #define putc(_ch, _fp) _IO_putc (_ch, _fp)
+
+ #ifdef __USE_MISC
+-/* Faster version when locking is not necessary. */
+-extern int fputc_unlocked (int __c, FILE *__stream) __THROW;
++/* Faster version when locking is not necessary.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int fputc_unlocked (int __c, FILE *__stream);
+ #endif /* Use MISC. */
+
+ #if defined __USE_POSIX || defined __USE_MISC
+-/* These are defined in POSIX.1:1996. */
+-extern int putc_unlocked (int __c, FILE *__stream) __THROW;
+-extern int putchar_unlocked (int __c) __THROW;
++/* These are defined in POSIX.1:1996.
++
++ These functions are possible cancellation points and therefore not
++ marked with __THROW. */
++extern int putc_unlocked (int __c, FILE *__stream);
++extern int putchar_unlocked (int __c);
+ #endif /* Use POSIX or MISC. */
+
+
+-#if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
++#if defined __USE_SVID || defined __USE_MISC \
++ || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
+ /* Get a word (int) from STREAM. */
+-extern int getw (FILE *__stream) __THROW;
++extern int getw (FILE *__stream);
+
+ /* Write a word (int) to STREAM. */
+-extern int putw (int __w, FILE *__stream) __THROW;
++extern int putw (int __w, FILE *__stream);
+ #endif
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Get a newline-terminated string of finite length from STREAM. */
+-extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+- __THROW;
++/* Get a newline-terminated string of finite length from STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
+
+ /* Get a newline-terminated string from stdin, removing the newline.
+- DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. */
+-extern char *gets (char *__s) __THROW;
++ DO NOT USE THIS FUNCTION!! There is no limit on how much it will read.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern char *gets (char *__s);
+ __END_NAMESPACE_STD
+
+ #ifdef __USE_GNU
+-/* This function does the same as `fgets' but does not lock the stream. */
++/* This function does the same as `fgets' but does not lock the stream.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern char *fgets_unlocked (char *__restrict __s, int __n,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
+ #endif
+
+
+@@ -457,64 +550,107 @@
+ (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
+ NULL), pointing to *N characters of space. It is realloc'd as
+ necessary. Returns the number of characters read (not including the
+- null terminator), or -1 on error or EOF. */
++ null terminator), or -1 on error or EOF.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern _IO_ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
+ extern _IO_ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
++
++/* Like `getdelim', but reads up to a newline.
+
+-/* Like `getdelim', but reads up to a newline. */
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern _IO_ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
+ #endif
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Write a string to STREAM. */
+-extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
+- __THROW;
++/* Write a string to STREAM.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+-/* Write a string, followed by a newline, to stdout. */
+-extern int puts (__const char *__s) __THROW;
++/* Write a string, followed by a newline, to stdout.
+
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern int puts (__const char *__s);
+
+-/* Push a character back onto the input buffer of STREAM. */
+-extern int ungetc (int __c, FILE *__stream) __THROW;
+
++/* Push a character back onto the input buffer of STREAM.
+
+-/* Read chunks of generic data from STREAM. */
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern int ungetc (int __c, FILE *__stream);
++
++
++/* Read chunks of generic data from STREAM.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ extern size_t fread (void *__restrict __ptr, size_t __size,
+- size_t __n, FILE *__restrict __stream) __THROW;
+-/* Write chunks of generic data to STREAM. */
++ size_t __n, FILE *__restrict __stream);
++/* Write chunks of generic data to STREAM.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+- size_t __n, FILE *__restrict __s) __THROW;
++ size_t __n, FILE *__restrict __s);
+ __END_NAMESPACE_STD
+
+ #ifdef __USE_GNU
+-/* This function does the same as `fputs' but does not lock the stream. */
++/* This function does the same as `fputs' but does not lock the stream.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int fputs_unlocked (__const char *__restrict __s,
+- FILE *__restrict __stream) __THROW;
++ FILE *__restrict __stream);
+ #endif
+
+ #ifdef __USE_MISC
+-/* Faster versions when locking is not necessary. */
++/* Faster versions when locking is not necessary.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+- size_t __n, FILE *__restrict __stream) __THROW;
++ size_t __n, FILE *__restrict __stream);
+ extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+- size_t __n, FILE *__restrict __stream) __THROW;
++ size_t __n, FILE *__restrict __stream);
+ #endif
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Seek to a certain position on STREAM. */
+-extern int fseek (FILE *__stream, long int __off, int __whence) __THROW;
+-/* Return the current position of STREAM. */
+-extern long int ftell (FILE *__stream) __THROW;
+-/* Rewind to the beginning of STREAM. */
+-extern void rewind (FILE *__stream) __THROW;
++/* Seek to a certain position on STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fseek (FILE *__stream, long int __off, int __whence);
++/* Return the current position of STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern long int ftell (FILE *__stream);
++/* Rewind to the beginning of STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void rewind (FILE *__stream);
+ __END_NAMESPACE_STD
+
+ /* The Single Unix Specification, Version 2, specifies an alternative,
+@@ -524,16 +660,22 @@
+
+ #ifdef __USE_LARGEFILE
+ # ifndef __USE_FILE_OFFSET64
+-/* Seek to a certain position on STREAM. */
+-extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW;
+-/* Return the current position of STREAM. */
+-extern __off_t ftello (FILE *__stream) __THROW;
++/* Seek to a certain position on STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fseeko (FILE *__stream, __off_t __off, int __whence);
++/* Return the current position of STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern __off_t ftello (FILE *__stream);
+ # else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (fseeko,
+- (FILE *__stream, __off64_t __off, int __whence) __THROW,
++ (FILE *__stream, __off64_t __off, int __whence),
+ fseeko64);
+-extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64);
++extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64);
+ # else
+ # define fseeko fseeko64
+ # define ftello ftello64
+@@ -543,18 +685,22 @@
+
+ __BEGIN_NAMESPACE_STD
+ #ifndef __USE_FILE_OFFSET64
+-/* Get STREAM's position. */
+-extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
+- __THROW;
+-/* Set STREAM's position. */
+-extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW;
++/* Get STREAM's position.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
++/* Set STREAM's position.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+ #else
+ # ifdef __REDIRECT
+ extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
+- fpos_t *__restrict __pos) __THROW, fgetpos64);
++ fpos_t *__restrict __pos), fgetpos64);
+ extern int __REDIRECT (fsetpos,
+- (FILE *__stream, __const fpos_t *__pos) __THROW,
+- fsetpos64);
++ (FILE *__stream, __const fpos_t *__pos), fsetpos64);
+ # else
+ # define fgetpos fgetpos64
+ # define fsetpos fsetpos64
+@@ -563,11 +709,10 @@
+ __END_NAMESPACE_STD
+
+ #ifdef __USE_LARGEFILE64
+-extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW;
+-extern __off64_t ftello64 (FILE *__stream) __THROW;
+-extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos)
+- __THROW;
+-extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW;
++extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
++extern __off64_t ftello64 (FILE *__stream);
++extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
++extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+ #endif
+
+ __BEGIN_NAMESPACE_STD
+@@ -588,8 +733,11 @@
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Print a message describing the meaning of the value of errno. */
+-extern void perror (__const char *__s) __THROW;
++/* Print a message describing the meaning of the value of errno.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void perror (__const char *__s);
+ __END_NAMESPACE_STD
+
+ /* Provide the declarations for `sys_errlist' and `sys_nerr' if they
+@@ -612,11 +760,17 @@
+
+ #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \
+ defined __USE_MISC)
+-/* Create a new stream connected to a pipe running the given command. */
+-extern FILE *popen (__const char *__command, __const char *__modes) __THROW;
++/* Create a new stream connected to a pipe running the given command.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern FILE *popen (__const char *__command, __const char *__modes);
++
++/* Close a stream opened by popen and return the status of its child.
+
+-/* Close a stream opened by popen and return the status of its child. */
+-extern int pclose (FILE *__stream) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern int pclose (FILE *__stream);
+ #endif
+
+
+@@ -628,7 +782,7 @@
+
+ #ifdef __USE_XOPEN
+ /* Return the name of the current user. */
+-extern char *cuserid (char *__s) __THROW;
++extern char *cuserid (char *__s);
+ #endif /* Use X/Open, but not issue 6. */
+
+
+--- glibc-2.3.2/libio/strops.c 2002-02-25 01:49:21.000000000 -0500
++++ glibc-2.3.2/libio/strops.c 2003-06-03 09:36:22.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1997-2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1997-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -63,33 +63,22 @@
+ #endif
+
+ void
+-_IO_str_init_static (sf, ptr, size, pstart)
++_IO_str_init_static_internal (sf, ptr, size, pstart)
+ _IO_strfile *sf;
+ char *ptr;
+- int size;
++ _IO_size_t size;
+ char *pstart;
+ {
+ _IO_FILE *fp = &sf->_sbf._f;
++ char *end;
+
+ if (size == 0)
+- size = strlen (ptr);
+- else if (size < 0)
+- {
+- /* If size is negative 'the characters are assumed to
+- continue indefinitely.' This is kind of messy ... */
+- int s;
+- size = 512;
+- /* Try increasing powers of 2, as long as we don't wrap around. */
+- for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; )
+- size = s;
+- /* Try increasing size as much as we can without wrapping around. */
+- for (s = size >> 1; s > 0; s >>= 1)
+- {
+- if (ptr + size + s > ptr)
+- size += s;
+- }
+- }
+- INTUSE(_IO_setb) (fp, ptr, ptr + size, 0);
++ end = __rawmemchr (ptr, '\0');
++ else if ((_IO_size_t) ptr + size > (_IO_size_t) ptr)
++ end = ptr + size;
++ else
++ end = (char *) -1;
++ INTUSE(_IO_setb) (fp, ptr, end, 0);
+
+ fp->_IO_write_base = ptr;
+ fp->_IO_read_base = ptr;
+@@ -97,19 +86,28 @@
+ if (pstart)
+ {
+ fp->_IO_write_ptr = pstart;
+- fp->_IO_write_end = ptr + size;
++ fp->_IO_write_end = end;
+ fp->_IO_read_end = pstart;
+ }
+ else
+ {
+ fp->_IO_write_ptr = ptr;
+ fp->_IO_write_end = ptr;
+- fp->_IO_read_end = ptr+size;
++ fp->_IO_read_end = end;
+ }
+ /* A null _allocate_buffer function flags the strfile as being static. */
+ sf->_s._allocate_buffer = (_IO_alloc_type) 0;
+ }
+-INTDEF(_IO_str_init_static)
++
++void
++_IO_str_init_static (sf, ptr, size, pstart)
++ _IO_strfile *sf;
++ char *ptr;
++ int size;
++ char *pstart;
++{
++ return _IO_str_init_static_internal (sf, ptr, size < 0 ? -1 : size, pstart);
++}
+
+ void
+ _IO_str_init_readonly (sf, ptr, size)
+@@ -117,7 +115,7 @@
+ const char *ptr;
+ int size;
+ {
+- INTUSE(_IO_str_init_static) (sf, (char *) ptr, size, NULL);
++ _IO_str_init_static_internal (sf, (char *) ptr, size < 0 ? -1 : size, NULL);
+ sf->_sbf._f._IO_file_flags |= _IO_NO_WRITES;
+ }
+
+--- glibc-2.3.2/libio/swprintf.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/swprintf.c 2003-03-15 15:02:08.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,10 +23,7 @@
+ /* Write formatted output into S, according to the format string FORMAT. */
+ /* VARARGS3 */
+ int
+-swprintf (s, n, format)
+- wchar_t *s;
+- size_t n;
+- const wchar_t *format;
++swprintf (wchar_t *s, size_t n, const wchar_t *format, ...)
+ {
+ va_list arg;
+ int done;
+--- glibc-2.3.2/libio/swscanf.c 2001-07-07 15:21:03.000000000 -0400
++++ glibc-2.3.2/libio/swscanf.c 2003-03-15 15:02:08.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,9 +22,7 @@
+ /* Read formatted input from S, according to the format string FORMAT. */
+ /* VARARGS2 */
+ int
+-swscanf (s, format)
+- const wchar_t *s;
+- const wchar_t *format;
++swscanf (const wchar_t *s, const wchar_t *format, ...)
+ {
+ va_list arg;
+ int done;
+--- glibc-2.3.2/libio/vasprintf.c 2002-02-25 02:02:03.000000000 -0500
++++ glibc-2.3.2/libio/vasprintf.c 2003-06-03 09:36:23.000000000 -0400
+@@ -54,7 +54,7 @@
+ #endif
+ _IO_no_init ((_IO_FILE *) &sf._sbf, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS ((struct _IO_FILE_plus *) &sf._sbf) = &_IO_str_jumps;
+- INTUSE(_IO_str_init_static) (&sf, string, init_string_size, string);
++ _IO_str_init_static_internal (&sf, string, init_string_size, string);
+ sf._sbf._f._flags &= ~_IO_USER_BUF;
+ sf._s._allocate_buffer = (_IO_alloc_type) malloc;
+ sf._s._free_buffer = (_IO_free_type) free;
+--- glibc-2.3.2/libio/vsnprintf.c 2002-02-25 02:02:12.000000000 -0500
++++ glibc-2.3.2/libio/vsnprintf.c 2003-06-03 09:36:23.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1994,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1994,1997,1999-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -126,7 +126,7 @@
+ _IO_no_init (&sf.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+ _IO_JUMPS ((struct _IO_FILE_plus *) &sf.f._sbf) = &_IO_strn_jumps;
+ string[0] = '\0';
+- INTUSE(_IO_str_init_static) (&sf.f, string, maxlen - 1, string);
++ _IO_str_init_static_internal (&sf.f, string, maxlen - 1, string);
+ ret = INTUSE(_IO_vfprintf) ((_IO_FILE *) &sf.f._sbf, format, args);
+
+ if (sf.f._sbf._f._IO_buf_base != sf.overflow_buf)
+--- glibc-2.3.2/libio/wfileops.c 2002-11-05 02:28:51.000000000 -0500
++++ glibc-2.3.2/libio/wfileops.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,95,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,95,97,98,99,2000,2001,2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@cygnus.com>.
+ Based on the single byte version by Per Bothner <bothner@cygnus.com>.
+@@ -153,6 +153,7 @@
+ fp->_wide_data->_IO_buf_end,
+ &fp->_wide_data->_IO_read_end);
+
++ fp->_IO_read_base = fp->_IO_read_ptr;
+ fp->_IO_read_ptr = (char *) read_stop;
+
+ /* If we managed to generate some text return the next character. */
+@@ -217,16 +218,13 @@
+ traditional Unix systems did this for stdout. stderr better
+ not be line buffered. So we do just that here
+ explicitly. --drepper */
+- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
+- _IO_stdout);
+- _IO_flockfile (_IO_stdout);
++ _IO_acquire_lock (_IO_stdout);
+
+ if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF))
+ == (_IO_LINKED | _IO_LINE_BUF))
+ _IO_OVERFLOW (_IO_stdout, EOF);
+
+- _IO_funlockfile (_IO_stdout);
+- _IO_cleanup_region_end (0);
++ _IO_release_lock (_IO_stdout);
+ #endif
+ }
+
+@@ -879,7 +877,7 @@
+ JUMP_INIT(showmanyc, _IO_default_showmanyc),
+ JUMP_INIT(imbue, _IO_default_imbue)
+ };
+-INTVARDEF(_IO_wfile_jumps)
++libc_hidden_data_def (_IO_wfile_jumps)
+
+
+ struct _IO_jump_t _IO_wfile_jumps_mmap =
+--- glibc-2.3.2/libio/wstrops.c 2002-08-24 22:41:38.000000000 -0400
++++ glibc-2.3.2/libio/wstrops.c 2003-06-03 09:36:23.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1997-1999,2001-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -67,28 +67,20 @@
+ _IO_wstr_init_static (fp, ptr, size, pstart)
+ _IO_FILE *fp;
+ wchar_t *ptr;
+- int size;
++ _IO_size_t size;
+ wchar_t *pstart;
+ {
++ wchar_t *end;
++
+ if (size == 0)
+- size = __wcslen (ptr);
+- else if (size < 0)
+- {
+- /* If size is negative 'the characters are assumed to
+- continue indefinitely.' This is kind of messy ... */
+- int s;
+- size = 512;
+- /* Try increasing powers of 2, as long as we don't wrap around. */
+- for (; s = 2*size, s > 0 && ptr + s > ptr && s < 0x4000000L; )
+- size = s;
+- /* Try increasing size as much as we can without wrapping around. */
+- for (s = size >> 1; s > 0; s >>= 1)
+- {
+- if (ptr + size + s > ptr)
+- size += s;
+- }
+- }
+- INTUSE(_IO_wsetb) (fp, ptr, ptr + size, 0);
++ end = ptr + __wcslen (ptr);
++ else if ((_IO_size_t) ptr + size * sizeof (wchar_t) > (_IO_size_t) ptr)
++ end = ptr + size;
++ else
++ /* Even for misaligned ptr make sure there is integral number of wide
++ characters. */
++ end = ptr + (-1 - (_IO_size_t) ptr) / sizeof (wchar_t);
++ INTUSE(_IO_wsetb) (fp, ptr, end, 0);
+
+ fp->_wide_data->_IO_write_base = ptr;
+ fp->_wide_data->_IO_read_base = ptr;
+@@ -96,29 +88,19 @@
+ if (pstart)
+ {
+ fp->_wide_data->_IO_write_ptr = pstart;
+- fp->_wide_data->_IO_write_end = ptr + size;
++ fp->_wide_data->_IO_write_end = end;
+ fp->_wide_data->_IO_read_end = pstart;
+ }
+ else
+ {
+ fp->_wide_data->_IO_write_ptr = ptr;
+ fp->_wide_data->_IO_write_end = ptr;
+- fp->_wide_data->_IO_read_end = ptr + size;
++ fp->_wide_data->_IO_read_end = end;
+ }
+ /* A null _allocate_buffer function flags the strfile as being static. */
+ (((_IO_strfile *) fp)->_s._allocate_buffer) = (_IO_alloc_type)0;
+ }
+
+-void
+-_IO_wstr_init_readonly (fp, ptr, size)
+- _IO_FILE *fp;
+- const char *ptr;
+- int size;
+-{
+- _IO_wstr_init_static (fp, (wchar_t *) ptr, size, NULL);
+- fp->_IO_file_flags |= _IO_NO_WRITES;
+-}
+-
+ _IO_wint_t
+ _IO_wstr_overflow (fp, c)
+ _IO_FILE *fp;
+--- glibc-2.3.2/linuxthreads/ChangeLog 2003-02-27 17:40:10.000000000 -0500
++++ glibc-2.3.2/linuxthreads/ChangeLog 2003-09-19 22:37:03.000000000 -0400
+@@ -1,4 +1,558 @@
+-2003-02-27 Roland McGrath <roland@redhat.com>
++2003-09-18 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
++
++ * tst-attr1.c: New test.
++ * Makefile (tests): Add tst-attr1.
++
++2003-09-17 Philip Blundell <philb@gnu.org>
++
++ * sysdeps/unix/sysv/linux/arm/vfork.S: Branch to fork if
++ libpthread is loaded. Elide backwards compatibility code when not
++ required.
++
++2003-09-17 Jakub Jelinek <jakub@redhat.com>
++
++ * descr.h (manager_thread): Rename to...
++ (__pthread_manager_threadp): ... this.
++ * pthread.c (manager_thread): Define to __pthread_manager_threadp.
++ (__pthread_manager_threadp): New variable.
++ * internals.h (__manager_thread): Define to
++ __pthread_manager_threadp if USE_TLS.
++
++2003-09-15 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/Makefile (CFLAGS-cancel.c, CFLAGS-manager.c,
++ CFLAGS-pthread.c, CFLAGS-sighandler.c): Add
++ -mpreferred-stack-boundary=4.
++
++2003-09-16 Ulrich Drepper <drepper@redhat.com>
++
++ * attr.c (pthread_getattr_np): Correctly fill in the stack-related
++ values for the initial thread.
++
++2003-09-17 Jakub Jelinek <jakub@redhat.com>
++
++ * pthread.c (manager_thread): Remove static, add attribute_hidden.
++ (thread_self_stack): Rename to...
++ (__pthread_self_stack): ... this. Remove static.
++ (pthread_handle_sigcancel): Use check_thread_self ().
++ (pthread_handle_sigrestart): Likewise.
++ * sighandler.c (__pthread_sighandler, __pthread_sighandler_rt):
++ Likewise.
++ * descr.h (manager_thread): Declare.
++ * internals.h (__pthread_self_stack): New prototype.
++ (__manager_thread): Define.
++ (check_thread_self): New function.
++
++2003-09-15 Jakub Jelinek <jakub@redhat.com>
++
++ * Makefile (CFLAGS-mutex.c): Add $(uses-callbacks).
++ (CFLAGS-sighandler.c): Change $(exceptions) into $(uses-callbacks).
++
++2003-09-12 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New.
++ (__SSIZE_T_TYPE): Define to __SWORD_TYPE for gcc 2.95.x and
++ __SLONGWORD_TYPE otherwise.
++
++2003-09-11 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/powerpc/powerpc64/pt-machine.h [MEMORY_BARRIER]: Use lwsync.
++ [READ_MEMORY_BARRIER]: Define.
++ [WRITE_MEMORY_BARRIER]: Define.
++
++2003-09-10 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Move
++ ptr___pthread_cond_timedwait to the end of the structure to avoid
++ breaking Wine unnecessarily.
++
++2003-09-08 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove.
++
++2003-09-02 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file.
++ * sysdeps/unix/sysv/linux/alpha/Versions: New file.
++ * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file.
++ * sysdeps/unix/sysv/linux/ia64/Versions: New file.
++ * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file.
++ * sysdeps/unix/sysv/linux/sparc/Versions: New file.
++ * attr.c (__old_pthread_attr_setstacksize,
++ __old_pthread_attr_setstack): New functions.
++ (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export
++ as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1.
++ (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export
++ as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2.
++ * tststack.c: Include limits.h and sys/param.h.
++ (main): Set size to MAX (70 * 1024, PTHREAD_STACK_MIN).
++
++ * barrier.c (__pthread_barrierattr_getpshared): Always
++ return PTHREAD_PROCESS_PRIVATE.
++ (pthread_barrierattr_setpshared): Return EINVAL if pshared
++ is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
++
++2003-09-02 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
++ (DL_SYSINFO_IMPLEMENTATION): Add CFI and make sure the code ends
++ up in .text.
++
++ * barrier.c (pthread_barrierattr_setpshared): We don't handle
++ inter-process barriers.
++
++2003-09-01 Jakub Jelinek <jakub@redhat.com>
++
++ * Makefile (tests): Add tst-tls1.
++ (module-names): Add tst-tls1mod{,a,b,c,d,e,f}.
++ ($(objpfx)tst-tls1mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes.
++ ($(objpfx)tst-tls1): New.
++ ($(objpfx)tst-tls2.out): Likewise.
++ (tests): Depend on $(objpfx)tst-tls2.out.
++ * tst-tls1.c: New test.
++ * tst-tls1.h: New.
++ * tst-tls1mod.c: New.
++ * tst-tls1moda.c: New.
++ * tst-tls1modb.c: New.
++ * tst-tls1modc.c: New.
++ * tst-tls1modd.c: New.
++ * tst-tls1mode.c: New.
++ * tst-tls1modf.c: New.
++ * tst-tls2.sh: New test.
++
++ * internals.h (__pthread_cond_timedwait): New prototype.
++ * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
++ ptr___pthread_cond_timedwait.
++ * pthread.c (__pthread_functions): Initialize them.
++ * forward.c (pthread_cond_timedwait@GLIBC_2.0,
++ pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
++ * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
++ pthread_cond_timedwait@@GLIBC_2.3.2.
++
++2003-08-27 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/pthread.h: Don't mark pthread_exit,
++ pthread_join, pthread_cond_wait, and pthread_cond_timedwait with
++ __THROW to match NPTL.
++
++2003-08-13 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/Makefile [subdir=rt] (CPPFLAGS): Add
++ -DBROKEN_THREAD_SIGNALS.
++
++2003-08-11 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * manager.c (pthread_start_thread) [!(USE_TLS && HAVE___THREAD)]:
++ Correct spelling of per thread resolver state.
++
++2003-08-07 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED]
++ (__rtld_lock_default_lock_recursive,
++ __rtld_lock_default_unlock_recursive): Define.
++ [_LIBC && SHARED] (__rtld_lock_lock_recursive,
++ __rtld_lock_unlock_recursive): Define using
++ GL(_dl_rtld_*lock_recursive).
++ * pthread.c (pthread_initialize): Initialize _dl_rtld_lock_recursive
++ and _dl_rtld_unlock_recursive. Lock GL(_dl_load_lock) the same
++ number of times as GL(_dl_load_lock) using non-mt implementation was
++ nested.
++
++2003-07-31 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/pthread/bits/typesizes.h (__SSIZE_T_TYPE): Define.
++ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h (__SSIZE_T_TYPE):
++ Likewise.
++ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h (__SSIZE_T_TYPE):
++ Likewise.
++ * sysdeps/unix/sysv/linux/s390/bits/typesizes.h: New file.
++
++ * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr,
++ pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to
++ PTHREAD_STACK_MIN in comments.
++
++ * sysdeps/alpha/pt-machine.h (PT_EI): Add
++ __attribute__((always_inline)).
++ * sysdeps/arm/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/cris/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/hppa/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/i386/i686/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/i386/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/ia64/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/m68k/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/mips/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/powerpc/powerpc32/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/powerpc/powerpc64/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/s390/s390-32/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/s390/s390-64/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/sh/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/sparc/sparc32/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/sparc/sparc64/pt-machine.h (PT_EI): Likewise.
++ * sysdeps/x86_64/pt-machine.h (PT_EI): Likewise.
++ * spinlock.h (__pthread_set_own_extricate_if): Likewise.
++ * sysdeps/ia64/tls.h (TLS_INIT_TP): Cast tcbp to __typeof
++ (__thread_self).
++ * Examples/ex13.c (main): Change res type to void * to avoid
++ warnings.
++ * tst-cancel.c (cleanup, inner, tf1, tf2, tf3): Comment out.
++
++2003-07-30 Jakub Jelinek <jakub@redhat.com>
++
++ * pthread.c (init_one_static_tls, __pthread_init_static_tls): New
++ functions.
++ (pthread_initialize): Initialize GL(dl_init_static_tls).
++
++2003-06-19 Daniel Jacobowitz <drow@mvista.com>
++
++ * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
++ before __timer_dealloc.
++ * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
++ Don't call list_unlink.
++
++2003-07-29 Roland McGrath <roland@redhat.com>
++
++ * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
++
++2003-07-25 Roland McGrath <roland@redhat.com>
++
++ * manager.c (pthread_start_thread): Fix typo in last change.
++
++2003-07-14 Guido Guenther <agx@sigxcpu.org>
++
++ * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Add IS_IN_librt,
++ use L() for local labels.
++
++2003-07-22 Jakub Jelinek <jakub@redhat.com>
++
++ * descr.h (struct _pthread_descr_struct): Provide p_res member
++ even if USE_TLS && HAVE___THREAD.
++ * sysdeps/pthread/res-state.c (__res_state): Return __resp
++ if USE___THREAD.
++ * manager.c: Include resolv.h.
++ (pthread_start_thread): Initialize __resp.
++ * libc-tls-loc.c (__res_state): Return __resp.
++ * Makefile (tests): Add tst-_res1.
++ (modules-names, extra-objs, test-extras, test-modules): Add support
++ for test modules.
++ ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so.
++ ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and
++ -lpthread.
++ * tst-_res1.c: New test.
++ * tst-_res1mod1.c: New test.
++ * tst-_res1mod2.c: New test.
++
++2003-07-20 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/bits/libc-lock.h: Define __libc_cleanup_push and
++ __libc_cleanup_pop.
++
++ * tst-cancel-wrappers.sh: lseek and llseek are no cancellation points.
++
++2003-07-14 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Fix typo
++ in test for compilation in libc.
++
++2003-07-04 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
++ different symbol for the cancellation syscall wrapper and
++ non-cancellation syscall wrapper.
++ (PSEUDO_END): Define.
++
++2003-07-05 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
++
++2003-06-20 Kaz Kojima <kkojima@rr.iij4u.or.jp>
++
++ * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Support cancellation
++ in librt.
++
++2003-06-21 Andreas Schwab <schwab@suse.de>
++
++ * sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Support cancellation
++ in librt.
++
++2003-06-20 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/Makefile (libpthread-routines):
++ Remove ptw-osf_sigprocmask.
++
++2003-06-18 Jakub Jelinek <jakub@redhat.com>
++
++ * internals.h (__librt_multiple_threads, __librt_enable_asynccancel,
++ __librt_disable_asynccancel): Declare.
++ (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET, LIBC_CANCEL_HANDLED): Define
++ for IS_IN_librt.
++ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Support cancellation
++ in librt.
++ * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
++ * sysdeps/x86_64/tcb-offsets.sym: New file.
++ * sysdeps/x86_64/Makefile: New file.
++ * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads.
++ * Versions (libc): Export __librt_enable_asynccancel,
++ __librt_disable_asynccancel and __librt_multiple_threads as
++ GLIBC_PRIVATE.
++ * libc-cancellation.c (__librt_multiple_threads,
++ __librt_enable_asynccancel, __librt_disable_asynccancel): New aliases.
++
++2003-06-12 Steven Munroe <sjmunroe@us.ibm.com>
++
++ * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
++ (SINGLE_THREAD_P): Replace @ got notation with @toc.
++
++2003-06-11 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/powerpc/pspinlock.c (__pthread_spin_init): Fix
++ initializer [PR libc/5052].
++
++2003-06-09 Andreas Schwab <schwab@suse.de>
++
++ * Makefile: Move inclusion of ../Rules down after extra-objs is
++ fully known.
++
++2003-06-06 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: New sequences for
++ 5+ arg syscalls only needed for PIC.
++ Patch by Ralph Siemsen <ralphs@netwinder.org>.
++
++2003-06-05 Richard Henderson <rth@redhat.com>
++
++ * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use
++ and require CFI assembler directives.
++ * sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise.
++
++2003-05-30 Andreas Jaeger <aj@suse.de>
++
++ * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
++ (SAVESTK_0): Add CFI directives.
++ (SAVESTK_3): Likewise.
++ (SAVESTK_5): Likewise.
++ (RESTSTK_0): Likewise.
++ (RESTSTK_3): Likewise.
++ (RESTSTK_5): Likewise.
++
++2003-05-05 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/i386/tls.h (TLS_DO_SET_THREAD_AREA): Add \n to error
++ messages.
++
++2003-05-04 Roland McGrath <roland@redhat.com>
++
++ * Makefile ($(objpfx)../libc.so): New target.
++
++2003-04-26 Ulrich Drepper <drepper@redhat.com>
++
++ * pthread.c (__pthread_initialize_manager): Remove one last
++ p_multiple_threads call.
++
++2003-04-22 Jakub Jelinek <jakub@redhat.com>
++
++ * pthread.c (__pthread_initialize_manager): Subtract
++ TLS_PRE_TCB_SIZE bytes from tcbp to get to descr.
++ * manager.c (pthread_handle_create): Subtract or add TLS_PRE_TCB_SIZE
++ instead of sizeof (pthread_descr).
++ (pthread_free): Add TLS_PRE_TCB_SIZE instead of sizeof (pthread_descr).
++ * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define to 0.
++ (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of
++ pthread_descr.
++ (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad
++ to TLS_TCB_ALIGN.
++ (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before
++ tcbp.
++ (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE
++ unneccessarily.
++ (NO_TLS_OFFSET): Define.
++
++2003-04-22 Roland McGrath <roland@redhat.com>
++
++ * Makeconfig (shared-thread-library): Reverse link order to work
++ around linker bug.
++
++2003-04-20 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/i386/useldt.h (DO_SET_THREAD_AREA): Make sure the
++ compiler knows we use the ldt_entry variable and that the syscall
++ modifies the memory.
++
++ * internals.h: Split pthread_functions definition into...
++ * sysdeps/pthread/pthread-functions.h: ...new file.
++
++ * sysdeps/i386/useldt.h: Include <sysdep.h>.
++
++2003-04-13 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Rename macros to
++ match changes in NPTL sysdep-cancel.h.
++
++2003-04-11 Roland McGrath <roland@redhat.com>
++
++ * Makefile (multidir): Don't set the variable here with $(shell ...).
++ ($(objpfx)multidir.mk): New target, generated makefile; include that.
++ (generated): Append it.
++
++2003-04-10 Jakub Jelinek <jakub@redhat.com>
++
++ * Makefile (multidir, crti-objs, crtn-objs): New variables.
++ (generated-dirs): Add pathname component of multidir.
++ (omit-deps, extra-objs): Include $(multidir)/crt? as well.
++ ($(objpfx)libpthread.so): Depend on $(multidir)/crt?.o as well.
++ ($(objpfx)$(multidir), $(objpfx)$(multidir)/crti.o,
++ $(objpfx)$(multidir)/crtn.o): New.
++ * sysdeps/unix/sysv/linux/sparc/Makefile: Removed.
++ * sysdeps/unix/sysv/linux/x86_64/Makefile (LDFLAGS-pthread.so,
++ before-compile, generated): Don't generate and use specs.
++ ($(objpfx)specs): Remove.
++
++2003-04-11 Martin Schwidefsky <schwidefsky@de.ibm.com>
++
++ * sysdeps/s390/pspinlock.c (__pthread_spin_unlock): Fix asm contraints.
++
++2003-04-03 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h (PSEUDO): Add
++ missing ; after ENTRY use [PR libc/4997].
++
++2003-04-03 Jakub Jelinek <jakub@redhat.com>
++
++ * pthread.c (pthread_initialize): Unblock __pthread_sig_cancel
++ in case the parent blocked it.
++
++2003-04-02 Jakub Jelinek <jakub@redhat.com>
++
++ * Makefile (libpthread-routines): Add pthread_atfork.
++ (libpthread-static-only-routines): Add pthread_atfork.
++
++2003-04-01 Jakub Jelinek <jakub@redhat.com>
++
++ * pthread.c (__pthread_wait_for_restart_signal): Use
++ __pthread_sigsuspend instead of sigsuspend.
++ * internals.h (__pthread_sigsuspend): New prototype.
++ * Makefile (libpthread-routines): Add pt-sigsuspend.
++ (tests): Add tst-cancel7.
++ * sysdeps/unix/sysv/linux/pt-sigsuspend.c: New file.
++ * sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S: New file.
++ * sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c: New file.
++ * sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c: New file.
++ * sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c: New file.
++ * sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c: New file.
++ * tst-cancel7.c: New test.
++
++2003-03-31 Alexandre Oliva <aoliva@redhat.com>
++
++ * alloca_cutoff.c: Include internals.h.
++ * sysdeps/pthread/errno-loc.c: Include linuxthreads/internals.h.
++ * sysdeps/pthread/herrno-loc.c: Likewise.
++ * sysdeps/pthread/res-state.c: Likewise.
++
++2003-03-25 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/bits/typesizes.h: New file.
++ * sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file.
++ * sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file.
++
++2003-03-24 Daniel Jacobowitz <drow@mvista.com>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
++ (DOARGS_5, DOARGS_6, DOARGS_7): Rewritten.
++
++2003-03-22 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def.
++
++2003-03-21 Daniel Jacobowitz <drow@mvista.com>
++
++ * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
++ (SINGLE_THREAD_P_PIC): Use "reg" instead of "lr".
++
++2003-03-21 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/i386/tls.h [__ASSUME_SET_THREAD_AREA_SYSCALL]
++ (TLS_SETUP_GS_SEGMENT): Fix a typo.
++
++2003-03-19 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/Makefile: Fix cut&paste error.
++
++2003-03-18 Roland McGrath <roland@redhat.com>
++
++ * Versions (libpthread: GLIBC_2.2): Remove
++ pthread_barrierattr_getpshared, never really existed.
++ (libpthread: GLIBC_2.0): Move __pthread_initialize to ...
++ (libpthread: GLIBC_PRIVATE): ... here.
++
++2003-03-14 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file.
++ * sysdeps/unix/sysv/linux/sparc/Makefile ($(objpfx)specs): Use full
++ path for crt[in].o.
++
++2003-03-14 Alexandre Oliva <aoliva@redhat.com>
++
++ * sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't .set
++ mips2 on new abi.
++ * sysdeps/mips/pt-machine.h (__compare_and_swap): Likewise.
++ Handle 64-bit longs on n64.
++
++2003-03-07 Jakub Jelinek <jakub@redhat.com>
++
++ * sysdeps/ia64/pspinlock.c (__pthread_spin_lock,
++ __pthread_spin_trylock): Rewritten.
++
++2003-03-06 Ulrich Drepper <drepper@redhat.com>
++
++ * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset
++ recent kernels.
++
++2003-03-02 Ulrich Drepper <drepper@redhat.com>
++
++ * sysdeps/pthread/timer_create.c (timer_create): Return correct
++ error for CPU clocks.
++
++ * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
++ _POSIX_MONOTONIC_CLOCK.
++ * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
++
++2003-03-01 Roland McGrath <roland@redhat.com>
++
++ * sysdeps/powerpc/powerpc64/pt-machine.h
++ (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC):
++ New macros.
++ * sysdeps/powerpc/tls.h: Don't define those here.
++
++ * sysdeps/powerpc/tls.h [! USE_TLS && !__powerpc64__]: Define
++ tcbhead_t with multiple_threads member.
++ [USE_TLS] (tcbhead_t): Define minimal one-word version.
++ [USE_TLS && !__powerpc64__] (TLS_MULTIPLE_THREADS_IN_TCB): Define.
++ * sysdeps/powerpc/tcb-offsets.sym [USE_TLS]: Use tls.h macros to
++ derive thread register offset of p_multiple_threads member.
++
++ * descr.h (struct _pthread_descr_struct) [!USE_TLS || !TLS_DTV_AT_TP]:
++ Conditionalize p_header member on this.
++ [TLS_MULTIPLE_THREADS_IN_TCB]: Add p_multiple_threads alternatively.
++ * sysdeps/ia64/tls.h [USE_TLS] (TLS_MULTIPLE_THREADS_IN_TCB): Define.
++ * sysdeps/sh/tls.h: Likewise.
++ * sysdeps/ia64/tcb-offsets.sym [USE_TLS]: Use p_multiple_threads.
++ * sysdeps/sh/tcb-offsets.sym: Likewise.
++ * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
++ (SINGLE_THREAD_P): Likewise.
++ * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
++ (SINGLE_THREAD_P): Likewise.
++ * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
++ (SINGLE_THREAD_P): Likewise.
++ * pthread.c (__pthread_initialize_manager): Likewise.
++ * manager.c (pthread_handle_create): Likewise.
+
+ * sysdeps/powerpc/tls.h [HAVE_TLS_SUPPORT]: Define USE_TLS and all
+ related macros.
+--- glibc-2.3.2/linuxthreads/Examples/ex13.c 2002-09-25 01:28:41.000000000 -0400
++++ glibc-2.3.2/linuxthreads/Examples/ex13.c 2003-08-21 08:37:03.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test for Pthreads/mutexes.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Kurt Garloff <garloff@suse.de>, 2000.
+
+@@ -80,7 +80,7 @@
+ struct thr_ctrl threadctrl;
+ pthread_t thread;
+ int err;
+- int *res = &threadctrl.retval;
++ void *res = &threadctrl.retval;
+ pthread_mutexattr_t mutattr;
+ pthread_mutexattr_init (&mutattr);
+ pthread_mutex_init (&threadctrl.mutex, &mutattr);
+@@ -106,7 +106,7 @@
+ abort ();
+ };
+ dump_mut (&threadctrl.mutex);
+- pthread_join (thread, (void **) &res);
++ pthread_join (thread, &res);
+ printf ("OK\n");
+ return 0;
+ }
+--- glibc-2.3.2/linuxthreads/Makeconfig 2002-12-31 00:56:27.000000000 -0500
++++ glibc-2.3.2/linuxthreads/Makeconfig 2003-04-24 20:05:57.000000000 -0400
+@@ -3,8 +3,8 @@
+
+ have-thread-library = yes
+
+-shared-thread-library = $(common-objpfx)linuxthreads/libpthread.so \
+- $(common-objpfx)linuxthreads/libpthread_nonshared.a
++shared-thread-library = $(common-objpfx)linuxthreads/libpthread_nonshared.a \
++ $(common-objpfx)linuxthreads/libpthread.so
+ static-thread-library = $(common-objpfx)linuxthreads/libpthread.a
+ bounded-thread-library = $(common-objpfx)linuxthreads/libpthread_b.a
+
+--- glibc-2.3.2/linuxthreads/Makefile 2003-02-21 20:01:16.000000000 -0500
++++ glibc-2.3.2/linuxthreads/Makefile 2003-09-19 22:37:03.000000000 -0400
+@@ -21,6 +21,8 @@
+ #
+ subdir := linuxthreads
+
++all: # Make this the default target; it will be defined in Rules.
++
+ linuxthreads-version := $(shell sed -n 's/^.*$(subdir)-\([0-9.]*\).*$$/\1/p' \
+ Banner)
+
+@@ -36,8 +38,8 @@
+ install-lib-ldscripts := libpthread.so
+
+ libpthread-routines := attr cancel condvar join manager mutex ptfork \
+- ptlongjmp pthread signals specific errno lockfile \
+- semaphore spinlock rwlock pt-machine \
++ ptlongjmp pthread pt-sigsuspend signals specific errno \
++ lockfile semaphore spinlock rwlock pt-machine \
+ oldsemaphore events getcpuclockid pspinlock barrier \
+ ptclock_gettime ptclock_settime sighandler \
+ pthandles libc-tls-loc pt-allocrtsig \
+@@ -47,11 +49,12 @@
+ ptw-lseek64 ptw-llseek ptw-msync ptw-nanosleep \
+ ptw-open ptw-open64 ptw-pause ptw-pread ptw-pread64 \
+ ptw-pwrite ptw-pwrite64 ptw-tcdrain ptw-wait \
+- ptw-waitpid pt-system old_pthread_atfork
++ ptw-waitpid pt-system old_pthread_atfork pthread_atfork
+ # Don't generate deps for calls with no sources. See sysdeps/unix/Makefile.
+ omit-deps = $(unix-syscalls:%=ptw-%)
+
+ libpthread-shared-only-routines = pt-allocrtsig
++libpthread-static-only-routines = pthread_atfork
+
+ libpthread-nonshared = pthread_atfork
+
+@@ -78,7 +81,24 @@
+
+ ifeq ($(build-shared),yes)
+
+-extra-objs += crti.o crtn.o
++# Set the `multidir' variable by grabbing the variable from the compiler.
++# We do it once and save the result in a generated makefile.
++-include $(objpfx)multidir.mk
++$(objpfx)multidir.mk: $(common-objpfx)config.make
++ dir=`$(CC) $(CFLAGS) $(CPPFLAGS) -print-multi-directory`; \
++ echo "multidir := $$dir" > $@T
++ mv -f $@T $@
++generated += multidir.mk
++
++crti-objs := crti.o
++crtn-objs := crtn.o
++ifneq (,$(patsubst .,,$(multidir)))
++generated-dirs := $(firstword $(subst /, , $(multidir)))
++crti-objs += $(multidir)/crti.o
++crtn-objs += $(multidir)/crtn.o
++omit-deps += $(multidir)/crti $(multidir)/crtn
++endif
++extra-objs += $(crti-objs) $(crtn-objs)
+ omit-deps += crti crtn
+
+ CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions
+@@ -89,7 +109,7 @@
+ tststack $(tests-nodelete-$(have-z-nodelete)) ecmutex ex14 ex15 ex16 \
+ ex17 ex18 tst-cancel tst-context bug-sleep \
+ tst-cancel1 tst-cancel2 tst-cancel3 tst-cancel4 tst-cancel5 \
+- tst-cancel6 tst-popen tst-popen2
++ tst-cancel6 tst-cancel7 tst-popen tst-popen2 tst-attr1
+ test-srcs = tst-signal
+ # These tests are linked with libc before libpthread
+ tests-reverse += tst-cancel5
+@@ -101,9 +121,31 @@
+
+ ifeq (yes,$(build-shared))
+ tests-nodelete-yes = unload
++tests += tst-tls1 tst-_res1
+ endif
+
+-include ../Rules
++modules-names = tst-_res1mod1 tst-_res1mod2 \
++ tst-tls1mod tst-tls1moda tst-tls1modb tst-tls1modc \
++ tst-tls1modd tst-tls1mode tst-tls1modf
++extra-objs += $(addsuffix .os,$(strip $(modules-names)))
++test-extras += $(modules-names)
++test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
++
++tst-tls1mod.so-no-z-defs = yes
++tst-tls1moda.so-no-z-defs = yes
++tst-tls1modb.so-no-z-defs = yes
++tst-tls1modc.so-no-z-defs = yes
++tst-tls1modd.so-no-z-defs = yes
++tst-tls1mode.so-no-z-defs = yes
++tst-tls1modf.so-no-z-defs = yes
++
++$(test-modules): $(objpfx)%.so: $(objpfx)%.os $(common-objpfx)shlib.lds
++ $(build-module)
++
++ifeq ($(build-shared),yes)
++# Build all the modules even when not actually running test programs.
++tests: $(test-modules)
++endif
+
+ # What we install as libpthread.so for programs to link against is in fact a
+ # link script. It contains references for the various libraries we need.
+@@ -131,9 +173,9 @@
+
+
+ extra-B-pthread.so = -B$(common-objpfx)linuxthreads/
+-$(objpfx)libpthread.so: $(objpfx)crti.o $(objpfx)crtn.o
+-$(objpfx)libpthread.so: +preinit += $(objpfx)crti.o
+-$(objpfx)libpthread.so: +postinit += $(objpfx)crtn.o
++$(objpfx)libpthread.so: $(addprefix $(objpfx),$(crti-objs) $(crtn-objs))
++$(objpfx)libpthread.so: +preinit += $(addprefix $(objpfx),$(crti-objs))
++$(objpfx)libpthread.so: +postinit += $(addprefix $(objpfx),$(crtn-objs))
+
+ znodelete-yes = -DHAVE_Z_NODELETE
+ CFLAGS-mutex.c += -D__NO_WEAK_PTHREAD_ALIASES
+@@ -142,7 +184,8 @@
+ CFLAGS-ptfork.c += -D__NO_WEAK_PTHREAD_ALIASES
+ CFLAGS-cancel.c += -D__NO_WEAK_PTHREAD_ALIASES -D_RPC_THREAD_SAFE_
+ CFLAGS-unload.c += -DPREFIX=\"$(objpfx)\"
+-CFLAGS-sighandler.c += $(exceptions)
++CFLAGS-mutex.c += $(uses-callbacks)
++CFLAGS-sighandler.c += $(uses-callbacks)
+
+ ifeq (yes,$(versioning))
+ -include $(common-objpfx)tls.make
+@@ -186,6 +229,8 @@
+ libc-link.so = $(common-objpfx)libc.so
+ endif
+
++include ../Rules
++
+ # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+ # This ensures they will load libc.so for needed symbols if loaded by
+ # a statically-linked program that hasn't already loaded it.
+@@ -204,6 +249,7 @@
+ $(addprefix $(objpfx), $(tests-reverse)): \
+ $(objpfx)../libc.so $(objpfx)libpthread.so \
+ $(objpfx)libpthread_nonshared.a
++$(objpfx)../libc.so: $(common-objpfx)libc.so ;
+ $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.so
+ $(objpfx)unload: $(common-objpfx)dlfcn/libdl.so
+ $(objpfx)unload.out: $(objpfx)libpthread.so $(objpfx)libpthread_nonshared.a
+@@ -248,6 +294,17 @@
+ $(objpfx)crtn.o: $(objpfx)crtn.S $(objpfx)defs.h
+ $(compile.S) -g0 $(ASFLAGS-.os) -o $@
+
++ifneq ($(multidir),.)
++$(objpfx)$(multidir):
++ @mkdir -p $(objpfx)$(multidir)
++
++$(objpfx)$(multidir)/crti.o: $(objpfx)crti.o $(objpfx)$(multidir)
++ ln -f $< $@
++
++$(objpfx)$(multidir)/crtn.o: $(objpfx)crtn.o $(objpfx)$(multidir)
++ ln -f $< $@
++endif
++
+ generated += crti.S crtn.S defs.h pt-initfini.s
+ endif
+
+@@ -256,6 +313,21 @@
+ $(resolvobjdir)/libresolv.a
+ endif
+
++ifeq (yes,$(build-shared))
++$(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so
++$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library)
++
++$(objpfx)tst-tls1: $(objpfx)tst-tls1mod.so $(shared-thread-library)
++
++tests: $(objpfx)tst-tls2.out
++$(objpfx)tst-tls2.out: tst-tls2.sh $(objpfx)tst-tls1 \
++ $(objpfx)tst-tls1moda.so $(objpfx)tst-tls1modb.so \
++ $(objpfx)tst-tls1modc.so $(objpfx)tst-tls1modd.so \
++ $(objpfx)tst-tls1mode.so $(objpfx)tst-tls1modf.so
++ $(SHELL) -e tst-tls2.sh $(common-objpfx) $(elf-objpfx) \
++ $(rtld-installed-name)
++endif
++
+ ifeq (no,$(cross-compiling))
+ ifeq (yes,$(build-shared))
+ tests: $(objpfx)tst-signal.out $(objpfx)tst-cancel-wrappers.out
+--- glibc-2.3.2/linuxthreads/Versions 2003-01-02 17:33:45.000000000 -0500
++++ glibc-2.3.2/linuxthreads/Versions 2003-09-19 22:37:03.000000000 -0400
+@@ -7,6 +7,7 @@
+ pthread_attr_setschedparam; pthread_attr_setschedpolicy;
+ pthread_attr_setscope; pthread_cond_broadcast; pthread_cond_destroy;
+ pthread_cond_init; pthread_cond_signal; pthread_cond_wait;
++ pthread_cond_timedwait;
+ pthread_condattr_destroy; pthread_condattr_init; pthread_equal;
+ pthread_exit; pthread_getschedparam; pthread_mutex_destroy;
+ pthread_mutex_init; pthread_mutex_lock; pthread_mutex_unlock;
+@@ -20,7 +21,7 @@
+ # Changed pthread_cond_t.
+ pthread_cond_init; pthread_cond_destroy;
+ pthread_cond_wait; pthread_cond_signal;
+- pthread_cond_broadcast;
++ pthread_cond_broadcast; pthread_cond_timedwait;
+ }
+ GLIBC_PRIVATE {
+ # Internal libc interface to libpthread
+@@ -31,7 +32,8 @@
+
+ __libc_creat; __libc_poll; __libc_pselect; __libc_select;
+ __libc_sigpause; __libc_sigsuspend; __libc_sigwait; __libc_sigwaitinfo;
+- __libc_waitid; __libc___xpg_sigpause;
++ __libc_waitid; __libc___xpg_sigpause; __librt_enable_asynccancel;
++ __librt_disable_asynccancel; __librt_multiple_threads;
+ }
+ }
+
+@@ -80,7 +82,7 @@
+ sigwait;
+
+ # Protected names for functions used in other shared objects.
+- __pthread_atfork; __pthread_initialize; __pthread_getspecific;
++ __pthread_atfork; __pthread_getspecific;
+ __pthread_key_create; __pthread_mutex_destroy; __pthread_mutex_init;
+ __pthread_mutex_lock; __pthread_mutex_trylock; __pthread_mutex_unlock;
+ __pthread_mutexattr_destroy; __pthread_mutexattr_init;
+@@ -147,7 +149,7 @@
+ pthread_getcpuclockid;
+ pthread_barrier_destroy; pthread_barrier_init; pthread_barrier_wait;
+ pthread_barrierattr_destroy; pthread_barrierattr_init;
+- pthread_barrierattr_getpshared; pthread_barrierattr_setpshared;
++ pthread_barrierattr_setpshared;
+ pthread_mutex_timedlock;
+ pthread_rwlock_timedrdlock; pthread_rwlock_timedwrlock;
+
+@@ -170,6 +172,7 @@
+ }
+ GLIBC_PRIVATE {
+ # Internal libc interface to libpthread
++ __pthread_initialize;
+ __pthread_kill_other_threads_np;
+ }
+ }
+--- glibc-2.3.2/linuxthreads/alloca_cutoff.c 2002-12-28 05:06:33.000000000 -0500
++++ glibc-2.3.2/linuxthreads/alloca_cutoff.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Determine whether block of given size can be allocated on the stack or not.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,6 +20,7 @@
+ #include <alloca.h>
+ #include <stdlib.h>
+ #include <sys/param.h>
++#include "internals.h"
+ #include <sysdep-cancel.h>
+
+ int
+--- glibc-2.3.2/linuxthreads/attr.c 2002-12-17 17:49:21.000000000 -0500
++++ glibc-2.3.2/linuxthreads/attr.c 2003-09-19 22:37:03.000000000 -0400
+@@ -15,6 +15,9 @@
+ /* Handling of thread attributes */
+
+ #include <errno.h>
++#include <inttypes.h>
++#include <stdio.h>
++#include <stdio_ext.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <sys/param.h>
+@@ -220,7 +223,44 @@
+ attr->__stacksize = stacksize;
+ return 0;
+ }
++
++#if PTHREAD_STACK_MIN == 16384
+ weak_alias (__pthread_attr_setstacksize, pthread_attr_setstacksize)
++#else
++versioned_symbol (libpthread, __pthread_attr_setstacksize,
++ pthread_attr_setstacksize, GLIBC_2_3_3);
++
++# if SHLIB_COMPAT(libpthread, GLIBC_2_1, GLIBC_2_3_3)
++
++int __old_pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize)
++{
++# ifdef FLOATING_STACKS
++ /* We have to check against the maximum allowed stack size. This is no
++ problem if the manager is already started and we determined it. If
++ this hasn't happened, we have to find the limit outself. */
++ if (__pthread_max_stacksize == 0)
++ __pthread_init_max_stacksize ();
++
++ if (stacksize > __pthread_max_stacksize)
++ return EINVAL;
++# else
++ /* We have a fixed size limit. */
++ if (stacksize > STACK_SIZE)
++ return EINVAL;
++# endif
++
++ /* We don't accept value smaller than old PTHREAD_STACK_MIN. */
++ if (stacksize < 16384)
++ return EINVAL;
++
++ attr->__stacksize = stacksize;
++ return 0;
++}
++compat_symbol (libpthread, __old_pthread_attr_setstacksize,
++ pthread_attr_setstacksize, GLIBC_2_1);
++# endif
++#endif
++
+
+ int __pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize)
+ {
+@@ -251,7 +291,41 @@
+
+ return err;
+ }
++
++#if PTHREAD_STACK_MIN == 16384
+ weak_alias (__pthread_attr_setstack, pthread_attr_setstack)
++#else
++versioned_symbol (libpthread, __pthread_attr_setstack, pthread_attr_setstack,
++ GLIBC_2_3_3);
++# if SHLIB_COMPAT(libpthread, GLIBC_2_2, GLIBC_2_3_3)
++int __old_pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr,
++ size_t stacksize)
++{
++ int err;
++
++ if ((((uintptr_t) stackaddr)
++ & (__alignof__ (struct _pthread_descr_struct) - 1)) != 0)
++ err = EINVAL;
++ else
++ err = __old_pthread_attr_setstacksize (attr, stacksize);
++ if (err == 0)
++ {
++# ifndef _STACK_GROWS_UP
++ attr->__stackaddr = (char *) stackaddr + stacksize;
++# else
++ attr->__stackaddr = stackaddr;
++# endif
++ attr->__stackaddr_set = 1;
++ }
++
++ return err;
++}
++
++compat_symbol (libpthread, __old_pthread_attr_setstack, pthread_attr_setstack,
++ GLIBC_2_2);
++
++# endif
++#endif
+
+ int __pthread_attr_getstack (const pthread_attr_t *attr, void **stackaddr,
+ size_t *stacksize)
+@@ -273,6 +347,7 @@
+ {
+ pthread_handle handle = thread_handle (thread);
+ pthread_descr descr;
++ int ret = 0;
+
+ if (handle == NULL)
+ return ENOENT;
+@@ -293,6 +368,7 @@
+
+ attr->__inheritsched = descr->p_inheritsched;
+ attr->__scope = PTHREAD_SCOPE_SYSTEM;
++
+ #ifdef _STACK_GROWS_DOWN
+ # ifdef USE_TLS
+ attr->__stacksize = descr->p_stackaddr - (char *)descr->p_guardaddr
+@@ -328,5 +404,70 @@
+ # endif
+ #endif
+
++#ifdef USE_TLS
++ if (attr->__stackaddr == NULL)
++#else
++ if (descr == &__pthread_initial_thread)
++#endif
++ {
++ /* Defined in ld.so. */
++ extern void *__libc_stack_end;
++
++ /* Stack size limit. */
++ struct rlimit rl;
++
++ /* The safest way to get the top of the stack is to read
++ /proc/self/maps and locate the line into which
++ __libc_stack_end falls. */
++ FILE *fp = fopen ("/proc/self/maps", "rc");
++ if (fp == NULL)
++ ret = errno;
++ /* We need the limit of the stack in any case. */
++ else if (getrlimit (RLIMIT_STACK, &rl) != 0)
++ ret = errno;
++ else
++ {
++ /* We need no locking. */
++ __fsetlocking (fp, FSETLOCKING_BYCALLER);
++
++ /* Until we found an entry (which should always be the case)
++ mark the result as a failure. */
++ ret = ENOENT;
++
++ char *line = NULL;
++ size_t linelen = 0;
++
++ while (! feof_unlocked (fp))
++ {
++ if (__getdelim (&line, &linelen, '\n', fp) <= 0)
++ break;
++
++ uintptr_t from;
++ uintptr_t to;
++ if (sscanf (line, "%" SCNxPTR "-%" SCNxPTR, &from, &to) == 2
++ && from <= (uintptr_t) __libc_stack_end
++ && (uintptr_t) __libc_stack_end < to)
++ {
++ /* Found the entry. Now we have the info we need. */
++ attr->__stacksize = rl.rlim_cur;
++ attr->__stackaddr = (void *) to;
++
++ /* The limit might be too high. This is a bogus
++ situation but try to avoid making it worse. */
++ if ((size_t) attr->__stacksize > (size_t) attr->__stackaddr)
++ attr->__stacksize = (size_t) attr->__stackaddr;
++
++ /* We succeed and no need to look further. */
++ ret = 0;
++ break;
++ }
++ }
++
++ fclose (fp);
++ free (line);
++ }
++ }
++
+ return 0;
++
+ }
+--- glibc-2.3.2/linuxthreads/barrier.c 2002-08-27 00:52:34.000000000 -0400
++++ glibc-2.3.2/linuxthreads/barrier.c 2003-09-19 22:37:03.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* POSIX barrier implementation for LinuxThreads.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Kaz Kylheku <kaz@ashi.footprints.net>, 2000.
+
+@@ -110,7 +110,7 @@
+ __pthread_barrierattr_getpshared(const pthread_barrierattr_t *attr,
+ int *pshared)
+ {
+- *pshared = attr->__pshared;
++ *pshared = PTHREAD_PROCESS_PRIVATE;
+ return 0;
+ }
+
+@@ -120,6 +120,9 @@
+ if (pshared != PTHREAD_PROCESS_PRIVATE && pshared != PTHREAD_PROCESS_SHARED)
+ return EINVAL;
+
+- attr->__pshared = pshared;
++ /* For now it is not possible to shared a conditional variable. */
++ if (pshared != PTHREAD_PROCESS_PRIVATE)
++ return ENOSYS;
++
+ return 0;
+ }
+--- glibc-2.3.2/linuxthreads/descr.h 2002-12-28 05:06:33.000000000 -0500
++++ glibc-2.3.2/linuxthreads/descr.h 2003-09-19 22:37:03.000000000 -0400
+@@ -23,6 +23,7 @@
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <hp-timing.h>
++#include <tls.h>
+
+ /* Fast thread-specific data internal to libc. */
+ enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
+@@ -106,22 +107,30 @@
+
+ union dtv;
+
+-
+-struct _pthread_descr_struct {
+- /* XXX Remove this union for IA-64 style TLS module */
+- union {
+- struct {
++struct _pthread_descr_struct
++{
++#if !defined USE_TLS || !TLS_DTV_AT_TP
++ /* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */
++ union
++ {
++ struct
++ {
+ void *tcb; /* Pointer to the TCB. This is not always
+ the address of this thread descriptor. */
+ union dtv *dtvp;
+ pthread_descr self; /* Pointer to this structure */
+ int multiple_threads;
+-#ifdef NEED_DL_SYSINFO
++# ifdef NEED_DL_SYSINFO
+ uintptr_t sysinfo;
+-#endif
++# endif
+ } data;
+ void *__padding[16];
+ } p_header;
++# define p_multiple_threads p_header.data.multiple_threads
++#elif TLS_MULTIPLE_THREADS_IN_TCB
++ int p_multiple_threads;
++#endif
++
+ pthread_descr p_nextlive, p_prevlive;
+ /* Double chaining of active threads */
+ pthread_descr p_nextwaiting; /* Next element in the queue holding the thr */
+@@ -154,8 +163,8 @@
+ int * p_h_errnop; /* pointer to used h_errno variable */
+ int p_h_errno; /* error returned by last netdb function */
+ struct __res_state *p_resp; /* Pointer to resolver state */
+- struct __res_state p_res; /* per-thread resolver state */
+ #endif
++ struct __res_state p_res; /* per-thread resolver state */
+ int p_userstack; /* nonzero if the user provided the stack */
+ void *p_guardaddr; /* address of guard area or NULL */
+ size_t p_guardsize; /* size of guard area */
+@@ -208,6 +217,7 @@
+ /* Descriptor of the manager thread */
+
+ extern struct _pthread_descr_struct __pthread_manager_thread;
++extern pthread_descr __pthread_manager_threadp attribute_hidden;
+
+ /* Indicate whether at least one thread has a user-defined stack (if 1),
+ or all threads have stacks supplied by LinuxThreads (if 0). */
+--- glibc-2.3.2/linuxthreads/forward.c 2003-01-02 17:33:45.000000000 -0500
++++ glibc-2.3.2/linuxthreads/forward.c 2003-09-19 22:37:03.000000000 -0400
+@@ -128,6 +128,15 @@
+ #endif
+ versioned_symbol (libc, __pthread_cond_wait, pthread_cond_wait, GLIBC_2_3_2);
+
++FORWARD (__pthread_cond_timedwait,
++ (pthread_cond_t *cond, pthread_mutex_t *mutex,
++ const struct timespec *abstime), (cond, mutex, abstime), 0)
++#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3_2)
++strong_alias (__pthread_cond_timedwait, __pthread_cond_timedwait_2_0)
++compat_symbol (libc, __pthread_cond_timedwait_2_0, pthread_cond_timedwait, GLIBC_2_0);
++#endif
++versioned_symbol (libc, __pthread_cond_timedwait, pthread_cond_timedwait, GLIBC_2_3_2);
++
+
+ FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
+ (thread1, thread2), 1)
+--- glibc-2.3.2/linuxthreads/internals.h 2003-01-06 19:02:26.000000000 -0500
++++ glibc-2.3.2/linuxthreads/internals.h 2003-09-19 22:37:03.000000000 -0400
+@@ -29,6 +29,7 @@
+ #include "descr.h"
+
+ #include "semaphore.h"
++#include <pthread-functions.h>
+
+ #ifndef THREAD_GETMEM
+ # define THREAD_GETMEM(descr, member) descr->member
+@@ -256,6 +257,7 @@
+
+ /* Defined and used in libc.so. */
+ extern int __libc_multiple_threads attribute_hidden;
++extern int __librt_multiple_threads;
+
+ /* Debugging */
+
+@@ -352,12 +354,16 @@
+ const pthread_condattr_t *cond_attr);
+ extern int __pthread_cond_destroy (pthread_cond_t *cond);
+ extern int __pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex);
++extern int __pthread_cond_timedwait (pthread_cond_t *cond,
++ pthread_mutex_t *mutex,
++ const struct timespec *abstime);
+ extern int __pthread_cond_signal (pthread_cond_t *cond);
+ extern int __pthread_cond_broadcast (pthread_cond_t *cond);
+ extern int __pthread_condattr_init (pthread_condattr_t *attr);
+ extern int __pthread_condattr_destroy (pthread_condattr_t *attr);
+ extern pthread_t __pthread_self (void);
+ extern pthread_descr __pthread_thread_self (void);
++extern pthread_descr __pthread_self_stack (void) attribute_hidden;
+ extern int __pthread_equal (pthread_t thread1, pthread_t thread2);
+ extern void __pthread_exit (void *retval);
+ extern int __pthread_getschedparam (pthread_t thread, int *policy,
+@@ -377,6 +383,8 @@
+
+ extern void __pthread_wait_for_restart_signal(pthread_descr self);
+
++extern void __pthread_sigsuspend (const sigset_t *mask) attribute_hidden;
++
+ extern int __pthread_yield (void);
+
+ extern int __pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
+@@ -465,9 +473,12 @@
+ extern void __libc_disable_asynccancel (int oldtype)
+ internal_function attribute_hidden;
+
++/* The two functions are in libc.so and are exported. */
++extern int __librt_enable_asynccancel (void);
++extern void __librt_disable_asynccancel (int oldtype) internal_function;
++
+ extern void __pthread_cleanup_upto (__jmp_buf target,
+ char *targetframe) attribute_hidden;
+-struct fork_block;
+ extern pid_t __pthread_fork (struct fork_block *b) attribute_hidden;
+
+ #if !defined NOT_IN_libc
+@@ -478,7 +489,7 @@
+ # define LIBC_CANCEL_HANDLED() \
+ __asm (".globl " __SYMBOL_PREFIX "__libc_enable_asynccancel"); \
+ __asm (".globl " __SYMBOL_PREFIX "__libc_disable_asynccancel")
+-#elif defined NOT_IN_libc && defined IS_IN_libpthread
++#elif defined IS_IN_libpthread
+ # define LIBC_CANCEL_ASYNC() \
+ __pthread_enable_asynccancel ()
+ # define LIBC_CANCEL_RESET(oldtype) \
+@@ -486,70 +497,20 @@
+ # define LIBC_CANCEL_HANDLED() \
+ __asm (".globl " __SYMBOL_PREFIX "__pthread_enable_asynccancel"); \
+ __asm (".globl " __SYMBOL_PREFIX "__pthread_disable_asynccancel")
++#elif defined IS_IN_librt
++# define LIBC_CANCEL_ASYNC() \
++ __librt_enable_asynccancel ()
++# define LIBC_CANCEL_RESET(oldtype) \
++ __librt_disable_asynccancel (oldtype)
++# define LIBC_CANCEL_HANDLED() \
++ __asm (".globl " __SYMBOL_PREFIX "__librt_enable_asynccancel"); \
++ __asm (".globl " __SYMBOL_PREFIX "__librt_disable_asynccancel")
+ #else
+ # define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */
+ # define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */
+ # define LIBC_CANCEL_HANDLED() /* Nothing. */
+ #endif
+
+-/* Data type shared with libc. The libc uses it to pass on calls to
+- the thread functions. */
+-struct pthread_functions
+-{
+- pid_t (*ptr_pthread_fork) (struct fork_block *);
+- int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
+- int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *);
+- int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *);
+- int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
+- int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
+- int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
+- int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
+- int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
+- struct sched_param *);
+- int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
+- const struct sched_param *);
+- int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
+- int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
+- int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
+- int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
+- int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
+- int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
+- int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
+- int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
+- int (*ptr___pthread_cond_init) (pthread_cond_t *,
+- const pthread_condattr_t *);
+- int (*ptr___pthread_cond_signal) (pthread_cond_t *);
+- int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
+- int (*ptr_pthread_equal) (pthread_t, pthread_t);
+- void (*ptr___pthread_exit) (void *);
+- int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
+- int (*ptr_pthread_setschedparam) (pthread_t, int,
+- const struct sched_param *);
+- int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
+- int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
+- const pthread_mutexattr_t *);
+- int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
+- int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
+- int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
+- pthread_t (*ptr_pthread_self) (void);
+- int (*ptr_pthread_setcancelstate) (int, int *);
+- int (*ptr_pthread_setcanceltype) (int, int *);
+- void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
+- void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
+- char *targetframe);
+- pthread_descr (*ptr_pthread_thread_self) (void);
+- int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
+- void * (*ptr_pthread_internal_tsd_get) (int key);
+- void ** __attribute__ ((__const__))
+- (*ptr_pthread_internal_tsd_address) (int key);
+- int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
+- struct sigaction *oact);
+- int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
+- int (*ptr_pthread_raise) (int sig);
+-};
+-
+-/* Variable in libc.so. */
+-extern struct pthread_functions __libc_pthread_functions attribute_hidden;
+ extern int * __libc_pthread_init (const struct pthread_functions *functions);
+
+ #if !defined NOT_IN_libc && !defined FLOATING_STACKS
+@@ -562,4 +523,30 @@
+ # endif
+ #endif
+
++#ifndef USE_TLS
++# define __manager_thread (&__pthread_manager_thread)
++#else
++# define __manager_thread __pthread_manager_threadp
++#endif
++
++extern inline __attribute__((always_inline)) pthread_descr
++check_thread_self (void)
++{
++ pthread_descr self = thread_self ();
++#if defined THREAD_SELF && defined INIT_THREAD_SELF
++ if (self == __manager_thread)
++ {
++ /* A new thread might get a cancel signal before it is fully
++ initialized, so that the thread register might still point to the
++ manager thread. Double check that this is really the manager
++ thread. */
++ self = __pthread_self_stack();
++ if (self != __manager_thread)
++ /* Oops, thread_self() isn't working yet.. */
++ INIT_THREAD_SELF(self, self->p_nr);
++ }
++#endif
++ return self;
++}
++
+ #endif /* internals.h */
+--- glibc-2.3.2/linuxthreads/libc-cancellation.c 2003-01-02 18:26:04.000000000 -0500
++++ glibc-2.3.2/linuxthreads/libc-cancellation.c 2003-08-21 08:37:03.000000000 -0400
+@@ -31,7 +31,8 @@
+ weak_extern (__pthread_do_exit)
+ # endif
+
+-int __libc_multiple_threads attribute_hidden;
++int __libc_multiple_threads attribute_hidden __attribute__((nocommon));
++strong_alias (__libc_multiple_threads, __librt_multiple_threads);
+
+ /* The next two functions are similar to pthread_setcanceltype() but
+ more specialized for the use in the cancelable functions like write().
+@@ -49,6 +50,7 @@
+ (PTHREAD_CANCELED, CURRENT_STACK_FRAME), 0);
+ return oldtype;
+ }
++strong_alias (__libc_enable_asynccancel, __librt_enable_asynccancel)
+
+ void
+ internal_function attribute_hidden
+@@ -57,5 +59,6 @@
+ pthread_descr self = thread_self();
+ LIBC_THREAD_SETMEM(self, p_canceltype, oldtype);
+ }
++strong_alias (__libc_disable_asynccancel, __librt_disable_asynccancel)
+
+ #endif
+--- glibc-2.3.2/linuxthreads/libc-tls-loc.c 2002-11-14 22:37:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/libc-tls-loc.c 2003-08-21 08:37:03.000000000 -0400
+@@ -43,7 +43,7 @@
+ struct __res_state *
+ __res_state (void)
+ {
+- return &_res;
++ return __resp;
+ }
+
+ #endif
+--- glibc-2.3.2/linuxthreads/manager.c 2003-01-12 03:37:35.000000000 -0500
++++ glibc-2.3.2/linuxthreads/manager.c 2003-08-21 08:37:03.000000000 -0400
+@@ -28,6 +28,7 @@
+ #include <sys/time.h>
+ #include <sys/wait.h> /* for waitpid macros */
+ #include <locale.h> /* for __uselocale */
++#include <resolv.h> /* for __resp */
+
+ #include <ldsodefs.h>
+ #include "pthread.h"
+@@ -287,6 +288,9 @@
+ /* Initialize thread-locale current locale to point to the global one.
+ With __thread support, the variable's initializer takes care of this. */
+ __uselocale (LC_GLOBAL_LOCALE);
++#else
++ /* Initialize __resp. */
++ __resp = &self->p_res;
+ #endif
+ /* Make gdb aware of new thread */
+ if (__pthread_threads_debug && __pthread_sig_debug > 0) {
+@@ -591,8 +595,8 @@
+ if (new_thread == NULL)
+ return EAGAIN;
+ # if TLS_DTV_AT_TP
+- /* pthread_descr is right below TP. */
+- --new_thread;
++ /* pthread_descr is below TP. */
++ new_thread = (pthread_descr) ((char *) new_thread - TLS_PRE_TCB_SIZE);
+ # endif
+ #else
+ /* Prevent warnings. */
+@@ -612,7 +616,7 @@
+ {
+ #ifdef USE_TLS
+ # if TLS_DTV_AT_TP
+- ++new_thread;
++ new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
+ # endif
+ _dl_deallocate_tls (new_thread, true);
+ #endif
+@@ -638,13 +642,13 @@
+ new_thread_id = sseg + pthread_threads_counter;
+ /* Initialize the thread descriptor. Elements which have to be
+ initialized to zero already have this value. */
+-#if defined USE_TLS && TLS_DTV_AT_TP
+- new_thread->p_header.data.tcb = new_thread + 1;
+-#else
++#if !defined USE_TLS || !TLS_DTV_AT_TP
+ new_thread->p_header.data.tcb = new_thread;
+-#endif
+ new_thread->p_header.data.self = new_thread;
+- new_thread->p_header.data.multiple_threads = 1;
++#endif
++#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
++ new_thread->p_multiple_threads = 1;
++#endif
+ new_thread->p_tid = new_thread_id;
+ new_thread->p_lock = &(__pthread_handles[sseg].h_lock);
+ new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE;
+@@ -806,7 +810,7 @@
+ }
+ #ifdef USE_TLS
+ # if TLS_DTV_AT_TP
+- ++new_thread;
++ new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
+ # endif
+ _dl_deallocate_tls (new_thread, true);
+ #endif
+@@ -896,7 +900,7 @@
+
+ #ifdef USE_TLS
+ # if TLS_DTV_AT_TP
+- ++th;
++ th = (pthread_descr) ((char *) th + TLS_PRE_TCB_SIZE);
+ # endif
+ _dl_deallocate_tls (th, true);
+ #endif
+--- glibc-2.3.2/linuxthreads/pthread.c 2003-01-16 13:14:41.000000000 -0500
++++ glibc-2.3.2/linuxthreads/pthread.c 2003-09-19 22:37:04.000000000 -0400
+@@ -55,7 +55,8 @@
+ #ifdef USE_TLS
+
+ /* We need only a few variables. */
+-static pthread_descr manager_thread;
++#define manager_thread __pthread_manager_threadp
++pthread_descr __pthread_manager_threadp attribute_hidden;
+
+ #else
+
+@@ -260,6 +261,7 @@
+ .ptr___pthread_cond_init = __pthread_cond_init,
+ .ptr___pthread_cond_signal = __pthread_cond_signal,
+ .ptr___pthread_cond_wait = __pthread_cond_wait,
++ .ptr___pthread_cond_timedwait = __pthread_cond_timedwait,
+ .ptr_pthread_equal = __pthread_equal,
+ .ptr___pthread_exit = __pthread_exit,
+ .ptr_pthread_getschedparam = __pthread_getschedparam,
+@@ -462,6 +464,44 @@
+ # endif
+ #endif
+
++#ifdef USE_TLS
++static inline void __attribute__((always_inline))
++init_one_static_tls (pthread_descr descr, struct link_map *map)
++{
++# if TLS_TCB_AT_TP
++ dtv_t *dtv = GET_DTV (descr);
++ void *dest = (char *) descr - map->l_tls_offset;
++# elif TLS_DTV_AT_TP
++ dtv_t *dtv = GET_DTV ((pthread_descr) ((char *) descr + TLS_PRE_TCB_SIZE));
++ void *dest = (char *) descr + map->l_tls_offset + TLS_PRE_TCB_SIZE;
++# else
++# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
++# endif
++
++ /* Fill in the DTV slot so that a later LD/GD access will find it. */
++ dtv[map->l_tls_modid].pointer = dest;
++
++ /* Initialize the memory. */
++ memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
++ '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
++}
++
++static void
++__pthread_init_static_tls (struct link_map *map)
++{
++ size_t i;
++
++ for (i = 0; i < PTHREAD_THREADS_MAX; ++i)
++ if (__pthread_handles[i].h_descr != NULL && i != 1)
++ {
++ __pthread_lock (&__pthread_handles[i].h_lock, NULL);
++ if (__pthread_handles[i].h_descr != NULL)
++ init_one_static_tls (__pthread_handles[i].h_descr, map);
++ __pthread_unlock (&__pthread_handles[i].h_lock);
++ }
++}
++#endif
++
+ static void pthread_initialize(void)
+ {
+ struct sigaction sa;
+@@ -529,6 +569,10 @@
+ sigemptyset(&mask);
+ sigaddset(&mask, __pthread_sig_restart);
+ sigprocmask(SIG_BLOCK, &mask, NULL);
++ /* And unblock __pthread_sig_cancel if it has been blocked. */
++ sigdelset(&mask, __pthread_sig_restart);
++ sigaddset(&mask, __pthread_sig_cancel);
++ sigprocmask(SIG_UNBLOCK, &mask, NULL);
+ /* Register an exit function to kill all other threads. */
+ /* Do it early so that user-registered atexit functions are called
+ before pthread_*exit_process. */
+@@ -546,6 +590,19 @@
+ /* Transfer the old value from the dynamic linker's internal location. */
+ *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
+ GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
++
++ /* Make __rtld_lock_{,un}lock_recursive use pthread_mutex_{,un}lock,
++ keep the lock count from the ld.so implementation. */
++ GL(dl_rtld_lock_recursive) = (void *) __pthread_mutex_lock;
++ GL(dl_rtld_unlock_recursive) = (void *) __pthread_mutex_unlock;
++ unsigned int rtld_lock_count = GL(dl_load_lock).mutex.__m_count;
++ GL(dl_load_lock).mutex.__m_count = 0;
++ while (rtld_lock_count-- > 0)
++ __pthread_mutex_lock (&GL(dl_load_lock).mutex);
++#endif
++
++#ifdef USE_TLS
++ GL(dl_init_static_tls) = &__pthread_init_static_tls;
+ #endif
+ }
+
+@@ -566,8 +623,10 @@
+ #endif
+
+ __pthread_multiple_threads = 1;
+- __pthread_main_thread->p_header.data.multiple_threads = 1;
+- * __libc_multiple_threads_ptr = 1;
++#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
++ __pthread_main_thread->p_multiple_threads = 1;
++#endif
++ *__libc_multiple_threads_ptr = 1;
+
+ #ifndef HAVE_Z_NODELETE
+ if (__builtin_expect (&__dso_handle != NULL, 1))
+@@ -606,14 +665,18 @@
+ # elif TLS_DTV_AT_TP
+ /* pthread_descr is located right below tcbhead_t which _dl_allocate_tls
+ returns. */
+- mgr = (pthread_descr) tcbp - 1;
++ mgr = (pthread_descr) ((char *) tcbp - TLS_PRE_TCB_SIZE);
+ # endif
+ __pthread_handles[1].h_descr = manager_thread = mgr;
+
+ /* Initialize the descriptor. */
++#if !defined USE_TLS || !TLS_DTV_AT_TP
+ mgr->p_header.data.tcb = tcbp;
+ mgr->p_header.data.self = mgr;
+ mgr->p_header.data.multiple_threads = 1;
++#elif TLS_MULTIPLE_THREADS_IN_TCB
++ mgr->p_multiple_threads = 1;
++#endif
+ mgr->p_lock = &__pthread_handles[1].h_lock;
+ # ifndef HAVE___THREAD
+ mgr->p_errnop = &mgr->p_errno;
+@@ -834,7 +897,7 @@
+
+ #else
+
+-static pthread_descr thread_self_stack(void)
++pthread_descr __pthread_self_stack(void)
+ {
+ char *sp = CURRENT_STACK_FRAME;
+ pthread_handle h;
+@@ -961,7 +1024,7 @@
+
+ static void pthread_handle_sigrestart(int sig)
+ {
+- pthread_descr self = thread_self();
++ pthread_descr self = check_thread_self();
+ THREAD_SETMEM(self, p_signal, sig);
+ if (THREAD_GETMEM(self, p_signal_jmp) != NULL)
+ siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1);
+@@ -974,31 +1037,13 @@
+
+ static void pthread_handle_sigcancel(int sig)
+ {
+- pthread_descr self = thread_self();
++ pthread_descr self = check_thread_self();
+ sigjmp_buf * jmpbuf;
+
+ if (self == manager_thread)
+ {
+-#ifdef THREAD_SELF
+- /* A new thread might get a cancel signal before it is fully
+- initialized, so that the thread register might still point to the
+- manager thread. Double check that this is really the manager
+- thread. */
+- pthread_descr real_self = thread_self_stack();
+- if (real_self == manager_thread)
+- {
+- __pthread_manager_sighandler(sig);
+- return;
+- }
+- /* Oops, thread_self() isn't working yet.. */
+- self = real_self;
+-# ifdef INIT_THREAD_SELF
+- INIT_THREAD_SELF(self, self->p_nr);
+-# endif
+-#else
+ __pthread_manager_sighandler(sig);
+ return;
+-#endif
+ }
+ if (__builtin_expect (__pthread_exit_requested, 0)) {
+ /* Main thread should accumulate times for thread manager and its
+@@ -1138,7 +1183,8 @@
+ sigdelset(&mask, __pthread_sig_restart); /* Unblock the restart signal */
+ THREAD_SETMEM(self, p_signal, 0);
+ do {
+- sigsuspend(&mask); /* Wait for signal */
++ __pthread_sigsuspend(&mask); /* Wait for signal. Must not be a
++ cancellation point. */
+ } while (THREAD_GETMEM(self, p_signal) !=__pthread_sig_restart);
+
+ READ_MEMORY_BARRIER(); /* See comment in __pthread_restart_new */
+--- glibc-2.3.2/linuxthreads/sighandler.c 2002-05-03 03:29:18.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sighandler.c 2003-09-19 22:37:04.000000000 -0400
+@@ -22,7 +22,8 @@
+ {
+ pthread_descr self;
+ char * in_sighandler;
+- self = thread_self();
++ self = check_thread_self();
++
+ /* If we're in a sigwait operation, just record the signal received
+ and return without calling the user's handler */
+ if (THREAD_GETMEM(self, p_sigwaiting)) {
+@@ -46,7 +47,8 @@
+ {
+ pthread_descr self;
+ char * in_sighandler;
+- self = thread_self();
++ self = check_thread_self();
++
+ /* If we're in a sigwait operation, just record the signal received
+ and return without calling the user's handler */
+ if (THREAD_GETMEM(self, p_sigwaiting)) {
+--- glibc-2.3.2/linuxthreads/spinlock.h 2001-05-24 19:23:00.000000000 -0400
++++ glibc-2.3.2/linuxthreads/spinlock.h 2003-08-21 08:37:03.000000000 -0400
+@@ -196,7 +196,7 @@
+ }
+
+
+-static inline void
++static inline __attribute__((always_inline)) void
+ __pthread_set_own_extricate_if (pthread_descr self, pthread_extricate_if *peif)
+ {
+ /* Only store a non-null peif if the thread has cancellation enabled.
+--- glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2002-02-08 20:55:16.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2003-08-21 08:37:03.000000000 -0400
+@@ -45,18 +45,16 @@
+ /*@_init_PROLOG_BEGINS*/ \n\
+ .section .init, \"ax\", @progbits \n\
+ .globl _init \n\
+- .ent _init \n\
++ .type _init,@function \n\
++ .usepv _init,std \n\
+ _init: \n\
+ ldgp $29, 0($27) \n\
+ subq $30, 16, $30 \n\
+ stq $26, 0($30) \n\
+ stq $29, 8($30) \n\
+- .prologue 1 \n\
+ jsr $26, __pthread_initialize_minimal \n\
+ ldq $29, 8($30) \n\
+ .align 3 \n\
+- .end _init \n\
+- .size _init, 0 \n\
+ /*@_init_PROLOG_ENDS*/ \n\
+ \n\
+ /*@_init_EPILOG_BEGINS*/ \n\
+@@ -70,7 +68,8 @@
+ /*@_fini_PROLOG_BEGINS*/ \n\
+ .section .fini, \"ax\", @progbits \n\
+ .globl _fini \n\
+- .ent _fini \n\
++ .type _fini,@function \n\
++ .usepv _fini,std \n\
+ _fini: \n\
+ ldgp $29, 0($27) \n\
+ subq $30, 16, $30 \n\
+@@ -78,8 +77,6 @@
+ stq $29, 8($30) \n\
+ .prologue 1 \n\
+ .align 3 \n\
+- .end _fini \n\
+- .size _fini, 0 \n\
+ /*@_fini_PROLOG_ENDS*/ \n\
+ \n\
+ /*@_fini_EPILOG_BEGINS*/ \n\
+--- glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h 2002-09-09 01:18:20.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/alpha/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,7 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ Alpha version.
+- Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>.
+
+@@ -23,7 +24,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ #ifdef __linux__
+--- glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h 2002-08-27 00:52:35.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/arm/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ ARM version.
+- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Philip Blundell <philb@gnu.org>.
+
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h 2002-08-27 00:52:35.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/cris/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ CRIS version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,7 +22,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2002-08-27 00:52:35.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/hppa/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ hppa version.
+- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>.
+
+@@ -25,7 +25,7 @@
+ #include <bits/initspin.h>
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile 2002-12-28 16:07:50.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/i386/Makefile 2003-09-19 22:37:04.000000000 -0400
+@@ -6,15 +6,15 @@
+ # Most files must not be compiled without frame pointer since we need
+ # the frame base address which is stored in %ebp unless the frame pointer
+ # is optimized out.
+-CFLAGS-cancel.c += -fno-omit-frame-pointer
++CFLAGS-cancel.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
+ CFLAGS-condvar.c += -fno-omit-frame-pointer
+ CFLAGS-join.c += -fno-omit-frame-pointer
+-CFLAGS-manager.c += -fno-omit-frame-pointer
++CFLAGS-manager.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
+ CFLAGS-oldsemaphore.c += -fno-omit-frame-pointer
+-CFLAGS-pthread.c += -fno-omit-frame-pointer
++CFLAGS-pthread.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
+ CFLAGS-ptlongjmp.c += -fno-omit-frame-pointer
+ CFLAGS-semaphore.c += -fno-omit-frame-pointer
+-CFLAGS-sighandler.c += -fno-omit-frame-pointer
++CFLAGS-sighandler.c += -fno-omit-frame-pointer -mpreferred-stack-boundary=4
+ endif
+
+ ifeq ($(subdir),csu)
+--- glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h 2003-02-25 19:46:32.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/i386/i686/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ i686 version.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>.
+
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+ #include "kernel-features.h"
+
+--- glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h 2003-02-25 19:46:32.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/i386/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ i386 version.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>.
+
+@@ -24,7 +24,7 @@
+
+ #ifndef __ASSEMBLER__
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h 2003-02-25 19:46:32.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/i386/tls.h 2003-05-12 12:13:04.000000000 -0400
+@@ -119,7 +119,7 @@
+ # include "useldt.h" /* For the structure. */
+ # define TLS_DO_MODIFY_LDT_KERNEL_CHECK(doit) \
+ (__builtin_expect (GL(dl_osversion) < 131939, 0) \
+- ? "kernel too old for thread-local storage support" \
++ ? "kernel too old for thread-local storage support\n" \
+ : (doit))
+ # endif
+
+@@ -142,7 +142,7 @@
+ "d" (sizeof (ldt_entry))); \
+ __builtin_expect (result, 0) == 0 \
+ ? ({ asm ("movw %w0, %%gs" : : "q" ((nr) * 8 + 7)); NULL; }) \
+- : "cannot set up LDT for thread-local storage"; \
++ : "cannot set up LDT for thread-local storage\n"; \
+ }))
+
+ # define TLS_DO_SET_THREAD_AREA(descr, secondcall) \
+@@ -171,8 +171,8 @@
+
+ # ifdef __ASSUME_SET_THREAD_AREA_SYSCALL
+ # define TLS_SETUP_GS_SEGMENT(descr, secondcall) \
+- (TLS_DO_SET_THREAD_AREA (descr, firstcall) \
+- ? "set_thread_area failed when setting up thread-local storage" : NULL)
++ (TLS_DO_SET_THREAD_AREA (descr, secondcall) \
++ ? "set_thread_area failed when setting up thread-local storage\n" : NULL)
+ # elif defined __NR_set_thread_area
+ # define TLS_SETUP_GS_SEGMENT(descr, secondcall) \
+ (TLS_DO_SET_THREAD_AREA (descr, secondcall) \
+--- glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h 2002-12-18 17:49:52.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/i386/useldt.h 2003-04-24 20:05:57.000000000 -0400
+@@ -22,6 +22,7 @@
+ #ifndef __ASSEMBLER__
+ #include <stddef.h> /* For offsetof. */
+ #include <stdlib.h> /* For abort(). */
++#include <sysdep.h>
+
+
+ /* We don't want to include the kernel header. So duplicate the
+@@ -109,7 +110,9 @@
+ "int $0x80\n\t" \
+ USETLS_LOAD_EBX \
+ : "=&a" (__result) \
+- : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area)); \
++ : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area), \
++ "m" (ldt_entry) \
++ : "memory"); \
+ if (__result == 0) \
+ asm ("movw %w0, %%gs" :: "q" (__gs)); \
+ else \
+@@ -127,7 +130,9 @@
+ "int $0x80\n\t" \
+ USETLS_LOAD_EBX \
+ : "=&a" (__result) \
+- : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area)); \
++ : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area), \
++ "m" (ldt_entry) \
++ : "memory"); \
+ if (__result == 0) \
+ { \
+ __gs = (ldt_entry.entry_number << 3) + 3; \
+@@ -307,4 +312,3 @@
+ /* Maximum size of the stack if the rlimit is unlimited. */
+ #define ARCH_STACK_MAX_SIZE 8*1024*1024
+ #endif
+-
+--- glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c 2002-08-27 00:52:35.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/ia64/pspinlock.c 2003-03-15 15:02:09.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* POSIX spinlock implementation. ia64 version.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jes Sorensen <jes@linuxcare.com>
+
+@@ -21,6 +21,7 @@
+ #include <errno.h>
+ #include <pthread.h>
+ #include "internals.h"
++#include <ia64intrin.h>
+
+ /* This implementation is inspired by the implementation used in the
+ Linux kernel. */
+@@ -28,21 +29,15 @@
+ int
+ __pthread_spin_lock (pthread_spinlock_t *lock)
+ {
+- asm volatile
+- ("mov ar.ccv = r0\n\t"
+- "mov r3 = 1\n\t"
+- ";;\n"
+- "1:\n\t"
+- "ld4 r2 = %0\n\t"
+- ";;\n\t"
+- "cmp4.eq p0, p7 = r0, r2\n\t"
+- "(p7) br.cond.spnt.few 1b \n\t"
+- "cmpxchg4.acq r2 = %0, r3, ar.ccv\n\t"
+- ";;\n\t"
+- "cmp4.eq p0, p7 = r0, r2\n\t"
+- "(p7) br.cond.spnt.few 1b\n\t"
+- ";;\n"
+- :: "m" (lock) : "r2", "r3", "p7", "memory");
++ int *p = (int *) lock;
++
++ while (__builtin_expect (__sync_val_compare_and_swap_si (p, 0, 1), 0))
++ {
++ /* Spin without using the atomic instruction. */
++ do
++ __asm __volatile ("" : : : "memory");
++ while (*p);
++ }
+ return 0;
+ }
+ weak_alias (__pthread_spin_lock, pthread_spin_lock)
+@@ -51,16 +46,7 @@
+ int
+ __pthread_spin_trylock (pthread_spinlock_t *lock)
+ {
+- int oldval;
+-
+- asm volatile
+- ("mov ar.ccv = r0\n\t"
+- "mov r2 = 1\n\t"
+- ";;\n\t"
+- "cmpxchg4.acq %0 = %1, r2, ar.ccv\n\t"
+- ";;\n"
+- : "=r" (oldval) : "m" (lock) : "r2", "memory");
+- return oldval > 0 ? 0 : EBUSY;
++ return __sync_val_compare_and_swap_si ((int *) lock, 0, 1) == 0 ? 0 : EBUSY;
+ }
+ weak_alias (__pthread_spin_trylock, pthread_spin_trylock)
+
+--- glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/ia64/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -24,7 +24,7 @@
+ #include <ia64intrin.h>
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2003-01-16 13:20:08.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400
+@@ -3,7 +3,7 @@
+
+ --
+ #ifdef USE_TLS
+-MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.multiple_threads) - sizeof (struct _pthread_descr_struct)
++MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct)
+ #else
+ MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
+ #endif
+--- glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h 2003-01-16 13:20:08.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/ia64/tls.h 2003-08-21 08:37:03.000000000 -0400
+@@ -84,7 +84,7 @@
+ special attention since 'errno' is not yet available and if the
+ operation can cause a failure 'errno' must not be touched. */
+ # define TLS_INIT_TP(tcbp, secondcall) \
+- (__thread_self = (tcbp), NULL)
++ (__thread_self = (__typeof (__thread_self)) (tcbp), NULL)
+
+ /* Return the address of the dtv for the current thread. */
+ # define THREAD_DTV() \
+@@ -98,6 +98,8 @@
+ # define INIT_THREAD_SELF(descr, nr) \
+ (__thread_self = (struct _pthread_descr_struct *)(descr) + 1)
+
++# define TLS_MULTIPLE_THREADS_IN_TCB 1
++
+ /* Get the thread descriptor definition. */
+ # include <linuxthreads/descr.h>
+
+--- glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h 2002-08-27 00:52:36.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/m68k/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ m68k version.
+- Copyright (C) 1996, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>.
+
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c 2002-08-27 00:52:36.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/mips/pspinlock.c 2003-03-15 15:02:09.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* POSIX spinlock implementation. MIPS version.
+- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,7 +32,9 @@
+ ("\t\t\t# spin_lock\n"
+ "1:\n\t"
+ ".set push\n\t"
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ ".set mips2\n\t"
++#endif
+ "ll %1,%3\n\t"
+ "li %2,1\n\t"
+ "bnez %1,1b\n\t"
+--- glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h 2002-08-27 00:52:36.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/mips/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,7 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+
+- Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.org>.
+ Based on the Alpha version by Richard Henderson <rth@tamu.edu>.
+@@ -26,7 +27,7 @@
+ #include <sys/tas.h>
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+@@ -60,12 +61,22 @@
+ ("/* Inline compare & swap */\n"
+ "1:\n\t"
+ ".set push\n\t"
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ ".set mips2\n\t"
++#endif
++#if defined _ABI64 && _MIPS_SIM == _ABI64
++ "lld %1,%5\n\t"
++#else
+ "ll %1,%5\n\t"
++#endif
+ "move %0,$0\n\t"
+ "bne %1,%3,2f\n\t"
+ "move %0,%4\n\t"
++#if defined _ABI64 && _MIPS_SIM == _ABI64
++ "scd %0,%2\n\t"
++#else
+ "sc %0,%2\n\t"
++#endif
+ ".set pop\n\t"
+ "beqz %0,1b\n"
+ "2:\n\t"
+--- glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2003-02-17 15:32:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,7 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ powerpc version.
+- Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,7 +26,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2002-09-14 04:55:04.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2003-09-19 22:37:04.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ powerpc version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,7 +25,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+@@ -34,7 +34,9 @@
+ /* For multiprocessor systems, we want to ensure all memory accesses
+ are completed before we reset a lock. On other systems, we still
+ need to make sure that the compiler has flushed everything to memory. */
+-#define MEMORY_BARRIER() __asm__ __volatile__ ("sync" : : : "memory")
++#define MEMORY_BARRIER() __asm__ __volatile__ ("lwsync" : : : "memory")
++#define READ_MEMORY_BARRIER() __asm__ __volatile__ ("lwsync" : : : "memory")
++#define WRITE_MEMORY_BARRIER() __asm__ __volatile__ ("eieio" : : : "memory")
+
+ /* We want the OS to assign stack addresses. */
+ #define FLOATING_STACKS 1
+@@ -57,6 +59,16 @@
+ /* Initialize the thread-unique value. */
+ #define INIT_THREAD_SELF(descr, nr) (__thread_self = (descr))
+
++/* Access to data in the thread descriptor is easy. */
++#define THREAD_GETMEM(descr, member) \
++ ((void) (descr), THREAD_SELF->member)
++#define THREAD_GETMEM_NC(descr, member) \
++ ((void) (descr), THREAD_SELF->member)
++#define THREAD_SETMEM(descr, member, value) \
++ ((void) (descr), THREAD_SELF->member = (value))
++#define THREAD_SETMEM_NC(descr, member, value) \
++ ((void) (descr), THREAD_SELF->member = (value))
++
+ /* Compare-and-swap for semaphores. */
+ /* note that test-and-set(x) is the same as !compare-and-swap(x, 0, 1) */
+
+--- glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c 2002-08-27 00:52:36.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/pspinlock.c 2003-08-21 08:37:03.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* POSIX spinlock implementation. PowerPC version.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -55,7 +55,7 @@
+ /* We can ignore the `pshared' parameter. Since we are busy-waiting
+ all processes which can access the memory location `lock' points
+ to can use the spinlock. */
+- *lock = 1;
++ *lock = 0;
+ return 0;
+ }
+ weak_alias (__pthread_spin_init, pthread_spin_init)
+--- glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2003-02-17 15:32:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400
+@@ -1,4 +1,24 @@
+ #include <sysdep.h>
+ #include <tls.h>
+
+-MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
++--
++
++-- This could go into powerpc32/ instead and conditionalize #include of it.
++#ifndef __powerpc64__
++
++# ifdef USE_TLS
++
++-- Abuse tls.h macros to derive offsets relative to the thread register.
++# undef __thread_register
++# define __thread_register ((void *) 0)
++# define thread_offsetof(mem) ((void *) &THREAD_SELF->p_##mem - (void *) 0)
++
++# else
++
++# define thread_offsetof(mem) offsetof (tcbhead_t, mem)
++
++# endif
++
++MULTIPLE_THREADS_OFFSET thread_offsetof (multiple_threads)
++
++#endif
+--- glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h 2003-02-27 17:40:10.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/powerpc/tls.h 2003-04-28 08:20:35.000000000 -0400
+@@ -32,15 +32,6 @@
+ void *pointer;
+ } dtv_t;
+
+-typedef struct
+-{
+- void *tcb; /* Pointer to the TCB. Not necessary the
+- thread descriptor used by libpthread. */
+- dtv_t *dtv;
+- void *self; /* Pointer to the thread descriptor. */
+- int multiple_threads;
+-} tcbhead_t;
+-
+ #else /* __ASSEMBLER__ */
+ # include <tcb-offsets.h>
+ #endif /* __ASSEMBLER__ */
+@@ -52,28 +43,38 @@
+
+ # ifndef __ASSEMBLER__
+
++/* This layout is actually wholly private and not affected by the ABI.
++ Nor does it overlap the pthread data structure, so we need nothing
++ extra here at all. */
++typedef struct
++{
++ dtv_t *dtv;
++} tcbhead_t;
++
+ /* This is the size of the initial TCB. */
+-# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
++# define TLS_INIT_TCB_SIZE 0
+
+ /* Alignment requirements for the initial TCB. */
+-# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
++# define TLS_INIT_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
+
+ /* This is the size of the TCB. */
+-# define TLS_TCB_SIZE sizeof (tcbhead_t)
++# define TLS_TCB_SIZE 0
+
+ /* Alignment requirements for the TCB. */
+-# define TLS_TCB_ALIGN __alignof__ (tcbhead_t)
++# define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
+
+ /* This is the size we need before TCB. */
+-# define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
++# define TLS_PRE_TCB_SIZE \
++ (sizeof (struct _pthread_descr_struct) \
++ + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
+
+-/* The following assumes that TP (R13) is points to the end of the
++/* The following assumes that TP (R2 or R13) is points to the end of the
+ TCB + 0x7000 (per the ABI). This implies that TCB address is
+- R13-(TLS_TCB_SIZE + 0x7000). As we define TLS_DTV_AT_TP we can
++ TP - 0x7000. As we define TLS_DTV_AT_TP we can
+ assume that the pthread_descr is allocated immediately ahead of the
+ TCB. This implies that the pthread_descr address is
+- R13-(TLS_PRE_TCB_SIZE + TLS_TCB_SIZE + 0x7000). */
+-# define TLS_TCB_OFFSET 0x7000
++ TP - (TLS_PRE_TCB_SIZE + 0x7000). */
++#define TLS_TCB_OFFSET 0x7000
+
+ /* The DTV is allocated at the TP; the TCB is placed elsewhere. */
+ /* This is not really true for powerpc64. We are following alpha
+@@ -83,13 +84,13 @@
+ /* Install the dtv pointer. The pointer passed is to the element with
+ index -1 which contain the length. */
+ # define INSTALL_DTV(TCBP, DTVP) \
+- (((tcbhead_t *) (TCBP))->dtv = (DTVP) + 1)
++ (((tcbhead_t *) (TCBP))[-1].dtv = (DTVP) + 1)
+
+ /* Install new dtv for current thread. */
+ # define INSTALL_NEW_DTV(DTV) (THREAD_DTV() = (DTV))
+
+ /* Return dtv of given thread descriptor. */
+-# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))->dtv)
++# define GET_DTV(TCBP) (((tcbhead_t *) (TCBP))[-1].dtv)
+
+ /* The global register variable is declared in pt-machine.h with
+ the wrong type, but the compiler doesn't like us declaring another. */
+@@ -99,47 +100,57 @@
+ special attention since 'errno' is not yet available and if the
+ operation can cause a failure 'errno' must not be touched. */
+ # define TLS_INIT_TP(TCBP, SECONDCALL) \
+- (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET + TLS_TCB_SIZE, 0)
++ (__thread_register = (void *) (TCBP) + TLS_TCB_OFFSET, NULL)
+
+ /* Return the address of the dtv for the current thread. */
+ # define THREAD_DTV() \
+- (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET - TLS_TCB_SIZE))->dtv)
++ (((tcbhead_t *) (__thread_register - TLS_TCB_OFFSET))[-1].dtv)
+
+ /* Return the thread descriptor for the current thread. */
+ # undef THREAD_SELF
+ # define THREAD_SELF \
+ ((pthread_descr) (__thread_register \
+- - TLS_TCB_OFFSET - TLS_TCB_SIZE - TLS_PRE_TCB_SIZE))
++ - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
+
+ # undef INIT_THREAD_SELF
+ # define INIT_THREAD_SELF(DESCR, NR) \
+ (__thread_register = ((void *) (DESCR) \
+- + TLS_TCB_OFFSET + TLS_TCB_SIZE + TLS_PRE_TCB_SIZE))
++ + TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE))
++
++/* Make sure we have the p_multiple_threads member in the thread structure.
++ See below. */
++# ifndef __powerpc64__
++# define TLS_MULTIPLE_THREADS_IN_TCB 1
++# endif
+
+ /* Get the thread descriptor definition. */
+ # include <linuxthreads/descr.h>
+
+-/* Generic bits of LinuxThreads may call these macros with
+- DESCR set to NULL. We are expected to be able to reference
+- the "current" value. */
+-
+-# define THREAD_GETMEM(descr, member) \
+- ((void) sizeof (descr), THREAD_SELF->member)
+-# define THREAD_SETMEM(descr, member, value) \
+- ((void) sizeof (descr), THREAD_SELF->member = (value))
+-
+-#define THREAD_GETMEM_NC(descr, member) THREAD_GETMEM (descr, member)
+-#define THREAD_SETMEM_NC(descr, member, value) \
+- THREAD_SETMEM ((descr), member, (value))
++/* l_tls_offset == 0 is perfectly valid on PPC, so we have to use some
++ different value to mean unset l_tls_offset. */
++# define NO_TLS_OFFSET -1
+
+ # endif /* __ASSEMBLER__ */
+
+-#else /* Not HAVE_TLS_SUPPORT. */
++#elif !defined __ASSEMBLER__ && !defined __powerpc64__
++
++/* This overlaps the start of the pthread_descr. On PPC32, system
++ calls and such use this to find the multiple_threads flag and need
++ to use the same offset relative to the thread register in both
++ single-threaded and multi-threaded code. On PPC64, the global
++ variable is always used, so single-threaded code without TLS
++ never needs to initialize the thread register at all. */
++typedef struct
++{
++ void *tcb; /* Never used. */
++ dtv_t *dtv; /* Never used. */
++ void *self; /* Used only if multithreaded, and rarely. */
++ int multiple_threads; /* Only this member is really used. */
++} tcbhead_t;
+
+ #define NONTLS_INIT_TP \
+ do { \
+- static const tcbhead_t nontls_init_tp \
+- = { .multiple_threads = 0 }; \
++ static const tcbhead_t nontls_init_tp = { .multiple_threads = 0 }; \
+ __thread_self = (__typeof (__thread_self)) &nontls_init_tp; \
+ } while (0)
+
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile 2003-02-12 16:40:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/Makefile 2003-08-21 08:37:03.000000000 -0400
+@@ -1,5 +1,6 @@
+ ifeq ($(subdir),rt)
+ librt-sysdep_routines += timer_routines
++CPPFLAGS += -DBROKEN_THREAD_SIGNALS
+
+ ifeq (yes,$(build-shared))
+ $(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
+@@ -9,5 +10,5 @@
+ endif
+
+ ifeq ($(subdir),posix)
+-CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../nptl/Banner)\""
++CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../linuxthreads/Banner)\""
+ endif
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/#libc-tsd.h# 2003-01-03 17:10:19.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/#libc-tsd.h# 1969-12-31 19:00:00.000000000 -0500
+@@ -1,59 +0,0 @@
+-/* libc-internal interface for thread-specific data. LinuxThreads version.
+- Copyright (C) 1997,98,99,2001,02 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public License as
+- published by the Free Software Foundation; either version 2.1 of the
+- License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; see the file COPYING.LIB. If not,
+- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
+-
+-#ifndef _BITS_LIBC_TSD_H
+-#define _BITS_LIBC_TSD_H 1
+-
+-#include <linuxthreads/descr.h>
+-#include <tls.h>
+-
+-#if USE_TLS && HAVE___THREAD
+-
+-/* When __thread works, the generic definition is what we want. */
+-# include <sysdeps/generic/bits/libc-tsd.h>
+-
+-#else
+-
+-# include <bits/libc-lock.h>
+-
+-# ifndef SHARED
+-extern void ** __pthread_internal_tsd_address (int);
+-extern void *__pthread_internal_tsd_get (int);
+-extern int __pthread_internal_tsd_set (int, const void *);
+-
+-weak_extern (__pthread_internal_tsd_address)
+-weak_extern (__pthread_internal_tsd_get)
+-weak_extern (__pthread_internal_tsd_set)
+-# endif
+-
+-#define __libc_tsd_define(CLASS, KEY) CLASS void *__libc_tsd_##KEY##_data;
+-#define __libc_tsd_address(KEY) \
+- __libc_maybe_call2 (pthread_internal_tsd_address, \
+- (_LIBC_TSD_KEY_##KEY), &__libc_tsd_##KEY##_data)
+-#define __libc_tsd_get(KEY) \
+- __libc_maybe_call2 (pthread_internal_tsd_get, \
+- (_LIBC_TSD_KEY_##KEY), __libc_tsd_##KEY##_data)
+-#define __libc_tsd_set(KEY, VALUE) \
+- __libc_maybe_call2 (pthread_internal_tsd_set, \
+- (_LIBC_TSD_KEY_##KEY, (VALUE)), \
+- (__libc_tsd_##KEY##_data = (VALUE), 0))
+-
+-#endif
+-
+-#endif /* bits/libc-tsd.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-02-05 04:52:34.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2003-08-21 08:37:03.000000000 -0400
+@@ -180,7 +180,6 @@
+
+ /* Lock the recursive named lock variable. */
+ #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex)
+-#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME)
+
+ /* Try to lock the named lock variable. */
+ #define __libc_lock_trylock(NAME) \
+@@ -203,8 +202,23 @@
+
+ /* Unlock the recursive named lock variable. */
+ #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex)
+-#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME)
+
++#if defined _LIBC && defined SHARED
++# define __rtld_lock_default_lock_recursive(lock) \
++ ++((pthread_mutex_t *)(lock))->__m_count;
++
++# define __rtld_lock_default_unlock_recursive(lock) \
++ --((pthread_mutex_t *)(lock))->__m_count;
++
++# define __rtld_lock_lock_recursive(NAME) \
++ GL(dl_rtld_lock_recursive) (&(NAME).mutex)
++
++# define __rtld_lock_unlock_recursive(NAME) \
++ GL(dl_rtld_unlock_recursive) (&(NAME).mutex)
++#else
++#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME)
++#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME)
++#endif
+
+ /* Define once control variable. */
+ #if PTHREAD_ONCE_INIT == 0
+@@ -250,6 +264,20 @@
+ _pthread_cleanup_pop_restore (&_buffer, (DOIT)); \
+ }
+
++#define __libc_cleanup_push(fct, arg) \
++ { struct _pthread_cleanup_buffer _buffer; \
++ int _avail = _pthread_cleanup_push != NULL; \
++ if (_avail) { \
++ _pthread_cleanup_push (&_buffer, (fct), (arg)); \
++ }
++
++#define __libc_cleanup_pop(execute) \
++ if (_avail) { \
++ _pthread_cleanup_pop (&_buffer, execute); \
++ } \
++ }
++
++
+ /* Create thread-specific key. */
+ #define __libc_key_create(KEY, DESTRUCTOR) \
+ (__libc_maybe_call (__pthread_key_create, (KEY, DESTRUCTOR), 1))
+@@ -352,6 +380,8 @@
+ weak_extern (BP_SYM (__pthread_once))
+ weak_extern (__pthread_initialize)
+ weak_extern (__pthread_atfork)
++weak_extern (BP_SYM (_pthread_cleanup_push))
++weak_extern (BP_SYM (_pthread_cleanup_pop))
+ weak_extern (BP_SYM (_pthread_cleanup_push_defer))
+ weak_extern (BP_SYM (_pthread_cleanup_pop_restore))
+ # else
+@@ -377,6 +407,8 @@
+ # pragma weak __pthread_atfork
+ # pragma weak _pthread_cleanup_push_defer
+ # pragma weak _pthread_cleanup_pop_restore
++# pragma weak _pthread_cleanup_push
++# pragma weak _pthread_cleanup_pop
+ # endif
+ #endif
+
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/bits/typesizes.h 2003-08-21 08:37:03.000000000 -0400
+@@ -0,0 +1,66 @@
++/* bits/typesizes.h -- underlying types for *_t. Generic version.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_TYPES_H
++# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
++#endif
++
++#ifndef _BITS_TYPESIZES_H
++#define _BITS_TYPESIZES_H 1
++
++/* See <bits/types.h> for the meaning of these macros. This file exists so
++ that <bits/types.h> need not vary across different GNU platforms. */
++
++#define __DEV_T_TYPE __UQUAD_TYPE
++#define __UID_T_TYPE __U32_TYPE
++#define __GID_T_TYPE __U32_TYPE
++#define __INO_T_TYPE __ULONGWORD_TYPE
++#define __INO64_T_TYPE __UQUAD_TYPE
++#define __MODE_T_TYPE __U32_TYPE
++#define __NLINK_T_TYPE __UWORD_TYPE
++#define __OFF_T_TYPE __SLONGWORD_TYPE
++#define __OFF64_T_TYPE __SQUAD_TYPE
++#define __PID_T_TYPE __S32_TYPE
++#define __RLIM_T_TYPE __ULONGWORD_TYPE
++#define __RLIM64_T_TYPE __UQUAD_TYPE
++#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
++#define __BLKCNT64_T_TYPE __SQUAD_TYPE
++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
++#define __ID_T_TYPE __U32_TYPE
++#define __CLOCK_T_TYPE __SLONGWORD_TYPE
++#define __TIME_T_TYPE __SLONGWORD_TYPE
++#define __USECONDS_T_TYPE __U32_TYPE
++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
++#define __DADDR_T_TYPE __S32_TYPE
++#define __SWBLK_T_TYPE __SLONGWORD_TYPE
++#define __KEY_T_TYPE __S32_TYPE
++#define __CLOCKID_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE __S32_TYPE
++#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
++#define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
++
++/* Number of descriptors that can fit in an `fd_set'. */
++#define __FD_SETSIZE 1024
++
++
++#endif /* bits/typesizes.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c 2002-12-31 14:14:22.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/errno-loc.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* MT support function to get address of `errno' variable, linuxthreads
+ version.
+- Copyright (C) 1996, 1998, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,6 +20,7 @@
+
+ #include <errno.h>
+ #include <tls.h>
++#include <linuxthreads/internals.h>
+ #include <sysdep-cancel.h>
+
+ #if ! USE___THREAD
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c 2002-12-31 14:14:22.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/herrno-loc.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 97, 98, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -18,6 +18,7 @@
+
+ #include <netdb.h>
+ #include <tls.h>
++#include <linuxthreads/internals.h>
+ #include <sysdep-cancel.h>
+
+ #if ! USE___THREAD
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread-functions.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread-functions.h 2003-09-19 22:37:04.000000000 -0400
+@@ -0,0 +1,91 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _PTHREAD_FUNCTIONS_H
++#define _PTHREAD_FUNCTIONS_H 1
++
++#include <pthread.h>
++#include <setjmp.h>
++#include <linuxthreads/descr.h>
++
++struct fork_block;
++
++/* Data type shared with libc. The libc uses it to pass on calls to
++ the thread functions. Wine pokes directly into this structure,
++ so if possible avoid breaking it and append new hooks to the end. */
++struct pthread_functions
++{
++ pid_t (*ptr_pthread_fork) (struct fork_block *);
++ int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
++ int (*ptr___pthread_attr_init_2_0) (pthread_attr_t *);
++ int (*ptr___pthread_attr_init_2_1) (pthread_attr_t *);
++ int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
++ int (*ptr_pthread_attr_setdetachstate) (pthread_attr_t *, int);
++ int (*ptr_pthread_attr_getinheritsched) (const pthread_attr_t *, int *);
++ int (*ptr_pthread_attr_setinheritsched) (pthread_attr_t *, int);
++ int (*ptr_pthread_attr_getschedparam) (const pthread_attr_t *,
++ struct sched_param *);
++ int (*ptr_pthread_attr_setschedparam) (pthread_attr_t *,
++ const struct sched_param *);
++ int (*ptr_pthread_attr_getschedpolicy) (const pthread_attr_t *, int *);
++ int (*ptr_pthread_attr_setschedpolicy) (pthread_attr_t *, int);
++ int (*ptr_pthread_attr_getscope) (const pthread_attr_t *, int *);
++ int (*ptr_pthread_attr_setscope) (pthread_attr_t *, int);
++ int (*ptr_pthread_condattr_destroy) (pthread_condattr_t *);
++ int (*ptr_pthread_condattr_init) (pthread_condattr_t *);
++ int (*ptr___pthread_cond_broadcast) (pthread_cond_t *);
++ int (*ptr___pthread_cond_destroy) (pthread_cond_t *);
++ int (*ptr___pthread_cond_init) (pthread_cond_t *,
++ const pthread_condattr_t *);
++ int (*ptr___pthread_cond_signal) (pthread_cond_t *);
++ int (*ptr___pthread_cond_wait) (pthread_cond_t *, pthread_mutex_t *);
++ int (*ptr_pthread_equal) (pthread_t, pthread_t);
++ void (*ptr___pthread_exit) (void *);
++ int (*ptr_pthread_getschedparam) (pthread_t, int *, struct sched_param *);
++ int (*ptr_pthread_setschedparam) (pthread_t, int,
++ const struct sched_param *);
++ int (*ptr_pthread_mutex_destroy) (pthread_mutex_t *);
++ int (*ptr_pthread_mutex_init) (pthread_mutex_t *,
++ const pthread_mutexattr_t *);
++ int (*ptr_pthread_mutex_lock) (pthread_mutex_t *);
++ int (*ptr_pthread_mutex_trylock) (pthread_mutex_t *);
++ int (*ptr_pthread_mutex_unlock) (pthread_mutex_t *);
++ pthread_t (*ptr_pthread_self) (void);
++ int (*ptr_pthread_setcancelstate) (int, int *);
++ int (*ptr_pthread_setcanceltype) (int, int *);
++ void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
++ void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
++ char *targetframe);
++ pthread_descr (*ptr_pthread_thread_self) (void);
++ int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
++ void * (*ptr_pthread_internal_tsd_get) (int key);
++ void ** __attribute__ ((__const__))
++ (*ptr_pthread_internal_tsd_address) (int key);
++ int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
++ struct sigaction *oact);
++ int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
++ int (*ptr_pthread_raise) (int sig);
++ int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
++ const struct timespec *);
++};
++
++/* Variable in libc.so. */
++extern struct pthread_functions __libc_pthread_functions attribute_hidden;
++
++#endif /* pthread-functions.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h 2003-01-02 18:26:03.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/pthread.h 2003-09-19 22:37:04.000000000 -0400
+@@ -172,13 +172,12 @@
+ extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __THROW;
+
+ /* Terminate calling thread. */
+-extern void pthread_exit (void *__retval)
+- __THROW __attribute__ ((__noreturn__));
++extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
+
+ /* Make calling thread wait for termination of the thread TH. The
+ exit status of the thread is stored in *THREAD_RETURN, if THREAD_RETURN
+ is not NULL. */
+-extern int pthread_join (pthread_t __th, void **__thread_return) __THROW;
++extern int pthread_join (pthread_t __th, void **__thread_return);
+
+ /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
+ The resources of TH will therefore be freed immediately when it
+@@ -256,7 +255,7 @@
+ /* Set the starting address of the stack of the thread to be created.
+ Depending on whether the stack grows up or down the value must either
+ be higher or lower than all the address in the memory block. The
+- minimal size of the block must be PTHREAD_STACK_SIZE. */
++ minimal size of the block must be PTHREAD_STACK_MIN. */
+ extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
+ void *__stackaddr) __THROW;
+
+@@ -279,7 +278,7 @@
+ #endif
+
+ /* Add information about the minimum stack size needed for the thread
+- to be started. This size must never be less than PTHREAD_STACK_SIZE
++ to be started. This size must never be less than PTHREAD_STACK_MIN
+ and must also not exceed the system limits. */
+ extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
+ size_t __stacksize) __THROW;
+@@ -290,7 +289,9 @@
+ __THROW;
+
+ #ifdef __USE_GNU
+-/* Get thread attributes corresponding to the already running thread TH. */
++/* Initialize thread attribute *ATTR with attributes corresponding to the
++ already running thread TH. It shall be called on unitialized ATTR
++ and destroyed with pthread_attr_destroy when no longer needed. */
+ extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) __THROW;
+ #endif
+
+@@ -403,7 +404,7 @@
+ /* Wait for condition variable COND to be signaled or broadcast.
+ MUTEX is assumed to be locked before. */
+ extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
+- pthread_mutex_t *__restrict __mutex) __THROW;
++ pthread_mutex_t *__restrict __mutex);
+
+ /* Wait for condition variable COND to be signaled or broadcast until
+ ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an
+@@ -412,7 +413,7 @@
+ extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+- __abstime) __THROW;
++ __abstime);
+
+ /* Functions for handling condition variable attributes. */
+
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c 2002-12-31 14:14:22.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/res-state.c 2003-08-21 08:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 97, 98, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -18,6 +18,7 @@
+
+ #include <resolv.h>
+ #include <tls.h>
++#include <linuxthreads/internals.h>
+ #include <sysdep-cancel.h>
+
+ #if ! USE___THREAD
+@@ -38,7 +39,9 @@
+ pthread_descr self = thread_self();
+ return LIBC_THREAD_GETMEM (self, p_resp);
+ }
+-#endif
+ return &_res;
++#else
++ return __resp;
++#endif
+ }
+ libc_hidden_def (__res_state)
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c 2002-08-27 00:52:36.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_create.c 2003-08-21 08:37:03.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
+
+@@ -37,15 +37,23 @@
+ struct timer_node *newtimer = NULL;
+ struct thread_node *thread = NULL;
+
+- if (clock_id != CLOCK_REALTIME
++ if (0
+ #ifdef _POSIX_CPUTIME
+- && clock_id != CLOCK_PROCESS_CPUTIME_ID
++ || clock_id == CLOCK_PROCESS_CPUTIME_ID
+ #endif
+ #ifdef _POSIX_THREAD_CPUTIME
+- && clock_id != CLOCK_THREAD_CPUTIME_ID
++ || clock_id == CLOCK_THREAD_CPUTIME_ID
+ #endif
+ )
+ {
++ /* We don't allow timers for CPU clocks. At least not in the
++ moment. */
++ __set_errno (ENOTSUP);
++ return -1;
++ }
++
++ if (clock_id != CLOCK_REALTIME)
++ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+@@ -170,7 +178,10 @@
+ if (thread != NULL)
+ __timer_thread_dealloc (thread);
+ if (newtimer != NULL)
+- __timer_dealloc (newtimer);
++ {
++ timer_delref (newtimer);
++ __timer_dealloc (newtimer);
++ }
+ }
+
+ pthread_mutex_unlock (&__timer_mutex);
+--- glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c 2002-08-28 21:46:13.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/pthread/timer_routines.c 2003-08-21 08:37:03.000000000 -0400
+@@ -538,10 +538,7 @@
+
+ if (thread_attr_compare (desired_attr, &candidate->attr)
+ && desired_clock_id == candidate->clock_id)
+- {
+- list_unlink (iter);
+- return candidate;
+- }
++ return candidate;
+
+ iter = list_next (iter);
+ }
+--- glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c 2002-08-27 00:52:36.000000000 -0400
++++ glibc-2.3.2/linuxthreads/sysdeps/s390/pspinlock.c 2003-04-12 11:39:43.000000000 -0400
+@@ -64,7 +64,7 @@
+ {
+ asm volatile(" xc 0(4,%0),0(%0)\n"
+ " bcr 15,0"
+- : "=a" (lock) );
++ : : "a" (lock) : "memory" );
+ return 0;
+ }
+ weak_alias (__pthread_spin_unlock, pthread_spin_unlock)
+--- glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2003-08-21 08:37:03.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ S390 version.
+- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ 64 bit S/390 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/sh/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
+@@ -24,7 +24,7 @@
+
+ #ifndef __ASSEMBLER__
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym 2003-02-07 21:29:53.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/sh/tcb-offsets.sym 2003-04-28 08:20:35.000000000 -0400
+@@ -3,7 +3,7 @@
+
+ --
+ #ifdef USE_TLS
+-MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_header.data.multiple_threads)
++MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads)
+ TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
+ #else
+ MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
+--- glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h 2003-02-07 21:29:53.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/sh/tls.h 2003-03-15 15:02:10.000000000 -0500
+@@ -112,6 +112,8 @@
+ __asm __volatile ("ldc %0,gbr" : : "r" (__self + 1)); \
+ 0; })
+
++# define TLS_MULTIPLE_THREADS_IN_TCB 1
++
+ /* Get the thread descriptor definition. This must be after the
+ the definition of THREAD_SELF for TLS. */
+ # include <linuxthreads/descr.h>
+--- glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2003-01-30 16:03:05.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ #define _PT_MACHINE_H 1
+
+ #ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ #endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile 2003-01-06 18:49:01.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Makefile 2003-08-21 08:37:04.000000000 -0400
+@@ -1,3 +1,3 @@
+ ifeq ($(subdir),linuxthreads)
+-libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask ptw-osf_sigprocmask
++libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask
+ endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/Versions 2003-09-02 23:01:51.000000000 -0400
+@@ -0,0 +1,6 @@
++libpthread {
++ GLIBC_2.3.3 {
++ # Changed PTHREAD_STACK_MIN.
++ pthread_attr_setstack; pthread_attr_setstacksize;
++ }
++}
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2003-09-02 23:01:32.000000000 -0400
+@@ -0,0 +1,86 @@
++/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
++ Copyright (C) 1993-1998, 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++/* The kernel header pollutes the namespace with the NR_OPEN symbol
++ and defines LINK_MAX although filesystems have different maxima. A
++ similar thing is true for OPEN_MAX: the limit can be changed at
++ runtime and therefore the macro must not be defined. Remove this
++ after including the header if necessary. */
++#ifndef NR_OPEN
++# define __undef_NR_OPEN
++#endif
++#ifndef LINK_MAX
++# define __undef_LINK_MAX
++#endif
++#ifndef OPEN_MAX
++# define __undef_OPEN_MAX
++#endif
++
++/* The kernel sources contain a file with all the needed information. */
++#include <linux/limits.h>
++
++/* Have to remove NR_OPEN? */
++#ifdef __undef_NR_OPEN
++# undef NR_OPEN
++# undef __undef_NR_OPEN
++#endif
++/* Have to remove LINK_MAX? */
++#ifdef __undef_LINK_MAX
++# undef LINK_MAX
++# undef __undef_LINK_MAX
++#endif
++/* Have to remove OPEN_MAX? */
++#ifdef __undef_OPEN_MAX
++# undef OPEN_MAX
++# undef __undef_OPEN_MAX
++#endif
++
++/* The number of data keys per process. */
++#define _POSIX_THREAD_KEYS_MAX 128
++/* This is the value this implementation supports. */
++#define PTHREAD_KEYS_MAX 1024
++
++/* Controlling the iterations of destructors for thread-specific data. */
++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
++/* Number of iterations this implementation does. */
++#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++
++/* The number of threads per process. */
++#define _POSIX_THREAD_THREADS_MAX 64
++/* This is the value this implementation supports. */
++#define PTHREAD_THREADS_MAX 16384
++
++/* Maximum amount by which a process can descrease its asynchronous I/O
++ priority level. */
++#define AIO_PRIO_DELTA_MAX 20
++
++/* Minimum size for a thread. We are free to choose a reasonable value. */
++#define PTHREAD_STACK_MIN 24576
++
++/* Maximum number of POSIX timers available. */
++#define TIMER_MAX 256
++
++/* Maximum number of timer expiration overruns. */
++#define DELAYTIMER_MAX 2147483647
++
++/* Maximum tty name length. */
++#define TTY_NAME_MAX 32
++
++/* Maximum login name length. This is arbitrary. */
++#define LOGIN_NAME_MAX 256
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2003-08-21 08:37:04.000000000 -0400
+@@ -0,0 +1,66 @@
++/* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_TYPES_H
++# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
++#endif
++
++#ifndef _BITS_TYPESIZES_H
++#define _BITS_TYPESIZES_H 1
++
++/* See <bits/types.h> for the meaning of these macros. This file exists so
++ that <bits/types.h> need not vary across different GNU platforms. */
++
++#define __DEV_T_TYPE __U64_TYPE
++#define __UID_T_TYPE __U32_TYPE
++#define __GID_T_TYPE __U32_TYPE
++#define __INO_T_TYPE __U32_TYPE
++#define __INO64_T_TYPE __U64_TYPE
++#define __MODE_T_TYPE __U32_TYPE
++#define __NLINK_T_TYPE __U32_TYPE
++#define __OFF_T_TYPE __SLONGWORD_TYPE
++#define __OFF64_T_TYPE __S64_TYPE
++#define __PID_T_TYPE __S32_TYPE
++#define __RLIM_T_TYPE __ULONGWORD_TYPE
++#define __RLIM64_T_TYPE __U64_TYPE
++#define __BLKCNT_T_TYPE __U32_TYPE
++#define __BLKCNT64_T_TYPE __U64_TYPE
++#define __FSBLKCNT_T_TYPE __S32_TYPE
++#define __FSBLKCNT64_T_TYPE __S64_TYPE
++#define __FSFILCNT_T_TYPE __U32_TYPE
++#define __FSFILCNT64_T_TYPE __U64_TYPE
++#define __ID_T_TYPE __U32_TYPE
++#define __CLOCK_T_TYPE __SLONGWORD_TYPE
++#define __TIME_T_TYPE __SLONGWORD_TYPE
++#define __USECONDS_T_TYPE __U32_TYPE
++#define __SUSECONDS_T_TYPE __S64_TYPE
++#define __DADDR_T_TYPE __S32_TYPE
++#define __SWBLK_T_TYPE __SLONGWORD_TYPE
++#define __KEY_T_TYPE __S32_TYPE
++#define __CLOCKID_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE __S32_TYPE
++#define __BLKSIZE_T_TYPE __U32_TYPE
++#define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
++
++/* Number of descriptors that can fit in an `fd_set'. */
++#define __FD_SETSIZE 1024
++
++
++#endif /* bits/typesizes.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2003-04-01 19:10:44.000000000 -0500
+@@ -0,0 +1,28 @@
++/* Internal sigsuspend system call for LinuxThreads. Alpha version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#undef PSEUDO_PREPARE_ARGS
++#define PSEUDO_PREPARE_ARGS ldq a0, 0(a0);
++
++ .hidden __pthread_sigsuspend
++PSEUDO_NOERRNO(__pthread_sigsuspend, sigsuspend, 1)
++ ret
++PSEUDO_END_NOERRNO(__pthread_sigsuspend)
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003-01-12 14:19:43.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -40,10 +40,11 @@
+ # define PSEUDO(name, syscall_name, args) \
+ .globl name; \
+ .align 4; \
+- .ent name, 0; \
++ .type name, @function; \
++ .usepv name, std; \
++ cfi_startproc; \
+ __LABEL(name) \
+ ldgp gp, 0(pv); \
+- .prologue 1; \
+ PSEUDO_PROF; \
+ PSEUDO_PREPARE_ARGS \
+ SINGLE_THREAD_P(t0); \
+@@ -55,7 +56,9 @@
+ .subsection 2; \
+ __LABEL($pseudo_cancel) \
+ subq sp, 64, sp; \
++ cfi_def_cfa_offset(64); \
+ stq ra, 0(sp); \
++ cfi_offset(ra, -64); \
+ SAVE_ARGS_##args; \
+ CENABLE; \
+ LOAD_ARGS_##args; \
+@@ -67,19 +70,27 @@
+ ldq ra, 0(sp); \
+ ldq v0, 8(sp); \
+ addq sp, 64, sp; \
++ cfi_remember_state; \
++ cfi_restore(ra); \
++ cfi_def_cfa_offset(0); \
+ ret; \
++ cfi_restore_state; \
+ __LABEL($multi_error) \
+ CDISABLE; \
+ ldq ra, 0(sp); \
+ ldq v0, 8(sp); \
+ addq sp, 64, sp; \
++ cfi_restore(ra); \
++ cfi_def_cfa_offset(0); \
+ __LABEL($syscall_error) \
+ SYSCALL_ERROR_HANDLER; \
+- END(name); \
+ .previous
+
+ # undef PSEUDO_END
+-# define PSEUDO_END(sym)
++# define PSEUDO_END(sym) \
++ .subsection 2; \
++ cfi_endproc; \
++ .size sym, .-sym
+
+ # define SAVE_ARGS_0 /* Nothing. */
+ # define SAVE_ARGS_1 SAVE_ARGS_0; stq a0, 8(sp)
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003-02-11 01:24:43.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2003-08-21 08:37:04.000000000 -0400
+@@ -19,12 +19,13 @@
+
+ #include <sysdep-cancel.h>
+
+- .globl __vfork
+ .align 4
+- .ent __vfork,0
+-__LABEL(__vfork)
++ .globl __vfork
++ .type __vfork, @function
++ .usepv __vfork, std
++ cfi_startproc
++__vfork:
+ ldgp gp, 0(pv)
+- .prologue 1
+ PSEUDO_PROF
+
+ #ifdef SHARED
+@@ -46,18 +47,24 @@
+ fork and vfork object files. */
+ $do_fork:
+ subq sp, 16, sp
++ cfi_adjust_cfa_offset(16)
+ stq ra, 0(sp)
++ cfi_offset(ra, -16)
+ jsr ra, HIDDEN_JUMPTARGET (__fork)
+ ldgp gp, 0(ra)
+ ldq ra, 0(sp)
+ addq sp, 16, sp
++ cfi_restore(ra)
++ cfi_adjust_cfa_offset(-16)
+ ret
+
+ $syscall_error:
+ SYSCALL_ERROR_HANDLER
+ #endif
+
+-PSEUDO_END(__vfork)
++ cfi_endproc
++ .size __vfork, .-__vfork
++
+ libc_hidden_def (__vfork)
+
+ weak_alias (__vfork, vfork)
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003-01-12 04:13:57.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -24,6 +24,17 @@
+
+ #if !defined NOT_IN_libc || defined IS_IN_libpthread
+
++/* We push lr onto the stack, so we have to use ldmib instead of ldmia
++ to find the saved arguments. */
++# ifdef PIC
++# undef DOARGS_5
++# undef DOARGS_6
++# undef DOARGS_7
++# define DOARGS_5 str r4, [sp, $-4]!; ldr r4, [sp, $8];
++# define DOARGS_6 mov ip, sp; stmfd sp!, {r4, r5}; ldmib ip, {r4, r5};
++# define DOARGS_7 mov ip, sp; stmfd sp!, {r4, r5, r6}; ldmib ip, {r4, r5, r6};
++# endif
++
+ # undef PSEUDO_RET
+ # define PSEUDO_RET \
+ ldrcc pc, [sp], $4; \
+@@ -34,7 +45,7 @@
+ # define PSEUDO(name, syscall_name, args) \
+ .section ".text"; \
+ PSEUDO_PROLOGUE; \
+- ENTRY (name) \
++ ENTRY (name); \
+ SINGLE_THREAD_P_INT; \
+ bne .Lpseudo_cancel; \
+ DO_CALL (syscall_name, args); \
+@@ -110,7 +121,7 @@
+ ldr reg, 2b; \
+ 3: \
+ add ip, pc, ip; \
+- ldr ip, [ip, lr]; \
++ ldr ip, [ip, reg]; \
+ teq ip, #0;
+ # define SINGLE_THREAD_P_INT \
+ str lr, [sp, $-4]!; \
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2003-01-14 20:03:38.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2003-09-19 22:37:04.000000000 -0400
+@@ -20,37 +20,60 @@
+ #include <sysdep-cancel.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include <kernel-features.h>
+
+-/* Clone the calling process, but without copying the whole address
+-pace.
++/* Clone the calling process, but without copying the whole address space.
+ The calling process is suspended until the new process exits or is
+- replaced by a call to `execve'. Return -1 for errors, 0 to the new
+-rocess,
++ replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
+ and the process ID of the new process to the old process. */
+
+ PSEUDO_PROLOGUE
+
+ ENTRY (__vfork)
+
+- SINGLE_THREAD_P
+- bne HIDDEN_JUMPTARGET (__fork)
+ #ifdef __NR_vfork
++
++#ifdef SHARED
++ ldr ip, 1f
++ ldr r0, 2f
++3: add ip, pc, ip
++ ldr r0, [ip, r0]
++#else
++ ldr r0, 1f
++#endif
++ movs r0, r0
++ bne HIDDEN_JUMPTARGET (__fork)
++
+ swi __NR_vfork
+ cmn a1, #4096
+ RETINSTR(movcc, pc, lr)
+
++#ifndef __ASSUME_VFORK_SYSCALL
+ /* Check if vfork syscall is known at all. */
+- ldr a2, =-ENOSYS
+- teq a1, a2
++ cmn a1, #ENOSYS
+ bne PLTJMP(C_SYMBOL_NAME(__syscall_error))
+ #endif
+
++#endif
++
++#ifndef __ASSUME_VFORK_SYSCALL
+ /* If we don't have vfork, fork is close enough. */
+ swi __NR_fork
+ cmn a1, #4096
+ RETINSTR(movcc, pc, lr)
++#elif !defined __NR_vfork
++# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined"
++#endif
+ b PLTJMP(C_SYMBOL_NAME(__syscall_error))
+
++#ifdef SHARED
++1: .word _GLOBAL_OFFSET_TABLE_ - 3b - 8
++2: .word __libc_pthread_functions(GOTOFF)
++#else
++ .weak pthread_create
++1: .word pthread_create
++#endif
++
+ PSEUDO_END (__vfork)
+ libc_hidden_def (__vfork)
+
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h 2002-11-28 20:48:24.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h 2003-03-15 15:02:10.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Define POSIX options for Linux.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -132,4 +132,7 @@
+ /* POSIX message queues are not yet supported. */
+ #undef _POSIX_MESSAGE_PASSING
+
++/* The monotonic clock might be available. */
++#define _POSIX_MONOTONIC_CLOCK 0
++
+ #endif /* posix_opt.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2003-01-02 18:26:04.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2003-04-12 11:39:43.000000000 -0400
+@@ -39,4 +39,5 @@
+ return __libc_maybe_call2 (pthread_fork, (&__fork_block), ARCH_FORK ());
+ }
+ weak_alias (__libc_fork, __fork)
++libc_hidden_def (__fork)
+ weak_alias (__libc_fork, fork)
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h 2002-11-28 20:47:54.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h 2003-03-15 15:02:10.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Define POSIX options for Linux/ix86.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -138,4 +138,7 @@
+ /* POSIX message queues are not yet supported. */
+ #undef _POSIX_MESSAGE_PASSING
+
++/* The monotonic clock might be available. */
++#define _POSIX_MONOTONIC_CLOCK 0
++
+ #endif /* posix_opt.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h 2002-12-28 02:04:12.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/dl-sysdep.h 2003-09-19 22:37:04.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* System-specific settings for dynamic linker code. IA-32 version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,12 +49,16 @@
+ extern void _dl_sysinfo_int80 (void) attribute_hidden;
+ # define DL_SYSINFO_DEFAULT (uintptr_t) _dl_sysinfo_int80
+ # define DL_SYSINFO_IMPLEMENTATION \
+- asm (".type _dl_sysinfo_int80,@function\n\t" \
++ asm (".text\n\t" \
++ ".type _dl_sysinfo_int80,@function\n\t" \
+ ".hidden _dl_sysinfo_int80\n" \
++ CFI_STARTPROC "\n" \
+ "_dl_sysinfo_int80:\n\t" \
+ "int $0x80;\n\t" \
+ "ret;\n\t" \
+- ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80");
++ CFI_ENDPROC "\n" \
++ ".size _dl_sysinfo_int80,.-_dl_sysinfo_int80\n\t" \
++ ".previous");
+ #endif
+
+ #endif /* dl-sysdep.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2002-12-31 14:16:42.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
+
+@@ -24,7 +24,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -39,12 +39,12 @@
+ L(pseudo_cancel): \
+ CENABLE \
+ SAVE_OLDTYPE_##args \
+- PUSHARGS_##args \
++ PUSHCARGS_##args \
+ DOCARGS_##args \
+ movl $SYS_ify (syscall_name), %eax; \
+ int $0x80 \
+- POPARGS_##args; \
+- POPCARGS_##args \
++ POPCARGS_##args; \
++ POPSTATE_##args \
+ cmpl $-4095, %eax; \
+ jae SYSCALL_ERROR_LABEL; \
+ L(pseudo_end):
+@@ -56,12 +56,41 @@
+ # define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2
+ # define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2
+
+-# define DOCARGS_0 DOARGS_0
+-# define DOCARGS_1 DOARGS_1
++# define PUSHCARGS_0 /* No arguments to push. */
++# define DOCARGS_0 /* No arguments to frob. */
++# define POPCARGS_0 /* No arguments to pop. */
++# define _PUSHCARGS_0 /* No arguments to push. */
++# define _POPCARGS_0 /* No arguments to pop. */
++
++# define PUSHCARGS_1 movl %ebx, %edx; PUSHCARGS_0
++# define DOCARGS_1 _DOARGS_1 (4)
++# define POPCARGS_1 POPCARGS_0; movl %edx, %ebx
++# define _PUSHCARGS_1 pushl %ebx; L(PUSHBX2): _PUSHCARGS_0
++# define _POPCARGS_1 _POPCARGS_0; popl %ebx; L(POPBX2):
++
++# define PUSHCARGS_2 PUSHCARGS_1
+ # define DOCARGS_2 _DOARGS_2 (12)
++# define POPCARGS_2 POPCARGS_1
++# define _PUSHCARGS_2 _PUSHCARGS_1
++# define _POPCARGS_2 _POPCARGS_1
++
++# define PUSHCARGS_3 _PUSHCARGS_2
+ # define DOCARGS_3 _DOARGS_3 (20)
++# define POPCARGS_3 _POPCARGS_3
++# define _PUSHCARGS_3 _PUSHCARGS_2
++# define _POPCARGS_3 _POPCARGS_2
++
++# define PUSHCARGS_4 _PUSHCARGS_4
+ # define DOCARGS_4 _DOARGS_4 (28)
++# define POPCARGS_4 _POPCARGS_4
++# define _PUSHCARGS_4 pushl %esi; L(PUSHSI2): _PUSHCARGS_3
++# define _POPCARGS_4 _POPCARGS_3; popl %esi; L(POPSI2):
++
++# define PUSHCARGS_5 _PUSHCARGS_5
+ # define DOCARGS_5 _DOARGS_5 (36)
++# define POPCARGS_5 _POPCARGS_5
++# define _PUSHCARGS_5 pushl %edi; L(PUSHDI2): _PUSHCARGS_4
++# define _POPCARGS_5 _POPCARGS_4; popl %edi; L(POPDI2):
+
+ # ifdef IS_IN_libpthread
+ # define CENABLE call __pthread_enable_asynccancel;
+@@ -70,17 +99,19 @@
+ # define CENABLE call __libc_enable_asynccancel;
+ # define CDISABLE call __libc_disable_asynccancel
+ # endif
+-# define POPCARGS_0 pushl %eax; movl %ecx, %eax; CDISABLE; popl %eax;
+-# define POPCARGS_1 POPCARGS_0
+-# define POPCARGS_2 xchgl (%esp), %eax; CDISABLE; popl %eax;
+-# define POPCARGS_3 POPCARGS_2
+-# define POPCARGS_4 POPCARGS_2
+-# define POPCARGS_5 POPCARGS_2
++# define POPSTATE_0 pushl %eax; movl %ecx, %eax; CDISABLE; popl %eax;
++# define POPSTATE_1 POPSTATE_0
++# define POPSTATE_2 xchgl (%esp), %eax; CDISABLE; popl %eax;
++# define POPSTATE_3 POPSTATE_2
++# define POPSTATE_4 POPSTATE_2
++# define POPSTATE_5 POPSTATE_2
+
+ #if !defined NOT_IN_libc
+ # define __local_multiple_threads __libc_multiple_threads
+-#else
++#elif defined IS_IN_libpthread
+ # define __local_multiple_threads __pthread_multiple_threads
++#else
++# define __local_multiple_threads __librt_multiple_threads
+ #endif
+
+ # ifndef __ASSEMBLER__
+@@ -89,7 +120,12 @@
+ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+ p_header.data.multiple_threads) == 0, 1)
+ # else
+-extern int __local_multiple_threads attribute_hidden;
++extern int __local_multiple_threads
++# if !defined NOT_IN_libc || defined IS_IN_libpthread
++ attribute_hidden;
++# else
++ ;
++# endif
+ # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+ # endif
+ # else
+@@ -98,16 +134,23 @@
+ # elif defined FLOATING_STACKS && USE___THREAD
+ # define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET
+ # else
++# if !defined NOT_IN_libc || defined IS_IN_libpthread
++# define __SINGLE_THREAD_CMP cmpl $0, __local_multiple_threads@GOTOFF(%ecx)
++# else
++# define __SINGLE_THREAD_CMP \
++ movl __local_multiple_threads@GOT(%ecx), %ecx;\
++ cmpl $0, (%ecx)
++# endif
+ # if !defined HAVE_HIDDEN || !USE___THREAD
+ # define SINGLE_THREAD_P \
+ SETUP_PIC_REG (cx); \
+ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
+- cmpl $0, __local_multiple_threads@GOTOFF(%ecx)
++ __SINGLE_THREAD_CMP
+ # else
+ # define SINGLE_THREAD_P \
+ call __i686.get_pc_thunk.cx; \
+ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
+- cmpl $0, __local_multiple_threads@GOTOFF(%ecx)
++ __SINGLE_THREAD_CMP
+ # endif
+ # endif
+ # endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/Versions 2003-09-02 23:02:33.000000000 -0400
+@@ -0,0 +1,6 @@
++libpthread {
++ GLIBC_2.3.3 {
++ # Changed PTHREAD_STACK_MIN.
++ pthread_attr_setstack; pthread_attr_setstacksize;
++ }
++}
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2003-09-02 23:03:30.000000000 -0400
+@@ -0,0 +1,86 @@
++/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
++ Copyright (C) 1993-1998, 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++/* The kernel header pollutes the namespace with the NR_OPEN symbol
++ and defines LINK_MAX although filesystems have different maxima. A
++ similar thing is true for OPEN_MAX: the limit can be changed at
++ runtime and therefore the macro must not be defined. Remove this
++ after including the header if necessary. */
++#ifndef NR_OPEN
++# define __undef_NR_OPEN
++#endif
++#ifndef LINK_MAX
++# define __undef_LINK_MAX
++#endif
++#ifndef OPEN_MAX
++# define __undef_OPEN_MAX
++#endif
++
++/* The kernel sources contain a file with all the needed information. */
++#include <linux/limits.h>
++
++/* Have to remove NR_OPEN? */
++#ifdef __undef_NR_OPEN
++# undef NR_OPEN
++# undef __undef_NR_OPEN
++#endif
++/* Have to remove LINK_MAX? */
++#ifdef __undef_LINK_MAX
++# undef LINK_MAX
++# undef __undef_LINK_MAX
++#endif
++/* Have to remove OPEN_MAX? */
++#ifdef __undef_OPEN_MAX
++# undef OPEN_MAX
++# undef __undef_OPEN_MAX
++#endif
++
++/* The number of data keys per process. */
++#define _POSIX_THREAD_KEYS_MAX 128
++/* This is the value this implementation supports. */
++#define PTHREAD_KEYS_MAX 1024
++
++/* Controlling the iterations of destructors for thread-specific data. */
++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
++/* Number of iterations this implementation does. */
++#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++
++/* The number of threads per process. */
++#define _POSIX_THREAD_THREADS_MAX 64
++/* This is the value this implementation supports. */
++#define PTHREAD_THREADS_MAX 16384
++
++/* Maximum amount by which a process can descrease its asynchronous I/O
++ priority level. */
++#define AIO_PRIO_DELTA_MAX 20
++
++/* Minimum size for a thread. We are free to choose a reasonable value. */
++#define PTHREAD_STACK_MIN 196608
++
++/* Maximum number of POSIX timers available. */
++#define TIMER_MAX 256
++
++/* Maximum number of timer expiration overruns. */
++#define DELAYTIMER_MAX 2147483647
++
++/* Maximum tty name length. */
++#define TTY_NAME_MAX 32
++
++/* Maximum login name length. This is arbitrary. */
++#define LOGIN_NAME_MAX 256
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500
+@@ -0,0 +1,33 @@
++/* Internal sigsuspend system call for LinuxThreads. IA64 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <signal.h>
++#include <unistd.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++#include <linuxthreads/internals.h>
++
++void
++__pthread_sigsuspend (const sigset_t *set)
++{
++ INTERNAL_SYSCALL_DECL (err);
++ INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8);
++}
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2003-01-09 14:43:34.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -38,6 +38,11 @@
+ cmp.eq p6,p0=-1,r10; \
+ (p6) br.cond.spnt.few __syscall_error; \
+ ret;; \
++ .endp name; \
++ .proc __GC_##name; \
++ .globl __GC_##name; \
++ .hidden __GC_##name; \
++__GC_##name: \
+ .Lpseudo_cancel: \
+ .prologue; \
+ .regstk args, 5, args, 0; \
+@@ -62,12 +67,13 @@
+ mov ar.pfs = loc0; \
+ .Lpseudo_end: \
+ ret; \
+- .endp name; \
++ .endp __GC_##name; \
+ .section .gnu.linkonce.t.__syscall_error_##args, "ax"; \
+ .align 32; \
+ .proc __syscall_error_##args; \
+ .global __syscall_error_##args; \
+ .hidden __syscall_error_##args; \
++ .size __syscall_error_##args, 64; \
+ __syscall_error_##args: \
+ .prologue; \
+ .regstk args, 5, args, 0; \
+@@ -82,12 +88,18 @@
+ mov r8 = -1; \
+ mov ar.pfs = loc0
+
++#undef PSEUDO_END
++#define PSEUDO_END(name) .endp
++
+ # ifdef IS_IN_libpthread
+ # define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel
+ # define CDISABLE br.call.sptk.many b0 = __pthread_disable_asynccancel
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE br.call.sptk.many b0 = __libc_enable_asynccancel
+ # define CDISABLE br.call.sptk.many b0 = __libc_disable_asynccancel
++# else
++# define CENABLE br.call.sptk.many b0 = __librt_enable_asynccancel
++# define CDISABLE br.call.sptk.many b0 = __librt_disable_asynccancel
+ # endif
+
+ #define COPY_ARGS_0 /* Nothing */
+@@ -101,8 +113,7 @@
+
+ # ifndef __ASSEMBLER__
+ # define SINGLE_THREAD_P \
+- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+- p_header.data.multiple_threads) == 0, 1)
++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
+ # else
+ # define SINGLE_THREAD_P \
+ adds r14 = MULTIPLE_THREADS_OFFSET, r13 ;; ld4 r14 = [r14] ;; cmp4.ne p6, p7 = 0, r14
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2003-01-05 15:04:06.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -22,7 +22,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -84,7 +84,7 @@
+ # define CENABLE jbsr __pthread_enable_asynccancel
+ # define CDISABLE jbsr __pthread_disable_asynccancel
+ # endif
+-# else
++# elif !defined NOT_IN_libc
+ # ifdef PIC
+ # define CENABLE jbsr __libc_enable_asynccancel@PLTPC
+ # define CDISABLE jbsr __libc_disable_asynccancel@PLTPC
+@@ -92,12 +92,22 @@
+ # define CENABLE jbsr __libc_enable_asynccancel
+ # define CDISABLE jbsr __libc_disable_asynccancel
+ # endif
++# else
++# ifdef PIC
++# define CENABLE jbsr __librt_enable_asynccancel@PLTPC
++# define CDISABLE jbsr __librt_disable_asynccancel@PLTPC
++# else
++# define CENABLE jbsr __librt_enable_asynccancel
++# define CDISABLE jbsr __librt_disable_asynccancel
++# endif
+ # endif
+
+ # if !defined NOT_IN_libc
+ # define __local_multiple_threads __libc_multiple_threads
+-# else
++# elif defined IS_IN_libpthread
+ # define __local_multiple_threads __pthread_multiple_threads
++# else
++# define __local_multiple_threads __librt_multiple_threads
+ # endif
+
+ # ifndef __ASSEMBLER__
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -22,7 +22,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ #ifdef __PIC__
+ # undef PSEUDO
+@@ -35,14 +35,14 @@
+ .cpload t9; \
+ .set reorder; \
+ SINGLE_THREAD_P(t0); \
+- bne zero, t0, Lpseudo_cancel; \
++ bne zero, t0, L(pseudo_cancel); \
+ .set noreorder; \
+ li v0, SYS_ify(syscall_name); \
+ syscall; \
+ .set reorder; \
+ bne a3, zero, SYSCALL_ERROR_LABEL; \
+ ret; \
+- Lpseudo_cancel: \
++ L(pseudo_cancel): \
+ SAVESTK_##args; \
+ sw ra, 28(sp); \
+ sw gp, 32(sp); \
+@@ -65,7 +65,7 @@
+ lw ra, 28(sp); /* restore return address */ \
+ RESTORESTK; \
+ bne a3, zero, SYSCALL_ERROR_LABEL; \
+- Lpseudo_end:
++ L(pseudo_end):
+ #endif
+
+ # define PUSHARGS_0 /* nothing to do */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2003-02-17 15:32:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -78,15 +78,17 @@
+ # ifdef IS_IN_libpthread
+ # define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel)
+ # define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel)
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE bl JUMPTARGET(__libc_enable_asynccancel)
+ # define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel)
++# else
++# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel)
++# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel)
+ # endif
+
+ # ifndef __ASSEMBLER__
+ # define SINGLE_THREAD_P \
+- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+- p_header.data.multiple_threads) == 0, 1)
++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
+ # else
+ # define SINGLE_THREAD_P \
+ lwz 10,MULTIPLE_THREADS_OFFSET(2); \
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2003-01-12 03:09:45.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -22,7 +22,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -78,18 +78,31 @@
+ # define CENABLE bl JUMPTARGET(__pthread_enable_asynccancel)
+ # define CDISABLE bl JUMPTARGET(__pthread_disable_asynccancel)
+ # define __local_multiple_threads __pthread_multiple_threads
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE bl JUMPTARGET(__libc_enable_asynccancel)
+ # define CDISABLE bl JUMPTARGET(__libc_disable_asynccancel)
+ # define __local_multiple_threads __libc_multiple_threads
++# else
++# define CENABLE bl JUMPTARGET(__librt_enable_asynccancel); nop
++# define CDISABLE bl JUMPTARGET(__librt_disable_asynccancel); nop
++# define __local_multiple_threads __librt_multiple_threads
+ # endif
+
+ # ifndef __ASSEMBLER__
+-extern int __local_multiple_threads attribute_hidden;
++extern int __local_multiple_threads
++# if !defined NOT_IN_libc || defined IS_IN_libpthread
++ attribute_hidden;
++# else
++ ;
++# endif
+ # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+ # else
+ # define SINGLE_THREAD_P \
+- ld 10,__local_multiple_threads@got(2); \
++ .section ".toc","aw"; \
++.LC__local_multiple_threads:; \
++ .tc __local_multiple_threads[TC],__local_multiple_threads; \
++ .previous; \
++ ld 10,.LC__local_multiple_threads@toc(2); \
+ ld 10,0(10); \
+ cmpdi 10,0
+ # endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2003-04-01 19:10:44.000000000 -0500
+@@ -0,0 +1,56 @@
++/* Internal sigsuspend system call for LinuxThreads. Generic Linux version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <signal.h>
++#include <unistd.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++#include <linuxthreads/internals.h>
++
++#include "kernel-features.h"
++
++void
++__pthread_sigsuspend (const sigset_t *set)
++{
++ INTERNAL_SYSCALL_DECL (err);
++#if !__ASSUME_REALTIME_SIGNALS
++ static int __pthread_missing_rt_sigs;
++
++# ifdef __NR_rt_sigsuspend
++ /* First try the RT signals. */
++ if (!__pthread_missing_rt_sigs)
++ {
++ /* XXX The size argument hopefully will have to be changed to the
++ real size of the user-level sigset_t. */
++ int r;
++ r = INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8);
++ if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS)
++ return;
++
++ __pthread_missing_rt_sigs = 1;
++ }
++# endif
++
++ INTERNAL_SYSCALL (sigsuspend, err, 3, 0, 0, set->__val[0]);
++#else
++ INTERNAL_SYSCALL (rt_sigsuspend, err, 2, set, _NSIG / 8);
++#endif
++}
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2003-09-19 22:37:04.000000000 -0400
+@@ -0,0 +1,72 @@
++/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_TYPES_H
++# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
++#endif
++
++#ifndef _BITS_TYPESIZES_H
++#define _BITS_TYPESIZES_H 1
++
++/* See <bits/types.h> for the meaning of these macros. This file exists so
++ that <bits/types.h> need not vary across different GNU platforms. */
++
++#define __DEV_T_TYPE __UQUAD_TYPE
++#define __UID_T_TYPE __U32_TYPE
++#define __GID_T_TYPE __U32_TYPE
++#define __INO_T_TYPE __ULONGWORD_TYPE
++#define __INO64_T_TYPE __UQUAD_TYPE
++#define __MODE_T_TYPE __U32_TYPE
++#define __NLINK_T_TYPE __UWORD_TYPE
++#define __OFF_T_TYPE __SLONGWORD_TYPE
++#define __OFF64_T_TYPE __SQUAD_TYPE
++#define __PID_T_TYPE __S32_TYPE
++#define __RLIM_T_TYPE __ULONGWORD_TYPE
++#define __RLIM64_T_TYPE __UQUAD_TYPE
++#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
++#define __BLKCNT64_T_TYPE __SQUAD_TYPE
++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
++#define __ID_T_TYPE __U32_TYPE
++#define __CLOCK_T_TYPE __SLONGWORD_TYPE
++#define __TIME_T_TYPE __SLONGWORD_TYPE
++#define __USECONDS_T_TYPE __U32_TYPE
++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
++#define __DADDR_T_TYPE __S32_TYPE
++#define __SWBLK_T_TYPE __SLONGWORD_TYPE
++#define __KEY_T_TYPE __S32_TYPE
++#define __CLOCKID_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE __S32_TYPE
++#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
++#define __FSID_T_TYPE struct { int __val[2]; }
++#if defined __GNUC__ && __GNUC__ <= 2
++/* Compatibility with g++ 2.95.x. */
++#define __SSIZE_T_TYPE __SWORD_TYPE
++#else
++/* size_t is unsigned long int on s390 -m31. */
++#define __SSIZE_T_TYPE __SLONGWORD_TYPE
++#endif
++
++/* Number of descriptors that can fit in an `fd_set'. */
++#define __FD_SETSIZE 1024
++
++
++#endif /* bits/typesizes.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2003-01-13 20:04:15.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -62,9 +62,12 @@
+ # ifdef IS_IN_libpthread
+ # define CENABLE __pthread_enable_asynccancel
+ # define CDISABLE __pthread_disable_asynccancel
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE __libc_enable_asynccancel
+ # define CDISABLE __libc_disable_asynccancel
++# else
++# define CENABLE __librt_enable_asynccancel
++# define CDISABLE __librt_disable_asynccancel
+ # endif
+
+ #define STM_0 /* Nothing */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500
+@@ -0,0 +1 @@
++#include "../../ia64/pt-sigsuspend.c"
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2003-01-28 05:20:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -58,10 +58,13 @@
+ # define CENABLE __pthread_enable_asynccancel
+ # define CDISABLE __pthread_disable_asynccancel
+ # define __local_multiple_threads __pthread_multiple_threads
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE __libc_enable_asynccancel
+ # define CDISABLE __libc_disable_asynccancel
+ # define __local_multiple_threads __libc_multiple_threads
++# else
++# define CENABLE __librt_enable_asynccancel
++# define CDISABLE __librt_disable_asynccancel
+ # endif
+
+ #define STM_0 /* Nothing */
+@@ -78,14 +81,31 @@
+ #define LM_4 lmg %r2,%r5,16+160(%r15);
+ #define LM_5 lmg %r2,%r5,16+160(%r15);
+
+-# ifndef __ASSEMBLER__
++# if !defined NOT_IN_libc || defined IS_IN_libpthread
++# ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+-# define SINGLE_THREAD_P \
++# define SINGLE_THREAD_P \
+ __builtin_expect (__local_multiple_threads == 0, 1)
+-# else
+-# define SINGLE_THREAD_P \
++# else
++# define SINGLE_THREAD_P \
+ larl %r1,__local_multiple_threads; \
+ icm %r0,15,0(%r1);
++# endif
++
++# else
++
++# ifndef __ASSEMBLER__
++# define SINGLE_THREAD_P \
++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
++ p_header.data.multiple_threads) == 0, 1)
++# else
++# define SINGLE_THREAD_P \
++ ear %r1,%a0; \
++ sllg %r1,%r1,32; \
++ ear %r1,%a1; \
++ icm %r1,15,MULTIPLE_THREADS_OFFSET(%r1);
++# endif
++
+ # endif
+
+ #elif !defined __ASSEMBLER__
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2003-02-07 21:29:53.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # define _IMM12 #-12
+ # define _IMM16 #-16
+@@ -92,10 +92,13 @@
+ # define __local_enable_asynccancel __pthread_enable_asynccancel
+ # define __local_disable_asynccancel __pthread_disable_asynccancel
+ # define __local_multiple_threads __pthread_multiple_threads
+-# else
++# elif !defined NOT_IN_libc
+ # define __local_enable_asynccancel __libc_enable_asynccancel
+ # define __local_disable_asynccancel __libc_disable_asynccancel
+ # define __local_multiple_threads __libc_multiple_threads
++# else
++# define __local_enable_asynccancel __librt_enable_asynccancel
++# define __local_disable_asynccancel __librt_disable_asynccancel
+ # endif
+
+ # define CENABLE \
+@@ -121,8 +124,7 @@
+ # ifndef __ASSEMBLER__
+ # if defined FLOATING_STACKS && USE___THREAD && defined PIC
+ # define SINGLE_THREAD_P \
+- __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
+- p_header.data.multiple_threads) == 0, 1)
++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
+ # else
+ extern int __local_multiple_threads attribute_hidden;
+ # define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 2003-02-21 13:55:30.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Makefile 1969-12-31 19:00:00.000000000 -0500
+@@ -1,11 +0,0 @@
+-ifeq ($(subdir),linuxthreads)
+-# gcc has /usr/lib{,64}/crti.o hardcoded in the specs file, because otherwise
+-# it would normally find {64,32}bit crt[in].o.
+-LDFLAGS-pthread.so += -specs=$(objpfx)specs
+-before-compile += $(objpfx)specs
+-generated += specs
+-$(objpfx)specs:
+- $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs \
+- | sed 's,\(/usr/lib\(\|64\)/\|^\|\([^/a-z]\)\)\(crt[in]\.o\),\3./\4,g' > $@.new
+- mv -f $@.new $@
+-endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/Versions 2003-09-02 23:04:33.000000000 -0400
+@@ -0,0 +1,6 @@
++libpthread {
++ GLIBC_2.3.3 {
++ # Changed PTHREAD_STACK_MIN.
++ pthread_attr_setstack; pthread_attr_setstacksize;
++ }
++}
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2003-09-02 23:04:08.000000000 -0400
+@@ -0,0 +1,86 @@
++/* Minimum guaranteed maximum values for system limits. Linux/SPARC version.
++ Copyright (C) 1993-1998, 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++/* The kernel header pollutes the namespace with the NR_OPEN symbol
++ and defines LINK_MAX although filesystems have different maxima. A
++ similar thing is true for OPEN_MAX: the limit can be changed at
++ runtime and therefore the macro must not be defined. Remove this
++ after including the header if necessary. */
++#ifndef NR_OPEN
++# define __undef_NR_OPEN
++#endif
++#ifndef LINK_MAX
++# define __undef_LINK_MAX
++#endif
++#ifndef OPEN_MAX
++# define __undef_OPEN_MAX
++#endif
++
++/* The kernel sources contain a file with all the needed information. */
++#include <linux/limits.h>
++
++/* Have to remove NR_OPEN? */
++#ifdef __undef_NR_OPEN
++# undef NR_OPEN
++# undef __undef_NR_OPEN
++#endif
++/* Have to remove LINK_MAX? */
++#ifdef __undef_LINK_MAX
++# undef LINK_MAX
++# undef __undef_LINK_MAX
++#endif
++/* Have to remove OPEN_MAX? */
++#ifdef __undef_OPEN_MAX
++# undef OPEN_MAX
++# undef __undef_OPEN_MAX
++#endif
++
++/* The number of data keys per process. */
++#define _POSIX_THREAD_KEYS_MAX 128
++/* This is the value this implementation supports. */
++#define PTHREAD_KEYS_MAX 1024
++
++/* Controlling the iterations of destructors for thread-specific data. */
++#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
++/* Number of iterations this implementation does. */
++#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
++
++/* The number of threads per process. */
++#define _POSIX_THREAD_THREADS_MAX 64
++/* This is the value this implementation supports. */
++#define PTHREAD_THREADS_MAX 16384
++
++/* Maximum amount by which a process can descrease its asynchronous I/O
++ priority level. */
++#define AIO_PRIO_DELTA_MAX 20
++
++/* Minimum size for a thread. We are free to choose a reasonable value. */
++#define PTHREAD_STACK_MIN 24576
++
++/* Maximum number of POSIX timers available. */
++#define TIMER_MAX 256
++
++/* Maximum number of timer expiration overruns. */
++#define DELAYTIMER_MAX 2147483647
++
++/* Maximum tty name length. */
++#define TTY_NAME_MAX 32
++
++/* Maximum login name length. This is arbitrary. */
++#define LOGIN_NAME_MAX 256
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2003-08-21 08:37:04.000000000 -0400
+@@ -0,0 +1,66 @@
++/* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_TYPES_H
++# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
++#endif
++
++#ifndef _BITS_TYPESIZES_H
++#define _BITS_TYPESIZES_H 1
++
++/* See <bits/types.h> for the meaning of these macros. This file exists so
++ that <bits/types.h> need not vary across different GNU platforms. */
++
++#define __DEV_T_TYPE __UQUAD_TYPE
++#define __UID_T_TYPE __U32_TYPE
++#define __GID_T_TYPE __U32_TYPE
++#define __INO_T_TYPE __ULONGWORD_TYPE
++#define __INO64_T_TYPE __UQUAD_TYPE
++#define __MODE_T_TYPE __U32_TYPE
++#define __NLINK_T_TYPE __U32_TYPE
++#define __OFF_T_TYPE __SLONGWORD_TYPE
++#define __OFF64_T_TYPE __SQUAD_TYPE
++#define __PID_T_TYPE __S32_TYPE
++#define __RLIM_T_TYPE __ULONGWORD_TYPE
++#define __RLIM64_T_TYPE __UQUAD_TYPE
++#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
++#define __BLKCNT64_T_TYPE __SQUAD_TYPE
++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
++#define __ID_T_TYPE __U32_TYPE
++#define __CLOCK_T_TYPE __SLONGWORD_TYPE
++#define __TIME_T_TYPE __SLONGWORD_TYPE
++#define __USECONDS_T_TYPE __U32_TYPE
++#define __SUSECONDS_T_TYPE __S32_TYPE
++#define __DADDR_T_TYPE __S32_TYPE
++#define __SWBLK_T_TYPE __SLONGWORD_TYPE
++#define __KEY_T_TYPE __S32_TYPE
++#define __CLOCKID_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE __S32_TYPE
++#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
++#define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
++
++/* Number of descriptors that can fit in an `fd_set'. */
++#define __FD_SETSIZE 1024
++
++
++#endif /* bits/typesizes.h */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2003-01-27 15:47:53.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -68,9 +68,12 @@
+ # ifdef IS_IN_libpthread
+ # define CENABLE call __pthread_enable_asynccancel
+ # define CDISABLE call __pthread_disable_asynccancel
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE call __libc_enable_asynccancel
+ # define CDISABLE call __libc_disable_asynccancel
++# else
++# define CENABLE call __librt_enable_asynccancel
++# define CDISABLE call __librt_disable_asynccancel
+ # endif
+
+ #define COPY_ARGS_0 /* Nothing */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile 2003-03-14 18:36:52.000000000 -0500
+@@ -0,0 +1,5 @@
++# glibc makefile fragment for linuxthreads on sparc/sparc64.
++
++ifeq ($(subdir),linuxthreads)
++libpthread-routines += ptw-sigprocmask
++endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c 2003-04-01 19:10:44.000000000 -0500
+@@ -0,0 +1 @@
++#include "../../ia64/pt-sigsuspend.c"
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2003-02-21 13:55:30.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -23,7 +23,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -67,9 +67,12 @@
+ # ifdef IS_IN_libpthread
+ # define CENABLE call __pthread_enable_asynccancel
+ # define CDISABLE call __pthread_disable_asynccancel
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE call __libc_enable_asynccancel
+ # define CDISABLE call __libc_disable_asynccancel
++# else
++# define CENABLE call __librt_enable_asynccancel
++# define CDISABLE call __librt_disable_asynccancel
+ # endif
+
+ #define COPY_ARGS_0 /* Nothing */
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003-02-21 13:55:30.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/Makefile 2003-04-12 11:39:43.000000000 -0400
+@@ -1,12 +1,3 @@
+ ifeq ($(subdir),linuxthreads)
+ CFLAGS-pt-initfini.s = -g0 -fPIC -fno-inline-functions -fno-asynchronous-unwind-tables
+-# gcc -m64 has /usr/lib64/crti.o hardcoded in the specs file, because otherwise
+-# it would normally find 32bit crti.o.
+-LDFLAGS-pthread.so += -specs=$(objpfx)specs
+-before-compile += $(objpfx)specs
+-generated += specs
+-$(objpfx)specs:
+- $(CC) $(CFLAGS) $(CPPFLAGS) -dumpspecs \
+- | sed 's,\(/usr/lib\(\|64\)/\|^\|\([^/a-z]\)\)\(crt[in]\.o\),\3./\4,g' > $@.new
+- mv -f $@.new $@
+ endif
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/pt-sigsuspend.c 2003-04-01 19:10:45.000000000 -0500
+@@ -0,0 +1 @@
++#include "../ia64/pt-sigsuspend.c"
+--- glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2003-02-12 16:45:53.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2003-08-21 08:37:04.000000000 -0400
+@@ -24,7 +24,7 @@
+ # include <linuxthreads/internals.h>
+ #endif
+
+-#if !defined NOT_IN_libc || defined IS_IN_libpthread
++#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
+
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+@@ -74,38 +74,54 @@
+ # define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9;
+
+ /* We always have to align the stack before calling a function. */
+-# define SAVESTK_0 subq $24, %rsp;
++# define SAVESTK_0 subq $24, %rsp;cfi_adjust_cfa_offset(24);
+ # define SAVESTK_1 SAVESTK_0
+ # define SAVESTK_2 SAVESTK_1
+-# define SAVESTK_3 subq $40, %rsp;
++# define SAVESTK_3 subq $40, %rsp;cfi_adjust_cfa_offset(40);
+ # define SAVESTK_4 SAVESTK_3
+-# define SAVESTK_5 subq $56, %rsp;
++# define SAVESTK_5 subq $56, %rsp;cfi_adjust_cfa_offset(56);
+ # define SAVESTK_6 SAVESTK_5
+
+-# define RESTSTK_0 addq $24,%rsp;
++# define RESTSTK_0 addq $24,%rsp;cfi_adjust_cfa_offset(-24);
+ # define RESTSTK_1 RESTSTK_0
+ # define RESTSTK_2 RESTSTK_1
+-# define RESTSTK_3 addq $40, %rsp;
++# define RESTSTK_3 addq $40, %rsp;cfi_adjust_cfa_offset(-40);
+ # define RESTSTK_4 RESTSTK_3
+-# define RESTSTK_5 addq $56, %rsp;
++# define RESTSTK_5 addq $56, %rsp;cfi_adjust_cfa_offset(-56);
+ # define RESTSTK_6 RESTSTK_5
+
+ # ifdef IS_IN_libpthread
+ # define CENABLE call __pthread_enable_asynccancel;
+ # define CDISABLE call __pthread_disable_asynccancel;
+ # define __local_multiple_threads __pthread_multiple_threads
+-# else
++# elif !defined NOT_IN_libc
+ # define CENABLE call __libc_enable_asynccancel;
+ # define CDISABLE call __libc_disable_asynccancel;
+ # define __local_multiple_threads __libc_multiple_threads
++# else
++# define CENABLE call __librt_enable_asynccancel@plt;
++# define CDISABLE call __librt_disable_asynccancel@plt;
+ # endif
+
+-# ifndef __ASSEMBLER__
++# if defined IS_IN_libpthread || !defined NOT_IN_libc
++# ifndef __ASSEMBLER__
+ extern int __local_multiple_threads attribute_hidden;
+ # define SINGLE_THREAD_P \
+ __builtin_expect (__local_multiple_threads == 0, 1)
++# else
++# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip)
++# endif
++
+ # else
+-# define SINGLE_THREAD_P cmpl $0, __local_multiple_threads(%rip)
++
++# ifndef __ASSEMBLER__
++# define SINGLE_THREAD_P \
++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
++ p_header.data.multiple_threads) == 0, 1)
++# else
++# define SINGLE_THREAD_P cmpl $0, %fs:MULTIPLE_THREADS_OFFSET
++# endif
++
+ # endif
+
+ #elif !defined __ASSEMBLER__
+--- glibc-2.3.2/linuxthreads/sysdeps/x86_64/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/Makefile 2003-06-17 18:24:24.000000000 -0400
+@@ -0,0 +1,3 @@
++ifeq ($(subdir),csu)
++gen-as-const-headers += tcb-offsets.sym
++endif
+--- glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h 2002-12-17 19:57:21.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/pt-machine.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Machine-dependent pthreads configuration and inline functions.
+ x86-64 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,7 +28,7 @@
+
+
+ # ifndef PT_EI
+-# define PT_EI extern inline
++# define PT_EI extern inline __attribute__ ((always_inline))
+ # endif
+
+ extern long int testandset (int *spinlock);
+--- glibc-2.3.2/linuxthreads/sysdeps/x86_64/tcb-offsets.sym 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/tcb-offsets.sym 2003-06-17 18:23:41.000000000 -0400
+@@ -0,0 +1,4 @@
++#include <sysdep.h>
++#include <tls.h>
++
++MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
+--- glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h 2002-12-28 02:04:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/sysdeps/x86_64/tls.h 2003-08-21 08:37:05.000000000 -0400
+@@ -39,6 +39,7 @@
+ thread descriptor used by libpthread. */
+ dtv_t *dtv;
+ void *self; /* Pointer to the thread descriptor. */
++ int multiple_threads;
+ } tcbhead_t;
+ #endif
+
+--- glibc-2.3.2/linuxthreads/tst-_res1.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-_res1.c 2003-07-22 19:07:47.000000000 -0400
+@@ -0,0 +1,69 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Test whether _res in glibc 2.1.x and earlier (before __res_state()
++ was introduced) works. Portable programs should never do the
++ dirty things below. */
++
++#include <pthread.h>
++#include <resolv.h>
++#include <stdlib.h>
++#include <stdio.h>
++
++void *tf (void *resp)
++{
++ if (resp == &_res || resp == __res_state ())
++ abort ();
++ _res.retry = 24;
++ return NULL;
++}
++
++void do_test (struct __res_state *resp)
++{
++ if (resp != &_res || resp != __res_state ())
++ abort ();
++ if (_res.retry != 12)
++ abort ();
++}
++
++int main (void)
++{
++#undef _res
++ extern struct __res_state _res;
++ pthread_t th;
++
++ _res.retry = 12;
++ if (pthread_create (&th, NULL, tf, &_res) != 0)
++ {
++ puts ("create failed");
++ exit (1);
++ }
++
++ do_test (&_res);
++
++ if (pthread_join (th, NULL) != 0)
++ {
++ puts ("join failed");
++ exit (1);
++ }
++
++ do_test (&_res);
++
++ exit (0);
++}
+--- glibc-2.3.2/linuxthreads/tst-_res1mod1.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-_res1mod1.c 2003-07-22 19:07:47.000000000 -0400
+@@ -0,0 +1,23 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <resolv.h>
++#undef _res
++
++struct __res_state _res;
+--- glibc-2.3.2/linuxthreads/tst-_res1mod2.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-_res1mod2.c 2003-07-22 19:07:47.000000000 -0400
+@@ -0,0 +1 @@
++/* Nothing. */
+--- glibc-2.3.2/linuxthreads/tst-attr1.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-attr1.c 2003-09-18 15:15:05.000000000 -0400
+@@ -0,0 +1,358 @@
++/* pthread_getattr_np test.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <error.h>
++#include <pthread.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++#include <stackinfo.h>
++
++static void *
++tf (void *arg)
++{
++ pthread_attr_t a, *ap, a2;
++ int err;
++ void *result = NULL;
++
++ if (arg == NULL)
++ {
++ ap = &a2;
++ err = pthread_attr_init (ap);
++ if (err)
++ {
++ error (0, err, "pthread_attr_init failed");
++ return tf;
++ }
++ }
++ else
++ ap = (pthread_attr_t *) arg;
++
++ err = pthread_getattr_np (pthread_self (), &a);
++ if (err)
++ {
++ error (0, err, "pthread_getattr_np failed");
++ result = tf;
++ }
++
++ int detachstate1, detachstate2;
++ err = pthread_attr_getdetachstate (&a, &detachstate1);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getdetachstate failed");
++ result = tf;
++ }
++ else
++ {
++ err = pthread_attr_getdetachstate (ap, &detachstate2);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getdetachstate failed");
++ result = tf;
++ }
++ else if (detachstate1 != detachstate2)
++ {
++ error (0, 0, "detachstate differs %d != %d",
++ detachstate1, detachstate2);
++ result = tf;
++ }
++ }
++
++ void *stackaddr;
++ size_t stacksize;
++ err = pthread_attr_getstack (&a, &stackaddr, &stacksize);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getstack failed");
++ result = tf;
++ }
++ else if ((void *) &a < stackaddr
++ || (void *) &a >= stackaddr + stacksize)
++ {
++ error (0, 0, "pthread_attr_getstack returned range does not cover thread's stack");
++ result = tf;
++ }
++ else
++ printf ("thread stack %p-%p (0x%zx)\n", stackaddr, stackaddr + stacksize,
++ stacksize);
++
++ size_t guardsize1, guardsize2;
++ err = pthread_attr_getguardsize (&a, &guardsize1);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getguardsize failed");
++ result = tf;
++ }
++ else
++ {
++ err = pthread_attr_getguardsize (ap, &guardsize2);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getguardsize failed");
++ result = tf;
++ }
++ else if (guardsize1 != guardsize2)
++ {
++ error (0, 0, "guardsize differs %zd != %zd",
++ guardsize1, guardsize2);
++ result = tf;
++ }
++ else
++ printf ("thread guardsize %zd\n", guardsize1);
++ }
++
++ int scope1, scope2;
++ err = pthread_attr_getscope (&a, &scope1);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getscope failed");
++ result = tf;
++ }
++ else
++ {
++ err = pthread_attr_getscope (ap, &scope2);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getscope failed");
++ result = tf;
++ }
++ else if (scope1 != scope2)
++ {
++ error (0, 0, "scope differs %d != %d",
++ scope1, scope2);
++ result = tf;
++ }
++ }
++
++ err = pthread_attr_destroy (&a);
++ if (err)
++ {
++ error (0, err, "pthread_attr_destroy failed");
++ result = tf;
++ }
++
++ if (ap == &a2)
++ {
++ err = pthread_attr_destroy (ap);
++ if (err)
++ {
++ error (0, err, "pthread_attr_destroy failed");
++ result = tf;
++ }
++ }
++
++ return result;
++}
++
++
++static int
++do_test (void)
++{
++ int result = 0;
++ pthread_attr_t a;
++
++ int err = pthread_attr_init (&a);
++ if (err)
++ {
++ error (0, err, "pthread_attr_init failed");
++ result = 1;
++ }
++
++ err = pthread_attr_destroy (&a);
++ if (err)
++ {
++ error (0, err, "pthread_attr_destroy failed");
++ result = 1;
++ }
++
++ err = pthread_getattr_np (pthread_self (), &a);
++ if (err)
++ {
++ error (0, err, "pthread_getattr_np failed");
++ result = 1;
++ }
++
++ int detachstate;
++ err = pthread_attr_getdetachstate (&a, &detachstate);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getdetachstate failed");
++ result = 1;
++ }
++ else if (detachstate != PTHREAD_CREATE_JOINABLE)
++ {
++ error (0, 0, "initial thread not joinable");
++ result = 1;
++ }
++
++ void *stackaddr;
++ size_t stacksize;
++ err = pthread_attr_getstack (&a, &stackaddr, &stacksize);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getstack failed");
++ result = 1;
++ }
++ else if ((void *) &a < stackaddr
++ || (void *) &a >= stackaddr + stacksize)
++ {
++ error (0, 0, "pthread_attr_getstack returned range does not cover main's stack");
++ result = 1;
++ }
++ else
++ printf ("initial thread stack %p-%p (0x%zx)\n", stackaddr,
++ stackaddr + stacksize, stacksize);
++
++ size_t guardsize;
++ err = pthread_attr_getguardsize (&a, &guardsize);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getguardsize failed");
++ result = 1;
++ }
++ else if (guardsize != 0)
++ {
++ error (0, 0, "pthread_attr_getguardsize returned %zd != 0",
++ guardsize);
++ result = 1;
++ }
++
++ int scope;
++ err = pthread_attr_getscope (&a, &scope);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getscope failed");
++ result = 1;
++ }
++ else if (scope != PTHREAD_SCOPE_SYSTEM)
++ {
++ error (0, 0, "pthread_attr_getscope returned %d != PTHREAD_SCOPE_SYSTEM",
++ scope);
++ result = 1;
++ }
++
++ int inheritsched;
++ err = pthread_attr_getinheritsched (&a, &inheritsched);
++ if (err)
++ {
++ error (0, err, "pthread_attr_getinheritsched failed");
++ result = 1;
++ }
++ else if (inheritsched != PTHREAD_INHERIT_SCHED)
++ {
++ error (0, 0, "pthread_attr_getinheritsched returned %d != PTHREAD_INHERIT_SCHED",
++ inheritsched);
++ result = 1;
++ }
++
++ err = pthread_attr_destroy (&a);
++ if (err)
++ {
++ error (0, err, "pthread_attr_destroy failed");
++ result = 1;
++ }
++
++ pthread_t th;
++ err = pthread_create (&th, NULL, tf, NULL);
++ if (err)
++ {
++ error (0, err, "pthread_create #1 failed");
++ result = 1;
++ }
++ else
++ {
++ void *ret;
++ err = pthread_join (th, &ret);
++ if (err)
++ {
++ error (0, err, "pthread_join #1 failed");
++ result = 1;
++ }
++ else if (ret != NULL)
++ result = 1;
++ }
++
++ err = pthread_attr_init (&a);
++ if (err)
++ {
++ error (0, err, "pthread_attr_init failed");
++ result = 1;
++ }
++
++ err = pthread_create (&th, &a, tf, &a);
++ if (err)
++ {
++ error (0, err, "pthread_create #2 failed");
++ result = 1;
++ }
++ else
++ {
++ void *ret;
++ err = pthread_join (th, &ret);
++ if (err)
++ {
++ error (0, err, "pthread_join #2 failed");
++ result = 1;
++ }
++ else if (ret != NULL)
++ result = 1;
++ }
++
++ err = pthread_attr_setguardsize (&a, 16 * sysconf (_SC_PAGESIZE));
++ if (err)
++ {
++ error (0, err, "pthread_attr_setguardsize failed");
++ result = 1;
++ }
++
++ err = pthread_create (&th, &a, tf, &a);
++ if (err)
++ {
++ error (0, err, "pthread_create #3 failed");
++ result = 1;
++ }
++ else
++ {
++ void *ret;
++ err = pthread_join (th, &ret);
++ if (err)
++ {
++ error (0, err, "pthread_join #3 failed");
++ result = 1;
++ }
++ else if (ret != NULL)
++ result = 1;
++ }
++
++ err = pthread_attr_destroy (&a);
++ if (err)
++ {
++ error (0, err, "pthread_attr_destroy failed");
++ result = 1;
++ }
++
++ return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh 2003-01-14 19:55:09.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-cancel-wrappers.sh 2003-08-21 08:37:03.000000000 -0400
+@@ -27,8 +27,6 @@
+ C["creat"]=1
+ C["fcntl"]=1
+ C["fsync"]=1
+-C["llseek"]=1
+-C["lseek"]=1
+ C["msgrcv"]=1
+ C["msgsnd"]=1
+ C["msync"]=1
+--- glibc-2.3.2/linuxthreads/tst-cancel.c 2001-04-12 17:55:11.000000000 -0400
++++ glibc-2.3.2/linuxthreads/tst-cancel.c 2003-08-21 08:37:03.000000000 -0400
+@@ -12,6 +12,7 @@
+ pthread_barrier_t bar;
+
+
++#ifdef NOT_YET
+ static void
+ cleanup (void *arg)
+ {
+@@ -52,7 +53,7 @@
+ return NULL;
+ pthread_cleanup_pop (0);
+ }
+-
++#endif
+
+ /* This does not work yet. */
+ volatile int cleanupokcnt;
+@@ -63,7 +64,7 @@
+ ++cleanupokcnt;
+ }
+
+-
++#ifdef NOT_YET
+ static void *
+ t3 (void *arg)
+ {
+@@ -72,7 +73,7 @@
+ pthread_exit (NULL);
+ pthread_cleanup_pop (0);
+ }
+-
++#endif
+
+ static void
+ innerok (int a)
+@@ -170,7 +171,7 @@
+ err = pthread_create (&td, NULL, t4, (void *) 7);
+ if (err != 0)
+ {
+- printf ("cannot create thread t3: %s\n", strerror (err));
++ printf ("cannot create thread t4: %s\n", strerror (err));
+ exit (1);
+ }
+
+--- glibc-2.3.2/linuxthreads/tst-cancel4.c 2002-12-28 02:49:20.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-cancel4.c 2003-03-15 15:02:09.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+@@ -154,7 +154,7 @@
+ exit (1);
+ }
+
+- sleep (10000000);
++ sleep (1000000);
+
+ printf ("%s: sleep returns\n", __FUNCTION__);
+
+--- glibc-2.3.2/linuxthreads/tst-cancel7.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-cancel7.c 2003-04-01 19:10:44.000000000 -0500
+@@ -0,0 +1,111 @@
++/* Test for pthread cancellation of mutex blocks.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <pthread.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++
++pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
++pthread_barrier_t b;
++int value = 0;
++
++static void *
++tf (void *arg)
++{
++ int r = pthread_barrier_wait (&b);
++ if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
++ {
++ printf ("%s: barrier_wait failed\n", __FUNCTION__);
++ exit (1);
++ }
++
++ pthread_mutex_lock (&lock);
++ ++value;
++ pthread_testcancel ();
++ ++value;
++ pthread_mutex_unlock (&lock);
++ return NULL;
++}
++
++
++static int
++do_test (void)
++{
++ pthread_mutex_lock (&lock);
++
++ if (pthread_barrier_init (&b, NULL, 2) != 0)
++ {
++ puts ("barrier init failed");
++ return 1;
++ }
++
++ pthread_t th;
++ if (pthread_create (&th, NULL, tf, NULL) != 0)
++ {
++ puts ("pthread_create failed");
++ return 1;
++ }
++
++ int r = pthread_barrier_wait (&b);
++ if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
++ {
++ printf ("%s: barrier_wait failed\n", __FUNCTION__);
++ exit (1);
++ }
++
++ if (pthread_cancel (th) != 0)
++ {
++ puts ("pthread_cancel failed");
++ return 1;
++ }
++
++ pthread_mutex_unlock (&lock);
++
++ void *status;
++ if (pthread_join (th, &status) != 0)
++ {
++ puts ("join failed");
++ return 1;
++ }
++
++ if (status != PTHREAD_CANCELED)
++ {
++ puts ("thread not canceled");
++ return 1;
++ }
++
++ if (value == 0)
++ {
++ puts ("thread cancelled in the pthread_mutex_lock call");
++ return 1;
++ }
++
++ if (value != 1)
++ {
++ puts ("thread not cancelled in pthread_testcancel call");
++ return 1;
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/linuxthreads/tst-tls1.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1.c 2003-09-01 20:29:30.000000000 -0400
+@@ -0,0 +1,91 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Check alignment, overlapping and layout of TLS variables. */
++#include <stdint.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <pthread.h>
++#include <sys/param.h>
++
++#include "tst-tls1.h"
++
++#ifdef TLS_REGISTER
++
++struct tls_obj tls_registry[64];
++
++static int
++tls_addr_cmp (const void *a, const void *b)
++{
++ if (((struct tls_obj *)a)->addr < ((struct tls_obj *)b)->addr)
++ return -1;
++ if (((struct tls_obj *)a)->addr > ((struct tls_obj *)b)->addr)
++ return 1;
++ return 0;
++}
++
++static int
++do_test (void)
++{
++ size_t cnt, i;
++ int res = 0;
++ uintptr_t min_addr = ~(uintptr_t) 0, max_addr = 0;
++
++ for (cnt = 0; tls_registry[cnt].name; ++cnt);
++
++ qsort (tls_registry, cnt, sizeof (struct tls_obj), tls_addr_cmp);
++
++ for (i = 0; i < cnt; ++i)
++ {
++ printf ("%s = %p, size %zd, align %zd",
++ tls_registry[i].name, (void *) tls_registry[i].addr,
++ tls_registry[i].size, tls_registry[i].align);
++ if (tls_registry[i].addr & (tls_registry[i].align - 1))
++ {
++ fputs (", WRONG ALIGNMENT", stdout);
++ res = 1;
++ }
++ if (i > 0
++ && (tls_registry[i - 1].addr + tls_registry[i - 1].size
++ > tls_registry[i].addr))
++ {
++ fputs (", ADDRESS OVERLAP", stdout);
++ res = 1;
++ }
++ puts ("");
++ min_addr = MIN (tls_registry[i].addr, min_addr);
++ max_addr = MAX (tls_registry[i].addr + tls_registry[i].size,
++ max_addr);
++ }
++
++ if (cnt > 1)
++ printf ("Initial TLS used block size %zd\n",
++ (size_t) (max_addr - min_addr));
++ return res;
++}
++
++#define TEST_FUNCTION do_test ()
++
++#else
++
++#define TEST_FUNCTION 0
++
++#endif
++
++#include "../test-skeleton.c"
+--- glibc-2.3.2/linuxthreads/tst-tls1.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1.h 2003-09-01 20:29:30.000000000 -0400
+@@ -0,0 +1,28 @@
++#include <stdint.h>
++#include <stdlib.h>
++#include <tls.h>
++
++#if USE_TLS && HAVE___THREAD
++
++struct tls_obj
++{
++ const char *name;
++ uintptr_t addr;
++ size_t size;
++ size_t align;
++};
++extern struct tls_obj tls_registry[];
++
++#define TLS_REGISTER(x) \
++static void __attribute__((constructor)) \
++tls_register_##x (void) \
++{ \
++ size_t i; \
++ for (i = 0; tls_registry[i].name; ++i); \
++ tls_registry[i].name = #x; \
++ tls_registry[i].addr = (uintptr_t) &x; \
++ tls_registry[i].size = sizeof (x); \
++ tls_registry[i].align = __alignof__ (x); \
++}
++
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1mod.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1mod.c 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,6 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++/* Ensure tls_registry is exported from the binary. */
++void *tst_tls1mod attribute_hidden = tls_registry;
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1moda.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1moda.c 2003-09-01 20:29:30.000000000 -0400
+@@ -0,0 +1,6 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++static __thread char a [32] __attribute__ ((aligned (64)));
++TLS_REGISTER (a)
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1modb.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1modb.c 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,6 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++static __thread int b;
++TLS_REGISTER (b)
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1modc.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1modc.c 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,6 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++static __thread int c;
++TLS_REGISTER (c)
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1modd.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1modd.c 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,6 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++static __thread int d;
++TLS_REGISTER (d)
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1mode.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1mode.c 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,8 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++static __thread int e1 = 24;
++static __thread char e2 [32] __attribute__ ((aligned (64)));
++TLS_REGISTER (e1)
++TLS_REGISTER (e2)
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls1modf.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls1modf.c 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,9 @@
++#include <tst-tls1.h>
++
++#ifdef TLS_REGISTER
++char tst_tls1modf[60] attribute_hidden = { 26 };
++static __thread int f1 = 24;
++static __thread char f2 [32] __attribute__ ((aligned (64)));
++TLS_REGISTER (f1)
++TLS_REGISTER (f2)
++#endif
+--- glibc-2.3.2/linuxthreads/tst-tls2.sh 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads/tst-tls2.sh 2003-09-01 20:29:31.000000000 -0400
+@@ -0,0 +1,53 @@
++#!/bin/sh
++
++common_objpfx=$1; shift
++elf_objpfx=$1; shift
++rtld_installed_name=$1; shift
++logfile=$common_objpfx/linuxthreads/tst-tls2.out
++
++# We have to find libc and linuxthreads
++library_path=${common_objpfx}:${common_objpfx}linuxthreads
++tst_tls1="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
++ ${common_objpfx}/linuxthreads/tst-tls1"
++
++LC_ALL=C
++export LC_ALL
++LANG=C
++export LANG
++
++> $logfile
++fail=0
++
++for aligned in a e f; do
++ echo "preload tst-tls1mod{$aligned,b,c,d}.so" >> $logfile
++ echo "===============" >> $logfile
++ LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{$aligned,b,c,d}.so \
++ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
++ echo >> $logfile
++
++ echo "preload tst-tls1mod{b,$aligned,c,d}.so" >> $logfile
++ echo "===============" >> $logfile
++ LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{b,$aligned,c,d}.so \
++ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
++ echo >> $logfile
++
++ echo "preload tst-tls1mod{b,c,d,$aligned}.so" >> $logfile
++ echo "===============" >> $logfile
++ LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{b,c,d,$aligned}.so \
++ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
++ echo >> $logfile
++done
++
++echo "preload tst-tls1mod{d,a,b,c,e}" >> $logfile
++echo "===============" >> $logfile
++LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{d,a,b,c,e}.so \
++ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
++echo >> $logfile
++
++echo "preload tst-tls1mod{d,a,b,e,f}" >> $logfile
++echo "===============" >> $logfile
++LD_PRELOAD=`echo ${common_objpfx}linuxthreads/tst-tls1mod{d,a,b,e,f}.so \
++ | sed 's/:$//;s/: /:/g'` ${tst_tls1} >> $logfile || fail=1
++echo >> $logfile
++
++exit $fail
+--- glibc-2.3.2/linuxthreads/tststack.c 2002-08-27 00:52:35.000000000 -0400
++++ glibc-2.3.2/linuxthreads/tststack.c 2003-09-19 22:37:04.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Tests for variable stack size handling.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,6 +20,8 @@
+ #include <pthread.h>
+ #include <stdio.h>
+ #include <unistd.h>
++#include <limits.h>
++#include <sys/param.h>
+
+ static void *f1 (void *);
+ static void *f2 (void *);
+@@ -34,7 +36,7 @@
+ void *res2;
+
+ pthread_attr_init (&attr);
+- if (pthread_attr_setstacksize (&attr, 70*1024) != 0)
++ if (pthread_attr_setstacksize (&attr, MAX (70*1024, PTHREAD_STACK_MIN)) != 0)
+ {
+ puts ("invalid stack size");
+ return 1;
+--- glibc-2.3.2/linuxthreads_db/ChangeLog 2003-01-30 05:15:38.000000000 -0500
++++ glibc-2.3.2/linuxthreads_db/ChangeLog 2003-09-19 22:37:04.000000000 -0400
+@@ -1,3 +1,25 @@
++2003-08-18 Daniel Jacobowitz <drow@mvista.com>
++
++ * td_thr_getfpregs.c (td_thr_getfpregs): Use the main thread if
++ the descriptor is uninitialized.
++ * td_thr_getgregs.c (td_thr_getgregs): Likewise.
++
++2003-03-15 Roland McGrath <roland@redhat.com>
++
++ * thread_db.h (td_err_e): Add TD_NOTLS and TD_TLSDEFER.
++ (td_thr_tlsbase): Declare it.
++ * td_thr_tlsbase.c: New file.
++ * Makefile (libthread_db-routines): Add it.
++ * Versions (libthread_db: GLIBC_2.3.3): New set, add td_thr_tlsbase.
++ * td_thr_tls_get_addr.c (td_thr_tls_get_addr): Use td_thr_tlsbase.
++
++2003-02-27 Roland McGrath <roland@redhat.com>
++
++ * td_thr_tls_get_addr.c (td_thr_tls_get_addr): Handle TLS_DTV_AT_TP.
++
++ * td_ta_thr_iter.c (handle_descr) [!defined USE_TLS || !TLS_DTV_AT_TP]:
++ Conditionalize p_header use on this.
++
+ 2003-01-29 Roland McGrath <roland@redhat.com>
+
+ * td_ta_new.c (td_ta_new): Cap the `sizeof_descr' value read from the
+--- glibc-2.3.2/linuxthreads_db/Makefile 2003-01-05 05:00:22.000000000 -0500
++++ glibc-2.3.2/linuxthreads_db/Makefile 2003-03-18 16:46:07.000000000 -0500
+@@ -39,7 +39,8 @@
+ td_thr_event_enable td_thr_set_event \
+ td_thr_clear_event td_thr_event_getmsg \
+ td_ta_set_event td_ta_event_getmsg \
+- td_ta_clear_event td_symbol_list td_thr_tls_get_addr
++ td_ta_clear_event td_symbol_list \
++ td_thr_tlsbase td_thr_tls_get_addr
+
+ libthread_db-inhibit-o = $(filter-out .os,$(object-suffixes))
+
+--- glibc-2.3.2/linuxthreads_db/Versions 2002-07-10 19:08:40.000000000 -0400
++++ glibc-2.3.2/linuxthreads_db/Versions 2003-03-18 16:46:07.000000000 -0500
+@@ -18,4 +18,7 @@
+ GLIBC_2.3 {
+ td_thr_tls_get_addr;
+ }
++ GLIBC_2.3.3 {
++ td_thr_tlsbase;
++ }
+ }
+--- glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c 2002-07-15 23:34:26.000000000 -0400
++++ glibc-2.3.2/linuxthreads_db/td_ta_thr_iter.c 2003-03-15 15:02:11.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Iterate over a process's threads.
+- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -40,7 +40,9 @@
+ memset (&pds, '\0', sizeof (pds));
+
+ /* Empty thread descriptor the thread library would create. */
++#if !defined USE_TLS || !TLS_DTV_AT_TP
+ pds.p_header.data.self = &pds;
++#endif
+ pds.p_nextlive = pds.p_prevlive = &pds;
+ pds.p_tid = PTHREAD_THREADS_MAX;
+ /* The init code also sets up p_lock, p_errnop, p_herrnop, and
+--- glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c 2002-07-15 23:25:16.000000000 -0400
++++ glibc-2.3.2/linuxthreads_db/td_thr_getfpregs.c 2003-09-19 22:37:04.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Get a thread's floating-point register set.
+- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -30,7 +30,10 @@
+
+ if (th->th_unique == NULL)
+ {
+- memset (regset, '\0', sizeof (*regset));
++ /* No data yet. Use the main thread. */
++ pid_t pid = ps_getpid (th->th_ta_p->ph);
++ if (ps_lgetfpregs (th->th_ta_p->ph, pid, regset) != PS_OK)
++ return TD_ERR;
+ return TD_OK;
+ }
+
+--- glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c 2002-07-15 23:24:27.000000000 -0400
++++ glibc-2.3.2/linuxthreads_db/td_thr_getgregs.c 2003-09-19 22:37:04.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Get a thread's general register set.
+- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -30,8 +30,10 @@
+
+ if (th->th_unique == NULL)
+ {
+- /* No data yet. */
+- memset (gregs, '\0', sizeof (prgregset_t));
++ /* No data yet. Use the main thread. */
++ pid_t pid = ps_getpid (th->th_ta_p->ph);
++ if (ps_lgetregs (th->th_ta_p->ph, pid, gregs) != PS_OK)
++ return TD_ERR;
+ return TD_OK;
+ }
+
+--- glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c 2002-09-28 13:41:11.000000000 -0400
++++ glibc-2.3.2/linuxthreads_db/td_thr_tls_get_addr.c 2003-03-18 16:46:07.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Get address of thread local variable.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2002.
+
+@@ -18,14 +18,9 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-
+-#include "link.h"
++#include <link.h>
+ #include "thread_dbP.h"
+
+-/* Value used for dtv entries for which the allocation is delayed. */
+-# define TLS_DTV_UNALLOCATED ((void *) -1l)
+-
+-
+ td_err_e
+ td_thr_tls_get_addr (const td_thrhandle_t *th __attribute__ ((unused)),
+ void *map_address __attribute__ ((unused)),
+@@ -33,37 +28,17 @@
+ void **address __attribute__ ((unused)))
+ {
+ #if USE_TLS
+- size_t modid;
+- union dtv pdtv, *dtvp;
+-
+- LOG ("td_thr_tls_get_addr");
+-
+- /* Get the DTV pointer from the thread descriptor. */
+- if (ps_pdread (th->th_ta_p->ph,
+- &((struct _pthread_descr_struct *) th->th_unique)->p_header.data.dtvp,
+- &dtvp, sizeof dtvp) != PS_OK)
+- return TD_ERR; /* XXX Other error value? */
+-
+ /* Read the module ID from the link_map. */
++ size_t modid;
+ if (ps_pdread (th->th_ta_p->ph,
+ &((struct link_map *) map_address)->l_tls_modid,
+ &modid, sizeof modid) != PS_OK)
+ return TD_ERR; /* XXX Other error value? */
+
+- /* Get the corresponding entry in the DTV. */
+- if (ps_pdread (th->th_ta_p->ph, dtvp + modid,
+- &pdtv, sizeof (union dtv)) != PS_OK)
+- return TD_ERR; /* XXX Other error value? */
+-
+- /* It could be that the memory for this module is not allocated for
+- the given thread. */
+- if (pdtv.pointer == TLS_DTV_UNALLOCATED)
+- /* There is not much we can do. */
+- return TD_NOTALLOC;
+-
+- *address = (char *) pdtv.pointer + offset;
+-
+- return TD_OK;
++ td_err_e result = td_thr_tlsbase (th, modid, address);
++ if (result == TD_OK)
++ *address += offset;
++ return result;
+ #else
+ return TD_ERR;
+ #endif
+--- glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/linuxthreads_db/td_thr_tlsbase.c 2003-03-15 18:09:01.000000000 -0500
+@@ -0,0 +1,67 @@
++/* Locate TLS data for a thread.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include "thread_dbP.h"
++
++/* Value used for dtv entries for which the allocation is delayed. */
++# define TLS_DTV_UNALLOCATED ((void *) -1l)
++
++td_err_e
++td_thr_tlsbase (const td_thrhandle_t *th,
++ unsigned long int modid,
++ psaddr_t *base)
++{
++ if (modid < 1)
++ return TD_NOTLS;
++
++#if USE_TLS
++ union dtv pdtv, *dtvp;
++
++ LOG ("td_thr_tlsbase");
++
++ psaddr_t dtvpp = th->th_unique;
++#if TLS_TCB_AT_TP
++ dtvpp += offsetof (struct _pthread_descr_struct, p_header.data.dtvp);
++#elif TLS_DTV_AT_TP
++ dtvpp += TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv);
++#else
++# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined."
++#endif
++
++ /* Get the DTV pointer from the thread descriptor. */
++ if (ps_pdread (th->th_ta_p->ph, dtvpp, &dtvp, sizeof dtvp) != PS_OK)
++ return TD_ERR; /* XXX Other error value? */
++
++ /* Get the corresponding entry in the DTV. */
++ if (ps_pdread (th->th_ta_p->ph, dtvp + modid,
++ &pdtv, sizeof (union dtv)) != PS_OK)
++ return TD_ERR; /* XXX Other error value? */
++
++ /* It could be that the memory for this module is not allocated for
++ the given thread. */
++ if (pdtv.pointer == TLS_DTV_UNALLOCATED)
++ return TD_TLSDEFER;
++
++ *base = (char *) pdtv.pointer;
++
++ return TD_OK;
++#else
++ return TD_ERR;
++#endif
++}
+--- glibc-2.3.2/linuxthreads_db/thread_db.h 2002-09-24 19:33:07.000000000 -0400
++++ glibc-2.3.2/linuxthreads_db/thread_db.h 2003-03-18 16:46:07.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
++/* thread_db.h -- interface to libthread_db.so library for debugging -lpthread
++ Copyright (C) 1999,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,8 +53,10 @@
+ TD_MALLOC, /* Out of memory. */
+ TD_PARTIALREG, /* Not entire register set was read or written. */
+ TD_NOXREGS, /* X register set not available for given thread. */
+- TD_NOTALLOC, /* TLS memory not yet allocated. */
+- TD_VERSION /* Version if libpthread and libthread_db do not match. */
++ TD_TLSDEFER, /* Thread has not yet allocated TLS for given module. */
++ TD_NOTALLOC = TD_TLSDEFER,
++ TD_VERSION, /* Version if libpthread and libthread_db do not match. */
++ TD_NOTLS /* There is TLS segment in the given module. */
+ } td_err_e;
+
+
+@@ -402,6 +405,11 @@
+ const void *__addr);
+
+
++/* Get address of the given module's TLS storage area for the given thread. */
++extern td_err_e td_thr_tlsbase (const td_thrhandle_t *__th,
++ unsigned long int __modid,
++ psaddr_t *__base);
++
+ /* Get address of thread local variable. */
+ extern td_err_e td_thr_tls_get_addr (const td_thrhandle_t *__th,
+ void *__map_address, size_t __offset,
+--- glibc-2.3.2/locale/Makefile 2002-10-17 13:05:53.000000000 -0400
++++ glibc-2.3.2/locale/Makefile 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991,92,1995-1999,2000,2001,2002 Free Software Foundation, Inc.
++# Copyright (C) 1991,1992,1995-2002,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -42,7 +42,7 @@
+ categories = ctype messages monetary numeric time paper name \
+ address telephone measurement identification collate
+ aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \
+- xlocale localename global-locale
++ xlocale localename global-locale coll-lookup
+ others = localedef locale
+ #others-static = localedef locale
+ install-bin = localedef locale
+--- glibc-2.3.2/locale/Versions 2002-08-27 21:04:45.000000000 -0400
++++ glibc-2.3.2/locale/Versions 2003-03-15 15:02:11.000000000 -0500
+@@ -59,13 +59,12 @@
+ iswcntrl_l; iswctype_l; iswdigit_l; iswgraph_l; iswlower_l;
+ iswprint_l; iswpunct_l; iswspace_l; iswupper_l; iswxdigit_l;
+ isxdigit_l; strcasecmp_l; strcoll_l; strfmon_l; strncasecmp_l;
+- strtod_l; strtof_l; strtol_l; strtold_l; strtoll_l; strtoul_l;
+- strtoull_l; strxfrm_l; toascii_l; tolower_l; toupper_l;
++ strtod_l; strtof_l; strtol_l; strtold_l; strtoul_l;
++ strxfrm_l; toascii_l; tolower_l; toupper_l;
+ towctrans_l; towlower_l; towupper_l; wcscasecmp_l; wcscoll_l;
+ wcsncasecmp_l; wcstod_l; wcstof_l; wcstol_l; wcstold_l;
+ wcstoll_l; wcstoul_l; wcstoull_l; wcsxfrm_l; wctype_l;
+ wctrans_l; nl_langinfo_l;
+-
+ }
+ GLIBC_PRIVATE {
+ # global variables
+--- glibc-2.3.2/locale/coll-lookup.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/locale/coll-lookup.c 2003-06-13 16:41:58.000000000 -0400
+@@ -0,0 +1,81 @@
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++/* Lookup in a table of int32_t, with default value 0. */
++int32_t
++internal_function
++__collidx_table_lookup (const char *table, uint32_t wc)
++{
++ uint32_t shift1 = ((const uint32_t *) table)[0];
++ uint32_t index1 = wc >> shift1;
++ uint32_t bound = ((const uint32_t *) table)[1];
++ if (index1 < bound)
++ {
++ uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
++ if (lookup1 != 0)
++ {
++ uint32_t shift2 = ((const uint32_t *) table)[2];
++ uint32_t mask2 = ((const uint32_t *) table)[3];
++ uint32_t index2 = (wc >> shift2) & mask2;
++ uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
++ if (lookup2 != 0)
++ {
++ uint32_t mask3 = ((const uint32_t *) table)[4];
++ uint32_t index3 = wc & mask3;
++ int32_t lookup3 = ((const int32_t *)(table + lookup2))[index3];
++
++ return lookup3;
++ }
++ }
++ }
++ return 0;
++}
++
++
++/* Lookup in a table of uint32_t, with default value 0xffffffff. */
++uint32_t
++internal_function
++__collseq_table_lookup (const char *table, uint32_t wc)
++{
++ uint32_t shift1 = ((const uint32_t *) table)[0];
++ uint32_t index1 = wc >> shift1;
++ uint32_t bound = ((const uint32_t *) table)[1];
++ if (index1 < bound)
++ {
++ uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
++ if (lookup1 != 0)
++ {
++ uint32_t shift2 = ((const uint32_t *) table)[2];
++ uint32_t mask2 = ((const uint32_t *) table)[3];
++ uint32_t index2 = (wc >> shift2) & mask2;
++ uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
++ if (lookup2 != 0)
++ {
++ uint32_t mask3 = ((const uint32_t *) table)[4];
++ uint32_t index3 = wc & mask3;
++ uint32_t lookup3 = ((const uint32_t *)(table + lookup2))[index3];
++
++ return lookup3;
++ }
++ }
++ }
++ return ~((uint32_t) 0);
++}
+--- glibc-2.3.2/locale/coll-lookup.h 2001-07-07 15:21:04.000000000 -0400
++++ glibc-2.3.2/locale/coll-lookup.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
+
+@@ -17,85 +17,12 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-/* Word tables are accessed by cutting wc in three blocks of bits:
+- - the high 32-q-p bits,
+- - the next q bits,
+- - the next p bits.
+-
+- +------------------+-----+-----+
+- wc = + 32-q-p | q | p |
+- +------------------+-----+-----+
+-
+- p and q are variable. For 16-bit Unicode it is sufficient to
+- choose p and q such that q+p <= 16.
+-
+- The table contains the following uint32_t words:
+- - q+p,
+- - s = upper exclusive bound for wc >> (q+p),
+- - p,
+- - 2^q-1,
+- - 2^p-1,
+- - 1st-level table: s offsets, pointing into the 2nd-level table,
+- - 2nd-level table: k*2^q offsets, pointing into the 3rd-level table,
+- - 3rd-level table: j*2^p words, each containing 32 bits of data.
+-*/
+-
+ #include <stdint.h>
+
+ /* Lookup in a table of int32_t, with default value 0. */
+-static inline int32_t
+-collidx_table_lookup (const char *table, uint32_t wc)
+-{
+- uint32_t shift1 = ((const uint32_t *) table)[0];
+- uint32_t index1 = wc >> shift1;
+- uint32_t bound = ((const uint32_t *) table)[1];
+- if (index1 < bound)
+- {
+- uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
+- if (lookup1 != 0)
+- {
+- uint32_t shift2 = ((const uint32_t *) table)[2];
+- uint32_t mask2 = ((const uint32_t *) table)[3];
+- uint32_t index2 = (wc >> shift2) & mask2;
+- uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
+- if (lookup2 != 0)
+- {
+- uint32_t mask3 = ((const uint32_t *) table)[4];
+- uint32_t index3 = wc & mask3;
+- int32_t lookup3 = ((const int32_t *)(table + lookup2))[index3];
+-
+- return lookup3;
+- }
+- }
+- }
+- return 0;
+-}
++extern int32_t __collidx_table_lookup (const char *table, uint32_t wc)
++ internal_function;
+
+ /* Lookup in a table of uint32_t, with default value 0xffffffff. */
+-static inline uint32_t
+-collseq_table_lookup (const char *table, uint32_t wc)
+-{
+- uint32_t shift1 = ((const uint32_t *) table)[0];
+- uint32_t index1 = wc >> shift1;
+- uint32_t bound = ((const uint32_t *) table)[1];
+- if (index1 < bound)
+- {
+- uint32_t lookup1 = ((const uint32_t *) table)[5 + index1];
+- if (lookup1 != 0)
+- {
+- uint32_t shift2 = ((const uint32_t *) table)[2];
+- uint32_t mask2 = ((const uint32_t *) table)[3];
+- uint32_t index2 = (wc >> shift2) & mask2;
+- uint32_t lookup2 = ((const uint32_t *)(table + lookup1))[index2];
+- if (lookup2 != 0)
+- {
+- uint32_t mask3 = ((const uint32_t *) table)[4];
+- uint32_t index3 = wc & mask3;
+- uint32_t lookup3 = ((const uint32_t *)(table + lookup2))[index3];
+-
+- return lookup3;
+- }
+- }
+- }
+- return ~((uint32_t) 0);
+-}
++extern uint32_t __collseq_table_lookup (const char *table, uint32_t wc)
++ internal_function;
+--- glibc-2.3.2/locale/findlocale.c 2002-09-01 14:02:00.000000000 -0400
++++ glibc-2.3.2/locale/findlocale.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -28,6 +28,7 @@
+
+ #include "localeinfo.h"
+ #include "../iconv/gconv_charset.h"
++#include "../iconv/gconv_int.h"
+
+
+ #ifdef NL_CURRENT_INDIRECT
+--- glibc-2.3.2/locale/iso-639.def 2002-08-02 16:28:38.000000000 -0400
++++ glibc-2.3.2/locale/iso-639.def 2003-08-21 08:37:05.000000000 -0400
+@@ -6,171 +6,462 @@
+ * If you find something missing or wrong contact <bug-glibc@gnu.org>
+ */
+
+-DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar)
+ DEFINE_LANGUAGE_CODE ("Abkhazian", ab, abk, abk)
++DEFINE_LANGUAGE_CODE3 ("Achinese", ace, ace)
++DEFINE_LANGUAGE_CODE3 ("Acoli", ach, ach)
++DEFINE_LANGUAGE_CODE3 ("Adangme", ada, ada)
++DEFINE_LANGUAGE_CODE3 ("Adygei", ady, ady)
++DEFINE_LANGUAGE_CODE ("Afar", aa, aar, aar)
++DEFINE_LANGUAGE_CODE3 ("Afrihili", afh, afh)
+ DEFINE_LANGUAGE_CODE ("Afrikaans", af, afr, afr)
++DEFINE_LANGUAGE_CODE3 ("Afro-Asiatic (Other)", afa, afa)
++DEFINE_LANGUAGE_CODE ("Akan", ak, aka, aka)
++DEFINE_LANGUAGE_CODE3 ("Akkadian", akk, akk)
+ DEFINE_LANGUAGE_CODE ("Albanian", sq, sqi, alb)
++DEFINE_LANGUAGE_CODE3 ("Aleut", ale, ale)
++DEFINE_LANGUAGE_CODE3 ("Alonquian languages", alg, alg)
++DEFINE_LANGUAGE_CODE3 ("Altaic (Other)", tut, tut)
+ DEFINE_LANGUAGE_CODE ("Amharic", am, amh, amh)
++DEFINE_LANGUAGE_CODE3 ("Apache language", apa, apa)
+ DEFINE_LANGUAGE_CODE ("Arabic", ar, ara, ara)
++DEFINE_LANGUAGE_CODE ("Argonese", an, arg, arg)
++DEFINE_LANGUAGE_CODE3 ("Aramaic", arc, arc)
++DEFINE_LANGUAGE_CODE3 ("Arapaho", arp, arp)
++DEFINE_LANGUAGE_CODE3 ("Araucanian", arn, arn)
++DEFINE_LANGUAGE_CODE3 ("Arawak", arw, arw)
+ DEFINE_LANGUAGE_CODE ("Armenian", hy, hye, arm)
++DEFINE_LANGUAGE_CODE3 ("Artificial (Other)", art, art)
+ DEFINE_LANGUAGE_CODE ("Assamese", as, asm, asm)
++DEFINE_LANGUAGE_CODE3 ("Asturian; Bable", ast, ast)
++DEFINE_LANGUAGE_CODE3 ("Athapascan languages", ath, ath)
++DEFINE_LANGUAGE_CODE3 ("Australian languages", aus, aus)
++DEFINE_LANGUAGE_CODE3 ("Austronesian (Other)", map, map)
++DEFINE_LANGUAGE_CODE ("Avaric", av, ava, ava)
+ DEFINE_LANGUAGE_CODE ("Avestan", ae, ave, ave)
++DEFINE_LANGUAGE_CODE3 ("Awadhi", awa, awa)
+ DEFINE_LANGUAGE_CODE ("Aymara", ay, aym, aym)
+ DEFINE_LANGUAGE_CODE ("Azerbaijani", az, aze, aze)
++DEFINE_LANGUAGE_CODE3 ("Balinese", ban, ban)
++DEFINE_LANGUAGE_CODE3 ("Baltic (Other)", bat, bat)
++DEFINE_LANGUAGE_CODE3 ("Baluchi", bal, bal)
++DEFINE_LANGUAGE_CODE ("Bambara", bm, bam, bam)
++DEFINE_LANGUAGE_CODE3 ("Bamileke languages", bai, bai)
++DEFINE_LANGUAGE_CODE3 ("Banda", bad, bad)
++DEFINE_LANGUAGE_CODE3 ("Bantu (Other)", bnt, bnt)
++DEFINE_LANGUAGE_CODE3 ("Basa", bas, bas)
+ DEFINE_LANGUAGE_CODE ("Bashkir", ba, bak, bak)
+ DEFINE_LANGUAGE_CODE ("Basque", eu, eus, baq)
++DEFINE_LANGUAGE_CODE3 ("Batak (Indonesia)", btk, btk)
++DEFINE_LANGUAGE_CODE3 ("Beja", bej, bej)
+ DEFINE_LANGUAGE_CODE ("Belarusian", be, bel, bel)
++DEFINE_LANGUAGE_CODE3 ("Bemba", bem, bem)
+ DEFINE_LANGUAGE_CODE ("Bengali", bn, ben, ben)
++DEFINE_LANGUAGE_CODE3 ("Berber (Other)", ber, ber)
++DEFINE_LANGUAGE_CODE3 ("Bhojpuri", bho, bho)
+ DEFINE_LANGUAGE_CODE ("Bihari", bh, bih, bih)
++DEFINE_LANGUAGE_CODE3 ("Bikol", bik, bik)
++DEFINE_LANGUAGE_CODE3 ("Bini", bin, bin)
+ DEFINE_LANGUAGE_CODE ("Bislama", bi, bis, bis)
+ DEFINE_LANGUAGE_CODE ("Bosnian", bs, bos, bos)
++DEFINE_LANGUAGE_CODE3 ("Braj", bra, bra)
+ DEFINE_LANGUAGE_CODE ("Breton", br, bre, bre)
++DEFINE_LANGUAGE_CODE3 ("Buginese", bug, bug)
+ DEFINE_LANGUAGE_CODE ("Bulgarian", bg, bul, bul)
++DEFINE_LANGUAGE_CODE3 ("Buriat", bua, bua)
+ DEFINE_LANGUAGE_CODE ("Burmese", my, mya, bur)
++DEFINE_LANGUAGE_CODE3 ("Caddo", cad, cad)
++DEFINE_LANGUAGE_CODE3 ("Carib", car, car)
+ DEFINE_LANGUAGE_CODE ("Catalan", ca, cat, cat)
++DEFINE_LANGUAGE_CODE3 ("Caucasian (Other)", cau, cau)
++DEFINE_LANGUAGE_CODE3 ("Cebuano", ceb, ceb)
++DEFINE_LANGUAGE_CODE3 ("Celtic (Other)", cel, cel)
++DEFINE_LANGUAGE_CODE3 ("Central American Indian (Other)", cai, cai)
++DEFINE_LANGUAGE_CODE3 ("Chagatai", chg, chg)
++DEFINE_LANGUAGE_CODE3 ("Canmic languages", cmc, cmc)
+ DEFINE_LANGUAGE_CODE ("Chamorro", ch, cha, cha)
+ DEFINE_LANGUAGE_CODE ("Chechen", ce, che, che)
++DEFINE_LANGUAGE_CODE3 ("Cherokee", chr, chr)
++DEFINE_LANGUAGE_CODE ("Chewa; Chechewa; Nyanja", ny, nya, nya)
++DEFINE_LANGUAGE_CODE3 ("Cheyenne", chy, chy)
++DEFINE_LANGUAGE_CODE3 ("Chibcha", chb, chb)
+ DEFINE_LANGUAGE_CODE ("Chinese", zh, zho, chi)
++DEFINE_LANGUAGE_CODE3 ("Chinook jargon", chn, chn)
++DEFINE_LANGUAGE_CODE3 ("Chipewyan", chp, chp)
++DEFINE_LANGUAGE_CODE3 ("Choctaw", cho, cho)
+ DEFINE_LANGUAGE_CODE ("Church Slavic", cu, chu, chu)
++DEFINE_LANGUAGE_CODE3 ("Chuukese", chk, chk)
+ DEFINE_LANGUAGE_CODE ("Chuvash", cv, chv, chv)
++DEFINE_LANGUAGE_CODE3 ("Coptic", cop, cop)
+ DEFINE_LANGUAGE_CODE ("Cornish", kw, cor, cor)
+ DEFINE_LANGUAGE_CODE ("Corsican", co, cos, cos)
++DEFINE_LANGUAGE_CODE ("Cree", cr, cre, cre)
++DEFINE_LANGUAGE_CODE3 ("Creek", mus, mus)
++DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins (Other)", crp, crp)
++DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, English-based (Other)", cpe, cpe)
++DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, French-based (Other)", cpf, cpf)
++DEFINE_LANGUAGE_CODE3 ("Creoles and pidgins, Portuguese-based (Other)", cpp, cpp)
++DEFINE_LANGUAGE_CODE3 ("Crimean Tatar; Crimean Turkish", crh, crh)
++DEFINE_LANGUAGE_CODE ("Croatian", hr, hrv, scr)
++DEFINE_LANGUAGE_CODE3 ("Cushitic (Other)", cus, cus)
+ DEFINE_LANGUAGE_CODE ("Czech", cs, ces, cze)
++DEFINE_LANGUAGE_CODE3 ("Dakota", dak, dak)
+ DEFINE_LANGUAGE_CODE ("Danish", da, dan, dan)
+-DEFINE_LANGUAGE_CODE ("Dutch", nl, nld, dut)
++DEFINE_LANGUAGE_CODE3 ("Dargwa", dar, dar)
++DEFINE_LANGUAGE_CODE3 ("Dayak", day, day)
++DEFINE_LANGUAGE_CODE3 ("Delaware", del, del)
++DEFINE_LANGUAGE_CODE3 ("Dinka", din, din)
++DEFINE_LANGUAGE_CODE ("Divehi", dv, div, div)
++DEFINE_LANGUAGE_CODE3 ("Dogri", doi, doi)
++DEFINE_LANGUAGE_CODE3 ("Dogrib", dgr, dgr)
++DEFINE_LANGUAGE_CODE3 ("Dravidian (Other)", dra, dra)
++DEFINE_LANGUAGE_CODE3 ("Duala", dua, dua)
++DEFINE_LANGUAGE_CODE ("Dutch; Flemish", nl, nld, dut)
++DEFINE_LANGUAGE_CODE3 ("Dutch, Middle", dum, dum)
++DEFINE_LANGUAGE_CODE3 ("Dyula", dyu, dyu)
+ DEFINE_LANGUAGE_CODE ("Dzongkha", dz, dzo, dzo)
++DEFINE_LANGUAGE_CODE3 ("Efik", efi, efi)
++DEFINE_LANGUAGE_CODE3 ("Egyptian (Ancient)", egy, egy)
++DEFINE_LANGUAGE_CODE3 ("Ekajuk", eka, eka)
++DEFINE_LANGUAGE_CODE3 ("Elamite", elx, elx)
+ DEFINE_LANGUAGE_CODE ("English", en, eng, eng)
++DEFINE_LANGUAGE_CODE3 ("English, Middle", enm, enm)
++DEFINE_LANGUAGE_CODE3 ("English, Old", ang, ang)
++DEFINE_LANGUAGE_CODE3 ("Erzya", myv, myv)
+ DEFINE_LANGUAGE_CODE ("Esperanto", eo, epo, epo)
+ DEFINE_LANGUAGE_CODE ("Estonian", et, est, est)
++DEFINE_LANGUAGE_CODE ("Ewe", ee, ewe, ewe)
++DEFINE_LANGUAGE_CODE3 ("Ewondo", ewo, ewo)
++DEFINE_LANGUAGE_CODE3 ("Fang", fan, fan)
++DEFINE_LANGUAGE_CODE3 ("Fanti", fat, fat)
+ DEFINE_LANGUAGE_CODE ("Faroese", fo, fao, fao)
+ DEFINE_LANGUAGE_CODE ("Fijian", fj, fij, fij)
+ DEFINE_LANGUAGE_CODE ("Finnish", fi, fin, fin)
++DEFINE_LANGUAGE_CODE3 ("Finno-Ugrian (Other)", fiu, fiu)
++DEFINE_LANGUAGE_CODE3 ("Fon", fon, fon)
+ DEFINE_LANGUAGE_CODE ("French", fr, fra, fre)
++DEFINE_LANGUAGE_CODE3 ("French, Middle", frm, frm)
++DEFINE_LANGUAGE_CODE3 ("French, Old", fro, fro)
+ DEFINE_LANGUAGE_CODE ("Frisian", fy, fry, fry)
+-DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo)
+-DEFINE_LANGUAGE_CODE ("German", de, deu, ger)
++DEFINE_LANGUAGE_CODE3 ("Friulian", fur, fur)
++DEFINE_LANGUAGE_CODE ("Fulah", ff, ful, ful)
++DEFINE_LANGUAGE_CODE3 ("Ga", gaa, gaa)
+ DEFINE_LANGUAGE_CODE ("Gaelic (Scots)", gd, gla, gla)
+-DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle)
+ DEFINE_LANGUAGE_CODE ("Gallegan", gl, glg, glg)
+-DEFINE_LANGUAGE_CODE3 ("Ganda", lug, lug)
+-DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv)
+-DEFINE_LANGUAGE_CODE ("Greek, Modern ()", el, gre, ell)
++DEFINE_LANGUAGE_CODE ("Ganda", lg, lug, lug)
++DEFINE_LANGUAGE_CODE3 ("Gayo", gay, gay)
++DEFINE_LANGUAGE_CODE3 ("Gbaya", gba, gba)
++DEFINE_LANGUAGE_CODE3 ("Geez", gez, gez)
++DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo)
++DEFINE_LANGUAGE_CODE ("German", de, deu, ger)
++DEFINE_LANGUAGE_CODE3 ("German, Low; Saxon, Low", nds, nds)
++DEFINE_LANGUAGE_CODE3 ("German, Middle High", gmh, gmh)
++DEFINE_LANGUAGE_CODE3 ("German, Old High", goh, goh)
++DEFINE_LANGUAGE_CODE3 ("Germanic (Other)", gem, gem)
++DEFINE_LANGUAGE_CODE ("Gikuyu; Kikuyu", ki, kik, kik)
++DEFINE_LANGUAGE_CODE3 ("Gilbertese", gil, gil)
++DEFINE_LANGUAGE_CODE3 ("Gondi", gon, gon)
++DEFINE_LANGUAGE_CODE3 ("Gorontalo", gor, gor)
++DEFINE_LANGUAGE_CODE3 ("Gothic", got, got)
++DEFINE_LANGUAGE_CODE3 ("Grebo", grb, grb)
++DEFINE_LANGUAGE_CODE3 ("Greek, Ancient", grc, grc)
++DEFINE_LANGUAGE_CODE ("Greek, Modern", el, gre, ell)
+ DEFINE_LANGUAGE_CODE ("Guarani", gn, grn, grn)
+ DEFINE_LANGUAGE_CODE ("Gujarati", gu, guj, guj)
++DEFINE_LANGUAGE_CODE3 ("Gwich´in", gwi, gwi)
++DEFINE_LANGUAGE_CODE3 ("Haida", hai, hai)
++DEFINE_LANGUAGE_CODE ("Haitian; Haitian Creole", ht, hat, hat)
++DEFINE_LANGUAGE_CODE ("Hausa", ha, hau, hau)
++DEFINE_LANGUAGE_CODE3 ("Hawaiian", haw, haw)
+ DEFINE_LANGUAGE_CODE ("Hebrew", he, heb, heb)
+ DEFINE_LANGUAGE_CODE ("Herero", hz, her, her)
++DEFINE_LANGUAGE_CODE3 ("Hiligaynon", hil, hil)
++DEFINE_LANGUAGE_CODE3 ("Himachali", him, him)
+ DEFINE_LANGUAGE_CODE ("Hindi", hi, hin, hin)
+ DEFINE_LANGUAGE_CODE ("Hiri Motu", ho, hmo, hmo)
++DEFINE_LANGUAGE_CODE3 ("Hittite", hit, hit)
++DEFINE_LANGUAGE_CODE3 ("Hmong", hmn, hmn)
+ DEFINE_LANGUAGE_CODE ("Hungarian", hu, hun, hun)
++DEFINE_LANGUAGE_CODE3 ("Hupa", hup, hup)
++DEFINE_LANGUAGE_CODE3 ("Iban", iba, iba)
+ DEFINE_LANGUAGE_CODE ("Icelandic", is, isl, ice)
+-DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku)
+-DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile)
+-DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina)
++DEFINE_LANGUAGE_CODE ("Ido", io, ido, ido)
++DEFINE_LANGUAGE_CODE ("Igbo", ig, ibo, ibo)
++DEFINE_LANGUAGE_CODE3 ("Ijo", ijo, ijo)
++DEFINE_LANGUAGE_CODE3 ("Iloko", ilo, ilo)
++DEFINE_LANGUAGE_CODE3 ("Inari Sami", smn, smn)
++DEFINE_LANGUAGE_CODE3 ("Indic (Other)", inc, inc)
++DEFINE_LANGUAGE_CODE3 ("Indo-European (Other)", ine, ine)
+ DEFINE_LANGUAGE_CODE ("Indonesian", id, ind, ind)
++DEFINE_LANGUAGE_CODE3 ("Ingush", inh, inh)
++DEFINE_LANGUAGE_CODE ("Interlingua", ia, ina, ina)
++DEFINE_LANGUAGE_CODE ("Interlingue", ie, ile, ile)
++DEFINE_LANGUAGE_CODE ("Inuktitut", iu, iku, iku)
+ DEFINE_LANGUAGE_CODE ("Inupiaq", ik, ipk, ipk)
++DEFINE_LANGUAGE_CODE3 ("Iranian (Other)", ira, ira)
++DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle)
++DEFINE_LANGUAGE_CODE3 ("Irish, Middle", mga, mga)
++DEFINE_LANGUAGE_CODE3 ("Irish, Old", sga, sga)
++DEFINE_LANGUAGE_CODE3 ("Iroquoian languages", iro, iro)
+ DEFINE_LANGUAGE_CODE ("Italian", it, ita, ita)
+-DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav)
+ DEFINE_LANGUAGE_CODE ("Japanese", ja, jpn, jpn)
++DEFINE_LANGUAGE_CODE ("Javanese", jv, jaw, jav)
++DEFINE_LANGUAGE_CODE3 ("Judeo-Arabic", jrb, jrb)
++DEFINE_LANGUAGE_CODE3 ("Judeo-Persian", jpr, jpr)
++DEFINE_LANGUAGE_CODE3 ("Kabardian", kbd, kbd)
++DEFINE_LANGUAGE_CODE3 ("Kabyle", kab, kab)
++DEFINE_LANGUAGE_CODE3 ("Kachin", kac, kac)
+ DEFINE_LANGUAGE_CODE ("Kalaallisut (Greenlandic)", kl, kal, kal)
++DEFINE_LANGUAGE_CODE3 ("Kamba", kam, kam)
+ DEFINE_LANGUAGE_CODE ("Kannada", kn, kan, kan)
++DEFINE_LANGUAGE_CODE ("Kanuri", kr, kau, kau)
++DEFINE_LANGUAGE_CODE3 ("Karachay-Balkar", krc, krc)
++DEFINE_LANGUAGE_CODE3 ("Kara-Kalpak", kaa, kaa)
++DEFINE_LANGUAGE_CODE3 ("Karen", kar, kar)
+ DEFINE_LANGUAGE_CODE ("Kashmiri", ks, kas, kas)
++DEFINE_LANGUAGE_CODE3 ("Kashubian", csb, csb)
++DEFINE_LANGUAGE_CODE3 ("Kawi", kaw, kaw)
+ DEFINE_LANGUAGE_CODE ("Kazakh", kk, kaz, kaz)
++DEFINE_LANGUAGE_CODE3 ("Khasi", kha, kha)
+ DEFINE_LANGUAGE_CODE ("Khmer", km, khm, khm)
++DEFINE_LANGUAGE_CODE3 ("Khoisan (Other)", khi, khi)
++DEFINE_LANGUAGE_CODE3 ("Khotanese", kho, kho)
+ DEFINE_LANGUAGE_CODE ("Kikuyu", ki, kik, kik)
++DEFINE_LANGUAGE_CODE3 ("Kimbundu", kmb, kmb)
+ DEFINE_LANGUAGE_CODE ("Kinyarwanda", rw, kin, kin)
+ DEFINE_LANGUAGE_CODE ("Kirghiz", ky, kir, kir)
+ DEFINE_LANGUAGE_CODE ("Komi", kv, kom, kom)
++DEFINE_LANGUAGE_CODE ("Kongo", kg, kon, kon)
++DEFINE_LANGUAGE_CODE3 ("Konkani", kok, kok)
+ DEFINE_LANGUAGE_CODE ("Korean", ko, kor, kor)
++DEFINE_LANGUAGE_CODE3 ("Kosraean", kos, kos)
++DEFINE_LANGUAGE_CODE3 ("Kpelle", kpe, kpe)
++DEFINE_LANGUAGE_CODE3 ("Kru", kro, kro)
+ DEFINE_LANGUAGE_CODE ("Kuanyama", kj, kua, kua)
++DEFINE_LANGUAGE_CODE3 ("Kumyk", kum, kum)
+ DEFINE_LANGUAGE_CODE ("Kurdish", ku, kur, kur)
++DEFINE_LANGUAGE_CODE3 ("Kurukh", kru, kru)
++DEFINE_LANGUAGE_CODE3 ("Kutenai", kut, kut)
++DEFINE_LANGUAGE_CODE3 ("Ladino", lad, lad)
++DEFINE_LANGUAGE_CODE3 ("Lahnda", lah, lah)
++DEFINE_LANGUAGE_CODE3 ("Lamba", lam, lam)
+ DEFINE_LANGUAGE_CODE ("Lao", lo, lao, lao)
+ DEFINE_LANGUAGE_CODE ("Latin", la, lat, lat)
+ DEFINE_LANGUAGE_CODE ("Latvian", lv, lav, lav)
++DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz)
++DEFINE_LANGUAGE_CODE3 ("Lezghian", lez, lez)
++DEFINE_LANGUAGE_CODE ("Limburgan; Limburger; Limburgish", li, lim, lim)
+ DEFINE_LANGUAGE_CODE ("Lingala", ln, lin, lin)
+ DEFINE_LANGUAGE_CODE ("Lithuanian", lt, lit, lit)
+-DEFINE_LANGUAGE_CODE ("Letzeburgesch", lb, ltz, ltz)
++DEFINE_LANGUAGE_CODE3 ("Lozi", loz, loz)
++DEFINE_LANGUAGE_CODE ("Luba-Katanga", lu, lub, lub)
++DEFINE_LANGUAGE_CODE3 ("Luba-Lulua", lua, lua)
++DEFINE_LANGUAGE_CODE3 ("Luiseno", lui, lui)
++DEFINE_LANGUAGE_CODE3 ("Lule Sami", smj, smj)
++DEFINE_LANGUAGE_CODE3 ("Lunda", lun, lun)
++DEFINE_LANGUAGE_CODE3 ("Luo (Kenya and Tanzania)", luo, luo)
++DEFINE_LANGUAGE_CODE3 ("Lushai", lus, lus)
+ DEFINE_LANGUAGE_CODE ("Macedonian", mk, mkd, mac)
+-DEFINE_LANGUAGE_CODE ("Marshall", mh, mah, mah)
++DEFINE_LANGUAGE_CODE3 ("Madurese", mad, mad)
++DEFINE_LANGUAGE_CODE3 ("Magahi", mag, mag)
++DEFINE_LANGUAGE_CODE3 ("Maithili", mai, mai)
++DEFINE_LANGUAGE_CODE3 ("Makasar", mak, mak)
++DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg)
++DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may)
+ DEFINE_LANGUAGE_CODE ("Malayalam", ml, mal, mal)
++DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt)
++DEFINE_LANGUAGE_CODE3 ("Manchu", mnc, mnc)
++DEFINE_LANGUAGE_CODE3 ("Mandar", mdr, mdr)
++DEFINE_LANGUAGE_CODE3 ("Mandingo", man, man)
++DEFINE_LANGUAGE_CODE3 ("Manipuri", mni, mni)
++DEFINE_LANGUAGE_CODE3 ("Manobo languages", mno, mno)
++DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv)
+ DEFINE_LANGUAGE_CODE ("Maori", mi, mri, mao)
+ DEFINE_LANGUAGE_CODE ("Marathi", mr, mar, mar)
+-DEFINE_LANGUAGE_CODE ("Malay", ms, msa, may)
+-DEFINE_LANGUAGE_CODE ("Malagasy", mg, mlg, mlg)
+-DEFINE_LANGUAGE_CODE ("Maltese", mt, mlt, mlt)
++DEFINE_LANGUAGE_CODE3 ("Mari", chm, chm)
++DEFINE_LANGUAGE_CODE ("Marshallese", mh, mah, mah)
++DEFINE_LANGUAGE_CODE3 ("Marwari", mwr, mwr)
++DEFINE_LANGUAGE_CODE3 ("Masai", mas, mas)
++DEFINE_LANGUAGE_CODE3 ("Mayan languages", myn, myn)
++DEFINE_LANGUAGE_CODE3 ("Mende", men, men)
++DEFINE_LANGUAGE_CODE3 ("Micmac", mic, mic)
++DEFINE_LANGUAGE_CODE3 ("Minangkabau", min, min)
++DEFINE_LANGUAGE_CODE3 ("Miscellaneous languages", mis, mis)
++DEFINE_LANGUAGE_CODE3 ("Mohawk", moh, moh)
++DEFINE_LANGUAGE_CODE3 ("Moksha", mdf, mdf)
+ DEFINE_LANGUAGE_CODE ("Moldavian", mo, mol, mol)
++DEFINE_LANGUAGE_CODE3 ("Mon-Khmer (Other)", mkh, mkh)
++DEFINE_LANGUAGE_CODE3 ("Mongo", lol, lol)
+ DEFINE_LANGUAGE_CODE ("Mongolian", mn, mon, mon)
++DEFINE_LANGUAGE_CODE3 ("Mossi", mos, mos)
++DEFINE_LANGUAGE_CODE3 ("Munda languages", mun, mun)
++DEFINE_LANGUAGE_CODE3 ("Nahuatl", nah, nah)
+ DEFINE_LANGUAGE_CODE ("Nauru", na, nau, nau)
+ DEFINE_LANGUAGE_CODE ("Navajo", nv, nav, nav)
+-DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl)
+ DEFINE_LANGUAGE_CODE ("Ndebele, North", nd, nde, nde)
++DEFINE_LANGUAGE_CODE ("Ndebele, South", nr, nbl, nbl)
+ DEFINE_LANGUAGE_CODE ("Ndonga", ng, ndo, ndo)
++DEFINE_LANGUAGE_CODE3 ("Neapolitan", nap, nap)
+ DEFINE_LANGUAGE_CODE ("Nepali", ne, nep, nep)
++DEFINE_LANGUAGE_CODE3 ("Newari", new, new)
++DEFINE_LANGUAGE_CODE3 ("Nias", nia, nia)
++DEFINE_LANGUAGE_CODE3 ("Niger-Kordofanian (Other)", nic, nic)
++DEFINE_LANGUAGE_CODE3 ("Nilo-Saharan (Other)", ssa, ssa)
++DEFINE_LANGUAGE_CODE3 ("Niuean", niu, niu)
++DEFINE_LANGUAGE_CODE3 ("Nogai", nog, nog)
++DEFINE_LANGUAGE_CODE3 ("Norse, Old", non, non)
++DEFINE_LANGUAGE_CODE3 ("North American Indian (Other)", nai, nai)
++DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme)
+ DEFINE_LANGUAGE_CODE ("Norwegian", no, nor, nor)
+-DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno)
+ DEFINE_LANGUAGE_CODE ("Norwegian Bokmål", nb, nob, nob)
+-DEFINE_LANGUAGE_CODE ("Chichewa; Nyanja", ny, nya, nya)
+-DEFINE_LANGUAGE_CODE ("Occitan (post 1500); Provençal", oc, oci, oci)
++DEFINE_LANGUAGE_CODE ("Norwegian Nynorsk", nn, nno, nno)
++DEFINE_LANGUAGE_CODE3 ("Nubian languages", nub, nub)
++DEFINE_LANGUAGE_CODE3 ("Nyamwezi", nym, nym)
++DEFINE_LANGUAGE_CODE3 ("Nyankole", nyn, nyn)
++DEFINE_LANGUAGE_CODE3 ("Nyoro", nyo, nyo)
++DEFINE_LANGUAGE_CODE3 ("Nzima", nzi, nzi)
++DEFINE_LANGUAGE_CODE ("Ojibwa", oj, oji, oji)
+ DEFINE_LANGUAGE_CODE ("Oriya", or, ori, ori)
+ DEFINE_LANGUAGE_CODE ("Oromo", om, orm, orm)
++DEFINE_LANGUAGE_CODE3 ("Osage", osa, osa)
+ DEFINE_LANGUAGE_CODE ("Ossetian; Ossetic", os, oss, oss)
++DEFINE_LANGUAGE_CODE3 ("Otomian languages", oto, oto)
++DEFINE_LANGUAGE_CODE3 ("Pahlavi", pal, pal)
++DEFINE_LANGUAGE_CODE3 ("Palauan", pau, pau)
++DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli)
++DEFINE_LANGUAGE_CODE3 ("Pampanga", pam, pam)
++DEFINE_LANGUAGE_CODE3 ("Pangasinan", pag, pag)
+ DEFINE_LANGUAGE_CODE ("Panjabi", pa, pan, pan)
++DEFINE_LANGUAGE_CODE3 ("Papiamento", pap, pap)
++DEFINE_LANGUAGE_CODE3 ("Papuan (Other)", paa, paa)
+ DEFINE_LANGUAGE_CODE ("Persian", fa, fas, per)
+-DEFINE_LANGUAGE_CODE ("Pali", pi, pli, pli)
++DEFINE_LANGUAGE_CODE3 ("Persian, Old (ca.600-400 B.C.E.)", peo, peo)
++DEFINE_LANGUAGE_CODE3 ("Philippine (Other)", phi, phi)
++DEFINE_LANGUAGE_CODE3 ("Phoenician", phn, phn)
++DEFINE_LANGUAGE_CODE3 ("Pohnpeian", pon, pon)
+ DEFINE_LANGUAGE_CODE ("Polish", pl, pol, pol)
+ DEFINE_LANGUAGE_CODE ("Portuguese", pt, por, por)
++DEFINE_LANGUAGE_CODE3 ("Prakrit", pra, pra)
++DEFINE_LANGUAGE_CODE ("Provençal; Occitan (post 1500)", oc, oci, oci)
++DEFINE_LANGUAGE_CODE3 ("Provençal, Old (to 1500)", pro, pro)
+ DEFINE_LANGUAGE_CODE ("Pushto", ps, pus, pus)
+ DEFINE_LANGUAGE_CODE ("Quechua", qu, que, que)
+ DEFINE_LANGUAGE_CODE ("Raeto-Romance", rm, roh, roh)
++DEFINE_LANGUAGE_CODE3 ("Rajasthani", raj, raj)
++DEFINE_LANGUAGE_CODE3 ("Rapanui", rap, rap)
++DEFINE_LANGUAGE_CODE3 ("Rarotongan", rar, rar)
++DEFINE_LANGUAGE_CODE3 ("Romance (Other)", roa, roa)
+ DEFINE_LANGUAGE_CODE ("Romanian", ro, ron, rum)
++DEFINE_LANGUAGE_CODE3 ("Romany", rom, rom)
+ DEFINE_LANGUAGE_CODE ("Rundi", rn, run, run)
+ DEFINE_LANGUAGE_CODE ("Russian", ru, rus, rus)
++DEFINE_LANGUAGE_CODE3 ("Salishan languages", sal, sal)
++DEFINE_LANGUAGE_CODE3 ("Samaritan Aramaic", sam, sam)
++DEFINE_LANGUAGE_CODE3 ("Sami languages (Other)", smi, smi)
++DEFINE_LANGUAGE_CODE ("Samoan", sm, smo, smo)
++DEFINE_LANGUAGE_CODE3 ("Sandawe", sad, sad)
+ DEFINE_LANGUAGE_CODE ("Sango", sg, sag, sag)
+ DEFINE_LANGUAGE_CODE ("Sanskrit", sa, san, san)
++DEFINE_LANGUAGE_CODE3 ("Santali", sat, sat)
++DEFINE_LANGUAGE_CODE ("Sardinian", sc, srd, srd)
++DEFINE_LANGUAGE_CODE3 ("Sasak", sas, sas)
++DEFINE_LANGUAGE_CODE3 ("Scots", sco, sco)
++DEFINE_LANGUAGE_CODE3 ("Selkup", sel, sel)
++DEFINE_LANGUAGE_CODE3 ("Semitic (Other)", sem, sem)
+ DEFINE_LANGUAGE_CODE ("Serbian", sr, srp, scc)
+-DEFINE_LANGUAGE_CODE ("Croatian", hr, hrv, scr)
++DEFINE_LANGUAGE_CODE3 ("Serer", srr, srr)
++DEFINE_LANGUAGE_CODE3 ("Shan", shn, shn)
++DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna)
++DEFINE_LANGUAGE_CODE ("Sichuan Yi", ii, iii, iii)
++DEFINE_LANGUAGE_CODE3 ("Sidamo", sid, sid)
++DEFINE_LANGUAGE_CODE3 ("Siksika", bla, bla)
++DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd)
+ DEFINE_LANGUAGE_CODE ("Sinhalese", si, sin, sin)
++DEFINE_LANGUAGE_CODE3 ("Sino-Tibetan (Other)", sit, sit)
++DEFINE_LANGUAGE_CODE3 ("Siouan languages", sio, sio)
++DEFINE_LANGUAGE_CODE3 ("Skolt Sami", sms, sms)
++DEFINE_LANGUAGE_CODE3 ("Slave (Athapascan)", den, den)
++DEFINE_LANGUAGE_CODE3 ("Slavic (Other)", sla, sla)
+ DEFINE_LANGUAGE_CODE ("Slovak", sk, slk, slo)
+ DEFINE_LANGUAGE_CODE ("Slovenian", sl, slv, slv)
+-DEFINE_LANGUAGE_CODE ("Northern Sami", se, sme, sme)
+-DEFINE_LANGUAGE_CODE ("Samoan", sm, smo, smo)
+-DEFINE_LANGUAGE_CODE ("Shona", sn, sna, sna)
+-DEFINE_LANGUAGE_CODE ("Sindhi", sd, snd, snd)
++DEFINE_LANGUAGE_CODE3 ("Sogdian", sog, sog)
+ DEFINE_LANGUAGE_CODE ("Somali", so, som, som)
++DEFINE_LANGUAGE_CODE3 ("Songhai", son, son)
++DEFINE_LANGUAGE_CODE3 ("Soninke", snk, snk)
++DEFINE_LANGUAGE_CODE3 ("Sorbian languages", wen, wen)
+ DEFINE_LANGUAGE_CODE3 ("Sotho, Northern", nso, nso)
+ DEFINE_LANGUAGE_CODE ("Sotho, Southern", st, sot, sot)
++DEFINE_LANGUAGE_CODE3 ("South American Indian (Other)", sai, sai)
++DEFINE_LANGUAGE_CODE3 ("Southern Sami", sma, sma)
+ DEFINE_LANGUAGE_CODE ("Spanish", es, spa, spa)
+-DEFINE_LANGUAGE_CODE ("Sardinian", sc, srd, srd)
+-DEFINE_LANGUAGE_CODE ("Swati", ss, ssw, ssw)
++DEFINE_LANGUAGE_CODE3 ("Sukuma", suk, suk)
++DEFINE_LANGUAGE_CODE3 ("Sumerian", sux, sux)
+ DEFINE_LANGUAGE_CODE ("Sundanese", su, sun, sun)
++DEFINE_LANGUAGE_CODE3 ("Susu", sus, sus)
+ DEFINE_LANGUAGE_CODE ("Swahili", sw, swa, swa)
++DEFINE_LANGUAGE_CODE ("Swati", ss, ssw, ssw)
+ DEFINE_LANGUAGE_CODE ("Swedish", sv, swe, swe)
++DEFINE_LANGUAGE_CODE3 ("Syriac", syr, syr)
++DEFINE_LANGUAGE_CODE ("Tagalog", tl, tgl, tgl)
+ DEFINE_LANGUAGE_CODE ("Tahitian", ty, tah, tah)
++DEFINE_LANGUAGE_CODE3 ("Tai (Other)", tai, tai)
++DEFINE_LANGUAGE_CODE ("Tajik", tg, tgk, tgk)
++DEFINE_LANGUAGE_CODE3 ("Tamashek", tmh, tmh)
+ DEFINE_LANGUAGE_CODE ("Tamil", ta, tam, tam)
+ DEFINE_LANGUAGE_CODE ("Tatar", tt, tat, tat)
+ DEFINE_LANGUAGE_CODE ("Telugu", te, tel, tel)
+-DEFINE_LANGUAGE_CODE ("Tajik", tg, tgk, tgk)
+-DEFINE_LANGUAGE_CODE ("Tagalog", tl, tgl, tgl)
++DEFINE_LANGUAGE_CODE3 ("Tereno", ter, ter)
++DEFINE_LANGUAGE_CODE3 ("Tetum", tet, tet)
+ DEFINE_LANGUAGE_CODE ("Thai", th, tha, tha)
+ DEFINE_LANGUAGE_CODE ("Tibetan", bo, bod, tib)
++DEFINE_LANGUAGE_CODE3 ("Tigre", tig, tig)
+ DEFINE_LANGUAGE_CODE ("Tigrinya", ti, tir, tir)
++DEFINE_LANGUAGE_CODE3 ("Timne", tem, tem)
++DEFINE_LANGUAGE_CODE3 ("Tiv", tiv, tiv)
++DEFINE_LANGUAGE_CODE3 ("Tlingit", tli, tli)
++DEFINE_LANGUAGE_CODE3 ("Tok Pisin", tpi, tpi)
++DEFINE_LANGUAGE_CODE3 ("Tokelau", tkl, tkl)
++DEFINE_LANGUAGE_CODE3 ("Tonga (Nyasa)", tog, tog)
+ DEFINE_LANGUAGE_CODE ("Tonga (Tonga Islands)", to, ton, ton)
+-DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn)
++DEFINE_LANGUAGE_CODE3 ("Tsimshian", tsi, tsi)
+ DEFINE_LANGUAGE_CODE ("Tsonga", ts, tso, tso)
++DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn)
++DEFINE_LANGUAGE_CODE3 ("Tumbuka", tum, tum)
++DEFINE_LANGUAGE_CODE3 ("Tupi languages", tup, tup)
+ DEFINE_LANGUAGE_CODE ("Turkish", tr, tur, tur)
++DEFINE_LANGUAGE_CODE3 ("Turkish, Ottoman (1500-1928)", ota, ota)
+ DEFINE_LANGUAGE_CODE ("Turkmen", tk, tuk, tuk)
++DEFINE_LANGUAGE_CODE3 ("Tuvalu", tvl, tvl)
++DEFINE_LANGUAGE_CODE3 ("Tuvinian", tyv, tyv)
+ DEFINE_LANGUAGE_CODE ("Twi", tw, twi, twi)
++DEFINE_LANGUAGE_CODE3 ("Udmurt", udm, udm)
++DEFINE_LANGUAGE_CODE3 ("Ugaritic", uga, uga)
+ DEFINE_LANGUAGE_CODE ("Uighur", ug, uig, uig)
+ DEFINE_LANGUAGE_CODE ("Ukrainian", uk, ukr, ukr)
++DEFINE_LANGUAGE_CODE3 ("Umbundu", umb, umb)
+ DEFINE_LANGUAGE_CODE ("Urdu", ur, urd, urd)
+ DEFINE_LANGUAGE_CODE ("Uzbek", uz, uzb, uzb)
++DEFINE_LANGUAGE_CODE3 ("Vai", vai, vai)
+ DEFINE_LANGUAGE_CODE3 ("Venda", ven, ven)
+ DEFINE_LANGUAGE_CODE ("Vietnamese", vi, vie, vie)
+ DEFINE_LANGUAGE_CODE ("Volapük", vo, vol, vol)
++DEFINE_LANGUAGE_CODE3 ("Votic", vot, vot)
++DEFINE_LANGUAGE_CODE3 ("Wakashan languages", wak, wak)
++DEFINE_LANGUAGE_CODE3 ("Walamo", wal, wal)
+ DEFINE_LANGUAGE_CODE ("Walloon", wa, wln, wln)
++DEFINE_LANGUAGE_CODE3 ("Waray", war, war)
++DEFINE_LANGUAGE_CODE3 ("Washo", was, was)
+ DEFINE_LANGUAGE_CODE ("Welsh", cy, cym, wel)
+ DEFINE_LANGUAGE_CODE ("Wolof", wo, wol, wol)
+ DEFINE_LANGUAGE_CODE ("Xhosa", xh, xho, xho)
++DEFINE_LANGUAGE_CODE3 ("Yakut", sah, sah)
++DEFINE_LANGUAGE_CODE3 ("Yao", yao, yao)
++DEFINE_LANGUAGE_CODE3 ("Yapese", yap, yap)
+ DEFINE_LANGUAGE_CODE ("Yiddish", yi, yid, yid)
+ DEFINE_LANGUAGE_CODE ("Yoruba", yo, yor, yor)
++DEFINE_LANGUAGE_CODE3 ("Yupik languages", ypk, ypk)
++DEFINE_LANGUAGE_CODE3 ("Zande", znd, znd)
++DEFINE_LANGUAGE_CODE3 ("Zapotec", zap, zap)
++DEFINE_LANGUAGE_CODE3 ("Zenaga", zen, zen)
+ DEFINE_LANGUAGE_CODE ("Zhuang", za, zha, zha)
+ DEFINE_LANGUAGE_CODE ("Zulu", zu, zul, zul)
++DEFINE_LANGUAGE_CODE3 ("Zuni", zun, zun)
+--- glibc-2.3.2/locale/loadarchive.c 2002-11-05 14:11:23.000000000 -0500
++++ glibc-2.3.2/locale/loadarchive.c 2003-09-19 22:37:04.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Code to load locale data from the locale archive file.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,6 +32,7 @@
+
+ #include "localeinfo.h"
+ #include "locarchive.h"
++#include <not-cancel.h>
+
+ /* Define the hash function. We define the function as static inline. */
+ #define compute_hashval static inline compute_hashval
+@@ -202,7 +203,7 @@
+ archmapped = &headmap;
+
+ /* The archive has never been opened. */
+- fd = __open64 (archfname, O_RDONLY);
++ fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE);
+ if (fd < 0)
+ /* Cannot open the archive, for whatever reason. */
+ return NULL;
+@@ -212,7 +213,7 @@
+ /* stat failed, very strange. */
+ close_and_out:
+ if (fd >= 0)
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return NULL;
+ }
+
+@@ -252,7 +253,7 @@
+ {
+ /* We've mapped the whole file already, so we can be
+ sure we won't need this file descriptor later. */
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ fd = -1;
+ }
+
+@@ -393,7 +394,7 @@
+ if (fd == -1)
+ {
+ struct stat64 st;
+- fd = __open64 (archfname, O_RDONLY);
++ fd = open_not_cancel_2 (archfname, O_RDONLY|O_LARGEFILE);
+ if (fd == -1)
+ /* Cannot open the archive, for whatever reason. */
+ return NULL;
+@@ -446,7 +447,7 @@
+
+ /* We don't need the file descriptor any longer. */
+ if (fd >= 0)
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ fd = -1;
+
+ /* We succeeded in mapping all the necessary regions of the archive.
+--- glibc-2.3.2/locale/loadlocale.c 2002-08-28 20:40:34.000000000 -0400
++++ glibc-2.3.2/locale/loadlocale.c 2003-09-19 22:37:04.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Functions to read locale data files.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -30,6 +30,7 @@
+ #endif
+ #include <sys/stat.h>
+
++#include <not-cancel.h>
+ #include "localeinfo.h"
+
+
+@@ -142,7 +143,7 @@
+ file->decided = 1;
+ file->data = NULL;
+
+- fd = __open (file->filename, O_RDONLY);
++ fd = open_not_cancel_2 (file->filename, O_RDONLY);
+ if (__builtin_expect (fd, 0) < 0)
+ /* Cannot open the file. */
+ return;
+@@ -150,7 +151,7 @@
+ if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0)
+ {
+ puntfd:
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return;
+ }
+ if (__builtin_expect (S_ISDIR (st.st_mode), 0))
+@@ -160,7 +161,7 @@
+ char *newp;
+ size_t filenamelen;
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ filenamelen = strlen (file->filename);
+ newp = (char *) alloca (filenamelen
+@@ -170,7 +171,7 @@
+ _nl_category_names[category],
+ _nl_category_name_sizes[category] + 1);
+
+- fd = __open (newp, O_RDONLY);
++ fd = open_not_cancel_2 (newp, O_RDONLY);
+ if (__builtin_expect (fd, 0) < 0)
+ return;
+
+@@ -206,7 +207,7 @@
+ char *p = (char *) filedata;
+ while (to_read > 0)
+ {
+- nread = __read (fd, p, to_read);
++ nread = read_not_cancel (fd, p, to_read);
+ if (__builtin_expect (nread, 1) <= 0)
+ {
+ free (filedata);
+@@ -225,7 +226,7 @@
+ #endif /* _POSIX_MAPPED_FILES */
+
+ /* We have mapped the data, so we no longer need the descriptor. */
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ if (__builtin_expect (filedata == NULL, 0))
+ /* We failed to map or read the data. */
+--- glibc-2.3.2/locale/programs/3level.h 2001-08-07 14:51:49.000000000 -0400
++++ glibc-2.3.2/locale/programs/3level.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000-2001 Free Software Foundation, Inc.
++/* Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
+
+@@ -80,6 +80,7 @@
+
+ /* Retrieve an entry. */
+ static inline ELEMENT
++__attribute ((always_inline))
+ CONCAT(TABLE,_get) (struct TABLE *t, uint32_t wc)
+ {
+ uint32_t index1 = wc >> (t->q + t->p);
+--- glibc-2.3.2/locale/programs/ld-collate.c 2002-05-01 12:44:51.000000000 -0400
++++ glibc-2.3.2/locale/programs/ld-collate.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
+
+@@ -42,6 +42,7 @@
+ #define obstack_chunk_free free
+
+ static inline void
++__attribute ((always_inline))
+ obstack_int32_grow (struct obstack *obstack, int32_t data)
+ {
+ if (sizeof (int32_t) == sizeof (int))
+@@ -51,6 +52,7 @@
+ }
+
+ static inline void
++__attribute ((always_inline))
+ obstack_int32_grow_fast (struct obstack *obstack, int32_t data)
+ {
+ if (sizeof (int32_t) == sizeof (int))
+@@ -249,6 +251,7 @@
+
+ /* We need UTF-8 encoding of numbers. */
+ static inline int
++__attribute ((always_inline))
+ utf8_encode (char *buf, int val)
+ {
+ int retval;
+@@ -606,10 +609,10 @@
+ find_element (struct linereader *ldfile, struct locale_collate_t *collate,
+ const char *str, size_t len)
+ {
+- struct element_t *result = NULL;
++ void *result = NULL;
+
+ /* Search for the entries among the collation sequences already define. */
+- if (find_entry (&collate->seq_table, str, len, (void **) &result) != 0)
++ if (find_entry (&collate->seq_table, str, len, &result) != 0)
+ {
+ /* Nope, not define yet. So we see whether it is a
+ collation symbol. */
+@@ -625,8 +628,7 @@
+ result = sym->order = new_element (collate, NULL, 0, NULL,
+ NULL, 0, 0);
+ }
+- else if (find_entry (&collate->elem_table, str, len,
+- (void **) &result) != 0)
++ else if (find_entry (&collate->elem_table, str, len, &result) != 0)
+ {
+ /* It's also no collation element. So it is a character
+ element defined later. */
+@@ -636,7 +638,7 @@
+ }
+ }
+
+- return result;
++ return (struct element_t *) result;
+ }
+
+
+@@ -944,8 +946,8 @@
+ {
+ /* It's no character, so look through the collation elements and
+ symbol list. */
+- if (find_entry (&collate->elem_table, symstr, symlen,
+- (void **) &elem) != 0)
++ void *ptr = elem;
++ if (find_entry (&collate->elem_table, symstr, symlen, &ptr) != 0)
+ {
+ void *result;
+ struct symbol_t *sym = NULL;
+@@ -976,12 +978,15 @@
+ insert_entry (&collate->seq_table, symstr, symlen, elem);
+ }
+ }
++ else
++ /* Copy the result back. */
++ elem = ptr;
+ }
+ else
+ {
+ /* Otherwise the symbols stands for a character. */
+- if (find_entry (&collate->seq_table, symstr, symlen,
+- (void **) &elem) != 0)
++ void *ptr = elem;
++ if (find_entry (&collate->seq_table, symstr, symlen, &ptr) != 0)
+ {
+ uint32_t wcs[2] = { wc, 0 };
+
+@@ -998,6 +1003,9 @@
+ }
+ else
+ {
++ /* Copy the result back. */
++ elem = ptr;
++
+ /* Maybe the character was used before the definition. In this case
+ we have to insert the byte sequences now. */
+ if (elem->mbs == NULL && seq != NULL)
+@@ -1169,8 +1177,9 @@
+ /* Now we are ready to insert the new value in the
+ sequence. Find out whether the element is
+ already known. */
++ void *ptr;
+ if (find_entry (&collate->seq_table, seq->name, namelen,
+- (void **) &elem) != 0)
++ &ptr) != 0)
+ {
+ uint32_t wcs[2] = { seq->ucs4, 0 };
+
+@@ -1186,6 +1195,9 @@
+ /* This cannot happen. */
+ assert (! "Internal error");
+ }
++ else
++ /* Copy the result. */
++ elem = ptr;
+
+ /* Test whether this element is not already in the list. */
+ if (elem->next != NULL || (collate->cursor != NULL
+@@ -1324,9 +1336,12 @@
+ sprintf (buf + preflen, base == 10 ? "%ld" : "%lX", from);
+
+ /* Look whether this name is already defined. */
+- if (find_entry (&collate->seq_table, buf, symlen,
+- (void **) &elem) == 0)
++ void *ptr;
++ if (find_entry (&collate->seq_table, buf, symlen, &ptr) == 0)
+ {
++ /* Copy back the result. */
++ elem = ptr;
++
+ if (elem->next != NULL || (collate->cursor != NULL
+ && elem->next == collate->cursor))
+ {
+@@ -3009,7 +3024,7 @@
+ size_t newname_len = arg->val.str.lenmb;
+ const char *symname;
+ size_t symname_len;
+- struct symbol_t *symval;
++ void *symval; /* Actually struct symbol_t* */
+
+ arg = lr_token (ldfile, charmap, result, repertoire, verbose);
+ if (arg->tok != tok_bsymbol)
+@@ -3045,7 +3060,7 @@
+
+ /* See whether the symbol name is already defined. */
+ if (find_entry (&collate->sym_table, symname, symname_len,
+- (void **) &symval) != 0)
++ &symval) != 0)
+ {
+ lr_error (ldfile, _("\
+ %s: unknown symbol `%s' in equivalent definition"),
+@@ -3294,6 +3309,7 @@
+ size_t lenmb;
+ struct element_t *insp;
+ int no_error = 1;
++ void *ptr;
+
+ if (arg->tok == tok_bsymbol)
+ {
+@@ -3307,18 +3323,20 @@
+ lenmb = 9;
+ }
+
+- if (find_entry (&collate->seq_table, startmb, lenmb,
+- (void **) &insp) == 0)
++ if (find_entry (&collate->seq_table, startmb, lenmb, &ptr) == 0)
+ /* Yes, the symbol exists. Simply point the cursor
+ to it. */
+- collate->cursor = insp;
++ collate->cursor = (struct element_t *) ptr;
+ else
+ {
+ struct symbol_t *symbp;
++ void *ptr;
+
+ if (find_entry (&collate->sym_table, startmb, lenmb,
+- (void **) &symbp) == 0)
++ &ptr) == 0)
+ {
++ symbp = ptr;
++
+ if (symbp->order->last != NULL
+ || symbp->order->next != NULL)
+ collate->cursor = symbp->order;
+@@ -3334,8 +3352,10 @@
+ }
+ }
+ else if (find_entry (&collate->elem_table, startmb, lenmb,
+- (void **) &insp) == 0)
++ &ptr) == 0)
+ {
++ insp = (struct element_t *) ptr;
++
+ if (insp->last != NULL || insp->next != NULL)
+ collate->cursor = insp;
+ else
+@@ -3517,10 +3537,12 @@
+ collation symbols since these are purely abstract
+ values and don't need directions associated. */
+ struct element_t *seqp;
++ void *ptr;
+
+- if (find_entry (&collate->seq_table, symstr, symlen,
+- (void **) &seqp) == 0)
++ if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0)
+ {
++ seqp = ptr;
++
+ /* It's already defined. First check whether this
+ is really a collating symbol. */
+ if (seqp->is_character)
+@@ -3561,8 +3583,9 @@
+ {
+ /* It is possible that we already have this collation sequence.
+ In this case we move the entry. */
+- struct element_t *seqp;
++ struct element_t *seqp = NULL;
+ void *sym;
++ void *ptr;
+
+ /* If the symbol after which we have to insert was not found
+ ignore all entries. */
+@@ -3572,17 +3595,19 @@
+ break;
+ }
+
+- if (find_entry (&collate->seq_table, symstr, symlen,
+- (void **) &seqp) == 0)
+- goto move_entry;
++ if (find_entry (&collate->seq_table, symstr, symlen, &ptr) == 0)
++ {
++ seqp = (struct element_t *) ptr;
++ goto move_entry;
++ }
+
+ if (find_entry (&collate->sym_table, symstr, symlen, &sym) == 0
+ && (seqp = ((struct symbol_t *) sym)->order) != NULL)
+ goto move_entry;
+
+- if (find_entry (&collate->elem_table, symstr, symlen,
+- (void **) &seqp) == 0
+- && (seqp->last != NULL || seqp->next != NULL
++ if (find_entry (&collate->elem_table, symstr, symlen, &ptr) == 0
++ && (seqp = (struct element_t *) ptr,
++ seqp->last != NULL || seqp->next != NULL
+ || (collate->start != NULL && seqp == collate->start)))
+ {
+ move_entry:
+--- glibc-2.3.2/locale/programs/ld-time.c 2002-04-16 20:45:08.000000000 -0400
++++ glibc-2.3.2/locale/programs/ld-time.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
+
+@@ -170,7 +170,7 @@
+ if (!time->cat##_defined) \
+ { \
+ const char *initval[] = { noparen val }; \
+- int i; \
++ unsigned int i; \
+ \
+ if (! be_quiet && ! nothing) \
+ WITH_CUR_LOCALE (error (0, 0, _("%s: field `%s' not defined"), \
+@@ -670,7 +670,7 @@
+ idx[1 + last_idx] = idx[last_idx];
+ for (num = 0; num < time->num_era; ++num)
+ {
+- size_t l;
++ size_t l, l2;
+
+ iov[2 + cnt].iov_base = (void *) &time->era_entries[num].direction;
+ iov[2 + cnt].iov_len = sizeof (int32_t);
+@@ -697,14 +697,16 @@
+ iov[2 + cnt].iov_len = sizeof (int32_t);
+ ++cnt;
+
+- l = (strchr (time->era_entries[num].format, '\0')
++ l = ((char *) rawmemchr (time->era_entries[num].format, '\0')
+ - time->era_entries[num].name) + 1;
+- l = (l + 3) & ~3;
+- iov[2 + cnt].iov_base = (void *) time->era_entries[num].name;
+- iov[2 + cnt].iov_len = l;
++ l2 = (l + 3) & ~3;
++ iov[2 + cnt].iov_base = alloca (l2);
++ memset (mempcpy (iov[2 + cnt].iov_base, time->era_entries[num].name, l),
++ '\0', l2 - l);
++ iov[2 + cnt].iov_len = l2;
+ ++cnt;
+
+- idx[1 + last_idx] += 8 * sizeof (int32_t) + l;
++ idx[1 + last_idx] += 8 * sizeof (int32_t) + l2;
+
+ assert (idx[1 + last_idx] % 4 == 0);
+
+--- glibc-2.3.2/locale/programs/linereader.c 2002-10-17 13:45:12.000000000 -0400
++++ glibc-2.3.2/locale/programs/linereader.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
+
+@@ -111,6 +111,35 @@
+
+
+ void
++lr_ignore_rest (struct linereader *lr, int verbose)
++{
++ if (verbose)
++ {
++ while (isspace (lr->buf[lr->idx]) && lr->buf[lr->idx] != '\n'
++ && lr->buf[lr->idx] != lr->comment_char)
++ if (lr->buf[lr->idx] == '\0')
++ {
++ if (lr_next (lr) < 0)
++ return;
++ }
++ else
++ ++lr->idx;
++
++ if (lr->buf[lr->idx] != '\n' && ! feof (lr->fp)
++ && lr->buf[lr->idx] != lr->comment_char)
++ lr_error (lr, _("trailing garbage at end of line"));
++ }
++
++ /* Ignore continued line. */
++ while (lr->bufact > 0 && lr->buf[lr->bufact - 1] != '\n')
++ if (lr_next (lr) < 0)
++ break;
++
++ lr->idx = lr->bufact;
++}
++
++
++void
+ lr_close (struct linereader *lr)
+ {
+ fclose (lr->fp);
+--- glibc-2.3.2/locale/programs/linereader.h 2002-02-05 18:20:05.000000000 -0500
++++ glibc-2.3.2/locale/programs/linereader.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@gnu.org>.
+
+@@ -95,6 +95,7 @@
+ struct localedef_t *locale,
+ const struct repertoire_t *repertoire,
+ int verbose);
++extern void lr_ignore_rest (struct linereader *lr, int verbose);
+
+
+ #define lr_error(lr, fmt, args...) \
+@@ -103,6 +104,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ lr_getc (struct linereader *lr)
+ {
+ if (lr->idx == lr->bufact)
+@@ -120,6 +122,7 @@
+
+
+ static inline int
++__attribute ((always_inline))
+ lr_ungetc (struct linereader *lr, int ch)
+ {
+ if (lr->idx == 0)
+@@ -142,33 +145,4 @@
+ }
+
+
+-static inline void
+-lr_ignore_rest (struct linereader *lr, int verbose)
+-{
+- if (verbose)
+- {
+- while (isspace (lr->buf[lr->idx]) && lr->buf[lr->idx] != '\n'
+- && lr->buf[lr->idx] != lr->comment_char)
+- if (lr->buf[lr->idx] == '\0')
+- {
+- if (lr_next (lr) < 0)
+- return;
+- }
+- else
+- ++lr->idx;
+-
+- if (lr->buf[lr->idx] != '\n' && ! feof (lr->fp)
+- && lr->buf[lr->idx] != lr->comment_char)
+- lr_error (lr, _("trailing garbage at end of line"));
+- }
+-
+- /* Ignore continued line. */
+- while (lr->bufact > 0 && lr->buf[lr->bufact - 1] != '\n')
+- if (lr_next (lr) < 0)
+- break;
+-
+- lr->idx = lr->bufact;
+-}
+-
+-
+ #endif /* linereader.h */
+--- glibc-2.3.2/locale/programs/locale.c 2003-01-02 15:02:12.000000000 -0500
++++ glibc-2.3.2/locale/programs/locale.c 2003-05-24 14:06:21.000000000 -0400
+@@ -191,8 +191,10 @@
+
+ /* Set locale. Do not set LC_ALL because the other categories must
+ not be affected (according to POSIX.2). */
+- setlocale (LC_CTYPE, "");
+- setlocale (LC_MESSAGES, "");
++ if (setlocale (LC_CTYPE, "") == NULL)
++ error (0, errno, gettext ("Cannot set LC_CTYPE to default locale"));
++ if (setlocale (LC_MESSAGES, "") == NULL)
++ error (0, errno, gettext ("Cannot set LC_MESSAGES to default locale"));
+
+ /* Initialize the message catalog. */
+ textdomain (PACKAGE);
+@@ -203,7 +205,9 @@
+ /* `-a' requests the names of all available locales. */
+ if (do_all != 0)
+ {
+- setlocale (LC_COLLATE, "");
++ if (setlocale (LC_COLLATE, "") == NULL)
++ error (0, errno,
++ gettext ("Cannot set LC_COLLATE to default locale"));
+ write_locales ();
+ exit (EXIT_SUCCESS);
+ }
+@@ -218,7 +222,8 @@
+
+ /* Specific information about the current locale are requested.
+ Change to this locale now. */
+- setlocale (LC_ALL, "");
++ if (setlocale (LC_ALL, "") == NULL)
++ error (0, errno, gettext ("Cannot set LC_ALL to default locale"));
+
+ /* If no real argument is given we have to print the contents of the
+ current locale definition variables. These are LANG and the LC_*. */
+@@ -864,7 +869,7 @@
+ printf ("%s=", item->name);
+
+ if (val != NULL)
+- printf ("%d", *val == CHAR_MAX ? -1 : *val);
++ printf ("%d", *val == '\177' ? -1 : *val);
+ putchar ('\n');
+ }
+ break;
+@@ -878,12 +883,12 @@
+
+ while (cnt > 1)
+ {
+- printf ("%d;", *val == CHAR_MAX ? -1 : *val);
++ printf ("%d;", *val == '\177' ? -1 : *val);
+ --cnt;
+ ++val;
+ }
+
+- printf ("%d\n", cnt == 0 || *val == CHAR_MAX ? -1 : *val);
++ printf ("%d\n", cnt == 0 || *val == '\177' ? -1 : *val);
+ }
+ break;
+ case word:
+--- glibc-2.3.2/locale/programs/locarchive.c 2002-10-23 02:21:17.000000000 -0400
++++ glibc-2.3.2/locale/programs/locarchive.c 2003-03-18 16:46:07.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+@@ -1402,8 +1402,7 @@
+ struct locarhead *head;
+ struct namehashent *namehashtab;
+ struct nameent *names;
+- int cnt;
+- int used;
++ size_t cnt, used;
+
+ /* Open the archive. This call never returns if we cannot
+ successfully open the archive. */
+--- glibc-2.3.2/locale/programs/locfile.c 2003-01-13 03:55:06.000000000 -0500
++++ glibc-2.3.2/locale/programs/locfile.c 2003-08-21 08:37:05.000000000 -0400
+@@ -764,3 +764,63 @@
+
+ free (fname);
+ }
++
++
++/* General handling of `copy'. */
++void
++handle_copy (struct linereader *ldfile, const struct charmap_t *charmap,
++ const char *repertoire_name, struct localedef_t *result,
++ enum token_t token, int locale, const char *locale_name,
++ int ignore_content)
++{
++ struct token *now;
++ int warned = 0;
++
++ now = lr_token (ldfile, charmap, result, NULL, verbose);
++ if (now->tok != tok_string)
++ lr_error (ldfile, _("expect string argument for `copy'"));
++ else if (!ignore_content)
++ {
++ if (now->val.str.startmb == NULL)
++ lr_error (ldfile, _("\
++locale name should consist only of portable characters"));
++ else
++ {
++ (void) add_to_readlist (locale, now->val.str.startmb,
++ repertoire_name, 1, NULL);
++ result->copy_name[locale] = now->val.str.startmb;
++ }
++ }
++
++ lr_ignore_rest (ldfile, now->tok == tok_string);
++
++ /* The rest of the line must be empty and the next keyword must be
++ `END xxx'. */
++ while ((now = lr_token (ldfile, charmap, result, NULL, verbose))->tok
++ != tok_end && now->tok != tok_eof)
++ {
++ if (warned == 0)
++ {
++ lr_error (ldfile, _("\
++no other keyword shall be specified when `copy' is used"));
++ warned = 1;
++ }
++
++ lr_ignore_rest (ldfile, 0);
++ }
++
++ if (now->tok != tok_eof)
++ {
++ /* Handle `END xxx'. */
++ now = lr_token (ldfile, charmap, result, NULL, verbose);
++
++ if (now->tok != token)
++ lr_error (ldfile, _("\
++`%1$s' definition does not end with `END %1$s'"), locale_name);
++
++ lr_ignore_rest (ldfile, now->tok == token);
++ }
++ else
++ /* When we come here we reached the end of the file. */
++ lr_error (ldfile, _("%s: premature end of file"), locale_name);
++}
+--- glibc-2.3.2/locale/programs/locfile.h 2002-04-17 01:11:34.000000000 -0400
++++ glibc-2.3.2/locale/programs/locfile.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
+
+@@ -45,64 +45,12 @@
+
+
+ /* General handling of `copy'. */
+-static inline void
+-handle_copy (struct linereader *ldfile, const struct charmap_t *charmap,
+- const char *repertoire_name, struct localedef_t *result,
+- enum token_t token, int locale, const char *locale_name,
+- int ignore_content)
+-{
+- struct token *now;
+- int warned = 0;
+-
+- now = lr_token (ldfile, charmap, result, NULL, verbose);
+- if (now->tok != tok_string)
+- lr_error (ldfile, _("expect string argument for `copy'"));
+- else if (!ignore_content)
+- {
+- if (now->val.str.startmb == NULL)
+- lr_error (ldfile, _("\
+-locale name should consist only of portable characters"));
+- else
+- {
+- (void) add_to_readlist (locale, now->val.str.startmb,
+- repertoire_name, 1, NULL);
+- result->copy_name[locale] = now->val.str.startmb;
+- }
+- }
+-
+- lr_ignore_rest (ldfile, now->tok == tok_string);
+-
+- /* The rest of the line must be empty and the next keyword must be
+- `END xxx'. */
+- while ((now = lr_token (ldfile, charmap, result, NULL, verbose))->tok
+- != tok_end && now->tok != tok_eof)
+- {
+- if (warned == 0)
+- {
+- lr_error (ldfile, _("\
+-no other keyword shall be specified when `copy' is used"));
+- warned = 1;
+- }
+-
+- lr_ignore_rest (ldfile, 0);
+- }
+-
+- if (now->tok != tok_eof)
+- {
+- /* Handle `END xxx'. */
+- now = lr_token (ldfile, charmap, result, NULL, verbose);
+-
+- if (now->tok != token)
+- lr_error (ldfile, _("\
+-`%1$s' definition does not end with `END %1$s'"), locale_name);
+-
+- lr_ignore_rest (ldfile, now->tok == token);
+- }
+- else
+- /* When we come here we reached the end of the file. */
+- lr_error (ldfile, _("%s: premature end of file"), locale_name);
+-}
+-
++extern void handle_copy (struct linereader *ldfile,
++ const struct charmap_t *charmap,
++ const char *repertoire_name,
++ struct localedef_t *result, enum token_t token,
++ int locale, const char *locale_name,
++ int ignore_content);
+
+ /* Found in locfile.c. */
+ extern int locfile_read (struct localedef_t *result,
+--- glibc-2.3.2/locale/setlocale.c 2002-12-04 04:53:49.000000000 -0500
++++ glibc-2.3.2/locale/setlocale.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 92, 95-99, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 92, 1995-2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -128,7 +128,7 @@
+
+
+ /* Construct a new composite name. */
+-static inline char *
++static char *
+ new_composite_name (int category, const char *newnames[__LC_LAST])
+ {
+ size_t last_len = 0;
+--- glibc-2.3.2/locale/tst-C-locale.c 2002-09-03 14:39:41.000000000 -0400
++++ glibc-2.3.2/locale/tst-C-locale.c 2003-03-18 16:46:07.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Tests of C and POSIX locale contents.
+- Copyright (C) 2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+@@ -450,8 +450,8 @@
+ }
+
+
+-int
+-main (void)
++static int
++do_test (void)
+ {
+ int result;
+
+@@ -475,3 +475,6 @@
+
+ return result;
+ }
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/locale/weight.h 2001-07-07 15:21:04.000000000 -0400
++++ glibc-2.3.2/locale/weight.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper, <drepper@cygnus.com>.
+
+@@ -19,6 +19,7 @@
+
+ /* Find index of weight. */
+ static inline int32_t
++__attribute ((always_inline))
+ findidx (const unsigned char **cpp)
+ {
+ int_fast32_t i = table[*(*cpp)++];
+--- glibc-2.3.2/locale/weightwc.h 2001-08-07 00:23:14.000000000 -0400
++++ glibc-2.3.2/locale/weightwc.h 2003-08-21 08:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper, <drepper@cygnus.com>.
+
+@@ -19,6 +19,7 @@
+
+ /* Find index of weight. */
+ static inline int32_t
++__attribute ((always_inline))
+ findidx (const wint_t **cpp)
+ {
+ int32_t i;
+@@ -26,7 +27,7 @@
+ wint_t ch;
+
+ ch = *(*cpp)++;
+- i = collidx_table_lookup ((const char *) table, ch);
++ i = __collidx_table_lookup ((const char *) table, ch);
+
+ if (i >= 0)
+ /* This is an index into the weight table. Cool. */
+--- glibc-2.3.2/localedata/ChangeLog 2003-01-30 15:21:47.000000000 -0500
++++ glibc-2.3.2/localedata/ChangeLog 2003-09-19 22:37:05.000000000 -0400
+@@ -1,3 +1,186 @@
++2003-09-17 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/lo_LA: Fix duplicated collation entries.
++ Patch by Anousak Souphavanh <anousak@muanglao.com>.
++
++2003-09-01 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/iw_IL: Add comment stating why there are two locales for
++ Hebrew in Israel, and that he_IL replaces iw_IL.
++ * locales/he_IL: Likewise.
++
++2003-08-25 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/an_ES: Fix locale header information.
++ * locales/wa_BE: Likewise.
++ * locales/yi_US: Likewise.
++ Patch by Jordi Mallach <jordi@sindominio.net>.
++
++2003-08-14 Ulrich Drepper <drepper@redhat.com>
++
++ * charmaps/WINDOWS-31J: New file.
++ * charmaps/EUC-JP-MS: New file
++ Patch by MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>.
++
++2003-07-27 Andreas Jaeger <aj@suse.de>
++
++ * collate-test.c: Include error.h for error prototype.
++ * xfrm-test.c: Likewise.
++
++2003-07-13 Petter Reinholdtsen <pere@hungry.com>
++
++ * collate-test.c (main): Correct handling of files with more then
++ 100 lines. Print error message if argument is missing, instead of
++ segfaulting.
++ * xfrm-test.c: Likewise.
++
++2003-07-02 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/lo_LA: Update collation info for U0EAF and U0EC6.
++ Update era_t_fmt, era_d_t_fmt, country_name, and lang_name fields.
++ Patch by Anousak Souphavanh <anousak@muanglao.com>.
++
++2003-06-25 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/an_ES: Change default charset from ISO-8859-1 to
++ ISO-8859-15 as the locale need the EURO sign.
++
++ * SUPPORTED (SUPPORTED-LOCALES): Add an_ES.ISO-8859-15.
++
++2003-06-21 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/no_NO [LC_COLLATE]: Add missing eth letter, sorted as
++ latin letter d.
++
++2003-06-16 Bruno Haible <bruno@clisp.org>
++
++ * charmaps/ISO-8859-15: Add aliases ISO_8859-15, LATIN-9.
++ * charmaps/ISO-8859-16: Add aliases ISO_8859-16:2001, ISO_8859-16.
++ * charmaps/IBM1047: Add alias IBM-1047.
++ * charmaps/GBK: Add aliases CP936, MS936, WINDOWS-936.
++
++2003-06-15 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/fi_FI [LC_TIME]: Correct month names to make the dates
++ gramatically correct. Patch from Eero Häkkinen. [PR libc/5013].
++
++2003-06-16 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/an_ES: New file. Contributed by Jordi Mallach Péez.
++
++2003-06-15 Petter Reinholdtsen <pere@hungry.com>
++
++ * tst-fmon.c (main): Remove unused variable 'monval'.
++
++ * tst-fmon.sh: Make sure all tests are executed before an error
++ code is reported to make.
++ * tst-numeric.sh: Likewise.
++
++2003-06-15 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/is_IS [LC_TIME]: Use lower case letters in month and
++ week day names. Patch from Bjarni Ingi Gislason.
++
++2003-05-31 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/fi_FI: Add URL to a reference documenting Finish in
++ Finland
++ * locales/fi_FI [LC_MONETARY]: Correct mon_thousands_sep from
++ period (U002E) to non-break space (U00A0).
++ suggestion from Eero Häkkinen.
++ [LC_NUMERIC]: Correct thousands_sep from period (U002E) to
++ non-break space (U00A0). Based on suggestion from Eero Häkkinen.
++
++2003-06-11 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/lo_LA: New file.
++ Contributed by Anousak Souphavanh <anousak@muanglao.com>.
++ * SUPPORTED (SUPPORTED-LOCALES): Add lo_LA.UTF8.
++
++2003-05-29 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/uk_UA: Correct mail address of Denys Dmytriyenko.
++
++2003-05-10 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/st_ZA: New file.
++ * locales/xh_ZA: New file.
++ * locales/zu_ZA: New file.
++ Contributed by Dwayne Bailey <dwayne@translate.org.za>.
++
++2003-05-06 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/de_DE: Use two-letter abday values.
++ * tst-langinfo.sh: Update after de_DE locale change.
++
++2003-05-05 Jakub Jelinek <jakub@redhat.com>
++
++ * tests-mbwc/tst_wcsxfrm.c (tst_wcsxfrm): Use %zu instead of %d
++ format specifier when printing ret.
++
++2003-04-30 Petter Reinholdtsen <pere@hungry.com>
++
++ * tst-fmon.c: Report name of locale if setlocale() fails.
++ * tst-numeric.c: Likewise.
++
++ * tst-fmon.sh: Ignore lines starting with hash '#' in the data file.
++ * tst-numeric.sh: Likewise.
++
++2003-04-30 Petter Reinholdtsen <pere@hungry.com>
++
++ * sort-test.sh: Output 'diff -u' when sorting test failed, to make
++ it easier to find out what was wrong with the sorting order.
++
++2003-04-16 Petter Reinholdtsen <pere@hungry.com>
++
++ * Makefile (tests): Add LC_NUMERIC test tst-numeric.out.
++ (tst-numeric.out): Define.
++ * tst-numeric.c: New file.
++ * tst-numeric.sh: New file.
++ * tst-numeric.data: New file.
++
++2003-04-21 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/ar_BH: Fix spelling of Bahrain.
++
++2003-04-16 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/uk_UA: Fix sorting.
++ Patch by Leonid Kanter <leon@geon.donetsk.ua>.
++
++2003-04-15 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/ar_SD [LC_MONETARY]: Use international currency symbol
++ 'SDD' for Sudan.
++ * locales/es_EC [LC_MONETARY]: Use international currency symbol
++ 'USD' for Ecuador.
++ Source is CIA World Fact book.
++
++2003-04-05 Petter Reinholdtsen <pere@hungry.com>
++
++ * locales/sr_YU [LC_MONETARY]: Change int_curr_symbol from 'YUN'
++ to 'YUM' to match changes commited to ISO-4217 2002-02-13 and get
++ the locale building again.
++ * locales/sr_YU@cyrillic: Likewise.
++
++2003-04-14 Ulrich Drepper <drepper@redhat.com>
++
++ * locales/mn_MN: Fix country_post and country_ab2.
++
++2003-03-17 Ulrich Drepper <drepper@redhat.com>
++
++ * localedata/en_ZA: Changed %x for LC_TIME to use dd/mm/ccyy.
++ Added ^ to LC_MESSAGES regex "^[yY].*".
++ Confirmed LC_PAPER and LC_MEASUREMENT settings.
++ Added country and language names to LC_ADDRESS.
++ Added missing info for LC_TELEPHONE.
++ Patch by Dwayne Bailey <dwayne@obsidian.co.za>.
++
++2003-03-14 Ulrich Drepper <drepper@redhat.com>
++
++ * localedata/mn_MN: New file.
++ Contributed by Sanlig Badral <badral@chinggis.com>.
++
+ 2003-01-30 Ulrich Drepper <drepper@redhat.com>
+
+ * Makefile (LOCALES): Add vi_VN.TCVN5712-1.
+--- glibc-2.3.2/localedata/Makefile 2003-01-30 15:09:21.000000000 -0500
++++ glibc-2.3.2/localedata/Makefile 2003-04-28 08:20:36.000000000 -0400
+@@ -39,7 +39,7 @@
+
+ test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \
+ tst-mbswcs1 tst-mbswcs2 tst-mbswcs3 tst-mbswcs4 tst-mbswcs5 \
+- tst-ctype tst-wctype tst-langinfo
++ tst-ctype tst-wctype tst-langinfo tst-numeric
+ test-input := de_DE.ISO-8859-1 en_US.ISO-8859-1 da_DK.ISO-8859-1 \
+ hr_HR.ISO-8859-2 sv_SE.ISO-8859-1
+ test-input-data = $(addsuffix .in, $(basename $(test-input)))
+@@ -65,6 +65,7 @@
+ tst-fmon.data $(test-input-data) $(ld-test-srcs) \
+ th_TH.in cs_CZ.in tst-mbswcs.sh tst-trans.sh tst-ctype.sh \
+ tst-ctype-de_DE.ISO-8859-1.in \
++ tst-numeric.sh tst-numeric.data \
+ $(wildcard tests-mbwc/*.[ch]) \
+ $(addprefix tst-fmon-locales/tstfmon_,$(fmon-tests)) \
+ gen-locale.sh show-ucs-data.c tst-langinfo.sh \
+@@ -130,7 +131,7 @@
+ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
+ en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \
+ hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
+- vi_VN.TCVN5712-1
++ vi_VN.TCVN5712-1 no_NO.ISO-8859-1 nn_NO.ISO-8859-1
+ LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
+ CHARMAPS := $(shell echo "$(LOCALES)" | \
+ sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)
+@@ -151,7 +152,7 @@
+ tests: $(objpfx)sort-test.out $(objpfx)tst-fmon.out $(objpfx)tst-locale.out \
+ $(objpfx)tst-rpmatch.out $(objpfx)tst-trans.out \
+ $(objpfx)tst-mbswcs.out $(objpfx)tst-ctype.out $(objpfx)tst-wctype.out \
+- $(objpfx)tst-langinfo.out
++ $(objpfx)tst-langinfo.out $(objpfx)tst-numeric.out
+
+ $(objpfx)sort-test.out: sort-test.sh $(objpfx)collate-test $(objpfx)xfrm-test \
+ $(test-input-data) $(addprefix $(objpfx),$(CTYPE_FILES))
+@@ -162,6 +163,11 @@
+ $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' tst-fmon.data \
+ > $@
++$(objpfx)tst-numeric.out: tst-numeric.sh $(objpfx)tst-numeric tst-numeric.data \
++ $(objpfx)sort-test.out \
++ $(addprefix $(objpfx),$(CTYPE_FILES))
++ $(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' tst-numeric.data \
++ > $@
+ $(objpfx)tst-locale.out: tst-locale.sh $(common-objpfx)locale/localedef \
+ $(ld-test-srcs) $(addprefix $(objpfx),$(CTYPE_FILES))
+ $(SHELL) -e $< $(common-objpfx) '$(built-program-cmd)' > $@
+--- glibc-2.3.2/localedata/SUPPORTED 2002-02-23 14:30:27.000000000 -0500
++++ glibc-2.3.2/localedata/SUPPORTED 2003-08-21 08:37:05.000000000 -0400
+@@ -3,6 +3,7 @@
+ # appropriate message.
+ SUPPORTED-LOCALES=\
+ af_ZA/ISO-8859-1 \
++an_ES/ISO-8859-15 \
+ ar_AE/ISO-8859-6 \
+ ar_BH/ISO-8859-6 \
+ ar_DZ/ISO-8859-6 \
+@@ -112,6 +113,7 @@
+ ko_KR.EUC-KR/EUC-KR \
+ ko_KR.UTF-8/UTF-8 \
+ kw_GB/ISO-8859-1 \
++lo_LA/UTF-8 \
+ lt_LT/ISO-8859-13 \
+ lv_LV/ISO-8859-13 \
+ mi_NZ/ISO-8859-13 \
+--- glibc-2.3.2/localedata/charmaps/EUC-JP-MS 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/charmaps/EUC-JP-MS 2003-08-14 04:49:27.000000000 -0400
+@@ -0,0 +1,15282 @@
++<code_set_name> EUC-JP-MS
++<comment_char> %
++<escape_char> /
++<mb_cur_min> 1
++<mb_cur_max> 3
++
++% EUC-JP-MS character map
++% MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
++% Last changed: 2003-07-18
++
++CHARMAP
++%
++% ASCII or JIS X 0201 Roman
++%
++<U0000> /x00 NULL
++<U0001> /x01 START OF HEADING
++<U0002> /x02 START OF TEXT
++<U0003> /x03 END OF TEXT
++<U0004> /x04 END OF TRANSMISSION
++<U0005> /x05 ENQUIRY
++<U0006> /x06 ACKNOWLEDGE
++<U0007> /x07 BELL
++<U0008> /x08 BACKSPACE
++<U0009> /x09 HORIZONTAL TABULATION
++<U000A> /x0a LINE FEED
++<U000B> /x0b VERTICAL TABULATION
++<U000C> /x0c FORM FEED
++<U000D> /x0d CARRIAGE RETURN
++<U000E> /x0e SHIFT OUT
++<U000F> /x0f SHIFT IN
++<U0010> /x10 DATA LINK ESCAPE
++<U0011> /x11 DEVICE CONTROL ONE
++<U0012> /x12 DEVICE CONTROL TWO
++<U0013> /x13 DEVICE CONTROL THREE
++<U0014> /x14 DEVICE CONTROL FOUR
++<U0015> /x15 NEGATIVE ACKNOWLEDGE
++<U0016> /x16 SYNCHRONOUS IDLE
++<U0017> /x17 END OF TRANSMISSION BLOCK
++<U0018> /x18 CANCEL
++<U0019> /x19 END OF MEDIUM
++<U001A> /x1a SUBSTITUTE
++<U001B> /x1b ESCAPE
++<U001C> /x1c FILE SEPARATOR
++<U001D> /x1d GROUP SEPARATOR
++<U001E> /x1e RECORD SEPARATOR
++<U001F> /x1f UNIT SEPARATOR
++<U0020> /x20 SPACE
++<U0021> /x21 EXCLAMATION MARK
++<U0022> /x22 QUOTATION MARK
++<U0023> /x23 NUMBER SIGN
++<U0024> /x24 DOLLAR SIGN
++<U0025> /x25 PERCENT SIGN
++<U0026> /x26 AMPERSAND
++<U0027> /x27 APOSTROPHE
++<U0028> /x28 LEFT PARENTHESIS
++<U0029> /x29 RIGHT PARENTHESIS
++<U002A> /x2a ASTERISK
++<U002B> /x2b PLUS SIGN
++<U002C> /x2c COMMA
++<U002D> /x2d HYPHEN-MINUS
++<U002E> /x2e FULL STOP
++<U002F> /x2f SOLIDUS
++<U0030> /x30 DIGIT ZERO
++<U0031> /x31 DIGIT ONE
++<U0032> /x32 DIGIT TWO
++<U0033> /x33 DIGIT THREE
++<U0034> /x34 DIGIT FOUR
++<U0035> /x35 DIGIT FIVE
++<U0036> /x36 DIGIT SIX
++<U0037> /x37 DIGIT SEVEN
++<U0038> /x38 DIGIT EIGHT
++<U0039> /x39 DIGIT NINE
++<U003A> /x3a COLON
++<U003B> /x3b SEMICOLON
++<U003C> /x3c LESS-THAN SIGN
++<U003D> /x3d EQUALS SIGN
++<U003E> /x3e GREATER-THAN SIGN
++<U003F> /x3f QUESTION MARK
++<U0040> /x40 COMMERCIAL AT
++<U0041> /x41 LATIN CAPITAL LETTER A
++<U0042> /x42 LATIN CAPITAL LETTER B
++<U0043> /x43 LATIN CAPITAL LETTER C
++<U0044> /x44 LATIN CAPITAL LETTER D
++<U0045> /x45 LATIN CAPITAL LETTER E
++<U0046> /x46 LATIN CAPITAL LETTER F
++<U0047> /x47 LATIN CAPITAL LETTER G
++<U0048> /x48 LATIN CAPITAL LETTER H
++<U0049> /x49 LATIN CAPITAL LETTER I
++<U004A> /x4a LATIN CAPITAL LETTER J
++<U004B> /x4b LATIN CAPITAL LETTER K
++<U004C> /x4c LATIN CAPITAL LETTER L
++<U004D> /x4d LATIN CAPITAL LETTER M
++<U004E> /x4e LATIN CAPITAL LETTER N
++<U004F> /x4f LATIN CAPITAL LETTER O
++<U0050> /x50 LATIN CAPITAL LETTER P
++<U0051> /x51 LATIN CAPITAL LETTER Q
++<U0052> /x52 LATIN CAPITAL LETTER R
++<U0053> /x53 LATIN CAPITAL LETTER S
++<U0054> /x54 LATIN CAPITAL LETTER T
++<U0055> /x55 LATIN CAPITAL LETTER U
++<U0056> /x56 LATIN CAPITAL LETTER V
++<U0057> /x57 LATIN CAPITAL LETTER W
++<U0058> /x58 LATIN CAPITAL LETTER X
++<U0059> /x59 LATIN CAPITAL LETTER Y
++<U005A> /x5a LATIN CAPITAL LETTER Z
++<U005B> /x5b LEFT SQUARE BRACKET
++<U005C> /x5c REVERSE SOLIDUS
++<U005D> /x5d RIGHT SQUARE BRACKET
++<U005E> /x5e CIRCUMFLEX ACCENT
++<U005F> /x5f LOW LINE
++<U0060> /x60 GRAVE ACCENT
++<U0061> /x61 LATIN SMALL LETTER A
++<U0062> /x62 LATIN SMALL LETTER B
++<U0063> /x63 LATIN SMALL LETTER C
++<U0064> /x64 LATIN SMALL LETTER D
++<U0065> /x65 LATIN SMALL LETTER E
++<U0066> /x66 LATIN SMALL LETTER F
++<U0067> /x67 LATIN SMALL LETTER G
++<U0068> /x68 LATIN SMALL LETTER H
++<U0069> /x69 LATIN SMALL LETTER I
++<U006A> /x6a LATIN SMALL LETTER J
++<U006B> /x6b LATIN SMALL LETTER K
++<U006C> /x6c LATIN SMALL LETTER L
++<U006D> /x6d LATIN SMALL LETTER M
++<U006E> /x6e LATIN SMALL LETTER N
++<U006F> /x6f LATIN SMALL LETTER O
++<U0070> /x70 LATIN SMALL LETTER P
++<U0071> /x71 LATIN SMALL LETTER Q
++<U0072> /x72 LATIN SMALL LETTER R
++<U0073> /x73 LATIN SMALL LETTER S
++<U0074> /x74 LATIN SMALL LETTER T
++<U0075> /x75 LATIN SMALL LETTER U
++<U0076> /x76 LATIN SMALL LETTER V
++<U0077> /x77 LATIN SMALL LETTER W
++<U0078> /x78 LATIN SMALL LETTER X
++<U0079> /x79 LATIN SMALL LETTER Y
++<U007A> /x7a LATIN SMALL LETTER Z
++<U007B> /x7b LEFT CURLY BRACKET
++<U007C> /x7c VERTICAL LINE
++<U007D> /x7d RIGHT CURLY BRACKET
++<U007E> /x7e TILDE
++<U007F> /x7f DELETE
++
++%
++% C1 area is mapped to itself. Excluding SS2 and SS3.
++%
++<U0080> /x80 PADDING CHARACTER (PAD)
++<U0081> /x81 HIGH OCTET PRESET (HOP)
++<U0082> /x82 BREAK PERMITTED HERE (BPH)
++<U0083> /x83 NO BREAK HERE (NBH)
++<U0084> /x84 INDEX (IND)
++<U0085> /x85 NEXT LINE (NEL)
++<U0086> /x86 START OF SELECTED AREA (SSA)
++<U0087> /x87 END OF SELECTED AREA (ESA)
++<U0088> /x88 CHARACTER TABULATION SET (HTS)
++<U0089> /x89 CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
++<U008A> /x8a LINE TABULATION SET (VTS)
++<U008B> /x8b PARTIAL LINE FORWARD (PLD)
++<U008C> /x8c PARTIAL LINE BACKWARD (PLU)
++<U008D> /x8d REVERSE LINE FEED (RI)
++<U0090> /x90 DEVICE CONTROL STRING (DCS)
++<U0091> /x91 PRIVATE USE ONE (PU1)
++<U0092> /x92 PRIVATE USE TWO (PU2)
++<U0093> /x93 SET TRANSMIT STATE (STS)
++<U0094> /x94 CANCEL CHARACTER (CCH)
++<U0095> /x95 MESSAGE WAITING (MW)
++<U0096> /x96 START OF GUARDED AREA (SPA)
++<U0097> /x97 END OF GUARDED AREA (EPA)
++<U0098> /x98 START OF STRING (SOS)
++<U0099> /x99 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
++<U009A> /x9a SINGLE CHARACTER INTRODUCER (SCI)
++<U009B> /x9b CONTROL SEQUENCE INTRODUCER (CSI)
++<U009C> /x9c STRING TERMINATOR (ST)
++<U009D> /x9d OPERATING SYSTEM COMMAND (OSC)
++<U009E> /x9e PRIVACY MESSAGE (PM)
++<U009F> /x9f APPLICATION PROGRAM COMMAND (APC)
++
++%
++% JIS X 0201 Kana
++%
++<UFF61> /x8e/xa1 HALFWIDTH IDEOGRAPHIC FULL STOP
++<UFF62> /x8e/xa2 HALFWIDTH LEFT CORNER BRACKET
++<UFF63> /x8e/xa3 HALFWIDTH RIGHT CORNER BRACKET
++<UFF64> /x8e/xa4 HALFWIDTH IDEOGRAPHIC COMMA
++<UFF65> /x8e/xa5 HALFWIDTH KATAKANA MIDDLE DOT
++<UFF66> /x8e/xa6 HALFWIDTH KATAKANA LETTER WO
++<UFF67> /x8e/xa7 HALFWIDTH KATAKANA LETTER SMALL A
++<UFF68> /x8e/xa8 HALFWIDTH KATAKANA LETTER SMALL I
++<UFF69> /x8e/xa9 HALFWIDTH KATAKANA LETTER SMALL U
++<UFF6A> /x8e/xaa HALFWIDTH KATAKANA LETTER SMALL E
++<UFF6B> /x8e/xab HALFWIDTH KATAKANA LETTER SMALL O
++<UFF6C> /x8e/xac HALFWIDTH KATAKANA LETTER SMALL YA
++<UFF6D> /x8e/xad HALFWIDTH KATAKANA LETTER SMALL YU
++<UFF6E> /x8e/xae HALFWIDTH KATAKANA LETTER SMALL YO
++<UFF6F> /x8e/xaf HALFWIDTH KATAKANA LETTER SMALL TU
++<UFF70> /x8e/xb0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
++<UFF71> /x8e/xb1 HALFWIDTH KATAKANA LETTER A
++<UFF72> /x8e/xb2 HALFWIDTH KATAKANA LETTER I
++<UFF73> /x8e/xb3 HALFWIDTH KATAKANA LETTER U
++<UFF74> /x8e/xb4 HALFWIDTH KATAKANA LETTER E
++<UFF75> /x8e/xb5 HALFWIDTH KATAKANA LETTER O
++<UFF76> /x8e/xb6 HALFWIDTH KATAKANA LETTER KA
++<UFF77> /x8e/xb7 HALFWIDTH KATAKANA LETTER KI
++<UFF78> /x8e/xb8 HALFWIDTH KATAKANA LETTER KU
++<UFF79> /x8e/xb9 HALFWIDTH KATAKANA LETTER KE
++<UFF7A> /x8e/xba HALFWIDTH KATAKANA LETTER KO
++<UFF7B> /x8e/xbb HALFWIDTH KATAKANA LETTER SA
++<UFF7C> /x8e/xbc HALFWIDTH KATAKANA LETTER SI
++<UFF7D> /x8e/xbd HALFWIDTH KATAKANA LETTER SU
++<UFF7E> /x8e/xbe HALFWIDTH KATAKANA LETTER SE
++<UFF7F> /x8e/xbf HALFWIDTH KATAKANA LETTER SO
++<UFF80> /x8e/xc0 HALFWIDTH KATAKANA LETTER TA
++<UFF81> /x8e/xc1 HALFWIDTH KATAKANA LETTER TI
++<UFF82> /x8e/xc2 HALFWIDTH KATAKANA LETTER TU
++<UFF83> /x8e/xc3 HALFWIDTH KATAKANA LETTER TE
++<UFF84> /x8e/xc4 HALFWIDTH KATAKANA LETTER TO
++<UFF85> /x8e/xc5 HALFWIDTH KATAKANA LETTER NA
++<UFF86> /x8e/xc6 HALFWIDTH KATAKANA LETTER NI
++<UFF87> /x8e/xc7 HALFWIDTH KATAKANA LETTER NU
++<UFF88> /x8e/xc8 HALFWIDTH KATAKANA LETTER NE
++<UFF89> /x8e/xc9 HALFWIDTH KATAKANA LETTER NO
++<UFF8A> /x8e/xca HALFWIDTH KATAKANA LETTER HA
++<UFF8B> /x8e/xcb HALFWIDTH KATAKANA LETTER HI
++<UFF8C> /x8e/xcc HALFWIDTH KATAKANA LETTER HU
++<UFF8D> /x8e/xcd HALFWIDTH KATAKANA LETTER HE
++<UFF8E> /x8e/xce HALFWIDTH KATAKANA LETTER HO
++<UFF8F> /x8e/xcf HALFWIDTH KATAKANA LETTER MA
++<UFF90> /x8e/xd0 HALFWIDTH KATAKANA LETTER MI
++<UFF91> /x8e/xd1 HALFWIDTH KATAKANA LETTER MU
++<UFF92> /x8e/xd2 HALFWIDTH KATAKANA LETTER ME
++<UFF93> /x8e/xd3 HALFWIDTH KATAKANA LETTER MO
++<UFF94> /x8e/xd4 HALFWIDTH KATAKANA LETTER YA
++<UFF95> /x8e/xd5 HALFWIDTH KATAKANA LETTER YU
++<UFF96> /x8e/xd6 HALFWIDTH KATAKANA LETTER YO
++<UFF97> /x8e/xd7 HALFWIDTH KATAKANA LETTER RA
++<UFF98> /x8e/xd8 HALFWIDTH KATAKANA LETTER RI
++<UFF99> /x8e/xd9 HALFWIDTH KATAKANA LETTER RU
++<UFF9A> /x8e/xda HALFWIDTH KATAKANA LETTER RE
++<UFF9B> /x8e/xdb HALFWIDTH KATAKANA LETTER RO
++<UFF9C> /x8e/xdc HALFWIDTH KATAKANA LETTER WA
++<UFF9D> /x8e/xdd HALFWIDTH KATAKANA LETTER N
++<UFF9E> /x8e/xde HALFWIDTH KATAKANA VOICED SOUND MARK
++<UFF9F> /x8e/xdf HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
++
++%
++% JIS X 0208
++%
++<U3000> /xa1/xa1 IDEOGRAPHIC SPACE
++<U3001> /xa1/xa2 IDEOGRAPHIC COMMA
++<U3002> /xa1/xa3 IDEOGRAPHIC FULL STOP
++<UFF0C> /xa1/xa4 FULLWIDTH COMMA
++<UFF0E> /xa1/xa5 FULLWIDTH FULL STOP
++<U30FB> /xa1/xa6 KATAKANA MIDDLE DOT
++<UFF1A> /xa1/xa7 FULLWIDTH COLON
++<UFF1B> /xa1/xa8 FULLWIDTH SEMICOLON
++<UFF1F> /xa1/xa9 FULLWIDTH QUESTION MARK
++<UFF01> /xa1/xaa FULLWIDTH EXCLAMATION MARK
++<U309B> /xa1/xab KATAKANA-HIRAGANA VOICED SOUND MARK
++<U309C> /xa1/xac KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
++<U00B4> /xa1/xad ACUTE ACCENT
++<UFF40> /xa1/xae FULLWIDTH GRAVE ACCENT
++<U00A8> /xa1/xaf DIAERESIS
++<UFF3E> /xa1/xb0 FULLWIDTH CIRCUMFLEX ACCENT
++<UFFE3> /xa1/xb1 FULLWIDTH MACRON
++<UFF3F> /xa1/xb2 FULLWIDTH LOW LINE
++<U30FD> /xa1/xb3 KATAKANA ITERATION MARK
++<U30FE> /xa1/xb4 KATAKANA VOICED ITERATION MARK
++<U309D> /xa1/xb5 HIRAGANA ITERATION MARK
++<U309E> /xa1/xb6 HIRAGANA VOICED ITERATION MARK
++<U3003> /xa1/xb7 DITTO MARK
++<U4EDD> /xa1/xb8 <CJK>
++<U3005> /xa1/xb9 IDEOGRAPHIC ITERATION MARK
++<U3006> /xa1/xba IDEOGRAPHIC CLOSING MARK
++<U3007> /xa1/xbb IDEOGRAPHIC NUMBER ZERO
++<U30FC> /xa1/xbc KATAKANA-HIRAGANA PROLONGED SOUND MARK
++<U2015> /xa1/xbd HORIZONTAL BAR
++<U2010> /xa1/xbe HYPHEN
++<UFF0F> /xa1/xbf FULLWIDTH SOLIDUS
++<UFF3C> /xa1/xc0 FULLWIDTH REVERSE SOLIDUS
++<UFF5E> /xa1/xc1 FULLWIDTH TILDE
++<U2225> /xa1/xc2 PARALLEL TO
++<UFF5C> /xa1/xc3 FULLWIDTH VERTICAL LINE
++<U2026> /xa1/xc4 HORIZONTAL ELLIPSIS
++<U2025> /xa1/xc5 TWO DOT LEADER
++<U2018> /xa1/xc6 LEFT SINGLE QUOTATION MARK
++<U2019> /xa1/xc7 RIGHT SINGLE QUOTATION MARK
++<U201C> /xa1/xc8 LEFT DOUBLE QUOTATION MARK
++<U201D> /xa1/xc9 RIGHT DOUBLE QUOTATION MARK
++<UFF08> /xa1/xca FULLWIDTH LEFT PARENTHESIS
++<UFF09> /xa1/xcb FULLWIDTH RIGHT PARENTHESIS
++<U3014> /xa1/xcc LEFT TORTOISE SHELL BRACKET
++<U3015> /xa1/xcd RIGHT TORTOISE SHELL BRACKET
++<UFF3B> /xa1/xce FULLWIDTH LEFT SQUARE BRACKET
++<UFF3D> /xa1/xcf FULLWIDTH RIGHT SQUARE BRACKET
++<UFF5B> /xa1/xd0 FULLWIDTH LEFT CURLY BRACKET
++<UFF5D> /xa1/xd1 FULLWIDTH RIGHT CURLY BRACKET
++<U3008> /xa1/xd2 LEFT ANGLE BRACKET
++<U3009> /xa1/xd3 RIGHT ANGLE BRACKET
++<U300A> /xa1/xd4 LEFT DOUBLE ANGLE BRACKET
++<U300B> /xa1/xd5 RIGHT DOUBLE ANGLE BRACKET
++<U300C> /xa1/xd6 LEFT CORNER BRACKET
++<U300D> /xa1/xd7 RIGHT CORNER BRACKET
++<U300E> /xa1/xd8 LEFT WHITE CORNER BRACKET
++<U300F> /xa1/xd9 RIGHT WHITE CORNER BRACKET
++<U3010> /xa1/xda LEFT BLACK LENTICULAR BRACKET
++<U3011> /xa1/xdb RIGHT BLACK LENTICULAR BRACKET
++<UFF0B> /xa1/xdc FULLWIDTH PLUS SIGN
++<UFF0D> /xa1/xdd FULLWIDTH HYPHEN-MINUS
++<U00B1> /xa1/xde PLUS-MINUS SIGN
++<U00D7> /xa1/xdf MULTIPLICATION SIGN
++<U00F7> /xa1/xe0 DIVISION SIGN
++<UFF1D> /xa1/xe1 FULLWIDTH EQUALS SIGN
++<U2260> /xa1/xe2 NOT EQUAL TO
++<UFF1C> /xa1/xe3 FULLWIDTH LESS-THAN SIGN
++<UFF1E> /xa1/xe4 FULLWIDTH GREATER-THAN SIGN
++<U2266> /xa1/xe5 LESS-THAN OVER EQUAL TO
++<U2267> /xa1/xe6 GREATER-THAN OVER EQUAL TO
++<U221E> /xa1/xe7 INFINITY
++<U2234> /xa1/xe8 THEREFORE
++<U2642> /xa1/xe9 MALE SIGN
++<U2640> /xa1/xea FEMALE SIGN
++<U00B0> /xa1/xeb DEGREE SIGN
++<U2032> /xa1/xec PRIME
++<U2033> /xa1/xed DOUBLE PRIME
++<U2103> /xa1/xee DEGREE CELSIUS
++<UFFE5> /xa1/xef FULLWIDTH YEN SIGN
++<UFF04> /xa1/xf0 FULLWIDTH DOLLAR SIGN
++<UFFE0> /xa1/xf1 FULLWIDTH CENT SIGN
++<UFFE1> /xa1/xf2 FULLWIDTH POUND SIGN
++<UFF05> /xa1/xf3 FULLWIDTH PERCENT SIGN
++<UFF03> /xa1/xf4 FULLWIDTH NUMBER SIGN
++<UFF06> /xa1/xf5 FULLWIDTH AMPERSAND
++<UFF0A> /xa1/xf6 FULLWIDTH ASTERISK
++<UFF20> /xa1/xf7 FULLWIDTH COMMERCIAL AT
++<U00A7> /xa1/xf8 SECTION SIGN
++<U2606> /xa1/xf9 WHITE STAR
++<U2605> /xa1/xfa BLACK STAR
++<U25CB> /xa1/xfb WHITE CIRCLE
++<U25CF> /xa1/xfc BLACK CIRCLE
++<U25CE> /xa1/xfd BULLSEYE
++<U25C7> /xa1/xfe WHITE DIAMOND
++<U25C6> /xa2/xa1 BLACK DIAMOND
++<U25A1> /xa2/xa2 WHITE SQUARE
++<U25A0> /xa2/xa3 BLACK SQUARE
++<U25B3> /xa2/xa4 WHITE UP-POINTING TRIANGLE
++<U25B2> /xa2/xa5 BLACK UP-POINTING TRIANGLE
++<U25BD> /xa2/xa6 WHITE DOWN-POINTING TRIANGLE
++<U25BC> /xa2/xa7 BLACK DOWN-POINTING TRIANGLE
++<U203B> /xa2/xa8 REFERENCE MARK
++<U3012> /xa2/xa9 POSTAL MARK
++<U2192> /xa2/xaa RIGHTWARDS ARROW
++<U2190> /xa2/xab LEFTWARDS ARROW
++<U2191> /xa2/xac UPWARDS ARROW
++<U2193> /xa2/xad DOWNWARDS ARROW
++<U3013> /xa2/xae GETA MARK
++<U2208> /xa2/xba ELEMENT OF
++<U220B> /xa2/xbb CONTAINS AS MEMBER
++<U2286> /xa2/xbc SUBSET OF OR EQUAL TO
++<U2287> /xa2/xbd SUPERSET OF OR EQUAL TO
++<U2282> /xa2/xbe SUBSET OF
++<U2283> /xa2/xbf SUPERSET OF
++<U222A> /xa2/xc0 UNION
++<U2229> /xa2/xc1 INTERSECTION
++<U2227> /xa2/xca LOGICAL AND
++<U2228> /xa2/xcb LOGICAL OR
++<UFFE2> /xa2/xcc FULLWIDTH NOT SIGN
++<U21D2> /xa2/xcd RIGHTWARDS DOUBLE ARROW
++<U21D4> /xa2/xce LEFT RIGHT DOUBLE ARROW
++<U2200> /xa2/xcf FOR ALL
++<U2203> /xa2/xd0 THERE EXISTS
++<U2220> /xa2/xdc ANGLE
++<U22A5> /xa2/xdd UP TACK
++<U2312> /xa2/xde ARC
++<U2202> /xa2/xdf PARTIAL DIFFERENTIAL
++<U2207> /xa2/xe0 NABLA
++<U2261> /xa2/xe1 IDENTICAL TO
++<U2252> /xa2/xe2 APPROXIMATELY EQUAL TO OR THE IMAGE OF
++<U226A> /xa2/xe3 MUCH LESS-THAN
++<U226B> /xa2/xe4 MUCH GREATER-THAN
++<U221A> /xa2/xe5 SQUARE ROOT
++<U223D> /xa2/xe6 REVERSED TILDE
++<U221D> /xa2/xe7 PROPORTIONAL TO
++<U2235> /xa2/xe8 BECAUSE
++<U222B> /xa2/xe9 INTEGRAL
++<U222C> /xa2/xea DOUBLE INTEGRAL
++<U212B> /xa2/xf2 ANGSTROM SIGN
++<U2030> /xa2/xf3 PER MILLE SIGN
++<U266F> /xa2/xf4 MUSIC SHARP SIGN
++<U266D> /xa2/xf5 MUSIC FLAT SIGN
++<U266A> /xa2/xf6 EIGHTH NOTE
++<U2020> /xa2/xf7 DAGGER
++<U2021> /xa2/xf8 DOUBLE DAGGER
++<U00B6> /xa2/xf9 PILCROW SIGN
++<U25EF> /xa2/xfe LARGE CIRCLE
++<UFF10> /xa3/xb0 FULLWIDTH DIGIT ZERO
++<UFF11> /xa3/xb1 FULLWIDTH DIGIT ONE
++<UFF12> /xa3/xb2 FULLWIDTH DIGIT TWO
++<UFF13> /xa3/xb3 FULLWIDTH DIGIT THREE
++<UFF14> /xa3/xb4 FULLWIDTH DIGIT FOUR
++<UFF15> /xa3/xb5 FULLWIDTH DIGIT FIVE
++<UFF16> /xa3/xb6 FULLWIDTH DIGIT SIX
++<UFF17> /xa3/xb7 FULLWIDTH DIGIT SEVEN
++<UFF18> /xa3/xb8 FULLWIDTH DIGIT EIGHT
++<UFF19> /xa3/xb9 FULLWIDTH DIGIT NINE
++<UFF21> /xa3/xc1 FULLWIDTH LATIN CAPITAL LETTER A
++<UFF22> /xa3/xc2 FULLWIDTH LATIN CAPITAL LETTER B
++<UFF23> /xa3/xc3 FULLWIDTH LATIN CAPITAL LETTER C
++<UFF24> /xa3/xc4 FULLWIDTH LATIN CAPITAL LETTER D
++<UFF25> /xa3/xc5 FULLWIDTH LATIN CAPITAL LETTER E
++<UFF26> /xa3/xc6 FULLWIDTH LATIN CAPITAL LETTER F
++<UFF27> /xa3/xc7 FULLWIDTH LATIN CAPITAL LETTER G
++<UFF28> /xa3/xc8 FULLWIDTH LATIN CAPITAL LETTER H
++<UFF29> /xa3/xc9 FULLWIDTH LATIN CAPITAL LETTER I
++<UFF2A> /xa3/xca FULLWIDTH LATIN CAPITAL LETTER J
++<UFF2B> /xa3/xcb FULLWIDTH LATIN CAPITAL LETTER K
++<UFF2C> /xa3/xcc FULLWIDTH LATIN CAPITAL LETTER L
++<UFF2D> /xa3/xcd FULLWIDTH LATIN CAPITAL LETTER M
++<UFF2E> /xa3/xce FULLWIDTH LATIN CAPITAL LETTER N
++<UFF2F> /xa3/xcf FULLWIDTH LATIN CAPITAL LETTER O
++<UFF30> /xa3/xd0 FULLWIDTH LATIN CAPITAL LETTER P
++<UFF31> /xa3/xd1 FULLWIDTH LATIN CAPITAL LETTER Q
++<UFF32> /xa3/xd2 FULLWIDTH LATIN CAPITAL LETTER R
++<UFF33> /xa3/xd3 FULLWIDTH LATIN CAPITAL LETTER S
++<UFF34> /xa3/xd4 FULLWIDTH LATIN CAPITAL LETTER T
++<UFF35> /xa3/xd5 FULLWIDTH LATIN CAPITAL LETTER U
++<UFF36> /xa3/xd6 FULLWIDTH LATIN CAPITAL LETTER V
++<UFF37> /xa3/xd7 FULLWIDTH LATIN CAPITAL LETTER W
++<UFF38> /xa3/xd8 FULLWIDTH LATIN CAPITAL LETTER X
++<UFF39> /xa3/xd9 FULLWIDTH LATIN CAPITAL LETTER Y
++<UFF3A> /xa3/xda FULLWIDTH LATIN CAPITAL LETTER Z
++<UFF41> /xa3/xe1 FULLWIDTH LATIN SMALL LETTER A
++<UFF42> /xa3/xe2 FULLWIDTH LATIN SMALL LETTER B
++<UFF43> /xa3/xe3 FULLWIDTH LATIN SMALL LETTER C
++<UFF44> /xa3/xe4 FULLWIDTH LATIN SMALL LETTER D
++<UFF45> /xa3/xe5 FULLWIDTH LATIN SMALL LETTER E
++<UFF46> /xa3/xe6 FULLWIDTH LATIN SMALL LETTER F
++<UFF47> /xa3/xe7 FULLWIDTH LATIN SMALL LETTER G
++<UFF48> /xa3/xe8 FULLWIDTH LATIN SMALL LETTER H
++<UFF49> /xa3/xe9 FULLWIDTH LATIN SMALL LETTER I
++<UFF4A> /xa3/xea FULLWIDTH LATIN SMALL LETTER J
++<UFF4B> /xa3/xeb FULLWIDTH LATIN SMALL LETTER K
++<UFF4C> /xa3/xec FULLWIDTH LATIN SMALL LETTER L
++<UFF4D> /xa3/xed FULLWIDTH LATIN SMALL LETTER M
++<UFF4E> /xa3/xee FULLWIDTH LATIN SMALL LETTER N
++<UFF4F> /xa3/xef FULLWIDTH LATIN SMALL LETTER O
++<UFF50> /xa3/xf0 FULLWIDTH LATIN SMALL LETTER P
++<UFF51> /xa3/xf1 FULLWIDTH LATIN SMALL LETTER Q
++<UFF52> /xa3/xf2 FULLWIDTH LATIN SMALL LETTER R
++<UFF53> /xa3/xf3 FULLWIDTH LATIN SMALL LETTER S
++<UFF54> /xa3/xf4 FULLWIDTH LATIN SMALL LETTER T
++<UFF55> /xa3/xf5 FULLWIDTH LATIN SMALL LETTER U
++<UFF56> /xa3/xf6 FULLWIDTH LATIN SMALL LETTER V
++<UFF57> /xa3/xf7 FULLWIDTH LATIN SMALL LETTER W
++<UFF58> /xa3/xf8 FULLWIDTH LATIN SMALL LETTER X
++<UFF59> /xa3/xf9 FULLWIDTH LATIN SMALL LETTER Y
++<UFF5A> /xa3/xfa FULLWIDTH LATIN SMALL LETTER Z
++<U3041> /xa4/xa1 HIRAGANA LETTER SMALL A
++<U3042> /xa4/xa2 HIRAGANA LETTER A
++<U3043> /xa4/xa3 HIRAGANA LETTER SMALL I
++<U3044> /xa4/xa4 HIRAGANA LETTER I
++<U3045> /xa4/xa5 HIRAGANA LETTER SMALL U
++<U3046> /xa4/xa6 HIRAGANA LETTER U
++<U3047> /xa4/xa7 HIRAGANA LETTER SMALL E
++<U3048> /xa4/xa8 HIRAGANA LETTER E
++<U3049> /xa4/xa9 HIRAGANA LETTER SMALL O
++<U304A> /xa4/xaa HIRAGANA LETTER O
++<U304B> /xa4/xab HIRAGANA LETTER KA
++<U304C> /xa4/xac HIRAGANA LETTER GA
++<U304D> /xa4/xad HIRAGANA LETTER KI
++<U304E> /xa4/xae HIRAGANA LETTER GI
++<U304F> /xa4/xaf HIRAGANA LETTER KU
++<U3050> /xa4/xb0 HIRAGANA LETTER GU
++<U3051> /xa4/xb1 HIRAGANA LETTER KE
++<U3052> /xa4/xb2 HIRAGANA LETTER GE
++<U3053> /xa4/xb3 HIRAGANA LETTER KO
++<U3054> /xa4/xb4 HIRAGANA LETTER GO
++<U3055> /xa4/xb5 HIRAGANA LETTER SA
++<U3056> /xa4/xb6 HIRAGANA LETTER ZA
++<U3057> /xa4/xb7 HIRAGANA LETTER SI
++<U3058> /xa4/xb8 HIRAGANA LETTER ZI
++<U3059> /xa4/xb9 HIRAGANA LETTER SU
++<U305A> /xa4/xba HIRAGANA LETTER ZU
++<U305B> /xa4/xbb HIRAGANA LETTER SE
++<U305C> /xa4/xbc HIRAGANA LETTER ZE
++<U305D> /xa4/xbd HIRAGANA LETTER SO
++<U305E> /xa4/xbe HIRAGANA LETTER ZO
++<U305F> /xa4/xbf HIRAGANA LETTER TA
++<U3060> /xa4/xc0 HIRAGANA LETTER DA
++<U3061> /xa4/xc1 HIRAGANA LETTER TI
++<U3062> /xa4/xc2 HIRAGANA LETTER DI
++<U3063> /xa4/xc3 HIRAGANA LETTER SMALL TU
++<U3064> /xa4/xc4 HIRAGANA LETTER TU
++<U3065> /xa4/xc5 HIRAGANA LETTER DU
++<U3066> /xa4/xc6 HIRAGANA LETTER TE
++<U3067> /xa4/xc7 HIRAGANA LETTER DE
++<U3068> /xa4/xc8 HIRAGANA LETTER TO
++<U3069> /xa4/xc9 HIRAGANA LETTER DO
++<U306A> /xa4/xca HIRAGANA LETTER NA
++<U306B> /xa4/xcb HIRAGANA LETTER NI
++<U306C> /xa4/xcc HIRAGANA LETTER NU
++<U306D> /xa4/xcd HIRAGANA LETTER NE
++<U306E> /xa4/xce HIRAGANA LETTER NO
++<U306F> /xa4/xcf HIRAGANA LETTER HA
++<U3070> /xa4/xd0 HIRAGANA LETTER BA
++<U3071> /xa4/xd1 HIRAGANA LETTER PA
++<U3072> /xa4/xd2 HIRAGANA LETTER HI
++<U3073> /xa4/xd3 HIRAGANA LETTER BI
++<U3074> /xa4/xd4 HIRAGANA LETTER PI
++<U3075> /xa4/xd5 HIRAGANA LETTER HU
++<U3076> /xa4/xd6 HIRAGANA LETTER BU
++<U3077> /xa4/xd7 HIRAGANA LETTER PU
++<U3078> /xa4/xd8 HIRAGANA LETTER HE
++<U3079> /xa4/xd9 HIRAGANA LETTER BE
++<U307A> /xa4/xda HIRAGANA LETTER PE
++<U307B> /xa4/xdb HIRAGANA LETTER HO
++<U307C> /xa4/xdc HIRAGANA LETTER BO
++<U307D> /xa4/xdd HIRAGANA LETTER PO
++<U307E> /xa4/xde HIRAGANA LETTER MA
++<U307F> /xa4/xdf HIRAGANA LETTER MI
++<U3080> /xa4/xe0 HIRAGANA LETTER MU
++<U3081> /xa4/xe1 HIRAGANA LETTER ME
++<U3082> /xa4/xe2 HIRAGANA LETTER MO
++<U3083> /xa4/xe3 HIRAGANA LETTER SMALL YA
++<U3084> /xa4/xe4 HIRAGANA LETTER YA
++<U3085> /xa4/xe5 HIRAGANA LETTER SMALL YU
++<U3086> /xa4/xe6 HIRAGANA LETTER YU
++<U3087> /xa4/xe7 HIRAGANA LETTER SMALL YO
++<U3088> /xa4/xe8 HIRAGANA LETTER YO
++<U3089> /xa4/xe9 HIRAGANA LETTER RA
++<U308A> /xa4/xea HIRAGANA LETTER RI
++<U308B> /xa4/xeb HIRAGANA LETTER RU
++<U308C> /xa4/xec HIRAGANA LETTER RE
++<U308D> /xa4/xed HIRAGANA LETTER RO
++<U308E> /xa4/xee HIRAGANA LETTER SMALL WA
++<U308F> /xa4/xef HIRAGANA LETTER WA
++<U3090> /xa4/xf0 HIRAGANA LETTER WI
++<U3091> /xa4/xf1 HIRAGANA LETTER WE
++<U3092> /xa4/xf2 HIRAGANA LETTER WO
++<U3093> /xa4/xf3 HIRAGANA LETTER N
++<U30A1> /xa5/xa1 KATAKANA LETTER SMALL A
++<U30A2> /xa5/xa2 KATAKANA LETTER A
++<U30A3> /xa5/xa3 KATAKANA LETTER SMALL I
++<U30A4> /xa5/xa4 KATAKANA LETTER I
++<U30A5> /xa5/xa5 KATAKANA LETTER SMALL U
++<U30A6> /xa5/xa6 KATAKANA LETTER U
++<U30A7> /xa5/xa7 KATAKANA LETTER SMALL E
++<U30A8> /xa5/xa8 KATAKANA LETTER E
++<U30A9> /xa5/xa9 KATAKANA LETTER SMALL O
++<U30AA> /xa5/xaa KATAKANA LETTER O
++<U30AB> /xa5/xab KATAKANA LETTER KA
++<U30AC> /xa5/xac KATAKANA LETTER GA
++<U30AD> /xa5/xad KATAKANA LETTER KI
++<U30AE> /xa5/xae KATAKANA LETTER GI
++<U30AF> /xa5/xaf KATAKANA LETTER KU
++<U30B0> /xa5/xb0 KATAKANA LETTER GU
++<U30B1> /xa5/xb1 KATAKANA LETTER KE
++<U30B2> /xa5/xb2 KATAKANA LETTER GE
++<U30B3> /xa5/xb3 KATAKANA LETTER KO
++<U30B4> /xa5/xb4 KATAKANA LETTER GO
++<U30B5> /xa5/xb5 KATAKANA LETTER SA
++<U30B6> /xa5/xb6 KATAKANA LETTER ZA
++<U30B7> /xa5/xb7 KATAKANA LETTER SI
++<U30B8> /xa5/xb8 KATAKANA LETTER ZI
++<U30B9> /xa5/xb9 KATAKANA LETTER SU
++<U30BA> /xa5/xba KATAKANA LETTER ZU
++<U30BB> /xa5/xbb KATAKANA LETTER SE
++<U30BC> /xa5/xbc KATAKANA LETTER ZE
++<U30BD> /xa5/xbd KATAKANA LETTER SO
++<U30BE> /xa5/xbe KATAKANA LETTER ZO
++<U30BF> /xa5/xbf KATAKANA LETTER TA
++<U30C0> /xa5/xc0 KATAKANA LETTER DA
++<U30C1> /xa5/xc1 KATAKANA LETTER TI
++<U30C2> /xa5/xc2 KATAKANA LETTER DI
++<U30C3> /xa5/xc3 KATAKANA LETTER SMALL TU
++<U30C4> /xa5/xc4 KATAKANA LETTER TU
++<U30C5> /xa5/xc5 KATAKANA LETTER DU
++<U30C6> /xa5/xc6 KATAKANA LETTER TE
++<U30C7> /xa5/xc7 KATAKANA LETTER DE
++<U30C8> /xa5/xc8 KATAKANA LETTER TO
++<U30C9> /xa5/xc9 KATAKANA LETTER DO
++<U30CA> /xa5/xca KATAKANA LETTER NA
++<U30CB> /xa5/xcb KATAKANA LETTER NI
++<U30CC> /xa5/xcc KATAKANA LETTER NU
++<U30CD> /xa5/xcd KATAKANA LETTER NE
++<U30CE> /xa5/xce KATAKANA LETTER NO
++<U30CF> /xa5/xcf KATAKANA LETTER HA
++<U30D0> /xa5/xd0 KATAKANA LETTER BA
++<U30D1> /xa5/xd1 KATAKANA LETTER PA
++<U30D2> /xa5/xd2 KATAKANA LETTER HI
++<U30D3> /xa5/xd3 KATAKANA LETTER BI
++<U30D4> /xa5/xd4 KATAKANA LETTER PI
++<U30D5> /xa5/xd5 KATAKANA LETTER HU
++<U30D6> /xa5/xd6 KATAKANA LETTER BU
++<U30D7> /xa5/xd7 KATAKANA LETTER PU
++<U30D8> /xa5/xd8 KATAKANA LETTER HE
++<U30D9> /xa5/xd9 KATAKANA LETTER BE
++<U30DA> /xa5/xda KATAKANA LETTER PE
++<U30DB> /xa5/xdb KATAKANA LETTER HO
++<U30DC> /xa5/xdc KATAKANA LETTER BO
++<U30DD> /xa5/xdd KATAKANA LETTER PO
++<U30DE> /xa5/xde KATAKANA LETTER MA
++<U30DF> /xa5/xdf KATAKANA LETTER MI
++<U30E0> /xa5/xe0 KATAKANA LETTER MU
++<U30E1> /xa5/xe1 KATAKANA LETTER ME
++<U30E2> /xa5/xe2 KATAKANA LETTER MO
++<U30E3> /xa5/xe3 KATAKANA LETTER SMALL YA
++<U30E4> /xa5/xe4 KATAKANA LETTER YA
++<U30E5> /xa5/xe5 KATAKANA LETTER SMALL YU
++<U30E6> /xa5/xe6 KATAKANA LETTER YU
++<U30E7> /xa5/xe7 KATAKANA LETTER SMALL YO
++<U30E8> /xa5/xe8 KATAKANA LETTER YO
++<U30E9> /xa5/xe9 KATAKANA LETTER RA
++<U30EA> /xa5/xea KATAKANA LETTER RI
++<U30EB> /xa5/xeb KATAKANA LETTER RU
++<U30EC> /xa5/xec KATAKANA LETTER RE
++<U30ED> /xa5/xed KATAKANA LETTER RO
++<U30EE> /xa5/xee KATAKANA LETTER SMALL WA
++<U30EF> /xa5/xef KATAKANA LETTER WA
++<U30F0> /xa5/xf0 KATAKANA LETTER WI
++<U30F1> /xa5/xf1 KATAKANA LETTER WE
++<U30F2> /xa5/xf2 KATAKANA LETTER WO
++<U30F3> /xa5/xf3 KATAKANA LETTER N
++<U30F4> /xa5/xf4 KATAKANA LETTER VU
++<U30F5> /xa5/xf5 KATAKANA LETTER SMALL KA
++<U30F6> /xa5/xf6 KATAKANA LETTER SMALL KE
++<U0391> /xa6/xa1 GREEK CAPITAL LETTER ALPHA
++<U0392> /xa6/xa2 GREEK CAPITAL LETTER BETA
++<U0393> /xa6/xa3 GREEK CAPITAL LETTER GAMMA
++<U0394> /xa6/xa4 GREEK CAPITAL LETTER DELTA
++<U0395> /xa6/xa5 GREEK CAPITAL LETTER EPSILON
++<U0396> /xa6/xa6 GREEK CAPITAL LETTER ZETA
++<U0397> /xa6/xa7 GREEK CAPITAL LETTER ETA
++<U0398> /xa6/xa8 GREEK CAPITAL LETTER THETA
++<U0399> /xa6/xa9 GREEK CAPITAL LETTER IOTA
++<U039A> /xa6/xaa GREEK CAPITAL LETTER KAPPA
++<U039B> /xa6/xab GREEK CAPITAL LETTER LAMDA
++<U039C> /xa6/xac GREEK CAPITAL LETTER MU
++<U039D> /xa6/xad GREEK CAPITAL LETTER NU
++<U039E> /xa6/xae GREEK CAPITAL LETTER XI
++<U039F> /xa6/xaf GREEK CAPITAL LETTER OMICRON
++<U03A0> /xa6/xb0 GREEK CAPITAL LETTER PI
++<U03A1> /xa6/xb1 GREEK CAPITAL LETTER RHO
++<U03A3> /xa6/xb2 GREEK CAPITAL LETTER SIGMA
++<U03A4> /xa6/xb3 GREEK CAPITAL LETTER TAU
++<U03A5> /xa6/xb4 GREEK CAPITAL LETTER UPSILON
++<U03A6> /xa6/xb5 GREEK CAPITAL LETTER PHI
++<U03A7> /xa6/xb6 GREEK CAPITAL LETTER CHI
++<U03A8> /xa6/xb7 GREEK CAPITAL LETTER PSI
++<U03A9> /xa6/xb8 GREEK CAPITAL LETTER OMEGA
++<U03B1> /xa6/xc1 GREEK SMALL LETTER ALPHA
++<U03B2> /xa6/xc2 GREEK SMALL LETTER BETA
++<U03B3> /xa6/xc3 GREEK SMALL LETTER GAMMA
++<U03B4> /xa6/xc4 GREEK SMALL LETTER DELTA
++<U03B5> /xa6/xc5 GREEK SMALL LETTER EPSILON
++<U03B6> /xa6/xc6 GREEK SMALL LETTER ZETA
++<U03B7> /xa6/xc7 GREEK SMALL LETTER ETA
++<U03B8> /xa6/xc8 GREEK SMALL LETTER THETA
++<U03B9> /xa6/xc9 GREEK SMALL LETTER IOTA
++<U03BA> /xa6/xca GREEK SMALL LETTER KAPPA
++<U03BB> /xa6/xcb GREEK SMALL LETTER LAMDA
++<U03BC> /xa6/xcc GREEK SMALL LETTER MU
++<U03BD> /xa6/xcd GREEK SMALL LETTER NU
++<U03BE> /xa6/xce GREEK SMALL LETTER XI
++<U03BF> /xa6/xcf GREEK SMALL LETTER OMICRON
++<U03C0> /xa6/xd0 GREEK SMALL LETTER PI
++<U03C1> /xa6/xd1 GREEK SMALL LETTER RHO
++<U03C3> /xa6/xd2 GREEK SMALL LETTER SIGMA
++<U03C4> /xa6/xd3 GREEK SMALL LETTER TAU
++<U03C5> /xa6/xd4 GREEK SMALL LETTER UPSILON
++<U03C6> /xa6/xd5 GREEK SMALL LETTER PHI
++<U03C7> /xa6/xd6 GREEK SMALL LETTER CHI
++<U03C8> /xa6/xd7 GREEK SMALL LETTER PSI
++<U03C9> /xa6/xd8 GREEK SMALL LETTER OMEGA
++<U0410> /xa7/xa1 CYRILLIC CAPITAL LETTER A
++<U0411> /xa7/xa2 CYRILLIC CAPITAL LETTER BE
++<U0412> /xa7/xa3 CYRILLIC CAPITAL LETTER VE
++<U0413> /xa7/xa4 CYRILLIC CAPITAL LETTER GHE
++<U0414> /xa7/xa5 CYRILLIC CAPITAL LETTER DE
++<U0415> /xa7/xa6 CYRILLIC CAPITAL LETTER IE
++<U0401> /xa7/xa7 CYRILLIC CAPITAL LETTER IO
++<U0416> /xa7/xa8 CYRILLIC CAPITAL LETTER ZHE
++<U0417> /xa7/xa9 CYRILLIC CAPITAL LETTER ZE
++<U0418> /xa7/xaa CYRILLIC CAPITAL LETTER I
++<U0419> /xa7/xab CYRILLIC CAPITAL LETTER SHORT I
++<U041A> /xa7/xac CYRILLIC CAPITAL LETTER KA
++<U041B> /xa7/xad CYRILLIC CAPITAL LETTER EL
++<U041C> /xa7/xae CYRILLIC CAPITAL LETTER EM
++<U041D> /xa7/xaf CYRILLIC CAPITAL LETTER EN
++<U041E> /xa7/xb0 CYRILLIC CAPITAL LETTER O
++<U041F> /xa7/xb1 CYRILLIC CAPITAL LETTER PE
++<U0420> /xa7/xb2 CYRILLIC CAPITAL LETTER ER
++<U0421> /xa7/xb3 CYRILLIC CAPITAL LETTER ES
++<U0422> /xa7/xb4 CYRILLIC CAPITAL LETTER TE
++<U0423> /xa7/xb5 CYRILLIC CAPITAL LETTER U
++<U0424> /xa7/xb6 CYRILLIC CAPITAL LETTER EF
++<U0425> /xa7/xb7 CYRILLIC CAPITAL LETTER HA
++<U0426> /xa7/xb8 CYRILLIC CAPITAL LETTER TSE
++<U0427> /xa7/xb9 CYRILLIC CAPITAL LETTER CHE
++<U0428> /xa7/xba CYRILLIC CAPITAL LETTER SHA
++<U0429> /xa7/xbb CYRILLIC CAPITAL LETTER SHCHA
++<U042A> /xa7/xbc CYRILLIC CAPITAL LETTER HARD SIGN
++<U042B> /xa7/xbd CYRILLIC CAPITAL LETTER YERU
++<U042C> /xa7/xbe CYRILLIC CAPITAL LETTER SOFT SIGN
++<U042D> /xa7/xbf CYRILLIC CAPITAL LETTER E
++<U042E> /xa7/xc0 CYRILLIC CAPITAL LETTER YU
++<U042F> /xa7/xc1 CYRILLIC CAPITAL LETTER YA
++<U0430> /xa7/xd1 CYRILLIC SMALL LETTER A
++<U0431> /xa7/xd2 CYRILLIC SMALL LETTER BE
++<U0432> /xa7/xd3 CYRILLIC SMALL LETTER VE
++<U0433> /xa7/xd4 CYRILLIC SMALL LETTER GHE
++<U0434> /xa7/xd5 CYRILLIC SMALL LETTER DE
++<U0435> /xa7/xd6 CYRILLIC SMALL LETTER IE
++<U0451> /xa7/xd7 CYRILLIC SMALL LETTER IO
++<U0436> /xa7/xd8 CYRILLIC SMALL LETTER ZHE
++<U0437> /xa7/xd9 CYRILLIC SMALL LETTER ZE
++<U0438> /xa7/xda CYRILLIC SMALL LETTER I
++<U0439> /xa7/xdb CYRILLIC SMALL LETTER SHORT I
++<U043A> /xa7/xdc CYRILLIC SMALL LETTER KA
++<U043B> /xa7/xdd CYRILLIC SMALL LETTER EL
++<U043C> /xa7/xde CYRILLIC SMALL LETTER EM
++<U043D> /xa7/xdf CYRILLIC SMALL LETTER EN
++<U043E> /xa7/xe0 CYRILLIC SMALL LETTER O
++<U043F> /xa7/xe1 CYRILLIC SMALL LETTER PE
++<U0440> /xa7/xe2 CYRILLIC SMALL LETTER ER
++<U0441> /xa7/xe3 CYRILLIC SMALL LETTER ES
++<U0442> /xa7/xe4 CYRILLIC SMALL LETTER TE
++<U0443> /xa7/xe5 CYRILLIC SMALL LETTER U
++<U0444> /xa7/xe6 CYRILLIC SMALL LETTER EF
++<U0445> /xa7/xe7 CYRILLIC SMALL LETTER HA
++<U0446> /xa7/xe8 CYRILLIC SMALL LETTER TSE
++<U0447> /xa7/xe9 CYRILLIC SMALL LETTER CHE
++<U0448> /xa7/xea CYRILLIC SMALL LETTER SHA
++<U0449> /xa7/xeb CYRILLIC SMALL LETTER SHCHA
++<U044A> /xa7/xec CYRILLIC SMALL LETTER HARD SIGN
++<U044B> /xa7/xed CYRILLIC SMALL LETTER YERU
++<U044C> /xa7/xee CYRILLIC SMALL LETTER SOFT SIGN
++<U044D> /xa7/xef CYRILLIC SMALL LETTER E
++<U044E> /xa7/xf0 CYRILLIC SMALL LETTER YU
++<U044F> /xa7/xf1 CYRILLIC SMALL LETTER YA
++<U2500> /xa8/xa1 BOX DRAWINGS LIGHT HORIZONTAL
++<U2502> /xa8/xa2 BOX DRAWINGS LIGHT VERTICAL
++<U250C> /xa8/xa3 BOX DRAWINGS LIGHT DOWN AND RIGHT
++<U2510> /xa8/xa4 BOX DRAWINGS LIGHT DOWN AND LEFT
++<U2518> /xa8/xa5 BOX DRAWINGS LIGHT UP AND LEFT
++<U2514> /xa8/xa6 BOX DRAWINGS LIGHT UP AND RIGHT
++<U251C> /xa8/xa7 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
++<U252C> /xa8/xa8 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
++<U2524> /xa8/xa9 BOX DRAWINGS LIGHT VERTICAL AND LEFT
++<U2534> /xa8/xaa BOX DRAWINGS LIGHT UP AND HORIZONTAL
++<U253C> /xa8/xab BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
++<U2501> /xa8/xac BOX DRAWINGS HEAVY HORIZONTAL
++<U2503> /xa8/xad BOX DRAWINGS HEAVY VERTICAL
++<U250F> /xa8/xae BOX DRAWINGS HEAVY DOWN AND RIGHT
++<U2513> /xa8/xaf BOX DRAWINGS HEAVY DOWN AND LEFT
++<U251B> /xa8/xb0 BOX DRAWINGS HEAVY UP AND LEFT
++<U2517> /xa8/xb1 BOX DRAWINGS HEAVY UP AND RIGHT
++<U2523> /xa8/xb2 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
++<U2533> /xa8/xb3 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
++<U252B> /xa8/xb4 BOX DRAWINGS HEAVY VERTICAL AND LEFT
++<U253B> /xa8/xb5 BOX DRAWINGS HEAVY UP AND HORIZONTAL
++<U254B> /xa8/xb6 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
++<U2520> /xa8/xb7 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
++<U252F> /xa8/xb8 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
++<U2528> /xa8/xb9 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
++<U2537> /xa8/xba BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
++<U253F> /xa8/xbb BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
++<U251D> /xa8/xbc BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
++<U2530> /xa8/xbd BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
++<U2525> /xa8/xbe BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
++<U2538> /xa8/xbf BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
++<U2542> /xa8/xc0 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
++<U2460> /xad/xa1 CIRCLED DIGIT ONE
++<U2461> /xad/xa2 CIRCLED DIGIT TWO
++<U2462> /xad/xa3 CIRCLED DIGIT THREE
++<U2463> /xad/xa4 CIRCLED DIGIT FOUR
++<U2464> /xad/xa5 CIRCLED DIGIT FIVE
++<U2465> /xad/xa6 CIRCLED DIGIT SIX
++<U2466> /xad/xa7 CIRCLED DIGIT SEVEN
++<U2467> /xad/xa8 CIRCLED DIGIT EIGHT
++<U2468> /xad/xa9 CIRCLED DIGIT NINE
++<U2469> /xad/xaa CIRCLED NUMBER TEN
++<U246A> /xad/xab CIRCLED NUMBER ELEVEN
++<U246B> /xad/xac CIRCLED NUMBER TWELVE
++<U246C> /xad/xad CIRCLED NUMBER THIRTEEN
++<U246D> /xad/xae CIRCLED NUMBER FOURTEEN
++<U246E> /xad/xaf CIRCLED NUMBER FIFTEEN
++<U246F> /xad/xb0 CIRCLED NUMBER SIXTEEN
++<U2470> /xad/xb1 CIRCLED NUMBER SEVENTEEN
++<U2471> /xad/xb2 CIRCLED NUMBER EIGHTEEN
++<U2472> /xad/xb3 CIRCLED NUMBER NINETEEN
++<U2473> /xad/xb4 CIRCLED NUMBER TWENTY
++<U2160> /xad/xb5 ROMAN NUMERAL ONE
++<U2161> /xad/xb6 ROMAN NUMERAL TWO
++<U2162> /xad/xb7 ROMAN NUMERAL THREE
++<U2163> /xad/xb8 ROMAN NUMERAL FOUR
++<U2164> /xad/xb9 ROMAN NUMERAL FIVE
++<U2165> /xad/xba ROMAN NUMERAL SIX
++<U2166> /xad/xbb ROMAN NUMERAL SEVEN
++<U2167> /xad/xbc ROMAN NUMERAL EIGHT
++<U2168> /xad/xbd ROMAN NUMERAL NINE
++<U2169> /xad/xbe ROMAN NUMERAL TEN
++<U3349> /xad/xc0 SQUARE MIRI
++<U3314> /xad/xc1 SQUARE KIRO
++<U3322> /xad/xc2 SQUARE SENTI
++<U334D> /xad/xc3 SQUARE MEETORU
++<U3318> /xad/xc4 SQUARE GURAMU
++<U3327> /xad/xc5 SQUARE TON
++<U3303> /xad/xc6 SQUARE AARU
++<U3336> /xad/xc7 SQUARE HEKUTAARU
++<U3351> /xad/xc8 SQUARE RITTORU
++<U3357> /xad/xc9 SQUARE WATTO
++<U330D> /xad/xca SQUARE KARORII
++<U3326> /xad/xcb SQUARE DORU
++<U3323> /xad/xcc SQUARE SENTO
++<U332B> /xad/xcd SQUARE PAASENTO
++<U334A> /xad/xce SQUARE MIRIBAARU
++<U333B> /xad/xcf SQUARE PEEZI
++<U339C> /xad/xd0 SQUARE MM
++<U339D> /xad/xd1 SQUARE CM
++<U339E> /xad/xd2 SQUARE KM
++<U338E> /xad/xd3 SQUARE MG
++<U338F> /xad/xd4 SQUARE KG
++<U33C4> /xad/xd5 SQUARE CC
++<U33A1> /xad/xd6 SQUARE M SQUARED
++<U337B> /xad/xdf SQUARE ERA NAME HEISEI
++<U301D> /xad/xe0 REVERSED DOUBLE PRIME QUOTATION MARK
++<U301F> /xad/xe1 LOW DOUBLE PRIME QUOTATION MARK
++<U2116> /xad/xe2 NUMERO SIGN
++<U33CD> /xad/xe3 SQUARE KK
++<U2121> /xad/xe4 TELEPHONE SIGN
++<U32A4> /xad/xe5 CIRCLED IDEOGRAPH HIGH
++<U32A5> /xad/xe6 CIRCLED IDEOGRAPH CENTRE
++<U32A6> /xad/xe7 CIRCLED IDEOGRAPH LOW
++<U32A7> /xad/xe8 CIRCLED IDEOGRAPH LEFT
++<U32A8> /xad/xe9 CIRCLED IDEOGRAPH RIGHT
++<U3231> /xad/xea PARENTHESIZED IDEOGRAPH STOCK
++<U3232> /xad/xeb PARENTHESIZED IDEOGRAPH HAVE
++<U3239> /xad/xec PARENTHESIZED IDEOGRAPH REPRESENT
++<U337E> /xad/xed SQUARE ERA NAME MEIZI
++<U337D> /xad/xee SQUARE ERA NAME TAISYOU
++<U337C> /xad/xef SQUARE ERA NAME SYOUWA
++%IRREVERSIBLE%<U2252> /xad/xf0 APPROXIMATELY EQUAL TO OR THE IMAGE OF
++%IRREVERSIBLE%<U2261> /xad/xf1 IDENTICAL TO
++%IRREVERSIBLE%<U222B> /xad/xf2 INTEGRAL
++<U222E> /xad/xf3 CONTOUR INTEGRAL
++<U2211> /xad/xf4 N-ARY SUMMATION
++%IRREVERSIBLE%<U221A> /xad/xf5 SQUARE ROOT
++%IRREVERSIBLE%<U22A5> /xad/xf6 UP TACK
++%IRREVERSIBLE%<U2220> /xad/xf7 ANGLE
++<U221F> /xad/xf8 RIGHT ANGLE
++<U22BF> /xad/xf9 RIGHT TRIANGLE
++%IRREVERSIBLE%<U2235> /xad/xfa BECAUSE
++%IRREVERSIBLE%<U2229> /xad/xfb INTERSECTION
++%IRREVERSIBLE%<U222A> /xad/xfc UNION
++<U4E9C> /xb0/xa1 <CJK>
++<U5516> /xb0/xa2 <CJK>
++<U5A03> /xb0/xa3 <CJK>
++<U963F> /xb0/xa4 <CJK>
++<U54C0> /xb0/xa5 <CJK>
++<U611B> /xb0/xa6 <CJK>
++<U6328> /xb0/xa7 <CJK>
++<U59F6> /xb0/xa8 <CJK>
++<U9022> /xb0/xa9 <CJK>
++<U8475> /xb0/xaa <CJK>
++<U831C> /xb0/xab <CJK>
++<U7A50> /xb0/xac <CJK>
++<U60AA> /xb0/xad <CJK>
++<U63E1> /xb0/xae <CJK>
++<U6E25> /xb0/xaf <CJK>
++<U65ED> /xb0/xb0 <CJK>
++<U8466> /xb0/xb1 <CJK>
++<U82A6> /xb0/xb2 <CJK>
++<U9BF5> /xb0/xb3 <CJK>
++<U6893> /xb0/xb4 <CJK>
++<U5727> /xb0/xb5 <CJK>
++<U65A1> /xb0/xb6 <CJK>
++<U6271> /xb0/xb7 <CJK>
++<U5B9B> /xb0/xb8 <CJK>
++<U59D0> /xb0/xb9 <CJK>
++<U867B> /xb0/xba <CJK>
++<U98F4> /xb0/xbb <CJK>
++<U7D62> /xb0/xbc <CJK>
++<U7DBE> /xb0/xbd <CJK>
++<U9B8E> /xb0/xbe <CJK>
++<U6216> /xb0/xbf <CJK>
++<U7C9F> /xb0/xc0 <CJK>
++<U88B7> /xb0/xc1 <CJK>
++<U5B89> /xb0/xc2 <CJK>
++<U5EB5> /xb0/xc3 <CJK>
++<U6309> /xb0/xc4 <CJK>
++<U6697> /xb0/xc5 <CJK>
++<U6848> /xb0/xc6 <CJK>
++<U95C7> /xb0/xc7 <CJK>
++<U978D> /xb0/xc8 <CJK>
++<U674F> /xb0/xc9 <CJK>
++<U4EE5> /xb0/xca <CJK>
++<U4F0A> /xb0/xcb <CJK>
++<U4F4D> /xb0/xcc <CJK>
++<U4F9D> /xb0/xcd <CJK>
++<U5049> /xb0/xce <CJK>
++<U56F2> /xb0/xcf <CJK>
++<U5937> /xb0/xd0 <CJK>
++<U59D4> /xb0/xd1 <CJK>
++<U5A01> /xb0/xd2 <CJK>
++<U5C09> /xb0/xd3 <CJK>
++<U60DF> /xb0/xd4 <CJK>
++<U610F> /xb0/xd5 <CJK>
++<U6170> /xb0/xd6 <CJK>
++<U6613> /xb0/xd7 <CJK>
++<U6905> /xb0/xd8 <CJK>
++<U70BA> /xb0/xd9 <CJK>
++<U754F> /xb0/xda <CJK>
++<U7570> /xb0/xdb <CJK>
++<U79FB> /xb0/xdc <CJK>
++<U7DAD> /xb0/xdd <CJK>
++<U7DEF> /xb0/xde <CJK>
++<U80C3> /xb0/xdf <CJK>
++<U840E> /xb0/xe0 <CJK>
++<U8863> /xb0/xe1 <CJK>
++<U8B02> /xb0/xe2 <CJK>
++<U9055> /xb0/xe3 <CJK>
++<U907A> /xb0/xe4 <CJK>
++<U533B> /xb0/xe5 <CJK>
++<U4E95> /xb0/xe6 <CJK>
++<U4EA5> /xb0/xe7 <CJK>
++<U57DF> /xb0/xe8 <CJK>
++<U80B2> /xb0/xe9 <CJK>
++<U90C1> /xb0/xea <CJK>
++<U78EF> /xb0/xeb <CJK>
++<U4E00> /xb0/xec <CJK>
++<U58F1> /xb0/xed <CJK>
++<U6EA2> /xb0/xee <CJK>
++<U9038> /xb0/xef <CJK>
++<U7A32> /xb0/xf0 <CJK>
++<U8328> /xb0/xf1 <CJK>
++<U828B> /xb0/xf2 <CJK>
++<U9C2F> /xb0/xf3 <CJK>
++<U5141> /xb0/xf4 <CJK>
++<U5370> /xb0/xf5 <CJK>
++<U54BD> /xb0/xf6 <CJK>
++<U54E1> /xb0/xf7 <CJK>
++<U56E0> /xb0/xf8 <CJK>
++<U59FB> /xb0/xf9 <CJK>
++<U5F15> /xb0/xfa <CJK>
++<U98F2> /xb0/xfb <CJK>
++<U6DEB> /xb0/xfc <CJK>
++<U80E4> /xb0/xfd <CJK>
++<U852D> /xb0/xfe <CJK>
++<U9662> /xb1/xa1 <CJK>
++<U9670> /xb1/xa2 <CJK>
++<U96A0> /xb1/xa3 <CJK>
++<U97FB> /xb1/xa4 <CJK>
++<U540B> /xb1/xa5 <CJK>
++<U53F3> /xb1/xa6 <CJK>
++<U5B87> /xb1/xa7 <CJK>
++<U70CF> /xb1/xa8 <CJK>
++<U7FBD> /xb1/xa9 <CJK>
++<U8FC2> /xb1/xaa <CJK>
++<U96E8> /xb1/xab <CJK>
++<U536F> /xb1/xac <CJK>
++<U9D5C> /xb1/xad <CJK>
++<U7ABA> /xb1/xae <CJK>
++<U4E11> /xb1/xaf <CJK>
++<U7893> /xb1/xb0 <CJK>
++<U81FC> /xb1/xb1 <CJK>
++<U6E26> /xb1/xb2 <CJK>
++<U5618> /xb1/xb3 <CJK>
++<U5504> /xb1/xb4 <CJK>
++<U6B1D> /xb1/xb5 <CJK>
++<U851A> /xb1/xb6 <CJK>
++<U9C3B> /xb1/xb7 <CJK>
++<U59E5> /xb1/xb8 <CJK>
++<U53A9> /xb1/xb9 <CJK>
++<U6D66> /xb1/xba <CJK>
++<U74DC> /xb1/xbb <CJK>
++<U958F> /xb1/xbc <CJK>
++<U5642> /xb1/xbd <CJK>
++<U4E91> /xb1/xbe <CJK>
++<U904B> /xb1/xbf <CJK>
++<U96F2> /xb1/xc0 <CJK>
++<U834F> /xb1/xc1 <CJK>
++<U990C> /xb1/xc2 <CJK>
++<U53E1> /xb1/xc3 <CJK>
++<U55B6> /xb1/xc4 <CJK>
++<U5B30> /xb1/xc5 <CJK>
++<U5F71> /xb1/xc6 <CJK>
++<U6620> /xb1/xc7 <CJK>
++<U66F3> /xb1/xc8 <CJK>
++<U6804> /xb1/xc9 <CJK>
++<U6C38> /xb1/xca <CJK>
++<U6CF3> /xb1/xcb <CJK>
++<U6D29> /xb1/xcc <CJK>
++<U745B> /xb1/xcd <CJK>
++<U76C8> /xb1/xce <CJK>
++<U7A4E> /xb1/xcf <CJK>
++<U9834> /xb1/xd0 <CJK>
++<U82F1> /xb1/xd1 <CJK>
++<U885B> /xb1/xd2 <CJK>
++<U8A60> /xb1/xd3 <CJK>
++<U92ED> /xb1/xd4 <CJK>
++<U6DB2> /xb1/xd5 <CJK>
++<U75AB> /xb1/xd6 <CJK>
++<U76CA> /xb1/xd7 <CJK>
++<U99C5> /xb1/xd8 <CJK>
++<U60A6> /xb1/xd9 <CJK>
++<U8B01> /xb1/xda <CJK>
++<U8D8A> /xb1/xdb <CJK>
++<U95B2> /xb1/xdc <CJK>
++<U698E> /xb1/xdd <CJK>
++<U53AD> /xb1/xde <CJK>
++<U5186> /xb1/xdf <CJK>
++<U5712> /xb1/xe0 <CJK>
++<U5830> /xb1/xe1 <CJK>
++<U5944> /xb1/xe2 <CJK>
++<U5BB4> /xb1/xe3 <CJK>
++<U5EF6> /xb1/xe4 <CJK>
++<U6028> /xb1/xe5 <CJK>
++<U63A9> /xb1/xe6 <CJK>
++<U63F4> /xb1/xe7 <CJK>
++<U6CBF> /xb1/xe8 <CJK>
++<U6F14> /xb1/xe9 <CJK>
++<U708E> /xb1/xea <CJK>
++<U7114> /xb1/xeb <CJK>
++<U7159> /xb1/xec <CJK>
++<U71D5> /xb1/xed <CJK>
++<U733F> /xb1/xee <CJK>
++<U7E01> /xb1/xef <CJK>
++<U8276> /xb1/xf0 <CJK>
++<U82D1> /xb1/xf1 <CJK>
++<U8597> /xb1/xf2 <CJK>
++<U9060> /xb1/xf3 <CJK>
++<U925B> /xb1/xf4 <CJK>
++<U9D1B> /xb1/xf5 <CJK>
++<U5869> /xb1/xf6 <CJK>
++<U65BC> /xb1/xf7 <CJK>
++<U6C5A> /xb1/xf8 <CJK>
++<U7525> /xb1/xf9 <CJK>
++<U51F9> /xb1/xfa <CJK>
++<U592E> /xb1/xfb <CJK>
++<U5965> /xb1/xfc <CJK>
++<U5F80> /xb1/xfd <CJK>
++<U5FDC> /xb1/xfe <CJK>
++<U62BC> /xb2/xa1 <CJK>
++<U65FA> /xb2/xa2 <CJK>
++<U6A2A> /xb2/xa3 <CJK>
++<U6B27> /xb2/xa4 <CJK>
++<U6BB4> /xb2/xa5 <CJK>
++<U738B> /xb2/xa6 <CJK>
++<U7FC1> /xb2/xa7 <CJK>
++<U8956> /xb2/xa8 <CJK>
++<U9D2C> /xb2/xa9 <CJK>
++<U9D0E> /xb2/xaa <CJK>
++<U9EC4> /xb2/xab <CJK>
++<U5CA1> /xb2/xac <CJK>
++<U6C96> /xb2/xad <CJK>
++<U837B> /xb2/xae <CJK>
++<U5104> /xb2/xaf <CJK>
++<U5C4B> /xb2/xb0 <CJK>
++<U61B6> /xb2/xb1 <CJK>
++<U81C6> /xb2/xb2 <CJK>
++<U6876> /xb2/xb3 <CJK>
++<U7261> /xb2/xb4 <CJK>
++<U4E59> /xb2/xb5 <CJK>
++<U4FFA> /xb2/xb6 <CJK>
++<U5378> /xb2/xb7 <CJK>
++<U6069> /xb2/xb8 <CJK>
++<U6E29> /xb2/xb9 <CJK>
++<U7A4F> /xb2/xba <CJK>
++<U97F3> /xb2/xbb <CJK>
++<U4E0B> /xb2/xbc <CJK>
++<U5316> /xb2/xbd <CJK>
++<U4EEE> /xb2/xbe <CJK>
++<U4F55> /xb2/xbf <CJK>
++<U4F3D> /xb2/xc0 <CJK>
++<U4FA1> /xb2/xc1 <CJK>
++<U4F73> /xb2/xc2 <CJK>
++<U52A0> /xb2/xc3 <CJK>
++<U53EF> /xb2/xc4 <CJK>
++<U5609> /xb2/xc5 <CJK>
++<U590F> /xb2/xc6 <CJK>
++<U5AC1> /xb2/xc7 <CJK>
++<U5BB6> /xb2/xc8 <CJK>
++<U5BE1> /xb2/xc9 <CJK>
++<U79D1> /xb2/xca <CJK>
++<U6687> /xb2/xcb <CJK>
++<U679C> /xb2/xcc <CJK>
++<U67B6> /xb2/xcd <CJK>
++<U6B4C> /xb2/xce <CJK>
++<U6CB3> /xb2/xcf <CJK>
++<U706B> /xb2/xd0 <CJK>
++<U73C2> /xb2/xd1 <CJK>
++<U798D> /xb2/xd2 <CJK>
++<U79BE> /xb2/xd3 <CJK>
++<U7A3C> /xb2/xd4 <CJK>
++<U7B87> /xb2/xd5 <CJK>
++<U82B1> /xb2/xd6 <CJK>
++<U82DB> /xb2/xd7 <CJK>
++<U8304> /xb2/xd8 <CJK>
++<U8377> /xb2/xd9 <CJK>
++<U83EF> /xb2/xda <CJK>
++<U83D3> /xb2/xdb <CJK>
++<U8766> /xb2/xdc <CJK>
++<U8AB2> /xb2/xdd <CJK>
++<U5629> /xb2/xde <CJK>
++<U8CA8> /xb2/xdf <CJK>
++<U8FE6> /xb2/xe0 <CJK>
++<U904E> /xb2/xe1 <CJK>
++<U971E> /xb2/xe2 <CJK>
++<U868A> /xb2/xe3 <CJK>
++<U4FC4> /xb2/xe4 <CJK>
++<U5CE8> /xb2/xe5 <CJK>
++<U6211> /xb2/xe6 <CJK>
++<U7259> /xb2/xe7 <CJK>
++<U753B> /xb2/xe8 <CJK>
++<U81E5> /xb2/xe9 <CJK>
++<U82BD> /xb2/xea <CJK>
++<U86FE> /xb2/xeb <CJK>
++<U8CC0> /xb2/xec <CJK>
++<U96C5> /xb2/xed <CJK>
++<U9913> /xb2/xee <CJK>
++<U99D5> /xb2/xef <CJK>
++<U4ECB> /xb2/xf0 <CJK>
++<U4F1A> /xb2/xf1 <CJK>
++<U89E3> /xb2/xf2 <CJK>
++<U56DE> /xb2/xf3 <CJK>
++<U584A> /xb2/xf4 <CJK>
++<U58CA> /xb2/xf5 <CJK>
++<U5EFB> /xb2/xf6 <CJK>
++<U5FEB> /xb2/xf7 <CJK>
++<U602A> /xb2/xf8 <CJK>
++<U6094> /xb2/xf9 <CJK>
++<U6062> /xb2/xfa <CJK>
++<U61D0> /xb2/xfb <CJK>
++<U6212> /xb2/xfc <CJK>
++<U62D0> /xb2/xfd <CJK>
++<U6539> /xb2/xfe <CJK>
++<U9B41> /xb3/xa1 <CJK>
++<U6666> /xb3/xa2 <CJK>
++<U68B0> /xb3/xa3 <CJK>
++<U6D77> /xb3/xa4 <CJK>
++<U7070> /xb3/xa5 <CJK>
++<U754C> /xb3/xa6 <CJK>
++<U7686> /xb3/xa7 <CJK>
++<U7D75> /xb3/xa8 <CJK>
++<U82A5> /xb3/xa9 <CJK>
++<U87F9> /xb3/xaa <CJK>
++<U958B> /xb3/xab <CJK>
++<U968E> /xb3/xac <CJK>
++<U8C9D> /xb3/xad <CJK>
++<U51F1> /xb3/xae <CJK>
++<U52BE> /xb3/xaf <CJK>
++<U5916> /xb3/xb0 <CJK>
++<U54B3> /xb3/xb1 <CJK>
++<U5BB3> /xb3/xb2 <CJK>
++<U5D16> /xb3/xb3 <CJK>
++<U6168> /xb3/xb4 <CJK>
++<U6982> /xb3/xb5 <CJK>
++<U6DAF> /xb3/xb6 <CJK>
++<U788D> /xb3/xb7 <CJK>
++<U84CB> /xb3/xb8 <CJK>
++<U8857> /xb3/xb9 <CJK>
++<U8A72> /xb3/xba <CJK>
++<U93A7> /xb3/xbb <CJK>
++<U9AB8> /xb3/xbc <CJK>
++<U6D6C> /xb3/xbd <CJK>
++<U99A8> /xb3/xbe <CJK>
++<U86D9> /xb3/xbf <CJK>
++<U57A3> /xb3/xc0 <CJK>
++<U67FF> /xb3/xc1 <CJK>
++<U86CE> /xb3/xc2 <CJK>
++<U920E> /xb3/xc3 <CJK>
++<U5283> /xb3/xc4 <CJK>
++<U5687> /xb3/xc5 <CJK>
++<U5404> /xb3/xc6 <CJK>
++<U5ED3> /xb3/xc7 <CJK>
++<U62E1> /xb3/xc8 <CJK>
++<U64B9> /xb3/xc9 <CJK>
++<U683C> /xb3/xca <CJK>
++<U6838> /xb3/xcb <CJK>
++<U6BBB> /xb3/xcc <CJK>
++<U7372> /xb3/xcd <CJK>
++<U78BA> /xb3/xce <CJK>
++<U7A6B> /xb3/xcf <CJK>
++<U899A> /xb3/xd0 <CJK>
++<U89D2> /xb3/xd1 <CJK>
++<U8D6B> /xb3/xd2 <CJK>
++<U8F03> /xb3/xd3 <CJK>
++<U90ED> /xb3/xd4 <CJK>
++<U95A3> /xb3/xd5 <CJK>
++<U9694> /xb3/xd6 <CJK>
++<U9769> /xb3/xd7 <CJK>
++<U5B66> /xb3/xd8 <CJK>
++<U5CB3> /xb3/xd9 <CJK>
++<U697D> /xb3/xda <CJK>
++<U984D> /xb3/xdb <CJK>
++<U984E> /xb3/xdc <CJK>
++<U639B> /xb3/xdd <CJK>
++<U7B20> /xb3/xde <CJK>
++<U6A2B> /xb3/xdf <CJK>
++<U6A7F> /xb3/xe0 <CJK>
++<U68B6> /xb3/xe1 <CJK>
++<U9C0D> /xb3/xe2 <CJK>
++<U6F5F> /xb3/xe3 <CJK>
++<U5272> /xb3/xe4 <CJK>
++<U559D> /xb3/xe5 <CJK>
++<U6070> /xb3/xe6 <CJK>
++<U62EC> /xb3/xe7 <CJK>
++<U6D3B> /xb3/xe8 <CJK>
++<U6E07> /xb3/xe9 <CJK>
++<U6ED1> /xb3/xea <CJK>
++<U845B> /xb3/xeb <CJK>
++<U8910> /xb3/xec <CJK>
++<U8F44> /xb3/xed <CJK>
++<U4E14> /xb3/xee <CJK>
++<U9C39> /xb3/xef <CJK>
++<U53F6> /xb3/xf0 <CJK>
++<U691B> /xb3/xf1 <CJK>
++<U6A3A> /xb3/xf2 <CJK>
++<U9784> /xb3/xf3 <CJK>
++<U682A> /xb3/xf4 <CJK>
++<U515C> /xb3/xf5 <CJK>
++<U7AC3> /xb3/xf6 <CJK>
++<U84B2> /xb3/xf7 <CJK>
++<U91DC> /xb3/xf8 <CJK>
++<U938C> /xb3/xf9 <CJK>
++<U565B> /xb3/xfa <CJK>
++<U9D28> /xb3/xfb <CJK>
++<U6822> /xb3/xfc <CJK>
++<U8305> /xb3/xfd <CJK>
++<U8431> /xb3/xfe <CJK>
++<U7CA5> /xb4/xa1 <CJK>
++<U5208> /xb4/xa2 <CJK>
++<U82C5> /xb4/xa3 <CJK>
++<U74E6> /xb4/xa4 <CJK>
++<U4E7E> /xb4/xa5 <CJK>
++<U4F83> /xb4/xa6 <CJK>
++<U51A0> /xb4/xa7 <CJK>
++<U5BD2> /xb4/xa8 <CJK>
++<U520A> /xb4/xa9 <CJK>
++<U52D8> /xb4/xaa <CJK>
++<U52E7> /xb4/xab <CJK>
++<U5DFB> /xb4/xac <CJK>
++<U559A> /xb4/xad <CJK>
++<U582A> /xb4/xae <CJK>
++<U59E6> /xb4/xaf <CJK>
++<U5B8C> /xb4/xb0 <CJK>
++<U5B98> /xb4/xb1 <CJK>
++<U5BDB> /xb4/xb2 <CJK>
++<U5E72> /xb4/xb3 <CJK>
++<U5E79> /xb4/xb4 <CJK>
++<U60A3> /xb4/xb5 <CJK>
++<U611F> /xb4/xb6 <CJK>
++<U6163> /xb4/xb7 <CJK>
++<U61BE> /xb4/xb8 <CJK>
++<U63DB> /xb4/xb9 <CJK>
++<U6562> /xb4/xba <CJK>
++<U67D1> /xb4/xbb <CJK>
++<U6853> /xb4/xbc <CJK>
++<U68FA> /xb4/xbd <CJK>
++<U6B3E> /xb4/xbe <CJK>
++<U6B53> /xb4/xbf <CJK>
++<U6C57> /xb4/xc0 <CJK>
++<U6F22> /xb4/xc1 <CJK>
++<U6F97> /xb4/xc2 <CJK>
++<U6F45> /xb4/xc3 <CJK>
++<U74B0> /xb4/xc4 <CJK>
++<U7518> /xb4/xc5 <CJK>
++<U76E3> /xb4/xc6 <CJK>
++<U770B> /xb4/xc7 <CJK>
++<U7AFF> /xb4/xc8 <CJK>
++<U7BA1> /xb4/xc9 <CJK>
++<U7C21> /xb4/xca <CJK>
++<U7DE9> /xb4/xcb <CJK>
++<U7F36> /xb4/xcc <CJK>
++<U7FF0> /xb4/xcd <CJK>
++<U809D> /xb4/xce <CJK>
++<U8266> /xb4/xcf <CJK>
++<U839E> /xb4/xd0 <CJK>
++<U89B3> /xb4/xd1 <CJK>
++<U8ACC> /xb4/xd2 <CJK>
++<U8CAB> /xb4/xd3 <CJK>
++<U9084> /xb4/xd4 <CJK>
++<U9451> /xb4/xd5 <CJK>
++<U9593> /xb4/xd6 <CJK>
++<U9591> /xb4/xd7 <CJK>
++<U95A2> /xb4/xd8 <CJK>
++<U9665> /xb4/xd9 <CJK>
++<U97D3> /xb4/xda <CJK>
++<U9928> /xb4/xdb <CJK>
++<U8218> /xb4/xdc <CJK>
++<U4E38> /xb4/xdd <CJK>
++<U542B> /xb4/xde <CJK>
++<U5CB8> /xb4/xdf <CJK>
++<U5DCC> /xb4/xe0 <CJK>
++<U73A9> /xb4/xe1 <CJK>
++<U764C> /xb4/xe2 <CJK>
++<U773C> /xb4/xe3 <CJK>
++<U5CA9> /xb4/xe4 <CJK>
++<U7FEB> /xb4/xe5 <CJK>
++<U8D0B> /xb4/xe6 <CJK>
++<U96C1> /xb4/xe7 <CJK>
++<U9811> /xb4/xe8 <CJK>
++<U9854> /xb4/xe9 <CJK>
++<U9858> /xb4/xea <CJK>
++<U4F01> /xb4/xeb <CJK>
++<U4F0E> /xb4/xec <CJK>
++<U5371> /xb4/xed <CJK>
++<U559C> /xb4/xee <CJK>
++<U5668> /xb4/xef <CJK>
++<U57FA> /xb4/xf0 <CJK>
++<U5947> /xb4/xf1 <CJK>
++<U5B09> /xb4/xf2 <CJK>
++<U5BC4> /xb4/xf3 <CJK>
++<U5C90> /xb4/xf4 <CJK>
++<U5E0C> /xb4/xf5 <CJK>
++<U5E7E> /xb4/xf6 <CJK>
++<U5FCC> /xb4/xf7 <CJK>
++<U63EE> /xb4/xf8 <CJK>
++<U673A> /xb4/xf9 <CJK>
++<U65D7> /xb4/xfa <CJK>
++<U65E2> /xb4/xfb <CJK>
++<U671F> /xb4/xfc <CJK>
++<U68CB> /xb4/xfd <CJK>
++<U68C4> /xb4/xfe <CJK>
++<U6A5F> /xb5/xa1 <CJK>
++<U5E30> /xb5/xa2 <CJK>
++<U6BC5> /xb5/xa3 <CJK>
++<U6C17> /xb5/xa4 <CJK>
++<U6C7D> /xb5/xa5 <CJK>
++<U757F> /xb5/xa6 <CJK>
++<U7948> /xb5/xa7 <CJK>
++<U5B63> /xb5/xa8 <CJK>
++<U7A00> /xb5/xa9 <CJK>
++<U7D00> /xb5/xaa <CJK>
++<U5FBD> /xb5/xab <CJK>
++<U898F> /xb5/xac <CJK>
++<U8A18> /xb5/xad <CJK>
++<U8CB4> /xb5/xae <CJK>
++<U8D77> /xb5/xaf <CJK>
++<U8ECC> /xb5/xb0 <CJK>
++<U8F1D> /xb5/xb1 <CJK>
++<U98E2> /xb5/xb2 <CJK>
++<U9A0E> /xb5/xb3 <CJK>
++<U9B3C> /xb5/xb4 <CJK>
++<U4E80> /xb5/xb5 <CJK>
++<U507D> /xb5/xb6 <CJK>
++<U5100> /xb5/xb7 <CJK>
++<U5993> /xb5/xb8 <CJK>
++<U5B9C> /xb5/xb9 <CJK>
++<U622F> /xb5/xba <CJK>
++<U6280> /xb5/xbb <CJK>
++<U64EC> /xb5/xbc <CJK>
++<U6B3A> /xb5/xbd <CJK>
++<U72A0> /xb5/xbe <CJK>
++<U7591> /xb5/xbf <CJK>
++<U7947> /xb5/xc0 <CJK>
++<U7FA9> /xb5/xc1 <CJK>
++<U87FB> /xb5/xc2 <CJK>
++<U8ABC> /xb5/xc3 <CJK>
++<U8B70> /xb5/xc4 <CJK>
++<U63AC> /xb5/xc5 <CJK>
++<U83CA> /xb5/xc6 <CJK>
++<U97A0> /xb5/xc7 <CJK>
++<U5409> /xb5/xc8 <CJK>
++<U5403> /xb5/xc9 <CJK>
++<U55AB> /xb5/xca <CJK>
++<U6854> /xb5/xcb <CJK>
++<U6A58> /xb5/xcc <CJK>
++<U8A70> /xb5/xcd <CJK>
++<U7827> /xb5/xce <CJK>
++<U6775> /xb5/xcf <CJK>
++<U9ECD> /xb5/xd0 <CJK>
++<U5374> /xb5/xd1 <CJK>
++<U5BA2> /xb5/xd2 <CJK>
++<U811A> /xb5/xd3 <CJK>
++<U8650> /xb5/xd4 <CJK>
++<U9006> /xb5/xd5 <CJK>
++<U4E18> /xb5/xd6 <CJK>
++<U4E45> /xb5/xd7 <CJK>
++<U4EC7> /xb5/xd8 <CJK>
++<U4F11> /xb5/xd9 <CJK>
++<U53CA> /xb5/xda <CJK>
++<U5438> /xb5/xdb <CJK>
++<U5BAE> /xb5/xdc <CJK>
++<U5F13> /xb5/xdd <CJK>
++<U6025> /xb5/xde <CJK>
++<U6551> /xb5/xdf <CJK>
++<U673D> /xb5/xe0 <CJK>
++<U6C42> /xb5/xe1 <CJK>
++<U6C72> /xb5/xe2 <CJK>
++<U6CE3> /xb5/xe3 <CJK>
++<U7078> /xb5/xe4 <CJK>
++<U7403> /xb5/xe5 <CJK>
++<U7A76> /xb5/xe6 <CJK>
++<U7AAE> /xb5/xe7 <CJK>
++<U7B08> /xb5/xe8 <CJK>
++<U7D1A> /xb5/xe9 <CJK>
++<U7CFE> /xb5/xea <CJK>
++<U7D66> /xb5/xeb <CJK>
++<U65E7> /xb5/xec <CJK>
++<U725B> /xb5/xed <CJK>
++<U53BB> /xb5/xee <CJK>
++<U5C45> /xb5/xef <CJK>
++<U5DE8> /xb5/xf0 <CJK>
++<U62D2> /xb5/xf1 <CJK>
++<U62E0> /xb5/xf2 <CJK>
++<U6319> /xb5/xf3 <CJK>
++<U6E20> /xb5/xf4 <CJK>
++<U865A> /xb5/xf5 <CJK>
++<U8A31> /xb5/xf6 <CJK>
++<U8DDD> /xb5/xf7 <CJK>
++<U92F8> /xb5/xf8 <CJK>
++<U6F01> /xb5/xf9 <CJK>
++<U79A6> /xb5/xfa <CJK>
++<U9B5A> /xb5/xfb <CJK>
++<U4EA8> /xb5/xfc <CJK>
++<U4EAB> /xb5/xfd <CJK>
++<U4EAC> /xb5/xfe <CJK>
++<U4F9B> /xb6/xa1 <CJK>
++<U4FA0> /xb6/xa2 <CJK>
++<U50D1> /xb6/xa3 <CJK>
++<U5147> /xb6/xa4 <CJK>
++<U7AF6> /xb6/xa5 <CJK>
++<U5171> /xb6/xa6 <CJK>
++<U51F6> /xb6/xa7 <CJK>
++<U5354> /xb6/xa8 <CJK>
++<U5321> /xb6/xa9 <CJK>
++<U537F> /xb6/xaa <CJK>
++<U53EB> /xb6/xab <CJK>
++<U55AC> /xb6/xac <CJK>
++<U5883> /xb6/xad <CJK>
++<U5CE1> /xb6/xae <CJK>
++<U5F37> /xb6/xaf <CJK>
++<U5F4A> /xb6/xb0 <CJK>
++<U602F> /xb6/xb1 <CJK>
++<U6050> /xb6/xb2 <CJK>
++<U606D> /xb6/xb3 <CJK>
++<U631F> /xb6/xb4 <CJK>
++<U6559> /xb6/xb5 <CJK>
++<U6A4B> /xb6/xb6 <CJK>
++<U6CC1> /xb6/xb7 <CJK>
++<U72C2> /xb6/xb8 <CJK>
++<U72ED> /xb6/xb9 <CJK>
++<U77EF> /xb6/xba <CJK>
++<U80F8> /xb6/xbb <CJK>
++<U8105> /xb6/xbc <CJK>
++<U8208> /xb6/xbd <CJK>
++<U854E> /xb6/xbe <CJK>
++<U90F7> /xb6/xbf <CJK>
++<U93E1> /xb6/xc0 <CJK>
++<U97FF> /xb6/xc1 <CJK>
++<U9957> /xb6/xc2 <CJK>
++<U9A5A> /xb6/xc3 <CJK>
++<U4EF0> /xb6/xc4 <CJK>
++<U51DD> /xb6/xc5 <CJK>
++<U5C2D> /xb6/xc6 <CJK>
++<U6681> /xb6/xc7 <CJK>
++<U696D> /xb6/xc8 <CJK>
++<U5C40> /xb6/xc9 <CJK>
++<U66F2> /xb6/xca <CJK>
++<U6975> /xb6/xcb <CJK>
++<U7389> /xb6/xcc <CJK>
++<U6850> /xb6/xcd <CJK>
++<U7C81> /xb6/xce <CJK>
++<U50C5> /xb6/xcf <CJK>
++<U52E4> /xb6/xd0 <CJK>
++<U5747> /xb6/xd1 <CJK>
++<U5DFE> /xb6/xd2 <CJK>
++<U9326> /xb6/xd3 <CJK>
++<U65A4> /xb6/xd4 <CJK>
++<U6B23> /xb6/xd5 <CJK>
++<U6B3D> /xb6/xd6 <CJK>
++<U7434> /xb6/xd7 <CJK>
++<U7981> /xb6/xd8 <CJK>
++<U79BD> /xb6/xd9 <CJK>
++<U7B4B> /xb6/xda <CJK>
++<U7DCA> /xb6/xdb <CJK>
++<U82B9> /xb6/xdc <CJK>
++<U83CC> /xb6/xdd <CJK>
++<U887F> /xb6/xde <CJK>
++<U895F> /xb6/xdf <CJK>
++<U8B39> /xb6/xe0 <CJK>
++<U8FD1> /xb6/xe1 <CJK>
++<U91D1> /xb6/xe2 <CJK>
++<U541F> /xb6/xe3 <CJK>
++<U9280> /xb6/xe4 <CJK>
++<U4E5D> /xb6/xe5 <CJK>
++<U5036> /xb6/xe6 <CJK>
++<U53E5> /xb6/xe7 <CJK>
++<U533A> /xb6/xe8 <CJK>
++<U72D7> /xb6/xe9 <CJK>
++<U7396> /xb6/xea <CJK>
++<U77E9> /xb6/xeb <CJK>
++<U82E6> /xb6/xec <CJK>
++<U8EAF> /xb6/xed <CJK>
++<U99C6> /xb6/xee <CJK>
++<U99C8> /xb6/xef <CJK>
++<U99D2> /xb6/xf0 <CJK>
++<U5177> /xb6/xf1 <CJK>
++<U611A> /xb6/xf2 <CJK>
++<U865E> /xb6/xf3 <CJK>
++<U55B0> /xb6/xf4 <CJK>
++<U7A7A> /xb6/xf5 <CJK>
++<U5076> /xb6/xf6 <CJK>
++<U5BD3> /xb6/xf7 <CJK>
++<U9047> /xb6/xf8 <CJK>
++<U9685> /xb6/xf9 <CJK>
++<U4E32> /xb6/xfa <CJK>
++<U6ADB> /xb6/xfb <CJK>
++<U91E7> /xb6/xfc <CJK>
++<U5C51> /xb6/xfd <CJK>
++<U5C48> /xb6/xfe <CJK>
++<U6398> /xb7/xa1 <CJK>
++<U7A9F> /xb7/xa2 <CJK>
++<U6C93> /xb7/xa3 <CJK>
++<U9774> /xb7/xa4 <CJK>
++<U8F61> /xb7/xa5 <CJK>
++<U7AAA> /xb7/xa6 <CJK>
++<U718A> /xb7/xa7 <CJK>
++<U9688> /xb7/xa8 <CJK>
++<U7C82> /xb7/xa9 <CJK>
++<U6817> /xb7/xaa <CJK>
++<U7E70> /xb7/xab <CJK>
++<U6851> /xb7/xac <CJK>
++<U936C> /xb7/xad <CJK>
++<U52F2> /xb7/xae <CJK>
++<U541B> /xb7/xaf <CJK>
++<U85AB> /xb7/xb0 <CJK>
++<U8A13> /xb7/xb1 <CJK>
++<U7FA4> /xb7/xb2 <CJK>
++<U8ECD> /xb7/xb3 <CJK>
++<U90E1> /xb7/xb4 <CJK>
++<U5366> /xb7/xb5 <CJK>
++<U8888> /xb7/xb6 <CJK>
++<U7941> /xb7/xb7 <CJK>
++<U4FC2> /xb7/xb8 <CJK>
++<U50BE> /xb7/xb9 <CJK>
++<U5211> /xb7/xba <CJK>
++<U5144> /xb7/xbb <CJK>
++<U5553> /xb7/xbc <CJK>
++<U572D> /xb7/xbd <CJK>
++<U73EA> /xb7/xbe <CJK>
++<U578B> /xb7/xbf <CJK>
++<U5951> /xb7/xc0 <CJK>
++<U5F62> /xb7/xc1 <CJK>
++<U5F84> /xb7/xc2 <CJK>
++<U6075> /xb7/xc3 <CJK>
++<U6176> /xb7/xc4 <CJK>
++<U6167> /xb7/xc5 <CJK>
++<U61A9> /xb7/xc6 <CJK>
++<U63B2> /xb7/xc7 <CJK>
++<U643A> /xb7/xc8 <CJK>
++<U656C> /xb7/xc9 <CJK>
++<U666F> /xb7/xca <CJK>
++<U6842> /xb7/xcb <CJK>
++<U6E13> /xb7/xcc <CJK>
++<U7566> /xb7/xcd <CJK>
++<U7A3D> /xb7/xce <CJK>
++<U7CFB> /xb7/xcf <CJK>
++<U7D4C> /xb7/xd0 <CJK>
++<U7D99> /xb7/xd1 <CJK>
++<U7E4B> /xb7/xd2 <CJK>
++<U7F6B> /xb7/xd3 <CJK>
++<U830E> /xb7/xd4 <CJK>
++<U834A> /xb7/xd5 <CJK>
++<U86CD> /xb7/xd6 <CJK>
++<U8A08> /xb7/xd7 <CJK>
++<U8A63> /xb7/xd8 <CJK>
++<U8B66> /xb7/xd9 <CJK>
++<U8EFD> /xb7/xda <CJK>
++<U981A> /xb7/xdb <CJK>
++<U9D8F> /xb7/xdc <CJK>
++<U82B8> /xb7/xdd <CJK>
++<U8FCE> /xb7/xde <CJK>
++<U9BE8> /xb7/xdf <CJK>
++<U5287> /xb7/xe0 <CJK>
++<U621F> /xb7/xe1 <CJK>
++<U6483> /xb7/xe2 <CJK>
++<U6FC0> /xb7/xe3 <CJK>
++<U9699> /xb7/xe4 <CJK>
++<U6841> /xb7/xe5 <CJK>
++<U5091> /xb7/xe6 <CJK>
++<U6B20> /xb7/xe7 <CJK>
++<U6C7A> /xb7/xe8 <CJK>
++<U6F54> /xb7/xe9 <CJK>
++<U7A74> /xb7/xea <CJK>
++<U7D50> /xb7/xeb <CJK>
++<U8840> /xb7/xec <CJK>
++<U8A23> /xb7/xed <CJK>
++<U6708> /xb7/xee <CJK>
++<U4EF6> /xb7/xef <CJK>
++<U5039> /xb7/xf0 <CJK>
++<U5026> /xb7/xf1 <CJK>
++<U5065> /xb7/xf2 <CJK>
++<U517C> /xb7/xf3 <CJK>
++<U5238> /xb7/xf4 <CJK>
++<U5263> /xb7/xf5 <CJK>
++<U55A7> /xb7/xf6 <CJK>
++<U570F> /xb7/xf7 <CJK>
++<U5805> /xb7/xf8 <CJK>
++<U5ACC> /xb7/xf9 <CJK>
++<U5EFA> /xb7/xfa <CJK>
++<U61B2> /xb7/xfb <CJK>
++<U61F8> /xb7/xfc <CJK>
++<U62F3> /xb7/xfd <CJK>
++<U6372> /xb7/xfe <CJK>
++<U691C> /xb8/xa1 <CJK>
++<U6A29> /xb8/xa2 <CJK>
++<U727D> /xb8/xa3 <CJK>
++<U72AC> /xb8/xa4 <CJK>
++<U732E> /xb8/xa5 <CJK>
++<U7814> /xb8/xa6 <CJK>
++<U786F> /xb8/xa7 <CJK>
++<U7D79> /xb8/xa8 <CJK>
++<U770C> /xb8/xa9 <CJK>
++<U80A9> /xb8/xaa <CJK>
++<U898B> /xb8/xab <CJK>
++<U8B19> /xb8/xac <CJK>
++<U8CE2> /xb8/xad <CJK>
++<U8ED2> /xb8/xae <CJK>
++<U9063> /xb8/xaf <CJK>
++<U9375> /xb8/xb0 <CJK>
++<U967A> /xb8/xb1 <CJK>
++<U9855> /xb8/xb2 <CJK>
++<U9A13> /xb8/xb3 <CJK>
++<U9E78> /xb8/xb4 <CJK>
++<U5143> /xb8/xb5 <CJK>
++<U539F> /xb8/xb6 <CJK>
++<U53B3> /xb8/xb7 <CJK>
++<U5E7B> /xb8/xb8 <CJK>
++<U5F26> /xb8/xb9 <CJK>
++<U6E1B> /xb8/xba <CJK>
++<U6E90> /xb8/xbb <CJK>
++<U7384> /xb8/xbc <CJK>
++<U73FE> /xb8/xbd <CJK>
++<U7D43> /xb8/xbe <CJK>
++<U8237> /xb8/xbf <CJK>
++<U8A00> /xb8/xc0 <CJK>
++<U8AFA> /xb8/xc1 <CJK>
++<U9650> /xb8/xc2 <CJK>
++<U4E4E> /xb8/xc3 <CJK>
++<U500B> /xb8/xc4 <CJK>
++<U53E4> /xb8/xc5 <CJK>
++<U547C> /xb8/xc6 <CJK>
++<U56FA> /xb8/xc7 <CJK>
++<U59D1> /xb8/xc8 <CJK>
++<U5B64> /xb8/xc9 <CJK>
++<U5DF1> /xb8/xca <CJK>
++<U5EAB> /xb8/xcb <CJK>
++<U5F27> /xb8/xcc <CJK>
++<U6238> /xb8/xcd <CJK>
++<U6545> /xb8/xce <CJK>
++<U67AF> /xb8/xcf <CJK>
++<U6E56> /xb8/xd0 <CJK>
++<U72D0> /xb8/xd1 <CJK>
++<U7CCA> /xb8/xd2 <CJK>
++<U88B4> /xb8/xd3 <CJK>
++<U80A1> /xb8/xd4 <CJK>
++<U80E1> /xb8/xd5 <CJK>
++<U83F0> /xb8/xd6 <CJK>
++<U864E> /xb8/xd7 <CJK>
++<U8A87> /xb8/xd8 <CJK>
++<U8DE8> /xb8/xd9 <CJK>
++<U9237> /xb8/xda <CJK>
++<U96C7> /xb8/xdb <CJK>
++<U9867> /xb8/xdc <CJK>
++<U9F13> /xb8/xdd <CJK>
++<U4E94> /xb8/xde <CJK>
++<U4E92> /xb8/xdf <CJK>
++<U4F0D> /xb8/xe0 <CJK>
++<U5348> /xb8/xe1 <CJK>
++<U5449> /xb8/xe2 <CJK>
++<U543E> /xb8/xe3 <CJK>
++<U5A2F> /xb8/xe4 <CJK>
++<U5F8C> /xb8/xe5 <CJK>
++<U5FA1> /xb8/xe6 <CJK>
++<U609F> /xb8/xe7 <CJK>
++<U68A7> /xb8/xe8 <CJK>
++<U6A8E> /xb8/xe9 <CJK>
++<U745A> /xb8/xea <CJK>
++<U7881> /xb8/xeb <CJK>
++<U8A9E> /xb8/xec <CJK>
++<U8AA4> /xb8/xed <CJK>
++<U8B77> /xb8/xee <CJK>
++<U9190> /xb8/xef <CJK>
++<U4E5E> /xb8/xf0 <CJK>
++<U9BC9> /xb8/xf1 <CJK>
++<U4EA4> /xb8/xf2 <CJK>
++<U4F7C> /xb8/xf3 <CJK>
++<U4FAF> /xb8/xf4 <CJK>
++<U5019> /xb8/xf5 <CJK>
++<U5016> /xb8/xf6 <CJK>
++<U5149> /xb8/xf7 <CJK>
++<U516C> /xb8/xf8 <CJK>
++<U529F> /xb8/xf9 <CJK>
++<U52B9> /xb8/xfa <CJK>
++<U52FE> /xb8/xfb <CJK>
++<U539A> /xb8/xfc <CJK>
++<U53E3> /xb8/xfd <CJK>
++<U5411> /xb8/xfe <CJK>
++<U540E> /xb9/xa1 <CJK>
++<U5589> /xb9/xa2 <CJK>
++<U5751> /xb9/xa3 <CJK>
++<U57A2> /xb9/xa4 <CJK>
++<U597D> /xb9/xa5 <CJK>
++<U5B54> /xb9/xa6 <CJK>
++<U5B5D> /xb9/xa7 <CJK>
++<U5B8F> /xb9/xa8 <CJK>
++<U5DE5> /xb9/xa9 <CJK>
++<U5DE7> /xb9/xaa <CJK>
++<U5DF7> /xb9/xab <CJK>
++<U5E78> /xb9/xac <CJK>
++<U5E83> /xb9/xad <CJK>
++<U5E9A> /xb9/xae <CJK>
++<U5EB7> /xb9/xaf <CJK>
++<U5F18> /xb9/xb0 <CJK>
++<U6052> /xb9/xb1 <CJK>
++<U614C> /xb9/xb2 <CJK>
++<U6297> /xb9/xb3 <CJK>
++<U62D8> /xb9/xb4 <CJK>
++<U63A7> /xb9/xb5 <CJK>
++<U653B> /xb9/xb6 <CJK>
++<U6602> /xb9/xb7 <CJK>
++<U6643> /xb9/xb8 <CJK>
++<U66F4> /xb9/xb9 <CJK>
++<U676D> /xb9/xba <CJK>
++<U6821> /xb9/xbb <CJK>
++<U6897> /xb9/xbc <CJK>
++<U69CB> /xb9/xbd <CJK>
++<U6C5F> /xb9/xbe <CJK>
++<U6D2A> /xb9/xbf <CJK>
++<U6D69> /xb9/xc0 <CJK>
++<U6E2F> /xb9/xc1 <CJK>
++<U6E9D> /xb9/xc2 <CJK>
++<U7532> /xb9/xc3 <CJK>
++<U7687> /xb9/xc4 <CJK>
++<U786C> /xb9/xc5 <CJK>
++<U7A3F> /xb9/xc6 <CJK>
++<U7CE0> /xb9/xc7 <CJK>
++<U7D05> /xb9/xc8 <CJK>
++<U7D18> /xb9/xc9 <CJK>
++<U7D5E> /xb9/xca <CJK>
++<U7DB1> /xb9/xcb <CJK>
++<U8015> /xb9/xcc <CJK>
++<U8003> /xb9/xcd <CJK>
++<U80AF> /xb9/xce <CJK>
++<U80B1> /xb9/xcf <CJK>
++<U8154> /xb9/xd0 <CJK>
++<U818F> /xb9/xd1 <CJK>
++<U822A> /xb9/xd2 <CJK>
++<U8352> /xb9/xd3 <CJK>
++<U884C> /xb9/xd4 <CJK>
++<U8861> /xb9/xd5 <CJK>
++<U8B1B> /xb9/xd6 <CJK>
++<U8CA2> /xb9/xd7 <CJK>
++<U8CFC> /xb9/xd8 <CJK>
++<U90CA> /xb9/xd9 <CJK>
++<U9175> /xb9/xda <CJK>
++<U9271> /xb9/xdb <CJK>
++<U783F> /xb9/xdc <CJK>
++<U92FC> /xb9/xdd <CJK>
++<U95A4> /xb9/xde <CJK>
++<U964D> /xb9/xdf <CJK>
++<U9805> /xb9/xe0 <CJK>
++<U9999> /xb9/xe1 <CJK>
++<U9AD8> /xb9/xe2 <CJK>
++<U9D3B> /xb9/xe3 <CJK>
++<U525B> /xb9/xe4 <CJK>
++<U52AB> /xb9/xe5 <CJK>
++<U53F7> /xb9/xe6 <CJK>
++<U5408> /xb9/xe7 <CJK>
++<U58D5> /xb9/xe8 <CJK>
++<U62F7> /xb9/xe9 <CJK>
++<U6FE0> /xb9/xea <CJK>
++<U8C6A> /xb9/xeb <CJK>
++<U8F5F> /xb9/xec <CJK>
++<U9EB9> /xb9/xed <CJK>
++<U514B> /xb9/xee <CJK>
++<U523B> /xb9/xef <CJK>
++<U544A> /xb9/xf0 <CJK>
++<U56FD> /xb9/xf1 <CJK>
++<U7A40> /xb9/xf2 <CJK>
++<U9177> /xb9/xf3 <CJK>
++<U9D60> /xb9/xf4 <CJK>
++<U9ED2> /xb9/xf5 <CJK>
++<U7344> /xb9/xf6 <CJK>
++<U6F09> /xb9/xf7 <CJK>
++<U8170> /xb9/xf8 <CJK>
++<U7511> /xb9/xf9 <CJK>
++<U5FFD> /xb9/xfa <CJK>
++<U60DA> /xb9/xfb <CJK>
++<U9AA8> /xb9/xfc <CJK>
++<U72DB> /xb9/xfd <CJK>
++<U8FBC> /xb9/xfe <CJK>
++<U6B64> /xba/xa1 <CJK>
++<U9803> /xba/xa2 <CJK>
++<U4ECA> /xba/xa3 <CJK>
++<U56F0> /xba/xa4 <CJK>
++<U5764> /xba/xa5 <CJK>
++<U58BE> /xba/xa6 <CJK>
++<U5A5A> /xba/xa7 <CJK>
++<U6068> /xba/xa8 <CJK>
++<U61C7> /xba/xa9 <CJK>
++<U660F> /xba/xaa <CJK>
++<U6606> /xba/xab <CJK>
++<U6839> /xba/xac <CJK>
++<U68B1> /xba/xad <CJK>
++<U6DF7> /xba/xae <CJK>
++<U75D5> /xba/xaf <CJK>
++<U7D3A> /xba/xb0 <CJK>
++<U826E> /xba/xb1 <CJK>
++<U9B42> /xba/xb2 <CJK>
++<U4E9B> /xba/xb3 <CJK>
++<U4F50> /xba/xb4 <CJK>
++<U53C9> /xba/xb5 <CJK>
++<U5506> /xba/xb6 <CJK>
++<U5D6F> /xba/xb7 <CJK>
++<U5DE6> /xba/xb8 <CJK>
++<U5DEE> /xba/xb9 <CJK>
++<U67FB> /xba/xba <CJK>
++<U6C99> /xba/xbb <CJK>
++<U7473> /xba/xbc <CJK>
++<U7802> /xba/xbd <CJK>
++<U8A50> /xba/xbe <CJK>
++<U9396> /xba/xbf <CJK>
++<U88DF> /xba/xc0 <CJK>
++<U5750> /xba/xc1 <CJK>
++<U5EA7> /xba/xc2 <CJK>
++<U632B> /xba/xc3 <CJK>
++<U50B5> /xba/xc4 <CJK>
++<U50AC> /xba/xc5 <CJK>
++<U518D> /xba/xc6 <CJK>
++<U6700> /xba/xc7 <CJK>
++<U54C9> /xba/xc8 <CJK>
++<U585E> /xba/xc9 <CJK>
++<U59BB> /xba/xca <CJK>
++<U5BB0> /xba/xcb <CJK>
++<U5F69> /xba/xcc <CJK>
++<U624D> /xba/xcd <CJK>
++<U63A1> /xba/xce <CJK>
++<U683D> /xba/xcf <CJK>
++<U6B73> /xba/xd0 <CJK>
++<U6E08> /xba/xd1 <CJK>
++<U707D> /xba/xd2 <CJK>
++<U91C7> /xba/xd3 <CJK>
++<U7280> /xba/xd4 <CJK>
++<U7815> /xba/xd5 <CJK>
++<U7826> /xba/xd6 <CJK>
++<U796D> /xba/xd7 <CJK>
++<U658E> /xba/xd8 <CJK>
++<U7D30> /xba/xd9 <CJK>
++<U83DC> /xba/xda <CJK>
++<U88C1> /xba/xdb <CJK>
++<U8F09> /xba/xdc <CJK>
++<U969B> /xba/xdd <CJK>
++<U5264> /xba/xde <CJK>
++<U5728> /xba/xdf <CJK>
++<U6750> /xba/xe0 <CJK>
++<U7F6A> /xba/xe1 <CJK>
++<U8CA1> /xba/xe2 <CJK>
++<U51B4> /xba/xe3 <CJK>
++<U5742> /xba/xe4 <CJK>
++<U962A> /xba/xe5 <CJK>
++<U583A> /xba/xe6 <CJK>
++<U698A> /xba/xe7 <CJK>
++<U80B4> /xba/xe8 <CJK>
++<U54B2> /xba/xe9 <CJK>
++<U5D0E> /xba/xea <CJK>
++<U57FC> /xba/xeb <CJK>
++<U7895> /xba/xec <CJK>
++<U9DFA> /xba/xed <CJK>
++<U4F5C> /xba/xee <CJK>
++<U524A> /xba/xef <CJK>
++<U548B> /xba/xf0 <CJK>
++<U643E> /xba/xf1 <CJK>
++<U6628> /xba/xf2 <CJK>
++<U6714> /xba/xf3 <CJK>
++<U67F5> /xba/xf4 <CJK>
++<U7A84> /xba/xf5 <CJK>
++<U7B56> /xba/xf6 <CJK>
++<U7D22> /xba/xf7 <CJK>
++<U932F> /xba/xf8 <CJK>
++<U685C> /xba/xf9 <CJK>
++<U9BAD> /xba/xfa <CJK>
++<U7B39> /xba/xfb <CJK>
++<U5319> /xba/xfc <CJK>
++<U518A> /xba/xfd <CJK>
++<U5237> /xba/xfe <CJK>
++<U5BDF> /xbb/xa1 <CJK>
++<U62F6> /xbb/xa2 <CJK>
++<U64AE> /xbb/xa3 <CJK>
++<U64E6> /xbb/xa4 <CJK>
++<U672D> /xbb/xa5 <CJK>
++<U6BBA> /xbb/xa6 <CJK>
++<U85A9> /xbb/xa7 <CJK>
++<U96D1> /xbb/xa8 <CJK>
++<U7690> /xbb/xa9 <CJK>
++<U9BD6> /xbb/xaa <CJK>
++<U634C> /xbb/xab <CJK>
++<U9306> /xbb/xac <CJK>
++<U9BAB> /xbb/xad <CJK>
++<U76BF> /xbb/xae <CJK>
++<U6652> /xbb/xaf <CJK>
++<U4E09> /xbb/xb0 <CJK>
++<U5098> /xbb/xb1 <CJK>
++<U53C2> /xbb/xb2 <CJK>
++<U5C71> /xbb/xb3 <CJK>
++<U60E8> /xbb/xb4 <CJK>
++<U6492> /xbb/xb5 <CJK>
++<U6563> /xbb/xb6 <CJK>
++<U685F> /xbb/xb7 <CJK>
++<U71E6> /xbb/xb8 <CJK>
++<U73CA> /xbb/xb9 <CJK>
++<U7523> /xbb/xba <CJK>
++<U7B97> /xbb/xbb <CJK>
++<U7E82> /xbb/xbc <CJK>
++<U8695> /xbb/xbd <CJK>
++<U8B83> /xbb/xbe <CJK>
++<U8CDB> /xbb/xbf <CJK>
++<U9178> /xbb/xc0 <CJK>
++<U9910> /xbb/xc1 <CJK>
++<U65AC> /xbb/xc2 <CJK>
++<U66AB> /xbb/xc3 <CJK>
++<U6B8B> /xbb/xc4 <CJK>
++<U4ED5> /xbb/xc5 <CJK>
++<U4ED4> /xbb/xc6 <CJK>
++<U4F3A> /xbb/xc7 <CJK>
++<U4F7F> /xbb/xc8 <CJK>
++<U523A> /xbb/xc9 <CJK>
++<U53F8> /xbb/xca <CJK>
++<U53F2> /xbb/xcb <CJK>
++<U55E3> /xbb/xcc <CJK>
++<U56DB> /xbb/xcd <CJK>
++<U58EB> /xbb/xce <CJK>
++<U59CB> /xbb/xcf <CJK>
++<U59C9> /xbb/xd0 <CJK>
++<U59FF> /xbb/xd1 <CJK>
++<U5B50> /xbb/xd2 <CJK>
++<U5C4D> /xbb/xd3 <CJK>
++<U5E02> /xbb/xd4 <CJK>
++<U5E2B> /xbb/xd5 <CJK>
++<U5FD7> /xbb/xd6 <CJK>
++<U601D> /xbb/xd7 <CJK>
++<U6307> /xbb/xd8 <CJK>
++<U652F> /xbb/xd9 <CJK>
++<U5B5C> /xbb/xda <CJK>
++<U65AF> /xbb/xdb <CJK>
++<U65BD> /xbb/xdc <CJK>
++<U65E8> /xbb/xdd <CJK>
++<U679D> /xbb/xde <CJK>
++<U6B62> /xbb/xdf <CJK>
++<U6B7B> /xbb/xe0 <CJK>
++<U6C0F> /xbb/xe1 <CJK>
++<U7345> /xbb/xe2 <CJK>
++<U7949> /xbb/xe3 <CJK>
++<U79C1> /xbb/xe4 <CJK>
++<U7CF8> /xbb/xe5 <CJK>
++<U7D19> /xbb/xe6 <CJK>
++<U7D2B> /xbb/xe7 <CJK>
++<U80A2> /xbb/xe8 <CJK>
++<U8102> /xbb/xe9 <CJK>
++<U81F3> /xbb/xea <CJK>
++<U8996> /xbb/xeb <CJK>
++<U8A5E> /xbb/xec <CJK>
++<U8A69> /xbb/xed <CJK>
++<U8A66> /xbb/xee <CJK>
++<U8A8C> /xbb/xef <CJK>
++<U8AEE> /xbb/xf0 <CJK>
++<U8CC7> /xbb/xf1 <CJK>
++<U8CDC> /xbb/xf2 <CJK>
++<U96CC> /xbb/xf3 <CJK>
++<U98FC> /xbb/xf4 <CJK>
++<U6B6F> /xbb/xf5 <CJK>
++<U4E8B> /xbb/xf6 <CJK>
++<U4F3C> /xbb/xf7 <CJK>
++<U4F8D> /xbb/xf8 <CJK>
++<U5150> /xbb/xf9 <CJK>
++<U5B57> /xbb/xfa <CJK>
++<U5BFA> /xbb/xfb <CJK>
++<U6148> /xbb/xfc <CJK>
++<U6301> /xbb/xfd <CJK>
++<U6642> /xbb/xfe <CJK>
++<U6B21> /xbc/xa1 <CJK>
++<U6ECB> /xbc/xa2 <CJK>
++<U6CBB> /xbc/xa3 <CJK>
++<U723E> /xbc/xa4 <CJK>
++<U74BD> /xbc/xa5 <CJK>
++<U75D4> /xbc/xa6 <CJK>
++<U78C1> /xbc/xa7 <CJK>
++<U793A> /xbc/xa8 <CJK>
++<U800C> /xbc/xa9 <CJK>
++<U8033> /xbc/xaa <CJK>
++<U81EA> /xbc/xab <CJK>
++<U8494> /xbc/xac <CJK>
++<U8F9E> /xbc/xad <CJK>
++<U6C50> /xbc/xae <CJK>
++<U9E7F> /xbc/xaf <CJK>
++<U5F0F> /xbc/xb0 <CJK>
++<U8B58> /xbc/xb1 <CJK>
++<U9D2B> /xbc/xb2 <CJK>
++<U7AFA> /xbc/xb3 <CJK>
++<U8EF8> /xbc/xb4 <CJK>
++<U5B8D> /xbc/xb5 <CJK>
++<U96EB> /xbc/xb6 <CJK>
++<U4E03> /xbc/xb7 <CJK>
++<U53F1> /xbc/xb8 <CJK>
++<U57F7> /xbc/xb9 <CJK>
++<U5931> /xbc/xba <CJK>
++<U5AC9> /xbc/xbb <CJK>
++<U5BA4> /xbc/xbc <CJK>
++<U6089> /xbc/xbd <CJK>
++<U6E7F> /xbc/xbe <CJK>
++<U6F06> /xbc/xbf <CJK>
++<U75BE> /xbc/xc0 <CJK>
++<U8CEA> /xbc/xc1 <CJK>
++<U5B9F> /xbc/xc2 <CJK>
++<U8500> /xbc/xc3 <CJK>
++<U7BE0> /xbc/xc4 <CJK>
++<U5072> /xbc/xc5 <CJK>
++<U67F4> /xbc/xc6 <CJK>
++<U829D> /xbc/xc7 <CJK>
++<U5C61> /xbc/xc8 <CJK>
++<U854A> /xbc/xc9 <CJK>
++<U7E1E> /xbc/xca <CJK>
++<U820E> /xbc/xcb <CJK>
++<U5199> /xbc/xcc <CJK>
++<U5C04> /xbc/xcd <CJK>
++<U6368> /xbc/xce <CJK>
++<U8D66> /xbc/xcf <CJK>
++<U659C> /xbc/xd0 <CJK>
++<U716E> /xbc/xd1 <CJK>
++<U793E> /xbc/xd2 <CJK>
++<U7D17> /xbc/xd3 <CJK>
++<U8005> /xbc/xd4 <CJK>
++<U8B1D> /xbc/xd5 <CJK>
++<U8ECA> /xbc/xd6 <CJK>
++<U906E> /xbc/xd7 <CJK>
++<U86C7> /xbc/xd8 <CJK>
++<U90AA> /xbc/xd9 <CJK>
++<U501F> /xbc/xda <CJK>
++<U52FA> /xbc/xdb <CJK>
++<U5C3A> /xbc/xdc <CJK>
++<U6753> /xbc/xdd <CJK>
++<U707C> /xbc/xde <CJK>
++<U7235> /xbc/xdf <CJK>
++<U914C> /xbc/xe0 <CJK>
++<U91C8> /xbc/xe1 <CJK>
++<U932B> /xbc/xe2 <CJK>
++<U82E5> /xbc/xe3 <CJK>
++<U5BC2> /xbc/xe4 <CJK>
++<U5F31> /xbc/xe5 <CJK>
++<U60F9> /xbc/xe6 <CJK>
++<U4E3B> /xbc/xe7 <CJK>
++<U53D6> /xbc/xe8 <CJK>
++<U5B88> /xbc/xe9 <CJK>
++<U624B> /xbc/xea <CJK>
++<U6731> /xbc/xeb <CJK>
++<U6B8A> /xbc/xec <CJK>
++<U72E9> /xbc/xed <CJK>
++<U73E0> /xbc/xee <CJK>
++<U7A2E> /xbc/xef <CJK>
++<U816B> /xbc/xf0 <CJK>
++<U8DA3> /xbc/xf1 <CJK>
++<U9152> /xbc/xf2 <CJK>
++<U9996> /xbc/xf3 <CJK>
++<U5112> /xbc/xf4 <CJK>
++<U53D7> /xbc/xf5 <CJK>
++<U546A> /xbc/xf6 <CJK>
++<U5BFF> /xbc/xf7 <CJK>
++<U6388> /xbc/xf8 <CJK>
++<U6A39> /xbc/xf9 <CJK>
++<U7DAC> /xbc/xfa <CJK>
++<U9700> /xbc/xfb <CJK>
++<U56DA> /xbc/xfc <CJK>
++<U53CE> /xbc/xfd <CJK>
++<U5468> /xbc/xfe <CJK>
++<U5B97> /xbd/xa1 <CJK>
++<U5C31> /xbd/xa2 <CJK>
++<U5DDE> /xbd/xa3 <CJK>
++<U4FEE> /xbd/xa4 <CJK>
++<U6101> /xbd/xa5 <CJK>
++<U62FE> /xbd/xa6 <CJK>
++<U6D32> /xbd/xa7 <CJK>
++<U79C0> /xbd/xa8 <CJK>
++<U79CB> /xbd/xa9 <CJK>
++<U7D42> /xbd/xaa <CJK>
++<U7E4D> /xbd/xab <CJK>
++<U7FD2> /xbd/xac <CJK>
++<U81ED> /xbd/xad <CJK>
++<U821F> /xbd/xae <CJK>
++<U8490> /xbd/xaf <CJK>
++<U8846> /xbd/xb0 <CJK>
++<U8972> /xbd/xb1 <CJK>
++<U8B90> /xbd/xb2 <CJK>
++<U8E74> /xbd/xb3 <CJK>
++<U8F2F> /xbd/xb4 <CJK>
++<U9031> /xbd/xb5 <CJK>
++<U914B> /xbd/xb6 <CJK>
++<U916C> /xbd/xb7 <CJK>
++<U96C6> /xbd/xb8 <CJK>
++<U919C> /xbd/xb9 <CJK>
++<U4EC0> /xbd/xba <CJK>
++<U4F4F> /xbd/xbb <CJK>
++<U5145> /xbd/xbc <CJK>
++<U5341> /xbd/xbd <CJK>
++<U5F93> /xbd/xbe <CJK>
++<U620E> /xbd/xbf <CJK>
++<U67D4> /xbd/xc0 <CJK>
++<U6C41> /xbd/xc1 <CJK>
++<U6E0B> /xbd/xc2 <CJK>
++<U7363> /xbd/xc3 <CJK>
++<U7E26> /xbd/xc4 <CJK>
++<U91CD> /xbd/xc5 <CJK>
++<U9283> /xbd/xc6 <CJK>
++<U53D4> /xbd/xc7 <CJK>
++<U5919> /xbd/xc8 <CJK>
++<U5BBF> /xbd/xc9 <CJK>
++<U6DD1> /xbd/xca <CJK>
++<U795D> /xbd/xcb <CJK>
++<U7E2E> /xbd/xcc <CJK>
++<U7C9B> /xbd/xcd <CJK>
++<U587E> /xbd/xce <CJK>
++<U719F> /xbd/xcf <CJK>
++<U51FA> /xbd/xd0 <CJK>
++<U8853> /xbd/xd1 <CJK>
++<U8FF0> /xbd/xd2 <CJK>
++<U4FCA> /xbd/xd3 <CJK>
++<U5CFB> /xbd/xd4 <CJK>
++<U6625> /xbd/xd5 <CJK>
++<U77AC> /xbd/xd6 <CJK>
++<U7AE3> /xbd/xd7 <CJK>
++<U821C> /xbd/xd8 <CJK>
++<U99FF> /xbd/xd9 <CJK>
++<U51C6> /xbd/xda <CJK>
++<U5FAA> /xbd/xdb <CJK>
++<U65EC> /xbd/xdc <CJK>
++<U696F> /xbd/xdd <CJK>
++<U6B89> /xbd/xde <CJK>
++<U6DF3> /xbd/xdf <CJK>
++<U6E96> /xbd/xe0 <CJK>
++<U6F64> /xbd/xe1 <CJK>
++<U76FE> /xbd/xe2 <CJK>
++<U7D14> /xbd/xe3 <CJK>
++<U5DE1> /xbd/xe4 <CJK>
++<U9075> /xbd/xe5 <CJK>
++<U9187> /xbd/xe6 <CJK>
++<U9806> /xbd/xe7 <CJK>
++<U51E6> /xbd/xe8 <CJK>
++<U521D> /xbd/xe9 <CJK>
++<U6240> /xbd/xea <CJK>
++<U6691> /xbd/xeb <CJK>
++<U66D9> /xbd/xec <CJK>
++<U6E1A> /xbd/xed <CJK>
++<U5EB6> /xbd/xee <CJK>
++<U7DD2> /xbd/xef <CJK>
++<U7F72> /xbd/xf0 <CJK>
++<U66F8> /xbd/xf1 <CJK>
++<U85AF> /xbd/xf2 <CJK>
++<U85F7> /xbd/xf3 <CJK>
++<U8AF8> /xbd/xf4 <CJK>
++<U52A9> /xbd/xf5 <CJK>
++<U53D9> /xbd/xf6 <CJK>
++<U5973> /xbd/xf7 <CJK>
++<U5E8F> /xbd/xf8 <CJK>
++<U5F90> /xbd/xf9 <CJK>
++<U6055> /xbd/xfa <CJK>
++<U92E4> /xbd/xfb <CJK>
++<U9664> /xbd/xfc <CJK>
++<U50B7> /xbd/xfd <CJK>
++<U511F> /xbd/xfe <CJK>
++<U52DD> /xbe/xa1 <CJK>
++<U5320> /xbe/xa2 <CJK>
++<U5347> /xbe/xa3 <CJK>
++<U53EC> /xbe/xa4 <CJK>
++<U54E8> /xbe/xa5 <CJK>
++<U5546> /xbe/xa6 <CJK>
++<U5531> /xbe/xa7 <CJK>
++<U5617> /xbe/xa8 <CJK>
++<U5968> /xbe/xa9 <CJK>
++<U59BE> /xbe/xaa <CJK>
++<U5A3C> /xbe/xab <CJK>
++<U5BB5> /xbe/xac <CJK>
++<U5C06> /xbe/xad <CJK>
++<U5C0F> /xbe/xae <CJK>
++<U5C11> /xbe/xaf <CJK>
++<U5C1A> /xbe/xb0 <CJK>
++<U5E84> /xbe/xb1 <CJK>
++<U5E8A> /xbe/xb2 <CJK>
++<U5EE0> /xbe/xb3 <CJK>
++<U5F70> /xbe/xb4 <CJK>
++<U627F> /xbe/xb5 <CJK>
++<U6284> /xbe/xb6 <CJK>
++<U62DB> /xbe/xb7 <CJK>
++<U638C> /xbe/xb8 <CJK>
++<U6377> /xbe/xb9 <CJK>
++<U6607> /xbe/xba <CJK>
++<U660C> /xbe/xbb <CJK>
++<U662D> /xbe/xbc <CJK>
++<U6676> /xbe/xbd <CJK>
++<U677E> /xbe/xbe <CJK>
++<U68A2> /xbe/xbf <CJK>
++<U6A1F> /xbe/xc0 <CJK>
++<U6A35> /xbe/xc1 <CJK>
++<U6CBC> /xbe/xc2 <CJK>
++<U6D88> /xbe/xc3 <CJK>
++<U6E09> /xbe/xc4 <CJK>
++<U6E58> /xbe/xc5 <CJK>
++<U713C> /xbe/xc6 <CJK>
++<U7126> /xbe/xc7 <CJK>
++<U7167> /xbe/xc8 <CJK>
++<U75C7> /xbe/xc9 <CJK>
++<U7701> /xbe/xca <CJK>
++<U785D> /xbe/xcb <CJK>
++<U7901> /xbe/xcc <CJK>
++<U7965> /xbe/xcd <CJK>
++<U79F0> /xbe/xce <CJK>
++<U7AE0> /xbe/xcf <CJK>
++<U7B11> /xbe/xd0 <CJK>
++<U7CA7> /xbe/xd1 <CJK>
++<U7D39> /xbe/xd2 <CJK>
++<U8096> /xbe/xd3 <CJK>
++<U83D6> /xbe/xd4 <CJK>
++<U848B> /xbe/xd5 <CJK>
++<U8549> /xbe/xd6 <CJK>
++<U885D> /xbe/xd7 <CJK>
++<U88F3> /xbe/xd8 <CJK>
++<U8A1F> /xbe/xd9 <CJK>
++<U8A3C> /xbe/xda <CJK>
++<U8A54> /xbe/xdb <CJK>
++<U8A73> /xbe/xdc <CJK>
++<U8C61> /xbe/xdd <CJK>
++<U8CDE> /xbe/xde <CJK>
++<U91A4> /xbe/xdf <CJK>
++<U9266> /xbe/xe0 <CJK>
++<U937E> /xbe/xe1 <CJK>
++<U9418> /xbe/xe2 <CJK>
++<U969C> /xbe/xe3 <CJK>
++<U9798> /xbe/xe4 <CJK>
++<U4E0A> /xbe/xe5 <CJK>
++<U4E08> /xbe/xe6 <CJK>
++<U4E1E> /xbe/xe7 <CJK>
++<U4E57> /xbe/xe8 <CJK>
++<U5197> /xbe/xe9 <CJK>
++<U5270> /xbe/xea <CJK>
++<U57CE> /xbe/xeb <CJK>
++<U5834> /xbe/xec <CJK>
++<U58CC> /xbe/xed <CJK>
++<U5B22> /xbe/xee <CJK>
++<U5E38> /xbe/xef <CJK>
++<U60C5> /xbe/xf0 <CJK>
++<U64FE> /xbe/xf1 <CJK>
++<U6761> /xbe/xf2 <CJK>
++<U6756> /xbe/xf3 <CJK>
++<U6D44> /xbe/xf4 <CJK>
++<U72B6> /xbe/xf5 <CJK>
++<U7573> /xbe/xf6 <CJK>
++<U7A63> /xbe/xf7 <CJK>
++<U84B8> /xbe/xf8 <CJK>
++<U8B72> /xbe/xf9 <CJK>
++<U91B8> /xbe/xfa <CJK>
++<U9320> /xbe/xfb <CJK>
++<U5631> /xbe/xfc <CJK>
++<U57F4> /xbe/xfd <CJK>
++<U98FE> /xbe/xfe <CJK>
++<U62ED> /xbf/xa1 <CJK>
++<U690D> /xbf/xa2 <CJK>
++<U6B96> /xbf/xa3 <CJK>
++<U71ED> /xbf/xa4 <CJK>
++<U7E54> /xbf/xa5 <CJK>
++<U8077> /xbf/xa6 <CJK>
++<U8272> /xbf/xa7 <CJK>
++<U89E6> /xbf/xa8 <CJK>
++<U98DF> /xbf/xa9 <CJK>
++<U8755> /xbf/xaa <CJK>
++<U8FB1> /xbf/xab <CJK>
++<U5C3B> /xbf/xac <CJK>
++<U4F38> /xbf/xad <CJK>
++<U4FE1> /xbf/xae <CJK>
++<U4FB5> /xbf/xaf <CJK>
++<U5507> /xbf/xb0 <CJK>
++<U5A20> /xbf/xb1 <CJK>
++<U5BDD> /xbf/xb2 <CJK>
++<U5BE9> /xbf/xb3 <CJK>
++<U5FC3> /xbf/xb4 <CJK>
++<U614E> /xbf/xb5 <CJK>
++<U632F> /xbf/xb6 <CJK>
++<U65B0> /xbf/xb7 <CJK>
++<U664B> /xbf/xb8 <CJK>
++<U68EE> /xbf/xb9 <CJK>
++<U699B> /xbf/xba <CJK>
++<U6D78> /xbf/xbb <CJK>
++<U6DF1> /xbf/xbc <CJK>
++<U7533> /xbf/xbd <CJK>
++<U75B9> /xbf/xbe <CJK>
++<U771F> /xbf/xbf <CJK>
++<U795E> /xbf/xc0 <CJK>
++<U79E6> /xbf/xc1 <CJK>
++<U7D33> /xbf/xc2 <CJK>
++<U81E3> /xbf/xc3 <CJK>
++<U82AF> /xbf/xc4 <CJK>
++<U85AA> /xbf/xc5 <CJK>
++<U89AA> /xbf/xc6 <CJK>
++<U8A3A> /xbf/xc7 <CJK>
++<U8EAB> /xbf/xc8 <CJK>
++<U8F9B> /xbf/xc9 <CJK>
++<U9032> /xbf/xca <CJK>
++<U91DD> /xbf/xcb <CJK>
++<U9707> /xbf/xcc <CJK>
++<U4EBA> /xbf/xcd <CJK>
++<U4EC1> /xbf/xce <CJK>
++<U5203> /xbf/xcf <CJK>
++<U5875> /xbf/xd0 <CJK>
++<U58EC> /xbf/xd1 <CJK>
++<U5C0B> /xbf/xd2 <CJK>
++<U751A> /xbf/xd3 <CJK>
++<U5C3D> /xbf/xd4 <CJK>
++<U814E> /xbf/xd5 <CJK>
++<U8A0A> /xbf/xd6 <CJK>
++<U8FC5> /xbf/xd7 <CJK>
++<U9663> /xbf/xd8 <CJK>
++<U976D> /xbf/xd9 <CJK>
++<U7B25> /xbf/xda <CJK>
++<U8ACF> /xbf/xdb <CJK>
++<U9808> /xbf/xdc <CJK>
++<U9162> /xbf/xdd <CJK>
++<U56F3> /xbf/xde <CJK>
++<U53A8> /xbf/xdf <CJK>
++<U9017> /xbf/xe0 <CJK>
++<U5439> /xbf/xe1 <CJK>
++<U5782> /xbf/xe2 <CJK>
++<U5E25> /xbf/xe3 <CJK>
++<U63A8> /xbf/xe4 <CJK>
++<U6C34> /xbf/xe5 <CJK>
++<U708A> /xbf/xe6 <CJK>
++<U7761> /xbf/xe7 <CJK>
++<U7C8B> /xbf/xe8 <CJK>
++<U7FE0> /xbf/xe9 <CJK>
++<U8870> /xbf/xea <CJK>
++<U9042> /xbf/xeb <CJK>
++<U9154> /xbf/xec <CJK>
++<U9310> /xbf/xed <CJK>
++<U9318> /xbf/xee <CJK>
++<U968F> /xbf/xef <CJK>
++<U745E> /xbf/xf0 <CJK>
++<U9AC4> /xbf/xf1 <CJK>
++<U5D07> /xbf/xf2 <CJK>
++<U5D69> /xbf/xf3 <CJK>
++<U6570> /xbf/xf4 <CJK>
++<U67A2> /xbf/xf5 <CJK>
++<U8DA8> /xbf/xf6 <CJK>
++<U96DB> /xbf/xf7 <CJK>
++<U636E> /xbf/xf8 <CJK>
++<U6749> /xbf/xf9 <CJK>
++<U6919> /xbf/xfa <CJK>
++<U83C5> /xbf/xfb <CJK>
++<U9817> /xbf/xfc <CJK>
++<U96C0> /xbf/xfd <CJK>
++<U88FE> /xbf/xfe <CJK>
++<U6F84> /xc0/xa1 <CJK>
++<U647A> /xc0/xa2 <CJK>
++<U5BF8> /xc0/xa3 <CJK>
++<U4E16> /xc0/xa4 <CJK>
++<U702C> /xc0/xa5 <CJK>
++<U755D> /xc0/xa6 <CJK>
++<U662F> /xc0/xa7 <CJK>
++<U51C4> /xc0/xa8 <CJK>
++<U5236> /xc0/xa9 <CJK>
++<U52E2> /xc0/xaa <CJK>
++<U59D3> /xc0/xab <CJK>
++<U5F81> /xc0/xac <CJK>
++<U6027> /xc0/xad <CJK>
++<U6210> /xc0/xae <CJK>
++<U653F> /xc0/xaf <CJK>
++<U6574> /xc0/xb0 <CJK>
++<U661F> /xc0/xb1 <CJK>
++<U6674> /xc0/xb2 <CJK>
++<U68F2> /xc0/xb3 <CJK>
++<U6816> /xc0/xb4 <CJK>
++<U6B63> /xc0/xb5 <CJK>
++<U6E05> /xc0/xb6 <CJK>
++<U7272> /xc0/xb7 <CJK>
++<U751F> /xc0/xb8 <CJK>
++<U76DB> /xc0/xb9 <CJK>
++<U7CBE> /xc0/xba <CJK>
++<U8056> /xc0/xbb <CJK>
++<U58F0> /xc0/xbc <CJK>
++<U88FD> /xc0/xbd <CJK>
++<U897F> /xc0/xbe <CJK>
++<U8AA0> /xc0/xbf <CJK>
++<U8A93> /xc0/xc0 <CJK>
++<U8ACB> /xc0/xc1 <CJK>
++<U901D> /xc0/xc2 <CJK>
++<U9192> /xc0/xc3 <CJK>
++<U9752> /xc0/xc4 <CJK>
++<U9759> /xc0/xc5 <CJK>
++<U6589> /xc0/xc6 <CJK>
++<U7A0E> /xc0/xc7 <CJK>
++<U8106> /xc0/xc8 <CJK>
++<U96BB> /xc0/xc9 <CJK>
++<U5E2D> /xc0/xca <CJK>
++<U60DC> /xc0/xcb <CJK>
++<U621A> /xc0/xcc <CJK>
++<U65A5> /xc0/xcd <CJK>
++<U6614> /xc0/xce <CJK>
++<U6790> /xc0/xcf <CJK>
++<U77F3> /xc0/xd0 <CJK>
++<U7A4D> /xc0/xd1 <CJK>
++<U7C4D> /xc0/xd2 <CJK>
++<U7E3E> /xc0/xd3 <CJK>
++<U810A> /xc0/xd4 <CJK>
++<U8CAC> /xc0/xd5 <CJK>
++<U8D64> /xc0/xd6 <CJK>
++<U8DE1> /xc0/xd7 <CJK>
++<U8E5F> /xc0/xd8 <CJK>
++<U78A9> /xc0/xd9 <CJK>
++<U5207> /xc0/xda <CJK>
++<U62D9> /xc0/xdb <CJK>
++<U63A5> /xc0/xdc <CJK>
++<U6442> /xc0/xdd <CJK>
++<U6298> /xc0/xde <CJK>
++<U8A2D> /xc0/xdf <CJK>
++<U7A83> /xc0/xe0 <CJK>
++<U7BC0> /xc0/xe1 <CJK>
++<U8AAC> /xc0/xe2 <CJK>
++<U96EA> /xc0/xe3 <CJK>
++<U7D76> /xc0/xe4 <CJK>
++<U820C> /xc0/xe5 <CJK>
++<U8749> /xc0/xe6 <CJK>
++<U4ED9> /xc0/xe7 <CJK>
++<U5148> /xc0/xe8 <CJK>
++<U5343> /xc0/xe9 <CJK>
++<U5360> /xc0/xea <CJK>
++<U5BA3> /xc0/xeb <CJK>
++<U5C02> /xc0/xec <CJK>
++<U5C16> /xc0/xed <CJK>
++<U5DDD> /xc0/xee <CJK>
++<U6226> /xc0/xef <CJK>
++<U6247> /xc0/xf0 <CJK>
++<U64B0> /xc0/xf1 <CJK>
++<U6813> /xc0/xf2 <CJK>
++<U6834> /xc0/xf3 <CJK>
++<U6CC9> /xc0/xf4 <CJK>
++<U6D45> /xc0/xf5 <CJK>
++<U6D17> /xc0/xf6 <CJK>
++<U67D3> /xc0/xf7 <CJK>
++<U6F5C> /xc0/xf8 <CJK>
++<U714E> /xc0/xf9 <CJK>
++<U717D> /xc0/xfa <CJK>
++<U65CB> /xc0/xfb <CJK>
++<U7A7F> /xc0/xfc <CJK>
++<U7BAD> /xc0/xfd <CJK>
++<U7DDA> /xc0/xfe <CJK>
++<U7E4A> /xc1/xa1 <CJK>
++<U7FA8> /xc1/xa2 <CJK>
++<U817A> /xc1/xa3 <CJK>
++<U821B> /xc1/xa4 <CJK>
++<U8239> /xc1/xa5 <CJK>
++<U85A6> /xc1/xa6 <CJK>
++<U8A6E> /xc1/xa7 <CJK>
++<U8CCE> /xc1/xa8 <CJK>
++<U8DF5> /xc1/xa9 <CJK>
++<U9078> /xc1/xaa <CJK>
++<U9077> /xc1/xab <CJK>
++<U92AD> /xc1/xac <CJK>
++<U9291> /xc1/xad <CJK>
++<U9583> /xc1/xae <CJK>
++<U9BAE> /xc1/xaf <CJK>
++<U524D> /xc1/xb0 <CJK>
++<U5584> /xc1/xb1 <CJK>
++<U6F38> /xc1/xb2 <CJK>
++<U7136> /xc1/xb3 <CJK>
++<U5168> /xc1/xb4 <CJK>
++<U7985> /xc1/xb5 <CJK>
++<U7E55> /xc1/xb6 <CJK>
++<U81B3> /xc1/xb7 <CJK>
++<U7CCE> /xc1/xb8 <CJK>
++<U564C> /xc1/xb9 <CJK>
++<U5851> /xc1/xba <CJK>
++<U5CA8> /xc1/xbb <CJK>
++<U63AA> /xc1/xbc <CJK>
++<U66FE> /xc1/xbd <CJK>
++<U66FD> /xc1/xbe <CJK>
++<U695A> /xc1/xbf <CJK>
++<U72D9> /xc1/xc0 <CJK>
++<U758F> /xc1/xc1 <CJK>
++<U758E> /xc1/xc2 <CJK>
++<U790E> /xc1/xc3 <CJK>
++<U7956> /xc1/xc4 <CJK>
++<U79DF> /xc1/xc5 <CJK>
++<U7C97> /xc1/xc6 <CJK>
++<U7D20> /xc1/xc7 <CJK>
++<U7D44> /xc1/xc8 <CJK>
++<U8607> /xc1/xc9 <CJK>
++<U8A34> /xc1/xca <CJK>
++<U963B> /xc1/xcb <CJK>
++<U9061> /xc1/xcc <CJK>
++<U9F20> /xc1/xcd <CJK>
++<U50E7> /xc1/xce <CJK>
++<U5275> /xc1/xcf <CJK>
++<U53CC> /xc1/xd0 <CJK>
++<U53E2> /xc1/xd1 <CJK>
++<U5009> /xc1/xd2 <CJK>
++<U55AA> /xc1/xd3 <CJK>
++<U58EE> /xc1/xd4 <CJK>
++<U594F> /xc1/xd5 <CJK>
++<U723D> /xc1/xd6 <CJK>
++<U5B8B> /xc1/xd7 <CJK>
++<U5C64> /xc1/xd8 <CJK>
++<U531D> /xc1/xd9 <CJK>
++<U60E3> /xc1/xda <CJK>
++<U60F3> /xc1/xdb <CJK>
++<U635C> /xc1/xdc <CJK>
++<U6383> /xc1/xdd <CJK>
++<U633F> /xc1/xde <CJK>
++<U63BB> /xc1/xdf <CJK>
++<U64CD> /xc1/xe0 <CJK>
++<U65E9> /xc1/xe1 <CJK>
++<U66F9> /xc1/xe2 <CJK>
++<U5DE3> /xc1/xe3 <CJK>
++<U69CD> /xc1/xe4 <CJK>
++<U69FD> /xc1/xe5 <CJK>
++<U6F15> /xc1/xe6 <CJK>
++<U71E5> /xc1/xe7 <CJK>
++<U4E89> /xc1/xe8 <CJK>
++<U75E9> /xc1/xe9 <CJK>
++<U76F8> /xc1/xea <CJK>
++<U7A93> /xc1/xeb <CJK>
++<U7CDF> /xc1/xec <CJK>
++<U7DCF> /xc1/xed <CJK>
++<U7D9C> /xc1/xee <CJK>
++<U8061> /xc1/xef <CJK>
++<U8349> /xc1/xf0 <CJK>
++<U8358> /xc1/xf1 <CJK>
++<U846C> /xc1/xf2 <CJK>
++<U84BC> /xc1/xf3 <CJK>
++<U85FB> /xc1/xf4 <CJK>
++<U88C5> /xc1/xf5 <CJK>
++<U8D70> /xc1/xf6 <CJK>
++<U9001> /xc1/xf7 <CJK>
++<U906D> /xc1/xf8 <CJK>
++<U9397> /xc1/xf9 <CJK>
++<U971C> /xc1/xfa <CJK>
++<U9A12> /xc1/xfb <CJK>
++<U50CF> /xc1/xfc <CJK>
++<U5897> /xc1/xfd <CJK>
++<U618E> /xc1/xfe <CJK>
++<U81D3> /xc2/xa1 <CJK>
++<U8535> /xc2/xa2 <CJK>
++<U8D08> /xc2/xa3 <CJK>
++<U9020> /xc2/xa4 <CJK>
++<U4FC3> /xc2/xa5 <CJK>
++<U5074> /xc2/xa6 <CJK>
++<U5247> /xc2/xa7 <CJK>
++<U5373> /xc2/xa8 <CJK>
++<U606F> /xc2/xa9 <CJK>
++<U6349> /xc2/xaa <CJK>
++<U675F> /xc2/xab <CJK>
++<U6E2C> /xc2/xac <CJK>
++<U8DB3> /xc2/xad <CJK>
++<U901F> /xc2/xae <CJK>
++<U4FD7> /xc2/xaf <CJK>
++<U5C5E> /xc2/xb0 <CJK>
++<U8CCA> /xc2/xb1 <CJK>
++<U65CF> /xc2/xb2 <CJK>
++<U7D9A> /xc2/xb3 <CJK>
++<U5352> /xc2/xb4 <CJK>
++<U8896> /xc2/xb5 <CJK>
++<U5176> /xc2/xb6 <CJK>
++<U63C3> /xc2/xb7 <CJK>
++<U5B58> /xc2/xb8 <CJK>
++<U5B6B> /xc2/xb9 <CJK>
++<U5C0A> /xc2/xba <CJK>
++<U640D> /xc2/xbb <CJK>
++<U6751> /xc2/xbc <CJK>
++<U905C> /xc2/xbd <CJK>
++<U4ED6> /xc2/xbe <CJK>
++<U591A> /xc2/xbf <CJK>
++<U592A> /xc2/xc0 <CJK>
++<U6C70> /xc2/xc1 <CJK>
++<U8A51> /xc2/xc2 <CJK>
++<U553E> /xc2/xc3 <CJK>
++<U5815> /xc2/xc4 <CJK>
++<U59A5> /xc2/xc5 <CJK>
++<U60F0> /xc2/xc6 <CJK>
++<U6253> /xc2/xc7 <CJK>
++<U67C1> /xc2/xc8 <CJK>
++<U8235> /xc2/xc9 <CJK>
++<U6955> /xc2/xca <CJK>
++<U9640> /xc2/xcb <CJK>
++<U99C4> /xc2/xcc <CJK>
++<U9A28> /xc2/xcd <CJK>
++<U4F53> /xc2/xce <CJK>
++<U5806> /xc2/xcf <CJK>
++<U5BFE> /xc2/xd0 <CJK>
++<U8010> /xc2/xd1 <CJK>
++<U5CB1> /xc2/xd2 <CJK>
++<U5E2F> /xc2/xd3 <CJK>
++<U5F85> /xc2/xd4 <CJK>
++<U6020> /xc2/xd5 <CJK>
++<U614B> /xc2/xd6 <CJK>
++<U6234> /xc2/xd7 <CJK>
++<U66FF> /xc2/xd8 <CJK>
++<U6CF0> /xc2/xd9 <CJK>
++<U6EDE> /xc2/xda <CJK>
++<U80CE> /xc2/xdb <CJK>
++<U817F> /xc2/xdc <CJK>
++<U82D4> /xc2/xdd <CJK>
++<U888B> /xc2/xde <CJK>
++<U8CB8> /xc2/xdf <CJK>
++<U9000> /xc2/xe0 <CJK>
++<U902E> /xc2/xe1 <CJK>
++<U968A> /xc2/xe2 <CJK>
++<U9EDB> /xc2/xe3 <CJK>
++<U9BDB> /xc2/xe4 <CJK>
++<U4EE3> /xc2/xe5 <CJK>
++<U53F0> /xc2/xe6 <CJK>
++<U5927> /xc2/xe7 <CJK>
++<U7B2C> /xc2/xe8 <CJK>
++<U918D> /xc2/xe9 <CJK>
++<U984C> /xc2/xea <CJK>
++<U9DF9> /xc2/xeb <CJK>
++<U6EDD> /xc2/xec <CJK>
++<U7027> /xc2/xed <CJK>
++<U5353> /xc2/xee <CJK>
++<U5544> /xc2/xef <CJK>
++<U5B85> /xc2/xf0 <CJK>
++<U6258> /xc2/xf1 <CJK>
++<U629E> /xc2/xf2 <CJK>
++<U62D3> /xc2/xf3 <CJK>
++<U6CA2> /xc2/xf4 <CJK>
++<U6FEF> /xc2/xf5 <CJK>
++<U7422> /xc2/xf6 <CJK>
++<U8A17> /xc2/xf7 <CJK>
++<U9438> /xc2/xf8 <CJK>
++<U6FC1> /xc2/xf9 <CJK>
++<U8AFE> /xc2/xfa <CJK>
++<U8338> /xc2/xfb <CJK>
++<U51E7> /xc2/xfc <CJK>
++<U86F8> /xc2/xfd <CJK>
++<U53EA> /xc2/xfe <CJK>
++<U53E9> /xc3/xa1 <CJK>
++<U4F46> /xc3/xa2 <CJK>
++<U9054> /xc3/xa3 <CJK>
++<U8FB0> /xc3/xa4 <CJK>
++<U596A> /xc3/xa5 <CJK>
++<U8131> /xc3/xa6 <CJK>
++<U5DFD> /xc3/xa7 <CJK>
++<U7AEA> /xc3/xa8 <CJK>
++<U8FBF> /xc3/xa9 <CJK>
++<U68DA> /xc3/xaa <CJK>
++<U8C37> /xc3/xab <CJK>
++<U72F8> /xc3/xac <CJK>
++<U9C48> /xc3/xad <CJK>
++<U6A3D> /xc3/xae <CJK>
++<U8AB0> /xc3/xaf <CJK>
++<U4E39> /xc3/xb0 <CJK>
++<U5358> /xc3/xb1 <CJK>
++<U5606> /xc3/xb2 <CJK>
++<U5766> /xc3/xb3 <CJK>
++<U62C5> /xc3/xb4 <CJK>
++<U63A2> /xc3/xb5 <CJK>
++<U65E6> /xc3/xb6 <CJK>
++<U6B4E> /xc3/xb7 <CJK>
++<U6DE1> /xc3/xb8 <CJK>
++<U6E5B> /xc3/xb9 <CJK>
++<U70AD> /xc3/xba <CJK>
++<U77ED> /xc3/xbb <CJK>
++<U7AEF> /xc3/xbc <CJK>
++<U7BAA> /xc3/xbd <CJK>
++<U7DBB> /xc3/xbe <CJK>
++<U803D> /xc3/xbf <CJK>
++<U80C6> /xc3/xc0 <CJK>
++<U86CB> /xc3/xc1 <CJK>
++<U8A95> /xc3/xc2 <CJK>
++<U935B> /xc3/xc3 <CJK>
++<U56E3> /xc3/xc4 <CJK>
++<U58C7> /xc3/xc5 <CJK>
++<U5F3E> /xc3/xc6 <CJK>
++<U65AD> /xc3/xc7 <CJK>
++<U6696> /xc3/xc8 <CJK>
++<U6A80> /xc3/xc9 <CJK>
++<U6BB5> /xc3/xca <CJK>
++<U7537> /xc3/xcb <CJK>
++<U8AC7> /xc3/xcc <CJK>
++<U5024> /xc3/xcd <CJK>
++<U77E5> /xc3/xce <CJK>
++<U5730> /xc3/xcf <CJK>
++<U5F1B> /xc3/xd0 <CJK>
++<U6065> /xc3/xd1 <CJK>
++<U667A> /xc3/xd2 <CJK>
++<U6C60> /xc3/xd3 <CJK>
++<U75F4> /xc3/xd4 <CJK>
++<U7A1A> /xc3/xd5 <CJK>
++<U7F6E> /xc3/xd6 <CJK>
++<U81F4> /xc3/xd7 <CJK>
++<U8718> /xc3/xd8 <CJK>
++<U9045> /xc3/xd9 <CJK>
++<U99B3> /xc3/xda <CJK>
++<U7BC9> /xc3/xdb <CJK>
++<U755C> /xc3/xdc <CJK>
++<U7AF9> /xc3/xdd <CJK>
++<U7B51> /xc3/xde <CJK>
++<U84C4> /xc3/xdf <CJK>
++<U9010> /xc3/xe0 <CJK>
++<U79E9> /xc3/xe1 <CJK>
++<U7A92> /xc3/xe2 <CJK>
++<U8336> /xc3/xe3 <CJK>
++<U5AE1> /xc3/xe4 <CJK>
++<U7740> /xc3/xe5 <CJK>
++<U4E2D> /xc3/xe6 <CJK>
++<U4EF2> /xc3/xe7 <CJK>
++<U5B99> /xc3/xe8 <CJK>
++<U5FE0> /xc3/xe9 <CJK>
++<U62BD> /xc3/xea <CJK>
++<U663C> /xc3/xeb <CJK>
++<U67F1> /xc3/xec <CJK>
++<U6CE8> /xc3/xed <CJK>
++<U866B> /xc3/xee <CJK>
++<U8877> /xc3/xef <CJK>
++<U8A3B> /xc3/xf0 <CJK>
++<U914E> /xc3/xf1 <CJK>
++<U92F3> /xc3/xf2 <CJK>
++<U99D0> /xc3/xf3 <CJK>
++<U6A17> /xc3/xf4 <CJK>
++<U7026> /xc3/xf5 <CJK>
++<U732A> /xc3/xf6 <CJK>
++<U82E7> /xc3/xf7 <CJK>
++<U8457> /xc3/xf8 <CJK>
++<U8CAF> /xc3/xf9 <CJK>
++<U4E01> /xc3/xfa <CJK>
++<U5146> /xc3/xfb <CJK>
++<U51CB> /xc3/xfc <CJK>
++<U558B> /xc3/xfd <CJK>
++<U5BF5> /xc3/xfe <CJK>
++<U5E16> /xc4/xa1 <CJK>
++<U5E33> /xc4/xa2 <CJK>
++<U5E81> /xc4/xa3 <CJK>
++<U5F14> /xc4/xa4 <CJK>
++<U5F35> /xc4/xa5 <CJK>
++<U5F6B> /xc4/xa6 <CJK>
++<U5FB4> /xc4/xa7 <CJK>
++<U61F2> /xc4/xa8 <CJK>
++<U6311> /xc4/xa9 <CJK>
++<U66A2> /xc4/xaa <CJK>
++<U671D> /xc4/xab <CJK>
++<U6F6E> /xc4/xac <CJK>
++<U7252> /xc4/xad <CJK>
++<U753A> /xc4/xae <CJK>
++<U773A> /xc4/xaf <CJK>
++<U8074> /xc4/xb0 <CJK>
++<U8139> /xc4/xb1 <CJK>
++<U8178> /xc4/xb2 <CJK>
++<U8776> /xc4/xb3 <CJK>
++<U8ABF> /xc4/xb4 <CJK>
++<U8ADC> /xc4/xb5 <CJK>
++<U8D85> /xc4/xb6 <CJK>
++<U8DF3> /xc4/xb7 <CJK>
++<U929A> /xc4/xb8 <CJK>
++<U9577> /xc4/xb9 <CJK>
++<U9802> /xc4/xba <CJK>
++<U9CE5> /xc4/xbb <CJK>
++<U52C5> /xc4/xbc <CJK>
++<U6357> /xc4/xbd <CJK>
++<U76F4> /xc4/xbe <CJK>
++<U6715> /xc4/xbf <CJK>
++<U6C88> /xc4/xc0 <CJK>
++<U73CD> /xc4/xc1 <CJK>
++<U8CC3> /xc4/xc2 <CJK>
++<U93AE> /xc4/xc3 <CJK>
++<U9673> /xc4/xc4 <CJK>
++<U6D25> /xc4/xc5 <CJK>
++<U589C> /xc4/xc6 <CJK>
++<U690E> /xc4/xc7 <CJK>
++<U69CC> /xc4/xc8 <CJK>
++<U8FFD> /xc4/xc9 <CJK>
++<U939A> /xc4/xca <CJK>
++<U75DB> /xc4/xcb <CJK>
++<U901A> /xc4/xcc <CJK>
++<U585A> /xc4/xcd <CJK>
++<U6802> /xc4/xce <CJK>
++<U63B4> /xc4/xcf <CJK>
++<U69FB> /xc4/xd0 <CJK>
++<U4F43> /xc4/xd1 <CJK>
++<U6F2C> /xc4/xd2 <CJK>
++<U67D8> /xc4/xd3 <CJK>
++<U8FBB> /xc4/xd4 <CJK>
++<U8526> /xc4/xd5 <CJK>
++<U7DB4> /xc4/xd6 <CJK>
++<U9354> /xc4/xd7 <CJK>
++<U693F> /xc4/xd8 <CJK>
++<U6F70> /xc4/xd9 <CJK>
++<U576A> /xc4/xda <CJK>
++<U58F7> /xc4/xdb <CJK>
++<U5B2C> /xc4/xdc <CJK>
++<U7D2C> /xc4/xdd <CJK>
++<U722A> /xc4/xde <CJK>
++<U540A> /xc4/xdf <CJK>
++<U91E3> /xc4/xe0 <CJK>
++<U9DB4> /xc4/xe1 <CJK>
++<U4EAD> /xc4/xe2 <CJK>
++<U4F4E> /xc4/xe3 <CJK>
++<U505C> /xc4/xe4 <CJK>
++<U5075> /xc4/xe5 <CJK>
++<U5243> /xc4/xe6 <CJK>
++<U8C9E> /xc4/xe7 <CJK>
++<U5448> /xc4/xe8 <CJK>
++<U5824> /xc4/xe9 <CJK>
++<U5B9A> /xc4/xea <CJK>
++<U5E1D> /xc4/xeb <CJK>
++<U5E95> /xc4/xec <CJK>
++<U5EAD> /xc4/xed <CJK>
++<U5EF7> /xc4/xee <CJK>
++<U5F1F> /xc4/xef <CJK>
++<U608C> /xc4/xf0 <CJK>
++<U62B5> /xc4/xf1 <CJK>
++<U633A> /xc4/xf2 <CJK>
++<U63D0> /xc4/xf3 <CJK>
++<U68AF> /xc4/xf4 <CJK>
++<U6C40> /xc4/xf5 <CJK>
++<U7887> /xc4/xf6 <CJK>
++<U798E> /xc4/xf7 <CJK>
++<U7A0B> /xc4/xf8 <CJK>
++<U7DE0> /xc4/xf9 <CJK>
++<U8247> /xc4/xfa <CJK>
++<U8A02> /xc4/xfb <CJK>
++<U8AE6> /xc4/xfc <CJK>
++<U8E44> /xc4/xfd <CJK>
++<U9013> /xc4/xfe <CJK>
++<U90B8> /xc5/xa1 <CJK>
++<U912D> /xc5/xa2 <CJK>
++<U91D8> /xc5/xa3 <CJK>
++<U9F0E> /xc5/xa4 <CJK>
++<U6CE5> /xc5/xa5 <CJK>
++<U6458> /xc5/xa6 <CJK>
++<U64E2> /xc5/xa7 <CJK>
++<U6575> /xc5/xa8 <CJK>
++<U6EF4> /xc5/xa9 <CJK>
++<U7684> /xc5/xaa <CJK>
++<U7B1B> /xc5/xab <CJK>
++<U9069> /xc5/xac <CJK>
++<U93D1> /xc5/xad <CJK>
++<U6EBA> /xc5/xae <CJK>
++<U54F2> /xc5/xaf <CJK>
++<U5FB9> /xc5/xb0 <CJK>
++<U64A4> /xc5/xb1 <CJK>
++<U8F4D> /xc5/xb2 <CJK>
++<U8FED> /xc5/xb3 <CJK>
++<U9244> /xc5/xb4 <CJK>
++<U5178> /xc5/xb5 <CJK>
++<U586B> /xc5/xb6 <CJK>
++<U5929> /xc5/xb7 <CJK>
++<U5C55> /xc5/xb8 <CJK>
++<U5E97> /xc5/xb9 <CJK>
++<U6DFB> /xc5/xba <CJK>
++<U7E8F> /xc5/xbb <CJK>
++<U751C> /xc5/xbc <CJK>
++<U8CBC> /xc5/xbd <CJK>
++<U8EE2> /xc5/xbe <CJK>
++<U985B> /xc5/xbf <CJK>
++<U70B9> /xc5/xc0 <CJK>
++<U4F1D> /xc5/xc1 <CJK>
++<U6BBF> /xc5/xc2 <CJK>
++<U6FB1> /xc5/xc3 <CJK>
++<U7530> /xc5/xc4 <CJK>
++<U96FB> /xc5/xc5 <CJK>
++<U514E> /xc5/xc6 <CJK>
++<U5410> /xc5/xc7 <CJK>
++<U5835> /xc5/xc8 <CJK>
++<U5857> /xc5/xc9 <CJK>
++<U59AC> /xc5/xca <CJK>
++<U5C60> /xc5/xcb <CJK>
++<U5F92> /xc5/xcc <CJK>
++<U6597> /xc5/xcd <CJK>
++<U675C> /xc5/xce <CJK>
++<U6E21> /xc5/xcf <CJK>
++<U767B> /xc5/xd0 <CJK>
++<U83DF> /xc5/xd1 <CJK>
++<U8CED> /xc5/xd2 <CJK>
++<U9014> /xc5/xd3 <CJK>
++<U90FD> /xc5/xd4 <CJK>
++<U934D> /xc5/xd5 <CJK>
++<U7825> /xc5/xd6 <CJK>
++<U783A> /xc5/xd7 <CJK>
++<U52AA> /xc5/xd8 <CJK>
++<U5EA6> /xc5/xd9 <CJK>
++<U571F> /xc5/xda <CJK>
++<U5974> /xc5/xdb <CJK>
++<U6012> /xc5/xdc <CJK>
++<U5012> /xc5/xdd <CJK>
++<U515A> /xc5/xde <CJK>
++<U51AC> /xc5/xdf <CJK>
++<U51CD> /xc5/xe0 <CJK>
++<U5200> /xc5/xe1 <CJK>
++<U5510> /xc5/xe2 <CJK>
++<U5854> /xc5/xe3 <CJK>
++<U5858> /xc5/xe4 <CJK>
++<U5957> /xc5/xe5 <CJK>
++<U5B95> /xc5/xe6 <CJK>
++<U5CF6> /xc5/xe7 <CJK>
++<U5D8B> /xc5/xe8 <CJK>
++<U60BC> /xc5/xe9 <CJK>
++<U6295> /xc5/xea <CJK>
++<U642D> /xc5/xeb <CJK>
++<U6771> /xc5/xec <CJK>
++<U6843> /xc5/xed <CJK>
++<U68BC> /xc5/xee <CJK>
++<U68DF> /xc5/xef <CJK>
++<U76D7> /xc5/xf0 <CJK>
++<U6DD8> /xc5/xf1 <CJK>
++<U6E6F> /xc5/xf2 <CJK>
++<U6D9B> /xc5/xf3 <CJK>
++<U706F> /xc5/xf4 <CJK>
++<U71C8> /xc5/xf5 <CJK>
++<U5F53> /xc5/xf6 <CJK>
++<U75D8> /xc5/xf7 <CJK>
++<U7977> /xc5/xf8 <CJK>
++<U7B49> /xc5/xf9 <CJK>
++<U7B54> /xc5/xfa <CJK>
++<U7B52> /xc5/xfb <CJK>
++<U7CD6> /xc5/xfc <CJK>
++<U7D71> /xc5/xfd <CJK>
++<U5230> /xc5/xfe <CJK>
++<U8463> /xc6/xa1 <CJK>
++<U8569> /xc6/xa2 <CJK>
++<U85E4> /xc6/xa3 <CJK>
++<U8A0E> /xc6/xa4 <CJK>
++<U8B04> /xc6/xa5 <CJK>
++<U8C46> /xc6/xa6 <CJK>
++<U8E0F> /xc6/xa7 <CJK>
++<U9003> /xc6/xa8 <CJK>
++<U900F> /xc6/xa9 <CJK>
++<U9419> /xc6/xaa <CJK>
++<U9676> /xc6/xab <CJK>
++<U982D> /xc6/xac <CJK>
++<U9A30> /xc6/xad <CJK>
++<U95D8> /xc6/xae <CJK>
++<U50CD> /xc6/xaf <CJK>
++<U52D5> /xc6/xb0 <CJK>
++<U540C> /xc6/xb1 <CJK>
++<U5802> /xc6/xb2 <CJK>
++<U5C0E> /xc6/xb3 <CJK>
++<U61A7> /xc6/xb4 <CJK>
++<U649E> /xc6/xb5 <CJK>
++<U6D1E> /xc6/xb6 <CJK>
++<U77B3> /xc6/xb7 <CJK>
++<U7AE5> /xc6/xb8 <CJK>
++<U80F4> /xc6/xb9 <CJK>
++<U8404> /xc6/xba <CJK>
++<U9053> /xc6/xbb <CJK>
++<U9285> /xc6/xbc <CJK>
++<U5CE0> /xc6/xbd <CJK>
++<U9D07> /xc6/xbe <CJK>
++<U533F> /xc6/xbf <CJK>
++<U5F97> /xc6/xc0 <CJK>
++<U5FB3> /xc6/xc1 <CJK>
++<U6D9C> /xc6/xc2 <CJK>
++<U7279> /xc6/xc3 <CJK>
++<U7763> /xc6/xc4 <CJK>
++<U79BF> /xc6/xc5 <CJK>
++<U7BE4> /xc6/xc6 <CJK>
++<U6BD2> /xc6/xc7 <CJK>
++<U72EC> /xc6/xc8 <CJK>
++<U8AAD> /xc6/xc9 <CJK>
++<U6803> /xc6/xca <CJK>
++<U6A61> /xc6/xcb <CJK>
++<U51F8> /xc6/xcc <CJK>
++<U7A81> /xc6/xcd <CJK>
++<U6934> /xc6/xce <CJK>
++<U5C4A> /xc6/xcf <CJK>
++<U9CF6> /xc6/xd0 <CJK>
++<U82EB> /xc6/xd1 <CJK>
++<U5BC5> /xc6/xd2 <CJK>
++<U9149> /xc6/xd3 <CJK>
++<U701E> /xc6/xd4 <CJK>
++<U5678> /xc6/xd5 <CJK>
++<U5C6F> /xc6/xd6 <CJK>
++<U60C7> /xc6/xd7 <CJK>
++<U6566> /xc6/xd8 <CJK>
++<U6C8C> /xc6/xd9 <CJK>
++<U8C5A> /xc6/xda <CJK>
++<U9041> /xc6/xdb <CJK>
++<U9813> /xc6/xdc <CJK>
++<U5451> /xc6/xdd <CJK>
++<U66C7> /xc6/xde <CJK>
++<U920D> /xc6/xdf <CJK>
++<U5948> /xc6/xe0 <CJK>
++<U90A3> /xc6/xe1 <CJK>
++<U5185> /xc6/xe2 <CJK>
++<U4E4D> /xc6/xe3 <CJK>
++<U51EA> /xc6/xe4 <CJK>
++<U8599> /xc6/xe5 <CJK>
++<U8B0E> /xc6/xe6 <CJK>
++<U7058> /xc6/xe7 <CJK>
++<U637A> /xc6/xe8 <CJK>
++<U934B> /xc6/xe9 <CJK>
++<U6962> /xc6/xea <CJK>
++<U99B4> /xc6/xeb <CJK>
++<U7E04> /xc6/xec <CJK>
++<U7577> /xc6/xed <CJK>
++<U5357> /xc6/xee <CJK>
++<U6960> /xc6/xef <CJK>
++<U8EDF> /xc6/xf0 <CJK>
++<U96E3> /xc6/xf1 <CJK>
++<U6C5D> /xc6/xf2 <CJK>
++<U4E8C> /xc6/xf3 <CJK>
++<U5C3C> /xc6/xf4 <CJK>
++<U5F10> /xc6/xf5 <CJK>
++<U8FE9> /xc6/xf6 <CJK>
++<U5302> /xc6/xf7 <CJK>
++<U8CD1> /xc6/xf8 <CJK>
++<U8089> /xc6/xf9 <CJK>
++<U8679> /xc6/xfa <CJK>
++<U5EFF> /xc6/xfb <CJK>
++<U65E5> /xc6/xfc <CJK>
++<U4E73> /xc6/xfd <CJK>
++<U5165> /xc6/xfe <CJK>
++<U5982> /xc7/xa1 <CJK>
++<U5C3F> /xc7/xa2 <CJK>
++<U97EE> /xc7/xa3 <CJK>
++<U4EFB> /xc7/xa4 <CJK>
++<U598A> /xc7/xa5 <CJK>
++<U5FCD> /xc7/xa6 <CJK>
++<U8A8D> /xc7/xa7 <CJK>
++<U6FE1> /xc7/xa8 <CJK>
++<U79B0> /xc7/xa9 <CJK>
++<U7962> /xc7/xaa <CJK>
++<U5BE7> /xc7/xab <CJK>
++<U8471> /xc7/xac <CJK>
++<U732B> /xc7/xad <CJK>
++<U71B1> /xc7/xae <CJK>
++<U5E74> /xc7/xaf <CJK>
++<U5FF5> /xc7/xb0 <CJK>
++<U637B> /xc7/xb1 <CJK>
++<U649A> /xc7/xb2 <CJK>
++<U71C3> /xc7/xb3 <CJK>
++<U7C98> /xc7/xb4 <CJK>
++<U4E43> /xc7/xb5 <CJK>
++<U5EFC> /xc7/xb6 <CJK>
++<U4E4B> /xc7/xb7 <CJK>
++<U57DC> /xc7/xb8 <CJK>
++<U56A2> /xc7/xb9 <CJK>
++<U60A9> /xc7/xba <CJK>
++<U6FC3> /xc7/xbb <CJK>
++<U7D0D> /xc7/xbc <CJK>
++<U80FD> /xc7/xbd <CJK>
++<U8133> /xc7/xbe <CJK>
++<U81BF> /xc7/xbf <CJK>
++<U8FB2> /xc7/xc0 <CJK>
++<U8997> /xc7/xc1 <CJK>
++<U86A4> /xc7/xc2 <CJK>
++<U5DF4> /xc7/xc3 <CJK>
++<U628A> /xc7/xc4 <CJK>
++<U64AD> /xc7/xc5 <CJK>
++<U8987> /xc7/xc6 <CJK>
++<U6777> /xc7/xc7 <CJK>
++<U6CE2> /xc7/xc8 <CJK>
++<U6D3E> /xc7/xc9 <CJK>
++<U7436> /xc7/xca <CJK>
++<U7834> /xc7/xcb <CJK>
++<U5A46> /xc7/xcc <CJK>
++<U7F75> /xc7/xcd <CJK>
++<U82AD> /xc7/xce <CJK>
++<U99AC> /xc7/xcf <CJK>
++<U4FF3> /xc7/xd0 <CJK>
++<U5EC3> /xc7/xd1 <CJK>
++<U62DD> /xc7/xd2 <CJK>
++<U6392> /xc7/xd3 <CJK>
++<U6557> /xc7/xd4 <CJK>
++<U676F> /xc7/xd5 <CJK>
++<U76C3> /xc7/xd6 <CJK>
++<U724C> /xc7/xd7 <CJK>
++<U80CC> /xc7/xd8 <CJK>
++<U80BA> /xc7/xd9 <CJK>
++<U8F29> /xc7/xda <CJK>
++<U914D> /xc7/xdb <CJK>
++<U500D> /xc7/xdc <CJK>
++<U57F9> /xc7/xdd <CJK>
++<U5A92> /xc7/xde <CJK>
++<U6885> /xc7/xdf <CJK>
++<U6973> /xc7/xe0 <CJK>
++<U7164> /xc7/xe1 <CJK>
++<U72FD> /xc7/xe2 <CJK>
++<U8CB7> /xc7/xe3 <CJK>
++<U58F2> /xc7/xe4 <CJK>
++<U8CE0> /xc7/xe5 <CJK>
++<U966A> /xc7/xe6 <CJK>
++<U9019> /xc7/xe7 <CJK>
++<U877F> /xc7/xe8 <CJK>
++<U79E4> /xc7/xe9 <CJK>
++<U77E7> /xc7/xea <CJK>
++<U8429> /xc7/xeb <CJK>
++<U4F2F> /xc7/xec <CJK>
++<U5265> /xc7/xed <CJK>
++<U535A> /xc7/xee <CJK>
++<U62CD> /xc7/xef <CJK>
++<U67CF> /xc7/xf0 <CJK>
++<U6CCA> /xc7/xf1 <CJK>
++<U767D> /xc7/xf2 <CJK>
++<U7B94> /xc7/xf3 <CJK>
++<U7C95> /xc7/xf4 <CJK>
++<U8236> /xc7/xf5 <CJK>
++<U8584> /xc7/xf6 <CJK>
++<U8FEB> /xc7/xf7 <CJK>
++<U66DD> /xc7/xf8 <CJK>
++<U6F20> /xc7/xf9 <CJK>
++<U7206> /xc7/xfa <CJK>
++<U7E1B> /xc7/xfb <CJK>
++<U83AB> /xc7/xfc <CJK>
++<U99C1> /xc7/xfd <CJK>
++<U9EA6> /xc7/xfe <CJK>
++<U51FD> /xc8/xa1 <CJK>
++<U7BB1> /xc8/xa2 <CJK>
++<U7872> /xc8/xa3 <CJK>
++<U7BB8> /xc8/xa4 <CJK>
++<U8087> /xc8/xa5 <CJK>
++<U7B48> /xc8/xa6 <CJK>
++<U6AE8> /xc8/xa7 <CJK>
++<U5E61> /xc8/xa8 <CJK>
++<U808C> /xc8/xa9 <CJK>
++<U7551> /xc8/xaa <CJK>
++<U7560> /xc8/xab <CJK>
++<U516B> /xc8/xac <CJK>
++<U9262> /xc8/xad <CJK>
++<U6E8C> /xc8/xae <CJK>
++<U767A> /xc8/xaf <CJK>
++<U9197> /xc8/xb0 <CJK>
++<U9AEA> /xc8/xb1 <CJK>
++<U4F10> /xc8/xb2 <CJK>
++<U7F70> /xc8/xb3 <CJK>
++<U629C> /xc8/xb4 <CJK>
++<U7B4F> /xc8/xb5 <CJK>
++<U95A5> /xc8/xb6 <CJK>
++<U9CE9> /xc8/xb7 <CJK>
++<U567A> /xc8/xb8 <CJK>
++<U5859> /xc8/xb9 <CJK>
++<U86E4> /xc8/xba <CJK>
++<U96BC> /xc8/xbb <CJK>
++<U4F34> /xc8/xbc <CJK>
++<U5224> /xc8/xbd <CJK>
++<U534A> /xc8/xbe <CJK>
++<U53CD> /xc8/xbf <CJK>
++<U53DB> /xc8/xc0 <CJK>
++<U5E06> /xc8/xc1 <CJK>
++<U642C> /xc8/xc2 <CJK>
++<U6591> /xc8/xc3 <CJK>
++<U677F> /xc8/xc4 <CJK>
++<U6C3E> /xc8/xc5 <CJK>
++<U6C4E> /xc8/xc6 <CJK>
++<U7248> /xc8/xc7 <CJK>
++<U72AF> /xc8/xc8 <CJK>
++<U73ED> /xc8/xc9 <CJK>
++<U7554> /xc8/xca <CJK>
++<U7E41> /xc8/xcb <CJK>
++<U822C> /xc8/xcc <CJK>
++<U85E9> /xc8/xcd <CJK>
++<U8CA9> /xc8/xce <CJK>
++<U7BC4> /xc8/xcf <CJK>
++<U91C6> /xc8/xd0 <CJK>
++<U7169> /xc8/xd1 <CJK>
++<U9812> /xc8/xd2 <CJK>
++<U98EF> /xc8/xd3 <CJK>
++<U633D> /xc8/xd4 <CJK>
++<U6669> /xc8/xd5 <CJK>
++<U756A> /xc8/xd6 <CJK>
++<U76E4> /xc8/xd7 <CJK>
++<U78D0> /xc8/xd8 <CJK>
++<U8543> /xc8/xd9 <CJK>
++<U86EE> /xc8/xda <CJK>
++<U532A> /xc8/xdb <CJK>
++<U5351> /xc8/xdc <CJK>
++<U5426> /xc8/xdd <CJK>
++<U5983> /xc8/xde <CJK>
++<U5E87> /xc8/xdf <CJK>
++<U5F7C> /xc8/xe0 <CJK>
++<U60B2> /xc8/xe1 <CJK>
++<U6249> /xc8/xe2 <CJK>
++<U6279> /xc8/xe3 <CJK>
++<U62AB> /xc8/xe4 <CJK>
++<U6590> /xc8/xe5 <CJK>
++<U6BD4> /xc8/xe6 <CJK>
++<U6CCC> /xc8/xe7 <CJK>
++<U75B2> /xc8/xe8 <CJK>
++<U76AE> /xc8/xe9 <CJK>
++<U7891> /xc8/xea <CJK>
++<U79D8> /xc8/xeb <CJK>
++<U7DCB> /xc8/xec <CJK>
++<U7F77> /xc8/xed <CJK>
++<U80A5> /xc8/xee <CJK>
++<U88AB> /xc8/xef <CJK>
++<U8AB9> /xc8/xf0 <CJK>
++<U8CBB> /xc8/xf1 <CJK>
++<U907F> /xc8/xf2 <CJK>
++<U975E> /xc8/xf3 <CJK>
++<U98DB> /xc8/xf4 <CJK>
++<U6A0B> /xc8/xf5 <CJK>
++<U7C38> /xc8/xf6 <CJK>
++<U5099> /xc8/xf7 <CJK>
++<U5C3E> /xc8/xf8 <CJK>
++<U5FAE> /xc8/xf9 <CJK>
++<U6787> /xc8/xfa <CJK>
++<U6BD8> /xc8/xfb <CJK>
++<U7435> /xc8/xfc <CJK>
++<U7709> /xc8/xfd <CJK>
++<U7F8E> /xc8/xfe <CJK>
++<U9F3B> /xc9/xa1 <CJK>
++<U67CA> /xc9/xa2 <CJK>
++<U7A17> /xc9/xa3 <CJK>
++<U5339> /xc9/xa4 <CJK>
++<U758B> /xc9/xa5 <CJK>
++<U9AED> /xc9/xa6 <CJK>
++<U5F66> /xc9/xa7 <CJK>
++<U819D> /xc9/xa8 <CJK>
++<U83F1> /xc9/xa9 <CJK>
++<U8098> /xc9/xaa <CJK>
++<U5F3C> /xc9/xab <CJK>
++<U5FC5> /xc9/xac <CJK>
++<U7562> /xc9/xad <CJK>
++<U7B46> /xc9/xae <CJK>
++<U903C> /xc9/xaf <CJK>
++<U6867> /xc9/xb0 <CJK>
++<U59EB> /xc9/xb1 <CJK>
++<U5A9B> /xc9/xb2 <CJK>
++<U7D10> /xc9/xb3 <CJK>
++<U767E> /xc9/xb4 <CJK>
++<U8B2C> /xc9/xb5 <CJK>
++<U4FF5> /xc9/xb6 <CJK>
++<U5F6A> /xc9/xb7 <CJK>
++<U6A19> /xc9/xb8 <CJK>
++<U6C37> /xc9/xb9 <CJK>
++<U6F02> /xc9/xba <CJK>
++<U74E2> /xc9/xbb <CJK>
++<U7968> /xc9/xbc <CJK>
++<U8868> /xc9/xbd <CJK>
++<U8A55> /xc9/xbe <CJK>
++<U8C79> /xc9/xbf <CJK>
++<U5EDF> /xc9/xc0 <CJK>
++<U63CF> /xc9/xc1 <CJK>
++<U75C5> /xc9/xc2 <CJK>
++<U79D2> /xc9/xc3 <CJK>
++<U82D7> /xc9/xc4 <CJK>
++<U9328> /xc9/xc5 <CJK>
++<U92F2> /xc9/xc6 <CJK>
++<U849C> /xc9/xc7 <CJK>
++<U86ED> /xc9/xc8 <CJK>
++<U9C2D> /xc9/xc9 <CJK>
++<U54C1> /xc9/xca <CJK>
++<U5F6C> /xc9/xcb <CJK>
++<U658C> /xc9/xcc <CJK>
++<U6D5C> /xc9/xcd <CJK>
++<U7015> /xc9/xce <CJK>
++<U8CA7> /xc9/xcf <CJK>
++<U8CD3> /xc9/xd0 <CJK>
++<U983B> /xc9/xd1 <CJK>
++<U654F> /xc9/xd2 <CJK>
++<U74F6> /xc9/xd3 <CJK>
++<U4E0D> /xc9/xd4 <CJK>
++<U4ED8> /xc9/xd5 <CJK>
++<U57E0> /xc9/xd6 <CJK>
++<U592B> /xc9/xd7 <CJK>
++<U5A66> /xc9/xd8 <CJK>
++<U5BCC> /xc9/xd9 <CJK>
++<U51A8> /xc9/xda <CJK>
++<U5E03> /xc9/xdb <CJK>
++<U5E9C> /xc9/xdc <CJK>
++<U6016> /xc9/xdd <CJK>
++<U6276> /xc9/xde <CJK>
++<U6577> /xc9/xdf <CJK>
++<U65A7> /xc9/xe0 <CJK>
++<U666E> /xc9/xe1 <CJK>
++<U6D6E> /xc9/xe2 <CJK>
++<U7236> /xc9/xe3 <CJK>
++<U7B26> /xc9/xe4 <CJK>
++<U8150> /xc9/xe5 <CJK>
++<U819A> /xc9/xe6 <CJK>
++<U8299> /xc9/xe7 <CJK>
++<U8B5C> /xc9/xe8 <CJK>
++<U8CA0> /xc9/xe9 <CJK>
++<U8CE6> /xc9/xea <CJK>
++<U8D74> /xc9/xeb <CJK>
++<U961C> /xc9/xec <CJK>
++<U9644> /xc9/xed <CJK>
++<U4FAE> /xc9/xee <CJK>
++<U64AB> /xc9/xef <CJK>
++<U6B66> /xc9/xf0 <CJK>
++<U821E> /xc9/xf1 <CJK>
++<U8461> /xc9/xf2 <CJK>
++<U856A> /xc9/xf3 <CJK>
++<U90E8> /xc9/xf4 <CJK>
++<U5C01> /xc9/xf5 <CJK>
++<U6953> /xc9/xf6 <CJK>
++<U98A8> /xc9/xf7 <CJK>
++<U847A> /xc9/xf8 <CJK>
++<U8557> /xc9/xf9 <CJK>
++<U4F0F> /xc9/xfa <CJK>
++<U526F> /xc9/xfb <CJK>
++<U5FA9> /xc9/xfc <CJK>
++<U5E45> /xc9/xfd <CJK>
++<U670D> /xc9/xfe <CJK>
++<U798F> /xca/xa1 <CJK>
++<U8179> /xca/xa2 <CJK>
++<U8907> /xca/xa3 <CJK>
++<U8986> /xca/xa4 <CJK>
++<U6DF5> /xca/xa5 <CJK>
++<U5F17> /xca/xa6 <CJK>
++<U6255> /xca/xa7 <CJK>
++<U6CB8> /xca/xa8 <CJK>
++<U4ECF> /xca/xa9 <CJK>
++<U7269> /xca/xaa <CJK>
++<U9B92> /xca/xab <CJK>
++<U5206> /xca/xac <CJK>
++<U543B> /xca/xad <CJK>
++<U5674> /xca/xae <CJK>
++<U58B3> /xca/xaf <CJK>
++<U61A4> /xca/xb0 <CJK>
++<U626E> /xca/xb1 <CJK>
++<U711A> /xca/xb2 <CJK>
++<U596E> /xca/xb3 <CJK>
++<U7C89> /xca/xb4 <CJK>
++<U7CDE> /xca/xb5 <CJK>
++<U7D1B> /xca/xb6 <CJK>
++<U96F0> /xca/xb7 <CJK>
++<U6587> /xca/xb8 <CJK>
++<U805E> /xca/xb9 <CJK>
++<U4E19> /xca/xba <CJK>
++<U4F75> /xca/xbb <CJK>
++<U5175> /xca/xbc <CJK>
++<U5840> /xca/xbd <CJK>
++<U5E63> /xca/xbe <CJK>
++<U5E73> /xca/xbf <CJK>
++<U5F0A> /xca/xc0 <CJK>
++<U67C4> /xca/xc1 <CJK>
++<U4E26> /xca/xc2 <CJK>
++<U853D> /xca/xc3 <CJK>
++<U9589> /xca/xc4 <CJK>
++<U965B> /xca/xc5 <CJK>
++<U7C73> /xca/xc6 <CJK>
++<U9801> /xca/xc7 <CJK>
++<U50FB> /xca/xc8 <CJK>
++<U58C1> /xca/xc9 <CJK>
++<U7656> /xca/xca <CJK>
++<U78A7> /xca/xcb <CJK>
++<U5225> /xca/xcc <CJK>
++<U77A5> /xca/xcd <CJK>
++<U8511> /xca/xce <CJK>
++<U7B86> /xca/xcf <CJK>
++<U504F> /xca/xd0 <CJK>
++<U5909> /xca/xd1 <CJK>
++<U7247> /xca/xd2 <CJK>
++<U7BC7> /xca/xd3 <CJK>
++<U7DE8> /xca/xd4 <CJK>
++<U8FBA> /xca/xd5 <CJK>
++<U8FD4> /xca/xd6 <CJK>
++<U904D> /xca/xd7 <CJK>
++<U4FBF> /xca/xd8 <CJK>
++<U52C9> /xca/xd9 <CJK>
++<U5A29> /xca/xda <CJK>
++<U5F01> /xca/xdb <CJK>
++<U97AD> /xca/xdc <CJK>
++<U4FDD> /xca/xdd <CJK>
++<U8217> /xca/xde <CJK>
++<U92EA> /xca/xdf <CJK>
++<U5703> /xca/xe0 <CJK>
++<U6355> /xca/xe1 <CJK>
++<U6B69> /xca/xe2 <CJK>
++<U752B> /xca/xe3 <CJK>
++<U88DC> /xca/xe4 <CJK>
++<U8F14> /xca/xe5 <CJK>
++<U7A42> /xca/xe6 <CJK>
++<U52DF> /xca/xe7 <CJK>
++<U5893> /xca/xe8 <CJK>
++<U6155> /xca/xe9 <CJK>
++<U620A> /xca/xea <CJK>
++<U66AE> /xca/xeb <CJK>
++<U6BCD> /xca/xec <CJK>
++<U7C3F> /xca/xed <CJK>
++<U83E9> /xca/xee <CJK>
++<U5023> /xca/xef <CJK>
++<U4FF8> /xca/xf0 <CJK>
++<U5305> /xca/xf1 <CJK>
++<U5446> /xca/xf2 <CJK>
++<U5831> /xca/xf3 <CJK>
++<U5949> /xca/xf4 <CJK>
++<U5B9D> /xca/xf5 <CJK>
++<U5CF0> /xca/xf6 <CJK>
++<U5CEF> /xca/xf7 <CJK>
++<U5D29> /xca/xf8 <CJK>
++<U5E96> /xca/xf9 <CJK>
++<U62B1> /xca/xfa <CJK>
++<U6367> /xca/xfb <CJK>
++<U653E> /xca/xfc <CJK>
++<U65B9> /xca/xfd <CJK>
++<U670B> /xca/xfe <CJK>
++<U6CD5> /xcb/xa1 <CJK>
++<U6CE1> /xcb/xa2 <CJK>
++<U70F9> /xcb/xa3 <CJK>
++<U7832> /xcb/xa4 <CJK>
++<U7E2B> /xcb/xa5 <CJK>
++<U80DE> /xcb/xa6 <CJK>
++<U82B3> /xcb/xa7 <CJK>
++<U840C> /xcb/xa8 <CJK>
++<U84EC> /xcb/xa9 <CJK>
++<U8702> /xcb/xaa <CJK>
++<U8912> /xcb/xab <CJK>
++<U8A2A> /xcb/xac <CJK>
++<U8C4A> /xcb/xad <CJK>
++<U90A6> /xcb/xae <CJK>
++<U92D2> /xcb/xaf <CJK>
++<U98FD> /xcb/xb0 <CJK>
++<U9CF3> /xcb/xb1 <CJK>
++<U9D6C> /xcb/xb2 <CJK>
++<U4E4F> /xcb/xb3 <CJK>
++<U4EA1> /xcb/xb4 <CJK>
++<U508D> /xcb/xb5 <CJK>
++<U5256> /xcb/xb6 <CJK>
++<U574A> /xcb/xb7 <CJK>
++<U59A8> /xcb/xb8 <CJK>
++<U5E3D> /xcb/xb9 <CJK>
++<U5FD8> /xcb/xba <CJK>
++<U5FD9> /xcb/xbb <CJK>
++<U623F> /xcb/xbc <CJK>
++<U66B4> /xcb/xbd <CJK>
++<U671B> /xcb/xbe <CJK>
++<U67D0> /xcb/xbf <CJK>
++<U68D2> /xcb/xc0 <CJK>
++<U5192> /xcb/xc1 <CJK>
++<U7D21> /xcb/xc2 <CJK>
++<U80AA> /xcb/xc3 <CJK>
++<U81A8> /xcb/xc4 <CJK>
++<U8B00> /xcb/xc5 <CJK>
++<U8C8C> /xcb/xc6 <CJK>
++<U8CBF> /xcb/xc7 <CJK>
++<U927E> /xcb/xc8 <CJK>
++<U9632> /xcb/xc9 <CJK>
++<U5420> /xcb/xca <CJK>
++<U982C> /xcb/xcb <CJK>
++<U5317> /xcb/xcc <CJK>
++<U50D5> /xcb/xcd <CJK>
++<U535C> /xcb/xce <CJK>
++<U58A8> /xcb/xcf <CJK>
++<U64B2> /xcb/xd0 <CJK>
++<U6734> /xcb/xd1 <CJK>
++<U7267> /xcb/xd2 <CJK>
++<U7766> /xcb/xd3 <CJK>
++<U7A46> /xcb/xd4 <CJK>
++<U91E6> /xcb/xd5 <CJK>
++<U52C3> /xcb/xd6 <CJK>
++<U6CA1> /xcb/xd7 <CJK>
++<U6B86> /xcb/xd8 <CJK>
++<U5800> /xcb/xd9 <CJK>
++<U5E4C> /xcb/xda <CJK>
++<U5954> /xcb/xdb <CJK>
++<U672C> /xcb/xdc <CJK>
++<U7FFB> /xcb/xdd <CJK>
++<U51E1> /xcb/xde <CJK>
++<U76C6> /xcb/xdf <CJK>
++<U6469> /xcb/xe0 <CJK>
++<U78E8> /xcb/xe1 <CJK>
++<U9B54> /xcb/xe2 <CJK>
++<U9EBB> /xcb/xe3 <CJK>
++<U57CB> /xcb/xe4 <CJK>
++<U59B9> /xcb/xe5 <CJK>
++<U6627> /xcb/xe6 <CJK>
++<U679A> /xcb/xe7 <CJK>
++<U6BCE> /xcb/xe8 <CJK>
++<U54E9> /xcb/xe9 <CJK>
++<U69D9> /xcb/xea <CJK>
++<U5E55> /xcb/xeb <CJK>
++<U819C> /xcb/xec <CJK>
++<U6795> /xcb/xed <CJK>
++<U9BAA> /xcb/xee <CJK>
++<U67FE> /xcb/xef <CJK>
++<U9C52> /xcb/xf0 <CJK>
++<U685D> /xcb/xf1 <CJK>
++<U4EA6> /xcb/xf2 <CJK>
++<U4FE3> /xcb/xf3 <CJK>
++<U53C8> /xcb/xf4 <CJK>
++<U62B9> /xcb/xf5 <CJK>
++<U672B> /xcb/xf6 <CJK>
++<U6CAB> /xcb/xf7 <CJK>
++<U8FC4> /xcb/xf8 <CJK>
++<U4FAD> /xcb/xf9 <CJK>
++<U7E6D> /xcb/xfa <CJK>
++<U9EBF> /xcb/xfb <CJK>
++<U4E07> /xcb/xfc <CJK>
++<U6162> /xcb/xfd <CJK>
++<U6E80> /xcb/xfe <CJK>
++<U6F2B> /xcc/xa1 <CJK>
++<U8513> /xcc/xa2 <CJK>
++<U5473> /xcc/xa3 <CJK>
++<U672A> /xcc/xa4 <CJK>
++<U9B45> /xcc/xa5 <CJK>
++<U5DF3> /xcc/xa6 <CJK>
++<U7B95> /xcc/xa7 <CJK>
++<U5CAC> /xcc/xa8 <CJK>
++<U5BC6> /xcc/xa9 <CJK>
++<U871C> /xcc/xaa <CJK>
++<U6E4A> /xcc/xab <CJK>
++<U84D1> /xcc/xac <CJK>
++<U7A14> /xcc/xad <CJK>
++<U8108> /xcc/xae <CJK>
++<U5999> /xcc/xaf <CJK>
++<U7C8D> /xcc/xb0 <CJK>
++<U6C11> /xcc/xb1 <CJK>
++<U7720> /xcc/xb2 <CJK>
++<U52D9> /xcc/xb3 <CJK>
++<U5922> /xcc/xb4 <CJK>
++<U7121> /xcc/xb5 <CJK>
++<U725F> /xcc/xb6 <CJK>
++<U77DB> /xcc/xb7 <CJK>
++<U9727> /xcc/xb8 <CJK>
++<U9D61> /xcc/xb9 <CJK>
++<U690B> /xcc/xba <CJK>
++<U5A7F> /xcc/xbb <CJK>
++<U5A18> /xcc/xbc <CJK>
++<U51A5> /xcc/xbd <CJK>
++<U540D> /xcc/xbe <CJK>
++<U547D> /xcc/xbf <CJK>
++<U660E> /xcc/xc0 <CJK>
++<U76DF> /xcc/xc1 <CJK>
++<U8FF7> /xcc/xc2 <CJK>
++<U9298> /xcc/xc3 <CJK>
++<U9CF4> /xcc/xc4 <CJK>
++<U59EA> /xcc/xc5 <CJK>
++<U725D> /xcc/xc6 <CJK>
++<U6EC5> /xcc/xc7 <CJK>
++<U514D> /xcc/xc8 <CJK>
++<U68C9> /xcc/xc9 <CJK>
++<U7DBF> /xcc/xca <CJK>
++<U7DEC> /xcc/xcb <CJK>
++<U9762> /xcc/xcc <CJK>
++<U9EBA> /xcc/xcd <CJK>
++<U6478> /xcc/xce <CJK>
++<U6A21> /xcc/xcf <CJK>
++<U8302> /xcc/xd0 <CJK>
++<U5984> /xcc/xd1 <CJK>
++<U5B5F> /xcc/xd2 <CJK>
++<U6BDB> /xcc/xd3 <CJK>
++<U731B> /xcc/xd4 <CJK>
++<U76F2> /xcc/xd5 <CJK>
++<U7DB2> /xcc/xd6 <CJK>
++<U8017> /xcc/xd7 <CJK>
++<U8499> /xcc/xd8 <CJK>
++<U5132> /xcc/xd9 <CJK>
++<U6728> /xcc/xda <CJK>
++<U9ED9> /xcc/xdb <CJK>
++<U76EE> /xcc/xdc <CJK>
++<U6762> /xcc/xdd <CJK>
++<U52FF> /xcc/xde <CJK>
++<U9905> /xcc/xdf <CJK>
++<U5C24> /xcc/xe0 <CJK>
++<U623B> /xcc/xe1 <CJK>
++<U7C7E> /xcc/xe2 <CJK>
++<U8CB0> /xcc/xe3 <CJK>
++<U554F> /xcc/xe4 <CJK>
++<U60B6> /xcc/xe5 <CJK>
++<U7D0B> /xcc/xe6 <CJK>
++<U9580> /xcc/xe7 <CJK>
++<U5301> /xcc/xe8 <CJK>
++<U4E5F> /xcc/xe9 <CJK>
++<U51B6> /xcc/xea <CJK>
++<U591C> /xcc/xeb <CJK>
++<U723A> /xcc/xec <CJK>
++<U8036> /xcc/xed <CJK>
++<U91CE> /xcc/xee <CJK>
++<U5F25> /xcc/xef <CJK>
++<U77E2> /xcc/xf0 <CJK>
++<U5384> /xcc/xf1 <CJK>
++<U5F79> /xcc/xf2 <CJK>
++<U7D04> /xcc/xf3 <CJK>
++<U85AC> /xcc/xf4 <CJK>
++<U8A33> /xcc/xf5 <CJK>
++<U8E8D> /xcc/xf6 <CJK>
++<U9756> /xcc/xf7 <CJK>
++<U67F3> /xcc/xf8 <CJK>
++<U85AE> /xcc/xf9 <CJK>
++<U9453> /xcc/xfa <CJK>
++<U6109> /xcc/xfb <CJK>
++<U6108> /xcc/xfc <CJK>
++<U6CB9> /xcc/xfd <CJK>
++<U7652> /xcc/xfe <CJK>
++<U8AED> /xcd/xa1 <CJK>
++<U8F38> /xcd/xa2 <CJK>
++<U552F> /xcd/xa3 <CJK>
++<U4F51> /xcd/xa4 <CJK>
++<U512A> /xcd/xa5 <CJK>
++<U52C7> /xcd/xa6 <CJK>
++<U53CB> /xcd/xa7 <CJK>
++<U5BA5> /xcd/xa8 <CJK>
++<U5E7D> /xcd/xa9 <CJK>
++<U60A0> /xcd/xaa <CJK>
++<U6182> /xcd/xab <CJK>
++<U63D6> /xcd/xac <CJK>
++<U6709> /xcd/xad <CJK>
++<U67DA> /xcd/xae <CJK>
++<U6E67> /xcd/xaf <CJK>
++<U6D8C> /xcd/xb0 <CJK>
++<U7336> /xcd/xb1 <CJK>
++<U7337> /xcd/xb2 <CJK>
++<U7531> /xcd/xb3 <CJK>
++<U7950> /xcd/xb4 <CJK>
++<U88D5> /xcd/xb5 <CJK>
++<U8A98> /xcd/xb6 <CJK>
++<U904A> /xcd/xb7 <CJK>
++<U9091> /xcd/xb8 <CJK>
++<U90F5> /xcd/xb9 <CJK>
++<U96C4> /xcd/xba <CJK>
++<U878D> /xcd/xbb <CJK>
++<U5915> /xcd/xbc <CJK>
++<U4E88> /xcd/xbd <CJK>
++<U4F59> /xcd/xbe <CJK>
++<U4E0E> /xcd/xbf <CJK>
++<U8A89> /xcd/xc0 <CJK>
++<U8F3F> /xcd/xc1 <CJK>
++<U9810> /xcd/xc2 <CJK>
++<U50AD> /xcd/xc3 <CJK>
++<U5E7C> /xcd/xc4 <CJK>
++<U5996> /xcd/xc5 <CJK>
++<U5BB9> /xcd/xc6 <CJK>
++<U5EB8> /xcd/xc7 <CJK>
++<U63DA> /xcd/xc8 <CJK>
++<U63FA> /xcd/xc9 <CJK>
++<U64C1> /xcd/xca <CJK>
++<U66DC> /xcd/xcb <CJK>
++<U694A> /xcd/xcc <CJK>
++<U69D8> /xcd/xcd <CJK>
++<U6D0B> /xcd/xce <CJK>
++<U6EB6> /xcd/xcf <CJK>
++<U7194> /xcd/xd0 <CJK>
++<U7528> /xcd/xd1 <CJK>
++<U7AAF> /xcd/xd2 <CJK>
++<U7F8A> /xcd/xd3 <CJK>
++<U8000> /xcd/xd4 <CJK>
++<U8449> /xcd/xd5 <CJK>
++<U84C9> /xcd/xd6 <CJK>
++<U8981> /xcd/xd7 <CJK>
++<U8B21> /xcd/xd8 <CJK>
++<U8E0A> /xcd/xd9 <CJK>
++<U9065> /xcd/xda <CJK>
++<U967D> /xcd/xdb <CJK>
++<U990A> /xcd/xdc <CJK>
++<U617E> /xcd/xdd <CJK>
++<U6291> /xcd/xde <CJK>
++<U6B32> /xcd/xdf <CJK>
++<U6C83> /xcd/xe0 <CJK>
++<U6D74> /xcd/xe1 <CJK>
++<U7FCC> /xcd/xe2 <CJK>
++<U7FFC> /xcd/xe3 <CJK>
++<U6DC0> /xcd/xe4 <CJK>
++<U7F85> /xcd/xe5 <CJK>
++<U87BA> /xcd/xe6 <CJK>
++<U88F8> /xcd/xe7 <CJK>
++<U6765> /xcd/xe8 <CJK>
++<U83B1> /xcd/xe9 <CJK>
++<U983C> /xcd/xea <CJK>
++<U96F7> /xcd/xeb <CJK>
++<U6D1B> /xcd/xec <CJK>
++<U7D61> /xcd/xed <CJK>
++<U843D> /xcd/xee <CJK>
++<U916A> /xcd/xef <CJK>
++<U4E71> /xcd/xf0 <CJK>
++<U5375> /xcd/xf1 <CJK>
++<U5D50> /xcd/xf2 <CJK>
++<U6B04> /xcd/xf3 <CJK>
++<U6FEB> /xcd/xf4 <CJK>
++<U85CD> /xcd/xf5 <CJK>
++<U862D> /xcd/xf6 <CJK>
++<U89A7> /xcd/xf7 <CJK>
++<U5229> /xcd/xf8 <CJK>
++<U540F> /xcd/xf9 <CJK>
++<U5C65> /xcd/xfa <CJK>
++<U674E> /xcd/xfb <CJK>
++<U68A8> /xcd/xfc <CJK>
++<U7406> /xcd/xfd <CJK>
++<U7483> /xcd/xfe <CJK>
++<U75E2> /xce/xa1 <CJK>
++<U88CF> /xce/xa2 <CJK>
++<U88E1> /xce/xa3 <CJK>
++<U91CC> /xce/xa4 <CJK>
++<U96E2> /xce/xa5 <CJK>
++<U9678> /xce/xa6 <CJK>
++<U5F8B> /xce/xa7 <CJK>
++<U7387> /xce/xa8 <CJK>
++<U7ACB> /xce/xa9 <CJK>
++<U844E> /xce/xaa <CJK>
++<U63A0> /xce/xab <CJK>
++<U7565> /xce/xac <CJK>
++<U5289> /xce/xad <CJK>
++<U6D41> /xce/xae <CJK>
++<U6E9C> /xce/xaf <CJK>
++<U7409> /xce/xb0 <CJK>
++<U7559> /xce/xb1 <CJK>
++<U786B> /xce/xb2 <CJK>
++<U7C92> /xce/xb3 <CJK>
++<U9686> /xce/xb4 <CJK>
++<U7ADC> /xce/xb5 <CJK>
++<U9F8D> /xce/xb6 <CJK>
++<U4FB6> /xce/xb7 <CJK>
++<U616E> /xce/xb8 <CJK>
++<U65C5> /xce/xb9 <CJK>
++<U865C> /xce/xba <CJK>
++<U4E86> /xce/xbb <CJK>
++<U4EAE> /xce/xbc <CJK>
++<U50DA> /xce/xbd <CJK>
++<U4E21> /xce/xbe <CJK>
++<U51CC> /xce/xbf <CJK>
++<U5BEE> /xce/xc0 <CJK>
++<U6599> /xce/xc1 <CJK>
++<U6881> /xce/xc2 <CJK>
++<U6DBC> /xce/xc3 <CJK>
++<U731F> /xce/xc4 <CJK>
++<U7642> /xce/xc5 <CJK>
++<U77AD> /xce/xc6 <CJK>
++<U7A1C> /xce/xc7 <CJK>
++<U7CE7> /xce/xc8 <CJK>
++<U826F> /xce/xc9 <CJK>
++<U8AD2> /xce/xca <CJK>
++<U907C> /xce/xcb <CJK>
++<U91CF> /xce/xcc <CJK>
++<U9675> /xce/xcd <CJK>
++<U9818> /xce/xce <CJK>
++<U529B> /xce/xcf <CJK>
++<U7DD1> /xce/xd0 <CJK>
++<U502B> /xce/xd1 <CJK>
++<U5398> /xce/xd2 <CJK>
++<U6797> /xce/xd3 <CJK>
++<U6DCB> /xce/xd4 <CJK>
++<U71D0> /xce/xd5 <CJK>
++<U7433> /xce/xd6 <CJK>
++<U81E8> /xce/xd7 <CJK>
++<U8F2A> /xce/xd8 <CJK>
++<U96A3> /xce/xd9 <CJK>
++<U9C57> /xce/xda <CJK>
++<U9E9F> /xce/xdb <CJK>
++<U7460> /xce/xdc <CJK>
++<U5841> /xce/xdd <CJK>
++<U6D99> /xce/xde <CJK>
++<U7D2F> /xce/xdf <CJK>
++<U985E> /xce/xe0 <CJK>
++<U4EE4> /xce/xe1 <CJK>
++<U4F36> /xce/xe2 <CJK>
++<U4F8B> /xce/xe3 <CJK>
++<U51B7> /xce/xe4 <CJK>
++<U52B1> /xce/xe5 <CJK>
++<U5DBA> /xce/xe6 <CJK>
++<U601C> /xce/xe7 <CJK>
++<U73B2> /xce/xe8 <CJK>
++<U793C> /xce/xe9 <CJK>
++<U82D3> /xce/xea <CJK>
++<U9234> /xce/xeb <CJK>
++<U96B7> /xce/xec <CJK>
++<U96F6> /xce/xed <CJK>
++<U970A> /xce/xee <CJK>
++<U9E97> /xce/xef <CJK>
++<U9F62> /xce/xf0 <CJK>
++<U66A6> /xce/xf1 <CJK>
++<U6B74> /xce/xf2 <CJK>
++<U5217> /xce/xf3 <CJK>
++<U52A3> /xce/xf4 <CJK>
++<U70C8> /xce/xf5 <CJK>
++<U88C2> /xce/xf6 <CJK>
++<U5EC9> /xce/xf7 <CJK>
++<U604B> /xce/xf8 <CJK>
++<U6190> /xce/xf9 <CJK>
++<U6F23> /xce/xfa <CJK>
++<U7149> /xce/xfb <CJK>
++<U7C3E> /xce/xfc <CJK>
++<U7DF4> /xce/xfd <CJK>
++<U806F> /xce/xfe <CJK>
++<U84EE> /xcf/xa1 <CJK>
++<U9023> /xcf/xa2 <CJK>
++<U932C> /xcf/xa3 <CJK>
++<U5442> /xcf/xa4 <CJK>
++<U9B6F> /xcf/xa5 <CJK>
++<U6AD3> /xcf/xa6 <CJK>
++<U7089> /xcf/xa7 <CJK>
++<U8CC2> /xcf/xa8 <CJK>
++<U8DEF> /xcf/xa9 <CJK>
++<U9732> /xcf/xaa <CJK>
++<U52B4> /xcf/xab <CJK>
++<U5A41> /xcf/xac <CJK>
++<U5ECA> /xcf/xad <CJK>
++<U5F04> /xcf/xae <CJK>
++<U6717> /xcf/xaf <CJK>
++<U697C> /xcf/xb0 <CJK>
++<U6994> /xcf/xb1 <CJK>
++<U6D6A> /xcf/xb2 <CJK>
++<U6F0F> /xcf/xb3 <CJK>
++<U7262> /xcf/xb4 <CJK>
++<U72FC> /xcf/xb5 <CJK>
++<U7BED> /xcf/xb6 <CJK>
++<U8001> /xcf/xb7 <CJK>
++<U807E> /xcf/xb8 <CJK>
++<U874B> /xcf/xb9 <CJK>
++<U90CE> /xcf/xba <CJK>
++<U516D> /xcf/xbb <CJK>
++<U9E93> /xcf/xbc <CJK>
++<U7984> /xcf/xbd <CJK>
++<U808B> /xcf/xbe <CJK>
++<U9332> /xcf/xbf <CJK>
++<U8AD6> /xcf/xc0 <CJK>
++<U502D> /xcf/xc1 <CJK>
++<U548C> /xcf/xc2 <CJK>
++<U8A71> /xcf/xc3 <CJK>
++<U6B6A> /xcf/xc4 <CJK>
++<U8CC4> /xcf/xc5 <CJK>
++<U8107> /xcf/xc6 <CJK>
++<U60D1> /xcf/xc7 <CJK>
++<U67A0> /xcf/xc8 <CJK>
++<U9DF2> /xcf/xc9 <CJK>
++<U4E99> /xcf/xca <CJK>
++<U4E98> /xcf/xcb <CJK>
++<U9C10> /xcf/xcc <CJK>
++<U8A6B> /xcf/xcd <CJK>
++<U85C1> /xcf/xce <CJK>
++<U8568> /xcf/xcf <CJK>
++<U6900> /xcf/xd0 <CJK>
++<U6E7E> /xcf/xd1 <CJK>
++<U7897> /xcf/xd2 <CJK>
++<U8155> /xcf/xd3 <CJK>
++<U5F0C> /xd0/xa1 <CJK>
++<U4E10> /xd0/xa2 <CJK>
++<U4E15> /xd0/xa3 <CJK>
++<U4E2A> /xd0/xa4 <CJK>
++<U4E31> /xd0/xa5 <CJK>
++<U4E36> /xd0/xa6 <CJK>
++<U4E3C> /xd0/xa7 <CJK>
++<U4E3F> /xd0/xa8 <CJK>
++<U4E42> /xd0/xa9 <CJK>
++<U4E56> /xd0/xaa <CJK>
++<U4E58> /xd0/xab <CJK>
++<U4E82> /xd0/xac <CJK>
++<U4E85> /xd0/xad <CJK>
++<U8C6B> /xd0/xae <CJK>
++<U4E8A> /xd0/xaf <CJK>
++<U8212> /xd0/xb0 <CJK>
++<U5F0D> /xd0/xb1 <CJK>
++<U4E8E> /xd0/xb2 <CJK>
++<U4E9E> /xd0/xb3 <CJK>
++<U4E9F> /xd0/xb4 <CJK>
++<U4EA0> /xd0/xb5 <CJK>
++<U4EA2> /xd0/xb6 <CJK>
++<U4EB0> /xd0/xb7 <CJK>
++<U4EB3> /xd0/xb8 <CJK>
++<U4EB6> /xd0/xb9 <CJK>
++<U4ECE> /xd0/xba <CJK>
++<U4ECD> /xd0/xbb <CJK>
++<U4EC4> /xd0/xbc <CJK>
++<U4EC6> /xd0/xbd <CJK>
++<U4EC2> /xd0/xbe <CJK>
++<U4ED7> /xd0/xbf <CJK>
++<U4EDE> /xd0/xc0 <CJK>
++<U4EED> /xd0/xc1 <CJK>
++<U4EDF> /xd0/xc2 <CJK>
++<U4EF7> /xd0/xc3 <CJK>
++<U4F09> /xd0/xc4 <CJK>
++<U4F5A> /xd0/xc5 <CJK>
++<U4F30> /xd0/xc6 <CJK>
++<U4F5B> /xd0/xc7 <CJK>
++<U4F5D> /xd0/xc8 <CJK>
++<U4F57> /xd0/xc9 <CJK>
++<U4F47> /xd0/xca <CJK>
++<U4F76> /xd0/xcb <CJK>
++<U4F88> /xd0/xcc <CJK>
++<U4F8F> /xd0/xcd <CJK>
++<U4F98> /xd0/xce <CJK>
++<U4F7B> /xd0/xcf <CJK>
++<U4F69> /xd0/xd0 <CJK>
++<U4F70> /xd0/xd1 <CJK>
++<U4F91> /xd0/xd2 <CJK>
++<U4F6F> /xd0/xd3 <CJK>
++<U4F86> /xd0/xd4 <CJK>
++<U4F96> /xd0/xd5 <CJK>
++<U5118> /xd0/xd6 <CJK>
++<U4FD4> /xd0/xd7 <CJK>
++<U4FDF> /xd0/xd8 <CJK>
++<U4FCE> /xd0/xd9 <CJK>
++<U4FD8> /xd0/xda <CJK>
++<U4FDB> /xd0/xdb <CJK>
++<U4FD1> /xd0/xdc <CJK>
++<U4FDA> /xd0/xdd <CJK>
++<U4FD0> /xd0/xde <CJK>
++<U4FE4> /xd0/xdf <CJK>
++<U4FE5> /xd0/xe0 <CJK>
++<U501A> /xd0/xe1 <CJK>
++<U5028> /xd0/xe2 <CJK>
++<U5014> /xd0/xe3 <CJK>
++<U502A> /xd0/xe4 <CJK>
++<U5025> /xd0/xe5 <CJK>
++<U5005> /xd0/xe6 <CJK>
++<U4F1C> /xd0/xe7 <CJK>
++<U4FF6> /xd0/xe8 <CJK>
++<U5021> /xd0/xe9 <CJK>
++<U5029> /xd0/xea <CJK>
++<U502C> /xd0/xeb <CJK>
++<U4FFE> /xd0/xec <CJK>
++<U4FEF> /xd0/xed <CJK>
++<U5011> /xd0/xee <CJK>
++<U5006> /xd0/xef <CJK>
++<U5043> /xd0/xf0 <CJK>
++<U5047> /xd0/xf1 <CJK>
++<U6703> /xd0/xf2 <CJK>
++<U5055> /xd0/xf3 <CJK>
++<U5050> /xd0/xf4 <CJK>
++<U5048> /xd0/xf5 <CJK>
++<U505A> /xd0/xf6 <CJK>
++<U5056> /xd0/xf7 <CJK>
++<U506C> /xd0/xf8 <CJK>
++<U5078> /xd0/xf9 <CJK>
++<U5080> /xd0/xfa <CJK>
++<U509A> /xd0/xfb <CJK>
++<U5085> /xd0/xfc <CJK>
++<U50B4> /xd0/xfd <CJK>
++<U50B2> /xd0/xfe <CJK>
++<U50C9> /xd1/xa1 <CJK>
++<U50CA> /xd1/xa2 <CJK>
++<U50B3> /xd1/xa3 <CJK>
++<U50C2> /xd1/xa4 <CJK>
++<U50D6> /xd1/xa5 <CJK>
++<U50DE> /xd1/xa6 <CJK>
++<U50E5> /xd1/xa7 <CJK>
++<U50ED> /xd1/xa8 <CJK>
++<U50E3> /xd1/xa9 <CJK>
++<U50EE> /xd1/xaa <CJK>
++<U50F9> /xd1/xab <CJK>
++<U50F5> /xd1/xac <CJK>
++<U5109> /xd1/xad <CJK>
++<U5101> /xd1/xae <CJK>
++<U5102> /xd1/xaf <CJK>
++<U5116> /xd1/xb0 <CJK>
++<U5115> /xd1/xb1 <CJK>
++<U5114> /xd1/xb2 <CJK>
++<U511A> /xd1/xb3 <CJK>
++<U5121> /xd1/xb4 <CJK>
++<U513A> /xd1/xb5 <CJK>
++<U5137> /xd1/xb6 <CJK>
++<U513C> /xd1/xb7 <CJK>
++<U513B> /xd1/xb8 <CJK>
++<U513F> /xd1/xb9 <CJK>
++<U5140> /xd1/xba <CJK>
++<U5152> /xd1/xbb <CJK>
++<U514C> /xd1/xbc <CJK>
++<U5154> /xd1/xbd <CJK>
++<U5162> /xd1/xbe <CJK>
++<U7AF8> /xd1/xbf <CJK>
++<U5169> /xd1/xc0 <CJK>
++<U516A> /xd1/xc1 <CJK>
++<U516E> /xd1/xc2 <CJK>
++<U5180> /xd1/xc3 <CJK>
++<U5182> /xd1/xc4 <CJK>
++<U56D8> /xd1/xc5 <CJK>
++<U518C> /xd1/xc6 <CJK>
++<U5189> /xd1/xc7 <CJK>
++<U518F> /xd1/xc8 <CJK>
++<U5191> /xd1/xc9 <CJK>
++<U5193> /xd1/xca <CJK>
++<U5195> /xd1/xcb <CJK>
++<U5196> /xd1/xcc <CJK>
++<U51A4> /xd1/xcd <CJK>
++<U51A6> /xd1/xce <CJK>
++<U51A2> /xd1/xcf <CJK>
++<U51A9> /xd1/xd0 <CJK>
++<U51AA> /xd1/xd1 <CJK>
++<U51AB> /xd1/xd2 <CJK>
++<U51B3> /xd1/xd3 <CJK>
++<U51B1> /xd1/xd4 <CJK>
++<U51B2> /xd1/xd5 <CJK>
++<U51B0> /xd1/xd6 <CJK>
++<U51B5> /xd1/xd7 <CJK>
++<U51BD> /xd1/xd8 <CJK>
++<U51C5> /xd1/xd9 <CJK>
++<U51C9> /xd1/xda <CJK>
++<U51DB> /xd1/xdb <CJK>
++<U51E0> /xd1/xdc <CJK>
++<U8655> /xd1/xdd <CJK>
++<U51E9> /xd1/xde <CJK>
++<U51ED> /xd1/xdf <CJK>
++<U51F0> /xd1/xe0 <CJK>
++<U51F5> /xd1/xe1 <CJK>
++<U51FE> /xd1/xe2 <CJK>
++<U5204> /xd1/xe3 <CJK>
++<U520B> /xd1/xe4 <CJK>
++<U5214> /xd1/xe5 <CJK>
++<U520E> /xd1/xe6 <CJK>
++<U5227> /xd1/xe7 <CJK>
++<U522A> /xd1/xe8 <CJK>
++<U522E> /xd1/xe9 <CJK>
++<U5233> /xd1/xea <CJK>
++<U5239> /xd1/xeb <CJK>
++<U524F> /xd1/xec <CJK>
++<U5244> /xd1/xed <CJK>
++<U524B> /xd1/xee <CJK>
++<U524C> /xd1/xef <CJK>
++<U525E> /xd1/xf0 <CJK>
++<U5254> /xd1/xf1 <CJK>
++<U526A> /xd1/xf2 <CJK>
++<U5274> /xd1/xf3 <CJK>
++<U5269> /xd1/xf4 <CJK>
++<U5273> /xd1/xf5 <CJK>
++<U527F> /xd1/xf6 <CJK>
++<U527D> /xd1/xf7 <CJK>
++<U528D> /xd1/xf8 <CJK>
++<U5294> /xd1/xf9 <CJK>
++<U5292> /xd1/xfa <CJK>
++<U5271> /xd1/xfb <CJK>
++<U5288> /xd1/xfc <CJK>
++<U5291> /xd1/xfd <CJK>
++<U8FA8> /xd1/xfe <CJK>
++<U8FA7> /xd2/xa1 <CJK>
++<U52AC> /xd2/xa2 <CJK>
++<U52AD> /xd2/xa3 <CJK>
++<U52BC> /xd2/xa4 <CJK>
++<U52B5> /xd2/xa5 <CJK>
++<U52C1> /xd2/xa6 <CJK>
++<U52CD> /xd2/xa7 <CJK>
++<U52D7> /xd2/xa8 <CJK>
++<U52DE> /xd2/xa9 <CJK>
++<U52E3> /xd2/xaa <CJK>
++<U52E6> /xd2/xab <CJK>
++<U98ED> /xd2/xac <CJK>
++<U52E0> /xd2/xad <CJK>
++<U52F3> /xd2/xae <CJK>
++<U52F5> /xd2/xaf <CJK>
++<U52F8> /xd2/xb0 <CJK>
++<U52F9> /xd2/xb1 <CJK>
++<U5306> /xd2/xb2 <CJK>
++<U5308> /xd2/xb3 <CJK>
++<U7538> /xd2/xb4 <CJK>
++<U530D> /xd2/xb5 <CJK>
++<U5310> /xd2/xb6 <CJK>
++<U530F> /xd2/xb7 <CJK>
++<U5315> /xd2/xb8 <CJK>
++<U531A> /xd2/xb9 <CJK>
++<U5323> /xd2/xba <CJK>
++<U532F> /xd2/xbb <CJK>
++<U5331> /xd2/xbc <CJK>
++<U5333> /xd2/xbd <CJK>
++<U5338> /xd2/xbe <CJK>
++<U5340> /xd2/xbf <CJK>
++<U5346> /xd2/xc0 <CJK>
++<U5345> /xd2/xc1 <CJK>
++<U4E17> /xd2/xc2 <CJK>
++<U5349> /xd2/xc3 <CJK>
++<U534D> /xd2/xc4 <CJK>
++<U51D6> /xd2/xc5 <CJK>
++<U535E> /xd2/xc6 <CJK>
++<U5369> /xd2/xc7 <CJK>
++<U536E> /xd2/xc8 <CJK>
++<U5918> /xd2/xc9 <CJK>
++<U537B> /xd2/xca <CJK>
++<U5377> /xd2/xcb <CJK>
++<U5382> /xd2/xcc <CJK>
++<U5396> /xd2/xcd <CJK>
++<U53A0> /xd2/xce <CJK>
++<U53A6> /xd2/xcf <CJK>
++<U53A5> /xd2/xd0 <CJK>
++<U53AE> /xd2/xd1 <CJK>
++<U53B0> /xd2/xd2 <CJK>
++<U53B6> /xd2/xd3 <CJK>
++<U53C3> /xd2/xd4 <CJK>
++<U7C12> /xd2/xd5 <CJK>
++<U96D9> /xd2/xd6 <CJK>
++<U53DF> /xd2/xd7 <CJK>
++<U66FC> /xd2/xd8 <CJK>
++<U71EE> /xd2/xd9 <CJK>
++<U53EE> /xd2/xda <CJK>
++<U53E8> /xd2/xdb <CJK>
++<U53ED> /xd2/xdc <CJK>
++<U53FA> /xd2/xdd <CJK>
++<U5401> /xd2/xde <CJK>
++<U543D> /xd2/xdf <CJK>
++<U5440> /xd2/xe0 <CJK>
++<U542C> /xd2/xe1 <CJK>
++<U542D> /xd2/xe2 <CJK>
++<U543C> /xd2/xe3 <CJK>
++<U542E> /xd2/xe4 <CJK>
++<U5436> /xd2/xe5 <CJK>
++<U5429> /xd2/xe6 <CJK>
++<U541D> /xd2/xe7 <CJK>
++<U544E> /xd2/xe8 <CJK>
++<U548F> /xd2/xe9 <CJK>
++<U5475> /xd2/xea <CJK>
++<U548E> /xd2/xeb <CJK>
++<U545F> /xd2/xec <CJK>
++<U5471> /xd2/xed <CJK>
++<U5477> /xd2/xee <CJK>
++<U5470> /xd2/xef <CJK>
++<U5492> /xd2/xf0 <CJK>
++<U547B> /xd2/xf1 <CJK>
++<U5480> /xd2/xf2 <CJK>
++<U5476> /xd2/xf3 <CJK>
++<U5484> /xd2/xf4 <CJK>
++<U5490> /xd2/xf5 <CJK>
++<U5486> /xd2/xf6 <CJK>
++<U54C7> /xd2/xf7 <CJK>
++<U54A2> /xd2/xf8 <CJK>
++<U54B8> /xd2/xf9 <CJK>
++<U54A5> /xd2/xfa <CJK>
++<U54AC> /xd2/xfb <CJK>
++<U54C4> /xd2/xfc <CJK>
++<U54C8> /xd2/xfd <CJK>
++<U54A8> /xd2/xfe <CJK>
++<U54AB> /xd3/xa1 <CJK>
++<U54C2> /xd3/xa2 <CJK>
++<U54A4> /xd3/xa3 <CJK>
++<U54BE> /xd3/xa4 <CJK>
++<U54BC> /xd3/xa5 <CJK>
++<U54D8> /xd3/xa6 <CJK>
++<U54E5> /xd3/xa7 <CJK>
++<U54E6> /xd3/xa8 <CJK>
++<U550F> /xd3/xa9 <CJK>
++<U5514> /xd3/xaa <CJK>
++<U54FD> /xd3/xab <CJK>
++<U54EE> /xd3/xac <CJK>
++<U54ED> /xd3/xad <CJK>
++<U54FA> /xd3/xae <CJK>
++<U54E2> /xd3/xaf <CJK>
++<U5539> /xd3/xb0 <CJK>
++<U5540> /xd3/xb1 <CJK>
++<U5563> /xd3/xb2 <CJK>
++<U554C> /xd3/xb3 <CJK>
++<U552E> /xd3/xb4 <CJK>
++<U555C> /xd3/xb5 <CJK>
++<U5545> /xd3/xb6 <CJK>
++<U5556> /xd3/xb7 <CJK>
++<U5557> /xd3/xb8 <CJK>
++<U5538> /xd3/xb9 <CJK>
++<U5533> /xd3/xba <CJK>
++<U555D> /xd3/xbb <CJK>
++<U5599> /xd3/xbc <CJK>
++<U5580> /xd3/xbd <CJK>
++<U54AF> /xd3/xbe <CJK>
++<U558A> /xd3/xbf <CJK>
++<U559F> /xd3/xc0 <CJK>
++<U557B> /xd3/xc1 <CJK>
++<U557E> /xd3/xc2 <CJK>
++<U5598> /xd3/xc3 <CJK>
++<U559E> /xd3/xc4 <CJK>
++<U55AE> /xd3/xc5 <CJK>
++<U557C> /xd3/xc6 <CJK>
++<U5583> /xd3/xc7 <CJK>
++<U55A9> /xd3/xc8 <CJK>
++<U5587> /xd3/xc9 <CJK>
++<U55A8> /xd3/xca <CJK>
++<U55DA> /xd3/xcb <CJK>
++<U55C5> /xd3/xcc <CJK>
++<U55DF> /xd3/xcd <CJK>
++<U55C4> /xd3/xce <CJK>
++<U55DC> /xd3/xcf <CJK>
++<U55E4> /xd3/xd0 <CJK>
++<U55D4> /xd3/xd1 <CJK>
++<U5614> /xd3/xd2 <CJK>
++<U55F7> /xd3/xd3 <CJK>
++<U5616> /xd3/xd4 <CJK>
++<U55FE> /xd3/xd5 <CJK>
++<U55FD> /xd3/xd6 <CJK>
++<U561B> /xd3/xd7 <CJK>
++<U55F9> /xd3/xd8 <CJK>
++<U564E> /xd3/xd9 <CJK>
++<U5650> /xd3/xda <CJK>
++<U71DF> /xd3/xdb <CJK>
++<U5634> /xd3/xdc <CJK>
++<U5636> /xd3/xdd <CJK>
++<U5632> /xd3/xde <CJK>
++<U5638> /xd3/xdf <CJK>
++<U566B> /xd3/xe0 <CJK>
++<U5664> /xd3/xe1 <CJK>
++<U562F> /xd3/xe2 <CJK>
++<U566C> /xd3/xe3 <CJK>
++<U566A> /xd3/xe4 <CJK>
++<U5686> /xd3/xe5 <CJK>
++<U5680> /xd3/xe6 <CJK>
++<U568A> /xd3/xe7 <CJK>
++<U56A0> /xd3/xe8 <CJK>
++<U5694> /xd3/xe9 <CJK>
++<U568F> /xd3/xea <CJK>
++<U56A5> /xd3/xeb <CJK>
++<U56AE> /xd3/xec <CJK>
++<U56B6> /xd3/xed <CJK>
++<U56B4> /xd3/xee <CJK>
++<U56C2> /xd3/xef <CJK>
++<U56BC> /xd3/xf0 <CJK>
++<U56C1> /xd3/xf1 <CJK>
++<U56C3> /xd3/xf2 <CJK>
++<U56C0> /xd3/xf3 <CJK>
++<U56C8> /xd3/xf4 <CJK>
++<U56CE> /xd3/xf5 <CJK>
++<U56D1> /xd3/xf6 <CJK>
++<U56D3> /xd3/xf7 <CJK>
++<U56D7> /xd3/xf8 <CJK>
++<U56EE> /xd3/xf9 <CJK>
++<U56F9> /xd3/xfa <CJK>
++<U5700> /xd3/xfb <CJK>
++<U56FF> /xd3/xfc <CJK>
++<U5704> /xd3/xfd <CJK>
++<U5709> /xd3/xfe <CJK>
++<U5708> /xd4/xa1 <CJK>
++<U570B> /xd4/xa2 <CJK>
++<U570D> /xd4/xa3 <CJK>
++<U5713> /xd4/xa4 <CJK>
++<U5718> /xd4/xa5 <CJK>
++<U5716> /xd4/xa6 <CJK>
++<U55C7> /xd4/xa7 <CJK>
++<U571C> /xd4/xa8 <CJK>
++<U5726> /xd4/xa9 <CJK>
++<U5737> /xd4/xaa <CJK>
++<U5738> /xd4/xab <CJK>
++<U574E> /xd4/xac <CJK>
++<U573B> /xd4/xad <CJK>
++<U5740> /xd4/xae <CJK>
++<U574F> /xd4/xaf <CJK>
++<U5769> /xd4/xb0 <CJK>
++<U57C0> /xd4/xb1 <CJK>
++<U5788> /xd4/xb2 <CJK>
++<U5761> /xd4/xb3 <CJK>
++<U577F> /xd4/xb4 <CJK>
++<U5789> /xd4/xb5 <CJK>
++<U5793> /xd4/xb6 <CJK>
++<U57A0> /xd4/xb7 <CJK>
++<U57B3> /xd4/xb8 <CJK>
++<U57A4> /xd4/xb9 <CJK>
++<U57AA> /xd4/xba <CJK>
++<U57B0> /xd4/xbb <CJK>
++<U57C3> /xd4/xbc <CJK>
++<U57C6> /xd4/xbd <CJK>
++<U57D4> /xd4/xbe <CJK>
++<U57D2> /xd4/xbf <CJK>
++<U57D3> /xd4/xc0 <CJK>
++<U580A> /xd4/xc1 <CJK>
++<U57D6> /xd4/xc2 <CJK>
++<U57E3> /xd4/xc3 <CJK>
++<U580B> /xd4/xc4 <CJK>
++<U5819> /xd4/xc5 <CJK>
++<U581D> /xd4/xc6 <CJK>
++<U5872> /xd4/xc7 <CJK>
++<U5821> /xd4/xc8 <CJK>
++<U5862> /xd4/xc9 <CJK>
++<U584B> /xd4/xca <CJK>
++<U5870> /xd4/xcb <CJK>
++<U6BC0> /xd4/xcc <CJK>
++<U5852> /xd4/xcd <CJK>
++<U583D> /xd4/xce <CJK>
++<U5879> /xd4/xcf <CJK>
++<U5885> /xd4/xd0 <CJK>
++<U58B9> /xd4/xd1 <CJK>
++<U589F> /xd4/xd2 <CJK>
++<U58AB> /xd4/xd3 <CJK>
++<U58BA> /xd4/xd4 <CJK>
++<U58DE> /xd4/xd5 <CJK>
++<U58BB> /xd4/xd6 <CJK>
++<U58B8> /xd4/xd7 <CJK>
++<U58AE> /xd4/xd8 <CJK>
++<U58C5> /xd4/xd9 <CJK>
++<U58D3> /xd4/xda <CJK>
++<U58D1> /xd4/xdb <CJK>
++<U58D7> /xd4/xdc <CJK>
++<U58D9> /xd4/xdd <CJK>
++<U58D8> /xd4/xde <CJK>
++<U58E5> /xd4/xdf <CJK>
++<U58DC> /xd4/xe0 <CJK>
++<U58E4> /xd4/xe1 <CJK>
++<U58DF> /xd4/xe2 <CJK>
++<U58EF> /xd4/xe3 <CJK>
++<U58FA> /xd4/xe4 <CJK>
++<U58F9> /xd4/xe5 <CJK>
++<U58FB> /xd4/xe6 <CJK>
++<U58FC> /xd4/xe7 <CJK>
++<U58FD> /xd4/xe8 <CJK>
++<U5902> /xd4/xe9 <CJK>
++<U590A> /xd4/xea <CJK>
++<U5910> /xd4/xeb <CJK>
++<U591B> /xd4/xec <CJK>
++<U68A6> /xd4/xed <CJK>
++<U5925> /xd4/xee <CJK>
++<U592C> /xd4/xef <CJK>
++<U592D> /xd4/xf0 <CJK>
++<U5932> /xd4/xf1 <CJK>
++<U5938> /xd4/xf2 <CJK>
++<U593E> /xd4/xf3 <CJK>
++<U7AD2> /xd4/xf4 <CJK>
++<U5955> /xd4/xf5 <CJK>
++<U5950> /xd4/xf6 <CJK>
++<U594E> /xd4/xf7 <CJK>
++<U595A> /xd4/xf8 <CJK>
++<U5958> /xd4/xf9 <CJK>
++<U5962> /xd4/xfa <CJK>
++<U5960> /xd4/xfb <CJK>
++<U5967> /xd4/xfc <CJK>
++<U596C> /xd4/xfd <CJK>
++<U5969> /xd4/xfe <CJK>
++<U5978> /xd5/xa1 <CJK>
++<U5981> /xd5/xa2 <CJK>
++<U599D> /xd5/xa3 <CJK>
++<U4F5E> /xd5/xa4 <CJK>
++<U4FAB> /xd5/xa5 <CJK>
++<U59A3> /xd5/xa6 <CJK>
++<U59B2> /xd5/xa7 <CJK>
++<U59C6> /xd5/xa8 <CJK>
++<U59E8> /xd5/xa9 <CJK>
++<U59DC> /xd5/xaa <CJK>
++<U598D> /xd5/xab <CJK>
++<U59D9> /xd5/xac <CJK>
++<U59DA> /xd5/xad <CJK>
++<U5A25> /xd5/xae <CJK>
++<U5A1F> /xd5/xaf <CJK>
++<U5A11> /xd5/xb0 <CJK>
++<U5A1C> /xd5/xb1 <CJK>
++<U5A09> /xd5/xb2 <CJK>
++<U5A1A> /xd5/xb3 <CJK>
++<U5A40> /xd5/xb4 <CJK>
++<U5A6C> /xd5/xb5 <CJK>
++<U5A49> /xd5/xb6 <CJK>
++<U5A35> /xd5/xb7 <CJK>
++<U5A36> /xd5/xb8 <CJK>
++<U5A62> /xd5/xb9 <CJK>
++<U5A6A> /xd5/xba <CJK>
++<U5A9A> /xd5/xbb <CJK>
++<U5ABC> /xd5/xbc <CJK>
++<U5ABE> /xd5/xbd <CJK>
++<U5ACB> /xd5/xbe <CJK>
++<U5AC2> /xd5/xbf <CJK>
++<U5ABD> /xd5/xc0 <CJK>
++<U5AE3> /xd5/xc1 <CJK>
++<U5AD7> /xd5/xc2 <CJK>
++<U5AE6> /xd5/xc3 <CJK>
++<U5AE9> /xd5/xc4 <CJK>
++<U5AD6> /xd5/xc5 <CJK>
++<U5AFA> /xd5/xc6 <CJK>
++<U5AFB> /xd5/xc7 <CJK>
++<U5B0C> /xd5/xc8 <CJK>
++<U5B0B> /xd5/xc9 <CJK>
++<U5B16> /xd5/xca <CJK>
++<U5B32> /xd5/xcb <CJK>
++<U5AD0> /xd5/xcc <CJK>
++<U5B2A> /xd5/xcd <CJK>
++<U5B36> /xd5/xce <CJK>
++<U5B3E> /xd5/xcf <CJK>
++<U5B43> /xd5/xd0 <CJK>
++<U5B45> /xd5/xd1 <CJK>
++<U5B40> /xd5/xd2 <CJK>
++<U5B51> /xd5/xd3 <CJK>
++<U5B55> /xd5/xd4 <CJK>
++<U5B5A> /xd5/xd5 <CJK>
++<U5B5B> /xd5/xd6 <CJK>
++<U5B65> /xd5/xd7 <CJK>
++<U5B69> /xd5/xd8 <CJK>
++<U5B70> /xd5/xd9 <CJK>
++<U5B73> /xd5/xda <CJK>
++<U5B75> /xd5/xdb <CJK>
++<U5B78> /xd5/xdc <CJK>
++<U6588> /xd5/xdd <CJK>
++<U5B7A> /xd5/xde <CJK>
++<U5B80> /xd5/xdf <CJK>
++<U5B83> /xd5/xe0 <CJK>
++<U5BA6> /xd5/xe1 <CJK>
++<U5BB8> /xd5/xe2 <CJK>
++<U5BC3> /xd5/xe3 <CJK>
++<U5BC7> /xd5/xe4 <CJK>
++<U5BC9> /xd5/xe5 <CJK>
++<U5BD4> /xd5/xe6 <CJK>
++<U5BD0> /xd5/xe7 <CJK>
++<U5BE4> /xd5/xe8 <CJK>
++<U5BE6> /xd5/xe9 <CJK>
++<U5BE2> /xd5/xea <CJK>
++<U5BDE> /xd5/xeb <CJK>
++<U5BE5> /xd5/xec <CJK>
++<U5BEB> /xd5/xed <CJK>
++<U5BF0> /xd5/xee <CJK>
++<U5BF6> /xd5/xef <CJK>
++<U5BF3> /xd5/xf0 <CJK>
++<U5C05> /xd5/xf1 <CJK>
++<U5C07> /xd5/xf2 <CJK>
++<U5C08> /xd5/xf3 <CJK>
++<U5C0D> /xd5/xf4 <CJK>
++<U5C13> /xd5/xf5 <CJK>
++<U5C20> /xd5/xf6 <CJK>
++<U5C22> /xd5/xf7 <CJK>
++<U5C28> /xd5/xf8 <CJK>
++<U5C38> /xd5/xf9 <CJK>
++<U5C39> /xd5/xfa <CJK>
++<U5C41> /xd5/xfb <CJK>
++<U5C46> /xd5/xfc <CJK>
++<U5C4E> /xd5/xfd <CJK>
++<U5C53> /xd5/xfe <CJK>
++<U5C50> /xd6/xa1 <CJK>
++<U5C4F> /xd6/xa2 <CJK>
++<U5B71> /xd6/xa3 <CJK>
++<U5C6C> /xd6/xa4 <CJK>
++<U5C6E> /xd6/xa5 <CJK>
++<U4E62> /xd6/xa6 <CJK>
++<U5C76> /xd6/xa7 <CJK>
++<U5C79> /xd6/xa8 <CJK>
++<U5C8C> /xd6/xa9 <CJK>
++<U5C91> /xd6/xaa <CJK>
++<U5C94> /xd6/xab <CJK>
++<U599B> /xd6/xac <CJK>
++<U5CAB> /xd6/xad <CJK>
++<U5CBB> /xd6/xae <CJK>
++<U5CB6> /xd6/xaf <CJK>
++<U5CBC> /xd6/xb0 <CJK>
++<U5CB7> /xd6/xb1 <CJK>
++<U5CC5> /xd6/xb2 <CJK>
++<U5CBE> /xd6/xb3 <CJK>
++<U5CC7> /xd6/xb4 <CJK>
++<U5CD9> /xd6/xb5 <CJK>
++<U5CE9> /xd6/xb6 <CJK>
++<U5CFD> /xd6/xb7 <CJK>
++<U5CFA> /xd6/xb8 <CJK>
++<U5CED> /xd6/xb9 <CJK>
++<U5D8C> /xd6/xba <CJK>
++<U5CEA> /xd6/xbb <CJK>
++<U5D0B> /xd6/xbc <CJK>
++<U5D15> /xd6/xbd <CJK>
++<U5D17> /xd6/xbe <CJK>
++<U5D5C> /xd6/xbf <CJK>
++<U5D1F> /xd6/xc0 <CJK>
++<U5D1B> /xd6/xc1 <CJK>
++<U5D11> /xd6/xc2 <CJK>
++<U5D14> /xd6/xc3 <CJK>
++<U5D22> /xd6/xc4 <CJK>
++<U5D1A> /xd6/xc5 <CJK>
++<U5D19> /xd6/xc6 <CJK>
++<U5D18> /xd6/xc7 <CJK>
++<U5D4C> /xd6/xc8 <CJK>
++<U5D52> /xd6/xc9 <CJK>
++<U5D4E> /xd6/xca <CJK>
++<U5D4B> /xd6/xcb <CJK>
++<U5D6C> /xd6/xcc <CJK>
++<U5D73> /xd6/xcd <CJK>
++<U5D76> /xd6/xce <CJK>
++<U5D87> /xd6/xcf <CJK>
++<U5D84> /xd6/xd0 <CJK>
++<U5D82> /xd6/xd1 <CJK>
++<U5DA2> /xd6/xd2 <CJK>
++<U5D9D> /xd6/xd3 <CJK>
++<U5DAC> /xd6/xd4 <CJK>
++<U5DAE> /xd6/xd5 <CJK>
++<U5DBD> /xd6/xd6 <CJK>
++<U5D90> /xd6/xd7 <CJK>
++<U5DB7> /xd6/xd8 <CJK>
++<U5DBC> /xd6/xd9 <CJK>
++<U5DC9> /xd6/xda <CJK>
++<U5DCD> /xd6/xdb <CJK>
++<U5DD3> /xd6/xdc <CJK>
++<U5DD2> /xd6/xdd <CJK>
++<U5DD6> /xd6/xde <CJK>
++<U5DDB> /xd6/xdf <CJK>
++<U5DEB> /xd6/xe0 <CJK>
++<U5DF2> /xd6/xe1 <CJK>
++<U5DF5> /xd6/xe2 <CJK>
++<U5E0B> /xd6/xe3 <CJK>
++<U5E1A> /xd6/xe4 <CJK>
++<U5E19> /xd6/xe5 <CJK>
++<U5E11> /xd6/xe6 <CJK>
++<U5E1B> /xd6/xe7 <CJK>
++<U5E36> /xd6/xe8 <CJK>
++<U5E37> /xd6/xe9 <CJK>
++<U5E44> /xd6/xea <CJK>
++<U5E43> /xd6/xeb <CJK>
++<U5E40> /xd6/xec <CJK>
++<U5E4E> /xd6/xed <CJK>
++<U5E57> /xd6/xee <CJK>
++<U5E54> /xd6/xef <CJK>
++<U5E5F> /xd6/xf0 <CJK>
++<U5E62> /xd6/xf1 <CJK>
++<U5E64> /xd6/xf2 <CJK>
++<U5E47> /xd6/xf3 <CJK>
++<U5E75> /xd6/xf4 <CJK>
++<U5E76> /xd6/xf5 <CJK>
++<U5E7A> /xd6/xf6 <CJK>
++<U9EBC> /xd6/xf7 <CJK>
++<U5E7F> /xd6/xf8 <CJK>
++<U5EA0> /xd6/xf9 <CJK>
++<U5EC1> /xd6/xfa <CJK>
++<U5EC2> /xd6/xfb <CJK>
++<U5EC8> /xd6/xfc <CJK>
++<U5ED0> /xd6/xfd <CJK>
++<U5ECF> /xd6/xfe <CJK>
++<U5ED6> /xd7/xa1 <CJK>
++<U5EE3> /xd7/xa2 <CJK>
++<U5EDD> /xd7/xa3 <CJK>
++<U5EDA> /xd7/xa4 <CJK>
++<U5EDB> /xd7/xa5 <CJK>
++<U5EE2> /xd7/xa6 <CJK>
++<U5EE1> /xd7/xa7 <CJK>
++<U5EE8> /xd7/xa8 <CJK>
++<U5EE9> /xd7/xa9 <CJK>
++<U5EEC> /xd7/xaa <CJK>
++<U5EF1> /xd7/xab <CJK>
++<U5EF3> /xd7/xac <CJK>
++<U5EF0> /xd7/xad <CJK>
++<U5EF4> /xd7/xae <CJK>
++<U5EF8> /xd7/xaf <CJK>
++<U5EFE> /xd7/xb0 <CJK>
++<U5F03> /xd7/xb1 <CJK>
++<U5F09> /xd7/xb2 <CJK>
++<U5F5D> /xd7/xb3 <CJK>
++<U5F5C> /xd7/xb4 <CJK>
++<U5F0B> /xd7/xb5 <CJK>
++<U5F11> /xd7/xb6 <CJK>
++<U5F16> /xd7/xb7 <CJK>
++<U5F29> /xd7/xb8 <CJK>
++<U5F2D> /xd7/xb9 <CJK>
++<U5F38> /xd7/xba <CJK>
++<U5F41> /xd7/xbb <CJK>
++<U5F48> /xd7/xbc <CJK>
++<U5F4C> /xd7/xbd <CJK>
++<U5F4E> /xd7/xbe <CJK>
++<U5F2F> /xd7/xbf <CJK>
++<U5F51> /xd7/xc0 <CJK>
++<U5F56> /xd7/xc1 <CJK>
++<U5F57> /xd7/xc2 <CJK>
++<U5F59> /xd7/xc3 <CJK>
++<U5F61> /xd7/xc4 <CJK>
++<U5F6D> /xd7/xc5 <CJK>
++<U5F73> /xd7/xc6 <CJK>
++<U5F77> /xd7/xc7 <CJK>
++<U5F83> /xd7/xc8 <CJK>
++<U5F82> /xd7/xc9 <CJK>
++<U5F7F> /xd7/xca <CJK>
++<U5F8A> /xd7/xcb <CJK>
++<U5F88> /xd7/xcc <CJK>
++<U5F91> /xd7/xcd <CJK>
++<U5F87> /xd7/xce <CJK>
++<U5F9E> /xd7/xcf <CJK>
++<U5F99> /xd7/xd0 <CJK>
++<U5F98> /xd7/xd1 <CJK>
++<U5FA0> /xd7/xd2 <CJK>
++<U5FA8> /xd7/xd3 <CJK>
++<U5FAD> /xd7/xd4 <CJK>
++<U5FBC> /xd7/xd5 <CJK>
++<U5FD6> /xd7/xd6 <CJK>
++<U5FFB> /xd7/xd7 <CJK>
++<U5FE4> /xd7/xd8 <CJK>
++<U5FF8> /xd7/xd9 <CJK>
++<U5FF1> /xd7/xda <CJK>
++<U5FDD> /xd7/xdb <CJK>
++<U60B3> /xd7/xdc <CJK>
++<U5FFF> /xd7/xdd <CJK>
++<U6021> /xd7/xde <CJK>
++<U6060> /xd7/xdf <CJK>
++<U6019> /xd7/xe0 <CJK>
++<U6010> /xd7/xe1 <CJK>
++<U6029> /xd7/xe2 <CJK>
++<U600E> /xd7/xe3 <CJK>
++<U6031> /xd7/xe4 <CJK>
++<U601B> /xd7/xe5 <CJK>
++<U6015> /xd7/xe6 <CJK>
++<U602B> /xd7/xe7 <CJK>
++<U6026> /xd7/xe8 <CJK>
++<U600F> /xd7/xe9 <CJK>
++<U603A> /xd7/xea <CJK>
++<U605A> /xd7/xeb <CJK>
++<U6041> /xd7/xec <CJK>
++<U606A> /xd7/xed <CJK>
++<U6077> /xd7/xee <CJK>
++<U605F> /xd7/xef <CJK>
++<U604A> /xd7/xf0 <CJK>
++<U6046> /xd7/xf1 <CJK>
++<U604D> /xd7/xf2 <CJK>
++<U6063> /xd7/xf3 <CJK>
++<U6043> /xd7/xf4 <CJK>
++<U6064> /xd7/xf5 <CJK>
++<U6042> /xd7/xf6 <CJK>
++<U606C> /xd7/xf7 <CJK>
++<U606B> /xd7/xf8 <CJK>
++<U6059> /xd7/xf9 <CJK>
++<U6081> /xd7/xfa <CJK>
++<U608D> /xd7/xfb <CJK>
++<U60E7> /xd7/xfc <CJK>
++<U6083> /xd7/xfd <CJK>
++<U609A> /xd7/xfe <CJK>
++<U6084> /xd8/xa1 <CJK>
++<U609B> /xd8/xa2 <CJK>
++<U6096> /xd8/xa3 <CJK>
++<U6097> /xd8/xa4 <CJK>
++<U6092> /xd8/xa5 <CJK>
++<U60A7> /xd8/xa6 <CJK>
++<U608B> /xd8/xa7 <CJK>
++<U60E1> /xd8/xa8 <CJK>
++<U60B8> /xd8/xa9 <CJK>
++<U60E0> /xd8/xaa <CJK>
++<U60D3> /xd8/xab <CJK>
++<U60B4> /xd8/xac <CJK>
++<U5FF0> /xd8/xad <CJK>
++<U60BD> /xd8/xae <CJK>
++<U60C6> /xd8/xaf <CJK>
++<U60B5> /xd8/xb0 <CJK>
++<U60D8> /xd8/xb1 <CJK>
++<U614D> /xd8/xb2 <CJK>
++<U6115> /xd8/xb3 <CJK>
++<U6106> /xd8/xb4 <CJK>
++<U60F6> /xd8/xb5 <CJK>
++<U60F7> /xd8/xb6 <CJK>
++<U6100> /xd8/xb7 <CJK>
++<U60F4> /xd8/xb8 <CJK>
++<U60FA> /xd8/xb9 <CJK>
++<U6103> /xd8/xba <CJK>
++<U6121> /xd8/xbb <CJK>
++<U60FB> /xd8/xbc <CJK>
++<U60F1> /xd8/xbd <CJK>
++<U610D> /xd8/xbe <CJK>
++<U610E> /xd8/xbf <CJK>
++<U6147> /xd8/xc0 <CJK>
++<U613E> /xd8/xc1 <CJK>
++<U6128> /xd8/xc2 <CJK>
++<U6127> /xd8/xc3 <CJK>
++<U614A> /xd8/xc4 <CJK>
++<U613F> /xd8/xc5 <CJK>
++<U613C> /xd8/xc6 <CJK>
++<U612C> /xd8/xc7 <CJK>
++<U6134> /xd8/xc8 <CJK>
++<U613D> /xd8/xc9 <CJK>
++<U6142> /xd8/xca <CJK>
++<U6144> /xd8/xcb <CJK>
++<U6173> /xd8/xcc <CJK>
++<U6177> /xd8/xcd <CJK>
++<U6158> /xd8/xce <CJK>
++<U6159> /xd8/xcf <CJK>
++<U615A> /xd8/xd0 <CJK>
++<U616B> /xd8/xd1 <CJK>
++<U6174> /xd8/xd2 <CJK>
++<U616F> /xd8/xd3 <CJK>
++<U6165> /xd8/xd4 <CJK>
++<U6171> /xd8/xd5 <CJK>
++<U615F> /xd8/xd6 <CJK>
++<U615D> /xd8/xd7 <CJK>
++<U6153> /xd8/xd8 <CJK>
++<U6175> /xd8/xd9 <CJK>
++<U6199> /xd8/xda <CJK>
++<U6196> /xd8/xdb <CJK>
++<U6187> /xd8/xdc <CJK>
++<U61AC> /xd8/xdd <CJK>
++<U6194> /xd8/xde <CJK>
++<U619A> /xd8/xdf <CJK>
++<U618A> /xd8/xe0 <CJK>
++<U6191> /xd8/xe1 <CJK>
++<U61AB> /xd8/xe2 <CJK>
++<U61AE> /xd8/xe3 <CJK>
++<U61CC> /xd8/xe4 <CJK>
++<U61CA> /xd8/xe5 <CJK>
++<U61C9> /xd8/xe6 <CJK>
++<U61F7> /xd8/xe7 <CJK>
++<U61C8> /xd8/xe8 <CJK>
++<U61C3> /xd8/xe9 <CJK>
++<U61C6> /xd8/xea <CJK>
++<U61BA> /xd8/xeb <CJK>
++<U61CB> /xd8/xec <CJK>
++<U7F79> /xd8/xed <CJK>
++<U61CD> /xd8/xee <CJK>
++<U61E6> /xd8/xef <CJK>
++<U61E3> /xd8/xf0 <CJK>
++<U61F6> /xd8/xf1 <CJK>
++<U61FA> /xd8/xf2 <CJK>
++<U61F4> /xd8/xf3 <CJK>
++<U61FF> /xd8/xf4 <CJK>
++<U61FD> /xd8/xf5 <CJK>
++<U61FC> /xd8/xf6 <CJK>
++<U61FE> /xd8/xf7 <CJK>
++<U6200> /xd8/xf8 <CJK>
++<U6208> /xd8/xf9 <CJK>
++<U6209> /xd8/xfa <CJK>
++<U620D> /xd8/xfb <CJK>
++<U620C> /xd8/xfc <CJK>
++<U6214> /xd8/xfd <CJK>
++<U621B> /xd8/xfe <CJK>
++<U621E> /xd9/xa1 <CJK>
++<U6221> /xd9/xa2 <CJK>
++<U622A> /xd9/xa3 <CJK>
++<U622E> /xd9/xa4 <CJK>
++<U6230> /xd9/xa5 <CJK>
++<U6232> /xd9/xa6 <CJK>
++<U6233> /xd9/xa7 <CJK>
++<U6241> /xd9/xa8 <CJK>
++<U624E> /xd9/xa9 <CJK>
++<U625E> /xd9/xaa <CJK>
++<U6263> /xd9/xab <CJK>
++<U625B> /xd9/xac <CJK>
++<U6260> /xd9/xad <CJK>
++<U6268> /xd9/xae <CJK>
++<U627C> /xd9/xaf <CJK>
++<U6282> /xd9/xb0 <CJK>
++<U6289> /xd9/xb1 <CJK>
++<U627E> /xd9/xb2 <CJK>
++<U6292> /xd9/xb3 <CJK>
++<U6293> /xd9/xb4 <CJK>
++<U6296> /xd9/xb5 <CJK>
++<U62D4> /xd9/xb6 <CJK>
++<U6283> /xd9/xb7 <CJK>
++<U6294> /xd9/xb8 <CJK>
++<U62D7> /xd9/xb9 <CJK>
++<U62D1> /xd9/xba <CJK>
++<U62BB> /xd9/xbb <CJK>
++<U62CF> /xd9/xbc <CJK>
++<U62FF> /xd9/xbd <CJK>
++<U62C6> /xd9/xbe <CJK>
++<U64D4> /xd9/xbf <CJK>
++<U62C8> /xd9/xc0 <CJK>
++<U62DC> /xd9/xc1 <CJK>
++<U62CC> /xd9/xc2 <CJK>
++<U62CA> /xd9/xc3 <CJK>
++<U62C2> /xd9/xc4 <CJK>
++<U62C7> /xd9/xc5 <CJK>
++<U629B> /xd9/xc6 <CJK>
++<U62C9> /xd9/xc7 <CJK>
++<U630C> /xd9/xc8 <CJK>
++<U62EE> /xd9/xc9 <CJK>
++<U62F1> /xd9/xca <CJK>
++<U6327> /xd9/xcb <CJK>
++<U6302> /xd9/xcc <CJK>
++<U6308> /xd9/xcd <CJK>
++<U62EF> /xd9/xce <CJK>
++<U62F5> /xd9/xcf <CJK>
++<U6350> /xd9/xd0 <CJK>
++<U633E> /xd9/xd1 <CJK>
++<U634D> /xd9/xd2 <CJK>
++<U641C> /xd9/xd3 <CJK>
++<U634F> /xd9/xd4 <CJK>
++<U6396> /xd9/xd5 <CJK>
++<U638E> /xd9/xd6 <CJK>
++<U6380> /xd9/xd7 <CJK>
++<U63AB> /xd9/xd8 <CJK>
++<U6376> /xd9/xd9 <CJK>
++<U63A3> /xd9/xda <CJK>
++<U638F> /xd9/xdb <CJK>
++<U6389> /xd9/xdc <CJK>
++<U639F> /xd9/xdd <CJK>
++<U63B5> /xd9/xde <CJK>
++<U636B> /xd9/xdf <CJK>
++<U6369> /xd9/xe0 <CJK>
++<U63BE> /xd9/xe1 <CJK>
++<U63E9> /xd9/xe2 <CJK>
++<U63C0> /xd9/xe3 <CJK>
++<U63C6> /xd9/xe4 <CJK>
++<U63E3> /xd9/xe5 <CJK>
++<U63C9> /xd9/xe6 <CJK>
++<U63D2> /xd9/xe7 <CJK>
++<U63F6> /xd9/xe8 <CJK>
++<U63C4> /xd9/xe9 <CJK>
++<U6416> /xd9/xea <CJK>
++<U6434> /xd9/xeb <CJK>
++<U6406> /xd9/xec <CJK>
++<U6413> /xd9/xed <CJK>
++<U6426> /xd9/xee <CJK>
++<U6436> /xd9/xef <CJK>
++<U651D> /xd9/xf0 <CJK>
++<U6417> /xd9/xf1 <CJK>
++<U6428> /xd9/xf2 <CJK>
++<U640F> /xd9/xf3 <CJK>
++<U6467> /xd9/xf4 <CJK>
++<U646F> /xd9/xf5 <CJK>
++<U6476> /xd9/xf6 <CJK>
++<U644E> /xd9/xf7 <CJK>
++<U652A> /xd9/xf8 <CJK>
++<U6495> /xd9/xf9 <CJK>
++<U6493> /xd9/xfa <CJK>
++<U64A5> /xd9/xfb <CJK>
++<U64A9> /xd9/xfc <CJK>
++<U6488> /xd9/xfd <CJK>
++<U64BC> /xd9/xfe <CJK>
++<U64DA> /xda/xa1 <CJK>
++<U64D2> /xda/xa2 <CJK>
++<U64C5> /xda/xa3 <CJK>
++<U64C7> /xda/xa4 <CJK>
++<U64BB> /xda/xa5 <CJK>
++<U64D8> /xda/xa6 <CJK>
++<U64C2> /xda/xa7 <CJK>
++<U64F1> /xda/xa8 <CJK>
++<U64E7> /xda/xa9 <CJK>
++<U8209> /xda/xaa <CJK>
++<U64E0> /xda/xab <CJK>
++<U64E1> /xda/xac <CJK>
++<U62AC> /xda/xad <CJK>
++<U64E3> /xda/xae <CJK>
++<U64EF> /xda/xaf <CJK>
++<U652C> /xda/xb0 <CJK>
++<U64F6> /xda/xb1 <CJK>
++<U64F4> /xda/xb2 <CJK>
++<U64F2> /xda/xb3 <CJK>
++<U64FA> /xda/xb4 <CJK>
++<U6500> /xda/xb5 <CJK>
++<U64FD> /xda/xb6 <CJK>
++<U6518> /xda/xb7 <CJK>
++<U651C> /xda/xb8 <CJK>
++<U6505> /xda/xb9 <CJK>
++<U6524> /xda/xba <CJK>
++<U6523> /xda/xbb <CJK>
++<U652B> /xda/xbc <CJK>
++<U6534> /xda/xbd <CJK>
++<U6535> /xda/xbe <CJK>
++<U6537> /xda/xbf <CJK>
++<U6536> /xda/xc0 <CJK>
++<U6538> /xda/xc1 <CJK>
++<U754B> /xda/xc2 <CJK>
++<U6548> /xda/xc3 <CJK>
++<U6556> /xda/xc4 <CJK>
++<U6555> /xda/xc5 <CJK>
++<U654D> /xda/xc6 <CJK>
++<U6558> /xda/xc7 <CJK>
++<U655E> /xda/xc8 <CJK>
++<U655D> /xda/xc9 <CJK>
++<U6572> /xda/xca <CJK>
++<U6578> /xda/xcb <CJK>
++<U6582> /xda/xcc <CJK>
++<U6583> /xda/xcd <CJK>
++<U8B8A> /xda/xce <CJK>
++<U659B> /xda/xcf <CJK>
++<U659F> /xda/xd0 <CJK>
++<U65AB> /xda/xd1 <CJK>
++<U65B7> /xda/xd2 <CJK>
++<U65C3> /xda/xd3 <CJK>
++<U65C6> /xda/xd4 <CJK>
++<U65C1> /xda/xd5 <CJK>
++<U65C4> /xda/xd6 <CJK>
++<U65CC> /xda/xd7 <CJK>
++<U65D2> /xda/xd8 <CJK>
++<U65DB> /xda/xd9 <CJK>
++<U65D9> /xda/xda <CJK>
++<U65E0> /xda/xdb <CJK>
++<U65E1> /xda/xdc <CJK>
++<U65F1> /xda/xdd <CJK>
++<U6772> /xda/xde <CJK>
++<U660A> /xda/xdf <CJK>
++<U6603> /xda/xe0 <CJK>
++<U65FB> /xda/xe1 <CJK>
++<U6773> /xda/xe2 <CJK>
++<U6635> /xda/xe3 <CJK>
++<U6636> /xda/xe4 <CJK>
++<U6634> /xda/xe5 <CJK>
++<U661C> /xda/xe6 <CJK>
++<U664F> /xda/xe7 <CJK>
++<U6644> /xda/xe8 <CJK>
++<U6649> /xda/xe9 <CJK>
++<U6641> /xda/xea <CJK>
++<U665E> /xda/xeb <CJK>
++<U665D> /xda/xec <CJK>
++<U6664> /xda/xed <CJK>
++<U6667> /xda/xee <CJK>
++<U6668> /xda/xef <CJK>
++<U665F> /xda/xf0 <CJK>
++<U6662> /xda/xf1 <CJK>
++<U6670> /xda/xf2 <CJK>
++<U6683> /xda/xf3 <CJK>
++<U6688> /xda/xf4 <CJK>
++<U668E> /xda/xf5 <CJK>
++<U6689> /xda/xf6 <CJK>
++<U6684> /xda/xf7 <CJK>
++<U6698> /xda/xf8 <CJK>
++<U669D> /xda/xf9 <CJK>
++<U66C1> /xda/xfa <CJK>
++<U66B9> /xda/xfb <CJK>
++<U66C9> /xda/xfc <CJK>
++<U66BE> /xda/xfd <CJK>
++<U66BC> /xda/xfe <CJK>
++<U66C4> /xdb/xa1 <CJK>
++<U66B8> /xdb/xa2 <CJK>
++<U66D6> /xdb/xa3 <CJK>
++<U66DA> /xdb/xa4 <CJK>
++<U66E0> /xdb/xa5 <CJK>
++<U663F> /xdb/xa6 <CJK>
++<U66E6> /xdb/xa7 <CJK>
++<U66E9> /xdb/xa8 <CJK>
++<U66F0> /xdb/xa9 <CJK>
++<U66F5> /xdb/xaa <CJK>
++<U66F7> /xdb/xab <CJK>
++<U670F> /xdb/xac <CJK>
++<U6716> /xdb/xad <CJK>
++<U671E> /xdb/xae <CJK>
++<U6726> /xdb/xaf <CJK>
++<U6727> /xdb/xb0 <CJK>
++<U9738> /xdb/xb1 <CJK>
++<U672E> /xdb/xb2 <CJK>
++<U673F> /xdb/xb3 <CJK>
++<U6736> /xdb/xb4 <CJK>
++<U6741> /xdb/xb5 <CJK>
++<U6738> /xdb/xb6 <CJK>
++<U6737> /xdb/xb7 <CJK>
++<U6746> /xdb/xb8 <CJK>
++<U675E> /xdb/xb9 <CJK>
++<U6760> /xdb/xba <CJK>
++<U6759> /xdb/xbb <CJK>
++<U6763> /xdb/xbc <CJK>
++<U6764> /xdb/xbd <CJK>
++<U6789> /xdb/xbe <CJK>
++<U6770> /xdb/xbf <CJK>
++<U67A9> /xdb/xc0 <CJK>
++<U677C> /xdb/xc1 <CJK>
++<U676A> /xdb/xc2 <CJK>
++<U678C> /xdb/xc3 <CJK>
++<U678B> /xdb/xc4 <CJK>
++<U67A6> /xdb/xc5 <CJK>
++<U67A1> /xdb/xc6 <CJK>
++<U6785> /xdb/xc7 <CJK>
++<U67B7> /xdb/xc8 <CJK>
++<U67EF> /xdb/xc9 <CJK>
++<U67B4> /xdb/xca <CJK>
++<U67EC> /xdb/xcb <CJK>
++<U67B3> /xdb/xcc <CJK>
++<U67E9> /xdb/xcd <CJK>
++<U67B8> /xdb/xce <CJK>
++<U67E4> /xdb/xcf <CJK>
++<U67DE> /xdb/xd0 <CJK>
++<U67DD> /xdb/xd1 <CJK>
++<U67E2> /xdb/xd2 <CJK>
++<U67EE> /xdb/xd3 <CJK>
++<U67B9> /xdb/xd4 <CJK>
++<U67CE> /xdb/xd5 <CJK>
++<U67C6> /xdb/xd6 <CJK>
++<U67E7> /xdb/xd7 <CJK>
++<U6A9C> /xdb/xd8 <CJK>
++<U681E> /xdb/xd9 <CJK>
++<U6846> /xdb/xda <CJK>
++<U6829> /xdb/xdb <CJK>
++<U6840> /xdb/xdc <CJK>
++<U684D> /xdb/xdd <CJK>
++<U6832> /xdb/xde <CJK>
++<U684E> /xdb/xdf <CJK>
++<U68B3> /xdb/xe0 <CJK>
++<U682B> /xdb/xe1 <CJK>
++<U6859> /xdb/xe2 <CJK>
++<U6863> /xdb/xe3 <CJK>
++<U6877> /xdb/xe4 <CJK>
++<U687F> /xdb/xe5 <CJK>
++<U689F> /xdb/xe6 <CJK>
++<U688F> /xdb/xe7 <CJK>
++<U68AD> /xdb/xe8 <CJK>
++<U6894> /xdb/xe9 <CJK>
++<U689D> /xdb/xea <CJK>
++<U689B> /xdb/xeb <CJK>
++<U6883> /xdb/xec <CJK>
++<U6AAE> /xdb/xed <CJK>
++<U68B9> /xdb/xee <CJK>
++<U6874> /xdb/xef <CJK>
++<U68B5> /xdb/xf0 <CJK>
++<U68A0> /xdb/xf1 <CJK>
++<U68BA> /xdb/xf2 <CJK>
++<U690F> /xdb/xf3 <CJK>
++<U688D> /xdb/xf4 <CJK>
++<U687E> /xdb/xf5 <CJK>
++<U6901> /xdb/xf6 <CJK>
++<U68CA> /xdb/xf7 <CJK>
++<U6908> /xdb/xf8 <CJK>
++<U68D8> /xdb/xf9 <CJK>
++<U6922> /xdb/xfa <CJK>
++<U6926> /xdb/xfb <CJK>
++<U68E1> /xdb/xfc <CJK>
++<U690C> /xdb/xfd <CJK>
++<U68CD> /xdb/xfe <CJK>
++<U68D4> /xdc/xa1 <CJK>
++<U68E7> /xdc/xa2 <CJK>
++<U68D5> /xdc/xa3 <CJK>
++<U6936> /xdc/xa4 <CJK>
++<U6912> /xdc/xa5 <CJK>
++<U6904> /xdc/xa6 <CJK>
++<U68D7> /xdc/xa7 <CJK>
++<U68E3> /xdc/xa8 <CJK>
++<U6925> /xdc/xa9 <CJK>
++<U68F9> /xdc/xaa <CJK>
++<U68E0> /xdc/xab <CJK>
++<U68EF> /xdc/xac <CJK>
++<U6928> /xdc/xad <CJK>
++<U692A> /xdc/xae <CJK>
++<U691A> /xdc/xaf <CJK>
++<U6923> /xdc/xb0 <CJK>
++<U6921> /xdc/xb1 <CJK>
++<U68C6> /xdc/xb2 <CJK>
++<U6979> /xdc/xb3 <CJK>
++<U6977> /xdc/xb4 <CJK>
++<U695C> /xdc/xb5 <CJK>
++<U6978> /xdc/xb6 <CJK>
++<U696B> /xdc/xb7 <CJK>
++<U6954> /xdc/xb8 <CJK>
++<U697E> /xdc/xb9 <CJK>
++<U696E> /xdc/xba <CJK>
++<U6939> /xdc/xbb <CJK>
++<U6974> /xdc/xbc <CJK>
++<U693D> /xdc/xbd <CJK>
++<U6959> /xdc/xbe <CJK>
++<U6930> /xdc/xbf <CJK>
++<U6961> /xdc/xc0 <CJK>
++<U695E> /xdc/xc1 <CJK>
++<U695D> /xdc/xc2 <CJK>
++<U6981> /xdc/xc3 <CJK>
++<U696A> /xdc/xc4 <CJK>
++<U69B2> /xdc/xc5 <CJK>
++<U69AE> /xdc/xc6 <CJK>
++<U69D0> /xdc/xc7 <CJK>
++<U69BF> /xdc/xc8 <CJK>
++<U69C1> /xdc/xc9 <CJK>
++<U69D3> /xdc/xca <CJK>
++<U69BE> /xdc/xcb <CJK>
++<U69CE> /xdc/xcc <CJK>
++<U5BE8> /xdc/xcd <CJK>
++<U69CA> /xdc/xce <CJK>
++<U69DD> /xdc/xcf <CJK>
++<U69BB> /xdc/xd0 <CJK>
++<U69C3> /xdc/xd1 <CJK>
++<U69A7> /xdc/xd2 <CJK>
++<U6A2E> /xdc/xd3 <CJK>
++<U6991> /xdc/xd4 <CJK>
++<U69A0> /xdc/xd5 <CJK>
++<U699C> /xdc/xd6 <CJK>
++<U6995> /xdc/xd7 <CJK>
++<U69B4> /xdc/xd8 <CJK>
++<U69DE> /xdc/xd9 <CJK>
++<U69E8> /xdc/xda <CJK>
++<U6A02> /xdc/xdb <CJK>
++<U6A1B> /xdc/xdc <CJK>
++<U69FF> /xdc/xdd <CJK>
++<U6B0A> /xdc/xde <CJK>
++<U69F9> /xdc/xdf <CJK>
++<U69F2> /xdc/xe0 <CJK>
++<U69E7> /xdc/xe1 <CJK>
++<U6A05> /xdc/xe2 <CJK>
++<U69B1> /xdc/xe3 <CJK>
++<U6A1E> /xdc/xe4 <CJK>
++<U69ED> /xdc/xe5 <CJK>
++<U6A14> /xdc/xe6 <CJK>
++<U69EB> /xdc/xe7 <CJK>
++<U6A0A> /xdc/xe8 <CJK>
++<U6A12> /xdc/xe9 <CJK>
++<U6AC1> /xdc/xea <CJK>
++<U6A23> /xdc/xeb <CJK>
++<U6A13> /xdc/xec <CJK>
++<U6A44> /xdc/xed <CJK>
++<U6A0C> /xdc/xee <CJK>
++<U6A72> /xdc/xef <CJK>
++<U6A36> /xdc/xf0 <CJK>
++<U6A78> /xdc/xf1 <CJK>
++<U6A47> /xdc/xf2 <CJK>
++<U6A62> /xdc/xf3 <CJK>
++<U6A59> /xdc/xf4 <CJK>
++<U6A66> /xdc/xf5 <CJK>
++<U6A48> /xdc/xf6 <CJK>
++<U6A38> /xdc/xf7 <CJK>
++<U6A22> /xdc/xf8 <CJK>
++<U6A90> /xdc/xf9 <CJK>
++<U6A8D> /xdc/xfa <CJK>
++<U6AA0> /xdc/xfb <CJK>
++<U6A84> /xdc/xfc <CJK>
++<U6AA2> /xdc/xfd <CJK>
++<U6AA3> /xdc/xfe <CJK>
++<U6A97> /xdd/xa1 <CJK>
++<U8617> /xdd/xa2 <CJK>
++<U6ABB> /xdd/xa3 <CJK>
++<U6AC3> /xdd/xa4 <CJK>
++<U6AC2> /xdd/xa5 <CJK>
++<U6AB8> /xdd/xa6 <CJK>
++<U6AB3> /xdd/xa7 <CJK>
++<U6AAC> /xdd/xa8 <CJK>
++<U6ADE> /xdd/xa9 <CJK>
++<U6AD1> /xdd/xaa <CJK>
++<U6ADF> /xdd/xab <CJK>
++<U6AAA> /xdd/xac <CJK>
++<U6ADA> /xdd/xad <CJK>
++<U6AEA> /xdd/xae <CJK>
++<U6AFB> /xdd/xaf <CJK>
++<U6B05> /xdd/xb0 <CJK>
++<U8616> /xdd/xb1 <CJK>
++<U6AFA> /xdd/xb2 <CJK>
++<U6B12> /xdd/xb3 <CJK>
++<U6B16> /xdd/xb4 <CJK>
++<U9B31> /xdd/xb5 <CJK>
++<U6B1F> /xdd/xb6 <CJK>
++<U6B38> /xdd/xb7 <CJK>
++<U6B37> /xdd/xb8 <CJK>
++<U76DC> /xdd/xb9 <CJK>
++<U6B39> /xdd/xba <CJK>
++<U98EE> /xdd/xbb <CJK>
++<U6B47> /xdd/xbc <CJK>
++<U6B43> /xdd/xbd <CJK>
++<U6B49> /xdd/xbe <CJK>
++<U6B50> /xdd/xbf <CJK>
++<U6B59> /xdd/xc0 <CJK>
++<U6B54> /xdd/xc1 <CJK>
++<U6B5B> /xdd/xc2 <CJK>
++<U6B5F> /xdd/xc3 <CJK>
++<U6B61> /xdd/xc4 <CJK>
++<U6B78> /xdd/xc5 <CJK>
++<U6B79> /xdd/xc6 <CJK>
++<U6B7F> /xdd/xc7 <CJK>
++<U6B80> /xdd/xc8 <CJK>
++<U6B84> /xdd/xc9 <CJK>
++<U6B83> /xdd/xca <CJK>
++<U6B8D> /xdd/xcb <CJK>
++<U6B98> /xdd/xcc <CJK>
++<U6B95> /xdd/xcd <CJK>
++<U6B9E> /xdd/xce <CJK>
++<U6BA4> /xdd/xcf <CJK>
++<U6BAA> /xdd/xd0 <CJK>
++<U6BAB> /xdd/xd1 <CJK>
++<U6BAF> /xdd/xd2 <CJK>
++<U6BB2> /xdd/xd3 <CJK>
++<U6BB1> /xdd/xd4 <CJK>
++<U6BB3> /xdd/xd5 <CJK>
++<U6BB7> /xdd/xd6 <CJK>
++<U6BBC> /xdd/xd7 <CJK>
++<U6BC6> /xdd/xd8 <CJK>
++<U6BCB> /xdd/xd9 <CJK>
++<U6BD3> /xdd/xda <CJK>
++<U6BDF> /xdd/xdb <CJK>
++<U6BEC> /xdd/xdc <CJK>
++<U6BEB> /xdd/xdd <CJK>
++<U6BF3> /xdd/xde <CJK>
++<U6BEF> /xdd/xdf <CJK>
++<U9EBE> /xdd/xe0 <CJK>
++<U6C08> /xdd/xe1 <CJK>
++<U6C13> /xdd/xe2 <CJK>
++<U6C14> /xdd/xe3 <CJK>
++<U6C1B> /xdd/xe4 <CJK>
++<U6C24> /xdd/xe5 <CJK>
++<U6C23> /xdd/xe6 <CJK>
++<U6C5E> /xdd/xe7 <CJK>
++<U6C55> /xdd/xe8 <CJK>
++<U6C62> /xdd/xe9 <CJK>
++<U6C6A> /xdd/xea <CJK>
++<U6C82> /xdd/xeb <CJK>
++<U6C8D> /xdd/xec <CJK>
++<U6C9A> /xdd/xed <CJK>
++<U6C81> /xdd/xee <CJK>
++<U6C9B> /xdd/xef <CJK>
++<U6C7E> /xdd/xf0 <CJK>
++<U6C68> /xdd/xf1 <CJK>
++<U6C73> /xdd/xf2 <CJK>
++<U6C92> /xdd/xf3 <CJK>
++<U6C90> /xdd/xf4 <CJK>
++<U6CC4> /xdd/xf5 <CJK>
++<U6CF1> /xdd/xf6 <CJK>
++<U6CD3> /xdd/xf7 <CJK>
++<U6CBD> /xdd/xf8 <CJK>
++<U6CD7> /xdd/xf9 <CJK>
++<U6CC5> /xdd/xfa <CJK>
++<U6CDD> /xdd/xfb <CJK>
++<U6CAE> /xdd/xfc <CJK>
++<U6CB1> /xdd/xfd <CJK>
++<U6CBE> /xdd/xfe <CJK>
++<U6CBA> /xde/xa1 <CJK>
++<U6CDB> /xde/xa2 <CJK>
++<U6CEF> /xde/xa3 <CJK>
++<U6CD9> /xde/xa4 <CJK>
++<U6CEA> /xde/xa5 <CJK>
++<U6D1F> /xde/xa6 <CJK>
++<U884D> /xde/xa7 <CJK>
++<U6D36> /xde/xa8 <CJK>
++<U6D2B> /xde/xa9 <CJK>
++<U6D3D> /xde/xaa <CJK>
++<U6D38> /xde/xab <CJK>
++<U6D19> /xde/xac <CJK>
++<U6D35> /xde/xad <CJK>
++<U6D33> /xde/xae <CJK>
++<U6D12> /xde/xaf <CJK>
++<U6D0C> /xde/xb0 <CJK>
++<U6D63> /xde/xb1 <CJK>
++<U6D93> /xde/xb2 <CJK>
++<U6D64> /xde/xb3 <CJK>
++<U6D5A> /xde/xb4 <CJK>
++<U6D79> /xde/xb5 <CJK>
++<U6D59> /xde/xb6 <CJK>
++<U6D8E> /xde/xb7 <CJK>
++<U6D95> /xde/xb8 <CJK>
++<U6FE4> /xde/xb9 <CJK>
++<U6D85> /xde/xba <CJK>
++<U6DF9> /xde/xbb <CJK>
++<U6E15> /xde/xbc <CJK>
++<U6E0A> /xde/xbd <CJK>
++<U6DB5> /xde/xbe <CJK>
++<U6DC7> /xde/xbf <CJK>
++<U6DE6> /xde/xc0 <CJK>
++<U6DB8> /xde/xc1 <CJK>
++<U6DC6> /xde/xc2 <CJK>
++<U6DEC> /xde/xc3 <CJK>
++<U6DDE> /xde/xc4 <CJK>
++<U6DCC> /xde/xc5 <CJK>
++<U6DE8> /xde/xc6 <CJK>
++<U6DD2> /xde/xc7 <CJK>
++<U6DC5> /xde/xc8 <CJK>
++<U6DFA> /xde/xc9 <CJK>
++<U6DD9> /xde/xca <CJK>
++<U6DE4> /xde/xcb <CJK>
++<U6DD5> /xde/xcc <CJK>
++<U6DEA> /xde/xcd <CJK>
++<U6DEE> /xde/xce <CJK>
++<U6E2D> /xde/xcf <CJK>
++<U6E6E> /xde/xd0 <CJK>
++<U6E2E> /xde/xd1 <CJK>
++<U6E19> /xde/xd2 <CJK>
++<U6E72> /xde/xd3 <CJK>
++<U6E5F> /xde/xd4 <CJK>
++<U6E3E> /xde/xd5 <CJK>
++<U6E23> /xde/xd6 <CJK>
++<U6E6B> /xde/xd7 <CJK>
++<U6E2B> /xde/xd8 <CJK>
++<U6E76> /xde/xd9 <CJK>
++<U6E4D> /xde/xda <CJK>
++<U6E1F> /xde/xdb <CJK>
++<U6E43> /xde/xdc <CJK>
++<U6E3A> /xde/xdd <CJK>
++<U6E4E> /xde/xde <CJK>
++<U6E24> /xde/xdf <CJK>
++<U6EFF> /xde/xe0 <CJK>
++<U6E1D> /xde/xe1 <CJK>
++<U6E38> /xde/xe2 <CJK>
++<U6E82> /xde/xe3 <CJK>
++<U6EAA> /xde/xe4 <CJK>
++<U6E98> /xde/xe5 <CJK>
++<U6EC9> /xde/xe6 <CJK>
++<U6EB7> /xde/xe7 <CJK>
++<U6ED3> /xde/xe8 <CJK>
++<U6EBD> /xde/xe9 <CJK>
++<U6EAF> /xde/xea <CJK>
++<U6EC4> /xde/xeb <CJK>
++<U6EB2> /xde/xec <CJK>
++<U6ED4> /xde/xed <CJK>
++<U6ED5> /xde/xee <CJK>
++<U6E8F> /xde/xef <CJK>
++<U6EA5> /xde/xf0 <CJK>
++<U6EC2> /xde/xf1 <CJK>
++<U6E9F> /xde/xf2 <CJK>
++<U6F41> /xde/xf3 <CJK>
++<U6F11> /xde/xf4 <CJK>
++<U704C> /xde/xf5 <CJK>
++<U6EEC> /xde/xf6 <CJK>
++<U6EF8> /xde/xf7 <CJK>
++<U6EFE> /xde/xf8 <CJK>
++<U6F3F> /xde/xf9 <CJK>
++<U6EF2> /xde/xfa <CJK>
++<U6F31> /xde/xfb <CJK>
++<U6EEF> /xde/xfc <CJK>
++<U6F32> /xde/xfd <CJK>
++<U6ECC> /xde/xfe <CJK>
++<U6F3E> /xdf/xa1 <CJK>
++<U6F13> /xdf/xa2 <CJK>
++<U6EF7> /xdf/xa3 <CJK>
++<U6F86> /xdf/xa4 <CJK>
++<U6F7A> /xdf/xa5 <CJK>
++<U6F78> /xdf/xa6 <CJK>
++<U6F81> /xdf/xa7 <CJK>
++<U6F80> /xdf/xa8 <CJK>
++<U6F6F> /xdf/xa9 <CJK>
++<U6F5B> /xdf/xaa <CJK>
++<U6FF3> /xdf/xab <CJK>
++<U6F6D> /xdf/xac <CJK>
++<U6F82> /xdf/xad <CJK>
++<U6F7C> /xdf/xae <CJK>
++<U6F58> /xdf/xaf <CJK>
++<U6F8E> /xdf/xb0 <CJK>
++<U6F91> /xdf/xb1 <CJK>
++<U6FC2> /xdf/xb2 <CJK>
++<U6F66> /xdf/xb3 <CJK>
++<U6FB3> /xdf/xb4 <CJK>
++<U6FA3> /xdf/xb5 <CJK>
++<U6FA1> /xdf/xb6 <CJK>
++<U6FA4> /xdf/xb7 <CJK>
++<U6FB9> /xdf/xb8 <CJK>
++<U6FC6> /xdf/xb9 <CJK>
++<U6FAA> /xdf/xba <CJK>
++<U6FDF> /xdf/xbb <CJK>
++<U6FD5> /xdf/xbc <CJK>
++<U6FEC> /xdf/xbd <CJK>
++<U6FD4> /xdf/xbe <CJK>
++<U6FD8> /xdf/xbf <CJK>
++<U6FF1> /xdf/xc0 <CJK>
++<U6FEE> /xdf/xc1 <CJK>
++<U6FDB> /xdf/xc2 <CJK>
++<U7009> /xdf/xc3 <CJK>
++<U700B> /xdf/xc4 <CJK>
++<U6FFA> /xdf/xc5 <CJK>
++<U7011> /xdf/xc6 <CJK>
++<U7001> /xdf/xc7 <CJK>
++<U700F> /xdf/xc8 <CJK>
++<U6FFE> /xdf/xc9 <CJK>
++<U701B> /xdf/xca <CJK>
++<U701A> /xdf/xcb <CJK>
++<U6F74> /xdf/xcc <CJK>
++<U701D> /xdf/xcd <CJK>
++<U7018> /xdf/xce <CJK>
++<U701F> /xdf/xcf <CJK>
++<U7030> /xdf/xd0 <CJK>
++<U703E> /xdf/xd1 <CJK>
++<U7032> /xdf/xd2 <CJK>
++<U7051> /xdf/xd3 <CJK>
++<U7063> /xdf/xd4 <CJK>
++<U7099> /xdf/xd5 <CJK>
++<U7092> /xdf/xd6 <CJK>
++<U70AF> /xdf/xd7 <CJK>
++<U70F1> /xdf/xd8 <CJK>
++<U70AC> /xdf/xd9 <CJK>
++<U70B8> /xdf/xda <CJK>
++<U70B3> /xdf/xdb <CJK>
++<U70AE> /xdf/xdc <CJK>
++<U70DF> /xdf/xdd <CJK>
++<U70CB> /xdf/xde <CJK>
++<U70DD> /xdf/xdf <CJK>
++<U70D9> /xdf/xe0 <CJK>
++<U7109> /xdf/xe1 <CJK>
++<U70FD> /xdf/xe2 <CJK>
++<U711C> /xdf/xe3 <CJK>
++<U7119> /xdf/xe4 <CJK>
++<U7165> /xdf/xe5 <CJK>
++<U7155> /xdf/xe6 <CJK>
++<U7188> /xdf/xe7 <CJK>
++<U7166> /xdf/xe8 <CJK>
++<U7162> /xdf/xe9 <CJK>
++<U714C> /xdf/xea <CJK>
++<U7156> /xdf/xeb <CJK>
++<U716C> /xdf/xec <CJK>
++<U718F> /xdf/xed <CJK>
++<U71FB> /xdf/xee <CJK>
++<U7184> /xdf/xef <CJK>
++<U7195> /xdf/xf0 <CJK>
++<U71A8> /xdf/xf1 <CJK>
++<U71AC> /xdf/xf2 <CJK>
++<U71D7> /xdf/xf3 <CJK>
++<U71B9> /xdf/xf4 <CJK>
++<U71BE> /xdf/xf5 <CJK>
++<U71D2> /xdf/xf6 <CJK>
++<U71C9> /xdf/xf7 <CJK>
++<U71D4> /xdf/xf8 <CJK>
++<U71CE> /xdf/xf9 <CJK>
++<U71E0> /xdf/xfa <CJK>
++<U71EC> /xdf/xfb <CJK>
++<U71E7> /xdf/xfc <CJK>
++<U71F5> /xdf/xfd <CJK>
++<U71FC> /xdf/xfe <CJK>
++<U71F9> /xe0/xa1 <CJK>
++<U71FF> /xe0/xa2 <CJK>
++<U720D> /xe0/xa3 <CJK>
++<U7210> /xe0/xa4 <CJK>
++<U721B> /xe0/xa5 <CJK>
++<U7228> /xe0/xa6 <CJK>
++<U722D> /xe0/xa7 <CJK>
++<U722C> /xe0/xa8 <CJK>
++<U7230> /xe0/xa9 <CJK>
++<U7232> /xe0/xaa <CJK>
++<U723B> /xe0/xab <CJK>
++<U723C> /xe0/xac <CJK>
++<U723F> /xe0/xad <CJK>
++<U7240> /xe0/xae <CJK>
++<U7246> /xe0/xaf <CJK>
++<U724B> /xe0/xb0 <CJK>
++<U7258> /xe0/xb1 <CJK>
++<U7274> /xe0/xb2 <CJK>
++<U727E> /xe0/xb3 <CJK>
++<U7282> /xe0/xb4 <CJK>
++<U7281> /xe0/xb5 <CJK>
++<U7287> /xe0/xb6 <CJK>
++<U7292> /xe0/xb7 <CJK>
++<U7296> /xe0/xb8 <CJK>
++<U72A2> /xe0/xb9 <CJK>
++<U72A7> /xe0/xba <CJK>
++<U72B9> /xe0/xbb <CJK>
++<U72B2> /xe0/xbc <CJK>
++<U72C3> /xe0/xbd <CJK>
++<U72C6> /xe0/xbe <CJK>
++<U72C4> /xe0/xbf <CJK>
++<U72CE> /xe0/xc0 <CJK>
++<U72D2> /xe0/xc1 <CJK>
++<U72E2> /xe0/xc2 <CJK>
++<U72E0> /xe0/xc3 <CJK>
++<U72E1> /xe0/xc4 <CJK>
++<U72F9> /xe0/xc5 <CJK>
++<U72F7> /xe0/xc6 <CJK>
++<U500F> /xe0/xc7 <CJK>
++<U7317> /xe0/xc8 <CJK>
++<U730A> /xe0/xc9 <CJK>
++<U731C> /xe0/xca <CJK>
++<U7316> /xe0/xcb <CJK>
++<U731D> /xe0/xcc <CJK>
++<U7334> /xe0/xcd <CJK>
++<U732F> /xe0/xce <CJK>
++<U7329> /xe0/xcf <CJK>
++<U7325> /xe0/xd0 <CJK>
++<U733E> /xe0/xd1 <CJK>
++<U734E> /xe0/xd2 <CJK>
++<U734F> /xe0/xd3 <CJK>
++<U9ED8> /xe0/xd4 <CJK>
++<U7357> /xe0/xd5 <CJK>
++<U736A> /xe0/xd6 <CJK>
++<U7368> /xe0/xd7 <CJK>
++<U7370> /xe0/xd8 <CJK>
++<U7378> /xe0/xd9 <CJK>
++<U7375> /xe0/xda <CJK>
++<U737B> /xe0/xdb <CJK>
++<U737A> /xe0/xdc <CJK>
++<U73C8> /xe0/xdd <CJK>
++<U73B3> /xe0/xde <CJK>
++<U73CE> /xe0/xdf <CJK>
++<U73BB> /xe0/xe0 <CJK>
++<U73C0> /xe0/xe1 <CJK>
++<U73E5> /xe0/xe2 <CJK>
++<U73EE> /xe0/xe3 <CJK>
++<U73DE> /xe0/xe4 <CJK>
++<U74A2> /xe0/xe5 <CJK>
++<U7405> /xe0/xe6 <CJK>
++<U746F> /xe0/xe7 <CJK>
++<U7425> /xe0/xe8 <CJK>
++<U73F8> /xe0/xe9 <CJK>
++<U7432> /xe0/xea <CJK>
++<U743A> /xe0/xeb <CJK>
++<U7455> /xe0/xec <CJK>
++<U743F> /xe0/xed <CJK>
++<U745F> /xe0/xee <CJK>
++<U7459> /xe0/xef <CJK>
++<U7441> /xe0/xf0 <CJK>
++<U745C> /xe0/xf1 <CJK>
++<U7469> /xe0/xf2 <CJK>
++<U7470> /xe0/xf3 <CJK>
++<U7463> /xe0/xf4 <CJK>
++<U746A> /xe0/xf5 <CJK>
++<U7476> /xe0/xf6 <CJK>
++<U747E> /xe0/xf7 <CJK>
++<U748B> /xe0/xf8 <CJK>
++<U749E> /xe0/xf9 <CJK>
++<U74A7> /xe0/xfa <CJK>
++<U74CA> /xe0/xfb <CJK>
++<U74CF> /xe0/xfc <CJK>
++<U74D4> /xe0/xfd <CJK>
++<U73F1> /xe0/xfe <CJK>
++<U74E0> /xe1/xa1 <CJK>
++<U74E3> /xe1/xa2 <CJK>
++<U74E7> /xe1/xa3 <CJK>
++<U74E9> /xe1/xa4 <CJK>
++<U74EE> /xe1/xa5 <CJK>
++<U74F2> /xe1/xa6 <CJK>
++<U74F0> /xe1/xa7 <CJK>
++<U74F1> /xe1/xa8 <CJK>
++<U74F8> /xe1/xa9 <CJK>
++<U74F7> /xe1/xaa <CJK>
++<U7504> /xe1/xab <CJK>
++<U7503> /xe1/xac <CJK>
++<U7505> /xe1/xad <CJK>
++<U750C> /xe1/xae <CJK>
++<U750E> /xe1/xaf <CJK>
++<U750D> /xe1/xb0 <CJK>
++<U7515> /xe1/xb1 <CJK>
++<U7513> /xe1/xb2 <CJK>
++<U751E> /xe1/xb3 <CJK>
++<U7526> /xe1/xb4 <CJK>
++<U752C> /xe1/xb5 <CJK>
++<U753C> /xe1/xb6 <CJK>
++<U7544> /xe1/xb7 <CJK>
++<U754D> /xe1/xb8 <CJK>
++<U754A> /xe1/xb9 <CJK>
++<U7549> /xe1/xba <CJK>
++<U755B> /xe1/xbb <CJK>
++<U7546> /xe1/xbc <CJK>
++<U755A> /xe1/xbd <CJK>
++<U7569> /xe1/xbe <CJK>
++<U7564> /xe1/xbf <CJK>
++<U7567> /xe1/xc0 <CJK>
++<U756B> /xe1/xc1 <CJK>
++<U756D> /xe1/xc2 <CJK>
++<U7578> /xe1/xc3 <CJK>
++<U7576> /xe1/xc4 <CJK>
++<U7586> /xe1/xc5 <CJK>
++<U7587> /xe1/xc6 <CJK>
++<U7574> /xe1/xc7 <CJK>
++<U758A> /xe1/xc8 <CJK>
++<U7589> /xe1/xc9 <CJK>
++<U7582> /xe1/xca <CJK>
++<U7594> /xe1/xcb <CJK>
++<U759A> /xe1/xcc <CJK>
++<U759D> /xe1/xcd <CJK>
++<U75A5> /xe1/xce <CJK>
++<U75A3> /xe1/xcf <CJK>
++<U75C2> /xe1/xd0 <CJK>
++<U75B3> /xe1/xd1 <CJK>
++<U75C3> /xe1/xd2 <CJK>
++<U75B5> /xe1/xd3 <CJK>
++<U75BD> /xe1/xd4 <CJK>
++<U75B8> /xe1/xd5 <CJK>
++<U75BC> /xe1/xd6 <CJK>
++<U75B1> /xe1/xd7 <CJK>
++<U75CD> /xe1/xd8 <CJK>
++<U75CA> /xe1/xd9 <CJK>
++<U75D2> /xe1/xda <CJK>
++<U75D9> /xe1/xdb <CJK>
++<U75E3> /xe1/xdc <CJK>
++<U75DE> /xe1/xdd <CJK>
++<U75FE> /xe1/xde <CJK>
++<U75FF> /xe1/xdf <CJK>
++<U75FC> /xe1/xe0 <CJK>
++<U7601> /xe1/xe1 <CJK>
++<U75F0> /xe1/xe2 <CJK>
++<U75FA> /xe1/xe3 <CJK>
++<U75F2> /xe1/xe4 <CJK>
++<U75F3> /xe1/xe5 <CJK>
++<U760B> /xe1/xe6 <CJK>
++<U760D> /xe1/xe7 <CJK>
++<U7609> /xe1/xe8 <CJK>
++<U761F> /xe1/xe9 <CJK>
++<U7627> /xe1/xea <CJK>
++<U7620> /xe1/xeb <CJK>
++<U7621> /xe1/xec <CJK>
++<U7622> /xe1/xed <CJK>
++<U7624> /xe1/xee <CJK>
++<U7634> /xe1/xef <CJK>
++<U7630> /xe1/xf0 <CJK>
++<U763B> /xe1/xf1 <CJK>
++<U7647> /xe1/xf2 <CJK>
++<U7648> /xe1/xf3 <CJK>
++<U7646> /xe1/xf4 <CJK>
++<U765C> /xe1/xf5 <CJK>
++<U7658> /xe1/xf6 <CJK>
++<U7661> /xe1/xf7 <CJK>
++<U7662> /xe1/xf8 <CJK>
++<U7668> /xe1/xf9 <CJK>
++<U7669> /xe1/xfa <CJK>
++<U766A> /xe1/xfb <CJK>
++<U7667> /xe1/xfc <CJK>
++<U766C> /xe1/xfd <CJK>
++<U7670> /xe1/xfe <CJK>
++<U7672> /xe2/xa1 <CJK>
++<U7676> /xe2/xa2 <CJK>
++<U7678> /xe2/xa3 <CJK>
++<U767C> /xe2/xa4 <CJK>
++<U7680> /xe2/xa5 <CJK>
++<U7683> /xe2/xa6 <CJK>
++<U7688> /xe2/xa7 <CJK>
++<U768B> /xe2/xa8 <CJK>
++<U768E> /xe2/xa9 <CJK>
++<U7696> /xe2/xaa <CJK>
++<U7693> /xe2/xab <CJK>
++<U7699> /xe2/xac <CJK>
++<U769A> /xe2/xad <CJK>
++<U76B0> /xe2/xae <CJK>
++<U76B4> /xe2/xaf <CJK>
++<U76B8> /xe2/xb0 <CJK>
++<U76B9> /xe2/xb1 <CJK>
++<U76BA> /xe2/xb2 <CJK>
++<U76C2> /xe2/xb3 <CJK>
++<U76CD> /xe2/xb4 <CJK>
++<U76D6> /xe2/xb5 <CJK>
++<U76D2> /xe2/xb6 <CJK>
++<U76DE> /xe2/xb7 <CJK>
++<U76E1> /xe2/xb8 <CJK>
++<U76E5> /xe2/xb9 <CJK>
++<U76E7> /xe2/xba <CJK>
++<U76EA> /xe2/xbb <CJK>
++<U862F> /xe2/xbc <CJK>
++<U76FB> /xe2/xbd <CJK>
++<U7708> /xe2/xbe <CJK>
++<U7707> /xe2/xbf <CJK>
++<U7704> /xe2/xc0 <CJK>
++<U7729> /xe2/xc1 <CJK>
++<U7724> /xe2/xc2 <CJK>
++<U771E> /xe2/xc3 <CJK>
++<U7725> /xe2/xc4 <CJK>
++<U7726> /xe2/xc5 <CJK>
++<U771B> /xe2/xc6 <CJK>
++<U7737> /xe2/xc7 <CJK>
++<U7738> /xe2/xc8 <CJK>
++<U7747> /xe2/xc9 <CJK>
++<U775A> /xe2/xca <CJK>
++<U7768> /xe2/xcb <CJK>
++<U776B> /xe2/xcc <CJK>
++<U775B> /xe2/xcd <CJK>
++<U7765> /xe2/xce <CJK>
++<U777F> /xe2/xcf <CJK>
++<U777E> /xe2/xd0 <CJK>
++<U7779> /xe2/xd1 <CJK>
++<U778E> /xe2/xd2 <CJK>
++<U778B> /xe2/xd3 <CJK>
++<U7791> /xe2/xd4 <CJK>
++<U77A0> /xe2/xd5 <CJK>
++<U779E> /xe2/xd6 <CJK>
++<U77B0> /xe2/xd7 <CJK>
++<U77B6> /xe2/xd8 <CJK>
++<U77B9> /xe2/xd9 <CJK>
++<U77BF> /xe2/xda <CJK>
++<U77BC> /xe2/xdb <CJK>
++<U77BD> /xe2/xdc <CJK>
++<U77BB> /xe2/xdd <CJK>
++<U77C7> /xe2/xde <CJK>
++<U77CD> /xe2/xdf <CJK>
++<U77D7> /xe2/xe0 <CJK>
++<U77DA> /xe2/xe1 <CJK>
++<U77DC> /xe2/xe2 <CJK>
++<U77E3> /xe2/xe3 <CJK>
++<U77EE> /xe2/xe4 <CJK>
++<U77FC> /xe2/xe5 <CJK>
++<U780C> /xe2/xe6 <CJK>
++<U7812> /xe2/xe7 <CJK>
++<U7926> /xe2/xe8 <CJK>
++<U7820> /xe2/xe9 <CJK>
++<U792A> /xe2/xea <CJK>
++<U7845> /xe2/xeb <CJK>
++<U788E> /xe2/xec <CJK>
++<U7874> /xe2/xed <CJK>
++<U7886> /xe2/xee <CJK>
++<U787C> /xe2/xef <CJK>
++<U789A> /xe2/xf0 <CJK>
++<U788C> /xe2/xf1 <CJK>
++<U78A3> /xe2/xf2 <CJK>
++<U78B5> /xe2/xf3 <CJK>
++<U78AA> /xe2/xf4 <CJK>
++<U78AF> /xe2/xf5 <CJK>
++<U78D1> /xe2/xf6 <CJK>
++<U78C6> /xe2/xf7 <CJK>
++<U78CB> /xe2/xf8 <CJK>
++<U78D4> /xe2/xf9 <CJK>
++<U78BE> /xe2/xfa <CJK>
++<U78BC> /xe2/xfb <CJK>
++<U78C5> /xe2/xfc <CJK>
++<U78CA> /xe2/xfd <CJK>
++<U78EC> /xe2/xfe <CJK>
++<U78E7> /xe3/xa1 <CJK>
++<U78DA> /xe3/xa2 <CJK>
++<U78FD> /xe3/xa3 <CJK>
++<U78F4> /xe3/xa4 <CJK>
++<U7907> /xe3/xa5 <CJK>
++<U7912> /xe3/xa6 <CJK>
++<U7911> /xe3/xa7 <CJK>
++<U7919> /xe3/xa8 <CJK>
++<U792C> /xe3/xa9 <CJK>
++<U792B> /xe3/xaa <CJK>
++<U7940> /xe3/xab <CJK>
++<U7960> /xe3/xac <CJK>
++<U7957> /xe3/xad <CJK>
++<U795F> /xe3/xae <CJK>
++<U795A> /xe3/xaf <CJK>
++<U7955> /xe3/xb0 <CJK>
++<U7953> /xe3/xb1 <CJK>
++<U797A> /xe3/xb2 <CJK>
++<U797F> /xe3/xb3 <CJK>
++<U798A> /xe3/xb4 <CJK>
++<U799D> /xe3/xb5 <CJK>
++<U79A7> /xe3/xb6 <CJK>
++<U9F4B> /xe3/xb7 <CJK>
++<U79AA> /xe3/xb8 <CJK>
++<U79AE> /xe3/xb9 <CJK>
++<U79B3> /xe3/xba <CJK>
++<U79B9> /xe3/xbb <CJK>
++<U79BA> /xe3/xbc <CJK>
++<U79C9> /xe3/xbd <CJK>
++<U79D5> /xe3/xbe <CJK>
++<U79E7> /xe3/xbf <CJK>
++<U79EC> /xe3/xc0 <CJK>
++<U79E1> /xe3/xc1 <CJK>
++<U79E3> /xe3/xc2 <CJK>
++<U7A08> /xe3/xc3 <CJK>
++<U7A0D> /xe3/xc4 <CJK>
++<U7A18> /xe3/xc5 <CJK>
++<U7A19> /xe3/xc6 <CJK>
++<U7A20> /xe3/xc7 <CJK>
++<U7A1F> /xe3/xc8 <CJK>
++<U7980> /xe3/xc9 <CJK>
++<U7A31> /xe3/xca <CJK>
++<U7A3B> /xe3/xcb <CJK>
++<U7A3E> /xe3/xcc <CJK>
++<U7A37> /xe3/xcd <CJK>
++<U7A43> /xe3/xce <CJK>
++<U7A57> /xe3/xcf <CJK>
++<U7A49> /xe3/xd0 <CJK>
++<U7A61> /xe3/xd1 <CJK>
++<U7A62> /xe3/xd2 <CJK>
++<U7A69> /xe3/xd3 <CJK>
++<U9F9D> /xe3/xd4 <CJK>
++<U7A70> /xe3/xd5 <CJK>
++<U7A79> /xe3/xd6 <CJK>
++<U7A7D> /xe3/xd7 <CJK>
++<U7A88> /xe3/xd8 <CJK>
++<U7A97> /xe3/xd9 <CJK>
++<U7A95> /xe3/xda <CJK>
++<U7A98> /xe3/xdb <CJK>
++<U7A96> /xe3/xdc <CJK>
++<U7AA9> /xe3/xdd <CJK>
++<U7AC8> /xe3/xde <CJK>
++<U7AB0> /xe3/xdf <CJK>
++<U7AB6> /xe3/xe0 <CJK>
++<U7AC5> /xe3/xe1 <CJK>
++<U7AC4> /xe3/xe2 <CJK>
++<U7ABF> /xe3/xe3 <CJK>
++<U9083> /xe3/xe4 <CJK>
++<U7AC7> /xe3/xe5 <CJK>
++<U7ACA> /xe3/xe6 <CJK>
++<U7ACD> /xe3/xe7 <CJK>
++<U7ACF> /xe3/xe8 <CJK>
++<U7AD5> /xe3/xe9 <CJK>
++<U7AD3> /xe3/xea <CJK>
++<U7AD9> /xe3/xeb <CJK>
++<U7ADA> /xe3/xec <CJK>
++<U7ADD> /xe3/xed <CJK>
++<U7AE1> /xe3/xee <CJK>
++<U7AE2> /xe3/xef <CJK>
++<U7AE6> /xe3/xf0 <CJK>
++<U7AED> /xe3/xf1 <CJK>
++<U7AF0> /xe3/xf2 <CJK>
++<U7B02> /xe3/xf3 <CJK>
++<U7B0F> /xe3/xf4 <CJK>
++<U7B0A> /xe3/xf5 <CJK>
++<U7B06> /xe3/xf6 <CJK>
++<U7B33> /xe3/xf7 <CJK>
++<U7B18> /xe3/xf8 <CJK>
++<U7B19> /xe3/xf9 <CJK>
++<U7B1E> /xe3/xfa <CJK>
++<U7B35> /xe3/xfb <CJK>
++<U7B28> /xe3/xfc <CJK>
++<U7B36> /xe3/xfd <CJK>
++<U7B50> /xe3/xfe <CJK>
++<U7B7A> /xe4/xa1 <CJK>
++<U7B04> /xe4/xa2 <CJK>
++<U7B4D> /xe4/xa3 <CJK>
++<U7B0B> /xe4/xa4 <CJK>
++<U7B4C> /xe4/xa5 <CJK>
++<U7B45> /xe4/xa6 <CJK>
++<U7B75> /xe4/xa7 <CJK>
++<U7B65> /xe4/xa8 <CJK>
++<U7B74> /xe4/xa9 <CJK>
++<U7B67> /xe4/xaa <CJK>
++<U7B70> /xe4/xab <CJK>
++<U7B71> /xe4/xac <CJK>
++<U7B6C> /xe4/xad <CJK>
++<U7B6E> /xe4/xae <CJK>
++<U7B9D> /xe4/xaf <CJK>
++<U7B98> /xe4/xb0 <CJK>
++<U7B9F> /xe4/xb1 <CJK>
++<U7B8D> /xe4/xb2 <CJK>
++<U7B9C> /xe4/xb3 <CJK>
++<U7B9A> /xe4/xb4 <CJK>
++<U7B8B> /xe4/xb5 <CJK>
++<U7B92> /xe4/xb6 <CJK>
++<U7B8F> /xe4/xb7 <CJK>
++<U7B5D> /xe4/xb8 <CJK>
++<U7B99> /xe4/xb9 <CJK>
++<U7BCB> /xe4/xba <CJK>
++<U7BC1> /xe4/xbb <CJK>
++<U7BCC> /xe4/xbc <CJK>
++<U7BCF> /xe4/xbd <CJK>
++<U7BB4> /xe4/xbe <CJK>
++<U7BC6> /xe4/xbf <CJK>
++<U7BDD> /xe4/xc0 <CJK>
++<U7BE9> /xe4/xc1 <CJK>
++<U7C11> /xe4/xc2 <CJK>
++<U7C14> /xe4/xc3 <CJK>
++<U7BE6> /xe4/xc4 <CJK>
++<U7BE5> /xe4/xc5 <CJK>
++<U7C60> /xe4/xc6 <CJK>
++<U7C00> /xe4/xc7 <CJK>
++<U7C07> /xe4/xc8 <CJK>
++<U7C13> /xe4/xc9 <CJK>
++<U7BF3> /xe4/xca <CJK>
++<U7BF7> /xe4/xcb <CJK>
++<U7C17> /xe4/xcc <CJK>
++<U7C0D> /xe4/xcd <CJK>
++<U7BF6> /xe4/xce <CJK>
++<U7C23> /xe4/xcf <CJK>
++<U7C27> /xe4/xd0 <CJK>
++<U7C2A> /xe4/xd1 <CJK>
++<U7C1F> /xe4/xd2 <CJK>
++<U7C37> /xe4/xd3 <CJK>
++<U7C2B> /xe4/xd4 <CJK>
++<U7C3D> /xe4/xd5 <CJK>
++<U7C4C> /xe4/xd6 <CJK>
++<U7C43> /xe4/xd7 <CJK>
++<U7C54> /xe4/xd8 <CJK>
++<U7C4F> /xe4/xd9 <CJK>
++<U7C40> /xe4/xda <CJK>
++<U7C50> /xe4/xdb <CJK>
++<U7C58> /xe4/xdc <CJK>
++<U7C5F> /xe4/xdd <CJK>
++<U7C64> /xe4/xde <CJK>
++<U7C56> /xe4/xdf <CJK>
++<U7C65> /xe4/xe0 <CJK>
++<U7C6C> /xe4/xe1 <CJK>
++<U7C75> /xe4/xe2 <CJK>
++<U7C83> /xe4/xe3 <CJK>
++<U7C90> /xe4/xe4 <CJK>
++<U7CA4> /xe4/xe5 <CJK>
++<U7CAD> /xe4/xe6 <CJK>
++<U7CA2> /xe4/xe7 <CJK>
++<U7CAB> /xe4/xe8 <CJK>
++<U7CA1> /xe4/xe9 <CJK>
++<U7CA8> /xe4/xea <CJK>
++<U7CB3> /xe4/xeb <CJK>
++<U7CB2> /xe4/xec <CJK>
++<U7CB1> /xe4/xed <CJK>
++<U7CAE> /xe4/xee <CJK>
++<U7CB9> /xe4/xef <CJK>
++<U7CBD> /xe4/xf0 <CJK>
++<U7CC0> /xe4/xf1 <CJK>
++<U7CC5> /xe4/xf2 <CJK>
++<U7CC2> /xe4/xf3 <CJK>
++<U7CD8> /xe4/xf4 <CJK>
++<U7CD2> /xe4/xf5 <CJK>
++<U7CDC> /xe4/xf6 <CJK>
++<U7CE2> /xe4/xf7 <CJK>
++<U9B3B> /xe4/xf8 <CJK>
++<U7CEF> /xe4/xf9 <CJK>
++<U7CF2> /xe4/xfa <CJK>
++<U7CF4> /xe4/xfb <CJK>
++<U7CF6> /xe4/xfc <CJK>
++<U7CFA> /xe4/xfd <CJK>
++<U7D06> /xe4/xfe <CJK>
++<U7D02> /xe5/xa1 <CJK>
++<U7D1C> /xe5/xa2 <CJK>
++<U7D15> /xe5/xa3 <CJK>
++<U7D0A> /xe5/xa4 <CJK>
++<U7D45> /xe5/xa5 <CJK>
++<U7D4B> /xe5/xa6 <CJK>
++<U7D2E> /xe5/xa7 <CJK>
++<U7D32> /xe5/xa8 <CJK>
++<U7D3F> /xe5/xa9 <CJK>
++<U7D35> /xe5/xaa <CJK>
++<U7D46> /xe5/xab <CJK>
++<U7D73> /xe5/xac <CJK>
++<U7D56> /xe5/xad <CJK>
++<U7D4E> /xe5/xae <CJK>
++<U7D72> /xe5/xaf <CJK>
++<U7D68> /xe5/xb0 <CJK>
++<U7D6E> /xe5/xb1 <CJK>
++<U7D4F> /xe5/xb2 <CJK>
++<U7D63> /xe5/xb3 <CJK>
++<U7D93> /xe5/xb4 <CJK>
++<U7D89> /xe5/xb5 <CJK>
++<U7D5B> /xe5/xb6 <CJK>
++<U7D8F> /xe5/xb7 <CJK>
++<U7D7D> /xe5/xb8 <CJK>
++<U7D9B> /xe5/xb9 <CJK>
++<U7DBA> /xe5/xba <CJK>
++<U7DAE> /xe5/xbb <CJK>
++<U7DA3> /xe5/xbc <CJK>
++<U7DB5> /xe5/xbd <CJK>
++<U7DC7> /xe5/xbe <CJK>
++<U7DBD> /xe5/xbf <CJK>
++<U7DAB> /xe5/xc0 <CJK>
++<U7E3D> /xe5/xc1 <CJK>
++<U7DA2> /xe5/xc2 <CJK>
++<U7DAF> /xe5/xc3 <CJK>
++<U7DDC> /xe5/xc4 <CJK>
++<U7DB8> /xe5/xc5 <CJK>
++<U7D9F> /xe5/xc6 <CJK>
++<U7DB0> /xe5/xc7 <CJK>
++<U7DD8> /xe5/xc8 <CJK>
++<U7DDD> /xe5/xc9 <CJK>
++<U7DE4> /xe5/xca <CJK>
++<U7DDE> /xe5/xcb <CJK>
++<U7DFB> /xe5/xcc <CJK>
++<U7DF2> /xe5/xcd <CJK>
++<U7DE1> /xe5/xce <CJK>
++<U7E05> /xe5/xcf <CJK>
++<U7E0A> /xe5/xd0 <CJK>
++<U7E23> /xe5/xd1 <CJK>
++<U7E21> /xe5/xd2 <CJK>
++<U7E12> /xe5/xd3 <CJK>
++<U7E31> /xe5/xd4 <CJK>
++<U7E1F> /xe5/xd5 <CJK>
++<U7E09> /xe5/xd6 <CJK>
++<U7E0B> /xe5/xd7 <CJK>
++<U7E22> /xe5/xd8 <CJK>
++<U7E46> /xe5/xd9 <CJK>
++<U7E66> /xe5/xda <CJK>
++<U7E3B> /xe5/xdb <CJK>
++<U7E35> /xe5/xdc <CJK>
++<U7E39> /xe5/xdd <CJK>
++<U7E43> /xe5/xde <CJK>
++<U7E37> /xe5/xdf <CJK>
++<U7E32> /xe5/xe0 <CJK>
++<U7E3A> /xe5/xe1 <CJK>
++<U7E67> /xe5/xe2 <CJK>
++<U7E5D> /xe5/xe3 <CJK>
++<U7E56> /xe5/xe4 <CJK>
++<U7E5E> /xe5/xe5 <CJK>
++<U7E59> /xe5/xe6 <CJK>
++<U7E5A> /xe5/xe7 <CJK>
++<U7E79> /xe5/xe8 <CJK>
++<U7E6A> /xe5/xe9 <CJK>
++<U7E69> /xe5/xea <CJK>
++<U7E7C> /xe5/xeb <CJK>
++<U7E7B> /xe5/xec <CJK>
++<U7E83> /xe5/xed <CJK>
++<U7DD5> /xe5/xee <CJK>
++<U7E7D> /xe5/xef <CJK>
++<U8FAE> /xe5/xf0 <CJK>
++<U7E7F> /xe5/xf1 <CJK>
++<U7E88> /xe5/xf2 <CJK>
++<U7E89> /xe5/xf3 <CJK>
++<U7E8C> /xe5/xf4 <CJK>
++<U7E92> /xe5/xf5 <CJK>
++<U7E90> /xe5/xf6 <CJK>
++<U7E93> /xe5/xf7 <CJK>
++<U7E94> /xe5/xf8 <CJK>
++<U7E96> /xe5/xf9 <CJK>
++<U7E8E> /xe5/xfa <CJK>
++<U7E9B> /xe5/xfb <CJK>
++<U7E9C> /xe5/xfc <CJK>
++<U7F38> /xe5/xfd <CJK>
++<U7F3A> /xe5/xfe <CJK>
++<U7F45> /xe6/xa1 <CJK>
++<U7F4C> /xe6/xa2 <CJK>
++<U7F4D> /xe6/xa3 <CJK>
++<U7F4E> /xe6/xa4 <CJK>
++<U7F50> /xe6/xa5 <CJK>
++<U7F51> /xe6/xa6 <CJK>
++<U7F55> /xe6/xa7 <CJK>
++<U7F54> /xe6/xa8 <CJK>
++<U7F58> /xe6/xa9 <CJK>
++<U7F5F> /xe6/xaa <CJK>
++<U7F60> /xe6/xab <CJK>
++<U7F68> /xe6/xac <CJK>
++<U7F69> /xe6/xad <CJK>
++<U7F67> /xe6/xae <CJK>
++<U7F78> /xe6/xaf <CJK>
++<U7F82> /xe6/xb0 <CJK>
++<U7F86> /xe6/xb1 <CJK>
++<U7F83> /xe6/xb2 <CJK>
++<U7F88> /xe6/xb3 <CJK>
++<U7F87> /xe6/xb4 <CJK>
++<U7F8C> /xe6/xb5 <CJK>
++<U7F94> /xe6/xb6 <CJK>
++<U7F9E> /xe6/xb7 <CJK>
++<U7F9D> /xe6/xb8 <CJK>
++<U7F9A> /xe6/xb9 <CJK>
++<U7FA3> /xe6/xba <CJK>
++<U7FAF> /xe6/xbb <CJK>
++<U7FB2> /xe6/xbc <CJK>
++<U7FB9> /xe6/xbd <CJK>
++<U7FAE> /xe6/xbe <CJK>
++<U7FB6> /xe6/xbf <CJK>
++<U7FB8> /xe6/xc0 <CJK>
++<U8B71> /xe6/xc1 <CJK>
++<U7FC5> /xe6/xc2 <CJK>
++<U7FC6> /xe6/xc3 <CJK>
++<U7FCA> /xe6/xc4 <CJK>
++<U7FD5> /xe6/xc5 <CJK>
++<U7FD4> /xe6/xc6 <CJK>
++<U7FE1> /xe6/xc7 <CJK>
++<U7FE6> /xe6/xc8 <CJK>
++<U7FE9> /xe6/xc9 <CJK>
++<U7FF3> /xe6/xca <CJK>
++<U7FF9> /xe6/xcb <CJK>
++<U98DC> /xe6/xcc <CJK>
++<U8006> /xe6/xcd <CJK>
++<U8004> /xe6/xce <CJK>
++<U800B> /xe6/xcf <CJK>
++<U8012> /xe6/xd0 <CJK>
++<U8018> /xe6/xd1 <CJK>
++<U8019> /xe6/xd2 <CJK>
++<U801C> /xe6/xd3 <CJK>
++<U8021> /xe6/xd4 <CJK>
++<U8028> /xe6/xd5 <CJK>
++<U803F> /xe6/xd6 <CJK>
++<U803B> /xe6/xd7 <CJK>
++<U804A> /xe6/xd8 <CJK>
++<U8046> /xe6/xd9 <CJK>
++<U8052> /xe6/xda <CJK>
++<U8058> /xe6/xdb <CJK>
++<U805A> /xe6/xdc <CJK>
++<U805F> /xe6/xdd <CJK>
++<U8062> /xe6/xde <CJK>
++<U8068> /xe6/xdf <CJK>
++<U8073> /xe6/xe0 <CJK>
++<U8072> /xe6/xe1 <CJK>
++<U8070> /xe6/xe2 <CJK>
++<U8076> /xe6/xe3 <CJK>
++<U8079> /xe6/xe4 <CJK>
++<U807D> /xe6/xe5 <CJK>
++<U807F> /xe6/xe6 <CJK>
++<U8084> /xe6/xe7 <CJK>
++<U8086> /xe6/xe8 <CJK>
++<U8085> /xe6/xe9 <CJK>
++<U809B> /xe6/xea <CJK>
++<U8093> /xe6/xeb <CJK>
++<U809A> /xe6/xec <CJK>
++<U80AD> /xe6/xed <CJK>
++<U5190> /xe6/xee <CJK>
++<U80AC> /xe6/xef <CJK>
++<U80DB> /xe6/xf0 <CJK>
++<U80E5> /xe6/xf1 <CJK>
++<U80D9> /xe6/xf2 <CJK>
++<U80DD> /xe6/xf3 <CJK>
++<U80C4> /xe6/xf4 <CJK>
++<U80DA> /xe6/xf5 <CJK>
++<U80D6> /xe6/xf6 <CJK>
++<U8109> /xe6/xf7 <CJK>
++<U80EF> /xe6/xf8 <CJK>
++<U80F1> /xe6/xf9 <CJK>
++<U811B> /xe6/xfa <CJK>
++<U8129> /xe6/xfb <CJK>
++<U8123> /xe6/xfc <CJK>
++<U812F> /xe6/xfd <CJK>
++<U814B> /xe6/xfe <CJK>
++<U968B> /xe7/xa1 <CJK>
++<U8146> /xe7/xa2 <CJK>
++<U813E> /xe7/xa3 <CJK>
++<U8153> /xe7/xa4 <CJK>
++<U8151> /xe7/xa5 <CJK>
++<U80FC> /xe7/xa6 <CJK>
++<U8171> /xe7/xa7 <CJK>
++<U816E> /xe7/xa8 <CJK>
++<U8165> /xe7/xa9 <CJK>
++<U8166> /xe7/xaa <CJK>
++<U8174> /xe7/xab <CJK>
++<U8183> /xe7/xac <CJK>
++<U8188> /xe7/xad <CJK>
++<U818A> /xe7/xae <CJK>
++<U8180> /xe7/xaf <CJK>
++<U8182> /xe7/xb0 <CJK>
++<U81A0> /xe7/xb1 <CJK>
++<U8195> /xe7/xb2 <CJK>
++<U81A4> /xe7/xb3 <CJK>
++<U81A3> /xe7/xb4 <CJK>
++<U815F> /xe7/xb5 <CJK>
++<U8193> /xe7/xb6 <CJK>
++<U81A9> /xe7/xb7 <CJK>
++<U81B0> /xe7/xb8 <CJK>
++<U81B5> /xe7/xb9 <CJK>
++<U81BE> /xe7/xba <CJK>
++<U81B8> /xe7/xbb <CJK>
++<U81BD> /xe7/xbc <CJK>
++<U81C0> /xe7/xbd <CJK>
++<U81C2> /xe7/xbe <CJK>
++<U81BA> /xe7/xbf <CJK>
++<U81C9> /xe7/xc0 <CJK>
++<U81CD> /xe7/xc1 <CJK>
++<U81D1> /xe7/xc2 <CJK>
++<U81D9> /xe7/xc3 <CJK>
++<U81D8> /xe7/xc4 <CJK>
++<U81C8> /xe7/xc5 <CJK>
++<U81DA> /xe7/xc6 <CJK>
++<U81DF> /xe7/xc7 <CJK>
++<U81E0> /xe7/xc8 <CJK>
++<U81E7> /xe7/xc9 <CJK>
++<U81FA> /xe7/xca <CJK>
++<U81FB> /xe7/xcb <CJK>
++<U81FE> /xe7/xcc <CJK>
++<U8201> /xe7/xcd <CJK>
++<U8202> /xe7/xce <CJK>
++<U8205> /xe7/xcf <CJK>
++<U8207> /xe7/xd0 <CJK>
++<U820A> /xe7/xd1 <CJK>
++<U820D> /xe7/xd2 <CJK>
++<U8210> /xe7/xd3 <CJK>
++<U8216> /xe7/xd4 <CJK>
++<U8229> /xe7/xd5 <CJK>
++<U822B> /xe7/xd6 <CJK>
++<U8238> /xe7/xd7 <CJK>
++<U8233> /xe7/xd8 <CJK>
++<U8240> /xe7/xd9 <CJK>
++<U8259> /xe7/xda <CJK>
++<U8258> /xe7/xdb <CJK>
++<U825D> /xe7/xdc <CJK>
++<U825A> /xe7/xdd <CJK>
++<U825F> /xe7/xde <CJK>
++<U8264> /xe7/xdf <CJK>
++<U8262> /xe7/xe0 <CJK>
++<U8268> /xe7/xe1 <CJK>
++<U826A> /xe7/xe2 <CJK>
++<U826B> /xe7/xe3 <CJK>
++<U822E> /xe7/xe4 <CJK>
++<U8271> /xe7/xe5 <CJK>
++<U8277> /xe7/xe6 <CJK>
++<U8278> /xe7/xe7 <CJK>
++<U827E> /xe7/xe8 <CJK>
++<U828D> /xe7/xe9 <CJK>
++<U8292> /xe7/xea <CJK>
++<U82AB> /xe7/xeb <CJK>
++<U829F> /xe7/xec <CJK>
++<U82BB> /xe7/xed <CJK>
++<U82AC> /xe7/xee <CJK>
++<U82E1> /xe7/xef <CJK>
++<U82E3> /xe7/xf0 <CJK>
++<U82DF> /xe7/xf1 <CJK>
++<U82D2> /xe7/xf2 <CJK>
++<U82F4> /xe7/xf3 <CJK>
++<U82F3> /xe7/xf4 <CJK>
++<U82FA> /xe7/xf5 <CJK>
++<U8393> /xe7/xf6 <CJK>
++<U8303> /xe7/xf7 <CJK>
++<U82FB> /xe7/xf8 <CJK>
++<U82F9> /xe7/xf9 <CJK>
++<U82DE> /xe7/xfa <CJK>
++<U8306> /xe7/xfb <CJK>
++<U82DC> /xe7/xfc <CJK>
++<U8309> /xe7/xfd <CJK>
++<U82D9> /xe7/xfe <CJK>
++<U8335> /xe8/xa1 <CJK>
++<U8334> /xe8/xa2 <CJK>
++<U8316> /xe8/xa3 <CJK>
++<U8332> /xe8/xa4 <CJK>
++<U8331> /xe8/xa5 <CJK>
++<U8340> /xe8/xa6 <CJK>
++<U8339> /xe8/xa7 <CJK>
++<U8350> /xe8/xa8 <CJK>
++<U8345> /xe8/xa9 <CJK>
++<U832F> /xe8/xaa <CJK>
++<U832B> /xe8/xab <CJK>
++<U8317> /xe8/xac <CJK>
++<U8318> /xe8/xad <CJK>
++<U8385> /xe8/xae <CJK>
++<U839A> /xe8/xaf <CJK>
++<U83AA> /xe8/xb0 <CJK>
++<U839F> /xe8/xb1 <CJK>
++<U83A2> /xe8/xb2 <CJK>
++<U8396> /xe8/xb3 <CJK>
++<U8323> /xe8/xb4 <CJK>
++<U838E> /xe8/xb5 <CJK>
++<U8387> /xe8/xb6 <CJK>
++<U838A> /xe8/xb7 <CJK>
++<U837C> /xe8/xb8 <CJK>
++<U83B5> /xe8/xb9 <CJK>
++<U8373> /xe8/xba <CJK>
++<U8375> /xe8/xbb <CJK>
++<U83A0> /xe8/xbc <CJK>
++<U8389> /xe8/xbd <CJK>
++<U83A8> /xe8/xbe <CJK>
++<U83F4> /xe8/xbf <CJK>
++<U8413> /xe8/xc0 <CJK>
++<U83EB> /xe8/xc1 <CJK>
++<U83CE> /xe8/xc2 <CJK>
++<U83FD> /xe8/xc3 <CJK>
++<U8403> /xe8/xc4 <CJK>
++<U83D8> /xe8/xc5 <CJK>
++<U840B> /xe8/xc6 <CJK>
++<U83C1> /xe8/xc7 <CJK>
++<U83F7> /xe8/xc8 <CJK>
++<U8407> /xe8/xc9 <CJK>
++<U83E0> /xe8/xca <CJK>
++<U83F2> /xe8/xcb <CJK>
++<U840D> /xe8/xcc <CJK>
++<U8422> /xe8/xcd <CJK>
++<U8420> /xe8/xce <CJK>
++<U83BD> /xe8/xcf <CJK>
++<U8438> /xe8/xd0 <CJK>
++<U8506> /xe8/xd1 <CJK>
++<U83FB> /xe8/xd2 <CJK>
++<U846D> /xe8/xd3 <CJK>
++<U842A> /xe8/xd4 <CJK>
++<U843C> /xe8/xd5 <CJK>
++<U855A> /xe8/xd6 <CJK>
++<U8484> /xe8/xd7 <CJK>
++<U8477> /xe8/xd8 <CJK>
++<U846B> /xe8/xd9 <CJK>
++<U84AD> /xe8/xda <CJK>
++<U846E> /xe8/xdb <CJK>
++<U8482> /xe8/xdc <CJK>
++<U8469> /xe8/xdd <CJK>
++<U8446> /xe8/xde <CJK>
++<U842C> /xe8/xdf <CJK>
++<U846F> /xe8/xe0 <CJK>
++<U8479> /xe8/xe1 <CJK>
++<U8435> /xe8/xe2 <CJK>
++<U84CA> /xe8/xe3 <CJK>
++<U8462> /xe8/xe4 <CJK>
++<U84B9> /xe8/xe5 <CJK>
++<U84BF> /xe8/xe6 <CJK>
++<U849F> /xe8/xe7 <CJK>
++<U84D9> /xe8/xe8 <CJK>
++<U84CD> /xe8/xe9 <CJK>
++<U84BB> /xe8/xea <CJK>
++<U84DA> /xe8/xeb <CJK>
++<U84D0> /xe8/xec <CJK>
++<U84C1> /xe8/xed <CJK>
++<U84C6> /xe8/xee <CJK>
++<U84D6> /xe8/xef <CJK>
++<U84A1> /xe8/xf0 <CJK>
++<U8521> /xe8/xf1 <CJK>
++<U84FF> /xe8/xf2 <CJK>
++<U84F4> /xe8/xf3 <CJK>
++<U8517> /xe8/xf4 <CJK>
++<U8518> /xe8/xf5 <CJK>
++<U852C> /xe8/xf6 <CJK>
++<U851F> /xe8/xf7 <CJK>
++<U8515> /xe8/xf8 <CJK>
++<U8514> /xe8/xf9 <CJK>
++<U84FC> /xe8/xfa <CJK>
++<U8540> /xe8/xfb <CJK>
++<U8563> /xe8/xfc <CJK>
++<U8558> /xe8/xfd <CJK>
++<U8548> /xe8/xfe <CJK>
++<U8541> /xe9/xa1 <CJK>
++<U8602> /xe9/xa2 <CJK>
++<U854B> /xe9/xa3 <CJK>
++<U8555> /xe9/xa4 <CJK>
++<U8580> /xe9/xa5 <CJK>
++<U85A4> /xe9/xa6 <CJK>
++<U8588> /xe9/xa7 <CJK>
++<U8591> /xe9/xa8 <CJK>
++<U858A> /xe9/xa9 <CJK>
++<U85A8> /xe9/xaa <CJK>
++<U856D> /xe9/xab <CJK>
++<U8594> /xe9/xac <CJK>
++<U859B> /xe9/xad <CJK>
++<U85EA> /xe9/xae <CJK>
++<U8587> /xe9/xaf <CJK>
++<U859C> /xe9/xb0 <CJK>
++<U8577> /xe9/xb1 <CJK>
++<U857E> /xe9/xb2 <CJK>
++<U8590> /xe9/xb3 <CJK>
++<U85C9> /xe9/xb4 <CJK>
++<U85BA> /xe9/xb5 <CJK>
++<U85CF> /xe9/xb6 <CJK>
++<U85B9> /xe9/xb7 <CJK>
++<U85D0> /xe9/xb8 <CJK>
++<U85D5> /xe9/xb9 <CJK>
++<U85DD> /xe9/xba <CJK>
++<U85E5> /xe9/xbb <CJK>
++<U85DC> /xe9/xbc <CJK>
++<U85F9> /xe9/xbd <CJK>
++<U860A> /xe9/xbe <CJK>
++<U8613> /xe9/xbf <CJK>
++<U860B> /xe9/xc0 <CJK>
++<U85FE> /xe9/xc1 <CJK>
++<U85FA> /xe9/xc2 <CJK>
++<U8606> /xe9/xc3 <CJK>
++<U8622> /xe9/xc4 <CJK>
++<U861A> /xe9/xc5 <CJK>
++<U8630> /xe9/xc6 <CJK>
++<U863F> /xe9/xc7 <CJK>
++<U864D> /xe9/xc8 <CJK>
++<U4E55> /xe9/xc9 <CJK>
++<U8654> /xe9/xca <CJK>
++<U865F> /xe9/xcb <CJK>
++<U8667> /xe9/xcc <CJK>
++<U8671> /xe9/xcd <CJK>
++<U8693> /xe9/xce <CJK>
++<U86A3> /xe9/xcf <CJK>
++<U86A9> /xe9/xd0 <CJK>
++<U86AA> /xe9/xd1 <CJK>
++<U868B> /xe9/xd2 <CJK>
++<U868C> /xe9/xd3 <CJK>
++<U86B6> /xe9/xd4 <CJK>
++<U86AF> /xe9/xd5 <CJK>
++<U86C4> /xe9/xd6 <CJK>
++<U86C6> /xe9/xd7 <CJK>
++<U86B0> /xe9/xd8 <CJK>
++<U86C9> /xe9/xd9 <CJK>
++<U8823> /xe9/xda <CJK>
++<U86AB> /xe9/xdb <CJK>
++<U86D4> /xe9/xdc <CJK>
++<U86DE> /xe9/xdd <CJK>
++<U86E9> /xe9/xde <CJK>
++<U86EC> /xe9/xdf <CJK>
++<U86DF> /xe9/xe0 <CJK>
++<U86DB> /xe9/xe1 <CJK>
++<U86EF> /xe9/xe2 <CJK>
++<U8712> /xe9/xe3 <CJK>
++<U8706> /xe9/xe4 <CJK>
++<U8708> /xe9/xe5 <CJK>
++<U8700> /xe9/xe6 <CJK>
++<U8703> /xe9/xe7 <CJK>
++<U86FB> /xe9/xe8 <CJK>
++<U8711> /xe9/xe9 <CJK>
++<U8709> /xe9/xea <CJK>
++<U870D> /xe9/xeb <CJK>
++<U86F9> /xe9/xec <CJK>
++<U870A> /xe9/xed <CJK>
++<U8734> /xe9/xee <CJK>
++<U873F> /xe9/xef <CJK>
++<U8737> /xe9/xf0 <CJK>
++<U873B> /xe9/xf1 <CJK>
++<U8725> /xe9/xf2 <CJK>
++<U8729> /xe9/xf3 <CJK>
++<U871A> /xe9/xf4 <CJK>
++<U8760> /xe9/xf5 <CJK>
++<U875F> /xe9/xf6 <CJK>
++<U8778> /xe9/xf7 <CJK>
++<U874C> /xe9/xf8 <CJK>
++<U874E> /xe9/xf9 <CJK>
++<U8774> /xe9/xfa <CJK>
++<U8757> /xe9/xfb <CJK>
++<U8768> /xe9/xfc <CJK>
++<U876E> /xe9/xfd <CJK>
++<U8759> /xe9/xfe <CJK>
++<U8753> /xea/xa1 <CJK>
++<U8763> /xea/xa2 <CJK>
++<U876A> /xea/xa3 <CJK>
++<U8805> /xea/xa4 <CJK>
++<U87A2> /xea/xa5 <CJK>
++<U879F> /xea/xa6 <CJK>
++<U8782> /xea/xa7 <CJK>
++<U87AF> /xea/xa8 <CJK>
++<U87CB> /xea/xa9 <CJK>
++<U87BD> /xea/xaa <CJK>
++<U87C0> /xea/xab <CJK>
++<U87D0> /xea/xac <CJK>
++<U96D6> /xea/xad <CJK>
++<U87AB> /xea/xae <CJK>
++<U87C4> /xea/xaf <CJK>
++<U87B3> /xea/xb0 <CJK>
++<U87C7> /xea/xb1 <CJK>
++<U87C6> /xea/xb2 <CJK>
++<U87BB> /xea/xb3 <CJK>
++<U87EF> /xea/xb4 <CJK>
++<U87F2> /xea/xb5 <CJK>
++<U87E0> /xea/xb6 <CJK>
++<U880F> /xea/xb7 <CJK>
++<U880D> /xea/xb8 <CJK>
++<U87FE> /xea/xb9 <CJK>
++<U87F6> /xea/xba <CJK>
++<U87F7> /xea/xbb <CJK>
++<U880E> /xea/xbc <CJK>
++<U87D2> /xea/xbd <CJK>
++<U8811> /xea/xbe <CJK>
++<U8816> /xea/xbf <CJK>
++<U8815> /xea/xc0 <CJK>
++<U8822> /xea/xc1 <CJK>
++<U8821> /xea/xc2 <CJK>
++<U8831> /xea/xc3 <CJK>
++<U8836> /xea/xc4 <CJK>
++<U8839> /xea/xc5 <CJK>
++<U8827> /xea/xc6 <CJK>
++<U883B> /xea/xc7 <CJK>
++<U8844> /xea/xc8 <CJK>
++<U8842> /xea/xc9 <CJK>
++<U8852> /xea/xca <CJK>
++<U8859> /xea/xcb <CJK>
++<U885E> /xea/xcc <CJK>
++<U8862> /xea/xcd <CJK>
++<U886B> /xea/xce <CJK>
++<U8881> /xea/xcf <CJK>
++<U887E> /xea/xd0 <CJK>
++<U889E> /xea/xd1 <CJK>
++<U8875> /xea/xd2 <CJK>
++<U887D> /xea/xd3 <CJK>
++<U88B5> /xea/xd4 <CJK>
++<U8872> /xea/xd5 <CJK>
++<U8882> /xea/xd6 <CJK>
++<U8897> /xea/xd7 <CJK>
++<U8892> /xea/xd8 <CJK>
++<U88AE> /xea/xd9 <CJK>
++<U8899> /xea/xda <CJK>
++<U88A2> /xea/xdb <CJK>
++<U888D> /xea/xdc <CJK>
++<U88A4> /xea/xdd <CJK>
++<U88B0> /xea/xde <CJK>
++<U88BF> /xea/xdf <CJK>
++<U88B1> /xea/xe0 <CJK>
++<U88C3> /xea/xe1 <CJK>
++<U88C4> /xea/xe2 <CJK>
++<U88D4> /xea/xe3 <CJK>
++<U88D8> /xea/xe4 <CJK>
++<U88D9> /xea/xe5 <CJK>
++<U88DD> /xea/xe6 <CJK>
++<U88F9> /xea/xe7 <CJK>
++<U8902> /xea/xe8 <CJK>
++<U88FC> /xea/xe9 <CJK>
++<U88F4> /xea/xea <CJK>
++<U88E8> /xea/xeb <CJK>
++<U88F2> /xea/xec <CJK>
++<U8904> /xea/xed <CJK>
++<U890C> /xea/xee <CJK>
++<U890A> /xea/xef <CJK>
++<U8913> /xea/xf0 <CJK>
++<U8943> /xea/xf1 <CJK>
++<U891E> /xea/xf2 <CJK>
++<U8925> /xea/xf3 <CJK>
++<U892A> /xea/xf4 <CJK>
++<U892B> /xea/xf5 <CJK>
++<U8941> /xea/xf6 <CJK>
++<U8944> /xea/xf7 <CJK>
++<U893B> /xea/xf8 <CJK>
++<U8936> /xea/xf9 <CJK>
++<U8938> /xea/xfa <CJK>
++<U894C> /xea/xfb <CJK>
++<U891D> /xea/xfc <CJK>
++<U8960> /xea/xfd <CJK>
++<U895E> /xea/xfe <CJK>
++<U8966> /xeb/xa1 <CJK>
++<U8964> /xeb/xa2 <CJK>
++<U896D> /xeb/xa3 <CJK>
++<U896A> /xeb/xa4 <CJK>
++<U896F> /xeb/xa5 <CJK>
++<U8974> /xeb/xa6 <CJK>
++<U8977> /xeb/xa7 <CJK>
++<U897E> /xeb/xa8 <CJK>
++<U8983> /xeb/xa9 <CJK>
++<U8988> /xeb/xaa <CJK>
++<U898A> /xeb/xab <CJK>
++<U8993> /xeb/xac <CJK>
++<U8998> /xeb/xad <CJK>
++<U89A1> /xeb/xae <CJK>
++<U89A9> /xeb/xaf <CJK>
++<U89A6> /xeb/xb0 <CJK>
++<U89AC> /xeb/xb1 <CJK>
++<U89AF> /xeb/xb2 <CJK>
++<U89B2> /xeb/xb3 <CJK>
++<U89BA> /xeb/xb4 <CJK>
++<U89BD> /xeb/xb5 <CJK>
++<U89BF> /xeb/xb6 <CJK>
++<U89C0> /xeb/xb7 <CJK>
++<U89DA> /xeb/xb8 <CJK>
++<U89DC> /xeb/xb9 <CJK>
++<U89DD> /xeb/xba <CJK>
++<U89E7> /xeb/xbb <CJK>
++<U89F4> /xeb/xbc <CJK>
++<U89F8> /xeb/xbd <CJK>
++<U8A03> /xeb/xbe <CJK>
++<U8A16> /xeb/xbf <CJK>
++<U8A10> /xeb/xc0 <CJK>
++<U8A0C> /xeb/xc1 <CJK>
++<U8A1B> /xeb/xc2 <CJK>
++<U8A1D> /xeb/xc3 <CJK>
++<U8A25> /xeb/xc4 <CJK>
++<U8A36> /xeb/xc5 <CJK>
++<U8A41> /xeb/xc6 <CJK>
++<U8A5B> /xeb/xc7 <CJK>
++<U8A52> /xeb/xc8 <CJK>
++<U8A46> /xeb/xc9 <CJK>
++<U8A48> /xeb/xca <CJK>
++<U8A7C> /xeb/xcb <CJK>
++<U8A6D> /xeb/xcc <CJK>
++<U8A6C> /xeb/xcd <CJK>
++<U8A62> /xeb/xce <CJK>
++<U8A85> /xeb/xcf <CJK>
++<U8A82> /xeb/xd0 <CJK>
++<U8A84> /xeb/xd1 <CJK>
++<U8AA8> /xeb/xd2 <CJK>
++<U8AA1> /xeb/xd3 <CJK>
++<U8A91> /xeb/xd4 <CJK>
++<U8AA5> /xeb/xd5 <CJK>
++<U8AA6> /xeb/xd6 <CJK>
++<U8A9A> /xeb/xd7 <CJK>
++<U8AA3> /xeb/xd8 <CJK>
++<U8AC4> /xeb/xd9 <CJK>
++<U8ACD> /xeb/xda <CJK>
++<U8AC2> /xeb/xdb <CJK>
++<U8ADA> /xeb/xdc <CJK>
++<U8AEB> /xeb/xdd <CJK>
++<U8AF3> /xeb/xde <CJK>
++<U8AE7> /xeb/xdf <CJK>
++<U8AE4> /xeb/xe0 <CJK>
++<U8AF1> /xeb/xe1 <CJK>
++<U8B14> /xeb/xe2 <CJK>
++<U8AE0> /xeb/xe3 <CJK>
++<U8AE2> /xeb/xe4 <CJK>
++<U8AF7> /xeb/xe5 <CJK>
++<U8ADE> /xeb/xe6 <CJK>
++<U8ADB> /xeb/xe7 <CJK>
++<U8B0C> /xeb/xe8 <CJK>
++<U8B07> /xeb/xe9 <CJK>
++<U8B1A> /xeb/xea <CJK>
++<U8AE1> /xeb/xeb <CJK>
++<U8B16> /xeb/xec <CJK>
++<U8B10> /xeb/xed <CJK>
++<U8B17> /xeb/xee <CJK>
++<U8B20> /xeb/xef <CJK>
++<U8B33> /xeb/xf0 <CJK>
++<U97AB> /xeb/xf1 <CJK>
++<U8B26> /xeb/xf2 <CJK>
++<U8B2B> /xeb/xf3 <CJK>
++<U8B3E> /xeb/xf4 <CJK>
++<U8B28> /xeb/xf5 <CJK>
++<U8B41> /xeb/xf6 <CJK>
++<U8B4C> /xeb/xf7 <CJK>
++<U8B4F> /xeb/xf8 <CJK>
++<U8B4E> /xeb/xf9 <CJK>
++<U8B49> /xeb/xfa <CJK>
++<U8B56> /xeb/xfb <CJK>
++<U8B5B> /xeb/xfc <CJK>
++<U8B5A> /xeb/xfd <CJK>
++<U8B6B> /xeb/xfe <CJK>
++<U8B5F> /xec/xa1 <CJK>
++<U8B6C> /xec/xa2 <CJK>
++<U8B6F> /xec/xa3 <CJK>
++<U8B74> /xec/xa4 <CJK>
++<U8B7D> /xec/xa5 <CJK>
++<U8B80> /xec/xa6 <CJK>
++<U8B8C> /xec/xa7 <CJK>
++<U8B8E> /xec/xa8 <CJK>
++<U8B92> /xec/xa9 <CJK>
++<U8B93> /xec/xaa <CJK>
++<U8B96> /xec/xab <CJK>
++<U8B99> /xec/xac <CJK>
++<U8B9A> /xec/xad <CJK>
++<U8C3A> /xec/xae <CJK>
++<U8C41> /xec/xaf <CJK>
++<U8C3F> /xec/xb0 <CJK>
++<U8C48> /xec/xb1 <CJK>
++<U8C4C> /xec/xb2 <CJK>
++<U8C4E> /xec/xb3 <CJK>
++<U8C50> /xec/xb4 <CJK>
++<U8C55> /xec/xb5 <CJK>
++<U8C62> /xec/xb6 <CJK>
++<U8C6C> /xec/xb7 <CJK>
++<U8C78> /xec/xb8 <CJK>
++<U8C7A> /xec/xb9 <CJK>
++<U8C82> /xec/xba <CJK>
++<U8C89> /xec/xbb <CJK>
++<U8C85> /xec/xbc <CJK>
++<U8C8A> /xec/xbd <CJK>
++<U8C8D> /xec/xbe <CJK>
++<U8C8E> /xec/xbf <CJK>
++<U8C94> /xec/xc0 <CJK>
++<U8C7C> /xec/xc1 <CJK>
++<U8C98> /xec/xc2 <CJK>
++<U621D> /xec/xc3 <CJK>
++<U8CAD> /xec/xc4 <CJK>
++<U8CAA> /xec/xc5 <CJK>
++<U8CBD> /xec/xc6 <CJK>
++<U8CB2> /xec/xc7 <CJK>
++<U8CB3> /xec/xc8 <CJK>
++<U8CAE> /xec/xc9 <CJK>
++<U8CB6> /xec/xca <CJK>
++<U8CC8> /xec/xcb <CJK>
++<U8CC1> /xec/xcc <CJK>
++<U8CE4> /xec/xcd <CJK>
++<U8CE3> /xec/xce <CJK>
++<U8CDA> /xec/xcf <CJK>
++<U8CFD> /xec/xd0 <CJK>
++<U8CFA> /xec/xd1 <CJK>
++<U8CFB> /xec/xd2 <CJK>
++<U8D04> /xec/xd3 <CJK>
++<U8D05> /xec/xd4 <CJK>
++<U8D0A> /xec/xd5 <CJK>
++<U8D07> /xec/xd6 <CJK>
++<U8D0F> /xec/xd7 <CJK>
++<U8D0D> /xec/xd8 <CJK>
++<U8D10> /xec/xd9 <CJK>
++<U9F4E> /xec/xda <CJK>
++<U8D13> /xec/xdb <CJK>
++<U8CCD> /xec/xdc <CJK>
++<U8D14> /xec/xdd <CJK>
++<U8D16> /xec/xde <CJK>
++<U8D67> /xec/xdf <CJK>
++<U8D6D> /xec/xe0 <CJK>
++<U8D71> /xec/xe1 <CJK>
++<U8D73> /xec/xe2 <CJK>
++<U8D81> /xec/xe3 <CJK>
++<U8D99> /xec/xe4 <CJK>
++<U8DC2> /xec/xe5 <CJK>
++<U8DBE> /xec/xe6 <CJK>
++<U8DBA> /xec/xe7 <CJK>
++<U8DCF> /xec/xe8 <CJK>
++<U8DDA> /xec/xe9 <CJK>
++<U8DD6> /xec/xea <CJK>
++<U8DCC> /xec/xeb <CJK>
++<U8DDB> /xec/xec <CJK>
++<U8DCB> /xec/xed <CJK>
++<U8DEA> /xec/xee <CJK>
++<U8DEB> /xec/xef <CJK>
++<U8DDF> /xec/xf0 <CJK>
++<U8DE3> /xec/xf1 <CJK>
++<U8DFC> /xec/xf2 <CJK>
++<U8E08> /xec/xf3 <CJK>
++<U8E09> /xec/xf4 <CJK>
++<U8DFF> /xec/xf5 <CJK>
++<U8E1D> /xec/xf6 <CJK>
++<U8E1E> /xec/xf7 <CJK>
++<U8E10> /xec/xf8 <CJK>
++<U8E1F> /xec/xf9 <CJK>
++<U8E42> /xec/xfa <CJK>
++<U8E35> /xec/xfb <CJK>
++<U8E30> /xec/xfc <CJK>
++<U8E34> /xec/xfd <CJK>
++<U8E4A> /xec/xfe <CJK>
++<U8E47> /xed/xa1 <CJK>
++<U8E49> /xed/xa2 <CJK>
++<U8E4C> /xed/xa3 <CJK>
++<U8E50> /xed/xa4 <CJK>
++<U8E48> /xed/xa5 <CJK>
++<U8E59> /xed/xa6 <CJK>
++<U8E64> /xed/xa7 <CJK>
++<U8E60> /xed/xa8 <CJK>
++<U8E2A> /xed/xa9 <CJK>
++<U8E63> /xed/xaa <CJK>
++<U8E55> /xed/xab <CJK>
++<U8E76> /xed/xac <CJK>
++<U8E72> /xed/xad <CJK>
++<U8E7C> /xed/xae <CJK>
++<U8E81> /xed/xaf <CJK>
++<U8E87> /xed/xb0 <CJK>
++<U8E85> /xed/xb1 <CJK>
++<U8E84> /xed/xb2 <CJK>
++<U8E8B> /xed/xb3 <CJK>
++<U8E8A> /xed/xb4 <CJK>
++<U8E93> /xed/xb5 <CJK>
++<U8E91> /xed/xb6 <CJK>
++<U8E94> /xed/xb7 <CJK>
++<U8E99> /xed/xb8 <CJK>
++<U8EAA> /xed/xb9 <CJK>
++<U8EA1> /xed/xba <CJK>
++<U8EAC> /xed/xbb <CJK>
++<U8EB0> /xed/xbc <CJK>
++<U8EC6> /xed/xbd <CJK>
++<U8EB1> /xed/xbe <CJK>
++<U8EBE> /xed/xbf <CJK>
++<U8EC5> /xed/xc0 <CJK>
++<U8EC8> /xed/xc1 <CJK>
++<U8ECB> /xed/xc2 <CJK>
++<U8EDB> /xed/xc3 <CJK>
++<U8EE3> /xed/xc4 <CJK>
++<U8EFC> /xed/xc5 <CJK>
++<U8EFB> /xed/xc6 <CJK>
++<U8EEB> /xed/xc7 <CJK>
++<U8EFE> /xed/xc8 <CJK>
++<U8F0A> /xed/xc9 <CJK>
++<U8F05> /xed/xca <CJK>
++<U8F15> /xed/xcb <CJK>
++<U8F12> /xed/xcc <CJK>
++<U8F19> /xed/xcd <CJK>
++<U8F13> /xed/xce <CJK>
++<U8F1C> /xed/xcf <CJK>
++<U8F1F> /xed/xd0 <CJK>
++<U8F1B> /xed/xd1 <CJK>
++<U8F0C> /xed/xd2 <CJK>
++<U8F26> /xed/xd3 <CJK>
++<U8F33> /xed/xd4 <CJK>
++<U8F3B> /xed/xd5 <CJK>
++<U8F39> /xed/xd6 <CJK>
++<U8F45> /xed/xd7 <CJK>
++<U8F42> /xed/xd8 <CJK>
++<U8F3E> /xed/xd9 <CJK>
++<U8F4C> /xed/xda <CJK>
++<U8F49> /xed/xdb <CJK>
++<U8F46> /xed/xdc <CJK>
++<U8F4E> /xed/xdd <CJK>
++<U8F57> /xed/xde <CJK>
++<U8F5C> /xed/xdf <CJK>
++<U8F62> /xed/xe0 <CJK>
++<U8F63> /xed/xe1 <CJK>
++<U8F64> /xed/xe2 <CJK>
++<U8F9C> /xed/xe3 <CJK>
++<U8F9F> /xed/xe4 <CJK>
++<U8FA3> /xed/xe5 <CJK>
++<U8FAD> /xed/xe6 <CJK>
++<U8FAF> /xed/xe7 <CJK>
++<U8FB7> /xed/xe8 <CJK>
++<U8FDA> /xed/xe9 <CJK>
++<U8FE5> /xed/xea <CJK>
++<U8FE2> /xed/xeb <CJK>
++<U8FEA> /xed/xec <CJK>
++<U8FEF> /xed/xed <CJK>
++<U9087> /xed/xee <CJK>
++<U8FF4> /xed/xef <CJK>
++<U9005> /xed/xf0 <CJK>
++<U8FF9> /xed/xf1 <CJK>
++<U8FFA> /xed/xf2 <CJK>
++<U9011> /xed/xf3 <CJK>
++<U9015> /xed/xf4 <CJK>
++<U9021> /xed/xf5 <CJK>
++<U900D> /xed/xf6 <CJK>
++<U901E> /xed/xf7 <CJK>
++<U9016> /xed/xf8 <CJK>
++<U900B> /xed/xf9 <CJK>
++<U9027> /xed/xfa <CJK>
++<U9036> /xed/xfb <CJK>
++<U9035> /xed/xfc <CJK>
++<U9039> /xed/xfd <CJK>
++<U8FF8> /xed/xfe <CJK>
++<U904F> /xee/xa1 <CJK>
++<U9050> /xee/xa2 <CJK>
++<U9051> /xee/xa3 <CJK>
++<U9052> /xee/xa4 <CJK>
++<U900E> /xee/xa5 <CJK>
++<U9049> /xee/xa6 <CJK>
++<U903E> /xee/xa7 <CJK>
++<U9056> /xee/xa8 <CJK>
++<U9058> /xee/xa9 <CJK>
++<U905E> /xee/xaa <CJK>
++<U9068> /xee/xab <CJK>
++<U906F> /xee/xac <CJK>
++<U9076> /xee/xad <CJK>
++<U96A8> /xee/xae <CJK>
++<U9072> /xee/xaf <CJK>
++<U9082> /xee/xb0 <CJK>
++<U907D> /xee/xb1 <CJK>
++<U9081> /xee/xb2 <CJK>
++<U9080> /xee/xb3 <CJK>
++<U908A> /xee/xb4 <CJK>
++<U9089> /xee/xb5 <CJK>
++<U908F> /xee/xb6 <CJK>
++<U90A8> /xee/xb7 <CJK>
++<U90AF> /xee/xb8 <CJK>
++<U90B1> /xee/xb9 <CJK>
++<U90B5> /xee/xba <CJK>
++<U90E2> /xee/xbb <CJK>
++<U90E4> /xee/xbc <CJK>
++<U6248> /xee/xbd <CJK>
++<U90DB> /xee/xbe <CJK>
++<U9102> /xee/xbf <CJK>
++<U9112> /xee/xc0 <CJK>
++<U9119> /xee/xc1 <CJK>
++<U9132> /xee/xc2 <CJK>
++<U9130> /xee/xc3 <CJK>
++<U914A> /xee/xc4 <CJK>
++<U9156> /xee/xc5 <CJK>
++<U9158> /xee/xc6 <CJK>
++<U9163> /xee/xc7 <CJK>
++<U9165> /xee/xc8 <CJK>
++<U9169> /xee/xc9 <CJK>
++<U9173> /xee/xca <CJK>
++<U9172> /xee/xcb <CJK>
++<U918B> /xee/xcc <CJK>
++<U9189> /xee/xcd <CJK>
++<U9182> /xee/xce <CJK>
++<U91A2> /xee/xcf <CJK>
++<U91AB> /xee/xd0 <CJK>
++<U91AF> /xee/xd1 <CJK>
++<U91AA> /xee/xd2 <CJK>
++<U91B5> /xee/xd3 <CJK>
++<U91B4> /xee/xd4 <CJK>
++<U91BA> /xee/xd5 <CJK>
++<U91C0> /xee/xd6 <CJK>
++<U91C1> /xee/xd7 <CJK>
++<U91C9> /xee/xd8 <CJK>
++<U91CB> /xee/xd9 <CJK>
++<U91D0> /xee/xda <CJK>
++<U91D6> /xee/xdb <CJK>
++<U91DF> /xee/xdc <CJK>
++<U91E1> /xee/xdd <CJK>
++<U91DB> /xee/xde <CJK>
++<U91FC> /xee/xdf <CJK>
++<U91F5> /xee/xe0 <CJK>
++<U91F6> /xee/xe1 <CJK>
++<U921E> /xee/xe2 <CJK>
++<U91FF> /xee/xe3 <CJK>
++<U9214> /xee/xe4 <CJK>
++<U922C> /xee/xe5 <CJK>
++<U9215> /xee/xe6 <CJK>
++<U9211> /xee/xe7 <CJK>
++<U925E> /xee/xe8 <CJK>
++<U9257> /xee/xe9 <CJK>
++<U9245> /xee/xea <CJK>
++<U9249> /xee/xeb <CJK>
++<U9264> /xee/xec <CJK>
++<U9248> /xee/xed <CJK>
++<U9295> /xee/xee <CJK>
++<U923F> /xee/xef <CJK>
++<U924B> /xee/xf0 <CJK>
++<U9250> /xee/xf1 <CJK>
++<U929C> /xee/xf2 <CJK>
++<U9296> /xee/xf3 <CJK>
++<U9293> /xee/xf4 <CJK>
++<U929B> /xee/xf5 <CJK>
++<U925A> /xee/xf6 <CJK>
++<U92CF> /xee/xf7 <CJK>
++<U92B9> /xee/xf8 <CJK>
++<U92B7> /xee/xf9 <CJK>
++<U92E9> /xee/xfa <CJK>
++<U930F> /xee/xfb <CJK>
++<U92FA> /xee/xfc <CJK>
++<U9344> /xee/xfd <CJK>
++<U932E> /xee/xfe <CJK>
++<U9319> /xef/xa1 <CJK>
++<U9322> /xef/xa2 <CJK>
++<U931A> /xef/xa3 <CJK>
++<U9323> /xef/xa4 <CJK>
++<U933A> /xef/xa5 <CJK>
++<U9335> /xef/xa6 <CJK>
++<U933B> /xef/xa7 <CJK>
++<U935C> /xef/xa8 <CJK>
++<U9360> /xef/xa9 <CJK>
++<U937C> /xef/xaa <CJK>
++<U936E> /xef/xab <CJK>
++<U9356> /xef/xac <CJK>
++<U93B0> /xef/xad <CJK>
++<U93AC> /xef/xae <CJK>
++<U93AD> /xef/xaf <CJK>
++<U9394> /xef/xb0 <CJK>
++<U93B9> /xef/xb1 <CJK>
++<U93D6> /xef/xb2 <CJK>
++<U93D7> /xef/xb3 <CJK>
++<U93E8> /xef/xb4 <CJK>
++<U93E5> /xef/xb5 <CJK>
++<U93D8> /xef/xb6 <CJK>
++<U93C3> /xef/xb7 <CJK>
++<U93DD> /xef/xb8 <CJK>
++<U93D0> /xef/xb9 <CJK>
++<U93C8> /xef/xba <CJK>
++<U93E4> /xef/xbb <CJK>
++<U941A> /xef/xbc <CJK>
++<U9414> /xef/xbd <CJK>
++<U9413> /xef/xbe <CJK>
++<U9403> /xef/xbf <CJK>
++<U9407> /xef/xc0 <CJK>
++<U9410> /xef/xc1 <CJK>
++<U9436> /xef/xc2 <CJK>
++<U942B> /xef/xc3 <CJK>
++<U9435> /xef/xc4 <CJK>
++<U9421> /xef/xc5 <CJK>
++<U943A> /xef/xc6 <CJK>
++<U9441> /xef/xc7 <CJK>
++<U9452> /xef/xc8 <CJK>
++<U9444> /xef/xc9 <CJK>
++<U945B> /xef/xca <CJK>
++<U9460> /xef/xcb <CJK>
++<U9462> /xef/xcc <CJK>
++<U945E> /xef/xcd <CJK>
++<U946A> /xef/xce <CJK>
++<U9229> /xef/xcf <CJK>
++<U9470> /xef/xd0 <CJK>
++<U9475> /xef/xd1 <CJK>
++<U9477> /xef/xd2 <CJK>
++<U947D> /xef/xd3 <CJK>
++<U945A> /xef/xd4 <CJK>
++<U947C> /xef/xd5 <CJK>
++<U947E> /xef/xd6 <CJK>
++<U9481> /xef/xd7 <CJK>
++<U947F> /xef/xd8 <CJK>
++<U9582> /xef/xd9 <CJK>
++<U9587> /xef/xda <CJK>
++<U958A> /xef/xdb <CJK>
++<U9594> /xef/xdc <CJK>
++<U9596> /xef/xdd <CJK>
++<U9598> /xef/xde <CJK>
++<U9599> /xef/xdf <CJK>
++<U95A0> /xef/xe0 <CJK>
++<U95A8> /xef/xe1 <CJK>
++<U95A7> /xef/xe2 <CJK>
++<U95AD> /xef/xe3 <CJK>
++<U95BC> /xef/xe4 <CJK>
++<U95BB> /xef/xe5 <CJK>
++<U95B9> /xef/xe6 <CJK>
++<U95BE> /xef/xe7 <CJK>
++<U95CA> /xef/xe8 <CJK>
++<U6FF6> /xef/xe9 <CJK>
++<U95C3> /xef/xea <CJK>
++<U95CD> /xef/xeb <CJK>
++<U95CC> /xef/xec <CJK>
++<U95D5> /xef/xed <CJK>
++<U95D4> /xef/xee <CJK>
++<U95D6> /xef/xef <CJK>
++<U95DC> /xef/xf0 <CJK>
++<U95E1> /xef/xf1 <CJK>
++<U95E5> /xef/xf2 <CJK>
++<U95E2> /xef/xf3 <CJK>
++<U9621> /xef/xf4 <CJK>
++<U9628> /xef/xf5 <CJK>
++<U962E> /xef/xf6 <CJK>
++<U962F> /xef/xf7 <CJK>
++<U9642> /xef/xf8 <CJK>
++<U964C> /xef/xf9 <CJK>
++<U964F> /xef/xfa <CJK>
++<U964B> /xef/xfb <CJK>
++<U9677> /xef/xfc <CJK>
++<U965C> /xef/xfd <CJK>
++<U965E> /xef/xfe <CJK>
++<U965D> /xf0/xa1 <CJK>
++<U965F> /xf0/xa2 <CJK>
++<U9666> /xf0/xa3 <CJK>
++<U9672> /xf0/xa4 <CJK>
++<U966C> /xf0/xa5 <CJK>
++<U968D> /xf0/xa6 <CJK>
++<U9698> /xf0/xa7 <CJK>
++<U9695> /xf0/xa8 <CJK>
++<U9697> /xf0/xa9 <CJK>
++<U96AA> /xf0/xaa <CJK>
++<U96A7> /xf0/xab <CJK>
++<U96B1> /xf0/xac <CJK>
++<U96B2> /xf0/xad <CJK>
++<U96B0> /xf0/xae <CJK>
++<U96B4> /xf0/xaf <CJK>
++<U96B6> /xf0/xb0 <CJK>
++<U96B8> /xf0/xb1 <CJK>
++<U96B9> /xf0/xb2 <CJK>
++<U96CE> /xf0/xb3 <CJK>
++<U96CB> /xf0/xb4 <CJK>
++<U96C9> /xf0/xb5 <CJK>
++<U96CD> /xf0/xb6 <CJK>
++<U894D> /xf0/xb7 <CJK>
++<U96DC> /xf0/xb8 <CJK>
++<U970D> /xf0/xb9 <CJK>
++<U96D5> /xf0/xba <CJK>
++<U96F9> /xf0/xbb <CJK>
++<U9704> /xf0/xbc <CJK>
++<U9706> /xf0/xbd <CJK>
++<U9708> /xf0/xbe <CJK>
++<U9713> /xf0/xbf <CJK>
++<U970E> /xf0/xc0 <CJK>
++<U9711> /xf0/xc1 <CJK>
++<U970F> /xf0/xc2 <CJK>
++<U9716> /xf0/xc3 <CJK>
++<U9719> /xf0/xc4 <CJK>
++<U9724> /xf0/xc5 <CJK>
++<U972A> /xf0/xc6 <CJK>
++<U9730> /xf0/xc7 <CJK>
++<U9739> /xf0/xc8 <CJK>
++<U973D> /xf0/xc9 <CJK>
++<U973E> /xf0/xca <CJK>
++<U9744> /xf0/xcb <CJK>
++<U9746> /xf0/xcc <CJK>
++<U9748> /xf0/xcd <CJK>
++<U9742> /xf0/xce <CJK>
++<U9749> /xf0/xcf <CJK>
++<U975C> /xf0/xd0 <CJK>
++<U9760> /xf0/xd1 <CJK>
++<U9764> /xf0/xd2 <CJK>
++<U9766> /xf0/xd3 <CJK>
++<U9768> /xf0/xd4 <CJK>
++<U52D2> /xf0/xd5 <CJK>
++<U976B> /xf0/xd6 <CJK>
++<U9771> /xf0/xd7 <CJK>
++<U9779> /xf0/xd8 <CJK>
++<U9785> /xf0/xd9 <CJK>
++<U977C> /xf0/xda <CJK>
++<U9781> /xf0/xdb <CJK>
++<U977A> /xf0/xdc <CJK>
++<U9786> /xf0/xdd <CJK>
++<U978B> /xf0/xde <CJK>
++<U978F> /xf0/xdf <CJK>
++<U9790> /xf0/xe0 <CJK>
++<U979C> /xf0/xe1 <CJK>
++<U97A8> /xf0/xe2 <CJK>
++<U97A6> /xf0/xe3 <CJK>
++<U97A3> /xf0/xe4 <CJK>
++<U97B3> /xf0/xe5 <CJK>
++<U97B4> /xf0/xe6 <CJK>
++<U97C3> /xf0/xe7 <CJK>
++<U97C6> /xf0/xe8 <CJK>
++<U97C8> /xf0/xe9 <CJK>
++<U97CB> /xf0/xea <CJK>
++<U97DC> /xf0/xeb <CJK>
++<U97ED> /xf0/xec <CJK>
++<U9F4F> /xf0/xed <CJK>
++<U97F2> /xf0/xee <CJK>
++<U7ADF> /xf0/xef <CJK>
++<U97F6> /xf0/xf0 <CJK>
++<U97F5> /xf0/xf1 <CJK>
++<U980F> /xf0/xf2 <CJK>
++<U980C> /xf0/xf3 <CJK>
++<U9838> /xf0/xf4 <CJK>
++<U9824> /xf0/xf5 <CJK>
++<U9821> /xf0/xf6 <CJK>
++<U9837> /xf0/xf7 <CJK>
++<U983D> /xf0/xf8 <CJK>
++<U9846> /xf0/xf9 <CJK>
++<U984F> /xf0/xfa <CJK>
++<U984B> /xf0/xfb <CJK>
++<U986B> /xf0/xfc <CJK>
++<U986F> /xf0/xfd <CJK>
++<U9870> /xf0/xfe <CJK>
++<U9871> /xf1/xa1 <CJK>
++<U9874> /xf1/xa2 <CJK>
++<U9873> /xf1/xa3 <CJK>
++<U98AA> /xf1/xa4 <CJK>
++<U98AF> /xf1/xa5 <CJK>
++<U98B1> /xf1/xa6 <CJK>
++<U98B6> /xf1/xa7 <CJK>
++<U98C4> /xf1/xa8 <CJK>
++<U98C3> /xf1/xa9 <CJK>
++<U98C6> /xf1/xaa <CJK>
++<U98E9> /xf1/xab <CJK>
++<U98EB> /xf1/xac <CJK>
++<U9903> /xf1/xad <CJK>
++<U9909> /xf1/xae <CJK>
++<U9912> /xf1/xaf <CJK>
++<U9914> /xf1/xb0 <CJK>
++<U9918> /xf1/xb1 <CJK>
++<U9921> /xf1/xb2 <CJK>
++<U991D> /xf1/xb3 <CJK>
++<U991E> /xf1/xb4 <CJK>
++<U9924> /xf1/xb5 <CJK>
++<U9920> /xf1/xb6 <CJK>
++<U992C> /xf1/xb7 <CJK>
++<U992E> /xf1/xb8 <CJK>
++<U993D> /xf1/xb9 <CJK>
++<U993E> /xf1/xba <CJK>
++<U9942> /xf1/xbb <CJK>
++<U9949> /xf1/xbc <CJK>
++<U9945> /xf1/xbd <CJK>
++<U9950> /xf1/xbe <CJK>
++<U994B> /xf1/xbf <CJK>
++<U9951> /xf1/xc0 <CJK>
++<U9952> /xf1/xc1 <CJK>
++<U994C> /xf1/xc2 <CJK>
++<U9955> /xf1/xc3 <CJK>
++<U9997> /xf1/xc4 <CJK>
++<U9998> /xf1/xc5 <CJK>
++<U99A5> /xf1/xc6 <CJK>
++<U99AD> /xf1/xc7 <CJK>
++<U99AE> /xf1/xc8 <CJK>
++<U99BC> /xf1/xc9 <CJK>
++<U99DF> /xf1/xca <CJK>
++<U99DB> /xf1/xcb <CJK>
++<U99DD> /xf1/xcc <CJK>
++<U99D8> /xf1/xcd <CJK>
++<U99D1> /xf1/xce <CJK>
++<U99ED> /xf1/xcf <CJK>
++<U99EE> /xf1/xd0 <CJK>
++<U99F1> /xf1/xd1 <CJK>
++<U99F2> /xf1/xd2 <CJK>
++<U99FB> /xf1/xd3 <CJK>
++<U99F8> /xf1/xd4 <CJK>
++<U9A01> /xf1/xd5 <CJK>
++<U9A0F> /xf1/xd6 <CJK>
++<U9A05> /xf1/xd7 <CJK>
++<U99E2> /xf1/xd8 <CJK>
++<U9A19> /xf1/xd9 <CJK>
++<U9A2B> /xf1/xda <CJK>
++<U9A37> /xf1/xdb <CJK>
++<U9A45> /xf1/xdc <CJK>
++<U9A42> /xf1/xdd <CJK>
++<U9A40> /xf1/xde <CJK>
++<U9A43> /xf1/xdf <CJK>
++<U9A3E> /xf1/xe0 <CJK>
++<U9A55> /xf1/xe1 <CJK>
++<U9A4D> /xf1/xe2 <CJK>
++<U9A5B> /xf1/xe3 <CJK>
++<U9A57> /xf1/xe4 <CJK>
++<U9A5F> /xf1/xe5 <CJK>
++<U9A62> /xf1/xe6 <CJK>
++<U9A65> /xf1/xe7 <CJK>
++<U9A64> /xf1/xe8 <CJK>
++<U9A69> /xf1/xe9 <CJK>
++<U9A6B> /xf1/xea <CJK>
++<U9A6A> /xf1/xeb <CJK>
++<U9AAD> /xf1/xec <CJK>
++<U9AB0> /xf1/xed <CJK>
++<U9ABC> /xf1/xee <CJK>
++<U9AC0> /xf1/xef <CJK>
++<U9ACF> /xf1/xf0 <CJK>
++<U9AD1> /xf1/xf1 <CJK>
++<U9AD3> /xf1/xf2 <CJK>
++<U9AD4> /xf1/xf3 <CJK>
++<U9ADE> /xf1/xf4 <CJK>
++<U9ADF> /xf1/xf5 <CJK>
++<U9AE2> /xf1/xf6 <CJK>
++<U9AE3> /xf1/xf7 <CJK>
++<U9AE6> /xf1/xf8 <CJK>
++<U9AEF> /xf1/xf9 <CJK>
++<U9AEB> /xf1/xfa <CJK>
++<U9AEE> /xf1/xfb <CJK>
++<U9AF4> /xf1/xfc <CJK>
++<U9AF1> /xf1/xfd <CJK>
++<U9AF7> /xf1/xfe <CJK>
++<U9AFB> /xf2/xa1 <CJK>
++<U9B06> /xf2/xa2 <CJK>
++<U9B18> /xf2/xa3 <CJK>
++<U9B1A> /xf2/xa4 <CJK>
++<U9B1F> /xf2/xa5 <CJK>
++<U9B22> /xf2/xa6 <CJK>
++<U9B23> /xf2/xa7 <CJK>
++<U9B25> /xf2/xa8 <CJK>
++<U9B27> /xf2/xa9 <CJK>
++<U9B28> /xf2/xaa <CJK>
++<U9B29> /xf2/xab <CJK>
++<U9B2A> /xf2/xac <CJK>
++<U9B2E> /xf2/xad <CJK>
++<U9B2F> /xf2/xae <CJK>
++<U9B32> /xf2/xaf <CJK>
++<U9B44> /xf2/xb0 <CJK>
++<U9B43> /xf2/xb1 <CJK>
++<U9B4F> /xf2/xb2 <CJK>
++<U9B4D> /xf2/xb3 <CJK>
++<U9B4E> /xf2/xb4 <CJK>
++<U9B51> /xf2/xb5 <CJK>
++<U9B58> /xf2/xb6 <CJK>
++<U9B74> /xf2/xb7 <CJK>
++<U9B93> /xf2/xb8 <CJK>
++<U9B83> /xf2/xb9 <CJK>
++<U9B91> /xf2/xba <CJK>
++<U9B96> /xf2/xbb <CJK>
++<U9B97> /xf2/xbc <CJK>
++<U9B9F> /xf2/xbd <CJK>
++<U9BA0> /xf2/xbe <CJK>
++<U9BA8> /xf2/xbf <CJK>
++<U9BB4> /xf2/xc0 <CJK>
++<U9BC0> /xf2/xc1 <CJK>
++<U9BCA> /xf2/xc2 <CJK>
++<U9BB9> /xf2/xc3 <CJK>
++<U9BC6> /xf2/xc4 <CJK>
++<U9BCF> /xf2/xc5 <CJK>
++<U9BD1> /xf2/xc6 <CJK>
++<U9BD2> /xf2/xc7 <CJK>
++<U9BE3> /xf2/xc8 <CJK>
++<U9BE2> /xf2/xc9 <CJK>
++<U9BE4> /xf2/xca <CJK>
++<U9BD4> /xf2/xcb <CJK>
++<U9BE1> /xf2/xcc <CJK>
++<U9C3A> /xf2/xcd <CJK>
++<U9BF2> /xf2/xce <CJK>
++<U9BF1> /xf2/xcf <CJK>
++<U9BF0> /xf2/xd0 <CJK>
++<U9C15> /xf2/xd1 <CJK>
++<U9C14> /xf2/xd2 <CJK>
++<U9C09> /xf2/xd3 <CJK>
++<U9C13> /xf2/xd4 <CJK>
++<U9C0C> /xf2/xd5 <CJK>
++<U9C06> /xf2/xd6 <CJK>
++<U9C08> /xf2/xd7 <CJK>
++<U9C12> /xf2/xd8 <CJK>
++<U9C0A> /xf2/xd9 <CJK>
++<U9C04> /xf2/xda <CJK>
++<U9C2E> /xf2/xdb <CJK>
++<U9C1B> /xf2/xdc <CJK>
++<U9C25> /xf2/xdd <CJK>
++<U9C24> /xf2/xde <CJK>
++<U9C21> /xf2/xdf <CJK>
++<U9C30> /xf2/xe0 <CJK>
++<U9C47> /xf2/xe1 <CJK>
++<U9C32> /xf2/xe2 <CJK>
++<U9C46> /xf2/xe3 <CJK>
++<U9C3E> /xf2/xe4 <CJK>
++<U9C5A> /xf2/xe5 <CJK>
++<U9C60> /xf2/xe6 <CJK>
++<U9C67> /xf2/xe7 <CJK>
++<U9C76> /xf2/xe8 <CJK>
++<U9C78> /xf2/xe9 <CJK>
++<U9CE7> /xf2/xea <CJK>
++<U9CEC> /xf2/xeb <CJK>
++<U9CF0> /xf2/xec <CJK>
++<U9D09> /xf2/xed <CJK>
++<U9D08> /xf2/xee <CJK>
++<U9CEB> /xf2/xef <CJK>
++<U9D03> /xf2/xf0 <CJK>
++<U9D06> /xf2/xf1 <CJK>
++<U9D2A> /xf2/xf2 <CJK>
++<U9D26> /xf2/xf3 <CJK>
++<U9DAF> /xf2/xf4 <CJK>
++<U9D23> /xf2/xf5 <CJK>
++<U9D1F> /xf2/xf6 <CJK>
++<U9D44> /xf2/xf7 <CJK>
++<U9D15> /xf2/xf8 <CJK>
++<U9D12> /xf2/xf9 <CJK>
++<U9D41> /xf2/xfa <CJK>
++<U9D3F> /xf2/xfb <CJK>
++<U9D3E> /xf2/xfc <CJK>
++<U9D46> /xf2/xfd <CJK>
++<U9D48> /xf2/xfe <CJK>
++<U9D5D> /xf3/xa1 <CJK>
++<U9D5E> /xf3/xa2 <CJK>
++<U9D64> /xf3/xa3 <CJK>
++<U9D51> /xf3/xa4 <CJK>
++<U9D50> /xf3/xa5 <CJK>
++<U9D59> /xf3/xa6 <CJK>
++<U9D72> /xf3/xa7 <CJK>
++<U9D89> /xf3/xa8 <CJK>
++<U9D87> /xf3/xa9 <CJK>
++<U9DAB> /xf3/xaa <CJK>
++<U9D6F> /xf3/xab <CJK>
++<U9D7A> /xf3/xac <CJK>
++<U9D9A> /xf3/xad <CJK>
++<U9DA4> /xf3/xae <CJK>
++<U9DA9> /xf3/xaf <CJK>
++<U9DB2> /xf3/xb0 <CJK>
++<U9DC4> /xf3/xb1 <CJK>
++<U9DC1> /xf3/xb2 <CJK>
++<U9DBB> /xf3/xb3 <CJK>
++<U9DB8> /xf3/xb4 <CJK>
++<U9DBA> /xf3/xb5 <CJK>
++<U9DC6> /xf3/xb6 <CJK>
++<U9DCF> /xf3/xb7 <CJK>
++<U9DC2> /xf3/xb8 <CJK>
++<U9DD9> /xf3/xb9 <CJK>
++<U9DD3> /xf3/xba <CJK>
++<U9DF8> /xf3/xbb <CJK>
++<U9DE6> /xf3/xbc <CJK>
++<U9DED> /xf3/xbd <CJK>
++<U9DEF> /xf3/xbe <CJK>
++<U9DFD> /xf3/xbf <CJK>
++<U9E1A> /xf3/xc0 <CJK>
++<U9E1B> /xf3/xc1 <CJK>
++<U9E1E> /xf3/xc2 <CJK>
++<U9E75> /xf3/xc3 <CJK>
++<U9E79> /xf3/xc4 <CJK>
++<U9E7D> /xf3/xc5 <CJK>
++<U9E81> /xf3/xc6 <CJK>
++<U9E88> /xf3/xc7 <CJK>
++<U9E8B> /xf3/xc8 <CJK>
++<U9E8C> /xf3/xc9 <CJK>
++<U9E92> /xf3/xca <CJK>
++<U9E95> /xf3/xcb <CJK>
++<U9E91> /xf3/xcc <CJK>
++<U9E9D> /xf3/xcd <CJK>
++<U9EA5> /xf3/xce <CJK>
++<U9EA9> /xf3/xcf <CJK>
++<U9EB8> /xf3/xd0 <CJK>
++<U9EAA> /xf3/xd1 <CJK>
++<U9EAD> /xf3/xd2 <CJK>
++<U9761> /xf3/xd3 <CJK>
++<U9ECC> /xf3/xd4 <CJK>
++<U9ECE> /xf3/xd5 <CJK>
++<U9ECF> /xf3/xd6 <CJK>
++<U9ED0> /xf3/xd7 <CJK>
++<U9ED4> /xf3/xd8 <CJK>
++<U9EDC> /xf3/xd9 <CJK>
++<U9EDE> /xf3/xda <CJK>
++<U9EDD> /xf3/xdb <CJK>
++<U9EE0> /xf3/xdc <CJK>
++<U9EE5> /xf3/xdd <CJK>
++<U9EE8> /xf3/xde <CJK>
++<U9EEF> /xf3/xdf <CJK>
++<U9EF4> /xf3/xe0 <CJK>
++<U9EF6> /xf3/xe1 <CJK>
++<U9EF7> /xf3/xe2 <CJK>
++<U9EF9> /xf3/xe3 <CJK>
++<U9EFB> /xf3/xe4 <CJK>
++<U9EFC> /xf3/xe5 <CJK>
++<U9EFD> /xf3/xe6 <CJK>
++<U9F07> /xf3/xe7 <CJK>
++<U9F08> /xf3/xe8 <CJK>
++<U76B7> /xf3/xe9 <CJK>
++<U9F15> /xf3/xea <CJK>
++<U9F21> /xf3/xeb <CJK>
++<U9F2C> /xf3/xec <CJK>
++<U9F3E> /xf3/xed <CJK>
++<U9F4A> /xf3/xee <CJK>
++<U9F52> /xf3/xef <CJK>
++<U9F54> /xf3/xf0 <CJK>
++<U9F63> /xf3/xf1 <CJK>
++<U9F5F> /xf3/xf2 <CJK>
++<U9F60> /xf3/xf3 <CJK>
++<U9F61> /xf3/xf4 <CJK>
++<U9F66> /xf3/xf5 <CJK>
++<U9F67> /xf3/xf6 <CJK>
++<U9F6C> /xf3/xf7 <CJK>
++<U9F6A> /xf3/xf8 <CJK>
++<U9F77> /xf3/xf9 <CJK>
++<U9F72> /xf3/xfa <CJK>
++<U9F76> /xf3/xfb <CJK>
++<U9F95> /xf3/xfc <CJK>
++<U9F9C> /xf3/xfd <CJK>
++<U9FA0> /xf3/xfe <CJK>
++<U582F> /xf4/xa1 <CJK>
++<U69C7> /xf4/xa2 <CJK>
++<U9059> /xf4/xa3 <CJK>
++<U7464> /xf4/xa4 <CJK>
++<U51DC> /xf4/xa5 <CJK>
++<U7199> /xf4/xa6 <CJK>
++
++%
++% User Defined Characters (EUC Code Set 1)
++%
++<UE000> /xf5/xa1 <Private Use>
++<UE001> /xf5/xa2 <Private Use>
++<UE002> /xf5/xa3 <Private Use>
++<UE003> /xf5/xa4 <Private Use>
++<UE004> /xf5/xa5 <Private Use>
++<UE005> /xf5/xa6 <Private Use>
++<UE006> /xf5/xa7 <Private Use>
++<UE007> /xf5/xa8 <Private Use>
++<UE008> /xf5/xa9 <Private Use>
++<UE009> /xf5/xaa <Private Use>
++<UE00A> /xf5/xab <Private Use>
++<UE00B> /xf5/xac <Private Use>
++<UE00C> /xf5/xad <Private Use>
++<UE00D> /xf5/xae <Private Use>
++<UE00E> /xf5/xaf <Private Use>
++<UE00F> /xf5/xb0 <Private Use>
++<UE010> /xf5/xb1 <Private Use>
++<UE011> /xf5/xb2 <Private Use>
++<UE012> /xf5/xb3 <Private Use>
++<UE013> /xf5/xb4 <Private Use>
++<UE014> /xf5/xb5 <Private Use>
++<UE015> /xf5/xb6 <Private Use>
++<UE016> /xf5/xb7 <Private Use>
++<UE017> /xf5/xb8 <Private Use>
++<UE018> /xf5/xb9 <Private Use>
++<UE019> /xf5/xba <Private Use>
++<UE01A> /xf5/xbb <Private Use>
++<UE01B> /xf5/xbc <Private Use>
++<UE01C> /xf5/xbd <Private Use>
++<UE01D> /xf5/xbe <Private Use>
++<UE01E> /xf5/xbf <Private Use>
++<UE01F> /xf5/xc0 <Private Use>
++<UE020> /xf5/xc1 <Private Use>
++<UE021> /xf5/xc2 <Private Use>
++<UE022> /xf5/xc3 <Private Use>
++<UE023> /xf5/xc4 <Private Use>
++<UE024> /xf5/xc5 <Private Use>
++<UE025> /xf5/xc6 <Private Use>
++<UE026> /xf5/xc7 <Private Use>
++<UE027> /xf5/xc8 <Private Use>
++<UE028> /xf5/xc9 <Private Use>
++<UE029> /xf5/xca <Private Use>
++<UE02A> /xf5/xcb <Private Use>
++<UE02B> /xf5/xcc <Private Use>
++<UE02C> /xf5/xcd <Private Use>
++<UE02D> /xf5/xce <Private Use>
++<UE02E> /xf5/xcf <Private Use>
++<UE02F> /xf5/xd0 <Private Use>
++<UE030> /xf5/xd1 <Private Use>
++<UE031> /xf5/xd2 <Private Use>
++<UE032> /xf5/xd3 <Private Use>
++<UE033> /xf5/xd4 <Private Use>
++<UE034> /xf5/xd5 <Private Use>
++<UE035> /xf5/xd6 <Private Use>
++<UE036> /xf5/xd7 <Private Use>
++<UE037> /xf5/xd8 <Private Use>
++<UE038> /xf5/xd9 <Private Use>
++<UE039> /xf5/xda <Private Use>
++<UE03A> /xf5/xdb <Private Use>
++<UE03B> /xf5/xdc <Private Use>
++<UE03C> /xf5/xdd <Private Use>
++<UE03D> /xf5/xde <Private Use>
++<UE03E> /xf5/xdf <Private Use>
++<UE03F> /xf5/xe0 <Private Use>
++<UE040> /xf5/xe1 <Private Use>
++<UE041> /xf5/xe2 <Private Use>
++<UE042> /xf5/xe3 <Private Use>
++<UE043> /xf5/xe4 <Private Use>
++<UE044> /xf5/xe5 <Private Use>
++<UE045> /xf5/xe6 <Private Use>
++<UE046> /xf5/xe7 <Private Use>
++<UE047> /xf5/xe8 <Private Use>
++<UE048> /xf5/xe9 <Private Use>
++<UE049> /xf5/xea <Private Use>
++<UE04A> /xf5/xeb <Private Use>
++<UE04B> /xf5/xec <Private Use>
++<UE04C> /xf5/xed <Private Use>
++<UE04D> /xf5/xee <Private Use>
++<UE04E> /xf5/xef <Private Use>
++<UE04F> /xf5/xf0 <Private Use>
++<UE050> /xf5/xf1 <Private Use>
++<UE051> /xf5/xf2 <Private Use>
++<UE052> /xf5/xf3 <Private Use>
++<UE053> /xf5/xf4 <Private Use>
++<UE054> /xf5/xf5 <Private Use>
++<UE055> /xf5/xf6 <Private Use>
++<UE056> /xf5/xf7 <Private Use>
++<UE057> /xf5/xf8 <Private Use>
++<UE058> /xf5/xf9 <Private Use>
++<UE059> /xf5/xfa <Private Use>
++<UE05A> /xf5/xfb <Private Use>
++<UE05B> /xf5/xfc <Private Use>
++<UE05C> /xf5/xfd <Private Use>
++<UE05D> /xf5/xfe <Private Use>
++<UE05E> /xf6/xa1 <Private Use>
++<UE05F> /xf6/xa2 <Private Use>
++<UE060> /xf6/xa3 <Private Use>
++<UE061> /xf6/xa4 <Private Use>
++<UE062> /xf6/xa5 <Private Use>
++<UE063> /xf6/xa6 <Private Use>
++<UE064> /xf6/xa7 <Private Use>
++<UE065> /xf6/xa8 <Private Use>
++<UE066> /xf6/xa9 <Private Use>
++<UE067> /xf6/xaa <Private Use>
++<UE068> /xf6/xab <Private Use>
++<UE069> /xf6/xac <Private Use>
++<UE06A> /xf6/xad <Private Use>
++<UE06B> /xf6/xae <Private Use>
++<UE06C> /xf6/xaf <Private Use>
++<UE06D> /xf6/xb0 <Private Use>
++<UE06E> /xf6/xb1 <Private Use>
++<UE06F> /xf6/xb2 <Private Use>
++<UE070> /xf6/xb3 <Private Use>
++<UE071> /xf6/xb4 <Private Use>
++<UE072> /xf6/xb5 <Private Use>
++<UE073> /xf6/xb6 <Private Use>
++<UE074> /xf6/xb7 <Private Use>
++<UE075> /xf6/xb8 <Private Use>
++<UE076> /xf6/xb9 <Private Use>
++<UE077> /xf6/xba <Private Use>
++<UE078> /xf6/xbb <Private Use>
++<UE079> /xf6/xbc <Private Use>
++<UE07A> /xf6/xbd <Private Use>
++<UE07B> /xf6/xbe <Private Use>
++<UE07C> /xf6/xbf <Private Use>
++<UE07D> /xf6/xc0 <Private Use>
++<UE07E> /xf6/xc1 <Private Use>
++<UE07F> /xf6/xc2 <Private Use>
++<UE080> /xf6/xc3 <Private Use>
++<UE081> /xf6/xc4 <Private Use>
++<UE082> /xf6/xc5 <Private Use>
++<UE083> /xf6/xc6 <Private Use>
++<UE084> /xf6/xc7 <Private Use>
++<UE085> /xf6/xc8 <Private Use>
++<UE086> /xf6/xc9 <Private Use>
++<UE087> /xf6/xca <Private Use>
++<UE088> /xf6/xcb <Private Use>
++<UE089> /xf6/xcc <Private Use>
++<UE08A> /xf6/xcd <Private Use>
++<UE08B> /xf6/xce <Private Use>
++<UE08C> /xf6/xcf <Private Use>
++<UE08D> /xf6/xd0 <Private Use>
++<UE08E> /xf6/xd1 <Private Use>
++<UE08F> /xf6/xd2 <Private Use>
++<UE090> /xf6/xd3 <Private Use>
++<UE091> /xf6/xd4 <Private Use>
++<UE092> /xf6/xd5 <Private Use>
++<UE093> /xf6/xd6 <Private Use>
++<UE094> /xf6/xd7 <Private Use>
++<UE095> /xf6/xd8 <Private Use>
++<UE096> /xf6/xd9 <Private Use>
++<UE097> /xf6/xda <Private Use>
++<UE098> /xf6/xdb <Private Use>
++<UE099> /xf6/xdc <Private Use>
++<UE09A> /xf6/xdd <Private Use>
++<UE09B> /xf6/xde <Private Use>
++<UE09C> /xf6/xdf <Private Use>
++<UE09D> /xf6/xe0 <Private Use>
++<UE09E> /xf6/xe1 <Private Use>
++<UE09F> /xf6/xe2 <Private Use>
++<UE0A0> /xf6/xe3 <Private Use>
++<UE0A1> /xf6/xe4 <Private Use>
++<UE0A2> /xf6/xe5 <Private Use>
++<UE0A3> /xf6/xe6 <Private Use>
++<UE0A4> /xf6/xe7 <Private Use>
++<UE0A5> /xf6/xe8 <Private Use>
++<UE0A6> /xf6/xe9 <Private Use>
++<UE0A7> /xf6/xea <Private Use>
++<UE0A8> /xf6/xeb <Private Use>
++<UE0A9> /xf6/xec <Private Use>
++<UE0AA> /xf6/xed <Private Use>
++<UE0AB> /xf6/xee <Private Use>
++<UE0AC> /xf6/xef <Private Use>
++<UE0AD> /xf6/xf0 <Private Use>
++<UE0AE> /xf6/xf1 <Private Use>
++<UE0AF> /xf6/xf2 <Private Use>
++<UE0B0> /xf6/xf3 <Private Use>
++<UE0B1> /xf6/xf4 <Private Use>
++<UE0B2> /xf6/xf5 <Private Use>
++<UE0B3> /xf6/xf6 <Private Use>
++<UE0B4> /xf6/xf7 <Private Use>
++<UE0B5> /xf6/xf8 <Private Use>
++<UE0B6> /xf6/xf9 <Private Use>
++<UE0B7> /xf6/xfa <Private Use>
++<UE0B8> /xf6/xfb <Private Use>
++<UE0B9> /xf6/xfc <Private Use>
++<UE0BA> /xf6/xfd <Private Use>
++<UE0BB> /xf6/xfe <Private Use>
++<UE0BC> /xf7/xa1 <Private Use>
++<UE0BD> /xf7/xa2 <Private Use>
++<UE0BE> /xf7/xa3 <Private Use>
++<UE0BF> /xf7/xa4 <Private Use>
++<UE0C0> /xf7/xa5 <Private Use>
++<UE0C1> /xf7/xa6 <Private Use>
++<UE0C2> /xf7/xa7 <Private Use>
++<UE0C3> /xf7/xa8 <Private Use>
++<UE0C4> /xf7/xa9 <Private Use>
++<UE0C5> /xf7/xaa <Private Use>
++<UE0C6> /xf7/xab <Private Use>
++<UE0C7> /xf7/xac <Private Use>
++<UE0C8> /xf7/xad <Private Use>
++<UE0C9> /xf7/xae <Private Use>
++<UE0CA> /xf7/xaf <Private Use>
++<UE0CB> /xf7/xb0 <Private Use>
++<UE0CC> /xf7/xb1 <Private Use>
++<UE0CD> /xf7/xb2 <Private Use>
++<UE0CE> /xf7/xb3 <Private Use>
++<UE0CF> /xf7/xb4 <Private Use>
++<UE0D0> /xf7/xb5 <Private Use>
++<UE0D1> /xf7/xb6 <Private Use>
++<UE0D2> /xf7/xb7 <Private Use>
++<UE0D3> /xf7/xb8 <Private Use>
++<UE0D4> /xf7/xb9 <Private Use>
++<UE0D5> /xf7/xba <Private Use>
++<UE0D6> /xf7/xbb <Private Use>
++<UE0D7> /xf7/xbc <Private Use>
++<UE0D8> /xf7/xbd <Private Use>
++<UE0D9> /xf7/xbe <Private Use>
++<UE0DA> /xf7/xbf <Private Use>
++<UE0DB> /xf7/xc0 <Private Use>
++<UE0DC> /xf7/xc1 <Private Use>
++<UE0DD> /xf7/xc2 <Private Use>
++<UE0DE> /xf7/xc3 <Private Use>
++<UE0DF> /xf7/xc4 <Private Use>
++<UE0E0> /xf7/xc5 <Private Use>
++<UE0E1> /xf7/xc6 <Private Use>
++<UE0E2> /xf7/xc7 <Private Use>
++<UE0E3> /xf7/xc8 <Private Use>
++<UE0E4> /xf7/xc9 <Private Use>
++<UE0E5> /xf7/xca <Private Use>
++<UE0E6> /xf7/xcb <Private Use>
++<UE0E7> /xf7/xcc <Private Use>
++<UE0E8> /xf7/xcd <Private Use>
++<UE0E9> /xf7/xce <Private Use>
++<UE0EA> /xf7/xcf <Private Use>
++<UE0EB> /xf7/xd0 <Private Use>
++<UE0EC> /xf7/xd1 <Private Use>
++<UE0ED> /xf7/xd2 <Private Use>
++<UE0EE> /xf7/xd3 <Private Use>
++<UE0EF> /xf7/xd4 <Private Use>
++<UE0F0> /xf7/xd5 <Private Use>
++<UE0F1> /xf7/xd6 <Private Use>
++<UE0F2> /xf7/xd7 <Private Use>
++<UE0F3> /xf7/xd8 <Private Use>
++<UE0F4> /xf7/xd9 <Private Use>
++<UE0F5> /xf7/xda <Private Use>
++<UE0F6> /xf7/xdb <Private Use>
++<UE0F7> /xf7/xdc <Private Use>
++<UE0F8> /xf7/xdd <Private Use>
++<UE0F9> /xf7/xde <Private Use>
++<UE0FA> /xf7/xdf <Private Use>
++<UE0FB> /xf7/xe0 <Private Use>
++<UE0FC> /xf7/xe1 <Private Use>
++<UE0FD> /xf7/xe2 <Private Use>
++<UE0FE> /xf7/xe3 <Private Use>
++<UE0FF> /xf7/xe4 <Private Use>
++<UE100> /xf7/xe5 <Private Use>
++<UE101> /xf7/xe6 <Private Use>
++<UE102> /xf7/xe7 <Private Use>
++<UE103> /xf7/xe8 <Private Use>
++<UE104> /xf7/xe9 <Private Use>
++<UE105> /xf7/xea <Private Use>
++<UE106> /xf7/xeb <Private Use>
++<UE107> /xf7/xec <Private Use>
++<UE108> /xf7/xed <Private Use>
++<UE109> /xf7/xee <Private Use>
++<UE10A> /xf7/xef <Private Use>
++<UE10B> /xf7/xf0 <Private Use>
++<UE10C> /xf7/xf1 <Private Use>
++<UE10D> /xf7/xf2 <Private Use>
++<UE10E> /xf7/xf3 <Private Use>
++<UE10F> /xf7/xf4 <Private Use>
++<UE110> /xf7/xf5 <Private Use>
++<UE111> /xf7/xf6 <Private Use>
++<UE112> /xf7/xf7 <Private Use>
++<UE113> /xf7/xf8 <Private Use>
++<UE114> /xf7/xf9 <Private Use>
++<UE115> /xf7/xfa <Private Use>
++<UE116> /xf7/xfb <Private Use>
++<UE117> /xf7/xfc <Private Use>
++<UE118> /xf7/xfd <Private Use>
++<UE119> /xf7/xfe <Private Use>
++<UE11A> /xf8/xa1 <Private Use>
++<UE11B> /xf8/xa2 <Private Use>
++<UE11C> /xf8/xa3 <Private Use>
++<UE11D> /xf8/xa4 <Private Use>
++<UE11E> /xf8/xa5 <Private Use>
++<UE11F> /xf8/xa6 <Private Use>
++<UE120> /xf8/xa7 <Private Use>
++<UE121> /xf8/xa8 <Private Use>
++<UE122> /xf8/xa9 <Private Use>
++<UE123> /xf8/xaa <Private Use>
++<UE124> /xf8/xab <Private Use>
++<UE125> /xf8/xac <Private Use>
++<UE126> /xf8/xad <Private Use>
++<UE127> /xf8/xae <Private Use>
++<UE128> /xf8/xaf <Private Use>
++<UE129> /xf8/xb0 <Private Use>
++<UE12A> /xf8/xb1 <Private Use>
++<UE12B> /xf8/xb2 <Private Use>
++<UE12C> /xf8/xb3 <Private Use>
++<UE12D> /xf8/xb4 <Private Use>
++<UE12E> /xf8/xb5 <Private Use>
++<UE12F> /xf8/xb6 <Private Use>
++<UE130> /xf8/xb7 <Private Use>
++<UE131> /xf8/xb8 <Private Use>
++<UE132> /xf8/xb9 <Private Use>
++<UE133> /xf8/xba <Private Use>
++<UE134> /xf8/xbb <Private Use>
++<UE135> /xf8/xbc <Private Use>
++<UE136> /xf8/xbd <Private Use>
++<UE137> /xf8/xbe <Private Use>
++<UE138> /xf8/xbf <Private Use>
++<UE139> /xf8/xc0 <Private Use>
++<UE13A> /xf8/xc1 <Private Use>
++<UE13B> /xf8/xc2 <Private Use>
++<UE13C> /xf8/xc3 <Private Use>
++<UE13D> /xf8/xc4 <Private Use>
++<UE13E> /xf8/xc5 <Private Use>
++<UE13F> /xf8/xc6 <Private Use>
++<UE140> /xf8/xc7 <Private Use>
++<UE141> /xf8/xc8 <Private Use>
++<UE142> /xf8/xc9 <Private Use>
++<UE143> /xf8/xca <Private Use>
++<UE144> /xf8/xcb <Private Use>
++<UE145> /xf8/xcc <Private Use>
++<UE146> /xf8/xcd <Private Use>
++<UE147> /xf8/xce <Private Use>
++<UE148> /xf8/xcf <Private Use>
++<UE149> /xf8/xd0 <Private Use>
++<UE14A> /xf8/xd1 <Private Use>
++<UE14B> /xf8/xd2 <Private Use>
++<UE14C> /xf8/xd3 <Private Use>
++<UE14D> /xf8/xd4 <Private Use>
++<UE14E> /xf8/xd5 <Private Use>
++<UE14F> /xf8/xd6 <Private Use>
++<UE150> /xf8/xd7 <Private Use>
++<UE151> /xf8/xd8 <Private Use>
++<UE152> /xf8/xd9 <Private Use>
++<UE153> /xf8/xda <Private Use>
++<UE154> /xf8/xdb <Private Use>
++<UE155> /xf8/xdc <Private Use>
++<UE156> /xf8/xdd <Private Use>
++<UE157> /xf8/xde <Private Use>
++<UE158> /xf8/xdf <Private Use>
++<UE159> /xf8/xe0 <Private Use>
++<UE15A> /xf8/xe1 <Private Use>
++<UE15B> /xf8/xe2 <Private Use>
++<UE15C> /xf8/xe3 <Private Use>
++<UE15D> /xf8/xe4 <Private Use>
++<UE15E> /xf8/xe5 <Private Use>
++<UE15F> /xf8/xe6 <Private Use>
++<UE160> /xf8/xe7 <Private Use>
++<UE161> /xf8/xe8 <Private Use>
++<UE162> /xf8/xe9 <Private Use>
++<UE163> /xf8/xea <Private Use>
++<UE164> /xf8/xeb <Private Use>
++<UE165> /xf8/xec <Private Use>
++<UE166> /xf8/xed <Private Use>
++<UE167> /xf8/xee <Private Use>
++<UE168> /xf8/xef <Private Use>
++<UE169> /xf8/xf0 <Private Use>
++<UE16A> /xf8/xf1 <Private Use>
++<UE16B> /xf8/xf2 <Private Use>
++<UE16C> /xf8/xf3 <Private Use>
++<UE16D> /xf8/xf4 <Private Use>
++<UE16E> /xf8/xf5 <Private Use>
++<UE16F> /xf8/xf6 <Private Use>
++<UE170> /xf8/xf7 <Private Use>
++<UE171> /xf8/xf8 <Private Use>
++<UE172> /xf8/xf9 <Private Use>
++<UE173> /xf8/xfa <Private Use>
++<UE174> /xf8/xfb <Private Use>
++<UE175> /xf8/xfc <Private Use>
++<UE176> /xf8/xfd <Private Use>
++<UE177> /xf8/xfe <Private Use>
++<UE178> /xf9/xa1 <Private Use>
++<UE179> /xf9/xa2 <Private Use>
++<UE17A> /xf9/xa3 <Private Use>
++<UE17B> /xf9/xa4 <Private Use>
++<UE17C> /xf9/xa5 <Private Use>
++<UE17D> /xf9/xa6 <Private Use>
++<UE17E> /xf9/xa7 <Private Use>
++<UE17F> /xf9/xa8 <Private Use>
++<UE180> /xf9/xa9 <Private Use>
++<UE181> /xf9/xaa <Private Use>
++<UE182> /xf9/xab <Private Use>
++<UE183> /xf9/xac <Private Use>
++<UE184> /xf9/xad <Private Use>
++<UE185> /xf9/xae <Private Use>
++<UE186> /xf9/xaf <Private Use>
++<UE187> /xf9/xb0 <Private Use>
++<UE188> /xf9/xb1 <Private Use>
++<UE189> /xf9/xb2 <Private Use>
++<UE18A> /xf9/xb3 <Private Use>
++<UE18B> /xf9/xb4 <Private Use>
++<UE18C> /xf9/xb5 <Private Use>
++<UE18D> /xf9/xb6 <Private Use>
++<UE18E> /xf9/xb7 <Private Use>
++<UE18F> /xf9/xb8 <Private Use>
++<UE190> /xf9/xb9 <Private Use>
++<UE191> /xf9/xba <Private Use>
++<UE192> /xf9/xbb <Private Use>
++<UE193> /xf9/xbc <Private Use>
++<UE194> /xf9/xbd <Private Use>
++<UE195> /xf9/xbe <Private Use>
++<UE196> /xf9/xbf <Private Use>
++<UE197> /xf9/xc0 <Private Use>
++<UE198> /xf9/xc1 <Private Use>
++<UE199> /xf9/xc2 <Private Use>
++<UE19A> /xf9/xc3 <Private Use>
++<UE19B> /xf9/xc4 <Private Use>
++<UE19C> /xf9/xc5 <Private Use>
++<UE19D> /xf9/xc6 <Private Use>
++<UE19E> /xf9/xc7 <Private Use>
++<UE19F> /xf9/xc8 <Private Use>
++<UE1A0> /xf9/xc9 <Private Use>
++<UE1A1> /xf9/xca <Private Use>
++<UE1A2> /xf9/xcb <Private Use>
++<UE1A3> /xf9/xcc <Private Use>
++<UE1A4> /xf9/xcd <Private Use>
++<UE1A5> /xf9/xce <Private Use>
++<UE1A6> /xf9/xcf <Private Use>
++<UE1A7> /xf9/xd0 <Private Use>
++<UE1A8> /xf9/xd1 <Private Use>
++<UE1A9> /xf9/xd2 <Private Use>
++<UE1AA> /xf9/xd3 <Private Use>
++<UE1AB> /xf9/xd4 <Private Use>
++<UE1AC> /xf9/xd5 <Private Use>
++<UE1AD> /xf9/xd6 <Private Use>
++<UE1AE> /xf9/xd7 <Private Use>
++<UE1AF> /xf9/xd8 <Private Use>
++<UE1B0> /xf9/xd9 <Private Use>
++<UE1B1> /xf9/xda <Private Use>
++<UE1B2> /xf9/xdb <Private Use>
++<UE1B3> /xf9/xdc <Private Use>
++<UE1B4> /xf9/xdd <Private Use>
++<UE1B5> /xf9/xde <Private Use>
++<UE1B6> /xf9/xdf <Private Use>
++<UE1B7> /xf9/xe0 <Private Use>
++<UE1B8> /xf9/xe1 <Private Use>
++<UE1B9> /xf9/xe2 <Private Use>
++<UE1BA> /xf9/xe3 <Private Use>
++<UE1BB> /xf9/xe4 <Private Use>
++<UE1BC> /xf9/xe5 <Private Use>
++<UE1BD> /xf9/xe6 <Private Use>
++<UE1BE> /xf9/xe7 <Private Use>
++<UE1BF> /xf9/xe8 <Private Use>
++<UE1C0> /xf9/xe9 <Private Use>
++<UE1C1> /xf9/xea <Private Use>
++<UE1C2> /xf9/xeb <Private Use>
++<UE1C3> /xf9/xec <Private Use>
++<UE1C4> /xf9/xed <Private Use>
++<UE1C5> /xf9/xee <Private Use>
++<UE1C6> /xf9/xef <Private Use>
++<UE1C7> /xf9/xf0 <Private Use>
++<UE1C8> /xf9/xf1 <Private Use>
++<UE1C9> /xf9/xf2 <Private Use>
++<UE1CA> /xf9/xf3 <Private Use>
++<UE1CB> /xf9/xf4 <Private Use>
++<UE1CC> /xf9/xf5 <Private Use>
++<UE1CD> /xf9/xf6 <Private Use>
++<UE1CE> /xf9/xf7 <Private Use>
++<UE1CF> /xf9/xf8 <Private Use>
++<UE1D0> /xf9/xf9 <Private Use>
++<UE1D1> /xf9/xfa <Private Use>
++<UE1D2> /xf9/xfb <Private Use>
++<UE1D3> /xf9/xfc <Private Use>
++<UE1D4> /xf9/xfd <Private Use>
++<UE1D5> /xf9/xfe <Private Use>
++<UE1D6> /xfa/xa1 <Private Use>
++<UE1D7> /xfa/xa2 <Private Use>
++<UE1D8> /xfa/xa3 <Private Use>
++<UE1D9> /xfa/xa4 <Private Use>
++<UE1DA> /xfa/xa5 <Private Use>
++<UE1DB> /xfa/xa6 <Private Use>
++<UE1DC> /xfa/xa7 <Private Use>
++<UE1DD> /xfa/xa8 <Private Use>
++<UE1DE> /xfa/xa9 <Private Use>
++<UE1DF> /xfa/xaa <Private Use>
++<UE1E0> /xfa/xab <Private Use>
++<UE1E1> /xfa/xac <Private Use>
++<UE1E2> /xfa/xad <Private Use>
++<UE1E3> /xfa/xae <Private Use>
++<UE1E4> /xfa/xaf <Private Use>
++<UE1E5> /xfa/xb0 <Private Use>
++<UE1E6> /xfa/xb1 <Private Use>
++<UE1E7> /xfa/xb2 <Private Use>
++<UE1E8> /xfa/xb3 <Private Use>
++<UE1E9> /xfa/xb4 <Private Use>
++<UE1EA> /xfa/xb5 <Private Use>
++<UE1EB> /xfa/xb6 <Private Use>
++<UE1EC> /xfa/xb7 <Private Use>
++<UE1ED> /xfa/xb8 <Private Use>
++<UE1EE> /xfa/xb9 <Private Use>
++<UE1EF> /xfa/xba <Private Use>
++<UE1F0> /xfa/xbb <Private Use>
++<UE1F1> /xfa/xbc <Private Use>
++<UE1F2> /xfa/xbd <Private Use>
++<UE1F3> /xfa/xbe <Private Use>
++<UE1F4> /xfa/xbf <Private Use>
++<UE1F5> /xfa/xc0 <Private Use>
++<UE1F6> /xfa/xc1 <Private Use>
++<UE1F7> /xfa/xc2 <Private Use>
++<UE1F8> /xfa/xc3 <Private Use>
++<UE1F9> /xfa/xc4 <Private Use>
++<UE1FA> /xfa/xc5 <Private Use>
++<UE1FB> /xfa/xc6 <Private Use>
++<UE1FC> /xfa/xc7 <Private Use>
++<UE1FD> /xfa/xc8 <Private Use>
++<UE1FE> /xfa/xc9 <Private Use>
++<UE1FF> /xfa/xca <Private Use>
++<UE200> /xfa/xcb <Private Use>
++<UE201> /xfa/xcc <Private Use>
++<UE202> /xfa/xcd <Private Use>
++<UE203> /xfa/xce <Private Use>
++<UE204> /xfa/xcf <Private Use>
++<UE205> /xfa/xd0 <Private Use>
++<UE206> /xfa/xd1 <Private Use>
++<UE207> /xfa/xd2 <Private Use>
++<UE208> /xfa/xd3 <Private Use>
++<UE209> /xfa/xd4 <Private Use>
++<UE20A> /xfa/xd5 <Private Use>
++<UE20B> /xfa/xd6 <Private Use>
++<UE20C> /xfa/xd7 <Private Use>
++<UE20D> /xfa/xd8 <Private Use>
++<UE20E> /xfa/xd9 <Private Use>
++<UE20F> /xfa/xda <Private Use>
++<UE210> /xfa/xdb <Private Use>
++<UE211> /xfa/xdc <Private Use>
++<UE212> /xfa/xdd <Private Use>
++<UE213> /xfa/xde <Private Use>
++<UE214> /xfa/xdf <Private Use>
++<UE215> /xfa/xe0 <Private Use>
++<UE216> /xfa/xe1 <Private Use>
++<UE217> /xfa/xe2 <Private Use>
++<UE218> /xfa/xe3 <Private Use>
++<UE219> /xfa/xe4 <Private Use>
++<UE21A> /xfa/xe5 <Private Use>
++<UE21B> /xfa/xe6 <Private Use>
++<UE21C> /xfa/xe7 <Private Use>
++<UE21D> /xfa/xe8 <Private Use>
++<UE21E> /xfa/xe9 <Private Use>
++<UE21F> /xfa/xea <Private Use>
++<UE220> /xfa/xeb <Private Use>
++<UE221> /xfa/xec <Private Use>
++<UE222> /xfa/xed <Private Use>
++<UE223> /xfa/xee <Private Use>
++<UE224> /xfa/xef <Private Use>
++<UE225> /xfa/xf0 <Private Use>
++<UE226> /xfa/xf1 <Private Use>
++<UE227> /xfa/xf2 <Private Use>
++<UE228> /xfa/xf3 <Private Use>
++<UE229> /xfa/xf4 <Private Use>
++<UE22A> /xfa/xf5 <Private Use>
++<UE22B> /xfa/xf6 <Private Use>
++<UE22C> /xfa/xf7 <Private Use>
++<UE22D> /xfa/xf8 <Private Use>
++<UE22E> /xfa/xf9 <Private Use>
++<UE22F> /xfa/xfa <Private Use>
++<UE230> /xfa/xfb <Private Use>
++<UE231> /xfa/xfc <Private Use>
++<UE232> /xfa/xfd <Private Use>
++<UE233> /xfa/xfe <Private Use>
++<UE234> /xfb/xa1 <Private Use>
++<UE235> /xfb/xa2 <Private Use>
++<UE236> /xfb/xa3 <Private Use>
++<UE237> /xfb/xa4 <Private Use>
++<UE238> /xfb/xa5 <Private Use>
++<UE239> /xfb/xa6 <Private Use>
++<UE23A> /xfb/xa7 <Private Use>
++<UE23B> /xfb/xa8 <Private Use>
++<UE23C> /xfb/xa9 <Private Use>
++<UE23D> /xfb/xaa <Private Use>
++<UE23E> /xfb/xab <Private Use>
++<UE23F> /xfb/xac <Private Use>
++<UE240> /xfb/xad <Private Use>
++<UE241> /xfb/xae <Private Use>
++<UE242> /xfb/xaf <Private Use>
++<UE243> /xfb/xb0 <Private Use>
++<UE244> /xfb/xb1 <Private Use>
++<UE245> /xfb/xb2 <Private Use>
++<UE246> /xfb/xb3 <Private Use>
++<UE247> /xfb/xb4 <Private Use>
++<UE248> /xfb/xb5 <Private Use>
++<UE249> /xfb/xb6 <Private Use>
++<UE24A> /xfb/xb7 <Private Use>
++<UE24B> /xfb/xb8 <Private Use>
++<UE24C> /xfb/xb9 <Private Use>
++<UE24D> /xfb/xba <Private Use>
++<UE24E> /xfb/xbb <Private Use>
++<UE24F> /xfb/xbc <Private Use>
++<UE250> /xfb/xbd <Private Use>
++<UE251> /xfb/xbe <Private Use>
++<UE252> /xfb/xbf <Private Use>
++<UE253> /xfb/xc0 <Private Use>
++<UE254> /xfb/xc1 <Private Use>
++<UE255> /xfb/xc2 <Private Use>
++<UE256> /xfb/xc3 <Private Use>
++<UE257> /xfb/xc4 <Private Use>
++<UE258> /xfb/xc5 <Private Use>
++<UE259> /xfb/xc6 <Private Use>
++<UE25A> /xfb/xc7 <Private Use>
++<UE25B> /xfb/xc8 <Private Use>
++<UE25C> /xfb/xc9 <Private Use>
++<UE25D> /xfb/xca <Private Use>
++<UE25E> /xfb/xcb <Private Use>
++<UE25F> /xfb/xcc <Private Use>
++<UE260> /xfb/xcd <Private Use>
++<UE261> /xfb/xce <Private Use>
++<UE262> /xfb/xcf <Private Use>
++<UE263> /xfb/xd0 <Private Use>
++<UE264> /xfb/xd1 <Private Use>
++<UE265> /xfb/xd2 <Private Use>
++<UE266> /xfb/xd3 <Private Use>
++<UE267> /xfb/xd4 <Private Use>
++<UE268> /xfb/xd5 <Private Use>
++<UE269> /xfb/xd6 <Private Use>
++<UE26A> /xfb/xd7 <Private Use>
++<UE26B> /xfb/xd8 <Private Use>
++<UE26C> /xfb/xd9 <Private Use>
++<UE26D> /xfb/xda <Private Use>
++<UE26E> /xfb/xdb <Private Use>
++<UE26F> /xfb/xdc <Private Use>
++<UE270> /xfb/xdd <Private Use>
++<UE271> /xfb/xde <Private Use>
++<UE272> /xfb/xdf <Private Use>
++<UE273> /xfb/xe0 <Private Use>
++<UE274> /xfb/xe1 <Private Use>
++<UE275> /xfb/xe2 <Private Use>
++<UE276> /xfb/xe3 <Private Use>
++<UE277> /xfb/xe4 <Private Use>
++<UE278> /xfb/xe5 <Private Use>
++<UE279> /xfb/xe6 <Private Use>
++<UE27A> /xfb/xe7 <Private Use>
++<UE27B> /xfb/xe8 <Private Use>
++<UE27C> /xfb/xe9 <Private Use>
++<UE27D> /xfb/xea <Private Use>
++<UE27E> /xfb/xeb <Private Use>
++<UE27F> /xfb/xec <Private Use>
++<UE280> /xfb/xed <Private Use>
++<UE281> /xfb/xee <Private Use>
++<UE282> /xfb/xef <Private Use>
++<UE283> /xfb/xf0 <Private Use>
++<UE284> /xfb/xf1 <Private Use>
++<UE285> /xfb/xf2 <Private Use>
++<UE286> /xfb/xf3 <Private Use>
++<UE287> /xfb/xf4 <Private Use>
++<UE288> /xfb/xf5 <Private Use>
++<UE289> /xfb/xf6 <Private Use>
++<UE28A> /xfb/xf7 <Private Use>
++<UE28B> /xfb/xf8 <Private Use>
++<UE28C> /xfb/xf9 <Private Use>
++<UE28D> /xfb/xfa <Private Use>
++<UE28E> /xfb/xfb <Private Use>
++<UE28F> /xfb/xfc <Private Use>
++<UE290> /xfb/xfd <Private Use>
++<UE291> /xfb/xfe <Private Use>
++<UE292> /xfc/xa1 <Private Use>
++<UE293> /xfc/xa2 <Private Use>
++<UE294> /xfc/xa3 <Private Use>
++<UE295> /xfc/xa4 <Private Use>
++<UE296> /xfc/xa5 <Private Use>
++<UE297> /xfc/xa6 <Private Use>
++<UE298> /xfc/xa7 <Private Use>
++<UE299> /xfc/xa8 <Private Use>
++<UE29A> /xfc/xa9 <Private Use>
++<UE29B> /xfc/xaa <Private Use>
++<UE29C> /xfc/xab <Private Use>
++<UE29D> /xfc/xac <Private Use>
++<UE29E> /xfc/xad <Private Use>
++<UE29F> /xfc/xae <Private Use>
++<UE2A0> /xfc/xaf <Private Use>
++<UE2A1> /xfc/xb0 <Private Use>
++<UE2A2> /xfc/xb1 <Private Use>
++<UE2A3> /xfc/xb2 <Private Use>
++<UE2A4> /xfc/xb3 <Private Use>
++<UE2A5> /xfc/xb4 <Private Use>
++<UE2A6> /xfc/xb5 <Private Use>
++<UE2A7> /xfc/xb6 <Private Use>
++<UE2A8> /xfc/xb7 <Private Use>
++<UE2A9> /xfc/xb8 <Private Use>
++<UE2AA> /xfc/xb9 <Private Use>
++<UE2AB> /xfc/xba <Private Use>
++<UE2AC> /xfc/xbb <Private Use>
++<UE2AD> /xfc/xbc <Private Use>
++<UE2AE> /xfc/xbd <Private Use>
++<UE2AF> /xfc/xbe <Private Use>
++<UE2B0> /xfc/xbf <Private Use>
++<UE2B1> /xfc/xc0 <Private Use>
++<UE2B2> /xfc/xc1 <Private Use>
++<UE2B3> /xfc/xc2 <Private Use>
++<UE2B4> /xfc/xc3 <Private Use>
++<UE2B5> /xfc/xc4 <Private Use>
++<UE2B6> /xfc/xc5 <Private Use>
++<UE2B7> /xfc/xc6 <Private Use>
++<UE2B8> /xfc/xc7 <Private Use>
++<UE2B9> /xfc/xc8 <Private Use>
++<UE2BA> /xfc/xc9 <Private Use>
++<UE2BB> /xfc/xca <Private Use>
++<UE2BC> /xfc/xcb <Private Use>
++<UE2BD> /xfc/xcc <Private Use>
++<UE2BE> /xfc/xcd <Private Use>
++<UE2BF> /xfc/xce <Private Use>
++<UE2C0> /xfc/xcf <Private Use>
++<UE2C1> /xfc/xd0 <Private Use>
++<UE2C2> /xfc/xd1 <Private Use>
++<UE2C3> /xfc/xd2 <Private Use>
++<UE2C4> /xfc/xd3 <Private Use>
++<UE2C5> /xfc/xd4 <Private Use>
++<UE2C6> /xfc/xd5 <Private Use>
++<UE2C7> /xfc/xd6 <Private Use>
++<UE2C8> /xfc/xd7 <Private Use>
++<UE2C9> /xfc/xd8 <Private Use>
++<UE2CA> /xfc/xd9 <Private Use>
++<UE2CB> /xfc/xda <Private Use>
++<UE2CC> /xfc/xdb <Private Use>
++<UE2CD> /xfc/xdc <Private Use>
++<UE2CE> /xfc/xdd <Private Use>
++<UE2CF> /xfc/xde <Private Use>
++<UE2D0> /xfc/xdf <Private Use>
++<UE2D1> /xfc/xe0 <Private Use>
++<UE2D2> /xfc/xe1 <Private Use>
++<UE2D3> /xfc/xe2 <Private Use>
++<UE2D4> /xfc/xe3 <Private Use>
++<UE2D5> /xfc/xe4 <Private Use>
++<UE2D6> /xfc/xe5 <Private Use>
++<UE2D7> /xfc/xe6 <Private Use>
++<UE2D8> /xfc/xe7 <Private Use>
++<UE2D9> /xfc/xe8 <Private Use>
++<UE2DA> /xfc/xe9 <Private Use>
++<UE2DB> /xfc/xea <Private Use>
++<UE2DC> /xfc/xeb <Private Use>
++<UE2DD> /xfc/xec <Private Use>
++<UE2DE> /xfc/xed <Private Use>
++<UE2DF> /xfc/xee <Private Use>
++<UE2E0> /xfc/xef <Private Use>
++<UE2E1> /xfc/xf0 <Private Use>
++<UE2E2> /xfc/xf1 <Private Use>
++<UE2E3> /xfc/xf2 <Private Use>
++<UE2E4> /xfc/xf3 <Private Use>
++<UE2E5> /xfc/xf4 <Private Use>
++<UE2E6> /xfc/xf5 <Private Use>
++<UE2E7> /xfc/xf6 <Private Use>
++<UE2E8> /xfc/xf7 <Private Use>
++<UE2E9> /xfc/xf8 <Private Use>
++<UE2EA> /xfc/xf9 <Private Use>
++<UE2EB> /xfc/xfa <Private Use>
++<UE2EC> /xfc/xfb <Private Use>
++<UE2ED> /xfc/xfc <Private Use>
++<UE2EE> /xfc/xfd <Private Use>
++<UE2EF> /xfc/xfe <Private Use>
++<UE2F0> /xfd/xa1 <Private Use>
++<UE2F1> /xfd/xa2 <Private Use>
++<UE2F2> /xfd/xa3 <Private Use>
++<UE2F3> /xfd/xa4 <Private Use>
++<UE2F4> /xfd/xa5 <Private Use>
++<UE2F5> /xfd/xa6 <Private Use>
++<UE2F6> /xfd/xa7 <Private Use>
++<UE2F7> /xfd/xa8 <Private Use>
++<UE2F8> /xfd/xa9 <Private Use>
++<UE2F9> /xfd/xaa <Private Use>
++<UE2FA> /xfd/xab <Private Use>
++<UE2FB> /xfd/xac <Private Use>
++<UE2FC> /xfd/xad <Private Use>
++<UE2FD> /xfd/xae <Private Use>
++<UE2FE> /xfd/xaf <Private Use>
++<UE2FF> /xfd/xb0 <Private Use>
++<UE300> /xfd/xb1 <Private Use>
++<UE301> /xfd/xb2 <Private Use>
++<UE302> /xfd/xb3 <Private Use>
++<UE303> /xfd/xb4 <Private Use>
++<UE304> /xfd/xb5 <Private Use>
++<UE305> /xfd/xb6 <Private Use>
++<UE306> /xfd/xb7 <Private Use>
++<UE307> /xfd/xb8 <Private Use>
++<UE308> /xfd/xb9 <Private Use>
++<UE309> /xfd/xba <Private Use>
++<UE30A> /xfd/xbb <Private Use>
++<UE30B> /xfd/xbc <Private Use>
++<UE30C> /xfd/xbd <Private Use>
++<UE30D> /xfd/xbe <Private Use>
++<UE30E> /xfd/xbf <Private Use>
++<UE30F> /xfd/xc0 <Private Use>
++<UE310> /xfd/xc1 <Private Use>
++<UE311> /xfd/xc2 <Private Use>
++<UE312> /xfd/xc3 <Private Use>
++<UE313> /xfd/xc4 <Private Use>
++<UE314> /xfd/xc5 <Private Use>
++<UE315> /xfd/xc6 <Private Use>
++<UE316> /xfd/xc7 <Private Use>
++<UE317> /xfd/xc8 <Private Use>
++<UE318> /xfd/xc9 <Private Use>
++<UE319> /xfd/xca <Private Use>
++<UE31A> /xfd/xcb <Private Use>
++<UE31B> /xfd/xcc <Private Use>
++<UE31C> /xfd/xcd <Private Use>
++<UE31D> /xfd/xce <Private Use>
++<UE31E> /xfd/xcf <Private Use>
++<UE31F> /xfd/xd0 <Private Use>
++<UE320> /xfd/xd1 <Private Use>
++<UE321> /xfd/xd2 <Private Use>
++<UE322> /xfd/xd3 <Private Use>
++<UE323> /xfd/xd4 <Private Use>
++<UE324> /xfd/xd5 <Private Use>
++<UE325> /xfd/xd6 <Private Use>
++<UE326> /xfd/xd7 <Private Use>
++<UE327> /xfd/xd8 <Private Use>
++<UE328> /xfd/xd9 <Private Use>
++<UE329> /xfd/xda <Private Use>
++<UE32A> /xfd/xdb <Private Use>
++<UE32B> /xfd/xdc <Private Use>
++<UE32C> /xfd/xdd <Private Use>
++<UE32D> /xfd/xde <Private Use>
++<UE32E> /xfd/xdf <Private Use>
++<UE32F> /xfd/xe0 <Private Use>
++<UE330> /xfd/xe1 <Private Use>
++<UE331> /xfd/xe2 <Private Use>
++<UE332> /xfd/xe3 <Private Use>
++<UE333> /xfd/xe4 <Private Use>
++<UE334> /xfd/xe5 <Private Use>
++<UE335> /xfd/xe6 <Private Use>
++<UE336> /xfd/xe7 <Private Use>
++<UE337> /xfd/xe8 <Private Use>
++<UE338> /xfd/xe9 <Private Use>
++<UE339> /xfd/xea <Private Use>
++<UE33A> /xfd/xeb <Private Use>
++<UE33B> /xfd/xec <Private Use>
++<UE33C> /xfd/xed <Private Use>
++<UE33D> /xfd/xee <Private Use>
++<UE33E> /xfd/xef <Private Use>
++<UE33F> /xfd/xf0 <Private Use>
++<UE340> /xfd/xf1 <Private Use>
++<UE341> /xfd/xf2 <Private Use>
++<UE342> /xfd/xf3 <Private Use>
++<UE343> /xfd/xf4 <Private Use>
++<UE344> /xfd/xf5 <Private Use>
++<UE345> /xfd/xf6 <Private Use>
++<UE346> /xfd/xf7 <Private Use>
++<UE347> /xfd/xf8 <Private Use>
++<UE348> /xfd/xf9 <Private Use>
++<UE349> /xfd/xfa <Private Use>
++<UE34A> /xfd/xfb <Private Use>
++<UE34B> /xfd/xfc <Private Use>
++<UE34C> /xfd/xfd <Private Use>
++<UE34D> /xfd/xfe <Private Use>
++<UE34E> /xfe/xa1 <Private Use>
++<UE34F> /xfe/xa2 <Private Use>
++<UE350> /xfe/xa3 <Private Use>
++<UE351> /xfe/xa4 <Private Use>
++<UE352> /xfe/xa5 <Private Use>
++<UE353> /xfe/xa6 <Private Use>
++<UE354> /xfe/xa7 <Private Use>
++<UE355> /xfe/xa8 <Private Use>
++<UE356> /xfe/xa9 <Private Use>
++<UE357> /xfe/xaa <Private Use>
++<UE358> /xfe/xab <Private Use>
++<UE359> /xfe/xac <Private Use>
++<UE35A> /xfe/xad <Private Use>
++<UE35B> /xfe/xae <Private Use>
++<UE35C> /xfe/xaf <Private Use>
++<UE35D> /xfe/xb0 <Private Use>
++<UE35E> /xfe/xb1 <Private Use>
++<UE35F> /xfe/xb2 <Private Use>
++<UE360> /xfe/xb3 <Private Use>
++<UE361> /xfe/xb4 <Private Use>
++<UE362> /xfe/xb5 <Private Use>
++<UE363> /xfe/xb6 <Private Use>
++<UE364> /xfe/xb7 <Private Use>
++<UE365> /xfe/xb8 <Private Use>
++<UE366> /xfe/xb9 <Private Use>
++<UE367> /xfe/xba <Private Use>
++<UE368> /xfe/xbb <Private Use>
++<UE369> /xfe/xbc <Private Use>
++<UE36A> /xfe/xbd <Private Use>
++<UE36B> /xfe/xbe <Private Use>
++<UE36C> /xfe/xbf <Private Use>
++<UE36D> /xfe/xc0 <Private Use>
++<UE36E> /xfe/xc1 <Private Use>
++<UE36F> /xfe/xc2 <Private Use>
++<UE370> /xfe/xc3 <Private Use>
++<UE371> /xfe/xc4 <Private Use>
++<UE372> /xfe/xc5 <Private Use>
++<UE373> /xfe/xc6 <Private Use>
++<UE374> /xfe/xc7 <Private Use>
++<UE375> /xfe/xc8 <Private Use>
++<UE376> /xfe/xc9 <Private Use>
++<UE377> /xfe/xca <Private Use>
++<UE378> /xfe/xcb <Private Use>
++<UE379> /xfe/xcc <Private Use>
++<UE37A> /xfe/xcd <Private Use>
++<UE37B> /xfe/xce <Private Use>
++<UE37C> /xfe/xcf <Private Use>
++<UE37D> /xfe/xd0 <Private Use>
++<UE37E> /xfe/xd1 <Private Use>
++<UE37F> /xfe/xd2 <Private Use>
++<UE380> /xfe/xd3 <Private Use>
++<UE381> /xfe/xd4 <Private Use>
++<UE382> /xfe/xd5 <Private Use>
++<UE383> /xfe/xd6 <Private Use>
++<UE384> /xfe/xd7 <Private Use>
++<UE385> /xfe/xd8 <Private Use>
++<UE386> /xfe/xd9 <Private Use>
++<UE387> /xfe/xda <Private Use>
++<UE388> /xfe/xdb <Private Use>
++<UE389> /xfe/xdc <Private Use>
++<UE38A> /xfe/xdd <Private Use>
++<UE38B> /xfe/xde <Private Use>
++<UE38C> /xfe/xdf <Private Use>
++<UE38D> /xfe/xe0 <Private Use>
++<UE38E> /xfe/xe1 <Private Use>
++<UE38F> /xfe/xe2 <Private Use>
++<UE390> /xfe/xe3 <Private Use>
++<UE391> /xfe/xe4 <Private Use>
++<UE392> /xfe/xe5 <Private Use>
++<UE393> /xfe/xe6 <Private Use>
++<UE394> /xfe/xe7 <Private Use>
++<UE395> /xfe/xe8 <Private Use>
++<UE396> /xfe/xe9 <Private Use>
++<UE397> /xfe/xea <Private Use>
++<UE398> /xfe/xeb <Private Use>
++<UE399> /xfe/xec <Private Use>
++<UE39A> /xfe/xed <Private Use>
++<UE39B> /xfe/xee <Private Use>
++<UE39C> /xfe/xef <Private Use>
++<UE39D> /xfe/xf0 <Private Use>
++<UE39E> /xfe/xf1 <Private Use>
++<UE39F> /xfe/xf2 <Private Use>
++<UE3A0> /xfe/xf3 <Private Use>
++<UE3A1> /xfe/xf4 <Private Use>
++<UE3A2> /xfe/xf5 <Private Use>
++<UE3A3> /xfe/xf6 <Private Use>
++<UE3A4> /xfe/xf7 <Private Use>
++<UE3A5> /xfe/xf8 <Private Use>
++<UE3A6> /xfe/xf9 <Private Use>
++<UE3A7> /xfe/xfa <Private Use>
++<UE3A8> /xfe/xfb <Private Use>
++<UE3A9> /xfe/xfc <Private Use>
++<UE3AA> /xfe/xfd <Private Use>
++<UE3AB> /xfe/xfe <Private Use>
++
++%
++% JIS X 0212
++%
++<U02D8> /x8f/xa2/xaf BREVE
++<U02C7> /x8f/xa2/xb0 CARON (Mandarin Chinese third tone)
++<U00B8> /x8f/xa2/xb1 CEDILLA
++<U02D9> /x8f/xa2/xb2 DOT ABOVE (Mandarin Chinese light tone)
++<U02DD> /x8f/xa2/xb3 DOUBLE ACUTE ACCENT
++<U00AF> /x8f/xa2/xb4 MACRON
++<U02DB> /x8f/xa2/xb5 OGONEK
++<U02DA> /x8f/xa2/xb6 RING ABOVE
++%IRREVERSIBLE%<UFF5E> /x8f/xa2/xb7 FULLWIDTH TILDE
++<U0384> /x8f/xa2/xb8 GREEK TONOS
++<U0385> /x8f/xa2/xb9 GREEK DIALYTIKA TONOS
++<U00A1> /x8f/xa2/xc2 INVERTED EXCLAMATION MARK
++<UFFE4> /x8f/xa2/xc3 FULLWIDTH BROKEN BAR
++<U00BF> /x8f/xa2/xc4 INVERTED QUESTION MARK
++<U00BA> /x8f/xa2/xeb MASCULINE ORDINAL INDICATOR
++<U00AA> /x8f/xa2/xec FEMININE ORDINAL INDICATOR
++<U00A9> /x8f/xa2/xed COPYRIGHT SIGN
++<U00AE> /x8f/xa2/xee REGISTERED SIGN
++<U2122> /x8f/xa2/xef TRADE MARK SIGN
++<U00A4> /x8f/xa2/xf0 CURRENCY SIGN
++%IRREVERSIBLE%<U2116> /x8f/xa2/xf1 NUMERO SIGN
++<U0386> /x8f/xa6/xe1 GREEK CAPITAL LETTER ALPHA WITH TONOS
++<U0388> /x8f/xa6/xe2 GREEK CAPITAL LETTER EPSILON WITH TONOS
++<U0389> /x8f/xa6/xe3 GREEK CAPITAL LETTER ETA WITH TONOS
++<U038A> /x8f/xa6/xe4 GREEK CAPITAL LETTER IOTA WITH TONOS
++<U03AA> /x8f/xa6/xe5 GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
++<U038C> /x8f/xa6/xe7 GREEK CAPITAL LETTER OMICRON WITH TONOS
++<U038E> /x8f/xa6/xe9 GREEK CAPITAL LETTER UPSILON WITH TONOS
++<U03AB> /x8f/xa6/xea GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
++<U038F> /x8f/xa6/xec GREEK CAPITAL LETTER OMEGA WITH TONOS
++<U03AC> /x8f/xa6/xf1 GREEK SMALL LETTER ALPHA WITH TONOS
++<U03AD> /x8f/xa6/xf2 GREEK SMALL LETTER EPSILON WITH TONOS
++<U03AE> /x8f/xa6/xf3 GREEK SMALL LETTER ETA WITH TONOS
++<U03AF> /x8f/xa6/xf4 GREEK SMALL LETTER IOTA WITH TONOS
++<U03CA> /x8f/xa6/xf5 GREEK SMALL LETTER IOTA WITH DIALYTIKA
++<U0390> /x8f/xa6/xf6 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
++<U03CC> /x8f/xa6/xf7 GREEK SMALL LETTER OMICRON WITH TONOS
++<U03C2> /x8f/xa6/xf8 GREEK SMALL LETTER FINAL SIGMA
++<U03CD> /x8f/xa6/xf9 GREEK SMALL LETTER UPSILON WITH TONOS
++<U03CB> /x8f/xa6/xfa GREEK SMALL LETTER UPSILON WITH DIALYTIKA
++<U03B0> /x8f/xa6/xfb GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
++<U03CE> /x8f/xa6/xfc GREEK SMALL LETTER OMEGA WITH TONOS
++<U0402> /x8f/xa7/xc2 CYRILLIC CAPITAL LETTER DJE
++<U0403> /x8f/xa7/xc3 CYRILLIC CAPITAL LETTER GJE
++<U0404> /x8f/xa7/xc4 CYRILLIC CAPITAL LETTER UKRAINIAN IE
++<U0405> /x8f/xa7/xc5 CYRILLIC CAPITAL LETTER DZE
++<U0406> /x8f/xa7/xc6 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
++<U0407> /x8f/xa7/xc7 CYRILLIC CAPITAL LETTER YI
++<U0408> /x8f/xa7/xc8 CYRILLIC CAPITAL LETTER JE
++<U0409> /x8f/xa7/xc9 CYRILLIC CAPITAL LETTER LJE
++<U040A> /x8f/xa7/xca CYRILLIC CAPITAL LETTER NJE
++<U040B> /x8f/xa7/xcb CYRILLIC CAPITAL LETTER TSHE
++<U040C> /x8f/xa7/xcc CYRILLIC CAPITAL LETTER KJE
++<U040E> /x8f/xa7/xcd CYRILLIC CAPITAL LETTER SHORT U
++<U040F> /x8f/xa7/xce CYRILLIC CAPITAL LETTER DZHE
++<U0452> /x8f/xa7/xf2 CYRILLIC SMALL LETTER DJE
++<U0453> /x8f/xa7/xf3 CYRILLIC SMALL LETTER GJE
++<U0454> /x8f/xa7/xf4 CYRILLIC SMALL LETTER UKRAINIAN IE
++<U0455> /x8f/xa7/xf5 CYRILLIC SMALL LETTER DZE
++<U0456> /x8f/xa7/xf6 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
++<U0457> /x8f/xa7/xf7 CYRILLIC SMALL LETTER YI
++<U0458> /x8f/xa7/xf8 CYRILLIC SMALL LETTER JE
++<U0459> /x8f/xa7/xf9 CYRILLIC SMALL LETTER LJE
++<U045A> /x8f/xa7/xfa CYRILLIC SMALL LETTER NJE
++<U045B> /x8f/xa7/xfb CYRILLIC SMALL LETTER TSHE
++<U045C> /x8f/xa7/xfc CYRILLIC SMALL LETTER KJE
++<U045E> /x8f/xa7/xfd CYRILLIC SMALL LETTER SHORT U
++<U045F> /x8f/xa7/xfe CYRILLIC SMALL LETTER DZHE
++<U00C6> /x8f/xa9/xa1 LATIN CAPITAL LIGATURE AE
++<U0110> /x8f/xa9/xa2 LATIN CAPITAL LETTER D WITH STROKE
++<U0126> /x8f/xa9/xa4 LATIN CAPITAL LETTER H WITH STROKE
++<U0132> /x8f/xa9/xa6 LATIN CAPITAL LIGATURE IJ
++<U0141> /x8f/xa9/xa8 LATIN CAPITAL LETTER L WITH STROKE
++<U013F> /x8f/xa9/xa9 LATIN CAPITAL LETTER L WITH MIDDLE DOT
++<U014A> /x8f/xa9/xab LATIN CAPITAL LETTER ENG
++<U00D8> /x8f/xa9/xac LATIN CAPITAL LETTER O WITH STROKE
++<U0152> /x8f/xa9/xad LATIN CAPITAL LIGATURE OE
++<U0166> /x8f/xa9/xaf LATIN CAPITAL LETTER T WITH STROKE
++<U00DE> /x8f/xa9/xb0 LATIN CAPITAL LETTER THORN
++<U00E6> /x8f/xa9/xc1 LATIN SMALL LIGATURE AE
++<U0111> /x8f/xa9/xc2 LATIN SMALL LETTER D WITH STROKE
++<U00F0> /x8f/xa9/xc3 LATIN SMALL LETTER ETH
++<U0127> /x8f/xa9/xc4 LATIN SMALL LETTER H WITH STROKE
++<U0131> /x8f/xa9/xc5 LATIN SMALL LETTER DOTLESS I
++<U0133> /x8f/xa9/xc6 LATIN SMALL LIGATURE IJ
++<U0138> /x8f/xa9/xc7 LATIN SMALL LETTER KRA
++<U0142> /x8f/xa9/xc8 LATIN SMALL LETTER L WITH STROKE
++<U0140> /x8f/xa9/xc9 LATIN SMALL LETTER L WITH MIDDLE DOT
++<U0149> /x8f/xa9/xca LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
++<U014B> /x8f/xa9/xcb LATIN SMALL LETTER ENG
++<U00F8> /x8f/xa9/xcc LATIN SMALL LETTER O WITH STROKE
++<U0153> /x8f/xa9/xcd LATIN SMALL LIGATURE OE
++<U00DF> /x8f/xa9/xce LATIN SMALL LETTER SHARP S
++<U0167> /x8f/xa9/xcf LATIN SMALL LETTER T WITH STROKE
++<U00FE> /x8f/xa9/xd0 LATIN SMALL LETTER THORN
++<U00C1> /x8f/xaa/xa1 LATIN CAPITAL LETTER A WITH ACUTE
++<U00C0> /x8f/xaa/xa2 LATIN CAPITAL LETTER A WITH GRAVE
++<U00C4> /x8f/xaa/xa3 LATIN CAPITAL LETTER A WITH DIAERESIS
++<U00C2> /x8f/xaa/xa4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
++<U0102> /x8f/xaa/xa5 LATIN CAPITAL LETTER A WITH BREVE
++<U01CD> /x8f/xaa/xa6 LATIN CAPITAL LETTER A WITH CARON
++<U0100> /x8f/xaa/xa7 LATIN CAPITAL LETTER A WITH MACRON
++<U0104> /x8f/xaa/xa8 LATIN CAPITAL LETTER A WITH OGONEK
++<U00C5> /x8f/xaa/xa9 LATIN CAPITAL LETTER A WITH RING ABOVE
++<U00C3> /x8f/xaa/xaa LATIN CAPITAL LETTER A WITH TILDE
++<U0106> /x8f/xaa/xab LATIN CAPITAL LETTER C WITH ACUTE
++<U0108> /x8f/xaa/xac LATIN CAPITAL LETTER C WITH CIRCUMFLEX
++<U010C> /x8f/xaa/xad LATIN CAPITAL LETTER C WITH CARON
++<U00C7> /x8f/xaa/xae LATIN CAPITAL LETTER C WITH CEDILLA
++<U010A> /x8f/xaa/xaf LATIN CAPITAL LETTER C WITH DOT ABOVE
++<U010E> /x8f/xaa/xb0 LATIN CAPITAL LETTER D WITH CARON
++<U00C9> /x8f/xaa/xb1 LATIN CAPITAL LETTER E WITH ACUTE
++<U00C8> /x8f/xaa/xb2 LATIN CAPITAL LETTER E WITH GRAVE
++<U00CB> /x8f/xaa/xb3 LATIN CAPITAL LETTER E WITH DIAERESIS
++<U00CA> /x8f/xaa/xb4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
++<U011A> /x8f/xaa/xb5 LATIN CAPITAL LETTER E WITH CARON
++<U0116> /x8f/xaa/xb6 LATIN CAPITAL LETTER E WITH DOT ABOVE
++<U0112> /x8f/xaa/xb7 LATIN CAPITAL LETTER E WITH MACRON
++<U0118> /x8f/xaa/xb8 LATIN CAPITAL LETTER E WITH OGONEK
++<U011C> /x8f/xaa/xba LATIN CAPITAL LETTER G WITH CIRCUMFLEX
++<U011E> /x8f/xaa/xbb LATIN CAPITAL LETTER G WITH BREVE
++<U0122> /x8f/xaa/xbc LATIN CAPITAL LETTER G WITH CEDILLA
++<U0120> /x8f/xaa/xbd LATIN CAPITAL LETTER G WITH DOT ABOVE
++<U0124> /x8f/xaa/xbe LATIN CAPITAL LETTER H WITH CIRCUMFLEX
++<U00CD> /x8f/xaa/xbf LATIN CAPITAL LETTER I WITH ACUTE
++<U00CC> /x8f/xaa/xc0 LATIN CAPITAL LETTER I WITH GRAVE
++<U00CF> /x8f/xaa/xc1 LATIN CAPITAL LETTER I WITH DIAERESIS
++<U00CE> /x8f/xaa/xc2 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
++<U01CF> /x8f/xaa/xc3 LATIN CAPITAL LETTER I WITH CARON
++<U0130> /x8f/xaa/xc4 LATIN CAPITAL LETTER I WITH DOT ABOVE
++<U012A> /x8f/xaa/xc5 LATIN CAPITAL LETTER I WITH MACRON
++<U012E> /x8f/xaa/xc6 LATIN CAPITAL LETTER I WITH OGONEK
++<U0128> /x8f/xaa/xc7 LATIN CAPITAL LETTER I WITH TILDE
++<U0134> /x8f/xaa/xc8 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
++<U0136> /x8f/xaa/xc9 LATIN CAPITAL LETTER K WITH CEDILLA
++<U0139> /x8f/xaa/xca LATIN CAPITAL LETTER L WITH ACUTE
++<U013D> /x8f/xaa/xcb LATIN CAPITAL LETTER L WITH CARON
++<U013B> /x8f/xaa/xcc LATIN CAPITAL LETTER L WITH CEDILLA
++<U0143> /x8f/xaa/xcd LATIN CAPITAL LETTER N WITH ACUTE
++<U0147> /x8f/xaa/xce LATIN CAPITAL LETTER N WITH CARON
++<U0145> /x8f/xaa/xcf LATIN CAPITAL LETTER N WITH CEDILLA
++<U00D1> /x8f/xaa/xd0 LATIN CAPITAL LETTER N WITH TILDE
++<U00D3> /x8f/xaa/xd1 LATIN CAPITAL LETTER O WITH ACUTE
++<U00D2> /x8f/xaa/xd2 LATIN CAPITAL LETTER O WITH GRAVE
++<U00D6> /x8f/xaa/xd3 LATIN CAPITAL LETTER O WITH DIAERESIS
++<U00D4> /x8f/xaa/xd4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
++<U01D1> /x8f/xaa/xd5 LATIN CAPITAL LETTER O WITH CARON
++<U0150> /x8f/xaa/xd6 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
++<U014C> /x8f/xaa/xd7 LATIN CAPITAL LETTER O WITH MACRON
++<U00D5> /x8f/xaa/xd8 LATIN CAPITAL LETTER O WITH TILDE
++<U0154> /x8f/xaa/xd9 LATIN CAPITAL LETTER R WITH ACUTE
++<U0158> /x8f/xaa/xda LATIN CAPITAL LETTER R WITH CARON
++<U0156> /x8f/xaa/xdb LATIN CAPITAL LETTER R WITH CEDILLA
++<U015A> /x8f/xaa/xdc LATIN CAPITAL LETTER S WITH ACUTE
++<U015C> /x8f/xaa/xdd LATIN CAPITAL LETTER S WITH CIRCUMFLEX
++<U0160> /x8f/xaa/xde LATIN CAPITAL LETTER S WITH CARON
++<U015E> /x8f/xaa/xdf LATIN CAPITAL LETTER S WITH CEDILLA
++<U0164> /x8f/xaa/xe0 LATIN CAPITAL LETTER T WITH CARON
++<U0162> /x8f/xaa/xe1 LATIN CAPITAL LETTER T WITH CEDILLA
++<U00DA> /x8f/xaa/xe2 LATIN CAPITAL LETTER U WITH ACUTE
++<U00D9> /x8f/xaa/xe3 LATIN CAPITAL LETTER U WITH GRAVE
++<U00DC> /x8f/xaa/xe4 LATIN CAPITAL LETTER U WITH DIAERESIS
++<U00DB> /x8f/xaa/xe5 LATIN CAPITAL LETTER U WITH CIRCUMFLEX
++<U016C> /x8f/xaa/xe6 LATIN CAPITAL LETTER U WITH BREVE
++<U01D3> /x8f/xaa/xe7 LATIN CAPITAL LETTER U WITH CARON
++<U0170> /x8f/xaa/xe8 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
++<U016A> /x8f/xaa/xe9 LATIN CAPITAL LETTER U WITH MACRON
++<U0172> /x8f/xaa/xea LATIN CAPITAL LETTER U WITH OGONEK
++<U016E> /x8f/xaa/xeb LATIN CAPITAL LETTER U WITH RING ABOVE
++<U0168> /x8f/xaa/xec LATIN CAPITAL LETTER U WITH TILDE
++<U01D7> /x8f/xaa/xed LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
++<U01DB> /x8f/xaa/xee LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
++<U01D9> /x8f/xaa/xef LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
++<U01D5> /x8f/xaa/xf0 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
++<U0174> /x8f/xaa/xf1 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
++<U00DD> /x8f/xaa/xf2 LATIN CAPITAL LETTER Y WITH ACUTE
++<U0178> /x8f/xaa/xf3 LATIN CAPITAL LETTER Y WITH DIAERESIS
++<U0176> /x8f/xaa/xf4 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
++<U0179> /x8f/xaa/xf5 LATIN CAPITAL LETTER Z WITH ACUTE
++<U017D> /x8f/xaa/xf6 LATIN CAPITAL LETTER Z WITH CARON
++<U017B> /x8f/xaa/xf7 LATIN CAPITAL LETTER Z WITH DOT ABOVE
++<U00E1> /x8f/xab/xa1 LATIN SMALL LETTER A WITH ACUTE
++<U00E0> /x8f/xab/xa2 LATIN SMALL LETTER A WITH GRAVE
++<U00E4> /x8f/xab/xa3 LATIN SMALL LETTER A WITH DIAERESIS
++<U00E2> /x8f/xab/xa4 LATIN SMALL LETTER A WITH CIRCUMFLEX
++<U0103> /x8f/xab/xa5 LATIN SMALL LETTER A WITH BREVE
++<U01CE> /x8f/xab/xa6 LATIN SMALL LETTER A WITH CARON
++<U0101> /x8f/xab/xa7 LATIN SMALL LETTER A WITH MACRON
++<U0105> /x8f/xab/xa8 LATIN SMALL LETTER A WITH OGONEK
++<U00E5> /x8f/xab/xa9 LATIN SMALL LETTER A WITH RING ABOVE
++<U00E3> /x8f/xab/xaa LATIN SMALL LETTER A WITH TILDE
++<U0107> /x8f/xab/xab LATIN SMALL LETTER C WITH ACUTE
++<U0109> /x8f/xab/xac LATIN SMALL LETTER C WITH CIRCUMFLEX
++<U010D> /x8f/xab/xad LATIN SMALL LETTER C WITH CARON
++<U00E7> /x8f/xab/xae LATIN SMALL LETTER C WITH CEDILLA
++<U010B> /x8f/xab/xaf LATIN SMALL LETTER C WITH DOT ABOVE
++<U010F> /x8f/xab/xb0 LATIN SMALL LETTER D WITH CARON
++<U00E9> /x8f/xab/xb1 LATIN SMALL LETTER E WITH ACUTE
++<U00E8> /x8f/xab/xb2 LATIN SMALL LETTER E WITH GRAVE
++<U00EB> /x8f/xab/xb3 LATIN SMALL LETTER E WITH DIAERESIS
++<U00EA> /x8f/xab/xb4 LATIN SMALL LETTER E WITH CIRCUMFLEX
++<U011B> /x8f/xab/xb5 LATIN SMALL LETTER E WITH CARON
++<U0117> /x8f/xab/xb6 LATIN SMALL LETTER E WITH DOT ABOVE
++<U0113> /x8f/xab/xb7 LATIN SMALL LETTER E WITH MACRON
++<U0119> /x8f/xab/xb8 LATIN SMALL LETTER E WITH OGONEK
++<U01F5> /x8f/xab/xb9 LATIN SMALL LETTER G WITH ACUTE
++<U011D> /x8f/xab/xba LATIN SMALL LETTER G WITH CIRCUMFLEX
++<U011F> /x8f/xab/xbb LATIN SMALL LETTER G WITH BREVE
++<U0121> /x8f/xab/xbd LATIN SMALL LETTER G WITH DOT ABOVE
++<U0125> /x8f/xab/xbe LATIN SMALL LETTER H WITH CIRCUMFLEX
++<U00ED> /x8f/xab/xbf LATIN SMALL LETTER I WITH ACUTE
++<U00EC> /x8f/xab/xc0 LATIN SMALL LETTER I WITH GRAVE
++<U00EF> /x8f/xab/xc1 LATIN SMALL LETTER I WITH DIAERESIS
++<U00EE> /x8f/xab/xc2 LATIN SMALL LETTER I WITH CIRCUMFLEX
++<U01D0> /x8f/xab/xc3 LATIN SMALL LETTER I WITH CARON
++<U012B> /x8f/xab/xc5 LATIN SMALL LETTER I WITH MACRON
++<U012F> /x8f/xab/xc6 LATIN SMALL LETTER I WITH OGONEK
++<U0129> /x8f/xab/xc7 LATIN SMALL LETTER I WITH TILDE
++<U0135> /x8f/xab/xc8 LATIN SMALL LETTER J WITH CIRCUMFLEX
++<U0137> /x8f/xab/xc9 LATIN SMALL LETTER K WITH CEDILLA
++<U013A> /x8f/xab/xca LATIN SMALL LETTER L WITH ACUTE
++<U013E> /x8f/xab/xcb LATIN SMALL LETTER L WITH CARON
++<U013C> /x8f/xab/xcc LATIN SMALL LETTER L WITH CEDILLA
++<U0144> /x8f/xab/xcd LATIN SMALL LETTER N WITH ACUTE
++<U0148> /x8f/xab/xce LATIN SMALL LETTER N WITH CARON
++<U0146> /x8f/xab/xcf LATIN SMALL LETTER N WITH CEDILLA
++<U00F1> /x8f/xab/xd0 LATIN SMALL LETTER N WITH TILDE
++<U00F3> /x8f/xab/xd1 LATIN SMALL LETTER O WITH ACUTE
++<U00F2> /x8f/xab/xd2 LATIN SMALL LETTER O WITH GRAVE
++<U00F6> /x8f/xab/xd3 LATIN SMALL LETTER O WITH DIAERESIS
++<U00F4> /x8f/xab/xd4 LATIN SMALL LETTER O WITH CIRCUMFLEX
++<U01D2> /x8f/xab/xd5 LATIN SMALL LETTER O WITH CARON
++<U0151> /x8f/xab/xd6 LATIN SMALL LETTER O WITH DOUBLE ACUTE
++<U014D> /x8f/xab/xd7 LATIN SMALL LETTER O WITH MACRON
++<U00F5> /x8f/xab/xd8 LATIN SMALL LETTER O WITH TILDE
++<U0155> /x8f/xab/xd9 LATIN SMALL LETTER R WITH ACUTE
++<U0159> /x8f/xab/xda LATIN SMALL LETTER R WITH CARON
++<U0157> /x8f/xab/xdb LATIN SMALL LETTER R WITH CEDILLA
++<U015B> /x8f/xab/xdc LATIN SMALL LETTER S WITH ACUTE
++<U015D> /x8f/xab/xdd LATIN SMALL LETTER S WITH CIRCUMFLEX
++<U0161> /x8f/xab/xde LATIN SMALL LETTER S WITH CARON
++<U015F> /x8f/xab/xdf LATIN SMALL LETTER S WITH CEDILLA
++<U0165> /x8f/xab/xe0 LATIN SMALL LETTER T WITH CARON
++<U0163> /x8f/xab/xe1 LATIN SMALL LETTER T WITH CEDILLA
++<U00FA> /x8f/xab/xe2 LATIN SMALL LETTER U WITH ACUTE
++<U00F9> /x8f/xab/xe3 LATIN SMALL LETTER U WITH GRAVE
++<U00FC> /x8f/xab/xe4 LATIN SMALL LETTER U WITH DIAERESIS
++<U00FB> /x8f/xab/xe5 LATIN SMALL LETTER U WITH CIRCUMFLEX
++<U016D> /x8f/xab/xe6 LATIN SMALL LETTER U WITH BREVE
++<U01D4> /x8f/xab/xe7 LATIN SMALL LETTER U WITH CARON
++<U0171> /x8f/xab/xe8 LATIN SMALL LETTER U WITH DOUBLE ACUTE
++<U016B> /x8f/xab/xe9 LATIN SMALL LETTER U WITH MACRON
++<U0173> /x8f/xab/xea LATIN SMALL LETTER U WITH OGONEK
++<U016F> /x8f/xab/xeb LATIN SMALL LETTER U WITH RING ABOVE
++<U0169> /x8f/xab/xec LATIN SMALL LETTER U WITH TILDE
++<U01D8> /x8f/xab/xed LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
++<U01DC> /x8f/xab/xee LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
++<U01DA> /x8f/xab/xef LATIN SMALL LETTER U WITH DIAERESIS AND CARON
++<U01D6> /x8f/xab/xf0 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
++<U0175> /x8f/xab/xf1 LATIN SMALL LETTER W WITH CIRCUMFLEX
++<U00FD> /x8f/xab/xf2 LATIN SMALL LETTER Y WITH ACUTE
++<U00FF> /x8f/xab/xf3 LATIN SMALL LETTER Y WITH DIAERESIS
++<U0177> /x8f/xab/xf4 LATIN SMALL LETTER Y WITH CIRCUMFLEX
++<U017A> /x8f/xab/xf5 LATIN SMALL LETTER Z WITH ACUTE
++<U017E> /x8f/xab/xf6 LATIN SMALL LETTER Z WITH CARON
++<U017C> /x8f/xab/xf7 LATIN SMALL LETTER Z WITH DOT ABOVE
++<U4E02> /x8f/xb0/xa1 <CJK>
++<U4E04> /x8f/xb0/xa2 <CJK>
++<U4E05> /x8f/xb0/xa3 <CJK>
++<U4E0C> /x8f/xb0/xa4 <CJK>
++<U4E12> /x8f/xb0/xa5 <CJK>
++<U4E1F> /x8f/xb0/xa6 <CJK>
++<U4E23> /x8f/xb0/xa7 <CJK>
++<U4E24> /x8f/xb0/xa8 <CJK>
++<U4E28> /x8f/xb0/xa9 <CJK>
++<U4E2B> /x8f/xb0/xaa <CJK>
++<U4E2E> /x8f/xb0/xab <CJK>
++<U4E2F> /x8f/xb0/xac <CJK>
++<U4E30> /x8f/xb0/xad <CJK>
++<U4E35> /x8f/xb0/xae <CJK>
++<U4E40> /x8f/xb0/xaf <CJK>
++<U4E41> /x8f/xb0/xb0 <CJK>
++<U4E44> /x8f/xb0/xb1 <CJK>
++<U4E47> /x8f/xb0/xb2 <CJK>
++<U4E51> /x8f/xb0/xb3 <CJK>
++<U4E5A> /x8f/xb0/xb4 <CJK>
++<U4E5C> /x8f/xb0/xb5 <CJK>
++<U4E63> /x8f/xb0/xb6 <CJK>
++<U4E68> /x8f/xb0/xb7 <CJK>
++<U4E69> /x8f/xb0/xb8 <CJK>
++<U4E74> /x8f/xb0/xb9 <CJK>
++<U4E75> /x8f/xb0/xba <CJK>
++<U4E79> /x8f/xb0/xbb <CJK>
++<U4E7F> /x8f/xb0/xbc <CJK>
++<U4E8D> /x8f/xb0/xbd <CJK>
++<U4E96> /x8f/xb0/xbe <CJK>
++<U4E97> /x8f/xb0/xbf <CJK>
++<U4E9D> /x8f/xb0/xc0 <CJK>
++<U4EAF> /x8f/xb0/xc1 <CJK>
++<U4EB9> /x8f/xb0/xc2 <CJK>
++<U4EC3> /x8f/xb0/xc3 <CJK>
++<U4ED0> /x8f/xb0/xc4 <CJK>
++<U4EDA> /x8f/xb0/xc5 <CJK>
++<U4EDB> /x8f/xb0/xc6 <CJK>
++<U4EE0> /x8f/xb0/xc7 <CJK>
++<U4EE1> /x8f/xb0/xc8 <CJK>
++<U4EE2> /x8f/xb0/xc9 <CJK>
++<U4EE8> /x8f/xb0/xca <CJK>
++<U4EEF> /x8f/xb0/xcb <CJK>
++<U4EF1> /x8f/xb0/xcc <CJK>
++<U4EF3> /x8f/xb0/xcd <CJK>
++<U4EF5> /x8f/xb0/xce <CJK>
++<U4EFD> /x8f/xb0/xcf <CJK>
++<U4EFE> /x8f/xb0/xd0 <CJK>
++<U4EFF> /x8f/xb0/xd1 <CJK>
++<U4F00> /x8f/xb0/xd2 <CJK>
++<U4F02> /x8f/xb0/xd3 <CJK>
++<U4F03> /x8f/xb0/xd4 <CJK>
++<U4F08> /x8f/xb0/xd5 <CJK>
++<U4F0B> /x8f/xb0/xd6 <CJK>
++<U4F0C> /x8f/xb0/xd7 <CJK>
++<U4F12> /x8f/xb0/xd8 <CJK>
++<U4F15> /x8f/xb0/xd9 <CJK>
++<U4F16> /x8f/xb0/xda <CJK>
++<U4F17> /x8f/xb0/xdb <CJK>
++<U4F19> /x8f/xb0/xdc <CJK>
++<U4F2E> /x8f/xb0/xdd <CJK>
++<U4F31> /x8f/xb0/xde <CJK>
++<U4F60> /x8f/xb0/xdf <CJK>
++<U4F33> /x8f/xb0/xe0 <CJK>
++<U4F35> /x8f/xb0/xe1 <CJK>
++<U4F37> /x8f/xb0/xe2 <CJK>
++<U4F39> /x8f/xb0/xe3 <CJK>
++<U4F3B> /x8f/xb0/xe4 <CJK>
++<U4F3E> /x8f/xb0/xe5 <CJK>
++<U4F40> /x8f/xb0/xe6 <CJK>
++<U4F42> /x8f/xb0/xe7 <CJK>
++<U4F48> /x8f/xb0/xe8 <CJK>
++<U4F49> /x8f/xb0/xe9 <CJK>
++<U4F4B> /x8f/xb0/xea <CJK>
++<U4F4C> /x8f/xb0/xeb <CJK>
++<U4F52> /x8f/xb0/xec <CJK>
++<U4F54> /x8f/xb0/xed <CJK>
++<U4F56> /x8f/xb0/xee <CJK>
++<U4F58> /x8f/xb0/xef <CJK>
++<U4F5F> /x8f/xb0/xf0 <CJK>
++<U4F63> /x8f/xb0/xf1 <CJK>
++<U4F6A> /x8f/xb0/xf2 <CJK>
++<U4F6C> /x8f/xb0/xf3 <CJK>
++<U4F6E> /x8f/xb0/xf4 <CJK>
++<U4F71> /x8f/xb0/xf5 <CJK>
++<U4F77> /x8f/xb0/xf6 <CJK>
++<U4F78> /x8f/xb0/xf7 <CJK>
++<U4F79> /x8f/xb0/xf8 <CJK>
++<U4F7A> /x8f/xb0/xf9 <CJK>
++<U4F7D> /x8f/xb0/xfa <CJK>
++<U4F7E> /x8f/xb0/xfb <CJK>
++<U4F81> /x8f/xb0/xfc <CJK>
++<U4F82> /x8f/xb0/xfd <CJK>
++<U4F84> /x8f/xb0/xfe <CJK>
++<U4F85> /x8f/xb1/xa1 <CJK>
++<U4F89> /x8f/xb1/xa2 <CJK>
++<U4F8A> /x8f/xb1/xa3 <CJK>
++<U4F8C> /x8f/xb1/xa4 <CJK>
++<U4F8E> /x8f/xb1/xa5 <CJK>
++<U4F90> /x8f/xb1/xa6 <CJK>
++<U4F92> /x8f/xb1/xa7 <CJK>
++<U4F93> /x8f/xb1/xa8 <CJK>
++<U4F94> /x8f/xb1/xa9 <CJK>
++<U4F97> /x8f/xb1/xaa <CJK>
++<U4F99> /x8f/xb1/xab <CJK>
++<U4F9A> /x8f/xb1/xac <CJK>
++<U4F9E> /x8f/xb1/xad <CJK>
++<U4F9F> /x8f/xb1/xae <CJK>
++<U4FB2> /x8f/xb1/xaf <CJK>
++<U4FB7> /x8f/xb1/xb0 <CJK>
++<U4FB9> /x8f/xb1/xb1 <CJK>
++<U4FBB> /x8f/xb1/xb2 <CJK>
++<U4FBC> /x8f/xb1/xb3 <CJK>
++<U4FBD> /x8f/xb1/xb4 <CJK>
++<U4FBE> /x8f/xb1/xb5 <CJK>
++<U4FC0> /x8f/xb1/xb6 <CJK>
++<U4FC1> /x8f/xb1/xb7 <CJK>
++<U4FC5> /x8f/xb1/xb8 <CJK>
++<U4FC6> /x8f/xb1/xb9 <CJK>
++<U4FC8> /x8f/xb1/xba <CJK>
++<U4FC9> /x8f/xb1/xbb <CJK>
++<U4FCB> /x8f/xb1/xbc <CJK>
++<U4FCC> /x8f/xb1/xbd <CJK>
++<U4FCD> /x8f/xb1/xbe <CJK>
++<U4FCF> /x8f/xb1/xbf <CJK>
++<U4FD2> /x8f/xb1/xc0 <CJK>
++<U4FDC> /x8f/xb1/xc1 <CJK>
++<U4FE0> /x8f/xb1/xc2 <CJK>
++<U4FE2> /x8f/xb1/xc3 <CJK>
++<U4FF0> /x8f/xb1/xc4 <CJK>
++<U4FF2> /x8f/xb1/xc5 <CJK>
++<U4FFC> /x8f/xb1/xc6 <CJK>
++<U4FFD> /x8f/xb1/xc7 <CJK>
++<U4FFF> /x8f/xb1/xc8 <CJK>
++<U5000> /x8f/xb1/xc9 <CJK>
++<U5001> /x8f/xb1/xca <CJK>
++<U5004> /x8f/xb1/xcb <CJK>
++<U5007> /x8f/xb1/xcc <CJK>
++<U500A> /x8f/xb1/xcd <CJK>
++<U500C> /x8f/xb1/xce <CJK>
++<U500E> /x8f/xb1/xcf <CJK>
++<U5010> /x8f/xb1/xd0 <CJK>
++<U5013> /x8f/xb1/xd1 <CJK>
++<U5017> /x8f/xb1/xd2 <CJK>
++<U5018> /x8f/xb1/xd3 <CJK>
++<U501B> /x8f/xb1/xd4 <CJK>
++<U501C> /x8f/xb1/xd5 <CJK>
++<U501D> /x8f/xb1/xd6 <CJK>
++<U501E> /x8f/xb1/xd7 <CJK>
++<U5022> /x8f/xb1/xd8 <CJK>
++<U5027> /x8f/xb1/xd9 <CJK>
++<U502E> /x8f/xb1/xda <CJK>
++<U5030> /x8f/xb1/xdb <CJK>
++<U5032> /x8f/xb1/xdc <CJK>
++<U5033> /x8f/xb1/xdd <CJK>
++<U5035> /x8f/xb1/xde <CJK>
++<U5040> /x8f/xb1/xdf <CJK>
++<U5041> /x8f/xb1/xe0 <CJK>
++<U5042> /x8f/xb1/xe1 <CJK>
++<U5045> /x8f/xb1/xe2 <CJK>
++<U5046> /x8f/xb1/xe3 <CJK>
++<U504A> /x8f/xb1/xe4 <CJK>
++<U504C> /x8f/xb1/xe5 <CJK>
++<U504E> /x8f/xb1/xe6 <CJK>
++<U5051> /x8f/xb1/xe7 <CJK>
++<U5052> /x8f/xb1/xe8 <CJK>
++<U5053> /x8f/xb1/xe9 <CJK>
++<U5057> /x8f/xb1/xea <CJK>
++<U5059> /x8f/xb1/xeb <CJK>
++<U505F> /x8f/xb1/xec <CJK>
++<U5060> /x8f/xb1/xed <CJK>
++<U5062> /x8f/xb1/xee <CJK>
++<U5063> /x8f/xb1/xef <CJK>
++<U5066> /x8f/xb1/xf0 <CJK>
++<U5067> /x8f/xb1/xf1 <CJK>
++<U506A> /x8f/xb1/xf2 <CJK>
++<U506D> /x8f/xb1/xf3 <CJK>
++<U5070> /x8f/xb1/xf4 <CJK>
++<U5071> /x8f/xb1/xf5 <CJK>
++<U503B> /x8f/xb1/xf6 <CJK>
++<U5081> /x8f/xb1/xf7 <CJK>
++<U5083> /x8f/xb1/xf8 <CJK>
++<U5084> /x8f/xb1/xf9 <CJK>
++<U5086> /x8f/xb1/xfa <CJK>
++<U508A> /x8f/xb1/xfb <CJK>
++<U508E> /x8f/xb1/xfc <CJK>
++<U508F> /x8f/xb1/xfd <CJK>
++<U5090> /x8f/xb1/xfe <CJK>
++<U5092> /x8f/xb2/xa1 <CJK>
++<U5093> /x8f/xb2/xa2 <CJK>
++<U5094> /x8f/xb2/xa3 <CJK>
++<U5096> /x8f/xb2/xa4 <CJK>
++<U509B> /x8f/xb2/xa5 <CJK>
++<U509C> /x8f/xb2/xa6 <CJK>
++<U509E> /x8f/xb2/xa7 <CJK>
++<U509F> /x8f/xb2/xa8 <CJK>
++<U50A0> /x8f/xb2/xa9 <CJK>
++<U50A1> /x8f/xb2/xaa <CJK>
++<U50A2> /x8f/xb2/xab <CJK>
++<U50AA> /x8f/xb2/xac <CJK>
++<U50AF> /x8f/xb2/xad <CJK>
++<U50B0> /x8f/xb2/xae <CJK>
++<U50B9> /x8f/xb2/xaf <CJK>
++<U50BA> /x8f/xb2/xb0 <CJK>
++<U50BD> /x8f/xb2/xb1 <CJK>
++<U50C0> /x8f/xb2/xb2 <CJK>
++<U50C3> /x8f/xb2/xb3 <CJK>
++<U50C4> /x8f/xb2/xb4 <CJK>
++<U50C7> /x8f/xb2/xb5 <CJK>
++<U50CC> /x8f/xb2/xb6 <CJK>
++<U50CE> /x8f/xb2/xb7 <CJK>
++<U50D0> /x8f/xb2/xb8 <CJK>
++<U50D3> /x8f/xb2/xb9 <CJK>
++<U50D4> /x8f/xb2/xba <CJK>
++<U50D8> /x8f/xb2/xbb <CJK>
++<U50DC> /x8f/xb2/xbc <CJK>
++<U50DD> /x8f/xb2/xbd <CJK>
++<U50DF> /x8f/xb2/xbe <CJK>
++<U50E2> /x8f/xb2/xbf <CJK>
++<U50E4> /x8f/xb2/xc0 <CJK>
++<U50E6> /x8f/xb2/xc1 <CJK>
++<U50E8> /x8f/xb2/xc2 <CJK>
++<U50E9> /x8f/xb2/xc3 <CJK>
++<U50EF> /x8f/xb2/xc4 <CJK>
++<U50F1> /x8f/xb2/xc5 <CJK>
++<U50F6> /x8f/xb2/xc6 <CJK>
++<U50FA> /x8f/xb2/xc7 <CJK>
++<U50FE> /x8f/xb2/xc8 <CJK>
++<U5103> /x8f/xb2/xc9 <CJK>
++<U5106> /x8f/xb2/xca <CJK>
++<U5107> /x8f/xb2/xcb <CJK>
++<U5108> /x8f/xb2/xcc <CJK>
++<U510B> /x8f/xb2/xcd <CJK>
++<U510C> /x8f/xb2/xce <CJK>
++<U510D> /x8f/xb2/xcf <CJK>
++<U510E> /x8f/xb2/xd0 <CJK>
++<U50F2> /x8f/xb2/xd1 <CJK>
++<U5110> /x8f/xb2/xd2 <CJK>
++<U5117> /x8f/xb2/xd3 <CJK>
++<U5119> /x8f/xb2/xd4 <CJK>
++<U511B> /x8f/xb2/xd5 <CJK>
++<U511C> /x8f/xb2/xd6 <CJK>
++<U511D> /x8f/xb2/xd7 <CJK>
++<U511E> /x8f/xb2/xd8 <CJK>
++<U5123> /x8f/xb2/xd9 <CJK>
++<U5127> /x8f/xb2/xda <CJK>
++<U5128> /x8f/xb2/xdb <CJK>
++<U512C> /x8f/xb2/xdc <CJK>
++<U512D> /x8f/xb2/xdd <CJK>
++<U512F> /x8f/xb2/xde <CJK>
++<U5131> /x8f/xb2/xdf <CJK>
++<U5133> /x8f/xb2/xe0 <CJK>
++<U5134> /x8f/xb2/xe1 <CJK>
++<U5135> /x8f/xb2/xe2 <CJK>
++<U5138> /x8f/xb2/xe3 <CJK>
++<U5139> /x8f/xb2/xe4 <CJK>
++<U5142> /x8f/xb2/xe5 <CJK>
++<U514A> /x8f/xb2/xe6 <CJK>
++<U514F> /x8f/xb2/xe7 <CJK>
++<U5153> /x8f/xb2/xe8 <CJK>
++<U5155> /x8f/xb2/xe9 <CJK>
++<U5157> /x8f/xb2/xea <CJK>
++<U5158> /x8f/xb2/xeb <CJK>
++<U515F> /x8f/xb2/xec <CJK>
++<U5164> /x8f/xb2/xed <CJK>
++<U5166> /x8f/xb2/xee <CJK>
++<U517E> /x8f/xb2/xef <CJK>
++<U5183> /x8f/xb2/xf0 <CJK>
++<U5184> /x8f/xb2/xf1 <CJK>
++<U518B> /x8f/xb2/xf2 <CJK>
++<U518E> /x8f/xb2/xf3 <CJK>
++<U5198> /x8f/xb2/xf4 <CJK>
++<U519D> /x8f/xb2/xf5 <CJK>
++<U51A1> /x8f/xb2/xf6 <CJK>
++<U51A3> /x8f/xb2/xf7 <CJK>
++<U51AD> /x8f/xb2/xf8 <CJK>
++<U51B8> /x8f/xb2/xf9 <CJK>
++<U51BA> /x8f/xb2/xfa <CJK>
++<U51BC> /x8f/xb2/xfb <CJK>
++<U51BE> /x8f/xb2/xfc <CJK>
++<U51BF> /x8f/xb2/xfd <CJK>
++<U51C2> /x8f/xb2/xfe <CJK>
++<U51C8> /x8f/xb3/xa1 <CJK>
++<U51CF> /x8f/xb3/xa2 <CJK>
++<U51D1> /x8f/xb3/xa3 <CJK>
++<U51D2> /x8f/xb3/xa4 <CJK>
++<U51D3> /x8f/xb3/xa5 <CJK>
++<U51D5> /x8f/xb3/xa6 <CJK>
++<U51D8> /x8f/xb3/xa7 <CJK>
++<U51DE> /x8f/xb3/xa8 <CJK>
++<U51E2> /x8f/xb3/xa9 <CJK>
++<U51E5> /x8f/xb3/xaa <CJK>
++<U51EE> /x8f/xb3/xab <CJK>
++<U51F2> /x8f/xb3/xac <CJK>
++<U51F3> /x8f/xb3/xad <CJK>
++<U51F4> /x8f/xb3/xae <CJK>
++<U51F7> /x8f/xb3/xaf <CJK>
++<U5201> /x8f/xb3/xb0 <CJK>
++<U5202> /x8f/xb3/xb1 <CJK>
++<U5205> /x8f/xb3/xb2 <CJK>
++<U5212> /x8f/xb3/xb3 <CJK>
++<U5213> /x8f/xb3/xb4 <CJK>
++<U5215> /x8f/xb3/xb5 <CJK>
++<U5216> /x8f/xb3/xb6 <CJK>
++<U5218> /x8f/xb3/xb7 <CJK>
++<U5222> /x8f/xb3/xb8 <CJK>
++<U5228> /x8f/xb3/xb9 <CJK>
++<U5231> /x8f/xb3/xba <CJK>
++<U5232> /x8f/xb3/xbb <CJK>
++<U5235> /x8f/xb3/xbc <CJK>
++<U523C> /x8f/xb3/xbd <CJK>
++<U5245> /x8f/xb3/xbe <CJK>
++<U5249> /x8f/xb3/xbf <CJK>
++<U5255> /x8f/xb3/xc0 <CJK>
++<U5257> /x8f/xb3/xc1 <CJK>
++<U5258> /x8f/xb3/xc2 <CJK>
++<U525A> /x8f/xb3/xc3 <CJK>
++<U525C> /x8f/xb3/xc4 <CJK>
++<U525F> /x8f/xb3/xc5 <CJK>
++<U5260> /x8f/xb3/xc6 <CJK>
++<U5261> /x8f/xb3/xc7 <CJK>
++<U5266> /x8f/xb3/xc8 <CJK>
++<U526E> /x8f/xb3/xc9 <CJK>
++<U5277> /x8f/xb3/xca <CJK>
++<U5278> /x8f/xb3/xcb <CJK>
++<U5279> /x8f/xb3/xcc <CJK>
++<U5280> /x8f/xb3/xcd <CJK>
++<U5282> /x8f/xb3/xce <CJK>
++<U5285> /x8f/xb3/xcf <CJK>
++<U528A> /x8f/xb3/xd0 <CJK>
++<U528C> /x8f/xb3/xd1 <CJK>
++<U5293> /x8f/xb3/xd2 <CJK>
++<U5295> /x8f/xb3/xd3 <CJK>
++<U5296> /x8f/xb3/xd4 <CJK>
++<U5297> /x8f/xb3/xd5 <CJK>
++<U5298> /x8f/xb3/xd6 <CJK>
++<U529A> /x8f/xb3/xd7 <CJK>
++<U529C> /x8f/xb3/xd8 <CJK>
++<U52A4> /x8f/xb3/xd9 <CJK>
++<U52A5> /x8f/xb3/xda <CJK>
++<U52A6> /x8f/xb3/xdb <CJK>
++<U52A7> /x8f/xb3/xdc <CJK>
++<U52AF> /x8f/xb3/xdd <CJK>
++<U52B0> /x8f/xb3/xde <CJK>
++<U52B6> /x8f/xb3/xdf <CJK>
++<U52B7> /x8f/xb3/xe0 <CJK>
++<U52B8> /x8f/xb3/xe1 <CJK>
++<U52BA> /x8f/xb3/xe2 <CJK>
++<U52BB> /x8f/xb3/xe3 <CJK>
++<U52BD> /x8f/xb3/xe4 <CJK>
++<U52C0> /x8f/xb3/xe5 <CJK>
++<U52C4> /x8f/xb3/xe6 <CJK>
++<U52C6> /x8f/xb3/xe7 <CJK>
++<U52C8> /x8f/xb3/xe8 <CJK>
++<U52CC> /x8f/xb3/xe9 <CJK>
++<U52CF> /x8f/xb3/xea <CJK>
++<U52D1> /x8f/xb3/xeb <CJK>
++<U52D4> /x8f/xb3/xec <CJK>
++<U52D6> /x8f/xb3/xed <CJK>
++<U52DB> /x8f/xb3/xee <CJK>
++<U52DC> /x8f/xb3/xef <CJK>
++<U52E1> /x8f/xb3/xf0 <CJK>
++<U52E5> /x8f/xb3/xf1 <CJK>
++<U52E8> /x8f/xb3/xf2 <CJK>
++<U52E9> /x8f/xb3/xf3 <CJK>
++<U52EA> /x8f/xb3/xf4 <CJK>
++<U52EC> /x8f/xb3/xf5 <CJK>
++<U52F0> /x8f/xb3/xf6 <CJK>
++<U52F1> /x8f/xb3/xf7 <CJK>
++<U52F4> /x8f/xb3/xf8 <CJK>
++<U52F6> /x8f/xb3/xf9 <CJK>
++<U52F7> /x8f/xb3/xfa <CJK>
++<U5300> /x8f/xb3/xfb <CJK>
++<U5303> /x8f/xb3/xfc <CJK>
++<U530A> /x8f/xb3/xfd <CJK>
++<U530B> /x8f/xb3/xfe <CJK>
++<U530C> /x8f/xb4/xa1 <CJK>
++<U5311> /x8f/xb4/xa2 <CJK>
++<U5313> /x8f/xb4/xa3 <CJK>
++<U5318> /x8f/xb4/xa4 <CJK>
++<U531B> /x8f/xb4/xa5 <CJK>
++<U531C> /x8f/xb4/xa6 <CJK>
++<U531E> /x8f/xb4/xa7 <CJK>
++<U531F> /x8f/xb4/xa8 <CJK>
++<U5325> /x8f/xb4/xa9 <CJK>
++<U5327> /x8f/xb4/xaa <CJK>
++<U5328> /x8f/xb4/xab <CJK>
++<U5329> /x8f/xb4/xac <CJK>
++<U532B> /x8f/xb4/xad <CJK>
++<U532C> /x8f/xb4/xae <CJK>
++<U532D> /x8f/xb4/xaf <CJK>
++<U5330> /x8f/xb4/xb0 <CJK>
++<U5332> /x8f/xb4/xb1 <CJK>
++<U5335> /x8f/xb4/xb2 <CJK>
++<U533C> /x8f/xb4/xb3 <CJK>
++<U533D> /x8f/xb4/xb4 <CJK>
++<U533E> /x8f/xb4/xb5 <CJK>
++<U5342> /x8f/xb4/xb6 <CJK>
++<U534C> /x8f/xb4/xb7 <CJK>
++<U534B> /x8f/xb4/xb8 <CJK>
++<U5359> /x8f/xb4/xb9 <CJK>
++<U535B> /x8f/xb4/xba <CJK>
++<U5361> /x8f/xb4/xbb <CJK>
++<U5363> /x8f/xb4/xbc <CJK>
++<U5365> /x8f/xb4/xbd <CJK>
++<U536C> /x8f/xb4/xbe <CJK>
++<U536D> /x8f/xb4/xbf <CJK>
++<U5372> /x8f/xb4/xc0 <CJK>
++<U5379> /x8f/xb4/xc1 <CJK>
++<U537E> /x8f/xb4/xc2 <CJK>
++<U5383> /x8f/xb4/xc3 <CJK>
++<U5387> /x8f/xb4/xc4 <CJK>
++<U5388> /x8f/xb4/xc5 <CJK>
++<U538E> /x8f/xb4/xc6 <CJK>
++<U5393> /x8f/xb4/xc7 <CJK>
++<U5394> /x8f/xb4/xc8 <CJK>
++<U5399> /x8f/xb4/xc9 <CJK>
++<U539D> /x8f/xb4/xca <CJK>
++<U53A1> /x8f/xb4/xcb <CJK>
++<U53A4> /x8f/xb4/xcc <CJK>
++<U53AA> /x8f/xb4/xcd <CJK>
++<U53AB> /x8f/xb4/xce <CJK>
++<U53AF> /x8f/xb4/xcf <CJK>
++<U53B2> /x8f/xb4/xd0 <CJK>
++<U53B4> /x8f/xb4/xd1 <CJK>
++<U53B5> /x8f/xb4/xd2 <CJK>
++<U53B7> /x8f/xb4/xd3 <CJK>
++<U53B8> /x8f/xb4/xd4 <CJK>
++<U53BA> /x8f/xb4/xd5 <CJK>
++<U53BD> /x8f/xb4/xd6 <CJK>
++<U53C0> /x8f/xb4/xd7 <CJK>
++<U53C5> /x8f/xb4/xd8 <CJK>
++<U53CF> /x8f/xb4/xd9 <CJK>
++<U53D2> /x8f/xb4/xda <CJK>
++<U53D3> /x8f/xb4/xdb <CJK>
++<U53D5> /x8f/xb4/xdc <CJK>
++<U53DA> /x8f/xb4/xdd <CJK>
++<U53DD> /x8f/xb4/xde <CJK>
++<U53DE> /x8f/xb4/xdf <CJK>
++<U53E0> /x8f/xb4/xe0 <CJK>
++<U53E6> /x8f/xb4/xe1 <CJK>
++<U53E7> /x8f/xb4/xe2 <CJK>
++<U53F5> /x8f/xb4/xe3 <CJK>
++<U5402> /x8f/xb4/xe4 <CJK>
++<U5413> /x8f/xb4/xe5 <CJK>
++<U541A> /x8f/xb4/xe6 <CJK>
++<U5421> /x8f/xb4/xe7 <CJK>
++<U5427> /x8f/xb4/xe8 <CJK>
++<U5428> /x8f/xb4/xe9 <CJK>
++<U542A> /x8f/xb4/xea <CJK>
++<U542F> /x8f/xb4/xeb <CJK>
++<U5431> /x8f/xb4/xec <CJK>
++<U5434> /x8f/xb4/xed <CJK>
++<U5435> /x8f/xb4/xee <CJK>
++<U5443> /x8f/xb4/xef <CJK>
++<U5444> /x8f/xb4/xf0 <CJK>
++<U5447> /x8f/xb4/xf1 <CJK>
++<U544D> /x8f/xb4/xf2 <CJK>
++<U544F> /x8f/xb4/xf3 <CJK>
++<U545E> /x8f/xb4/xf4 <CJK>
++<U5462> /x8f/xb4/xf5 <CJK>
++<U5464> /x8f/xb4/xf6 <CJK>
++<U5466> /x8f/xb4/xf7 <CJK>
++<U5467> /x8f/xb4/xf8 <CJK>
++<U5469> /x8f/xb4/xf9 <CJK>
++<U546B> /x8f/xb4/xfa <CJK>
++<U546D> /x8f/xb4/xfb <CJK>
++<U546E> /x8f/xb4/xfc <CJK>
++<U5474> /x8f/xb4/xfd <CJK>
++<U547F> /x8f/xb4/xfe <CJK>
++<U5481> /x8f/xb5/xa1 <CJK>
++<U5483> /x8f/xb5/xa2 <CJK>
++<U5485> /x8f/xb5/xa3 <CJK>
++<U5488> /x8f/xb5/xa4 <CJK>
++<U5489> /x8f/xb5/xa5 <CJK>
++<U548D> /x8f/xb5/xa6 <CJK>
++<U5491> /x8f/xb5/xa7 <CJK>
++<U5495> /x8f/xb5/xa8 <CJK>
++<U5496> /x8f/xb5/xa9 <CJK>
++<U549C> /x8f/xb5/xaa <CJK>
++<U549F> /x8f/xb5/xab <CJK>
++<U54A1> /x8f/xb5/xac <CJK>
++<U54A6> /x8f/xb5/xad <CJK>
++<U54A7> /x8f/xb5/xae <CJK>
++<U54A9> /x8f/xb5/xaf <CJK>
++<U54AA> /x8f/xb5/xb0 <CJK>
++<U54AD> /x8f/xb5/xb1 <CJK>
++<U54AE> /x8f/xb5/xb2 <CJK>
++<U54B1> /x8f/xb5/xb3 <CJK>
++<U54B7> /x8f/xb5/xb4 <CJK>
++<U54B9> /x8f/xb5/xb5 <CJK>
++<U54BA> /x8f/xb5/xb6 <CJK>
++<U54BB> /x8f/xb5/xb7 <CJK>
++<U54BF> /x8f/xb5/xb8 <CJK>
++<U54C6> /x8f/xb5/xb9 <CJK>
++<U54CA> /x8f/xb5/xba <CJK>
++<U54CD> /x8f/xb5/xbb <CJK>
++<U54CE> /x8f/xb5/xbc <CJK>
++<U54E0> /x8f/xb5/xbd <CJK>
++<U54EA> /x8f/xb5/xbe <CJK>
++<U54EC> /x8f/xb5/xbf <CJK>
++<U54EF> /x8f/xb5/xc0 <CJK>
++<U54F6> /x8f/xb5/xc1 <CJK>
++<U54FC> /x8f/xb5/xc2 <CJK>
++<U54FE> /x8f/xb5/xc3 <CJK>
++<U54FF> /x8f/xb5/xc4 <CJK>
++<U5500> /x8f/xb5/xc5 <CJK>
++<U5501> /x8f/xb5/xc6 <CJK>
++<U5505> /x8f/xb5/xc7 <CJK>
++<U5508> /x8f/xb5/xc8 <CJK>
++<U5509> /x8f/xb5/xc9 <CJK>
++<U550C> /x8f/xb5/xca <CJK>
++<U550D> /x8f/xb5/xcb <CJK>
++<U550E> /x8f/xb5/xcc <CJK>
++<U5515> /x8f/xb5/xcd <CJK>
++<U552A> /x8f/xb5/xce <CJK>
++<U552B> /x8f/xb5/xcf <CJK>
++<U5532> /x8f/xb5/xd0 <CJK>
++<U5535> /x8f/xb5/xd1 <CJK>
++<U5536> /x8f/xb5/xd2 <CJK>
++<U553B> /x8f/xb5/xd3 <CJK>
++<U553C> /x8f/xb5/xd4 <CJK>
++<U553D> /x8f/xb5/xd5 <CJK>
++<U5541> /x8f/xb5/xd6 <CJK>
++<U5547> /x8f/xb5/xd7 <CJK>
++<U5549> /x8f/xb5/xd8 <CJK>
++<U554A> /x8f/xb5/xd9 <CJK>
++<U554D> /x8f/xb5/xda <CJK>
++<U5550> /x8f/xb5/xdb <CJK>
++<U5551> /x8f/xb5/xdc <CJK>
++<U5558> /x8f/xb5/xdd <CJK>
++<U555A> /x8f/xb5/xde <CJK>
++<U555B> /x8f/xb5/xdf <CJK>
++<U555E> /x8f/xb5/xe0 <CJK>
++<U5560> /x8f/xb5/xe1 <CJK>
++<U5561> /x8f/xb5/xe2 <CJK>
++<U5564> /x8f/xb5/xe3 <CJK>
++<U5566> /x8f/xb5/xe4 <CJK>
++<U557F> /x8f/xb5/xe5 <CJK>
++<U5581> /x8f/xb5/xe6 <CJK>
++<U5582> /x8f/xb5/xe7 <CJK>
++<U5586> /x8f/xb5/xe8 <CJK>
++<U5588> /x8f/xb5/xe9 <CJK>
++<U558E> /x8f/xb5/xea <CJK>
++<U558F> /x8f/xb5/xeb <CJK>
++<U5591> /x8f/xb5/xec <CJK>
++<U5592> /x8f/xb5/xed <CJK>
++<U5593> /x8f/xb5/xee <CJK>
++<U5594> /x8f/xb5/xef <CJK>
++<U5597> /x8f/xb5/xf0 <CJK>
++<U55A3> /x8f/xb5/xf1 <CJK>
++<U55A4> /x8f/xb5/xf2 <CJK>
++<U55AD> /x8f/xb5/xf3 <CJK>
++<U55B2> /x8f/xb5/xf4 <CJK>
++<U55BF> /x8f/xb5/xf5 <CJK>
++<U55C1> /x8f/xb5/xf6 <CJK>
++<U55C3> /x8f/xb5/xf7 <CJK>
++<U55C6> /x8f/xb5/xf8 <CJK>
++<U55C9> /x8f/xb5/xf9 <CJK>
++<U55CB> /x8f/xb5/xfa <CJK>
++<U55CC> /x8f/xb5/xfb <CJK>
++<U55CE> /x8f/xb5/xfc <CJK>
++<U55D1> /x8f/xb5/xfd <CJK>
++<U55D2> /x8f/xb5/xfe <CJK>
++<U55D3> /x8f/xb6/xa1 <CJK>
++<U55D7> /x8f/xb6/xa2 <CJK>
++<U55D8> /x8f/xb6/xa3 <CJK>
++<U55DB> /x8f/xb6/xa4 <CJK>
++<U55DE> /x8f/xb6/xa5 <CJK>
++<U55E2> /x8f/xb6/xa6 <CJK>
++<U55E9> /x8f/xb6/xa7 <CJK>
++<U55F6> /x8f/xb6/xa8 <CJK>
++<U55FF> /x8f/xb6/xa9 <CJK>
++<U5605> /x8f/xb6/xaa <CJK>
++<U5608> /x8f/xb6/xab <CJK>
++<U560A> /x8f/xb6/xac <CJK>
++<U560D> /x8f/xb6/xad <CJK>
++<U560E> /x8f/xb6/xae <CJK>
++<U560F> /x8f/xb6/xaf <CJK>
++<U5610> /x8f/xb6/xb0 <CJK>
++<U5611> /x8f/xb6/xb1 <CJK>
++<U5612> /x8f/xb6/xb2 <CJK>
++<U5619> /x8f/xb6/xb3 <CJK>
++<U562C> /x8f/xb6/xb4 <CJK>
++<U5630> /x8f/xb6/xb5 <CJK>
++<U5633> /x8f/xb6/xb6 <CJK>
++<U5635> /x8f/xb6/xb7 <CJK>
++<U5637> /x8f/xb6/xb8 <CJK>
++<U5639> /x8f/xb6/xb9 <CJK>
++<U563B> /x8f/xb6/xba <CJK>
++<U563C> /x8f/xb6/xbb <CJK>
++<U563D> /x8f/xb6/xbc <CJK>
++<U563F> /x8f/xb6/xbd <CJK>
++<U5640> /x8f/xb6/xbe <CJK>
++<U5641> /x8f/xb6/xbf <CJK>
++<U5643> /x8f/xb6/xc0 <CJK>
++<U5644> /x8f/xb6/xc1 <CJK>
++<U5646> /x8f/xb6/xc2 <CJK>
++<U5649> /x8f/xb6/xc3 <CJK>
++<U564B> /x8f/xb6/xc4 <CJK>
++<U564D> /x8f/xb6/xc5 <CJK>
++<U564F> /x8f/xb6/xc6 <CJK>
++<U5654> /x8f/xb6/xc7 <CJK>
++<U565E> /x8f/xb6/xc8 <CJK>
++<U5660> /x8f/xb6/xc9 <CJK>
++<U5661> /x8f/xb6/xca <CJK>
++<U5662> /x8f/xb6/xcb <CJK>
++<U5663> /x8f/xb6/xcc <CJK>
++<U5666> /x8f/xb6/xcd <CJK>
++<U5669> /x8f/xb6/xce <CJK>
++<U566D> /x8f/xb6/xcf <CJK>
++<U566F> /x8f/xb6/xd0 <CJK>
++<U5671> /x8f/xb6/xd1 <CJK>
++<U5672> /x8f/xb6/xd2 <CJK>
++<U5675> /x8f/xb6/xd3 <CJK>
++<U5684> /x8f/xb6/xd4 <CJK>
++<U5685> /x8f/xb6/xd5 <CJK>
++<U5688> /x8f/xb6/xd6 <CJK>
++<U568B> /x8f/xb6/xd7 <CJK>
++<U568C> /x8f/xb6/xd8 <CJK>
++<U5695> /x8f/xb6/xd9 <CJK>
++<U5699> /x8f/xb6/xda <CJK>
++<U569A> /x8f/xb6/xdb <CJK>
++<U569D> /x8f/xb6/xdc <CJK>
++<U569E> /x8f/xb6/xdd <CJK>
++<U569F> /x8f/xb6/xde <CJK>
++<U56A6> /x8f/xb6/xdf <CJK>
++<U56A7> /x8f/xb6/xe0 <CJK>
++<U56A8> /x8f/xb6/xe1 <CJK>
++<U56A9> /x8f/xb6/xe2 <CJK>
++<U56AB> /x8f/xb6/xe3 <CJK>
++<U56AC> /x8f/xb6/xe4 <CJK>
++<U56AD> /x8f/xb6/xe5 <CJK>
++<U56B1> /x8f/xb6/xe6 <CJK>
++<U56B3> /x8f/xb6/xe7 <CJK>
++<U56B7> /x8f/xb6/xe8 <CJK>
++<U56BE> /x8f/xb6/xe9 <CJK>
++<U56C5> /x8f/xb6/xea <CJK>
++<U56C9> /x8f/xb6/xeb <CJK>
++<U56CA> /x8f/xb6/xec <CJK>
++<U56CB> /x8f/xb6/xed <CJK>
++<U56CF> /x8f/xb6/xee <CJK>
++<U56D0> /x8f/xb6/xef <CJK>
++<U56CC> /x8f/xb6/xf0 <CJK>
++<U56CD> /x8f/xb6/xf1 <CJK>
++<U56D9> /x8f/xb6/xf2 <CJK>
++<U56DC> /x8f/xb6/xf3 <CJK>
++<U56DD> /x8f/xb6/xf4 <CJK>
++<U56DF> /x8f/xb6/xf5 <CJK>
++<U56E1> /x8f/xb6/xf6 <CJK>
++<U56E4> /x8f/xb6/xf7 <CJK>
++<U56E5> /x8f/xb6/xf8 <CJK>
++<U56E6> /x8f/xb6/xf9 <CJK>
++<U56E7> /x8f/xb6/xfa <CJK>
++<U56E8> /x8f/xb6/xfb <CJK>
++<U56F1> /x8f/xb6/xfc <CJK>
++<U56EB> /x8f/xb6/xfd <CJK>
++<U56ED> /x8f/xb6/xfe <CJK>
++<U56F6> /x8f/xb7/xa1 <CJK>
++<U56F7> /x8f/xb7/xa2 <CJK>
++<U5701> /x8f/xb7/xa3 <CJK>
++<U5702> /x8f/xb7/xa4 <CJK>
++<U5707> /x8f/xb7/xa5 <CJK>
++<U570A> /x8f/xb7/xa6 <CJK>
++<U570C> /x8f/xb7/xa7 <CJK>
++<U5711> /x8f/xb7/xa8 <CJK>
++<U5715> /x8f/xb7/xa9 <CJK>
++<U571A> /x8f/xb7/xaa <CJK>
++<U571B> /x8f/xb7/xab <CJK>
++<U571D> /x8f/xb7/xac <CJK>
++<U5720> /x8f/xb7/xad <CJK>
++<U5722> /x8f/xb7/xae <CJK>
++<U5723> /x8f/xb7/xaf <CJK>
++<U5724> /x8f/xb7/xb0 <CJK>
++<U5725> /x8f/xb7/xb1 <CJK>
++<U5729> /x8f/xb7/xb2 <CJK>
++<U572A> /x8f/xb7/xb3 <CJK>
++<U572C> /x8f/xb7/xb4 <CJK>
++<U572E> /x8f/xb7/xb5 <CJK>
++<U572F> /x8f/xb7/xb6 <CJK>
++<U5733> /x8f/xb7/xb7 <CJK>
++<U5734> /x8f/xb7/xb8 <CJK>
++<U573D> /x8f/xb7/xb9 <CJK>
++<U573E> /x8f/xb7/xba <CJK>
++<U573F> /x8f/xb7/xbb <CJK>
++<U5745> /x8f/xb7/xbc <CJK>
++<U5746> /x8f/xb7/xbd <CJK>
++<U574C> /x8f/xb7/xbe <CJK>
++<U574D> /x8f/xb7/xbf <CJK>
++<U5752> /x8f/xb7/xc0 <CJK>
++<U5762> /x8f/xb7/xc1 <CJK>
++<U5765> /x8f/xb7/xc2 <CJK>
++<U5767> /x8f/xb7/xc3 <CJK>
++<U5768> /x8f/xb7/xc4 <CJK>
++<U576B> /x8f/xb7/xc5 <CJK>
++<U576D> /x8f/xb7/xc6 <CJK>
++<U576E> /x8f/xb7/xc7 <CJK>
++<U576F> /x8f/xb7/xc8 <CJK>
++<U5770> /x8f/xb7/xc9 <CJK>
++<U5771> /x8f/xb7/xca <CJK>
++<U5773> /x8f/xb7/xcb <CJK>
++<U5774> /x8f/xb7/xcc <CJK>
++<U5775> /x8f/xb7/xcd <CJK>
++<U5777> /x8f/xb7/xce <CJK>
++<U5779> /x8f/xb7/xcf <CJK>
++<U577A> /x8f/xb7/xd0 <CJK>
++<U577B> /x8f/xb7/xd1 <CJK>
++<U577C> /x8f/xb7/xd2 <CJK>
++<U577E> /x8f/xb7/xd3 <CJK>
++<U5781> /x8f/xb7/xd4 <CJK>
++<U5783> /x8f/xb7/xd5 <CJK>
++<U578C> /x8f/xb7/xd6 <CJK>
++<U5794> /x8f/xb7/xd7 <CJK>
++<U5797> /x8f/xb7/xd8 <CJK>
++<U5799> /x8f/xb7/xd9 <CJK>
++<U579A> /x8f/xb7/xda <CJK>
++<U579C> /x8f/xb7/xdb <CJK>
++<U579D> /x8f/xb7/xdc <CJK>
++<U579E> /x8f/xb7/xdd <CJK>
++<U579F> /x8f/xb7/xde <CJK>
++<U57A1> /x8f/xb7/xdf <CJK>
++<U5795> /x8f/xb7/xe0 <CJK>
++<U57A7> /x8f/xb7/xe1 <CJK>
++<U57A8> /x8f/xb7/xe2 <CJK>
++<U57A9> /x8f/xb7/xe3 <CJK>
++<U57AC> /x8f/xb7/xe4 <CJK>
++<U57B8> /x8f/xb7/xe5 <CJK>
++<U57BD> /x8f/xb7/xe6 <CJK>
++<U57C7> /x8f/xb7/xe7 <CJK>
++<U57C8> /x8f/xb7/xe8 <CJK>
++<U57CC> /x8f/xb7/xe9 <CJK>
++<U57CF> /x8f/xb7/xea <CJK>
++<U57D5> /x8f/xb7/xeb <CJK>
++<U57DD> /x8f/xb7/xec <CJK>
++<U57DE> /x8f/xb7/xed <CJK>
++<U57E4> /x8f/xb7/xee <CJK>
++<U57E6> /x8f/xb7/xef <CJK>
++<U57E7> /x8f/xb7/xf0 <CJK>
++<U57E9> /x8f/xb7/xf1 <CJK>
++<U57ED> /x8f/xb7/xf2 <CJK>
++<U57F0> /x8f/xb7/xf3 <CJK>
++<U57F5> /x8f/xb7/xf4 <CJK>
++<U57F6> /x8f/xb7/xf5 <CJK>
++<U57F8> /x8f/xb7/xf6 <CJK>
++<U57FD> /x8f/xb7/xf7 <CJK>
++<U57FE> /x8f/xb7/xf8 <CJK>
++<U57FF> /x8f/xb7/xf9 <CJK>
++<U5803> /x8f/xb7/xfa <CJK>
++<U5804> /x8f/xb7/xfb <CJK>
++<U5808> /x8f/xb7/xfc <CJK>
++<U5809> /x8f/xb7/xfd <CJK>
++<U57E1> /x8f/xb7/xfe <CJK>
++<U580C> /x8f/xb8/xa1 <CJK>
++<U580D> /x8f/xb8/xa2 <CJK>
++<U581B> /x8f/xb8/xa3 <CJK>
++<U581E> /x8f/xb8/xa4 <CJK>
++<U581F> /x8f/xb8/xa5 <CJK>
++<U5820> /x8f/xb8/xa6 <CJK>
++<U5826> /x8f/xb8/xa7 <CJK>
++<U5827> /x8f/xb8/xa8 <CJK>
++<U582D> /x8f/xb8/xa9 <CJK>
++<U5832> /x8f/xb8/xaa <CJK>
++<U5839> /x8f/xb8/xab <CJK>
++<U583F> /x8f/xb8/xac <CJK>
++<U5849> /x8f/xb8/xad <CJK>
++<U584C> /x8f/xb8/xae <CJK>
++<U584D> /x8f/xb8/xaf <CJK>
++<U584F> /x8f/xb8/xb0 <CJK>
++<U5850> /x8f/xb8/xb1 <CJK>
++<U5855> /x8f/xb8/xb2 <CJK>
++<U585F> /x8f/xb8/xb3 <CJK>
++<U5861> /x8f/xb8/xb4 <CJK>
++<U5864> /x8f/xb8/xb5 <CJK>
++<U5867> /x8f/xb8/xb6 <CJK>
++<U5868> /x8f/xb8/xb7 <CJK>
++<U5878> /x8f/xb8/xb8 <CJK>
++<U587C> /x8f/xb8/xb9 <CJK>
++<U587F> /x8f/xb8/xba <CJK>
++<U5880> /x8f/xb8/xbb <CJK>
++<U5881> /x8f/xb8/xbc <CJK>
++<U5887> /x8f/xb8/xbd <CJK>
++<U5888> /x8f/xb8/xbe <CJK>
++<U5889> /x8f/xb8/xbf <CJK>
++<U588A> /x8f/xb8/xc0 <CJK>
++<U588C> /x8f/xb8/xc1 <CJK>
++<U588D> /x8f/xb8/xc2 <CJK>
++<U588F> /x8f/xb8/xc3 <CJK>
++<U5890> /x8f/xb8/xc4 <CJK>
++<U5894> /x8f/xb8/xc5 <CJK>
++<U5896> /x8f/xb8/xc6 <CJK>
++<U589D> /x8f/xb8/xc7 <CJK>
++<U58A0> /x8f/xb8/xc8 <CJK>
++<U58A1> /x8f/xb8/xc9 <CJK>
++<U58A2> /x8f/xb8/xca <CJK>
++<U58A6> /x8f/xb8/xcb <CJK>
++<U58A9> /x8f/xb8/xcc <CJK>
++<U58B1> /x8f/xb8/xcd <CJK>
++<U58B2> /x8f/xb8/xce <CJK>
++<U58C4> /x8f/xb8/xcf <CJK>
++<U58BC> /x8f/xb8/xd0 <CJK>
++<U58C2> /x8f/xb8/xd1 <CJK>
++<U58C8> /x8f/xb8/xd2 <CJK>
++<U58CD> /x8f/xb8/xd3 <CJK>
++<U58CE> /x8f/xb8/xd4 <CJK>
++<U58D0> /x8f/xb8/xd5 <CJK>
++<U58D2> /x8f/xb8/xd6 <CJK>
++<U58D4> /x8f/xb8/xd7 <CJK>
++<U58D6> /x8f/xb8/xd8 <CJK>
++<U58DA> /x8f/xb8/xd9 <CJK>
++<U58DD> /x8f/xb8/xda <CJK>
++<U58E1> /x8f/xb8/xdb <CJK>
++<U58E2> /x8f/xb8/xdc <CJK>
++<U58E9> /x8f/xb8/xdd <CJK>
++<U58F3> /x8f/xb8/xde <CJK>
++<U5905> /x8f/xb8/xdf <CJK>
++<U5906> /x8f/xb8/xe0 <CJK>
++<U590B> /x8f/xb8/xe1 <CJK>
++<U590C> /x8f/xb8/xe2 <CJK>
++<U5912> /x8f/xb8/xe3 <CJK>
++<U5913> /x8f/xb8/xe4 <CJK>
++<U5914> /x8f/xb8/xe5 <CJK>
++<U8641> /x8f/xb8/xe6 <CJK>
++<U591D> /x8f/xb8/xe7 <CJK>
++<U5921> /x8f/xb8/xe8 <CJK>
++<U5923> /x8f/xb8/xe9 <CJK>
++<U5924> /x8f/xb8/xea <CJK>
++<U5928> /x8f/xb8/xeb <CJK>
++<U592F> /x8f/xb8/xec <CJK>
++<U5930> /x8f/xb8/xed <CJK>
++<U5933> /x8f/xb8/xee <CJK>
++<U5935> /x8f/xb8/xef <CJK>
++<U5936> /x8f/xb8/xf0 <CJK>
++<U593F> /x8f/xb8/xf1 <CJK>
++<U5943> /x8f/xb8/xf2 <CJK>
++<U5946> /x8f/xb8/xf3 <CJK>
++<U5952> /x8f/xb8/xf4 <CJK>
++<U5953> /x8f/xb8/xf5 <CJK>
++<U5959> /x8f/xb8/xf6 <CJK>
++<U595B> /x8f/xb8/xf7 <CJK>
++<U595D> /x8f/xb8/xf8 <CJK>
++<U595E> /x8f/xb8/xf9 <CJK>
++<U595F> /x8f/xb8/xfa <CJK>
++<U5961> /x8f/xb8/xfb <CJK>
++<U5963> /x8f/xb8/xfc <CJK>
++<U596B> /x8f/xb8/xfd <CJK>
++<U596D> /x8f/xb8/xfe <CJK>
++<U596F> /x8f/xb9/xa1 <CJK>
++<U5972> /x8f/xb9/xa2 <CJK>
++<U5975> /x8f/xb9/xa3 <CJK>
++<U5976> /x8f/xb9/xa4 <CJK>
++<U5979> /x8f/xb9/xa5 <CJK>
++<U597B> /x8f/xb9/xa6 <CJK>
++<U597C> /x8f/xb9/xa7 <CJK>
++<U598B> /x8f/xb9/xa8 <CJK>
++<U598C> /x8f/xb9/xa9 <CJK>
++<U598E> /x8f/xb9/xaa <CJK>
++<U5992> /x8f/xb9/xab <CJK>
++<U5995> /x8f/xb9/xac <CJK>
++<U5997> /x8f/xb9/xad <CJK>
++<U599F> /x8f/xb9/xae <CJK>
++<U59A4> /x8f/xb9/xaf <CJK>
++<U59A7> /x8f/xb9/xb0 <CJK>
++<U59AD> /x8f/xb9/xb1 <CJK>
++<U59AE> /x8f/xb9/xb2 <CJK>
++<U59AF> /x8f/xb9/xb3 <CJK>
++<U59B0> /x8f/xb9/xb4 <CJK>
++<U59B3> /x8f/xb9/xb5 <CJK>
++<U59B7> /x8f/xb9/xb6 <CJK>
++<U59BA> /x8f/xb9/xb7 <CJK>
++<U59BC> /x8f/xb9/xb8 <CJK>
++<U59C1> /x8f/xb9/xb9 <CJK>
++<U59C3> /x8f/xb9/xba <CJK>
++<U59C4> /x8f/xb9/xbb <CJK>
++<U59C8> /x8f/xb9/xbc <CJK>
++<U59CA> /x8f/xb9/xbd <CJK>
++<U59CD> /x8f/xb9/xbe <CJK>
++<U59D2> /x8f/xb9/xbf <CJK>
++<U59DD> /x8f/xb9/xc0 <CJK>
++<U59DE> /x8f/xb9/xc1 <CJK>
++<U59DF> /x8f/xb9/xc2 <CJK>
++<U59E3> /x8f/xb9/xc3 <CJK>
++<U59E4> /x8f/xb9/xc4 <CJK>
++<U59E7> /x8f/xb9/xc5 <CJK>
++<U59EE> /x8f/xb9/xc6 <CJK>
++<U59EF> /x8f/xb9/xc7 <CJK>
++<U59F1> /x8f/xb9/xc8 <CJK>
++<U59F2> /x8f/xb9/xc9 <CJK>
++<U59F4> /x8f/xb9/xca <CJK>
++<U59F7> /x8f/xb9/xcb <CJK>
++<U5A00> /x8f/xb9/xcc <CJK>
++<U5A04> /x8f/xb9/xcd <CJK>
++<U5A0C> /x8f/xb9/xce <CJK>
++<U5A0D> /x8f/xb9/xcf <CJK>
++<U5A0E> /x8f/xb9/xd0 <CJK>
++<U5A12> /x8f/xb9/xd1 <CJK>
++<U5A13> /x8f/xb9/xd2 <CJK>
++<U5A1E> /x8f/xb9/xd3 <CJK>
++<U5A23> /x8f/xb9/xd4 <CJK>
++<U5A24> /x8f/xb9/xd5 <CJK>
++<U5A27> /x8f/xb9/xd6 <CJK>
++<U5A28> /x8f/xb9/xd7 <CJK>
++<U5A2A> /x8f/xb9/xd8 <CJK>
++<U5A2D> /x8f/xb9/xd9 <CJK>
++<U5A30> /x8f/xb9/xda <CJK>
++<U5A44> /x8f/xb9/xdb <CJK>
++<U5A45> /x8f/xb9/xdc <CJK>
++<U5A47> /x8f/xb9/xdd <CJK>
++<U5A48> /x8f/xb9/xde <CJK>
++<U5A4C> /x8f/xb9/xdf <CJK>
++<U5A50> /x8f/xb9/xe0 <CJK>
++<U5A55> /x8f/xb9/xe1 <CJK>
++<U5A5E> /x8f/xb9/xe2 <CJK>
++<U5A63> /x8f/xb9/xe3 <CJK>
++<U5A65> /x8f/xb9/xe4 <CJK>
++<U5A67> /x8f/xb9/xe5 <CJK>
++<U5A6D> /x8f/xb9/xe6 <CJK>
++<U5A77> /x8f/xb9/xe7 <CJK>
++<U5A7A> /x8f/xb9/xe8 <CJK>
++<U5A7B> /x8f/xb9/xe9 <CJK>
++<U5A7E> /x8f/xb9/xea <CJK>
++<U5A8B> /x8f/xb9/xeb <CJK>
++<U5A90> /x8f/xb9/xec <CJK>
++<U5A93> /x8f/xb9/xed <CJK>
++<U5A96> /x8f/xb9/xee <CJK>
++<U5A99> /x8f/xb9/xef <CJK>
++<U5A9C> /x8f/xb9/xf0 <CJK>
++<U5A9E> /x8f/xb9/xf1 <CJK>
++<U5A9F> /x8f/xb9/xf2 <CJK>
++<U5AA0> /x8f/xb9/xf3 <CJK>
++<U5AA2> /x8f/xb9/xf4 <CJK>
++<U5AA7> /x8f/xb9/xf5 <CJK>
++<U5AAC> /x8f/xb9/xf6 <CJK>
++<U5AB1> /x8f/xb9/xf7 <CJK>
++<U5AB2> /x8f/xb9/xf8 <CJK>
++<U5AB3> /x8f/xb9/xf9 <CJK>
++<U5AB5> /x8f/xb9/xfa <CJK>
++<U5AB8> /x8f/xb9/xfb <CJK>
++<U5ABA> /x8f/xb9/xfc <CJK>
++<U5ABB> /x8f/xb9/xfd <CJK>
++<U5ABF> /x8f/xb9/xfe <CJK>
++<U5AC4> /x8f/xba/xa1 <CJK>
++<U5AC6> /x8f/xba/xa2 <CJK>
++<U5AC8> /x8f/xba/xa3 <CJK>
++<U5ACF> /x8f/xba/xa4 <CJK>
++<U5ADA> /x8f/xba/xa5 <CJK>
++<U5ADC> /x8f/xba/xa6 <CJK>
++<U5AE0> /x8f/xba/xa7 <CJK>
++<U5AE5> /x8f/xba/xa8 <CJK>
++<U5AEA> /x8f/xba/xa9 <CJK>
++<U5AEE> /x8f/xba/xaa <CJK>
++<U5AF5> /x8f/xba/xab <CJK>
++<U5AF6> /x8f/xba/xac <CJK>
++<U5AFD> /x8f/xba/xad <CJK>
++<U5B00> /x8f/xba/xae <CJK>
++<U5B01> /x8f/xba/xaf <CJK>
++<U5B08> /x8f/xba/xb0 <CJK>
++<U5B17> /x8f/xba/xb1 <CJK>
++<U5B34> /x8f/xba/xb2 <CJK>
++<U5B19> /x8f/xba/xb3 <CJK>
++<U5B1B> /x8f/xba/xb4 <CJK>
++<U5B1D> /x8f/xba/xb5 <CJK>
++<U5B21> /x8f/xba/xb6 <CJK>
++<U5B25> /x8f/xba/xb7 <CJK>
++<U5B2D> /x8f/xba/xb8 <CJK>
++<U5B38> /x8f/xba/xb9 <CJK>
++<U5B41> /x8f/xba/xba <CJK>
++<U5B4B> /x8f/xba/xbb <CJK>
++<U5B4C> /x8f/xba/xbc <CJK>
++<U5B52> /x8f/xba/xbd <CJK>
++<U5B56> /x8f/xba/xbe <CJK>
++<U5B5E> /x8f/xba/xbf <CJK>
++<U5B68> /x8f/xba/xc0 <CJK>
++<U5B6E> /x8f/xba/xc1 <CJK>
++<U5B6F> /x8f/xba/xc2 <CJK>
++<U5B7C> /x8f/xba/xc3 <CJK>
++<U5B7D> /x8f/xba/xc4 <CJK>
++<U5B7E> /x8f/xba/xc5 <CJK>
++<U5B7F> /x8f/xba/xc6 <CJK>
++<U5B81> /x8f/xba/xc7 <CJK>
++<U5B84> /x8f/xba/xc8 <CJK>
++<U5B86> /x8f/xba/xc9 <CJK>
++<U5B8A> /x8f/xba/xca <CJK>
++<U5B8E> /x8f/xba/xcb <CJK>
++<U5B90> /x8f/xba/xcc <CJK>
++<U5B91> /x8f/xba/xcd <CJK>
++<U5B93> /x8f/xba/xce <CJK>
++<U5B94> /x8f/xba/xcf <CJK>
++<U5B96> /x8f/xba/xd0 <CJK>
++<U5BA8> /x8f/xba/xd1 <CJK>
++<U5BA9> /x8f/xba/xd2 <CJK>
++<U5BAC> /x8f/xba/xd3 <CJK>
++<U5BAD> /x8f/xba/xd4 <CJK>
++<U5BAF> /x8f/xba/xd5 <CJK>
++<U5BB1> /x8f/xba/xd6 <CJK>
++<U5BB2> /x8f/xba/xd7 <CJK>
++<U5BB7> /x8f/xba/xd8 <CJK>
++<U5BBA> /x8f/xba/xd9 <CJK>
++<U5BBC> /x8f/xba/xda <CJK>
++<U5BC0> /x8f/xba/xdb <CJK>
++<U5BC1> /x8f/xba/xdc <CJK>
++<U5BCD> /x8f/xba/xdd <CJK>
++<U5BCF> /x8f/xba/xde <CJK>
++<U5BD6> /x8f/xba/xdf <CJK>
++<U5BD7> /x8f/xba/xe0 <CJK>
++<U5BD8> /x8f/xba/xe1 <CJK>
++<U5BD9> /x8f/xba/xe2 <CJK>
++<U5BDA> /x8f/xba/xe3 <CJK>
++<U5BE0> /x8f/xba/xe4 <CJK>
++<U5BEF> /x8f/xba/xe5 <CJK>
++<U5BF1> /x8f/xba/xe6 <CJK>
++<U5BF4> /x8f/xba/xe7 <CJK>
++<U5BFD> /x8f/xba/xe8 <CJK>
++<U5C0C> /x8f/xba/xe9 <CJK>
++<U5C17> /x8f/xba/xea <CJK>
++<U5C1E> /x8f/xba/xeb <CJK>
++<U5C1F> /x8f/xba/xec <CJK>
++<U5C23> /x8f/xba/xed <CJK>
++<U5C26> /x8f/xba/xee <CJK>
++<U5C29> /x8f/xba/xef <CJK>
++<U5C2B> /x8f/xba/xf0 <CJK>
++<U5C2C> /x8f/xba/xf1 <CJK>
++<U5C2E> /x8f/xba/xf2 <CJK>
++<U5C30> /x8f/xba/xf3 <CJK>
++<U5C32> /x8f/xba/xf4 <CJK>
++<U5C35> /x8f/xba/xf5 <CJK>
++<U5C36> /x8f/xba/xf6 <CJK>
++<U5C59> /x8f/xba/xf7 <CJK>
++<U5C5A> /x8f/xba/xf8 <CJK>
++<U5C5C> /x8f/xba/xf9 <CJK>
++<U5C62> /x8f/xba/xfa <CJK>
++<U5C63> /x8f/xba/xfb <CJK>
++<U5C67> /x8f/xba/xfc <CJK>
++<U5C68> /x8f/xba/xfd <CJK>
++<U5C69> /x8f/xba/xfe <CJK>
++<U5C6D> /x8f/xbb/xa1 <CJK>
++<U5C70> /x8f/xbb/xa2 <CJK>
++<U5C74> /x8f/xbb/xa3 <CJK>
++<U5C75> /x8f/xbb/xa4 <CJK>
++<U5C7A> /x8f/xbb/xa5 <CJK>
++<U5C7B> /x8f/xbb/xa6 <CJK>
++<U5C7C> /x8f/xbb/xa7 <CJK>
++<U5C7D> /x8f/xbb/xa8 <CJK>
++<U5C87> /x8f/xbb/xa9 <CJK>
++<U5C88> /x8f/xbb/xaa <CJK>
++<U5C8A> /x8f/xbb/xab <CJK>
++<U5C8F> /x8f/xbb/xac <CJK>
++<U5C92> /x8f/xbb/xad <CJK>
++<U5C9D> /x8f/xbb/xae <CJK>
++<U5C9F> /x8f/xbb/xaf <CJK>
++<U5CA0> /x8f/xbb/xb0 <CJK>
++<U5CA2> /x8f/xbb/xb1 <CJK>
++<U5CA3> /x8f/xbb/xb2 <CJK>
++<U5CA6> /x8f/xbb/xb3 <CJK>
++<U5CAA> /x8f/xbb/xb4 <CJK>
++<U5CB2> /x8f/xbb/xb5 <CJK>
++<U5CB4> /x8f/xbb/xb6 <CJK>
++<U5CB5> /x8f/xbb/xb7 <CJK>
++<U5CBA> /x8f/xbb/xb8 <CJK>
++<U5CC9> /x8f/xbb/xb9 <CJK>
++<U5CCB> /x8f/xbb/xba <CJK>
++<U5CD2> /x8f/xbb/xbb <CJK>
++<U5CDD> /x8f/xbb/xbc <CJK>
++<U5CD7> /x8f/xbb/xbd <CJK>
++<U5CEE> /x8f/xbb/xbe <CJK>
++<U5CF1> /x8f/xbb/xbf <CJK>
++<U5CF2> /x8f/xbb/xc0 <CJK>
++<U5CF4> /x8f/xbb/xc1 <CJK>
++<U5D01> /x8f/xbb/xc2 <CJK>
++<U5D06> /x8f/xbb/xc3 <CJK>
++<U5D0D> /x8f/xbb/xc4 <CJK>
++<U5D12> /x8f/xbb/xc5 <CJK>
++<U5D2B> /x8f/xbb/xc6 <CJK>
++<U5D23> /x8f/xbb/xc7 <CJK>
++<U5D24> /x8f/xbb/xc8 <CJK>
++<U5D26> /x8f/xbb/xc9 <CJK>
++<U5D27> /x8f/xbb/xca <CJK>
++<U5D31> /x8f/xbb/xcb <CJK>
++<U5D34> /x8f/xbb/xcc <CJK>
++<U5D39> /x8f/xbb/xcd <CJK>
++<U5D3D> /x8f/xbb/xce <CJK>
++<U5D3F> /x8f/xbb/xcf <CJK>
++<U5D42> /x8f/xbb/xd0 <CJK>
++<U5D43> /x8f/xbb/xd1 <CJK>
++<U5D46> /x8f/xbb/xd2 <CJK>
++<U5D48> /x8f/xbb/xd3 <CJK>
++<U5D55> /x8f/xbb/xd4 <CJK>
++<U5D51> /x8f/xbb/xd5 <CJK>
++<U5D59> /x8f/xbb/xd6 <CJK>
++<U5D4A> /x8f/xbb/xd7 <CJK>
++<U5D5F> /x8f/xbb/xd8 <CJK>
++<U5D60> /x8f/xbb/xd9 <CJK>
++<U5D61> /x8f/xbb/xda <CJK>
++<U5D62> /x8f/xbb/xdb <CJK>
++<U5D64> /x8f/xbb/xdc <CJK>
++<U5D6A> /x8f/xbb/xdd <CJK>
++<U5D6D> /x8f/xbb/xde <CJK>
++<U5D70> /x8f/xbb/xdf <CJK>
++<U5D79> /x8f/xbb/xe0 <CJK>
++<U5D7A> /x8f/xbb/xe1 <CJK>
++<U5D7E> /x8f/xbb/xe2 <CJK>
++<U5D7F> /x8f/xbb/xe3 <CJK>
++<U5D81> /x8f/xbb/xe4 <CJK>
++<U5D83> /x8f/xbb/xe5 <CJK>
++<U5D88> /x8f/xbb/xe6 <CJK>
++<U5D8A> /x8f/xbb/xe7 <CJK>
++<U5D92> /x8f/xbb/xe8 <CJK>
++<U5D93> /x8f/xbb/xe9 <CJK>
++<U5D94> /x8f/xbb/xea <CJK>
++<U5D95> /x8f/xbb/xeb <CJK>
++<U5D99> /x8f/xbb/xec <CJK>
++<U5D9B> /x8f/xbb/xed <CJK>
++<U5D9F> /x8f/xbb/xee <CJK>
++<U5DA0> /x8f/xbb/xef <CJK>
++<U5DA7> /x8f/xbb/xf0 <CJK>
++<U5DAB> /x8f/xbb/xf1 <CJK>
++<U5DB0> /x8f/xbb/xf2 <CJK>
++<U5DB4> /x8f/xbb/xf3 <CJK>
++<U5DB8> /x8f/xbb/xf4 <CJK>
++<U5DB9> /x8f/xbb/xf5 <CJK>
++<U5DC3> /x8f/xbb/xf6 <CJK>
++<U5DC7> /x8f/xbb/xf7 <CJK>
++<U5DCB> /x8f/xbb/xf8 <CJK>
++<U5DD0> /x8f/xbb/xf9 <CJK>
++<U5DCE> /x8f/xbb/xfa <CJK>
++<U5DD8> /x8f/xbb/xfb <CJK>
++<U5DD9> /x8f/xbb/xfc <CJK>
++<U5DE0> /x8f/xbb/xfd <CJK>
++<U5DE4> /x8f/xbb/xfe <CJK>
++<U5DE9> /x8f/xbc/xa1 <CJK>
++<U5DF8> /x8f/xbc/xa2 <CJK>
++<U5DF9> /x8f/xbc/xa3 <CJK>
++<U5E00> /x8f/xbc/xa4 <CJK>
++<U5E07> /x8f/xbc/xa5 <CJK>
++<U5E0D> /x8f/xbc/xa6 <CJK>
++<U5E12> /x8f/xbc/xa7 <CJK>
++<U5E14> /x8f/xbc/xa8 <CJK>
++<U5E15> /x8f/xbc/xa9 <CJK>
++<U5E18> /x8f/xbc/xaa <CJK>
++<U5E1F> /x8f/xbc/xab <CJK>
++<U5E20> /x8f/xbc/xac <CJK>
++<U5E2E> /x8f/xbc/xad <CJK>
++<U5E28> /x8f/xbc/xae <CJK>
++<U5E32> /x8f/xbc/xaf <CJK>
++<U5E35> /x8f/xbc/xb0 <CJK>
++<U5E3E> /x8f/xbc/xb1 <CJK>
++<U5E4B> /x8f/xbc/xb2 <CJK>
++<U5E50> /x8f/xbc/xb3 <CJK>
++<U5E49> /x8f/xbc/xb4 <CJK>
++<U5E51> /x8f/xbc/xb5 <CJK>
++<U5E56> /x8f/xbc/xb6 <CJK>
++<U5E58> /x8f/xbc/xb7 <CJK>
++<U5E5B> /x8f/xbc/xb8 <CJK>
++<U5E5C> /x8f/xbc/xb9 <CJK>
++<U5E5E> /x8f/xbc/xba <CJK>
++<U5E68> /x8f/xbc/xbb <CJK>
++<U5E6A> /x8f/xbc/xbc <CJK>
++<U5E6B> /x8f/xbc/xbd <CJK>
++<U5E6C> /x8f/xbc/xbe <CJK>
++<U5E6D> /x8f/xbc/xbf <CJK>
++<U5E6E> /x8f/xbc/xc0 <CJK>
++<U5E70> /x8f/xbc/xc1 <CJK>
++<U5E80> /x8f/xbc/xc2 <CJK>
++<U5E8B> /x8f/xbc/xc3 <CJK>
++<U5E8E> /x8f/xbc/xc4 <CJK>
++<U5EA2> /x8f/xbc/xc5 <CJK>
++<U5EA4> /x8f/xbc/xc6 <CJK>
++<U5EA5> /x8f/xbc/xc7 <CJK>
++<U5EA8> /x8f/xbc/xc8 <CJK>
++<U5EAA> /x8f/xbc/xc9 <CJK>
++<U5EAC> /x8f/xbc/xca <CJK>
++<U5EB1> /x8f/xbc/xcb <CJK>
++<U5EB3> /x8f/xbc/xcc <CJK>
++<U5EBD> /x8f/xbc/xcd <CJK>
++<U5EBE> /x8f/xbc/xce <CJK>
++<U5EBF> /x8f/xbc/xcf <CJK>
++<U5EC6> /x8f/xbc/xd0 <CJK>
++<U5ECC> /x8f/xbc/xd1 <CJK>
++<U5ECB> /x8f/xbc/xd2 <CJK>
++<U5ECE> /x8f/xbc/xd3 <CJK>
++<U5ED1> /x8f/xbc/xd4 <CJK>
++<U5ED2> /x8f/xbc/xd5 <CJK>
++<U5ED4> /x8f/xbc/xd6 <CJK>
++<U5ED5> /x8f/xbc/xd7 <CJK>
++<U5EDC> /x8f/xbc/xd8 <CJK>
++<U5EDE> /x8f/xbc/xd9 <CJK>
++<U5EE5> /x8f/xbc/xda <CJK>
++<U5EEB> /x8f/xbc/xdb <CJK>
++<U5F02> /x8f/xbc/xdc <CJK>
++<U5F06> /x8f/xbc/xdd <CJK>
++<U5F07> /x8f/xbc/xde <CJK>
++<U5F08> /x8f/xbc/xdf <CJK>
++<U5F0E> /x8f/xbc/xe0 <CJK>
++<U5F19> /x8f/xbc/xe1 <CJK>
++<U5F1C> /x8f/xbc/xe2 <CJK>
++<U5F1D> /x8f/xbc/xe3 <CJK>
++<U5F21> /x8f/xbc/xe4 <CJK>
++<U5F22> /x8f/xbc/xe5 <CJK>
++<U5F23> /x8f/xbc/xe6 <CJK>
++<U5F24> /x8f/xbc/xe7 <CJK>
++<U5F28> /x8f/xbc/xe8 <CJK>
++<U5F2B> /x8f/xbc/xe9 <CJK>
++<U5F2C> /x8f/xbc/xea <CJK>
++<U5F2E> /x8f/xbc/xeb <CJK>
++<U5F30> /x8f/xbc/xec <CJK>
++<U5F34> /x8f/xbc/xed <CJK>
++<U5F36> /x8f/xbc/xee <CJK>
++<U5F3B> /x8f/xbc/xef <CJK>
++<U5F3D> /x8f/xbc/xf0 <CJK>
++<U5F3F> /x8f/xbc/xf1 <CJK>
++<U5F40> /x8f/xbc/xf2 <CJK>
++<U5F44> /x8f/xbc/xf3 <CJK>
++<U5F45> /x8f/xbc/xf4 <CJK>
++<U5F47> /x8f/xbc/xf5 <CJK>
++<U5F4D> /x8f/xbc/xf6 <CJK>
++<U5F50> /x8f/xbc/xf7 <CJK>
++<U5F54> /x8f/xbc/xf8 <CJK>
++<U5F58> /x8f/xbc/xf9 <CJK>
++<U5F5B> /x8f/xbc/xfa <CJK>
++<U5F60> /x8f/xbc/xfb <CJK>
++<U5F63> /x8f/xbc/xfc <CJK>
++<U5F64> /x8f/xbc/xfd <CJK>
++<U5F67> /x8f/xbc/xfe <CJK>
++<U5F6F> /x8f/xbd/xa1 <CJK>
++<U5F72> /x8f/xbd/xa2 <CJK>
++<U5F74> /x8f/xbd/xa3 <CJK>
++<U5F75> /x8f/xbd/xa4 <CJK>
++<U5F78> /x8f/xbd/xa5 <CJK>
++<U5F7A> /x8f/xbd/xa6 <CJK>
++<U5F7D> /x8f/xbd/xa7 <CJK>
++<U5F7E> /x8f/xbd/xa8 <CJK>
++<U5F89> /x8f/xbd/xa9 <CJK>
++<U5F8D> /x8f/xbd/xaa <CJK>
++<U5F8F> /x8f/xbd/xab <CJK>
++<U5F96> /x8f/xbd/xac <CJK>
++<U5F9C> /x8f/xbd/xad <CJK>
++<U5F9D> /x8f/xbd/xae <CJK>
++<U5FA2> /x8f/xbd/xaf <CJK>
++<U5FA7> /x8f/xbd/xb0 <CJK>
++<U5FAB> /x8f/xbd/xb1 <CJK>
++<U5FA4> /x8f/xbd/xb2 <CJK>
++<U5FAC> /x8f/xbd/xb3 <CJK>
++<U5FAF> /x8f/xbd/xb4 <CJK>
++<U5FB0> /x8f/xbd/xb5 <CJK>
++<U5FB1> /x8f/xbd/xb6 <CJK>
++<U5FB8> /x8f/xbd/xb7 <CJK>
++<U5FC4> /x8f/xbd/xb8 <CJK>
++<U5FC7> /x8f/xbd/xb9 <CJK>
++<U5FC8> /x8f/xbd/xba <CJK>
++<U5FC9> /x8f/xbd/xbb <CJK>
++<U5FCB> /x8f/xbd/xbc <CJK>
++<U5FD0> /x8f/xbd/xbd <CJK>
++<U5FD1> /x8f/xbd/xbe <CJK>
++<U5FD2> /x8f/xbd/xbf <CJK>
++<U5FD3> /x8f/xbd/xc0 <CJK>
++<U5FD4> /x8f/xbd/xc1 <CJK>
++<U5FDE> /x8f/xbd/xc2 <CJK>
++<U5FE1> /x8f/xbd/xc3 <CJK>
++<U5FE2> /x8f/xbd/xc4 <CJK>
++<U5FE8> /x8f/xbd/xc5 <CJK>
++<U5FE9> /x8f/xbd/xc6 <CJK>
++<U5FEA> /x8f/xbd/xc7 <CJK>
++<U5FEC> /x8f/xbd/xc8 <CJK>
++<U5FED> /x8f/xbd/xc9 <CJK>
++<U5FEE> /x8f/xbd/xca <CJK>
++<U5FEF> /x8f/xbd/xcb <CJK>
++<U5FF2> /x8f/xbd/xcc <CJK>
++<U5FF3> /x8f/xbd/xcd <CJK>
++<U5FF6> /x8f/xbd/xce <CJK>
++<U5FFA> /x8f/xbd/xcf <CJK>
++<U5FFC> /x8f/xbd/xd0 <CJK>
++<U6007> /x8f/xbd/xd1 <CJK>
++<U600A> /x8f/xbd/xd2 <CJK>
++<U600D> /x8f/xbd/xd3 <CJK>
++<U6013> /x8f/xbd/xd4 <CJK>
++<U6014> /x8f/xbd/xd5 <CJK>
++<U6017> /x8f/xbd/xd6 <CJK>
++<U6018> /x8f/xbd/xd7 <CJK>
++<U601A> /x8f/xbd/xd8 <CJK>
++<U601F> /x8f/xbd/xd9 <CJK>
++<U6024> /x8f/xbd/xda <CJK>
++<U602D> /x8f/xbd/xdb <CJK>
++<U6033> /x8f/xbd/xdc <CJK>
++<U6035> /x8f/xbd/xdd <CJK>
++<U6040> /x8f/xbd/xde <CJK>
++<U6047> /x8f/xbd/xdf <CJK>
++<U6048> /x8f/xbd/xe0 <CJK>
++<U6049> /x8f/xbd/xe1 <CJK>
++<U604C> /x8f/xbd/xe2 <CJK>
++<U6051> /x8f/xbd/xe3 <CJK>
++<U6054> /x8f/xbd/xe4 <CJK>
++<U6056> /x8f/xbd/xe5 <CJK>
++<U6057> /x8f/xbd/xe6 <CJK>
++<U605D> /x8f/xbd/xe7 <CJK>
++<U6061> /x8f/xbd/xe8 <CJK>
++<U6067> /x8f/xbd/xe9 <CJK>
++<U6071> /x8f/xbd/xea <CJK>
++<U607E> /x8f/xbd/xeb <CJK>
++<U607F> /x8f/xbd/xec <CJK>
++<U6082> /x8f/xbd/xed <CJK>
++<U6086> /x8f/xbd/xee <CJK>
++<U6088> /x8f/xbd/xef <CJK>
++<U608A> /x8f/xbd/xf0 <CJK>
++<U608E> /x8f/xbd/xf1 <CJK>
++<U6091> /x8f/xbd/xf2 <CJK>
++<U6093> /x8f/xbd/xf3 <CJK>
++<U6095> /x8f/xbd/xf4 <CJK>
++<U6098> /x8f/xbd/xf5 <CJK>
++<U609D> /x8f/xbd/xf6 <CJK>
++<U609E> /x8f/xbd/xf7 <CJK>
++<U60A2> /x8f/xbd/xf8 <CJK>
++<U60A4> /x8f/xbd/xf9 <CJK>
++<U60A5> /x8f/xbd/xfa <CJK>
++<U60A8> /x8f/xbd/xfb <CJK>
++<U60B0> /x8f/xbd/xfc <CJK>
++<U60B1> /x8f/xbd/xfd <CJK>
++<U60B7> /x8f/xbd/xfe <CJK>
++<U60BB> /x8f/xbe/xa1 <CJK>
++<U60BE> /x8f/xbe/xa2 <CJK>
++<U60C2> /x8f/xbe/xa3 <CJK>
++<U60C4> /x8f/xbe/xa4 <CJK>
++<U60C8> /x8f/xbe/xa5 <CJK>
++<U60C9> /x8f/xbe/xa6 <CJK>
++<U60CA> /x8f/xbe/xa7 <CJK>
++<U60CB> /x8f/xbe/xa8 <CJK>
++<U60CE> /x8f/xbe/xa9 <CJK>
++<U60CF> /x8f/xbe/xaa <CJK>
++<U60D4> /x8f/xbe/xab <CJK>
++<U60D5> /x8f/xbe/xac <CJK>
++<U60D9> /x8f/xbe/xad <CJK>
++<U60DB> /x8f/xbe/xae <CJK>
++<U60DD> /x8f/xbe/xaf <CJK>
++<U60DE> /x8f/xbe/xb0 <CJK>
++<U60E2> /x8f/xbe/xb1 <CJK>
++<U60E5> /x8f/xbe/xb2 <CJK>
++<U60F2> /x8f/xbe/xb3 <CJK>
++<U60F5> /x8f/xbe/xb4 <CJK>
++<U60F8> /x8f/xbe/xb5 <CJK>
++<U60FC> /x8f/xbe/xb6 <CJK>
++<U60FD> /x8f/xbe/xb7 <CJK>
++<U6102> /x8f/xbe/xb8 <CJK>
++<U6107> /x8f/xbe/xb9 <CJK>
++<U610A> /x8f/xbe/xba <CJK>
++<U610C> /x8f/xbe/xbb <CJK>
++<U6110> /x8f/xbe/xbc <CJK>
++<U6111> /x8f/xbe/xbd <CJK>
++<U6112> /x8f/xbe/xbe <CJK>
++<U6113> /x8f/xbe/xbf <CJK>
++<U6114> /x8f/xbe/xc0 <CJK>
++<U6116> /x8f/xbe/xc1 <CJK>
++<U6117> /x8f/xbe/xc2 <CJK>
++<U6119> /x8f/xbe/xc3 <CJK>
++<U611C> /x8f/xbe/xc4 <CJK>
++<U611E> /x8f/xbe/xc5 <CJK>
++<U6122> /x8f/xbe/xc6 <CJK>
++<U612A> /x8f/xbe/xc7 <CJK>
++<U612B> /x8f/xbe/xc8 <CJK>
++<U6130> /x8f/xbe/xc9 <CJK>
++<U6131> /x8f/xbe/xca <CJK>
++<U6135> /x8f/xbe/xcb <CJK>
++<U6136> /x8f/xbe/xcc <CJK>
++<U6137> /x8f/xbe/xcd <CJK>
++<U6139> /x8f/xbe/xce <CJK>
++<U6141> /x8f/xbe/xcf <CJK>
++<U6145> /x8f/xbe/xd0 <CJK>
++<U6146> /x8f/xbe/xd1 <CJK>
++<U6149> /x8f/xbe/xd2 <CJK>
++<U615E> /x8f/xbe/xd3 <CJK>
++<U6160> /x8f/xbe/xd4 <CJK>
++<U616C> /x8f/xbe/xd5 <CJK>
++<U6172> /x8f/xbe/xd6 <CJK>
++<U6178> /x8f/xbe/xd7 <CJK>
++<U617B> /x8f/xbe/xd8 <CJK>
++<U617C> /x8f/xbe/xd9 <CJK>
++<U617F> /x8f/xbe/xda <CJK>
++<U6180> /x8f/xbe/xdb <CJK>
++<U6181> /x8f/xbe/xdc <CJK>
++<U6183> /x8f/xbe/xdd <CJK>
++<U6184> /x8f/xbe/xde <CJK>
++<U618B> /x8f/xbe/xdf <CJK>
++<U618D> /x8f/xbe/xe0 <CJK>
++<U6192> /x8f/xbe/xe1 <CJK>
++<U6193> /x8f/xbe/xe2 <CJK>
++<U6197> /x8f/xbe/xe3 <CJK>
++<U6198> /x8f/xbe/xe4 <CJK>
++<U619C> /x8f/xbe/xe5 <CJK>
++<U619D> /x8f/xbe/xe6 <CJK>
++<U619F> /x8f/xbe/xe7 <CJK>
++<U61A0> /x8f/xbe/xe8 <CJK>
++<U61A5> /x8f/xbe/xe9 <CJK>
++<U61A8> /x8f/xbe/xea <CJK>
++<U61AA> /x8f/xbe/xeb <CJK>
++<U61AD> /x8f/xbe/xec <CJK>
++<U61B8> /x8f/xbe/xed <CJK>
++<U61B9> /x8f/xbe/xee <CJK>
++<U61BC> /x8f/xbe/xef <CJK>
++<U61C0> /x8f/xbe/xf0 <CJK>
++<U61C1> /x8f/xbe/xf1 <CJK>
++<U61C2> /x8f/xbe/xf2 <CJK>
++<U61CE> /x8f/xbe/xf3 <CJK>
++<U61CF> /x8f/xbe/xf4 <CJK>
++<U61D5> /x8f/xbe/xf5 <CJK>
++<U61DC> /x8f/xbe/xf6 <CJK>
++<U61DD> /x8f/xbe/xf7 <CJK>
++<U61DE> /x8f/xbe/xf8 <CJK>
++<U61DF> /x8f/xbe/xf9 <CJK>
++<U61E1> /x8f/xbe/xfa <CJK>
++<U61E2> /x8f/xbe/xfb <CJK>
++<U61E7> /x8f/xbe/xfc <CJK>
++<U61E9> /x8f/xbe/xfd <CJK>
++<U61E5> /x8f/xbe/xfe <CJK>
++<U61EC> /x8f/xbf/xa1 <CJK>
++<U61ED> /x8f/xbf/xa2 <CJK>
++<U61EF> /x8f/xbf/xa3 <CJK>
++<U6201> /x8f/xbf/xa4 <CJK>
++<U6203> /x8f/xbf/xa5 <CJK>
++<U6204> /x8f/xbf/xa6 <CJK>
++<U6207> /x8f/xbf/xa7 <CJK>
++<U6213> /x8f/xbf/xa8 <CJK>
++<U6215> /x8f/xbf/xa9 <CJK>
++<U621C> /x8f/xbf/xaa <CJK>
++<U6220> /x8f/xbf/xab <CJK>
++<U6222> /x8f/xbf/xac <CJK>
++<U6223> /x8f/xbf/xad <CJK>
++<U6227> /x8f/xbf/xae <CJK>
++<U6229> /x8f/xbf/xaf <CJK>
++<U622B> /x8f/xbf/xb0 <CJK>
++<U6239> /x8f/xbf/xb1 <CJK>
++<U623D> /x8f/xbf/xb2 <CJK>
++<U6242> /x8f/xbf/xb3 <CJK>
++<U6243> /x8f/xbf/xb4 <CJK>
++<U6244> /x8f/xbf/xb5 <CJK>
++<U6246> /x8f/xbf/xb6 <CJK>
++<U624C> /x8f/xbf/xb7 <CJK>
++<U6250> /x8f/xbf/xb8 <CJK>
++<U6251> /x8f/xbf/xb9 <CJK>
++<U6252> /x8f/xbf/xba <CJK>
++<U6254> /x8f/xbf/xbb <CJK>
++<U6256> /x8f/xbf/xbc <CJK>
++<U625A> /x8f/xbf/xbd <CJK>
++<U625C> /x8f/xbf/xbe <CJK>
++<U6264> /x8f/xbf/xbf <CJK>
++<U626D> /x8f/xbf/xc0 <CJK>
++<U626F> /x8f/xbf/xc1 <CJK>
++<U6273> /x8f/xbf/xc2 <CJK>
++<U627A> /x8f/xbf/xc3 <CJK>
++<U627D> /x8f/xbf/xc4 <CJK>
++<U628D> /x8f/xbf/xc5 <CJK>
++<U628E> /x8f/xbf/xc6 <CJK>
++<U628F> /x8f/xbf/xc7 <CJK>
++<U6290> /x8f/xbf/xc8 <CJK>
++<U62A6> /x8f/xbf/xc9 <CJK>
++<U62A8> /x8f/xbf/xca <CJK>
++<U62B3> /x8f/xbf/xcb <CJK>
++<U62B6> /x8f/xbf/xcc <CJK>
++<U62B7> /x8f/xbf/xcd <CJK>
++<U62BA> /x8f/xbf/xce <CJK>
++<U62BE> /x8f/xbf/xcf <CJK>
++<U62BF> /x8f/xbf/xd0 <CJK>
++<U62C4> /x8f/xbf/xd1 <CJK>
++<U62CE> /x8f/xbf/xd2 <CJK>
++<U62D5> /x8f/xbf/xd3 <CJK>
++<U62D6> /x8f/xbf/xd4 <CJK>
++<U62DA> /x8f/xbf/xd5 <CJK>
++<U62EA> /x8f/xbf/xd6 <CJK>
++<U62F2> /x8f/xbf/xd7 <CJK>
++<U62F4> /x8f/xbf/xd8 <CJK>
++<U62FC> /x8f/xbf/xd9 <CJK>
++<U62FD> /x8f/xbf/xda <CJK>
++<U6303> /x8f/xbf/xdb <CJK>
++<U6304> /x8f/xbf/xdc <CJK>
++<U630A> /x8f/xbf/xdd <CJK>
++<U630B> /x8f/xbf/xde <CJK>
++<U630D> /x8f/xbf/xdf <CJK>
++<U6310> /x8f/xbf/xe0 <CJK>
++<U6313> /x8f/xbf/xe1 <CJK>
++<U6316> /x8f/xbf/xe2 <CJK>
++<U6318> /x8f/xbf/xe3 <CJK>
++<U6329> /x8f/xbf/xe4 <CJK>
++<U632A> /x8f/xbf/xe5 <CJK>
++<U632D> /x8f/xbf/xe6 <CJK>
++<U6335> /x8f/xbf/xe7 <CJK>
++<U6336> /x8f/xbf/xe8 <CJK>
++<U6339> /x8f/xbf/xe9 <CJK>
++<U633C> /x8f/xbf/xea <CJK>
++<U6341> /x8f/xbf/xeb <CJK>
++<U6342> /x8f/xbf/xec <CJK>
++<U6343> /x8f/xbf/xed <CJK>
++<U6344> /x8f/xbf/xee <CJK>
++<U6346> /x8f/xbf/xef <CJK>
++<U634A> /x8f/xbf/xf0 <CJK>
++<U634B> /x8f/xbf/xf1 <CJK>
++<U634E> /x8f/xbf/xf2 <CJK>
++<U6352> /x8f/xbf/xf3 <CJK>
++<U6353> /x8f/xbf/xf4 <CJK>
++<U6354> /x8f/xbf/xf5 <CJK>
++<U6358> /x8f/xbf/xf6 <CJK>
++<U635B> /x8f/xbf/xf7 <CJK>
++<U6365> /x8f/xbf/xf8 <CJK>
++<U6366> /x8f/xbf/xf9 <CJK>
++<U636C> /x8f/xbf/xfa <CJK>
++<U636D> /x8f/xbf/xfb <CJK>
++<U6371> /x8f/xbf/xfc <CJK>
++<U6374> /x8f/xbf/xfd <CJK>
++<U6375> /x8f/xbf/xfe <CJK>
++<U6378> /x8f/xc0/xa1 <CJK>
++<U637C> /x8f/xc0/xa2 <CJK>
++<U637D> /x8f/xc0/xa3 <CJK>
++<U637F> /x8f/xc0/xa4 <CJK>
++<U6382> /x8f/xc0/xa5 <CJK>
++<U6384> /x8f/xc0/xa6 <CJK>
++<U6387> /x8f/xc0/xa7 <CJK>
++<U638A> /x8f/xc0/xa8 <CJK>
++<U6390> /x8f/xc0/xa9 <CJK>
++<U6394> /x8f/xc0/xaa <CJK>
++<U6395> /x8f/xc0/xab <CJK>
++<U6399> /x8f/xc0/xac <CJK>
++<U639A> /x8f/xc0/xad <CJK>
++<U639E> /x8f/xc0/xae <CJK>
++<U63A4> /x8f/xc0/xaf <CJK>
++<U63A6> /x8f/xc0/xb0 <CJK>
++<U63AD> /x8f/xc0/xb1 <CJK>
++<U63AE> /x8f/xc0/xb2 <CJK>
++<U63AF> /x8f/xc0/xb3 <CJK>
++<U63BD> /x8f/xc0/xb4 <CJK>
++<U63C1> /x8f/xc0/xb5 <CJK>
++<U63C5> /x8f/xc0/xb6 <CJK>
++<U63C8> /x8f/xc0/xb7 <CJK>
++<U63CE> /x8f/xc0/xb8 <CJK>
++<U63D1> /x8f/xc0/xb9 <CJK>
++<U63D3> /x8f/xc0/xba <CJK>
++<U63D4> /x8f/xc0/xbb <CJK>
++<U63D5> /x8f/xc0/xbc <CJK>
++<U63DC> /x8f/xc0/xbd <CJK>
++<U63E0> /x8f/xc0/xbe <CJK>
++<U63E5> /x8f/xc0/xbf <CJK>
++<U63EA> /x8f/xc0/xc0 <CJK>
++<U63EC> /x8f/xc0/xc1 <CJK>
++<U63F2> /x8f/xc0/xc2 <CJK>
++<U63F3> /x8f/xc0/xc3 <CJK>
++<U63F5> /x8f/xc0/xc4 <CJK>
++<U63F8> /x8f/xc0/xc5 <CJK>
++<U63F9> /x8f/xc0/xc6 <CJK>
++<U6409> /x8f/xc0/xc7 <CJK>
++<U640A> /x8f/xc0/xc8 <CJK>
++<U6410> /x8f/xc0/xc9 <CJK>
++<U6412> /x8f/xc0/xca <CJK>
++<U6414> /x8f/xc0/xcb <CJK>
++<U6418> /x8f/xc0/xcc <CJK>
++<U641E> /x8f/xc0/xcd <CJK>
++<U6420> /x8f/xc0/xce <CJK>
++<U6422> /x8f/xc0/xcf <CJK>
++<U6424> /x8f/xc0/xd0 <CJK>
++<U6425> /x8f/xc0/xd1 <CJK>
++<U6429> /x8f/xc0/xd2 <CJK>
++<U642A> /x8f/xc0/xd3 <CJK>
++<U642F> /x8f/xc0/xd4 <CJK>
++<U6430> /x8f/xc0/xd5 <CJK>
++<U6435> /x8f/xc0/xd6 <CJK>
++<U643D> /x8f/xc0/xd7 <CJK>
++<U643F> /x8f/xc0/xd8 <CJK>
++<U644B> /x8f/xc0/xd9 <CJK>
++<U644F> /x8f/xc0/xda <CJK>
++<U6451> /x8f/xc0/xdb <CJK>
++<U6452> /x8f/xc0/xdc <CJK>
++<U6453> /x8f/xc0/xdd <CJK>
++<U6454> /x8f/xc0/xde <CJK>
++<U645A> /x8f/xc0/xdf <CJK>
++<U645B> /x8f/xc0/xe0 <CJK>
++<U645C> /x8f/xc0/xe1 <CJK>
++<U645D> /x8f/xc0/xe2 <CJK>
++<U645F> /x8f/xc0/xe3 <CJK>
++<U6460> /x8f/xc0/xe4 <CJK>
++<U6461> /x8f/xc0/xe5 <CJK>
++<U6463> /x8f/xc0/xe6 <CJK>
++<U646D> /x8f/xc0/xe7 <CJK>
++<U6473> /x8f/xc0/xe8 <CJK>
++<U6474> /x8f/xc0/xe9 <CJK>
++<U647B> /x8f/xc0/xea <CJK>
++<U647D> /x8f/xc0/xeb <CJK>
++<U6485> /x8f/xc0/xec <CJK>
++<U6487> /x8f/xc0/xed <CJK>
++<U648F> /x8f/xc0/xee <CJK>
++<U6490> /x8f/xc0/xef <CJK>
++<U6491> /x8f/xc0/xf0 <CJK>
++<U6498> /x8f/xc0/xf1 <CJK>
++<U6499> /x8f/xc0/xf2 <CJK>
++<U649B> /x8f/xc0/xf3 <CJK>
++<U649D> /x8f/xc0/xf4 <CJK>
++<U649F> /x8f/xc0/xf5 <CJK>
++<U64A1> /x8f/xc0/xf6 <CJK>
++<U64A3> /x8f/xc0/xf7 <CJK>
++<U64A6> /x8f/xc0/xf8 <CJK>
++<U64A8> /x8f/xc0/xf9 <CJK>
++<U64AC> /x8f/xc0/xfa <CJK>
++<U64B3> /x8f/xc0/xfb <CJK>
++<U64BD> /x8f/xc0/xfc <CJK>
++<U64BE> /x8f/xc0/xfd <CJK>
++<U64BF> /x8f/xc0/xfe <CJK>
++<U64C4> /x8f/xc1/xa1 <CJK>
++<U64C9> /x8f/xc1/xa2 <CJK>
++<U64CA> /x8f/xc1/xa3 <CJK>
++<U64CB> /x8f/xc1/xa4 <CJK>
++<U64CC> /x8f/xc1/xa5 <CJK>
++<U64CE> /x8f/xc1/xa6 <CJK>
++<U64D0> /x8f/xc1/xa7 <CJK>
++<U64D1> /x8f/xc1/xa8 <CJK>
++<U64D5> /x8f/xc1/xa9 <CJK>
++<U64D7> /x8f/xc1/xaa <CJK>
++<U64E4> /x8f/xc1/xab <CJK>
++<U64E5> /x8f/xc1/xac <CJK>
++<U64E9> /x8f/xc1/xad <CJK>
++<U64EA> /x8f/xc1/xae <CJK>
++<U64ED> /x8f/xc1/xaf <CJK>
++<U64F0> /x8f/xc1/xb0 <CJK>
++<U64F5> /x8f/xc1/xb1 <CJK>
++<U64F7> /x8f/xc1/xb2 <CJK>
++<U64FB> /x8f/xc1/xb3 <CJK>
++<U64FF> /x8f/xc1/xb4 <CJK>
++<U6501> /x8f/xc1/xb5 <CJK>
++<U6504> /x8f/xc1/xb6 <CJK>
++<U6508> /x8f/xc1/xb7 <CJK>
++<U6509> /x8f/xc1/xb8 <CJK>
++<U650A> /x8f/xc1/xb9 <CJK>
++<U650F> /x8f/xc1/xba <CJK>
++<U6513> /x8f/xc1/xbb <CJK>
++<U6514> /x8f/xc1/xbc <CJK>
++<U6516> /x8f/xc1/xbd <CJK>
++<U6519> /x8f/xc1/xbe <CJK>
++<U651B> /x8f/xc1/xbf <CJK>
++<U651E> /x8f/xc1/xc0 <CJK>
++<U651F> /x8f/xc1/xc1 <CJK>
++<U6522> /x8f/xc1/xc2 <CJK>
++<U6526> /x8f/xc1/xc3 <CJK>
++<U6529> /x8f/xc1/xc4 <CJK>
++<U652E> /x8f/xc1/xc5 <CJK>
++<U6531> /x8f/xc1/xc6 <CJK>
++<U653A> /x8f/xc1/xc7 <CJK>
++<U653C> /x8f/xc1/xc8 <CJK>
++<U653D> /x8f/xc1/xc9 <CJK>
++<U6543> /x8f/xc1/xca <CJK>
++<U6547> /x8f/xc1/xcb <CJK>
++<U6549> /x8f/xc1/xcc <CJK>
++<U6550> /x8f/xc1/xcd <CJK>
++<U6552> /x8f/xc1/xce <CJK>
++<U6554> /x8f/xc1/xcf <CJK>
++<U655F> /x8f/xc1/xd0 <CJK>
++<U6560> /x8f/xc1/xd1 <CJK>
++<U6567> /x8f/xc1/xd2 <CJK>
++<U656B> /x8f/xc1/xd3 <CJK>
++<U657A> /x8f/xc1/xd4 <CJK>
++<U657D> /x8f/xc1/xd5 <CJK>
++<U6581> /x8f/xc1/xd6 <CJK>
++<U6585> /x8f/xc1/xd7 <CJK>
++<U658A> /x8f/xc1/xd8 <CJK>
++<U6592> /x8f/xc1/xd9 <CJK>
++<U6595> /x8f/xc1/xda <CJK>
++<U6598> /x8f/xc1/xdb <CJK>
++<U659D> /x8f/xc1/xdc <CJK>
++<U65A0> /x8f/xc1/xdd <CJK>
++<U65A3> /x8f/xc1/xde <CJK>
++<U65A6> /x8f/xc1/xdf <CJK>
++<U65AE> /x8f/xc1/xe0 <CJK>
++<U65B2> /x8f/xc1/xe1 <CJK>
++<U65B3> /x8f/xc1/xe2 <CJK>
++<U65B4> /x8f/xc1/xe3 <CJK>
++<U65BF> /x8f/xc1/xe4 <CJK>
++<U65C2> /x8f/xc1/xe5 <CJK>
++<U65C8> /x8f/xc1/xe6 <CJK>
++<U65C9> /x8f/xc1/xe7 <CJK>
++<U65CE> /x8f/xc1/xe8 <CJK>
++<U65D0> /x8f/xc1/xe9 <CJK>
++<U65D4> /x8f/xc1/xea <CJK>
++<U65D6> /x8f/xc1/xeb <CJK>
++<U65D8> /x8f/xc1/xec <CJK>
++<U65DF> /x8f/xc1/xed <CJK>
++<U65F0> /x8f/xc1/xee <CJK>
++<U65F2> /x8f/xc1/xef <CJK>
++<U65F4> /x8f/xc1/xf0 <CJK>
++<U65F5> /x8f/xc1/xf1 <CJK>
++<U65F9> /x8f/xc1/xf2 <CJK>
++<U65FE> /x8f/xc1/xf3 <CJK>
++<U65FF> /x8f/xc1/xf4 <CJK>
++<U6600> /x8f/xc1/xf5 <CJK>
++<U6604> /x8f/xc1/xf6 <CJK>
++<U6608> /x8f/xc1/xf7 <CJK>
++<U6609> /x8f/xc1/xf8 <CJK>
++<U660D> /x8f/xc1/xf9 <CJK>
++<U6611> /x8f/xc1/xfa <CJK>
++<U6612> /x8f/xc1/xfb <CJK>
++<U6615> /x8f/xc1/xfc <CJK>
++<U6616> /x8f/xc1/xfd <CJK>
++<U661D> /x8f/xc1/xfe <CJK>
++<U661E> /x8f/xc2/xa1 <CJK>
++<U6621> /x8f/xc2/xa2 <CJK>
++<U6622> /x8f/xc2/xa3 <CJK>
++<U6623> /x8f/xc2/xa4 <CJK>
++<U6624> /x8f/xc2/xa5 <CJK>
++<U6626> /x8f/xc2/xa6 <CJK>
++<U6629> /x8f/xc2/xa7 <CJK>
++<U662A> /x8f/xc2/xa8 <CJK>
++<U662B> /x8f/xc2/xa9 <CJK>
++<U662C> /x8f/xc2/xaa <CJK>
++<U662E> /x8f/xc2/xab <CJK>
++<U6630> /x8f/xc2/xac <CJK>
++<U6631> /x8f/xc2/xad <CJK>
++<U6633> /x8f/xc2/xae <CJK>
++<U6639> /x8f/xc2/xaf <CJK>
++<U6637> /x8f/xc2/xb0 <CJK>
++<U6640> /x8f/xc2/xb1 <CJK>
++<U6645> /x8f/xc2/xb2 <CJK>
++<U6646> /x8f/xc2/xb3 <CJK>
++<U664A> /x8f/xc2/xb4 <CJK>
++<U664C> /x8f/xc2/xb5 <CJK>
++<U6651> /x8f/xc2/xb6 <CJK>
++<U664E> /x8f/xc2/xb7 <CJK>
++<U6657> /x8f/xc2/xb8 <CJK>
++<U6658> /x8f/xc2/xb9 <CJK>
++<U6659> /x8f/xc2/xba <CJK>
++<U665B> /x8f/xc2/xbb <CJK>
++<U665C> /x8f/xc2/xbc <CJK>
++<U6660> /x8f/xc2/xbd <CJK>
++<U6661> /x8f/xc2/xbe <CJK>
++<U66FB> /x8f/xc2/xbf <CJK>
++<U666A> /x8f/xc2/xc0 <CJK>
++<U666B> /x8f/xc2/xc1 <CJK>
++<U666C> /x8f/xc2/xc2 <CJK>
++<U667E> /x8f/xc2/xc3 <CJK>
++<U6673> /x8f/xc2/xc4 <CJK>
++<U6675> /x8f/xc2/xc5 <CJK>
++<U667F> /x8f/xc2/xc6 <CJK>
++<U6677> /x8f/xc2/xc7 <CJK>
++<U6678> /x8f/xc2/xc8 <CJK>
++<U6679> /x8f/xc2/xc9 <CJK>
++<U667B> /x8f/xc2/xca <CJK>
++<U6680> /x8f/xc2/xcb <CJK>
++<U667C> /x8f/xc2/xcc <CJK>
++<U668B> /x8f/xc2/xcd <CJK>
++<U668C> /x8f/xc2/xce <CJK>
++<U668D> /x8f/xc2/xcf <CJK>
++<U6690> /x8f/xc2/xd0 <CJK>
++<U6692> /x8f/xc2/xd1 <CJK>
++<U6699> /x8f/xc2/xd2 <CJK>
++<U669A> /x8f/xc2/xd3 <CJK>
++<U669B> /x8f/xc2/xd4 <CJK>
++<U669C> /x8f/xc2/xd5 <CJK>
++<U669F> /x8f/xc2/xd6 <CJK>
++<U66A0> /x8f/xc2/xd7 <CJK>
++<U66A4> /x8f/xc2/xd8 <CJK>
++<U66AD> /x8f/xc2/xd9 <CJK>
++<U66B1> /x8f/xc2/xda <CJK>
++<U66B2> /x8f/xc2/xdb <CJK>
++<U66B5> /x8f/xc2/xdc <CJK>
++<U66BB> /x8f/xc2/xdd <CJK>
++<U66BF> /x8f/xc2/xde <CJK>
++<U66C0> /x8f/xc2/xdf <CJK>
++<U66C2> /x8f/xc2/xe0 <CJK>
++<U66C3> /x8f/xc2/xe1 <CJK>
++<U66C8> /x8f/xc2/xe2 <CJK>
++<U66CC> /x8f/xc2/xe3 <CJK>
++<U66CE> /x8f/xc2/xe4 <CJK>
++<U66CF> /x8f/xc2/xe5 <CJK>
++<U66D4> /x8f/xc2/xe6 <CJK>
++<U66DB> /x8f/xc2/xe7 <CJK>
++<U66DF> /x8f/xc2/xe8 <CJK>
++<U66E8> /x8f/xc2/xe9 <CJK>
++<U66EB> /x8f/xc2/xea <CJK>
++<U66EC> /x8f/xc2/xeb <CJK>
++<U66EE> /x8f/xc2/xec <CJK>
++<U66FA> /x8f/xc2/xed <CJK>
++<U6705> /x8f/xc2/xee <CJK>
++<U6707> /x8f/xc2/xef <CJK>
++<U670E> /x8f/xc2/xf0 <CJK>
++<U6713> /x8f/xc2/xf1 <CJK>
++<U6719> /x8f/xc2/xf2 <CJK>
++<U671C> /x8f/xc2/xf3 <CJK>
++<U6720> /x8f/xc2/xf4 <CJK>
++<U6722> /x8f/xc2/xf5 <CJK>
++<U6733> /x8f/xc2/xf6 <CJK>
++<U673E> /x8f/xc2/xf7 <CJK>
++<U6745> /x8f/xc2/xf8 <CJK>
++<U6747> /x8f/xc2/xf9 <CJK>
++<U6748> /x8f/xc2/xfa <CJK>
++<U674C> /x8f/xc2/xfb <CJK>
++<U6754> /x8f/xc2/xfc <CJK>
++<U6755> /x8f/xc2/xfd <CJK>
++<U675D> /x8f/xc2/xfe <CJK>
++<U6766> /x8f/xc3/xa1 <CJK>
++<U676C> /x8f/xc3/xa2 <CJK>
++<U676E> /x8f/xc3/xa3 <CJK>
++<U6774> /x8f/xc3/xa4 <CJK>
++<U6776> /x8f/xc3/xa5 <CJK>
++<U677B> /x8f/xc3/xa6 <CJK>
++<U6781> /x8f/xc3/xa7 <CJK>
++<U6784> /x8f/xc3/xa8 <CJK>
++<U678E> /x8f/xc3/xa9 <CJK>
++<U678F> /x8f/xc3/xaa <CJK>
++<U6791> /x8f/xc3/xab <CJK>
++<U6793> /x8f/xc3/xac <CJK>
++<U6796> /x8f/xc3/xad <CJK>
++<U6798> /x8f/xc3/xae <CJK>
++<U6799> /x8f/xc3/xaf <CJK>
++<U679B> /x8f/xc3/xb0 <CJK>
++<U67B0> /x8f/xc3/xb1 <CJK>
++<U67B1> /x8f/xc3/xb2 <CJK>
++<U67B2> /x8f/xc3/xb3 <CJK>
++<U67B5> /x8f/xc3/xb4 <CJK>
++<U67BB> /x8f/xc3/xb5 <CJK>
++<U67BC> /x8f/xc3/xb6 <CJK>
++<U67BD> /x8f/xc3/xb7 <CJK>
++<U67F9> /x8f/xc3/xb8 <CJK>
++<U67C0> /x8f/xc3/xb9 <CJK>
++<U67C2> /x8f/xc3/xba <CJK>
++<U67C3> /x8f/xc3/xbb <CJK>
++<U67C5> /x8f/xc3/xbc <CJK>
++<U67C8> /x8f/xc3/xbd <CJK>
++<U67C9> /x8f/xc3/xbe <CJK>
++<U67D2> /x8f/xc3/xbf <CJK>
++<U67D7> /x8f/xc3/xc0 <CJK>
++<U67D9> /x8f/xc3/xc1 <CJK>
++<U67DC> /x8f/xc3/xc2 <CJK>
++<U67E1> /x8f/xc3/xc3 <CJK>
++<U67E6> /x8f/xc3/xc4 <CJK>
++<U67F0> /x8f/xc3/xc5 <CJK>
++<U67F2> /x8f/xc3/xc6 <CJK>
++<U67F6> /x8f/xc3/xc7 <CJK>
++<U67F7> /x8f/xc3/xc8 <CJK>
++<U6852> /x8f/xc3/xc9 <CJK>
++<U6814> /x8f/xc3/xca <CJK>
++<U6819> /x8f/xc3/xcb <CJK>
++<U681D> /x8f/xc3/xcc <CJK>
++<U681F> /x8f/xc3/xcd <CJK>
++<U6828> /x8f/xc3/xce <CJK>
++<U6827> /x8f/xc3/xcf <CJK>
++<U682C> /x8f/xc3/xd0 <CJK>
++<U682D> /x8f/xc3/xd1 <CJK>
++<U682F> /x8f/xc3/xd2 <CJK>
++<U6830> /x8f/xc3/xd3 <CJK>
++<U6831> /x8f/xc3/xd4 <CJK>
++<U6833> /x8f/xc3/xd5 <CJK>
++<U683B> /x8f/xc3/xd6 <CJK>
++<U683F> /x8f/xc3/xd7 <CJK>
++<U6844> /x8f/xc3/xd8 <CJK>
++<U6845> /x8f/xc3/xd9 <CJK>
++<U684A> /x8f/xc3/xda <CJK>
++<U684C> /x8f/xc3/xdb <CJK>
++<U6855> /x8f/xc3/xdc <CJK>
++<U6857> /x8f/xc3/xdd <CJK>
++<U6858> /x8f/xc3/xde <CJK>
++<U685B> /x8f/xc3/xdf <CJK>
++<U686B> /x8f/xc3/xe0 <CJK>
++<U686E> /x8f/xc3/xe1 <CJK>
++<U686F> /x8f/xc3/xe2 <CJK>
++<U6870> /x8f/xc3/xe3 <CJK>
++<U6871> /x8f/xc3/xe4 <CJK>
++<U6872> /x8f/xc3/xe5 <CJK>
++<U6875> /x8f/xc3/xe6 <CJK>
++<U6879> /x8f/xc3/xe7 <CJK>
++<U687A> /x8f/xc3/xe8 <CJK>
++<U687B> /x8f/xc3/xe9 <CJK>
++<U687C> /x8f/xc3/xea <CJK>
++<U6882> /x8f/xc3/xeb <CJK>
++<U6884> /x8f/xc3/xec <CJK>
++<U6886> /x8f/xc3/xed <CJK>
++<U6888> /x8f/xc3/xee <CJK>
++<U6896> /x8f/xc3/xef <CJK>
++<U6898> /x8f/xc3/xf0 <CJK>
++<U689A> /x8f/xc3/xf1 <CJK>
++<U689C> /x8f/xc3/xf2 <CJK>
++<U68A1> /x8f/xc3/xf3 <CJK>
++<U68A3> /x8f/xc3/xf4 <CJK>
++<U68A5> /x8f/xc3/xf5 <CJK>
++<U68A9> /x8f/xc3/xf6 <CJK>
++<U68AA> /x8f/xc3/xf7 <CJK>
++<U68AE> /x8f/xc3/xf8 <CJK>
++<U68B2> /x8f/xc3/xf9 <CJK>
++<U68BB> /x8f/xc3/xfa <CJK>
++<U68C5> /x8f/xc3/xfb <CJK>
++<U68C8> /x8f/xc3/xfc <CJK>
++<U68CC> /x8f/xc3/xfd <CJK>
++<U68CF> /x8f/xc3/xfe <CJK>
++<U68D0> /x8f/xc4/xa1 <CJK>
++<U68D1> /x8f/xc4/xa2 <CJK>
++<U68D3> /x8f/xc4/xa3 <CJK>
++<U68D6> /x8f/xc4/xa4 <CJK>
++<U68D9> /x8f/xc4/xa5 <CJK>
++<U68DC> /x8f/xc4/xa6 <CJK>
++<U68DD> /x8f/xc4/xa7 <CJK>
++<U68E5> /x8f/xc4/xa8 <CJK>
++<U68E8> /x8f/xc4/xa9 <CJK>
++<U68EA> /x8f/xc4/xaa <CJK>
++<U68EB> /x8f/xc4/xab <CJK>
++<U68EC> /x8f/xc4/xac <CJK>
++<U68ED> /x8f/xc4/xad <CJK>
++<U68F0> /x8f/xc4/xae <CJK>
++<U68F1> /x8f/xc4/xaf <CJK>
++<U68F5> /x8f/xc4/xb0 <CJK>
++<U68F6> /x8f/xc4/xb1 <CJK>
++<U68FB> /x8f/xc4/xb2 <CJK>
++<U68FC> /x8f/xc4/xb3 <CJK>
++<U68FD> /x8f/xc4/xb4 <CJK>
++<U6906> /x8f/xc4/xb5 <CJK>
++<U6909> /x8f/xc4/xb6 <CJK>
++<U690A> /x8f/xc4/xb7 <CJK>
++<U6910> /x8f/xc4/xb8 <CJK>
++<U6911> /x8f/xc4/xb9 <CJK>
++<U6913> /x8f/xc4/xba <CJK>
++<U6916> /x8f/xc4/xbb <CJK>
++<U6917> /x8f/xc4/xbc <CJK>
++<U6931> /x8f/xc4/xbd <CJK>
++<U6933> /x8f/xc4/xbe <CJK>
++<U6935> /x8f/xc4/xbf <CJK>
++<U6938> /x8f/xc4/xc0 <CJK>
++<U693B> /x8f/xc4/xc1 <CJK>
++<U6942> /x8f/xc4/xc2 <CJK>
++<U6945> /x8f/xc4/xc3 <CJK>
++<U6949> /x8f/xc4/xc4 <CJK>
++<U694E> /x8f/xc4/xc5 <CJK>
++<U6957> /x8f/xc4/xc6 <CJK>
++<U695B> /x8f/xc4/xc7 <CJK>
++<U6963> /x8f/xc4/xc8 <CJK>
++<U6964> /x8f/xc4/xc9 <CJK>
++<U6965> /x8f/xc4/xca <CJK>
++<U6966> /x8f/xc4/xcb <CJK>
++<U6968> /x8f/xc4/xcc <CJK>
++<U6969> /x8f/xc4/xcd <CJK>
++<U696C> /x8f/xc4/xce <CJK>
++<U6970> /x8f/xc4/xcf <CJK>
++<U6971> /x8f/xc4/xd0 <CJK>
++<U6972> /x8f/xc4/xd1 <CJK>
++<U697A> /x8f/xc4/xd2 <CJK>
++<U697B> /x8f/xc4/xd3 <CJK>
++<U697F> /x8f/xc4/xd4 <CJK>
++<U6980> /x8f/xc4/xd5 <CJK>
++<U698D> /x8f/xc4/xd6 <CJK>
++<U6992> /x8f/xc4/xd7 <CJK>
++<U6996> /x8f/xc4/xd8 <CJK>
++<U6998> /x8f/xc4/xd9 <CJK>
++<U69A1> /x8f/xc4/xda <CJK>
++<U69A5> /x8f/xc4/xdb <CJK>
++<U69A6> /x8f/xc4/xdc <CJK>
++<U69A8> /x8f/xc4/xdd <CJK>
++<U69AB> /x8f/xc4/xde <CJK>
++<U69AD> /x8f/xc4/xdf <CJK>
++<U69AF> /x8f/xc4/xe0 <CJK>
++<U69B7> /x8f/xc4/xe1 <CJK>
++<U69B8> /x8f/xc4/xe2 <CJK>
++<U69BA> /x8f/xc4/xe3 <CJK>
++<U69BC> /x8f/xc4/xe4 <CJK>
++<U69C5> /x8f/xc4/xe5 <CJK>
++<U69C8> /x8f/xc4/xe6 <CJK>
++<U69D1> /x8f/xc4/xe7 <CJK>
++<U69D6> /x8f/xc4/xe8 <CJK>
++<U69D7> /x8f/xc4/xe9 <CJK>
++<U69E2> /x8f/xc4/xea <CJK>
++<U69E5> /x8f/xc4/xeb <CJK>
++<U69EE> /x8f/xc4/xec <CJK>
++<U69EF> /x8f/xc4/xed <CJK>
++<U69F1> /x8f/xc4/xee <CJK>
++<U69F3> /x8f/xc4/xef <CJK>
++<U69F5> /x8f/xc4/xf0 <CJK>
++<U69FE> /x8f/xc4/xf1 <CJK>
++<U6A00> /x8f/xc4/xf2 <CJK>
++<U6A01> /x8f/xc4/xf3 <CJK>
++<U6A03> /x8f/xc4/xf4 <CJK>
++<U6A0F> /x8f/xc4/xf5 <CJK>
++<U6A11> /x8f/xc4/xf6 <CJK>
++<U6A15> /x8f/xc4/xf7 <CJK>
++<U6A1A> /x8f/xc4/xf8 <CJK>
++<U6A1D> /x8f/xc4/xf9 <CJK>
++<U6A20> /x8f/xc4/xfa <CJK>
++<U6A24> /x8f/xc4/xfb <CJK>
++<U6A28> /x8f/xc4/xfc <CJK>
++<U6A30> /x8f/xc4/xfd <CJK>
++<U6A32> /x8f/xc4/xfe <CJK>
++<U6A34> /x8f/xc5/xa1 <CJK>
++<U6A37> /x8f/xc5/xa2 <CJK>
++<U6A3B> /x8f/xc5/xa3 <CJK>
++<U6A3E> /x8f/xc5/xa4 <CJK>
++<U6A3F> /x8f/xc5/xa5 <CJK>
++<U6A45> /x8f/xc5/xa6 <CJK>
++<U6A46> /x8f/xc5/xa7 <CJK>
++<U6A49> /x8f/xc5/xa8 <CJK>
++<U6A4A> /x8f/xc5/xa9 <CJK>
++<U6A4E> /x8f/xc5/xaa <CJK>
++<U6A50> /x8f/xc5/xab <CJK>
++<U6A51> /x8f/xc5/xac <CJK>
++<U6A52> /x8f/xc5/xad <CJK>
++<U6A55> /x8f/xc5/xae <CJK>
++<U6A56> /x8f/xc5/xaf <CJK>
++<U6A5B> /x8f/xc5/xb0 <CJK>
++<U6A64> /x8f/xc5/xb1 <CJK>
++<U6A67> /x8f/xc5/xb2 <CJK>
++<U6A6A> /x8f/xc5/xb3 <CJK>
++<U6A71> /x8f/xc5/xb4 <CJK>
++<U6A73> /x8f/xc5/xb5 <CJK>
++<U6A7E> /x8f/xc5/xb6 <CJK>
++<U6A81> /x8f/xc5/xb7 <CJK>
++<U6A83> /x8f/xc5/xb8 <CJK>
++<U6A86> /x8f/xc5/xb9 <CJK>
++<U6A87> /x8f/xc5/xba <CJK>
++<U6A89> /x8f/xc5/xbb <CJK>
++<U6A8B> /x8f/xc5/xbc <CJK>
++<U6A91> /x8f/xc5/xbd <CJK>
++<U6A9B> /x8f/xc5/xbe <CJK>
++<U6A9D> /x8f/xc5/xbf <CJK>
++<U6A9E> /x8f/xc5/xc0 <CJK>
++<U6A9F> /x8f/xc5/xc1 <CJK>
++<U6AA5> /x8f/xc5/xc2 <CJK>
++<U6AAB> /x8f/xc5/xc3 <CJK>
++<U6AAF> /x8f/xc5/xc4 <CJK>
++<U6AB0> /x8f/xc5/xc5 <CJK>
++<U6AB1> /x8f/xc5/xc6 <CJK>
++<U6AB4> /x8f/xc5/xc7 <CJK>
++<U6ABD> /x8f/xc5/xc8 <CJK>
++<U6ABE> /x8f/xc5/xc9 <CJK>
++<U6ABF> /x8f/xc5/xca <CJK>
++<U6AC6> /x8f/xc5/xcb <CJK>
++<U6AC9> /x8f/xc5/xcc <CJK>
++<U6AC8> /x8f/xc5/xcd <CJK>
++<U6ACC> /x8f/xc5/xce <CJK>
++<U6AD0> /x8f/xc5/xcf <CJK>
++<U6AD4> /x8f/xc5/xd0 <CJK>
++<U6AD5> /x8f/xc5/xd1 <CJK>
++<U6AD6> /x8f/xc5/xd2 <CJK>
++<U6ADC> /x8f/xc5/xd3 <CJK>
++<U6ADD> /x8f/xc5/xd4 <CJK>
++<U6AE4> /x8f/xc5/xd5 <CJK>
++<U6AE7> /x8f/xc5/xd6 <CJK>
++<U6AEC> /x8f/xc5/xd7 <CJK>
++<U6AF0> /x8f/xc5/xd8 <CJK>
++<U6AF1> /x8f/xc5/xd9 <CJK>
++<U6AF2> /x8f/xc5/xda <CJK>
++<U6AFC> /x8f/xc5/xdb <CJK>
++<U6AFD> /x8f/xc5/xdc <CJK>
++<U6B02> /x8f/xc5/xdd <CJK>
++<U6B03> /x8f/xc5/xde <CJK>
++<U6B06> /x8f/xc5/xdf <CJK>
++<U6B07> /x8f/xc5/xe0 <CJK>
++<U6B09> /x8f/xc5/xe1 <CJK>
++<U6B0F> /x8f/xc5/xe2 <CJK>
++<U6B10> /x8f/xc5/xe3 <CJK>
++<U6B11> /x8f/xc5/xe4 <CJK>
++<U6B17> /x8f/xc5/xe5 <CJK>
++<U6B1B> /x8f/xc5/xe6 <CJK>
++<U6B1E> /x8f/xc5/xe7 <CJK>
++<U6B24> /x8f/xc5/xe8 <CJK>
++<U6B28> /x8f/xc5/xe9 <CJK>
++<U6B2B> /x8f/xc5/xea <CJK>
++<U6B2C> /x8f/xc5/xeb <CJK>
++<U6B2F> /x8f/xc5/xec <CJK>
++<U6B35> /x8f/xc5/xed <CJK>
++<U6B36> /x8f/xc5/xee <CJK>
++<U6B3B> /x8f/xc5/xef <CJK>
++<U6B3F> /x8f/xc5/xf0 <CJK>
++<U6B46> /x8f/xc5/xf1 <CJK>
++<U6B4A> /x8f/xc5/xf2 <CJK>
++<U6B4D> /x8f/xc5/xf3 <CJK>
++<U6B52> /x8f/xc5/xf4 <CJK>
++<U6B56> /x8f/xc5/xf5 <CJK>
++<U6B58> /x8f/xc5/xf6 <CJK>
++<U6B5D> /x8f/xc5/xf7 <CJK>
++<U6B60> /x8f/xc5/xf8 <CJK>
++<U6B67> /x8f/xc5/xf9 <CJK>
++<U6B6B> /x8f/xc5/xfa <CJK>
++<U6B6E> /x8f/xc5/xfb <CJK>
++<U6B70> /x8f/xc5/xfc <CJK>
++<U6B75> /x8f/xc5/xfd <CJK>
++<U6B7D> /x8f/xc5/xfe <CJK>
++<U6B7E> /x8f/xc6/xa1 <CJK>
++<U6B82> /x8f/xc6/xa2 <CJK>
++<U6B85> /x8f/xc6/xa3 <CJK>
++<U6B97> /x8f/xc6/xa4 <CJK>
++<U6B9B> /x8f/xc6/xa5 <CJK>
++<U6B9F> /x8f/xc6/xa6 <CJK>
++<U6BA0> /x8f/xc6/xa7 <CJK>
++<U6BA2> /x8f/xc6/xa8 <CJK>
++<U6BA3> /x8f/xc6/xa9 <CJK>
++<U6BA8> /x8f/xc6/xaa <CJK>
++<U6BA9> /x8f/xc6/xab <CJK>
++<U6BAC> /x8f/xc6/xac <CJK>
++<U6BAD> /x8f/xc6/xad <CJK>
++<U6BAE> /x8f/xc6/xae <CJK>
++<U6BB0> /x8f/xc6/xaf <CJK>
++<U6BB8> /x8f/xc6/xb0 <CJK>
++<U6BB9> /x8f/xc6/xb1 <CJK>
++<U6BBD> /x8f/xc6/xb2 <CJK>
++<U6BBE> /x8f/xc6/xb3 <CJK>
++<U6BC3> /x8f/xc6/xb4 <CJK>
++<U6BC4> /x8f/xc6/xb5 <CJK>
++<U6BC9> /x8f/xc6/xb6 <CJK>
++<U6BCC> /x8f/xc6/xb7 <CJK>
++<U6BD6> /x8f/xc6/xb8 <CJK>
++<U6BDA> /x8f/xc6/xb9 <CJK>
++<U6BE1> /x8f/xc6/xba <CJK>
++<U6BE3> /x8f/xc6/xbb <CJK>
++<U6BE6> /x8f/xc6/xbc <CJK>
++<U6BE7> /x8f/xc6/xbd <CJK>
++<U6BEE> /x8f/xc6/xbe <CJK>
++<U6BF1> /x8f/xc6/xbf <CJK>
++<U6BF7> /x8f/xc6/xc0 <CJK>
++<U6BF9> /x8f/xc6/xc1 <CJK>
++<U6BFF> /x8f/xc6/xc2 <CJK>
++<U6C02> /x8f/xc6/xc3 <CJK>
++<U6C04> /x8f/xc6/xc4 <CJK>
++<U6C05> /x8f/xc6/xc5 <CJK>
++<U6C09> /x8f/xc6/xc6 <CJK>
++<U6C0D> /x8f/xc6/xc7 <CJK>
++<U6C0E> /x8f/xc6/xc8 <CJK>
++<U6C10> /x8f/xc6/xc9 <CJK>
++<U6C12> /x8f/xc6/xca <CJK>
++<U6C19> /x8f/xc6/xcb <CJK>
++<U6C1F> /x8f/xc6/xcc <CJK>
++<U6C26> /x8f/xc6/xcd <CJK>
++<U6C27> /x8f/xc6/xce <CJK>
++<U6C28> /x8f/xc6/xcf <CJK>
++<U6C2C> /x8f/xc6/xd0 <CJK>
++<U6C2E> /x8f/xc6/xd1 <CJK>
++<U6C33> /x8f/xc6/xd2 <CJK>
++<U6C35> /x8f/xc6/xd3 <CJK>
++<U6C36> /x8f/xc6/xd4 <CJK>
++<U6C3A> /x8f/xc6/xd5 <CJK>
++<U6C3B> /x8f/xc6/xd6 <CJK>
++<U6C3F> /x8f/xc6/xd7 <CJK>
++<U6C4A> /x8f/xc6/xd8 <CJK>
++<U6C4B> /x8f/xc6/xd9 <CJK>
++<U6C4D> /x8f/xc6/xda <CJK>
++<U6C4F> /x8f/xc6/xdb <CJK>
++<U6C52> /x8f/xc6/xdc <CJK>
++<U6C54> /x8f/xc6/xdd <CJK>
++<U6C59> /x8f/xc6/xde <CJK>
++<U6C5B> /x8f/xc6/xdf <CJK>
++<U6C5C> /x8f/xc6/xe0 <CJK>
++<U6C6B> /x8f/xc6/xe1 <CJK>
++<U6C6D> /x8f/xc6/xe2 <CJK>
++<U6C6F> /x8f/xc6/xe3 <CJK>
++<U6C74> /x8f/xc6/xe4 <CJK>
++<U6C76> /x8f/xc6/xe5 <CJK>
++<U6C78> /x8f/xc6/xe6 <CJK>
++<U6C79> /x8f/xc6/xe7 <CJK>
++<U6C7B> /x8f/xc6/xe8 <CJK>
++<U6C85> /x8f/xc6/xe9 <CJK>
++<U6C86> /x8f/xc6/xea <CJK>
++<U6C87> /x8f/xc6/xeb <CJK>
++<U6C89> /x8f/xc6/xec <CJK>
++<U6C94> /x8f/xc6/xed <CJK>
++<U6C95> /x8f/xc6/xee <CJK>
++<U6C97> /x8f/xc6/xef <CJK>
++<U6C98> /x8f/xc6/xf0 <CJK>
++<U6C9C> /x8f/xc6/xf1 <CJK>
++<U6C9F> /x8f/xc6/xf2 <CJK>
++<U6CB0> /x8f/xc6/xf3 <CJK>
++<U6CB2> /x8f/xc6/xf4 <CJK>
++<U6CB4> /x8f/xc6/xf5 <CJK>
++<U6CC2> /x8f/xc6/xf6 <CJK>
++<U6CC6> /x8f/xc6/xf7 <CJK>
++<U6CCD> /x8f/xc6/xf8 <CJK>
++<U6CCF> /x8f/xc6/xf9 <CJK>
++<U6CD0> /x8f/xc6/xfa <CJK>
++<U6CD1> /x8f/xc6/xfb <CJK>
++<U6CD2> /x8f/xc6/xfc <CJK>
++<U6CD4> /x8f/xc6/xfd <CJK>
++<U6CD6> /x8f/xc6/xfe <CJK>
++<U6CDA> /x8f/xc7/xa1 <CJK>
++<U6CDC> /x8f/xc7/xa2 <CJK>
++<U6CE0> /x8f/xc7/xa3 <CJK>
++<U6CE7> /x8f/xc7/xa4 <CJK>
++<U6CE9> /x8f/xc7/xa5 <CJK>
++<U6CEB> /x8f/xc7/xa6 <CJK>
++<U6CEC> /x8f/xc7/xa7 <CJK>
++<U6CEE> /x8f/xc7/xa8 <CJK>
++<U6CF2> /x8f/xc7/xa9 <CJK>
++<U6CF4> /x8f/xc7/xaa <CJK>
++<U6D04> /x8f/xc7/xab <CJK>
++<U6D07> /x8f/xc7/xac <CJK>
++<U6D0A> /x8f/xc7/xad <CJK>
++<U6D0E> /x8f/xc7/xae <CJK>
++<U6D0F> /x8f/xc7/xaf <CJK>
++<U6D11> /x8f/xc7/xb0 <CJK>
++<U6D13> /x8f/xc7/xb1 <CJK>
++<U6D1A> /x8f/xc7/xb2 <CJK>
++<U6D26> /x8f/xc7/xb3 <CJK>
++<U6D27> /x8f/xc7/xb4 <CJK>
++<U6D28> /x8f/xc7/xb5 <CJK>
++<U6C67> /x8f/xc7/xb6 <CJK>
++<U6D2E> /x8f/xc7/xb7 <CJK>
++<U6D2F> /x8f/xc7/xb8 <CJK>
++<U6D31> /x8f/xc7/xb9 <CJK>
++<U6D39> /x8f/xc7/xba <CJK>
++<U6D3C> /x8f/xc7/xbb <CJK>
++<U6D3F> /x8f/xc7/xbc <CJK>
++<U6D57> /x8f/xc7/xbd <CJK>
++<U6D5E> /x8f/xc7/xbe <CJK>
++<U6D5F> /x8f/xc7/xbf <CJK>
++<U6D61> /x8f/xc7/xc0 <CJK>
++<U6D65> /x8f/xc7/xc1 <CJK>
++<U6D67> /x8f/xc7/xc2 <CJK>
++<U6D6F> /x8f/xc7/xc3 <CJK>
++<U6D70> /x8f/xc7/xc4 <CJK>
++<U6D7C> /x8f/xc7/xc5 <CJK>
++<U6D82> /x8f/xc7/xc6 <CJK>
++<U6D87> /x8f/xc7/xc7 <CJK>
++<U6D91> /x8f/xc7/xc8 <CJK>
++<U6D92> /x8f/xc7/xc9 <CJK>
++<U6D94> /x8f/xc7/xca <CJK>
++<U6D96> /x8f/xc7/xcb <CJK>
++<U6D97> /x8f/xc7/xcc <CJK>
++<U6D98> /x8f/xc7/xcd <CJK>
++<U6DAA> /x8f/xc7/xce <CJK>
++<U6DAC> /x8f/xc7/xcf <CJK>
++<U6DB4> /x8f/xc7/xd0 <CJK>
++<U6DB7> /x8f/xc7/xd1 <CJK>
++<U6DB9> /x8f/xc7/xd2 <CJK>
++<U6DBD> /x8f/xc7/xd3 <CJK>
++<U6DBF> /x8f/xc7/xd4 <CJK>
++<U6DC4> /x8f/xc7/xd5 <CJK>
++<U6DC8> /x8f/xc7/xd6 <CJK>
++<U6DCA> /x8f/xc7/xd7 <CJK>
++<U6DCE> /x8f/xc7/xd8 <CJK>
++<U6DCF> /x8f/xc7/xd9 <CJK>
++<U6DD6> /x8f/xc7/xda <CJK>
++<U6DDB> /x8f/xc7/xdb <CJK>
++<U6DDD> /x8f/xc7/xdc <CJK>
++<U6DDF> /x8f/xc7/xdd <CJK>
++<U6DE0> /x8f/xc7/xde <CJK>
++<U6DE2> /x8f/xc7/xdf <CJK>
++<U6DE5> /x8f/xc7/xe0 <CJK>
++<U6DE9> /x8f/xc7/xe1 <CJK>
++<U6DEF> /x8f/xc7/xe2 <CJK>
++<U6DF0> /x8f/xc7/xe3 <CJK>
++<U6DF4> /x8f/xc7/xe4 <CJK>
++<U6DF6> /x8f/xc7/xe5 <CJK>
++<U6DFC> /x8f/xc7/xe6 <CJK>
++<U6E00> /x8f/xc7/xe7 <CJK>
++<U6E04> /x8f/xc7/xe8 <CJK>
++<U6E1E> /x8f/xc7/xe9 <CJK>
++<U6E22> /x8f/xc7/xea <CJK>
++<U6E27> /x8f/xc7/xeb <CJK>
++<U6E32> /x8f/xc7/xec <CJK>
++<U6E36> /x8f/xc7/xed <CJK>
++<U6E39> /x8f/xc7/xee <CJK>
++<U6E3B> /x8f/xc7/xef <CJK>
++<U6E3C> /x8f/xc7/xf0 <CJK>
++<U6E44> /x8f/xc7/xf1 <CJK>
++<U6E45> /x8f/xc7/xf2 <CJK>
++<U6E48> /x8f/xc7/xf3 <CJK>
++<U6E49> /x8f/xc7/xf4 <CJK>
++<U6E4B> /x8f/xc7/xf5 <CJK>
++<U6E4F> /x8f/xc7/xf6 <CJK>
++<U6E51> /x8f/xc7/xf7 <CJK>
++<U6E52> /x8f/xc7/xf8 <CJK>
++<U6E53> /x8f/xc7/xf9 <CJK>
++<U6E54> /x8f/xc7/xfa <CJK>
++<U6E57> /x8f/xc7/xfb <CJK>
++<U6E5C> /x8f/xc7/xfc <CJK>
++<U6E5D> /x8f/xc7/xfd <CJK>
++<U6E5E> /x8f/xc7/xfe <CJK>
++<U6E62> /x8f/xc8/xa1 <CJK>
++<U6E63> /x8f/xc8/xa2 <CJK>
++<U6E68> /x8f/xc8/xa3 <CJK>
++<U6E73> /x8f/xc8/xa4 <CJK>
++<U6E7B> /x8f/xc8/xa5 <CJK>
++<U6E7D> /x8f/xc8/xa6 <CJK>
++<U6E8D> /x8f/xc8/xa7 <CJK>
++<U6E93> /x8f/xc8/xa8 <CJK>
++<U6E99> /x8f/xc8/xa9 <CJK>
++<U6EA0> /x8f/xc8/xaa <CJK>
++<U6EA7> /x8f/xc8/xab <CJK>
++<U6EAD> /x8f/xc8/xac <CJK>
++<U6EAE> /x8f/xc8/xad <CJK>
++<U6EB1> /x8f/xc8/xae <CJK>
++<U6EB3> /x8f/xc8/xaf <CJK>
++<U6EBB> /x8f/xc8/xb0 <CJK>
++<U6EBF> /x8f/xc8/xb1 <CJK>
++<U6EC0> /x8f/xc8/xb2 <CJK>
++<U6EC1> /x8f/xc8/xb3 <CJK>
++<U6EC3> /x8f/xc8/xb4 <CJK>
++<U6EC7> /x8f/xc8/xb5 <CJK>
++<U6EC8> /x8f/xc8/xb6 <CJK>
++<U6ECA> /x8f/xc8/xb7 <CJK>
++<U6ECD> /x8f/xc8/xb8 <CJK>
++<U6ECE> /x8f/xc8/xb9 <CJK>
++<U6ECF> /x8f/xc8/xba <CJK>
++<U6EEB> /x8f/xc8/xbb <CJK>
++<U6EED> /x8f/xc8/xbc <CJK>
++<U6EEE> /x8f/xc8/xbd <CJK>
++<U6EF9> /x8f/xc8/xbe <CJK>
++<U6EFB> /x8f/xc8/xbf <CJK>
++<U6EFD> /x8f/xc8/xc0 <CJK>
++<U6F04> /x8f/xc8/xc1 <CJK>
++<U6F08> /x8f/xc8/xc2 <CJK>
++<U6F0A> /x8f/xc8/xc3 <CJK>
++<U6F0C> /x8f/xc8/xc4 <CJK>
++<U6F0D> /x8f/xc8/xc5 <CJK>
++<U6F16> /x8f/xc8/xc6 <CJK>
++<U6F18> /x8f/xc8/xc7 <CJK>
++<U6F1A> /x8f/xc8/xc8 <CJK>
++<U6F1B> /x8f/xc8/xc9 <CJK>
++<U6F26> /x8f/xc8/xca <CJK>
++<U6F29> /x8f/xc8/xcb <CJK>
++<U6F2A> /x8f/xc8/xcc <CJK>
++<U6F2F> /x8f/xc8/xcd <CJK>
++<U6F30> /x8f/xc8/xce <CJK>
++<U6F33> /x8f/xc8/xcf <CJK>
++<U6F36> /x8f/xc8/xd0 <CJK>
++<U6F3B> /x8f/xc8/xd1 <CJK>
++<U6F3C> /x8f/xc8/xd2 <CJK>
++<U6F2D> /x8f/xc8/xd3 <CJK>
++<U6F4F> /x8f/xc8/xd4 <CJK>
++<U6F51> /x8f/xc8/xd5 <CJK>
++<U6F52> /x8f/xc8/xd6 <CJK>
++<U6F53> /x8f/xc8/xd7 <CJK>
++<U6F57> /x8f/xc8/xd8 <CJK>
++<U6F59> /x8f/xc8/xd9 <CJK>
++<U6F5A> /x8f/xc8/xda <CJK>
++<U6F5D> /x8f/xc8/xdb <CJK>
++<U6F5E> /x8f/xc8/xdc <CJK>
++<U6F61> /x8f/xc8/xdd <CJK>
++<U6F62> /x8f/xc8/xde <CJK>
++<U6F68> /x8f/xc8/xdf <CJK>
++<U6F6C> /x8f/xc8/xe0 <CJK>
++<U6F7D> /x8f/xc8/xe1 <CJK>
++<U6F7E> /x8f/xc8/xe2 <CJK>
++<U6F83> /x8f/xc8/xe3 <CJK>
++<U6F87> /x8f/xc8/xe4 <CJK>
++<U6F88> /x8f/xc8/xe5 <CJK>
++<U6F8B> /x8f/xc8/xe6 <CJK>
++<U6F8C> /x8f/xc8/xe7 <CJK>
++<U6F8D> /x8f/xc8/xe8 <CJK>
++<U6F90> /x8f/xc8/xe9 <CJK>
++<U6F92> /x8f/xc8/xea <CJK>
++<U6F93> /x8f/xc8/xeb <CJK>
++<U6F94> /x8f/xc8/xec <CJK>
++<U6F96> /x8f/xc8/xed <CJK>
++<U6F9A> /x8f/xc8/xee <CJK>
++<U6F9F> /x8f/xc8/xef <CJK>
++<U6FA0> /x8f/xc8/xf0 <CJK>
++<U6FA5> /x8f/xc8/xf1 <CJK>
++<U6FA6> /x8f/xc8/xf2 <CJK>
++<U6FA7> /x8f/xc8/xf3 <CJK>
++<U6FA8> /x8f/xc8/xf4 <CJK>
++<U6FAE> /x8f/xc8/xf5 <CJK>
++<U6FAF> /x8f/xc8/xf6 <CJK>
++<U6FB0> /x8f/xc8/xf7 <CJK>
++<U6FB5> /x8f/xc8/xf8 <CJK>
++<U6FB6> /x8f/xc8/xf9 <CJK>
++<U6FBC> /x8f/xc8/xfa <CJK>
++<U6FC5> /x8f/xc8/xfb <CJK>
++<U6FC7> /x8f/xc8/xfc <CJK>
++<U6FC8> /x8f/xc8/xfd <CJK>
++<U6FCA> /x8f/xc8/xfe <CJK>
++<U6FDA> /x8f/xc9/xa1 <CJK>
++<U6FDE> /x8f/xc9/xa2 <CJK>
++<U6FE8> /x8f/xc9/xa3 <CJK>
++<U6FE9> /x8f/xc9/xa4 <CJK>
++<U6FF0> /x8f/xc9/xa5 <CJK>
++<U6FF5> /x8f/xc9/xa6 <CJK>
++<U6FF9> /x8f/xc9/xa7 <CJK>
++<U6FFC> /x8f/xc9/xa8 <CJK>
++<U6FFD> /x8f/xc9/xa9 <CJK>
++<U7000> /x8f/xc9/xaa <CJK>
++<U7005> /x8f/xc9/xab <CJK>
++<U7006> /x8f/xc9/xac <CJK>
++<U7007> /x8f/xc9/xad <CJK>
++<U700D> /x8f/xc9/xae <CJK>
++<U7017> /x8f/xc9/xaf <CJK>
++<U7020> /x8f/xc9/xb0 <CJK>
++<U7023> /x8f/xc9/xb1 <CJK>
++<U702F> /x8f/xc9/xb2 <CJK>
++<U7034> /x8f/xc9/xb3 <CJK>
++<U7037> /x8f/xc9/xb4 <CJK>
++<U7039> /x8f/xc9/xb5 <CJK>
++<U703C> /x8f/xc9/xb6 <CJK>
++<U7043> /x8f/xc9/xb7 <CJK>
++<U7044> /x8f/xc9/xb8 <CJK>
++<U7048> /x8f/xc9/xb9 <CJK>
++<U7049> /x8f/xc9/xba <CJK>
++<U704A> /x8f/xc9/xbb <CJK>
++<U704B> /x8f/xc9/xbc <CJK>
++<U7054> /x8f/xc9/xbd <CJK>
++<U7055> /x8f/xc9/xbe <CJK>
++<U705D> /x8f/xc9/xbf <CJK>
++<U705E> /x8f/xc9/xc0 <CJK>
++<U704E> /x8f/xc9/xc1 <CJK>
++<U7064> /x8f/xc9/xc2 <CJK>
++<U7065> /x8f/xc9/xc3 <CJK>
++<U706C> /x8f/xc9/xc4 <CJK>
++<U706E> /x8f/xc9/xc5 <CJK>
++<U7075> /x8f/xc9/xc6 <CJK>
++<U7076> /x8f/xc9/xc7 <CJK>
++<U707E> /x8f/xc9/xc8 <CJK>
++<U7081> /x8f/xc9/xc9 <CJK>
++<U7085> /x8f/xc9/xca <CJK>
++<U7086> /x8f/xc9/xcb <CJK>
++<U7094> /x8f/xc9/xcc <CJK>
++<U7095> /x8f/xc9/xcd <CJK>
++<U7096> /x8f/xc9/xce <CJK>
++<U7097> /x8f/xc9/xcf <CJK>
++<U7098> /x8f/xc9/xd0 <CJK>
++<U709B> /x8f/xc9/xd1 <CJK>
++<U70A4> /x8f/xc9/xd2 <CJK>
++<U70AB> /x8f/xc9/xd3 <CJK>
++<U70B0> /x8f/xc9/xd4 <CJK>
++<U70B1> /x8f/xc9/xd5 <CJK>
++<U70B4> /x8f/xc9/xd6 <CJK>
++<U70B7> /x8f/xc9/xd7 <CJK>
++<U70CA> /x8f/xc9/xd8 <CJK>
++<U70D1> /x8f/xc9/xd9 <CJK>
++<U70D3> /x8f/xc9/xda <CJK>
++<U70D4> /x8f/xc9/xdb <CJK>
++<U70D5> /x8f/xc9/xdc <CJK>
++<U70D6> /x8f/xc9/xdd <CJK>
++<U70D8> /x8f/xc9/xde <CJK>
++<U70DC> /x8f/xc9/xdf <CJK>
++<U70E4> /x8f/xc9/xe0 <CJK>
++<U70FA> /x8f/xc9/xe1 <CJK>
++<U7103> /x8f/xc9/xe2 <CJK>
++<U7104> /x8f/xc9/xe3 <CJK>
++<U7105> /x8f/xc9/xe4 <CJK>
++<U7106> /x8f/xc9/xe5 <CJK>
++<U7107> /x8f/xc9/xe6 <CJK>
++<U710B> /x8f/xc9/xe7 <CJK>
++<U710C> /x8f/xc9/xe8 <CJK>
++<U710F> /x8f/xc9/xe9 <CJK>
++<U711E> /x8f/xc9/xea <CJK>
++<U7120> /x8f/xc9/xeb <CJK>
++<U712B> /x8f/xc9/xec <CJK>
++<U712D> /x8f/xc9/xed <CJK>
++<U712F> /x8f/xc9/xee <CJK>
++<U7130> /x8f/xc9/xef <CJK>
++<U7131> /x8f/xc9/xf0 <CJK>
++<U7138> /x8f/xc9/xf1 <CJK>
++<U7141> /x8f/xc9/xf2 <CJK>
++<U7145> /x8f/xc9/xf3 <CJK>
++<U7146> /x8f/xc9/xf4 <CJK>
++<U7147> /x8f/xc9/xf5 <CJK>
++<U714A> /x8f/xc9/xf6 <CJK>
++<U714B> /x8f/xc9/xf7 <CJK>
++<U7150> /x8f/xc9/xf8 <CJK>
++<U7152> /x8f/xc9/xf9 <CJK>
++<U7157> /x8f/xc9/xfa <CJK>
++<U715A> /x8f/xc9/xfb <CJK>
++<U715C> /x8f/xc9/xfc <CJK>
++<U715E> /x8f/xc9/xfd <CJK>
++<U7160> /x8f/xc9/xfe <CJK>
++<U7168> /x8f/xca/xa1 <CJK>
++<U7179> /x8f/xca/xa2 <CJK>
++<U7180> /x8f/xca/xa3 <CJK>
++<U7185> /x8f/xca/xa4 <CJK>
++<U7187> /x8f/xca/xa5 <CJK>
++<U718C> /x8f/xca/xa6 <CJK>
++<U7192> /x8f/xca/xa7 <CJK>
++<U719A> /x8f/xca/xa8 <CJK>
++<U719B> /x8f/xca/xa9 <CJK>
++<U71A0> /x8f/xca/xaa <CJK>
++<U71A2> /x8f/xca/xab <CJK>
++<U71AF> /x8f/xca/xac <CJK>
++<U71B0> /x8f/xca/xad <CJK>
++<U71B2> /x8f/xca/xae <CJK>
++<U71B3> /x8f/xca/xaf <CJK>
++<U71BA> /x8f/xca/xb0 <CJK>
++<U71BF> /x8f/xca/xb1 <CJK>
++<U71C0> /x8f/xca/xb2 <CJK>
++<U71C1> /x8f/xca/xb3 <CJK>
++<U71C4> /x8f/xca/xb4 <CJK>
++<U71CB> /x8f/xca/xb5 <CJK>
++<U71CC> /x8f/xca/xb6 <CJK>
++<U71D3> /x8f/xca/xb7 <CJK>
++<U71D6> /x8f/xca/xb8 <CJK>
++<U71D9> /x8f/xca/xb9 <CJK>
++<U71DA> /x8f/xca/xba <CJK>
++<U71DC> /x8f/xca/xbb <CJK>
++<U71F8> /x8f/xca/xbc <CJK>
++<U71FE> /x8f/xca/xbd <CJK>
++<U7200> /x8f/xca/xbe <CJK>
++<U7207> /x8f/xca/xbf <CJK>
++<U7208> /x8f/xca/xc0 <CJK>
++<U7209> /x8f/xca/xc1 <CJK>
++<U7213> /x8f/xca/xc2 <CJK>
++<U7217> /x8f/xca/xc3 <CJK>
++<U721A> /x8f/xca/xc4 <CJK>
++<U721D> /x8f/xca/xc5 <CJK>
++<U721F> /x8f/xca/xc6 <CJK>
++<U7224> /x8f/xca/xc7 <CJK>
++<U722B> /x8f/xca/xc8 <CJK>
++<U722F> /x8f/xca/xc9 <CJK>
++<U7234> /x8f/xca/xca <CJK>
++<U7238> /x8f/xca/xcb <CJK>
++<U7239> /x8f/xca/xcc <CJK>
++<U7241> /x8f/xca/xcd <CJK>
++<U7242> /x8f/xca/xce <CJK>
++<U7243> /x8f/xca/xcf <CJK>
++<U7245> /x8f/xca/xd0 <CJK>
++<U724E> /x8f/xca/xd1 <CJK>
++<U724F> /x8f/xca/xd2 <CJK>
++<U7250> /x8f/xca/xd3 <CJK>
++<U7253> /x8f/xca/xd4 <CJK>
++<U7255> /x8f/xca/xd5 <CJK>
++<U7256> /x8f/xca/xd6 <CJK>
++<U725A> /x8f/xca/xd7 <CJK>
++<U725C> /x8f/xca/xd8 <CJK>
++<U725E> /x8f/xca/xd9 <CJK>
++<U7260> /x8f/xca/xda <CJK>
++<U7263> /x8f/xca/xdb <CJK>
++<U7268> /x8f/xca/xdc <CJK>
++<U726B> /x8f/xca/xdd <CJK>
++<U726E> /x8f/xca/xde <CJK>
++<U726F> /x8f/xca/xdf <CJK>
++<U7271> /x8f/xca/xe0 <CJK>
++<U7277> /x8f/xca/xe1 <CJK>
++<U7278> /x8f/xca/xe2 <CJK>
++<U727B> /x8f/xca/xe3 <CJK>
++<U727C> /x8f/xca/xe4 <CJK>
++<U727F> /x8f/xca/xe5 <CJK>
++<U7284> /x8f/xca/xe6 <CJK>
++<U7289> /x8f/xca/xe7 <CJK>
++<U728D> /x8f/xca/xe8 <CJK>
++<U728E> /x8f/xca/xe9 <CJK>
++<U7293> /x8f/xca/xea <CJK>
++<U729B> /x8f/xca/xeb <CJK>
++<U72A8> /x8f/xca/xec <CJK>
++<U72AD> /x8f/xca/xed <CJK>
++<U72AE> /x8f/xca/xee <CJK>
++<U72B1> /x8f/xca/xef <CJK>
++<U72B4> /x8f/xca/xf0 <CJK>
++<U72BE> /x8f/xca/xf1 <CJK>
++<U72C1> /x8f/xca/xf2 <CJK>
++<U72C7> /x8f/xca/xf3 <CJK>
++<U72C9> /x8f/xca/xf4 <CJK>
++<U72CC> /x8f/xca/xf5 <CJK>
++<U72D5> /x8f/xca/xf6 <CJK>
++<U72D6> /x8f/xca/xf7 <CJK>
++<U72D8> /x8f/xca/xf8 <CJK>
++<U72DF> /x8f/xca/xf9 <CJK>
++<U72E5> /x8f/xca/xfa <CJK>
++<U72F3> /x8f/xca/xfb <CJK>
++<U72F4> /x8f/xca/xfc <CJK>
++<U72FA> /x8f/xca/xfd <CJK>
++<U72FB> /x8f/xca/xfe <CJK>
++<U72FE> /x8f/xcb/xa1 <CJK>
++<U7302> /x8f/xcb/xa2 <CJK>
++<U7304> /x8f/xcb/xa3 <CJK>
++<U7305> /x8f/xcb/xa4 <CJK>
++<U7307> /x8f/xcb/xa5 <CJK>
++<U730B> /x8f/xcb/xa6 <CJK>
++<U730D> /x8f/xcb/xa7 <CJK>
++<U7312> /x8f/xcb/xa8 <CJK>
++<U7313> /x8f/xcb/xa9 <CJK>
++<U7318> /x8f/xcb/xaa <CJK>
++<U7319> /x8f/xcb/xab <CJK>
++<U731E> /x8f/xcb/xac <CJK>
++<U7322> /x8f/xcb/xad <CJK>
++<U7324> /x8f/xcb/xae <CJK>
++<U7327> /x8f/xcb/xaf <CJK>
++<U7328> /x8f/xcb/xb0 <CJK>
++<U732C> /x8f/xcb/xb1 <CJK>
++<U7331> /x8f/xcb/xb2 <CJK>
++<U7332> /x8f/xcb/xb3 <CJK>
++<U7335> /x8f/xcb/xb4 <CJK>
++<U733A> /x8f/xcb/xb5 <CJK>
++<U733B> /x8f/xcb/xb6 <CJK>
++<U733D> /x8f/xcb/xb7 <CJK>
++<U7343> /x8f/xcb/xb8 <CJK>
++<U734D> /x8f/xcb/xb9 <CJK>
++<U7350> /x8f/xcb/xba <CJK>
++<U7352> /x8f/xcb/xbb <CJK>
++<U7356> /x8f/xcb/xbc <CJK>
++<U7358> /x8f/xcb/xbd <CJK>
++<U735D> /x8f/xcb/xbe <CJK>
++<U735E> /x8f/xcb/xbf <CJK>
++<U735F> /x8f/xcb/xc0 <CJK>
++<U7360> /x8f/xcb/xc1 <CJK>
++<U7366> /x8f/xcb/xc2 <CJK>
++<U7367> /x8f/xcb/xc3 <CJK>
++<U7369> /x8f/xcb/xc4 <CJK>
++<U736B> /x8f/xcb/xc5 <CJK>
++<U736C> /x8f/xcb/xc6 <CJK>
++<U736E> /x8f/xcb/xc7 <CJK>
++<U736F> /x8f/xcb/xc8 <CJK>
++<U7371> /x8f/xcb/xc9 <CJK>
++<U7377> /x8f/xcb/xca <CJK>
++<U7379> /x8f/xcb/xcb <CJK>
++<U737C> /x8f/xcb/xcc <CJK>
++<U7380> /x8f/xcb/xcd <CJK>
++<U7381> /x8f/xcb/xce <CJK>
++<U7383> /x8f/xcb/xcf <CJK>
++<U7385> /x8f/xcb/xd0 <CJK>
++<U7386> /x8f/xcb/xd1 <CJK>
++<U738E> /x8f/xcb/xd2 <CJK>
++<U7390> /x8f/xcb/xd3 <CJK>
++<U7393> /x8f/xcb/xd4 <CJK>
++<U7395> /x8f/xcb/xd5 <CJK>
++<U7397> /x8f/xcb/xd6 <CJK>
++<U7398> /x8f/xcb/xd7 <CJK>
++<U739C> /x8f/xcb/xd8 <CJK>
++<U739E> /x8f/xcb/xd9 <CJK>
++<U739F> /x8f/xcb/xda <CJK>
++<U73A0> /x8f/xcb/xdb <CJK>
++<U73A2> /x8f/xcb/xdc <CJK>
++<U73A5> /x8f/xcb/xdd <CJK>
++<U73A6> /x8f/xcb/xde <CJK>
++<U73AA> /x8f/xcb/xdf <CJK>
++<U73AB> /x8f/xcb/xe0 <CJK>
++<U73AD> /x8f/xcb/xe1 <CJK>
++<U73B5> /x8f/xcb/xe2 <CJK>
++<U73B7> /x8f/xcb/xe3 <CJK>
++<U73B9> /x8f/xcb/xe4 <CJK>
++<U73BC> /x8f/xcb/xe5 <CJK>
++<U73BD> /x8f/xcb/xe6 <CJK>
++<U73BF> /x8f/xcb/xe7 <CJK>
++<U73C5> /x8f/xcb/xe8 <CJK>
++<U73C6> /x8f/xcb/xe9 <CJK>
++<U73C9> /x8f/xcb/xea <CJK>
++<U73CB> /x8f/xcb/xeb <CJK>
++<U73CC> /x8f/xcb/xec <CJK>
++<U73CF> /x8f/xcb/xed <CJK>
++<U73D2> /x8f/xcb/xee <CJK>
++<U73D3> /x8f/xcb/xef <CJK>
++<U73D6> /x8f/xcb/xf0 <CJK>
++<U73D9> /x8f/xcb/xf1 <CJK>
++<U73DD> /x8f/xcb/xf2 <CJK>
++<U73E1> /x8f/xcb/xf3 <CJK>
++<U73E3> /x8f/xcb/xf4 <CJK>
++<U73E6> /x8f/xcb/xf5 <CJK>
++<U73E7> /x8f/xcb/xf6 <CJK>
++<U73E9> /x8f/xcb/xf7 <CJK>
++<U73F4> /x8f/xcb/xf8 <CJK>
++<U73F5> /x8f/xcb/xf9 <CJK>
++<U73F7> /x8f/xcb/xfa <CJK>
++<U73F9> /x8f/xcb/xfb <CJK>
++<U73FA> /x8f/xcb/xfc <CJK>
++<U73FB> /x8f/xcb/xfd <CJK>
++<U73FD> /x8f/xcb/xfe <CJK>
++<U73FF> /x8f/xcc/xa1 <CJK>
++<U7400> /x8f/xcc/xa2 <CJK>
++<U7401> /x8f/xcc/xa3 <CJK>
++<U7404> /x8f/xcc/xa4 <CJK>
++<U7407> /x8f/xcc/xa5 <CJK>
++<U740A> /x8f/xcc/xa6 <CJK>
++<U7411> /x8f/xcc/xa7 <CJK>
++<U741A> /x8f/xcc/xa8 <CJK>
++<U741B> /x8f/xcc/xa9 <CJK>
++<U7424> /x8f/xcc/xaa <CJK>
++<U7426> /x8f/xcc/xab <CJK>
++<U7428> /x8f/xcc/xac <CJK>
++<U7429> /x8f/xcc/xad <CJK>
++<U742A> /x8f/xcc/xae <CJK>
++<U742B> /x8f/xcc/xaf <CJK>
++<U742C> /x8f/xcc/xb0 <CJK>
++<U742D> /x8f/xcc/xb1 <CJK>
++<U742E> /x8f/xcc/xb2 <CJK>
++<U742F> /x8f/xcc/xb3 <CJK>
++<U7430> /x8f/xcc/xb4 <CJK>
++<U7431> /x8f/xcc/xb5 <CJK>
++<U7439> /x8f/xcc/xb6 <CJK>
++<U7440> /x8f/xcc/xb7 <CJK>
++<U7443> /x8f/xcc/xb8 <CJK>
++<U7444> /x8f/xcc/xb9 <CJK>
++<U7446> /x8f/xcc/xba <CJK>
++<U7447> /x8f/xcc/xbb <CJK>
++<U744B> /x8f/xcc/xbc <CJK>
++<U744D> /x8f/xcc/xbd <CJK>
++<U7451> /x8f/xcc/xbe <CJK>
++<U7452> /x8f/xcc/xbf <CJK>
++<U7457> /x8f/xcc/xc0 <CJK>
++<U745D> /x8f/xcc/xc1 <CJK>
++<U7462> /x8f/xcc/xc2 <CJK>
++<U7466> /x8f/xcc/xc3 <CJK>
++<U7467> /x8f/xcc/xc4 <CJK>
++<U7468> /x8f/xcc/xc5 <CJK>
++<U746B> /x8f/xcc/xc6 <CJK>
++<U746D> /x8f/xcc/xc7 <CJK>
++<U746E> /x8f/xcc/xc8 <CJK>
++<U7471> /x8f/xcc/xc9 <CJK>
++<U7472> /x8f/xcc/xca <CJK>
++<U7480> /x8f/xcc/xcb <CJK>
++<U7481> /x8f/xcc/xcc <CJK>
++<U7485> /x8f/xcc/xcd <CJK>
++<U7486> /x8f/xcc/xce <CJK>
++<U7487> /x8f/xcc/xcf <CJK>
++<U7489> /x8f/xcc/xd0 <CJK>
++<U748F> /x8f/xcc/xd1 <CJK>
++<U7490> /x8f/xcc/xd2 <CJK>
++<U7491> /x8f/xcc/xd3 <CJK>
++<U7492> /x8f/xcc/xd4 <CJK>
++<U7498> /x8f/xcc/xd5 <CJK>
++<U7499> /x8f/xcc/xd6 <CJK>
++<U749A> /x8f/xcc/xd7 <CJK>
++<U749C> /x8f/xcc/xd8 <CJK>
++<U749F> /x8f/xcc/xd9 <CJK>
++<U74A0> /x8f/xcc/xda <CJK>
++<U74A1> /x8f/xcc/xdb <CJK>
++<U74A3> /x8f/xcc/xdc <CJK>
++<U74A6> /x8f/xcc/xdd <CJK>
++<U74A8> /x8f/xcc/xde <CJK>
++<U74A9> /x8f/xcc/xdf <CJK>
++<U74AA> /x8f/xcc/xe0 <CJK>
++<U74AB> /x8f/xcc/xe1 <CJK>
++<U74AE> /x8f/xcc/xe2 <CJK>
++<U74AF> /x8f/xcc/xe3 <CJK>
++<U74B1> /x8f/xcc/xe4 <CJK>
++<U74B2> /x8f/xcc/xe5 <CJK>
++<U74B5> /x8f/xcc/xe6 <CJK>
++<U74B9> /x8f/xcc/xe7 <CJK>
++<U74BB> /x8f/xcc/xe8 <CJK>
++<U74BF> /x8f/xcc/xe9 <CJK>
++<U74C8> /x8f/xcc/xea <CJK>
++<U74C9> /x8f/xcc/xeb <CJK>
++<U74CC> /x8f/xcc/xec <CJK>
++<U74D0> /x8f/xcc/xed <CJK>
++<U74D3> /x8f/xcc/xee <CJK>
++<U74D8> /x8f/xcc/xef <CJK>
++<U74DA> /x8f/xcc/xf0 <CJK>
++<U74DB> /x8f/xcc/xf1 <CJK>
++<U74DE> /x8f/xcc/xf2 <CJK>
++<U74DF> /x8f/xcc/xf3 <CJK>
++<U74E4> /x8f/xcc/xf4 <CJK>
++<U74E8> /x8f/xcc/xf5 <CJK>
++<U74EA> /x8f/xcc/xf6 <CJK>
++<U74EB> /x8f/xcc/xf7 <CJK>
++<U74EF> /x8f/xcc/xf8 <CJK>
++<U74F4> /x8f/xcc/xf9 <CJK>
++<U74FA> /x8f/xcc/xfa <CJK>
++<U74FB> /x8f/xcc/xfb <CJK>
++<U74FC> /x8f/xcc/xfc <CJK>
++<U74FF> /x8f/xcc/xfd <CJK>
++<U7506> /x8f/xcc/xfe <CJK>
++<U7512> /x8f/xcd/xa1 <CJK>
++<U7516> /x8f/xcd/xa2 <CJK>
++<U7517> /x8f/xcd/xa3 <CJK>
++<U7520> /x8f/xcd/xa4 <CJK>
++<U7521> /x8f/xcd/xa5 <CJK>
++<U7524> /x8f/xcd/xa6 <CJK>
++<U7527> /x8f/xcd/xa7 <CJK>
++<U7529> /x8f/xcd/xa8 <CJK>
++<U752A> /x8f/xcd/xa9 <CJK>
++<U752F> /x8f/xcd/xaa <CJK>
++<U7536> /x8f/xcd/xab <CJK>
++<U7539> /x8f/xcd/xac <CJK>
++<U753D> /x8f/xcd/xad <CJK>
++<U753E> /x8f/xcd/xae <CJK>
++<U753F> /x8f/xcd/xaf <CJK>
++<U7540> /x8f/xcd/xb0 <CJK>
++<U7543> /x8f/xcd/xb1 <CJK>
++<U7547> /x8f/xcd/xb2 <CJK>
++<U7548> /x8f/xcd/xb3 <CJK>
++<U754E> /x8f/xcd/xb4 <CJK>
++<U7550> /x8f/xcd/xb5 <CJK>
++<U7552> /x8f/xcd/xb6 <CJK>
++<U7557> /x8f/xcd/xb7 <CJK>
++<U755E> /x8f/xcd/xb8 <CJK>
++<U755F> /x8f/xcd/xb9 <CJK>
++<U7561> /x8f/xcd/xba <CJK>
++<U756F> /x8f/xcd/xbb <CJK>
++<U7571> /x8f/xcd/xbc <CJK>
++<U7579> /x8f/xcd/xbd <CJK>
++<U757A> /x8f/xcd/xbe <CJK>
++<U757B> /x8f/xcd/xbf <CJK>
++<U757C> /x8f/xcd/xc0 <CJK>
++<U757D> /x8f/xcd/xc1 <CJK>
++<U757E> /x8f/xcd/xc2 <CJK>
++<U7581> /x8f/xcd/xc3 <CJK>
++<U7585> /x8f/xcd/xc4 <CJK>
++<U7590> /x8f/xcd/xc5 <CJK>
++<U7592> /x8f/xcd/xc6 <CJK>
++<U7593> /x8f/xcd/xc7 <CJK>
++<U7595> /x8f/xcd/xc8 <CJK>
++<U7599> /x8f/xcd/xc9 <CJK>
++<U759C> /x8f/xcd/xca <CJK>
++<U75A2> /x8f/xcd/xcb <CJK>
++<U75A4> /x8f/xcd/xcc <CJK>
++<U75B4> /x8f/xcd/xcd <CJK>
++<U75BA> /x8f/xcd/xce <CJK>
++<U75BF> /x8f/xcd/xcf <CJK>
++<U75C0> /x8f/xcd/xd0 <CJK>
++<U75C1> /x8f/xcd/xd1 <CJK>
++<U75C4> /x8f/xcd/xd2 <CJK>
++<U75C6> /x8f/xcd/xd3 <CJK>
++<U75CC> /x8f/xcd/xd4 <CJK>
++<U75CE> /x8f/xcd/xd5 <CJK>
++<U75CF> /x8f/xcd/xd6 <CJK>
++<U75D7> /x8f/xcd/xd7 <CJK>
++<U75DC> /x8f/xcd/xd8 <CJK>
++<U75DF> /x8f/xcd/xd9 <CJK>
++<U75E0> /x8f/xcd/xda <CJK>
++<U75E1> /x8f/xcd/xdb <CJK>
++<U75E4> /x8f/xcd/xdc <CJK>
++<U75E7> /x8f/xcd/xdd <CJK>
++<U75EC> /x8f/xcd/xde <CJK>
++<U75EE> /x8f/xcd/xdf <CJK>
++<U75EF> /x8f/xcd/xe0 <CJK>
++<U75F1> /x8f/xcd/xe1 <CJK>
++<U75F9> /x8f/xcd/xe2 <CJK>
++<U7600> /x8f/xcd/xe3 <CJK>
++<U7602> /x8f/xcd/xe4 <CJK>
++<U7603> /x8f/xcd/xe5 <CJK>
++<U7604> /x8f/xcd/xe6 <CJK>
++<U7607> /x8f/xcd/xe7 <CJK>
++<U7608> /x8f/xcd/xe8 <CJK>
++<U760A> /x8f/xcd/xe9 <CJK>
++<U760C> /x8f/xcd/xea <CJK>
++<U760F> /x8f/xcd/xeb <CJK>
++<U7612> /x8f/xcd/xec <CJK>
++<U7613> /x8f/xcd/xed <CJK>
++<U7615> /x8f/xcd/xee <CJK>
++<U7616> /x8f/xcd/xef <CJK>
++<U7619> /x8f/xcd/xf0 <CJK>
++<U761B> /x8f/xcd/xf1 <CJK>
++<U761C> /x8f/xcd/xf2 <CJK>
++<U761D> /x8f/xcd/xf3 <CJK>
++<U761E> /x8f/xcd/xf4 <CJK>
++<U7623> /x8f/xcd/xf5 <CJK>
++<U7625> /x8f/xcd/xf6 <CJK>
++<U7626> /x8f/xcd/xf7 <CJK>
++<U7629> /x8f/xcd/xf8 <CJK>
++<U762D> /x8f/xcd/xf9 <CJK>
++<U7632> /x8f/xcd/xfa <CJK>
++<U7633> /x8f/xcd/xfb <CJK>
++<U7635> /x8f/xcd/xfc <CJK>
++<U7638> /x8f/xcd/xfd <CJK>
++<U7639> /x8f/xcd/xfe <CJK>
++<U763A> /x8f/xce/xa1 <CJK>
++<U763C> /x8f/xce/xa2 <CJK>
++<U764A> /x8f/xce/xa3 <CJK>
++<U7640> /x8f/xce/xa4 <CJK>
++<U7641> /x8f/xce/xa5 <CJK>
++<U7643> /x8f/xce/xa6 <CJK>
++<U7644> /x8f/xce/xa7 <CJK>
++<U7645> /x8f/xce/xa8 <CJK>
++<U7649> /x8f/xce/xa9 <CJK>
++<U764B> /x8f/xce/xaa <CJK>
++<U7655> /x8f/xce/xab <CJK>
++<U7659> /x8f/xce/xac <CJK>
++<U765F> /x8f/xce/xad <CJK>
++<U7664> /x8f/xce/xae <CJK>
++<U7665> /x8f/xce/xaf <CJK>
++<U766D> /x8f/xce/xb0 <CJK>
++<U766E> /x8f/xce/xb1 <CJK>
++<U766F> /x8f/xce/xb2 <CJK>
++<U7671> /x8f/xce/xb3 <CJK>
++<U7674> /x8f/xce/xb4 <CJK>
++<U7681> /x8f/xce/xb5 <CJK>
++<U7685> /x8f/xce/xb6 <CJK>
++<U768C> /x8f/xce/xb7 <CJK>
++<U768D> /x8f/xce/xb8 <CJK>
++<U7695> /x8f/xce/xb9 <CJK>
++<U769B> /x8f/xce/xba <CJK>
++<U769C> /x8f/xce/xbb <CJK>
++<U769D> /x8f/xce/xbc <CJK>
++<U769F> /x8f/xce/xbd <CJK>
++<U76A0> /x8f/xce/xbe <CJK>
++<U76A2> /x8f/xce/xbf <CJK>
++<U76A3> /x8f/xce/xc0 <CJK>
++<U76A4> /x8f/xce/xc1 <CJK>
++<U76A5> /x8f/xce/xc2 <CJK>
++<U76A6> /x8f/xce/xc3 <CJK>
++<U76A7> /x8f/xce/xc4 <CJK>
++<U76A8> /x8f/xce/xc5 <CJK>
++<U76AA> /x8f/xce/xc6 <CJK>
++<U76AD> /x8f/xce/xc7 <CJK>
++<U76BD> /x8f/xce/xc8 <CJK>
++<U76C1> /x8f/xce/xc9 <CJK>
++<U76C5> /x8f/xce/xca <CJK>
++<U76C9> /x8f/xce/xcb <CJK>
++<U76CB> /x8f/xce/xcc <CJK>
++<U76CC> /x8f/xce/xcd <CJK>
++<U76CE> /x8f/xce/xce <CJK>
++<U76D4> /x8f/xce/xcf <CJK>
++<U76D9> /x8f/xce/xd0 <CJK>
++<U76E0> /x8f/xce/xd1 <CJK>
++<U76E6> /x8f/xce/xd2 <CJK>
++<U76E8> /x8f/xce/xd3 <CJK>
++<U76EC> /x8f/xce/xd4 <CJK>
++<U76F0> /x8f/xce/xd5 <CJK>
++<U76F1> /x8f/xce/xd6 <CJK>
++<U76F6> /x8f/xce/xd7 <CJK>
++<U76F9> /x8f/xce/xd8 <CJK>
++<U76FC> /x8f/xce/xd9 <CJK>
++<U7700> /x8f/xce/xda <CJK>
++<U7706> /x8f/xce/xdb <CJK>
++<U770A> /x8f/xce/xdc <CJK>
++<U770E> /x8f/xce/xdd <CJK>
++<U7712> /x8f/xce/xde <CJK>
++<U7714> /x8f/xce/xdf <CJK>
++<U7715> /x8f/xce/xe0 <CJK>
++<U7717> /x8f/xce/xe1 <CJK>
++<U7719> /x8f/xce/xe2 <CJK>
++<U771A> /x8f/xce/xe3 <CJK>
++<U771C> /x8f/xce/xe4 <CJK>
++<U7722> /x8f/xce/xe5 <CJK>
++<U7728> /x8f/xce/xe6 <CJK>
++<U772D> /x8f/xce/xe7 <CJK>
++<U772E> /x8f/xce/xe8 <CJK>
++<U772F> /x8f/xce/xe9 <CJK>
++<U7734> /x8f/xce/xea <CJK>
++<U7735> /x8f/xce/xeb <CJK>
++<U7736> /x8f/xce/xec <CJK>
++<U7739> /x8f/xce/xed <CJK>
++<U773D> /x8f/xce/xee <CJK>
++<U773E> /x8f/xce/xef <CJK>
++<U7742> /x8f/xce/xf0 <CJK>
++<U7745> /x8f/xce/xf1 <CJK>
++<U7746> /x8f/xce/xf2 <CJK>
++<U774A> /x8f/xce/xf3 <CJK>
++<U774D> /x8f/xce/xf4 <CJK>
++<U774E> /x8f/xce/xf5 <CJK>
++<U774F> /x8f/xce/xf6 <CJK>
++<U7752> /x8f/xce/xf7 <CJK>
++<U7756> /x8f/xce/xf8 <CJK>
++<U7757> /x8f/xce/xf9 <CJK>
++<U775C> /x8f/xce/xfa <CJK>
++<U775E> /x8f/xce/xfb <CJK>
++<U775F> /x8f/xce/xfc <CJK>
++<U7760> /x8f/xce/xfd <CJK>
++<U7762> /x8f/xce/xfe <CJK>
++<U7764> /x8f/xcf/xa1 <CJK>
++<U7767> /x8f/xcf/xa2 <CJK>
++<U776A> /x8f/xcf/xa3 <CJK>
++<U776C> /x8f/xcf/xa4 <CJK>
++<U7770> /x8f/xcf/xa5 <CJK>
++<U7772> /x8f/xcf/xa6 <CJK>
++<U7773> /x8f/xcf/xa7 <CJK>
++<U7774> /x8f/xcf/xa8 <CJK>
++<U777A> /x8f/xcf/xa9 <CJK>
++<U777D> /x8f/xcf/xaa <CJK>
++<U7780> /x8f/xcf/xab <CJK>
++<U7784> /x8f/xcf/xac <CJK>
++<U778C> /x8f/xcf/xad <CJK>
++<U778D> /x8f/xcf/xae <CJK>
++<U7794> /x8f/xcf/xaf <CJK>
++<U7795> /x8f/xcf/xb0 <CJK>
++<U7796> /x8f/xcf/xb1 <CJK>
++<U779A> /x8f/xcf/xb2 <CJK>
++<U779F> /x8f/xcf/xb3 <CJK>
++<U77A2> /x8f/xcf/xb4 <CJK>
++<U77A7> /x8f/xcf/xb5 <CJK>
++<U77AA> /x8f/xcf/xb6 <CJK>
++<U77AE> /x8f/xcf/xb7 <CJK>
++<U77AF> /x8f/xcf/xb8 <CJK>
++<U77B1> /x8f/xcf/xb9 <CJK>
++<U77B5> /x8f/xcf/xba <CJK>
++<U77BE> /x8f/xcf/xbb <CJK>
++<U77C3> /x8f/xcf/xbc <CJK>
++<U77C9> /x8f/xcf/xbd <CJK>
++<U77D1> /x8f/xcf/xbe <CJK>
++<U77D2> /x8f/xcf/xbf <CJK>
++<U77D5> /x8f/xcf/xc0 <CJK>
++<U77D9> /x8f/xcf/xc1 <CJK>
++<U77DE> /x8f/xcf/xc2 <CJK>
++<U77DF> /x8f/xcf/xc3 <CJK>
++<U77E0> /x8f/xcf/xc4 <CJK>
++<U77E4> /x8f/xcf/xc5 <CJK>
++<U77E6> /x8f/xcf/xc6 <CJK>
++<U77EA> /x8f/xcf/xc7 <CJK>
++<U77EC> /x8f/xcf/xc8 <CJK>
++<U77F0> /x8f/xcf/xc9 <CJK>
++<U77F1> /x8f/xcf/xca <CJK>
++<U77F4> /x8f/xcf/xcb <CJK>
++<U77F8> /x8f/xcf/xcc <CJK>
++<U77FB> /x8f/xcf/xcd <CJK>
++<U7805> /x8f/xcf/xce <CJK>
++<U7806> /x8f/xcf/xcf <CJK>
++<U7809> /x8f/xcf/xd0 <CJK>
++<U780D> /x8f/xcf/xd1 <CJK>
++<U780E> /x8f/xcf/xd2 <CJK>
++<U7811> /x8f/xcf/xd3 <CJK>
++<U781D> /x8f/xcf/xd4 <CJK>
++<U7821> /x8f/xcf/xd5 <CJK>
++<U7822> /x8f/xcf/xd6 <CJK>
++<U7823> /x8f/xcf/xd7 <CJK>
++<U782D> /x8f/xcf/xd8 <CJK>
++<U782E> /x8f/xcf/xd9 <CJK>
++<U7830> /x8f/xcf/xda <CJK>
++<U7835> /x8f/xcf/xdb <CJK>
++<U7837> /x8f/xcf/xdc <CJK>
++<U7843> /x8f/xcf/xdd <CJK>
++<U7844> /x8f/xcf/xde <CJK>
++<U7847> /x8f/xcf/xdf <CJK>
++<U7848> /x8f/xcf/xe0 <CJK>
++<U784C> /x8f/xcf/xe1 <CJK>
++<U784E> /x8f/xcf/xe2 <CJK>
++<U7852> /x8f/xcf/xe3 <CJK>
++<U785C> /x8f/xcf/xe4 <CJK>
++<U785E> /x8f/xcf/xe5 <CJK>
++<U7860> /x8f/xcf/xe6 <CJK>
++<U7861> /x8f/xcf/xe7 <CJK>
++<U7863> /x8f/xcf/xe8 <CJK>
++<U7864> /x8f/xcf/xe9 <CJK>
++<U7868> /x8f/xcf/xea <CJK>
++<U786A> /x8f/xcf/xeb <CJK>
++<U786E> /x8f/xcf/xec <CJK>
++<U787A> /x8f/xcf/xed <CJK>
++<U787E> /x8f/xcf/xee <CJK>
++<U788A> /x8f/xcf/xef <CJK>
++<U788F> /x8f/xcf/xf0 <CJK>
++<U7894> /x8f/xcf/xf1 <CJK>
++<U7898> /x8f/xcf/xf2 <CJK>
++<U78A1> /x8f/xcf/xf3 <CJK>
++<U789D> /x8f/xcf/xf4 <CJK>
++<U789E> /x8f/xcf/xf5 <CJK>
++<U789F> /x8f/xcf/xf6 <CJK>
++<U78A4> /x8f/xcf/xf7 <CJK>
++<U78A8> /x8f/xcf/xf8 <CJK>
++<U78AC> /x8f/xcf/xf9 <CJK>
++<U78AD> /x8f/xcf/xfa <CJK>
++<U78B0> /x8f/xcf/xfb <CJK>
++<U78B1> /x8f/xcf/xfc <CJK>
++<U78B2> /x8f/xcf/xfd <CJK>
++<U78B3> /x8f/xcf/xfe <CJK>
++<U78BB> /x8f/xd0/xa1 <CJK>
++<U78BD> /x8f/xd0/xa2 <CJK>
++<U78BF> /x8f/xd0/xa3 <CJK>
++<U78C7> /x8f/xd0/xa4 <CJK>
++<U78C8> /x8f/xd0/xa5 <CJK>
++<U78C9> /x8f/xd0/xa6 <CJK>
++<U78CC> /x8f/xd0/xa7 <CJK>
++<U78CE> /x8f/xd0/xa8 <CJK>
++<U78D2> /x8f/xd0/xa9 <CJK>
++<U78D3> /x8f/xd0/xaa <CJK>
++<U78D5> /x8f/xd0/xab <CJK>
++<U78D6> /x8f/xd0/xac <CJK>
++<U78E4> /x8f/xd0/xad <CJK>
++<U78DB> /x8f/xd0/xae <CJK>
++<U78DF> /x8f/xd0/xaf <CJK>
++<U78E0> /x8f/xd0/xb0 <CJK>
++<U78E1> /x8f/xd0/xb1 <CJK>
++<U78E6> /x8f/xd0/xb2 <CJK>
++<U78EA> /x8f/xd0/xb3 <CJK>
++<U78F2> /x8f/xd0/xb4 <CJK>
++<U78F3> /x8f/xd0/xb5 <CJK>
++<U7900> /x8f/xd0/xb6 <CJK>
++<U78F6> /x8f/xd0/xb7 <CJK>
++<U78F7> /x8f/xd0/xb8 <CJK>
++<U78FA> /x8f/xd0/xb9 <CJK>
++<U78FB> /x8f/xd0/xba <CJK>
++<U78FF> /x8f/xd0/xbb <CJK>
++<U7906> /x8f/xd0/xbc <CJK>
++<U790C> /x8f/xd0/xbd <CJK>
++<U7910> /x8f/xd0/xbe <CJK>
++<U791A> /x8f/xd0/xbf <CJK>
++<U791C> /x8f/xd0/xc0 <CJK>
++<U791E> /x8f/xd0/xc1 <CJK>
++<U791F> /x8f/xd0/xc2 <CJK>
++<U7920> /x8f/xd0/xc3 <CJK>
++<U7925> /x8f/xd0/xc4 <CJK>
++<U7927> /x8f/xd0/xc5 <CJK>
++<U7929> /x8f/xd0/xc6 <CJK>
++<U792D> /x8f/xd0/xc7 <CJK>
++<U7931> /x8f/xd0/xc8 <CJK>
++<U7934> /x8f/xd0/xc9 <CJK>
++<U7935> /x8f/xd0/xca <CJK>
++<U793B> /x8f/xd0/xcb <CJK>
++<U793D> /x8f/xd0/xcc <CJK>
++<U793F> /x8f/xd0/xcd <CJK>
++<U7944> /x8f/xd0/xce <CJK>
++<U7945> /x8f/xd0/xcf <CJK>
++<U7946> /x8f/xd0/xd0 <CJK>
++<U794A> /x8f/xd0/xd1 <CJK>
++<U794B> /x8f/xd0/xd2 <CJK>
++<U794F> /x8f/xd0/xd3 <CJK>
++<U7951> /x8f/xd0/xd4 <CJK>
++<U7954> /x8f/xd0/xd5 <CJK>
++<U7958> /x8f/xd0/xd6 <CJK>
++<U795B> /x8f/xd0/xd7 <CJK>
++<U795C> /x8f/xd0/xd8 <CJK>
++<U7967> /x8f/xd0/xd9 <CJK>
++<U7969> /x8f/xd0/xda <CJK>
++<U796B> /x8f/xd0/xdb <CJK>
++<U7972> /x8f/xd0/xdc <CJK>
++<U7979> /x8f/xd0/xdd <CJK>
++<U797B> /x8f/xd0/xde <CJK>
++<U797C> /x8f/xd0/xdf <CJK>
++<U797E> /x8f/xd0/xe0 <CJK>
++<U798B> /x8f/xd0/xe1 <CJK>
++<U798C> /x8f/xd0/xe2 <CJK>
++<U7991> /x8f/xd0/xe3 <CJK>
++<U7993> /x8f/xd0/xe4 <CJK>
++<U7994> /x8f/xd0/xe5 <CJK>
++<U7995> /x8f/xd0/xe6 <CJK>
++<U7996> /x8f/xd0/xe7 <CJK>
++<U7998> /x8f/xd0/xe8 <CJK>
++<U799B> /x8f/xd0/xe9 <CJK>
++<U799C> /x8f/xd0/xea <CJK>
++<U79A1> /x8f/xd0/xeb <CJK>
++<U79A8> /x8f/xd0/xec <CJK>
++<U79A9> /x8f/xd0/xed <CJK>
++<U79AB> /x8f/xd0/xee <CJK>
++<U79AF> /x8f/xd0/xef <CJK>
++<U79B1> /x8f/xd0/xf0 <CJK>
++<U79B4> /x8f/xd0/xf1 <CJK>
++<U79B8> /x8f/xd0/xf2 <CJK>
++<U79BB> /x8f/xd0/xf3 <CJK>
++<U79C2> /x8f/xd0/xf4 <CJK>
++<U79C4> /x8f/xd0/xf5 <CJK>
++<U79C7> /x8f/xd0/xf6 <CJK>
++<U79C8> /x8f/xd0/xf7 <CJK>
++<U79CA> /x8f/xd0/xf8 <CJK>
++<U79CF> /x8f/xd0/xf9 <CJK>
++<U79D4> /x8f/xd0/xfa <CJK>
++<U79D6> /x8f/xd0/xfb <CJK>
++<U79DA> /x8f/xd0/xfc <CJK>
++<U79DD> /x8f/xd0/xfd <CJK>
++<U79DE> /x8f/xd0/xfe <CJK>
++<U79E0> /x8f/xd1/xa1 <CJK>
++<U79E2> /x8f/xd1/xa2 <CJK>
++<U79E5> /x8f/xd1/xa3 <CJK>
++<U79EA> /x8f/xd1/xa4 <CJK>
++<U79EB> /x8f/xd1/xa5 <CJK>
++<U79ED> /x8f/xd1/xa6 <CJK>
++<U79F1> /x8f/xd1/xa7 <CJK>
++<U79F8> /x8f/xd1/xa8 <CJK>
++<U79FC> /x8f/xd1/xa9 <CJK>
++<U7A02> /x8f/xd1/xaa <CJK>
++<U7A03> /x8f/xd1/xab <CJK>
++<U7A07> /x8f/xd1/xac <CJK>
++<U7A09> /x8f/xd1/xad <CJK>
++<U7A0A> /x8f/xd1/xae <CJK>
++<U7A0C> /x8f/xd1/xaf <CJK>
++<U7A11> /x8f/xd1/xb0 <CJK>
++<U7A15> /x8f/xd1/xb1 <CJK>
++<U7A1B> /x8f/xd1/xb2 <CJK>
++<U7A1E> /x8f/xd1/xb3 <CJK>
++<U7A21> /x8f/xd1/xb4 <CJK>
++<U7A27> /x8f/xd1/xb5 <CJK>
++<U7A2B> /x8f/xd1/xb6 <CJK>
++<U7A2D> /x8f/xd1/xb7 <CJK>
++<U7A2F> /x8f/xd1/xb8 <CJK>
++<U7A30> /x8f/xd1/xb9 <CJK>
++<U7A34> /x8f/xd1/xba <CJK>
++<U7A35> /x8f/xd1/xbb <CJK>
++<U7A38> /x8f/xd1/xbc <CJK>
++<U7A39> /x8f/xd1/xbd <CJK>
++<U7A3A> /x8f/xd1/xbe <CJK>
++<U7A44> /x8f/xd1/xbf <CJK>
++<U7A45> /x8f/xd1/xc0 <CJK>
++<U7A47> /x8f/xd1/xc1 <CJK>
++<U7A48> /x8f/xd1/xc2 <CJK>
++<U7A4C> /x8f/xd1/xc3 <CJK>
++<U7A55> /x8f/xd1/xc4 <CJK>
++<U7A56> /x8f/xd1/xc5 <CJK>
++<U7A59> /x8f/xd1/xc6 <CJK>
++<U7A5C> /x8f/xd1/xc7 <CJK>
++<U7A5D> /x8f/xd1/xc8 <CJK>
++<U7A5F> /x8f/xd1/xc9 <CJK>
++<U7A60> /x8f/xd1/xca <CJK>
++<U7A65> /x8f/xd1/xcb <CJK>
++<U7A67> /x8f/xd1/xcc <CJK>
++<U7A6A> /x8f/xd1/xcd <CJK>
++<U7A6D> /x8f/xd1/xce <CJK>
++<U7A75> /x8f/xd1/xcf <CJK>
++<U7A78> /x8f/xd1/xd0 <CJK>
++<U7A7E> /x8f/xd1/xd1 <CJK>
++<U7A80> /x8f/xd1/xd2 <CJK>
++<U7A82> /x8f/xd1/xd3 <CJK>
++<U7A85> /x8f/xd1/xd4 <CJK>
++<U7A86> /x8f/xd1/xd5 <CJK>
++<U7A8A> /x8f/xd1/xd6 <CJK>
++<U7A8B> /x8f/xd1/xd7 <CJK>
++<U7A90> /x8f/xd1/xd8 <CJK>
++<U7A91> /x8f/xd1/xd9 <CJK>
++<U7A94> /x8f/xd1/xda <CJK>
++<U7A9E> /x8f/xd1/xdb <CJK>
++<U7AA0> /x8f/xd1/xdc <CJK>
++<U7AA3> /x8f/xd1/xdd <CJK>
++<U7AAC> /x8f/xd1/xde <CJK>
++<U7AB3> /x8f/xd1/xdf <CJK>
++<U7AB5> /x8f/xd1/xe0 <CJK>
++<U7AB9> /x8f/xd1/xe1 <CJK>
++<U7ABB> /x8f/xd1/xe2 <CJK>
++<U7ABC> /x8f/xd1/xe3 <CJK>
++<U7AC6> /x8f/xd1/xe4 <CJK>
++<U7AC9> /x8f/xd1/xe5 <CJK>
++<U7ACC> /x8f/xd1/xe6 <CJK>
++<U7ACE> /x8f/xd1/xe7 <CJK>
++<U7AD1> /x8f/xd1/xe8 <CJK>
++<U7ADB> /x8f/xd1/xe9 <CJK>
++<U7AE8> /x8f/xd1/xea <CJK>
++<U7AE9> /x8f/xd1/xeb <CJK>
++<U7AEB> /x8f/xd1/xec <CJK>
++<U7AEC> /x8f/xd1/xed <CJK>
++<U7AF1> /x8f/xd1/xee <CJK>
++<U7AF4> /x8f/xd1/xef <CJK>
++<U7AFB> /x8f/xd1/xf0 <CJK>
++<U7AFD> /x8f/xd1/xf1 <CJK>
++<U7AFE> /x8f/xd1/xf2 <CJK>
++<U7B07> /x8f/xd1/xf3 <CJK>
++<U7B14> /x8f/xd1/xf4 <CJK>
++<U7B1F> /x8f/xd1/xf5 <CJK>
++<U7B23> /x8f/xd1/xf6 <CJK>
++<U7B27> /x8f/xd1/xf7 <CJK>
++<U7B29> /x8f/xd1/xf8 <CJK>
++<U7B2A> /x8f/xd1/xf9 <CJK>
++<U7B2B> /x8f/xd1/xfa <CJK>
++<U7B2D> /x8f/xd1/xfb <CJK>
++<U7B2E> /x8f/xd1/xfc <CJK>
++<U7B2F> /x8f/xd1/xfd <CJK>
++<U7B30> /x8f/xd1/xfe <CJK>
++<U7B31> /x8f/xd2/xa1 <CJK>
++<U7B34> /x8f/xd2/xa2 <CJK>
++<U7B3D> /x8f/xd2/xa3 <CJK>
++<U7B3F> /x8f/xd2/xa4 <CJK>
++<U7B40> /x8f/xd2/xa5 <CJK>
++<U7B41> /x8f/xd2/xa6 <CJK>
++<U7B47> /x8f/xd2/xa7 <CJK>
++<U7B4E> /x8f/xd2/xa8 <CJK>
++<U7B55> /x8f/xd2/xa9 <CJK>
++<U7B60> /x8f/xd2/xaa <CJK>
++<U7B64> /x8f/xd2/xab <CJK>
++<U7B66> /x8f/xd2/xac <CJK>
++<U7B69> /x8f/xd2/xad <CJK>
++<U7B6A> /x8f/xd2/xae <CJK>
++<U7B6D> /x8f/xd2/xaf <CJK>
++<U7B6F> /x8f/xd2/xb0 <CJK>
++<U7B72> /x8f/xd2/xb1 <CJK>
++<U7B73> /x8f/xd2/xb2 <CJK>
++<U7B77> /x8f/xd2/xb3 <CJK>
++<U7B84> /x8f/xd2/xb4 <CJK>
++<U7B89> /x8f/xd2/xb5 <CJK>
++<U7B8E> /x8f/xd2/xb6 <CJK>
++<U7B90> /x8f/xd2/xb7 <CJK>
++<U7B91> /x8f/xd2/xb8 <CJK>
++<U7B96> /x8f/xd2/xb9 <CJK>
++<U7B9B> /x8f/xd2/xba <CJK>
++<U7B9E> /x8f/xd2/xbb <CJK>
++<U7BA0> /x8f/xd2/xbc <CJK>
++<U7BA5> /x8f/xd2/xbd <CJK>
++<U7BAC> /x8f/xd2/xbe <CJK>
++<U7BAF> /x8f/xd2/xbf <CJK>
++<U7BB0> /x8f/xd2/xc0 <CJK>
++<U7BB2> /x8f/xd2/xc1 <CJK>
++<U7BB5> /x8f/xd2/xc2 <CJK>
++<U7BB6> /x8f/xd2/xc3 <CJK>
++<U7BBA> /x8f/xd2/xc4 <CJK>
++<U7BBB> /x8f/xd2/xc5 <CJK>
++<U7BBC> /x8f/xd2/xc6 <CJK>
++<U7BBD> /x8f/xd2/xc7 <CJK>
++<U7BC2> /x8f/xd2/xc8 <CJK>
++<U7BC5> /x8f/xd2/xc9 <CJK>
++<U7BC8> /x8f/xd2/xca <CJK>
++<U7BCA> /x8f/xd2/xcb <CJK>
++<U7BD4> /x8f/xd2/xcc <CJK>
++<U7BD6> /x8f/xd2/xcd <CJK>
++<U7BD7> /x8f/xd2/xce <CJK>
++<U7BD9> /x8f/xd2/xcf <CJK>
++<U7BDA> /x8f/xd2/xd0 <CJK>
++<U7BDB> /x8f/xd2/xd1 <CJK>
++<U7BE8> /x8f/xd2/xd2 <CJK>
++<U7BEA> /x8f/xd2/xd3 <CJK>
++<U7BF2> /x8f/xd2/xd4 <CJK>
++<U7BF4> /x8f/xd2/xd5 <CJK>
++<U7BF5> /x8f/xd2/xd6 <CJK>
++<U7BF8> /x8f/xd2/xd7 <CJK>
++<U7BF9> /x8f/xd2/xd8 <CJK>
++<U7BFA> /x8f/xd2/xd9 <CJK>
++<U7BFC> /x8f/xd2/xda <CJK>
++<U7BFE> /x8f/xd2/xdb <CJK>
++<U7C01> /x8f/xd2/xdc <CJK>
++<U7C02> /x8f/xd2/xdd <CJK>
++<U7C03> /x8f/xd2/xde <CJK>
++<U7C04> /x8f/xd2/xdf <CJK>
++<U7C06> /x8f/xd2/xe0 <CJK>
++<U7C09> /x8f/xd2/xe1 <CJK>
++<U7C0B> /x8f/xd2/xe2 <CJK>
++<U7C0C> /x8f/xd2/xe3 <CJK>
++<U7C0E> /x8f/xd2/xe4 <CJK>
++<U7C0F> /x8f/xd2/xe5 <CJK>
++<U7C19> /x8f/xd2/xe6 <CJK>
++<U7C1B> /x8f/xd2/xe7 <CJK>
++<U7C20> /x8f/xd2/xe8 <CJK>
++<U7C25> /x8f/xd2/xe9 <CJK>
++<U7C26> /x8f/xd2/xea <CJK>
++<U7C28> /x8f/xd2/xeb <CJK>
++<U7C2C> /x8f/xd2/xec <CJK>
++<U7C31> /x8f/xd2/xed <CJK>
++<U7C33> /x8f/xd2/xee <CJK>
++<U7C34> /x8f/xd2/xef <CJK>
++<U7C36> /x8f/xd2/xf0 <CJK>
++<U7C39> /x8f/xd2/xf1 <CJK>
++<U7C3A> /x8f/xd2/xf2 <CJK>
++<U7C46> /x8f/xd2/xf3 <CJK>
++<U7C4A> /x8f/xd2/xf4 <CJK>
++<U7C55> /x8f/xd2/xf5 <CJK>
++<U7C51> /x8f/xd2/xf6 <CJK>
++<U7C52> /x8f/xd2/xf7 <CJK>
++<U7C53> /x8f/xd2/xf8 <CJK>
++<U7C59> /x8f/xd2/xf9 <CJK>
++<U7C5A> /x8f/xd2/xfa <CJK>
++<U7C5B> /x8f/xd2/xfb <CJK>
++<U7C5C> /x8f/xd2/xfc <CJK>
++<U7C5D> /x8f/xd2/xfd <CJK>
++<U7C5E> /x8f/xd2/xfe <CJK>
++<U7C61> /x8f/xd3/xa1 <CJK>
++<U7C63> /x8f/xd3/xa2 <CJK>
++<U7C67> /x8f/xd3/xa3 <CJK>
++<U7C69> /x8f/xd3/xa4 <CJK>
++<U7C6D> /x8f/xd3/xa5 <CJK>
++<U7C6E> /x8f/xd3/xa6 <CJK>
++<U7C70> /x8f/xd3/xa7 <CJK>
++<U7C72> /x8f/xd3/xa8 <CJK>
++<U7C79> /x8f/xd3/xa9 <CJK>
++<U7C7C> /x8f/xd3/xaa <CJK>
++<U7C7D> /x8f/xd3/xab <CJK>
++<U7C86> /x8f/xd3/xac <CJK>
++<U7C87> /x8f/xd3/xad <CJK>
++<U7C8F> /x8f/xd3/xae <CJK>
++<U7C94> /x8f/xd3/xaf <CJK>
++<U7C9E> /x8f/xd3/xb0 <CJK>
++<U7CA0> /x8f/xd3/xb1 <CJK>
++<U7CA6> /x8f/xd3/xb2 <CJK>
++<U7CB0> /x8f/xd3/xb3 <CJK>
++<U7CB6> /x8f/xd3/xb4 <CJK>
++<U7CB7> /x8f/xd3/xb5 <CJK>
++<U7CBA> /x8f/xd3/xb6 <CJK>
++<U7CBB> /x8f/xd3/xb7 <CJK>
++<U7CBC> /x8f/xd3/xb8 <CJK>
++<U7CBF> /x8f/xd3/xb9 <CJK>
++<U7CC4> /x8f/xd3/xba <CJK>
++<U7CC7> /x8f/xd3/xbb <CJK>
++<U7CC8> /x8f/xd3/xbc <CJK>
++<U7CC9> /x8f/xd3/xbd <CJK>
++<U7CCD> /x8f/xd3/xbe <CJK>
++<U7CCF> /x8f/xd3/xbf <CJK>
++<U7CD3> /x8f/xd3/xc0 <CJK>
++<U7CD4> /x8f/xd3/xc1 <CJK>
++<U7CD5> /x8f/xd3/xc2 <CJK>
++<U7CD7> /x8f/xd3/xc3 <CJK>
++<U7CD9> /x8f/xd3/xc4 <CJK>
++<U7CDA> /x8f/xd3/xc5 <CJK>
++<U7CDD> /x8f/xd3/xc6 <CJK>
++<U7CE6> /x8f/xd3/xc7 <CJK>
++<U7CE9> /x8f/xd3/xc8 <CJK>
++<U7CEB> /x8f/xd3/xc9 <CJK>
++<U7CF5> /x8f/xd3/xca <CJK>
++<U7D03> /x8f/xd3/xcb <CJK>
++<U7D07> /x8f/xd3/xcc <CJK>
++<U7D08> /x8f/xd3/xcd <CJK>
++<U7D09> /x8f/xd3/xce <CJK>
++<U7D0F> /x8f/xd3/xcf <CJK>
++<U7D11> /x8f/xd3/xd0 <CJK>
++<U7D12> /x8f/xd3/xd1 <CJK>
++<U7D13> /x8f/xd3/xd2 <CJK>
++<U7D16> /x8f/xd3/xd3 <CJK>
++<U7D1D> /x8f/xd3/xd4 <CJK>
++<U7D1E> /x8f/xd3/xd5 <CJK>
++<U7D23> /x8f/xd3/xd6 <CJK>
++<U7D26> /x8f/xd3/xd7 <CJK>
++<U7D2A> /x8f/xd3/xd8 <CJK>
++<U7D2D> /x8f/xd3/xd9 <CJK>
++<U7D31> /x8f/xd3/xda <CJK>
++<U7D3C> /x8f/xd3/xdb <CJK>
++<U7D3D> /x8f/xd3/xdc <CJK>
++<U7D3E> /x8f/xd3/xdd <CJK>
++<U7D40> /x8f/xd3/xde <CJK>
++<U7D41> /x8f/xd3/xdf <CJK>
++<U7D47> /x8f/xd3/xe0 <CJK>
++<U7D48> /x8f/xd3/xe1 <CJK>
++<U7D4D> /x8f/xd3/xe2 <CJK>
++<U7D51> /x8f/xd3/xe3 <CJK>
++<U7D53> /x8f/xd3/xe4 <CJK>
++<U7D57> /x8f/xd3/xe5 <CJK>
++<U7D59> /x8f/xd3/xe6 <CJK>
++<U7D5A> /x8f/xd3/xe7 <CJK>
++<U7D5C> /x8f/xd3/xe8 <CJK>
++<U7D5D> /x8f/xd3/xe9 <CJK>
++<U7D65> /x8f/xd3/xea <CJK>
++<U7D67> /x8f/xd3/xeb <CJK>
++<U7D6A> /x8f/xd3/xec <CJK>
++<U7D70> /x8f/xd3/xed <CJK>
++<U7D78> /x8f/xd3/xee <CJK>
++<U7D7A> /x8f/xd3/xef <CJK>
++<U7D7B> /x8f/xd3/xf0 <CJK>
++<U7D7F> /x8f/xd3/xf1 <CJK>
++<U7D81> /x8f/xd3/xf2 <CJK>
++<U7D82> /x8f/xd3/xf3 <CJK>
++<U7D83> /x8f/xd3/xf4 <CJK>
++<U7D85> /x8f/xd3/xf5 <CJK>
++<U7D86> /x8f/xd3/xf6 <CJK>
++<U7D88> /x8f/xd3/xf7 <CJK>
++<U7D8B> /x8f/xd3/xf8 <CJK>
++<U7D8C> /x8f/xd3/xf9 <CJK>
++<U7D8D> /x8f/xd3/xfa <CJK>
++<U7D91> /x8f/xd3/xfb <CJK>
++<U7D96> /x8f/xd3/xfc <CJK>
++<U7D97> /x8f/xd3/xfd <CJK>
++<U7D9D> /x8f/xd3/xfe <CJK>
++<U7D9E> /x8f/xd4/xa1 <CJK>
++<U7DA6> /x8f/xd4/xa2 <CJK>
++<U7DA7> /x8f/xd4/xa3 <CJK>
++<U7DAA> /x8f/xd4/xa4 <CJK>
++<U7DB3> /x8f/xd4/xa5 <CJK>
++<U7DB6> /x8f/xd4/xa6 <CJK>
++<U7DB7> /x8f/xd4/xa7 <CJK>
++<U7DB9> /x8f/xd4/xa8 <CJK>
++<U7DC2> /x8f/xd4/xa9 <CJK>
++<U7DC3> /x8f/xd4/xaa <CJK>
++<U7DC4> /x8f/xd4/xab <CJK>
++<U7DC5> /x8f/xd4/xac <CJK>
++<U7DC6> /x8f/xd4/xad <CJK>
++<U7DCC> /x8f/xd4/xae <CJK>
++<U7DCD> /x8f/xd4/xaf <CJK>
++<U7DCE> /x8f/xd4/xb0 <CJK>
++<U7DD7> /x8f/xd4/xb1 <CJK>
++<U7DD9> /x8f/xd4/xb2 <CJK>
++<U7E00> /x8f/xd4/xb3 <CJK>
++<U7DE2> /x8f/xd4/xb4 <CJK>
++<U7DE5> /x8f/xd4/xb5 <CJK>
++<U7DE6> /x8f/xd4/xb6 <CJK>
++<U7DEA> /x8f/xd4/xb7 <CJK>
++<U7DEB> /x8f/xd4/xb8 <CJK>
++<U7DED> /x8f/xd4/xb9 <CJK>
++<U7DF1> /x8f/xd4/xba <CJK>
++<U7DF5> /x8f/xd4/xbb <CJK>
++<U7DF6> /x8f/xd4/xbc <CJK>
++<U7DF9> /x8f/xd4/xbd <CJK>
++<U7DFA> /x8f/xd4/xbe <CJK>
++<U7E08> /x8f/xd4/xbf <CJK>
++<U7E10> /x8f/xd4/xc0 <CJK>
++<U7E11> /x8f/xd4/xc1 <CJK>
++<U7E15> /x8f/xd4/xc2 <CJK>
++<U7E17> /x8f/xd4/xc3 <CJK>
++<U7E1C> /x8f/xd4/xc4 <CJK>
++<U7E1D> /x8f/xd4/xc5 <CJK>
++<U7E20> /x8f/xd4/xc6 <CJK>
++<U7E27> /x8f/xd4/xc7 <CJK>
++<U7E28> /x8f/xd4/xc8 <CJK>
++<U7E2C> /x8f/xd4/xc9 <CJK>
++<U7E2D> /x8f/xd4/xca <CJK>
++<U7E2F> /x8f/xd4/xcb <CJK>
++<U7E33> /x8f/xd4/xcc <CJK>
++<U7E36> /x8f/xd4/xcd <CJK>
++<U7E3F> /x8f/xd4/xce <CJK>
++<U7E44> /x8f/xd4/xcf <CJK>
++<U7E45> /x8f/xd4/xd0 <CJK>
++<U7E47> /x8f/xd4/xd1 <CJK>
++<U7E4E> /x8f/xd4/xd2 <CJK>
++<U7E50> /x8f/xd4/xd3 <CJK>
++<U7E52> /x8f/xd4/xd4 <CJK>
++<U7E58> /x8f/xd4/xd5 <CJK>
++<U7E5F> /x8f/xd4/xd6 <CJK>
++<U7E61> /x8f/xd4/xd7 <CJK>
++<U7E62> /x8f/xd4/xd8 <CJK>
++<U7E65> /x8f/xd4/xd9 <CJK>
++<U7E6B> /x8f/xd4/xda <CJK>
++<U7E6E> /x8f/xd4/xdb <CJK>
++<U7E6F> /x8f/xd4/xdc <CJK>
++<U7E73> /x8f/xd4/xdd <CJK>
++<U7E78> /x8f/xd4/xde <CJK>
++<U7E7E> /x8f/xd4/xdf <CJK>
++<U7E81> /x8f/xd4/xe0 <CJK>
++<U7E86> /x8f/xd4/xe1 <CJK>
++<U7E87> /x8f/xd4/xe2 <CJK>
++<U7E8A> /x8f/xd4/xe3 <CJK>
++<U7E8D> /x8f/xd4/xe4 <CJK>
++<U7E91> /x8f/xd4/xe5 <CJK>
++<U7E95> /x8f/xd4/xe6 <CJK>
++<U7E98> /x8f/xd4/xe7 <CJK>
++<U7E9A> /x8f/xd4/xe8 <CJK>
++<U7E9D> /x8f/xd4/xe9 <CJK>
++<U7E9E> /x8f/xd4/xea <CJK>
++<U7F3C> /x8f/xd4/xeb <CJK>
++<U7F3B> /x8f/xd4/xec <CJK>
++<U7F3D> /x8f/xd4/xed <CJK>
++<U7F3E> /x8f/xd4/xee <CJK>
++<U7F3F> /x8f/xd4/xef <CJK>
++<U7F43> /x8f/xd4/xf0 <CJK>
++<U7F44> /x8f/xd4/xf1 <CJK>
++<U7F47> /x8f/xd4/xf2 <CJK>
++<U7F4F> /x8f/xd4/xf3 <CJK>
++<U7F52> /x8f/xd4/xf4 <CJK>
++<U7F53> /x8f/xd4/xf5 <CJK>
++<U7F5B> /x8f/xd4/xf6 <CJK>
++<U7F5C> /x8f/xd4/xf7 <CJK>
++<U7F5D> /x8f/xd4/xf8 <CJK>
++<U7F61> /x8f/xd4/xf9 <CJK>
++<U7F63> /x8f/xd4/xfa <CJK>
++<U7F64> /x8f/xd4/xfb <CJK>
++<U7F65> /x8f/xd4/xfc <CJK>
++<U7F66> /x8f/xd4/xfd <CJK>
++<U7F6D> /x8f/xd4/xfe <CJK>
++<U7F71> /x8f/xd5/xa1 <CJK>
++<U7F7D> /x8f/xd5/xa2 <CJK>
++<U7F7E> /x8f/xd5/xa3 <CJK>
++<U7F7F> /x8f/xd5/xa4 <CJK>
++<U7F80> /x8f/xd5/xa5 <CJK>
++<U7F8B> /x8f/xd5/xa6 <CJK>
++<U7F8D> /x8f/xd5/xa7 <CJK>
++<U7F8F> /x8f/xd5/xa8 <CJK>
++<U7F90> /x8f/xd5/xa9 <CJK>
++<U7F91> /x8f/xd5/xaa <CJK>
++<U7F96> /x8f/xd5/xab <CJK>
++<U7F97> /x8f/xd5/xac <CJK>
++<U7F9C> /x8f/xd5/xad <CJK>
++<U7FA1> /x8f/xd5/xae <CJK>
++<U7FA2> /x8f/xd5/xaf <CJK>
++<U7FA6> /x8f/xd5/xb0 <CJK>
++<U7FAA> /x8f/xd5/xb1 <CJK>
++<U7FAD> /x8f/xd5/xb2 <CJK>
++<U7FB4> /x8f/xd5/xb3 <CJK>
++<U7FBC> /x8f/xd5/xb4 <CJK>
++<U7FBF> /x8f/xd5/xb5 <CJK>
++<U7FC0> /x8f/xd5/xb6 <CJK>
++<U7FC3> /x8f/xd5/xb7 <CJK>
++<U7FC8> /x8f/xd5/xb8 <CJK>
++<U7FCE> /x8f/xd5/xb9 <CJK>
++<U7FCF> /x8f/xd5/xba <CJK>
++<U7FDB> /x8f/xd5/xbb <CJK>
++<U7FDF> /x8f/xd5/xbc <CJK>
++<U7FE3> /x8f/xd5/xbd <CJK>
++<U7FE5> /x8f/xd5/xbe <CJK>
++<U7FE8> /x8f/xd5/xbf <CJK>
++<U7FEC> /x8f/xd5/xc0 <CJK>
++<U7FEE> /x8f/xd5/xc1 <CJK>
++<U7FEF> /x8f/xd5/xc2 <CJK>
++<U7FF2> /x8f/xd5/xc3 <CJK>
++<U7FFA> /x8f/xd5/xc4 <CJK>
++<U7FFD> /x8f/xd5/xc5 <CJK>
++<U7FFE> /x8f/xd5/xc6 <CJK>
++<U7FFF> /x8f/xd5/xc7 <CJK>
++<U8007> /x8f/xd5/xc8 <CJK>
++<U8008> /x8f/xd5/xc9 <CJK>
++<U800A> /x8f/xd5/xca <CJK>
++<U800D> /x8f/xd5/xcb <CJK>
++<U800E> /x8f/xd5/xcc <CJK>
++<U800F> /x8f/xd5/xcd <CJK>
++<U8011> /x8f/xd5/xce <CJK>
++<U8013> /x8f/xd5/xcf <CJK>
++<U8014> /x8f/xd5/xd0 <CJK>
++<U8016> /x8f/xd5/xd1 <CJK>
++<U801D> /x8f/xd5/xd2 <CJK>
++<U801E> /x8f/xd5/xd3 <CJK>
++<U801F> /x8f/xd5/xd4 <CJK>
++<U8020> /x8f/xd5/xd5 <CJK>
++<U8024> /x8f/xd5/xd6 <CJK>
++<U8026> /x8f/xd5/xd7 <CJK>
++<U802C> /x8f/xd5/xd8 <CJK>
++<U802E> /x8f/xd5/xd9 <CJK>
++<U8030> /x8f/xd5/xda <CJK>
++<U8034> /x8f/xd5/xdb <CJK>
++<U8035> /x8f/xd5/xdc <CJK>
++<U8037> /x8f/xd5/xdd <CJK>
++<U8039> /x8f/xd5/xde <CJK>
++<U803A> /x8f/xd5/xdf <CJK>
++<U803C> /x8f/xd5/xe0 <CJK>
++<U803E> /x8f/xd5/xe1 <CJK>
++<U8040> /x8f/xd5/xe2 <CJK>
++<U8044> /x8f/xd5/xe3 <CJK>
++<U8060> /x8f/xd5/xe4 <CJK>
++<U8064> /x8f/xd5/xe5 <CJK>
++<U8066> /x8f/xd5/xe6 <CJK>
++<U806D> /x8f/xd5/xe7 <CJK>
++<U8071> /x8f/xd5/xe8 <CJK>
++<U8075> /x8f/xd5/xe9 <CJK>
++<U8081> /x8f/xd5/xea <CJK>
++<U8088> /x8f/xd5/xeb <CJK>
++<U808E> /x8f/xd5/xec <CJK>
++<U809C> /x8f/xd5/xed <CJK>
++<U809E> /x8f/xd5/xee <CJK>
++<U80A6> /x8f/xd5/xef <CJK>
++<U80A7> /x8f/xd5/xf0 <CJK>
++<U80AB> /x8f/xd5/xf1 <CJK>
++<U80B8> /x8f/xd5/xf2 <CJK>
++<U80B9> /x8f/xd5/xf3 <CJK>
++<U80C8> /x8f/xd5/xf4 <CJK>
++<U80CD> /x8f/xd5/xf5 <CJK>
++<U80CF> /x8f/xd5/xf6 <CJK>
++<U80D2> /x8f/xd5/xf7 <CJK>
++<U80D4> /x8f/xd5/xf8 <CJK>
++<U80D5> /x8f/xd5/xf9 <CJK>
++<U80D7> /x8f/xd5/xfa <CJK>
++<U80D8> /x8f/xd5/xfb <CJK>
++<U80E0> /x8f/xd5/xfc <CJK>
++<U80ED> /x8f/xd5/xfd <CJK>
++<U80EE> /x8f/xd5/xfe <CJK>
++<U80F0> /x8f/xd6/xa1 <CJK>
++<U80F2> /x8f/xd6/xa2 <CJK>
++<U80F3> /x8f/xd6/xa3 <CJK>
++<U80F6> /x8f/xd6/xa4 <CJK>
++<U80F9> /x8f/xd6/xa5 <CJK>
++<U80FA> /x8f/xd6/xa6 <CJK>
++<U80FE> /x8f/xd6/xa7 <CJK>
++<U8103> /x8f/xd6/xa8 <CJK>
++<U810B> /x8f/xd6/xa9 <CJK>
++<U8116> /x8f/xd6/xaa <CJK>
++<U8117> /x8f/xd6/xab <CJK>
++<U8118> /x8f/xd6/xac <CJK>
++<U811C> /x8f/xd6/xad <CJK>
++<U811E> /x8f/xd6/xae <CJK>
++<U8120> /x8f/xd6/xaf <CJK>
++<U8124> /x8f/xd6/xb0 <CJK>
++<U8127> /x8f/xd6/xb1 <CJK>
++<U812C> /x8f/xd6/xb2 <CJK>
++<U8130> /x8f/xd6/xb3 <CJK>
++<U8135> /x8f/xd6/xb4 <CJK>
++<U813A> /x8f/xd6/xb5 <CJK>
++<U813C> /x8f/xd6/xb6 <CJK>
++<U8145> /x8f/xd6/xb7 <CJK>
++<U8147> /x8f/xd6/xb8 <CJK>
++<U814A> /x8f/xd6/xb9 <CJK>
++<U814C> /x8f/xd6/xba <CJK>
++<U8152> /x8f/xd6/xbb <CJK>
++<U8157> /x8f/xd6/xbc <CJK>
++<U8160> /x8f/xd6/xbd <CJK>
++<U8161> /x8f/xd6/xbe <CJK>
++<U8167> /x8f/xd6/xbf <CJK>
++<U8168> /x8f/xd6/xc0 <CJK>
++<U8169> /x8f/xd6/xc1 <CJK>
++<U816D> /x8f/xd6/xc2 <CJK>
++<U816F> /x8f/xd6/xc3 <CJK>
++<U8177> /x8f/xd6/xc4 <CJK>
++<U8181> /x8f/xd6/xc5 <CJK>
++<U8190> /x8f/xd6/xc6 <CJK>
++<U8184> /x8f/xd6/xc7 <CJK>
++<U8185> /x8f/xd6/xc8 <CJK>
++<U8186> /x8f/xd6/xc9 <CJK>
++<U818B> /x8f/xd6/xca <CJK>
++<U818E> /x8f/xd6/xcb <CJK>
++<U8196> /x8f/xd6/xcc <CJK>
++<U8198> /x8f/xd6/xcd <CJK>
++<U819B> /x8f/xd6/xce <CJK>
++<U819E> /x8f/xd6/xcf <CJK>
++<U81A2> /x8f/xd6/xd0 <CJK>
++<U81AE> /x8f/xd6/xd1 <CJK>
++<U81B2> /x8f/xd6/xd2 <CJK>
++<U81B4> /x8f/xd6/xd3 <CJK>
++<U81BB> /x8f/xd6/xd4 <CJK>
++<U81CB> /x8f/xd6/xd5 <CJK>
++<U81C3> /x8f/xd6/xd6 <CJK>
++<U81C5> /x8f/xd6/xd7 <CJK>
++<U81CA> /x8f/xd6/xd8 <CJK>
++<U81CE> /x8f/xd6/xd9 <CJK>
++<U81CF> /x8f/xd6/xda <CJK>
++<U81D5> /x8f/xd6/xdb <CJK>
++<U81D7> /x8f/xd6/xdc <CJK>
++<U81DB> /x8f/xd6/xdd <CJK>
++<U81DD> /x8f/xd6/xde <CJK>
++<U81DE> /x8f/xd6/xdf <CJK>
++<U81E1> /x8f/xd6/xe0 <CJK>
++<U81E4> /x8f/xd6/xe1 <CJK>
++<U81EB> /x8f/xd6/xe2 <CJK>
++<U81EC> /x8f/xd6/xe3 <CJK>
++<U81F0> /x8f/xd6/xe4 <CJK>
++<U81F1> /x8f/xd6/xe5 <CJK>
++<U81F2> /x8f/xd6/xe6 <CJK>
++<U81F5> /x8f/xd6/xe7 <CJK>
++<U81F6> /x8f/xd6/xe8 <CJK>
++<U81F8> /x8f/xd6/xe9 <CJK>
++<U81F9> /x8f/xd6/xea <CJK>
++<U81FD> /x8f/xd6/xeb <CJK>
++<U81FF> /x8f/xd6/xec <CJK>
++<U8200> /x8f/xd6/xed <CJK>
++<U8203> /x8f/xd6/xee <CJK>
++<U820F> /x8f/xd6/xef <CJK>
++<U8213> /x8f/xd6/xf0 <CJK>
++<U8214> /x8f/xd6/xf1 <CJK>
++<U8219> /x8f/xd6/xf2 <CJK>
++<U821A> /x8f/xd6/xf3 <CJK>
++<U821D> /x8f/xd6/xf4 <CJK>
++<U8221> /x8f/xd6/xf5 <CJK>
++<U8222> /x8f/xd6/xf6 <CJK>
++<U8228> /x8f/xd6/xf7 <CJK>
++<U8232> /x8f/xd6/xf8 <CJK>
++<U8234> /x8f/xd6/xf9 <CJK>
++<U823A> /x8f/xd6/xfa <CJK>
++<U8243> /x8f/xd6/xfb <CJK>
++<U8244> /x8f/xd6/xfc <CJK>
++<U8245> /x8f/xd6/xfd <CJK>
++<U8246> /x8f/xd6/xfe <CJK>
++<U824B> /x8f/xd7/xa1 <CJK>
++<U824E> /x8f/xd7/xa2 <CJK>
++<U824F> /x8f/xd7/xa3 <CJK>
++<U8251> /x8f/xd7/xa4 <CJK>
++<U8256> /x8f/xd7/xa5 <CJK>
++<U825C> /x8f/xd7/xa6 <CJK>
++<U8260> /x8f/xd7/xa7 <CJK>
++<U8263> /x8f/xd7/xa8 <CJK>
++<U8267> /x8f/xd7/xa9 <CJK>
++<U826D> /x8f/xd7/xaa <CJK>
++<U8274> /x8f/xd7/xab <CJK>
++<U827B> /x8f/xd7/xac <CJK>
++<U827D> /x8f/xd7/xad <CJK>
++<U827F> /x8f/xd7/xae <CJK>
++<U8280> /x8f/xd7/xaf <CJK>
++<U8281> /x8f/xd7/xb0 <CJK>
++<U8283> /x8f/xd7/xb1 <CJK>
++<U8284> /x8f/xd7/xb2 <CJK>
++<U8287> /x8f/xd7/xb3 <CJK>
++<U8289> /x8f/xd7/xb4 <CJK>
++<U828A> /x8f/xd7/xb5 <CJK>
++<U828E> /x8f/xd7/xb6 <CJK>
++<U8291> /x8f/xd7/xb7 <CJK>
++<U8294> /x8f/xd7/xb8 <CJK>
++<U8296> /x8f/xd7/xb9 <CJK>
++<U8298> /x8f/xd7/xba <CJK>
++<U829A> /x8f/xd7/xbb <CJK>
++<U829B> /x8f/xd7/xbc <CJK>
++<U82A0> /x8f/xd7/xbd <CJK>
++<U82A1> /x8f/xd7/xbe <CJK>
++<U82A3> /x8f/xd7/xbf <CJK>
++<U82A4> /x8f/xd7/xc0 <CJK>
++<U82A7> /x8f/xd7/xc1 <CJK>
++<U82A8> /x8f/xd7/xc2 <CJK>
++<U82A9> /x8f/xd7/xc3 <CJK>
++<U82AA> /x8f/xd7/xc4 <CJK>
++<U82AE> /x8f/xd7/xc5 <CJK>
++<U82B0> /x8f/xd7/xc6 <CJK>
++<U82B2> /x8f/xd7/xc7 <CJK>
++<U82B4> /x8f/xd7/xc8 <CJK>
++<U82B7> /x8f/xd7/xc9 <CJK>
++<U82BA> /x8f/xd7/xca <CJK>
++<U82BC> /x8f/xd7/xcb <CJK>
++<U82BE> /x8f/xd7/xcc <CJK>
++<U82BF> /x8f/xd7/xcd <CJK>
++<U82C6> /x8f/xd7/xce <CJK>
++<U82D0> /x8f/xd7/xcf <CJK>
++<U82D5> /x8f/xd7/xd0 <CJK>
++<U82DA> /x8f/xd7/xd1 <CJK>
++<U82E0> /x8f/xd7/xd2 <CJK>
++<U82E2> /x8f/xd7/xd3 <CJK>
++<U82E4> /x8f/xd7/xd4 <CJK>
++<U82E8> /x8f/xd7/xd5 <CJK>
++<U82EA> /x8f/xd7/xd6 <CJK>
++<U82ED> /x8f/xd7/xd7 <CJK>
++<U82EF> /x8f/xd7/xd8 <CJK>
++<U82F6> /x8f/xd7/xd9 <CJK>
++<U82F7> /x8f/xd7/xda <CJK>
++<U82FD> /x8f/xd7/xdb <CJK>
++<U82FE> /x8f/xd7/xdc <CJK>
++<U8300> /x8f/xd7/xdd <CJK>
++<U8301> /x8f/xd7/xde <CJK>
++<U8307> /x8f/xd7/xdf <CJK>
++<U8308> /x8f/xd7/xe0 <CJK>
++<U830A> /x8f/xd7/xe1 <CJK>
++<U830B> /x8f/xd7/xe2 <CJK>
++<U8354> /x8f/xd7/xe3 <CJK>
++<U831B> /x8f/xd7/xe4 <CJK>
++<U831D> /x8f/xd7/xe5 <CJK>
++<U831E> /x8f/xd7/xe6 <CJK>
++<U831F> /x8f/xd7/xe7 <CJK>
++<U8321> /x8f/xd7/xe8 <CJK>
++<U8322> /x8f/xd7/xe9 <CJK>
++<U832C> /x8f/xd7/xea <CJK>
++<U832D> /x8f/xd7/xeb <CJK>
++<U832E> /x8f/xd7/xec <CJK>
++<U8330> /x8f/xd7/xed <CJK>
++<U8333> /x8f/xd7/xee <CJK>
++<U8337> /x8f/xd7/xef <CJK>
++<U833A> /x8f/xd7/xf0 <CJK>
++<U833C> /x8f/xd7/xf1 <CJK>
++<U833D> /x8f/xd7/xf2 <CJK>
++<U8342> /x8f/xd7/xf3 <CJK>
++<U8343> /x8f/xd7/xf4 <CJK>
++<U8344> /x8f/xd7/xf5 <CJK>
++<U8347> /x8f/xd7/xf6 <CJK>
++<U834D> /x8f/xd7/xf7 <CJK>
++<U834E> /x8f/xd7/xf8 <CJK>
++<U8351> /x8f/xd7/xf9 <CJK>
++<U8355> /x8f/xd7/xfa <CJK>
++<U8356> /x8f/xd7/xfb <CJK>
++<U8357> /x8f/xd7/xfc <CJK>
++<U8370> /x8f/xd7/xfd <CJK>
++<U8378> /x8f/xd7/xfe <CJK>
++<U837D> /x8f/xd8/xa1 <CJK>
++<U837F> /x8f/xd8/xa2 <CJK>
++<U8380> /x8f/xd8/xa3 <CJK>
++<U8382> /x8f/xd8/xa4 <CJK>
++<U8384> /x8f/xd8/xa5 <CJK>
++<U8386> /x8f/xd8/xa6 <CJK>
++<U838D> /x8f/xd8/xa7 <CJK>
++<U8392> /x8f/xd8/xa8 <CJK>
++<U8394> /x8f/xd8/xa9 <CJK>
++<U8395> /x8f/xd8/xaa <CJK>
++<U8398> /x8f/xd8/xab <CJK>
++<U8399> /x8f/xd8/xac <CJK>
++<U839B> /x8f/xd8/xad <CJK>
++<U839C> /x8f/xd8/xae <CJK>
++<U839D> /x8f/xd8/xaf <CJK>
++<U83A6> /x8f/xd8/xb0 <CJK>
++<U83A7> /x8f/xd8/xb1 <CJK>
++<U83A9> /x8f/xd8/xb2 <CJK>
++<U83AC> /x8f/xd8/xb3 <CJK>
++<U83BE> /x8f/xd8/xb4 <CJK>
++<U83BF> /x8f/xd8/xb5 <CJK>
++<U83C0> /x8f/xd8/xb6 <CJK>
++<U83C7> /x8f/xd8/xb7 <CJK>
++<U83C9> /x8f/xd8/xb8 <CJK>
++<U83CF> /x8f/xd8/xb9 <CJK>
++<U83D0> /x8f/xd8/xba <CJK>
++<U83D1> /x8f/xd8/xbb <CJK>
++<U83D4> /x8f/xd8/xbc <CJK>
++<U83DD> /x8f/xd8/xbd <CJK>
++<U8353> /x8f/xd8/xbe <CJK>
++<U83E8> /x8f/xd8/xbf <CJK>
++<U83EA> /x8f/xd8/xc0 <CJK>
++<U83F6> /x8f/xd8/xc1 <CJK>
++<U83F8> /x8f/xd8/xc2 <CJK>
++<U83F9> /x8f/xd8/xc3 <CJK>
++<U83FC> /x8f/xd8/xc4 <CJK>
++<U8401> /x8f/xd8/xc5 <CJK>
++<U8406> /x8f/xd8/xc6 <CJK>
++<U840A> /x8f/xd8/xc7 <CJK>
++<U840F> /x8f/xd8/xc8 <CJK>
++<U8411> /x8f/xd8/xc9 <CJK>
++<U8415> /x8f/xd8/xca <CJK>
++<U8419> /x8f/xd8/xcb <CJK>
++<U83AD> /x8f/xd8/xcc <CJK>
++<U842F> /x8f/xd8/xcd <CJK>
++<U8439> /x8f/xd8/xce <CJK>
++<U8445> /x8f/xd8/xcf <CJK>
++<U8447> /x8f/xd8/xd0 <CJK>
++<U8448> /x8f/xd8/xd1 <CJK>
++<U844A> /x8f/xd8/xd2 <CJK>
++<U844D> /x8f/xd8/xd3 <CJK>
++<U844F> /x8f/xd8/xd4 <CJK>
++<U8451> /x8f/xd8/xd5 <CJK>
++<U8452> /x8f/xd8/xd6 <CJK>
++<U8456> /x8f/xd8/xd7 <CJK>
++<U8458> /x8f/xd8/xd8 <CJK>
++<U8459> /x8f/xd8/xd9 <CJK>
++<U845A> /x8f/xd8/xda <CJK>
++<U845C> /x8f/xd8/xdb <CJK>
++<U8460> /x8f/xd8/xdc <CJK>
++<U8464> /x8f/xd8/xdd <CJK>
++<U8465> /x8f/xd8/xde <CJK>
++<U8467> /x8f/xd8/xdf <CJK>
++<U846A> /x8f/xd8/xe0 <CJK>
++<U8470> /x8f/xd8/xe1 <CJK>
++<U8473> /x8f/xd8/xe2 <CJK>
++<U8474> /x8f/xd8/xe3 <CJK>
++<U8476> /x8f/xd8/xe4 <CJK>
++<U8478> /x8f/xd8/xe5 <CJK>
++<U847C> /x8f/xd8/xe6 <CJK>
++<U847D> /x8f/xd8/xe7 <CJK>
++<U8481> /x8f/xd8/xe8 <CJK>
++<U8485> /x8f/xd8/xe9 <CJK>
++<U8492> /x8f/xd8/xea <CJK>
++<U8493> /x8f/xd8/xeb <CJK>
++<U8495> /x8f/xd8/xec <CJK>
++<U849E> /x8f/xd8/xed <CJK>
++<U84A6> /x8f/xd8/xee <CJK>
++<U84A8> /x8f/xd8/xef <CJK>
++<U84A9> /x8f/xd8/xf0 <CJK>
++<U84AA> /x8f/xd8/xf1 <CJK>
++<U84AF> /x8f/xd8/xf2 <CJK>
++<U84B1> /x8f/xd8/xf3 <CJK>
++<U84B4> /x8f/xd8/xf4 <CJK>
++<U84BA> /x8f/xd8/xf5 <CJK>
++<U84BD> /x8f/xd8/xf6 <CJK>
++<U84BE> /x8f/xd8/xf7 <CJK>
++<U84C0> /x8f/xd8/xf8 <CJK>
++<U84C2> /x8f/xd8/xf9 <CJK>
++<U84C7> /x8f/xd8/xfa <CJK>
++<U84C8> /x8f/xd8/xfb <CJK>
++<U84CC> /x8f/xd8/xfc <CJK>
++<U84CF> /x8f/xd8/xfd <CJK>
++<U84D3> /x8f/xd8/xfe <CJK>
++<U84DC> /x8f/xd9/xa1 <CJK>
++<U84E7> /x8f/xd9/xa2 <CJK>
++<U84EA> /x8f/xd9/xa3 <CJK>
++<U84EF> /x8f/xd9/xa4 <CJK>
++<U84F0> /x8f/xd9/xa5 <CJK>
++<U84F1> /x8f/xd9/xa6 <CJK>
++<U84F2> /x8f/xd9/xa7 <CJK>
++<U84F7> /x8f/xd9/xa8 <CJK>
++<U8532> /x8f/xd9/xa9 <CJK>
++<U84FA> /x8f/xd9/xaa <CJK>
++<U84FB> /x8f/xd9/xab <CJK>
++<U84FD> /x8f/xd9/xac <CJK>
++<U8502> /x8f/xd9/xad <CJK>
++<U8503> /x8f/xd9/xae <CJK>
++<U8507> /x8f/xd9/xaf <CJK>
++<U850C> /x8f/xd9/xb0 <CJK>
++<U850E> /x8f/xd9/xb1 <CJK>
++<U8510> /x8f/xd9/xb2 <CJK>
++<U851C> /x8f/xd9/xb3 <CJK>
++<U851E> /x8f/xd9/xb4 <CJK>
++<U8522> /x8f/xd9/xb5 <CJK>
++<U8523> /x8f/xd9/xb6 <CJK>
++<U8524> /x8f/xd9/xb7 <CJK>
++<U8525> /x8f/xd9/xb8 <CJK>
++<U8527> /x8f/xd9/xb9 <CJK>
++<U852A> /x8f/xd9/xba <CJK>
++<U852B> /x8f/xd9/xbb <CJK>
++<U852F> /x8f/xd9/xbc <CJK>
++<U8533> /x8f/xd9/xbd <CJK>
++<U8534> /x8f/xd9/xbe <CJK>
++<U8536> /x8f/xd9/xbf <CJK>
++<U853F> /x8f/xd9/xc0 <CJK>
++<U8546> /x8f/xd9/xc1 <CJK>
++<U854F> /x8f/xd9/xc2 <CJK>
++<U8550> /x8f/xd9/xc3 <CJK>
++<U8551> /x8f/xd9/xc4 <CJK>
++<U8552> /x8f/xd9/xc5 <CJK>
++<U8553> /x8f/xd9/xc6 <CJK>
++<U8556> /x8f/xd9/xc7 <CJK>
++<U8559> /x8f/xd9/xc8 <CJK>
++<U855C> /x8f/xd9/xc9 <CJK>
++<U855D> /x8f/xd9/xca <CJK>
++<U855E> /x8f/xd9/xcb <CJK>
++<U855F> /x8f/xd9/xcc <CJK>
++<U8560> /x8f/xd9/xcd <CJK>
++<U8561> /x8f/xd9/xce <CJK>
++<U8562> /x8f/xd9/xcf <CJK>
++<U8564> /x8f/xd9/xd0 <CJK>
++<U856B> /x8f/xd9/xd1 <CJK>
++<U856F> /x8f/xd9/xd2 <CJK>
++<U8579> /x8f/xd9/xd3 <CJK>
++<U857A> /x8f/xd9/xd4 <CJK>
++<U857B> /x8f/xd9/xd5 <CJK>
++<U857D> /x8f/xd9/xd6 <CJK>
++<U857F> /x8f/xd9/xd7 <CJK>
++<U8581> /x8f/xd9/xd8 <CJK>
++<U8585> /x8f/xd9/xd9 <CJK>
++<U8586> /x8f/xd9/xda <CJK>
++<U8589> /x8f/xd9/xdb <CJK>
++<U858B> /x8f/xd9/xdc <CJK>
++<U858C> /x8f/xd9/xdd <CJK>
++<U858F> /x8f/xd9/xde <CJK>
++<U8593> /x8f/xd9/xdf <CJK>
++<U8598> /x8f/xd9/xe0 <CJK>
++<U859D> /x8f/xd9/xe1 <CJK>
++<U859F> /x8f/xd9/xe2 <CJK>
++<U85A0> /x8f/xd9/xe3 <CJK>
++<U85A2> /x8f/xd9/xe4 <CJK>
++<U85A5> /x8f/xd9/xe5 <CJK>
++<U85A7> /x8f/xd9/xe6 <CJK>
++<U85B4> /x8f/xd9/xe7 <CJK>
++<U85B6> /x8f/xd9/xe8 <CJK>
++<U85B7> /x8f/xd9/xe9 <CJK>
++<U85B8> /x8f/xd9/xea <CJK>
++<U85BC> /x8f/xd9/xeb <CJK>
++<U85BD> /x8f/xd9/xec <CJK>
++<U85BE> /x8f/xd9/xed <CJK>
++<U85BF> /x8f/xd9/xee <CJK>
++<U85C2> /x8f/xd9/xef <CJK>
++<U85C7> /x8f/xd9/xf0 <CJK>
++<U85CA> /x8f/xd9/xf1 <CJK>
++<U85CB> /x8f/xd9/xf2 <CJK>
++<U85CE> /x8f/xd9/xf3 <CJK>
++<U85AD> /x8f/xd9/xf4 <CJK>
++<U85D8> /x8f/xd9/xf5 <CJK>
++<U85DA> /x8f/xd9/xf6 <CJK>
++<U85DF> /x8f/xd9/xf7 <CJK>
++<U85E0> /x8f/xd9/xf8 <CJK>
++<U85E6> /x8f/xd9/xf9 <CJK>
++<U85E8> /x8f/xd9/xfa <CJK>
++<U85ED> /x8f/xd9/xfb <CJK>
++<U85F3> /x8f/xd9/xfc <CJK>
++<U85F6> /x8f/xd9/xfd <CJK>
++<U85FC> /x8f/xd9/xfe <CJK>
++<U85FF> /x8f/xda/xa1 <CJK>
++<U8600> /x8f/xda/xa2 <CJK>
++<U8604> /x8f/xda/xa3 <CJK>
++<U8605> /x8f/xda/xa4 <CJK>
++<U860D> /x8f/xda/xa5 <CJK>
++<U860E> /x8f/xda/xa6 <CJK>
++<U8610> /x8f/xda/xa7 <CJK>
++<U8611> /x8f/xda/xa8 <CJK>
++<U8612> /x8f/xda/xa9 <CJK>
++<U8618> /x8f/xda/xaa <CJK>
++<U8619> /x8f/xda/xab <CJK>
++<U861B> /x8f/xda/xac <CJK>
++<U861E> /x8f/xda/xad <CJK>
++<U8621> /x8f/xda/xae <CJK>
++<U8627> /x8f/xda/xaf <CJK>
++<U8629> /x8f/xda/xb0 <CJK>
++<U8636> /x8f/xda/xb1 <CJK>
++<U8638> /x8f/xda/xb2 <CJK>
++<U863A> /x8f/xda/xb3 <CJK>
++<U863C> /x8f/xda/xb4 <CJK>
++<U863D> /x8f/xda/xb5 <CJK>
++<U8640> /x8f/xda/xb6 <CJK>
++<U8642> /x8f/xda/xb7 <CJK>
++<U8646> /x8f/xda/xb8 <CJK>
++<U8652> /x8f/xda/xb9 <CJK>
++<U8653> /x8f/xda/xba <CJK>
++<U8656> /x8f/xda/xbb <CJK>
++<U8657> /x8f/xda/xbc <CJK>
++<U8658> /x8f/xda/xbd <CJK>
++<U8659> /x8f/xda/xbe <CJK>
++<U865D> /x8f/xda/xbf <CJK>
++<U8660> /x8f/xda/xc0 <CJK>
++<U8661> /x8f/xda/xc1 <CJK>
++<U8662> /x8f/xda/xc2 <CJK>
++<U8663> /x8f/xda/xc3 <CJK>
++<U8664> /x8f/xda/xc4 <CJK>
++<U8669> /x8f/xda/xc5 <CJK>
++<U866C> /x8f/xda/xc6 <CJK>
++<U866F> /x8f/xda/xc7 <CJK>
++<U8675> /x8f/xda/xc8 <CJK>
++<U8676> /x8f/xda/xc9 <CJK>
++<U8677> /x8f/xda/xca <CJK>
++<U867A> /x8f/xda/xcb <CJK>
++<U868D> /x8f/xda/xcc <CJK>
++<U8691> /x8f/xda/xcd <CJK>
++<U8696> /x8f/xda/xce <CJK>
++<U8698> /x8f/xda/xcf <CJK>
++<U869A> /x8f/xda/xd0 <CJK>
++<U869C> /x8f/xda/xd1 <CJK>
++<U86A1> /x8f/xda/xd2 <CJK>
++<U86A6> /x8f/xda/xd3 <CJK>
++<U86A7> /x8f/xda/xd4 <CJK>
++<U86A8> /x8f/xda/xd5 <CJK>
++<U86AD> /x8f/xda/xd6 <CJK>
++<U86B1> /x8f/xda/xd7 <CJK>
++<U86B3> /x8f/xda/xd8 <CJK>
++<U86B4> /x8f/xda/xd9 <CJK>
++<U86B5> /x8f/xda/xda <CJK>
++<U86B7> /x8f/xda/xdb <CJK>
++<U86B8> /x8f/xda/xdc <CJK>
++<U86B9> /x8f/xda/xdd <CJK>
++<U86BF> /x8f/xda/xde <CJK>
++<U86C0> /x8f/xda/xdf <CJK>
++<U86C1> /x8f/xda/xe0 <CJK>
++<U86C3> /x8f/xda/xe1 <CJK>
++<U86C5> /x8f/xda/xe2 <CJK>
++<U86D1> /x8f/xda/xe3 <CJK>
++<U86D2> /x8f/xda/xe4 <CJK>
++<U86D5> /x8f/xda/xe5 <CJK>
++<U86D7> /x8f/xda/xe6 <CJK>
++<U86DA> /x8f/xda/xe7 <CJK>
++<U86DC> /x8f/xda/xe8 <CJK>
++<U86E0> /x8f/xda/xe9 <CJK>
++<U86E3> /x8f/xda/xea <CJK>
++<U86E5> /x8f/xda/xeb <CJK>
++<U86E7> /x8f/xda/xec <CJK>
++<U8688> /x8f/xda/xed <CJK>
++<U86FA> /x8f/xda/xee <CJK>
++<U86FC> /x8f/xda/xef <CJK>
++<U86FD> /x8f/xda/xf0 <CJK>
++<U8704> /x8f/xda/xf1 <CJK>
++<U8705> /x8f/xda/xf2 <CJK>
++<U8707> /x8f/xda/xf3 <CJK>
++<U870B> /x8f/xda/xf4 <CJK>
++<U870E> /x8f/xda/xf5 <CJK>
++<U870F> /x8f/xda/xf6 <CJK>
++<U8710> /x8f/xda/xf7 <CJK>
++<U8713> /x8f/xda/xf8 <CJK>
++<U8714> /x8f/xda/xf9 <CJK>
++<U8719> /x8f/xda/xfa <CJK>
++<U871E> /x8f/xda/xfb <CJK>
++<U871F> /x8f/xda/xfc <CJK>
++<U8721> /x8f/xda/xfd <CJK>
++<U8723> /x8f/xda/xfe <CJK>
++<U8728> /x8f/xdb/xa1 <CJK>
++<U872E> /x8f/xdb/xa2 <CJK>
++<U872F> /x8f/xdb/xa3 <CJK>
++<U8731> /x8f/xdb/xa4 <CJK>
++<U8732> /x8f/xdb/xa5 <CJK>
++<U8739> /x8f/xdb/xa6 <CJK>
++<U873A> /x8f/xdb/xa7 <CJK>
++<U873C> /x8f/xdb/xa8 <CJK>
++<U873D> /x8f/xdb/xa9 <CJK>
++<U873E> /x8f/xdb/xaa <CJK>
++<U8740> /x8f/xdb/xab <CJK>
++<U8743> /x8f/xdb/xac <CJK>
++<U8745> /x8f/xdb/xad <CJK>
++<U874D> /x8f/xdb/xae <CJK>
++<U8758> /x8f/xdb/xaf <CJK>
++<U875D> /x8f/xdb/xb0 <CJK>
++<U8761> /x8f/xdb/xb1 <CJK>
++<U8764> /x8f/xdb/xb2 <CJK>
++<U8765> /x8f/xdb/xb3 <CJK>
++<U876F> /x8f/xdb/xb4 <CJK>
++<U8771> /x8f/xdb/xb5 <CJK>
++<U8772> /x8f/xdb/xb6 <CJK>
++<U877B> /x8f/xdb/xb7 <CJK>
++<U8783> /x8f/xdb/xb8 <CJK>
++<U8784> /x8f/xdb/xb9 <CJK>
++<U8785> /x8f/xdb/xba <CJK>
++<U8786> /x8f/xdb/xbb <CJK>
++<U8787> /x8f/xdb/xbc <CJK>
++<U8788> /x8f/xdb/xbd <CJK>
++<U8789> /x8f/xdb/xbe <CJK>
++<U878B> /x8f/xdb/xbf <CJK>
++<U878C> /x8f/xdb/xc0 <CJK>
++<U8790> /x8f/xdb/xc1 <CJK>
++<U8793> /x8f/xdb/xc2 <CJK>
++<U8795> /x8f/xdb/xc3 <CJK>
++<U8797> /x8f/xdb/xc4 <CJK>
++<U8798> /x8f/xdb/xc5 <CJK>
++<U8799> /x8f/xdb/xc6 <CJK>
++<U879E> /x8f/xdb/xc7 <CJK>
++<U87A0> /x8f/xdb/xc8 <CJK>
++<U87A3> /x8f/xdb/xc9 <CJK>
++<U87A7> /x8f/xdb/xca <CJK>
++<U87AC> /x8f/xdb/xcb <CJK>
++<U87AD> /x8f/xdb/xcc <CJK>
++<U87AE> /x8f/xdb/xcd <CJK>
++<U87B1> /x8f/xdb/xce <CJK>
++<U87B5> /x8f/xdb/xcf <CJK>
++<U87BE> /x8f/xdb/xd0 <CJK>
++<U87BF> /x8f/xdb/xd1 <CJK>
++<U87C1> /x8f/xdb/xd2 <CJK>
++<U87C8> /x8f/xdb/xd3 <CJK>
++<U87C9> /x8f/xdb/xd4 <CJK>
++<U87CA> /x8f/xdb/xd5 <CJK>
++<U87CE> /x8f/xdb/xd6 <CJK>
++<U87D5> /x8f/xdb/xd7 <CJK>
++<U87D6> /x8f/xdb/xd8 <CJK>
++<U87D9> /x8f/xdb/xd9 <CJK>
++<U87DA> /x8f/xdb/xda <CJK>
++<U87DC> /x8f/xdb/xdb <CJK>
++<U87DF> /x8f/xdb/xdc <CJK>
++<U87E2> /x8f/xdb/xdd <CJK>
++<U87E3> /x8f/xdb/xde <CJK>
++<U87E4> /x8f/xdb/xdf <CJK>
++<U87EA> /x8f/xdb/xe0 <CJK>
++<U87EB> /x8f/xdb/xe1 <CJK>
++<U87ED> /x8f/xdb/xe2 <CJK>
++<U87F1> /x8f/xdb/xe3 <CJK>
++<U87F3> /x8f/xdb/xe4 <CJK>
++<U87F8> /x8f/xdb/xe5 <CJK>
++<U87FA> /x8f/xdb/xe6 <CJK>
++<U87FF> /x8f/xdb/xe7 <CJK>
++<U8801> /x8f/xdb/xe8 <CJK>
++<U8803> /x8f/xdb/xe9 <CJK>
++<U8806> /x8f/xdb/xea <CJK>
++<U8809> /x8f/xdb/xeb <CJK>
++<U880A> /x8f/xdb/xec <CJK>
++<U880B> /x8f/xdb/xed <CJK>
++<U8810> /x8f/xdb/xee <CJK>
++<U8819> /x8f/xdb/xef <CJK>
++<U8812> /x8f/xdb/xf0 <CJK>
++<U8813> /x8f/xdb/xf1 <CJK>
++<U8814> /x8f/xdb/xf2 <CJK>
++<U8818> /x8f/xdb/xf3 <CJK>
++<U881A> /x8f/xdb/xf4 <CJK>
++<U881B> /x8f/xdb/xf5 <CJK>
++<U881C> /x8f/xdb/xf6 <CJK>
++<U881E> /x8f/xdb/xf7 <CJK>
++<U881F> /x8f/xdb/xf8 <CJK>
++<U8828> /x8f/xdb/xf9 <CJK>
++<U882D> /x8f/xdb/xfa <CJK>
++<U882E> /x8f/xdb/xfb <CJK>
++<U8830> /x8f/xdb/xfc <CJK>
++<U8832> /x8f/xdb/xfd <CJK>
++<U8835> /x8f/xdb/xfe <CJK>
++<U883A> /x8f/xdc/xa1 <CJK>
++<U883C> /x8f/xdc/xa2 <CJK>
++<U8841> /x8f/xdc/xa3 <CJK>
++<U8843> /x8f/xdc/xa4 <CJK>
++<U8845> /x8f/xdc/xa5 <CJK>
++<U8848> /x8f/xdc/xa6 <CJK>
++<U8849> /x8f/xdc/xa7 <CJK>
++<U884A> /x8f/xdc/xa8 <CJK>
++<U884B> /x8f/xdc/xa9 <CJK>
++<U884E> /x8f/xdc/xaa <CJK>
++<U8851> /x8f/xdc/xab <CJK>
++<U8855> /x8f/xdc/xac <CJK>
++<U8856> /x8f/xdc/xad <CJK>
++<U8858> /x8f/xdc/xae <CJK>
++<U885A> /x8f/xdc/xaf <CJK>
++<U885C> /x8f/xdc/xb0 <CJK>
++<U885F> /x8f/xdc/xb1 <CJK>
++<U8860> /x8f/xdc/xb2 <CJK>
++<U8864> /x8f/xdc/xb3 <CJK>
++<U8869> /x8f/xdc/xb4 <CJK>
++<U8871> /x8f/xdc/xb5 <CJK>
++<U8879> /x8f/xdc/xb6 <CJK>
++<U887B> /x8f/xdc/xb7 <CJK>
++<U8880> /x8f/xdc/xb8 <CJK>
++<U8898> /x8f/xdc/xb9 <CJK>
++<U889A> /x8f/xdc/xba <CJK>
++<U889B> /x8f/xdc/xbb <CJK>
++<U889C> /x8f/xdc/xbc <CJK>
++<U889F> /x8f/xdc/xbd <CJK>
++<U88A0> /x8f/xdc/xbe <CJK>
++<U88A8> /x8f/xdc/xbf <CJK>
++<U88AA> /x8f/xdc/xc0 <CJK>
++<U88BA> /x8f/xdc/xc1 <CJK>
++<U88BD> /x8f/xdc/xc2 <CJK>
++<U88BE> /x8f/xdc/xc3 <CJK>
++<U88C0> /x8f/xdc/xc4 <CJK>
++<U88CA> /x8f/xdc/xc5 <CJK>
++<U88CB> /x8f/xdc/xc6 <CJK>
++<U88CC> /x8f/xdc/xc7 <CJK>
++<U88CD> /x8f/xdc/xc8 <CJK>
++<U88CE> /x8f/xdc/xc9 <CJK>
++<U88D1> /x8f/xdc/xca <CJK>
++<U88D2> /x8f/xdc/xcb <CJK>
++<U88D3> /x8f/xdc/xcc <CJK>
++<U88DB> /x8f/xdc/xcd <CJK>
++<U88DE> /x8f/xdc/xce <CJK>
++<U88E7> /x8f/xdc/xcf <CJK>
++<U88EF> /x8f/xdc/xd0 <CJK>
++<U88F0> /x8f/xdc/xd1 <CJK>
++<U88F1> /x8f/xdc/xd2 <CJK>
++<U88F5> /x8f/xdc/xd3 <CJK>
++<U88F7> /x8f/xdc/xd4 <CJK>
++<U8901> /x8f/xdc/xd5 <CJK>
++<U8906> /x8f/xdc/xd6 <CJK>
++<U890D> /x8f/xdc/xd7 <CJK>
++<U890E> /x8f/xdc/xd8 <CJK>
++<U890F> /x8f/xdc/xd9 <CJK>
++<U8915> /x8f/xdc/xda <CJK>
++<U8916> /x8f/xdc/xdb <CJK>
++<U8918> /x8f/xdc/xdc <CJK>
++<U8919> /x8f/xdc/xdd <CJK>
++<U891A> /x8f/xdc/xde <CJK>
++<U891C> /x8f/xdc/xdf <CJK>
++<U8920> /x8f/xdc/xe0 <CJK>
++<U8926> /x8f/xdc/xe1 <CJK>
++<U8927> /x8f/xdc/xe2 <CJK>
++<U8928> /x8f/xdc/xe3 <CJK>
++<U8930> /x8f/xdc/xe4 <CJK>
++<U8931> /x8f/xdc/xe5 <CJK>
++<U8932> /x8f/xdc/xe6 <CJK>
++<U8935> /x8f/xdc/xe7 <CJK>
++<U8939> /x8f/xdc/xe8 <CJK>
++<U893A> /x8f/xdc/xe9 <CJK>
++<U893E> /x8f/xdc/xea <CJK>
++<U8940> /x8f/xdc/xeb <CJK>
++<U8942> /x8f/xdc/xec <CJK>
++<U8945> /x8f/xdc/xed <CJK>
++<U8946> /x8f/xdc/xee <CJK>
++<U8949> /x8f/xdc/xef <CJK>
++<U894F> /x8f/xdc/xf0 <CJK>
++<U8952> /x8f/xdc/xf1 <CJK>
++<U8957> /x8f/xdc/xf2 <CJK>
++<U895A> /x8f/xdc/xf3 <CJK>
++<U895B> /x8f/xdc/xf4 <CJK>
++<U895C> /x8f/xdc/xf5 <CJK>
++<U8961> /x8f/xdc/xf6 <CJK>
++<U8962> /x8f/xdc/xf7 <CJK>
++<U8963> /x8f/xdc/xf8 <CJK>
++<U896B> /x8f/xdc/xf9 <CJK>
++<U896E> /x8f/xdc/xfa <CJK>
++<U8970> /x8f/xdc/xfb <CJK>
++<U8973> /x8f/xdc/xfc <CJK>
++<U8975> /x8f/xdc/xfd <CJK>
++<U897A> /x8f/xdc/xfe <CJK>
++<U897B> /x8f/xdd/xa1 <CJK>
++<U897C> /x8f/xdd/xa2 <CJK>
++<U897D> /x8f/xdd/xa3 <CJK>
++<U8989> /x8f/xdd/xa4 <CJK>
++<U898D> /x8f/xdd/xa5 <CJK>
++<U8990> /x8f/xdd/xa6 <CJK>
++<U8994> /x8f/xdd/xa7 <CJK>
++<U8995> /x8f/xdd/xa8 <CJK>
++<U899B> /x8f/xdd/xa9 <CJK>
++<U899C> /x8f/xdd/xaa <CJK>
++<U899F> /x8f/xdd/xab <CJK>
++<U89A0> /x8f/xdd/xac <CJK>
++<U89A5> /x8f/xdd/xad <CJK>
++<U89B0> /x8f/xdd/xae <CJK>
++<U89B4> /x8f/xdd/xaf <CJK>
++<U89B5> /x8f/xdd/xb0 <CJK>
++<U89B6> /x8f/xdd/xb1 <CJK>
++<U89B7> /x8f/xdd/xb2 <CJK>
++<U89BC> /x8f/xdd/xb3 <CJK>
++<U89D4> /x8f/xdd/xb4 <CJK>
++<U89D5> /x8f/xdd/xb5 <CJK>
++<U89D6> /x8f/xdd/xb6 <CJK>
++<U89D7> /x8f/xdd/xb7 <CJK>
++<U89D8> /x8f/xdd/xb8 <CJK>
++<U89E5> /x8f/xdd/xb9 <CJK>
++<U89E9> /x8f/xdd/xba <CJK>
++<U89EB> /x8f/xdd/xbb <CJK>
++<U89ED> /x8f/xdd/xbc <CJK>
++<U89F1> /x8f/xdd/xbd <CJK>
++<U89F3> /x8f/xdd/xbe <CJK>
++<U89F6> /x8f/xdd/xbf <CJK>
++<U89F9> /x8f/xdd/xc0 <CJK>
++<U89FD> /x8f/xdd/xc1 <CJK>
++<U89FF> /x8f/xdd/xc2 <CJK>
++<U8A04> /x8f/xdd/xc3 <CJK>
++<U8A05> /x8f/xdd/xc4 <CJK>
++<U8A07> /x8f/xdd/xc5 <CJK>
++<U8A0F> /x8f/xdd/xc6 <CJK>
++<U8A11> /x8f/xdd/xc7 <CJK>
++<U8A12> /x8f/xdd/xc8 <CJK>
++<U8A14> /x8f/xdd/xc9 <CJK>
++<U8A15> /x8f/xdd/xca <CJK>
++<U8A1E> /x8f/xdd/xcb <CJK>
++<U8A20> /x8f/xdd/xcc <CJK>
++<U8A22> /x8f/xdd/xcd <CJK>
++<U8A24> /x8f/xdd/xce <CJK>
++<U8A26> /x8f/xdd/xcf <CJK>
++<U8A2B> /x8f/xdd/xd0 <CJK>
++<U8A2C> /x8f/xdd/xd1 <CJK>
++<U8A2F> /x8f/xdd/xd2 <CJK>
++<U8A35> /x8f/xdd/xd3 <CJK>
++<U8A37> /x8f/xdd/xd4 <CJK>
++<U8A3D> /x8f/xdd/xd5 <CJK>
++<U8A3E> /x8f/xdd/xd6 <CJK>
++<U8A40> /x8f/xdd/xd7 <CJK>
++<U8A43> /x8f/xdd/xd8 <CJK>
++<U8A45> /x8f/xdd/xd9 <CJK>
++<U8A47> /x8f/xdd/xda <CJK>
++<U8A49> /x8f/xdd/xdb <CJK>
++<U8A4D> /x8f/xdd/xdc <CJK>
++<U8A4E> /x8f/xdd/xdd <CJK>
++<U8A53> /x8f/xdd/xde <CJK>
++<U8A56> /x8f/xdd/xdf <CJK>
++<U8A57> /x8f/xdd/xe0 <CJK>
++<U8A58> /x8f/xdd/xe1 <CJK>
++<U8A5C> /x8f/xdd/xe2 <CJK>
++<U8A5D> /x8f/xdd/xe3 <CJK>
++<U8A61> /x8f/xdd/xe4 <CJK>
++<U8A65> /x8f/xdd/xe5 <CJK>
++<U8A67> /x8f/xdd/xe6 <CJK>
++<U8A75> /x8f/xdd/xe7 <CJK>
++<U8A76> /x8f/xdd/xe8 <CJK>
++<U8A77> /x8f/xdd/xe9 <CJK>
++<U8A79> /x8f/xdd/xea <CJK>
++<U8A7A> /x8f/xdd/xeb <CJK>
++<U8A7B> /x8f/xdd/xec <CJK>
++<U8A7E> /x8f/xdd/xed <CJK>
++<U8A7F> /x8f/xdd/xee <CJK>
++<U8A80> /x8f/xdd/xef <CJK>
++<U8A83> /x8f/xdd/xf0 <CJK>
++<U8A86> /x8f/xdd/xf1 <CJK>
++<U8A8B> /x8f/xdd/xf2 <CJK>
++<U8A8F> /x8f/xdd/xf3 <CJK>
++<U8A90> /x8f/xdd/xf4 <CJK>
++<U8A92> /x8f/xdd/xf5 <CJK>
++<U8A96> /x8f/xdd/xf6 <CJK>
++<U8A97> /x8f/xdd/xf7 <CJK>
++<U8A99> /x8f/xdd/xf8 <CJK>
++<U8A9F> /x8f/xdd/xf9 <CJK>
++<U8AA7> /x8f/xdd/xfa <CJK>
++<U8AA9> /x8f/xdd/xfb <CJK>
++<U8AAE> /x8f/xdd/xfc <CJK>
++<U8AAF> /x8f/xdd/xfd <CJK>
++<U8AB3> /x8f/xdd/xfe <CJK>
++<U8AB6> /x8f/xde/xa1 <CJK>
++<U8AB7> /x8f/xde/xa2 <CJK>
++<U8ABB> /x8f/xde/xa3 <CJK>
++<U8ABE> /x8f/xde/xa4 <CJK>
++<U8AC3> /x8f/xde/xa5 <CJK>
++<U8AC6> /x8f/xde/xa6 <CJK>
++<U8AC8> /x8f/xde/xa7 <CJK>
++<U8AC9> /x8f/xde/xa8 <CJK>
++<U8ACA> /x8f/xde/xa9 <CJK>
++<U8AD1> /x8f/xde/xaa <CJK>
++<U8AD3> /x8f/xde/xab <CJK>
++<U8AD4> /x8f/xde/xac <CJK>
++<U8AD5> /x8f/xde/xad <CJK>
++<U8AD7> /x8f/xde/xae <CJK>
++<U8ADD> /x8f/xde/xaf <CJK>
++<U8ADF> /x8f/xde/xb0 <CJK>
++<U8AEC> /x8f/xde/xb1 <CJK>
++<U8AF0> /x8f/xde/xb2 <CJK>
++<U8AF4> /x8f/xde/xb3 <CJK>
++<U8AF5> /x8f/xde/xb4 <CJK>
++<U8AF6> /x8f/xde/xb5 <CJK>
++<U8AFC> /x8f/xde/xb6 <CJK>
++<U8AFF> /x8f/xde/xb7 <CJK>
++<U8B05> /x8f/xde/xb8 <CJK>
++<U8B06> /x8f/xde/xb9 <CJK>
++<U8B0B> /x8f/xde/xba <CJK>
++<U8B11> /x8f/xde/xbb <CJK>
++<U8B1C> /x8f/xde/xbc <CJK>
++<U8B1E> /x8f/xde/xbd <CJK>
++<U8B1F> /x8f/xde/xbe <CJK>
++<U8B0A> /x8f/xde/xbf <CJK>
++<U8B2D> /x8f/xde/xc0 <CJK>
++<U8B30> /x8f/xde/xc1 <CJK>
++<U8B37> /x8f/xde/xc2 <CJK>
++<U8B3C> /x8f/xde/xc3 <CJK>
++<U8B42> /x8f/xde/xc4 <CJK>
++<U8B43> /x8f/xde/xc5 <CJK>
++<U8B44> /x8f/xde/xc6 <CJK>
++<U8B45> /x8f/xde/xc7 <CJK>
++<U8B46> /x8f/xde/xc8 <CJK>
++<U8B48> /x8f/xde/xc9 <CJK>
++<U8B52> /x8f/xde/xca <CJK>
++<U8B53> /x8f/xde/xcb <CJK>
++<U8B54> /x8f/xde/xcc <CJK>
++<U8B59> /x8f/xde/xcd <CJK>
++<U8B4D> /x8f/xde/xce <CJK>
++<U8B5E> /x8f/xde/xcf <CJK>
++<U8B63> /x8f/xde/xd0 <CJK>
++<U8B6D> /x8f/xde/xd1 <CJK>
++<U8B76> /x8f/xde/xd2 <CJK>
++<U8B78> /x8f/xde/xd3 <CJK>
++<U8B79> /x8f/xde/xd4 <CJK>
++<U8B7C> /x8f/xde/xd5 <CJK>
++<U8B7E> /x8f/xde/xd6 <CJK>
++<U8B81> /x8f/xde/xd7 <CJK>
++<U8B84> /x8f/xde/xd8 <CJK>
++<U8B85> /x8f/xde/xd9 <CJK>
++<U8B8B> /x8f/xde/xda <CJK>
++<U8B8D> /x8f/xde/xdb <CJK>
++<U8B8F> /x8f/xde/xdc <CJK>
++<U8B94> /x8f/xde/xdd <CJK>
++<U8B95> /x8f/xde/xde <CJK>
++<U8B9C> /x8f/xde/xdf <CJK>
++<U8B9E> /x8f/xde/xe0 <CJK>
++<U8B9F> /x8f/xde/xe1 <CJK>
++<U8C38> /x8f/xde/xe2 <CJK>
++<U8C39> /x8f/xde/xe3 <CJK>
++<U8C3D> /x8f/xde/xe4 <CJK>
++<U8C3E> /x8f/xde/xe5 <CJK>
++<U8C45> /x8f/xde/xe6 <CJK>
++<U8C47> /x8f/xde/xe7 <CJK>
++<U8C49> /x8f/xde/xe8 <CJK>
++<U8C4B> /x8f/xde/xe9 <CJK>
++<U8C4F> /x8f/xde/xea <CJK>
++<U8C51> /x8f/xde/xeb <CJK>
++<U8C53> /x8f/xde/xec <CJK>
++<U8C54> /x8f/xde/xed <CJK>
++<U8C57> /x8f/xde/xee <CJK>
++<U8C58> /x8f/xde/xef <CJK>
++<U8C5B> /x8f/xde/xf0 <CJK>
++<U8C5D> /x8f/xde/xf1 <CJK>
++<U8C59> /x8f/xde/xf2 <CJK>
++<U8C63> /x8f/xde/xf3 <CJK>
++<U8C64> /x8f/xde/xf4 <CJK>
++<U8C66> /x8f/xde/xf5 <CJK>
++<U8C68> /x8f/xde/xf6 <CJK>
++<U8C69> /x8f/xde/xf7 <CJK>
++<U8C6D> /x8f/xde/xf8 <CJK>
++<U8C73> /x8f/xde/xf9 <CJK>
++<U8C75> /x8f/xde/xfa <CJK>
++<U8C76> /x8f/xde/xfb <CJK>
++<U8C7B> /x8f/xde/xfc <CJK>
++<U8C7E> /x8f/xde/xfd <CJK>
++<U8C86> /x8f/xde/xfe <CJK>
++<U8C87> /x8f/xdf/xa1 <CJK>
++<U8C8B> /x8f/xdf/xa2 <CJK>
++<U8C90> /x8f/xdf/xa3 <CJK>
++<U8C92> /x8f/xdf/xa4 <CJK>
++<U8C93> /x8f/xdf/xa5 <CJK>
++<U8C99> /x8f/xdf/xa6 <CJK>
++<U8C9B> /x8f/xdf/xa7 <CJK>
++<U8C9C> /x8f/xdf/xa8 <CJK>
++<U8CA4> /x8f/xdf/xa9 <CJK>
++<U8CB9> /x8f/xdf/xaa <CJK>
++<U8CBA> /x8f/xdf/xab <CJK>
++<U8CC5> /x8f/xdf/xac <CJK>
++<U8CC6> /x8f/xdf/xad <CJK>
++<U8CC9> /x8f/xdf/xae <CJK>
++<U8CCB> /x8f/xdf/xaf <CJK>
++<U8CCF> /x8f/xdf/xb0 <CJK>
++<U8CD6> /x8f/xdf/xb1 <CJK>
++<U8CD5> /x8f/xdf/xb2 <CJK>
++<U8CD9> /x8f/xdf/xb3 <CJK>
++<U8CDD> /x8f/xdf/xb4 <CJK>
++<U8CE1> /x8f/xdf/xb5 <CJK>
++<U8CE8> /x8f/xdf/xb6 <CJK>
++<U8CEC> /x8f/xdf/xb7 <CJK>
++<U8CEF> /x8f/xdf/xb8 <CJK>
++<U8CF0> /x8f/xdf/xb9 <CJK>
++<U8CF2> /x8f/xdf/xba <CJK>
++<U8CF5> /x8f/xdf/xbb <CJK>
++<U8CF7> /x8f/xdf/xbc <CJK>
++<U8CF8> /x8f/xdf/xbd <CJK>
++<U8CFE> /x8f/xdf/xbe <CJK>
++<U8CFF> /x8f/xdf/xbf <CJK>
++<U8D01> /x8f/xdf/xc0 <CJK>
++<U8D03> /x8f/xdf/xc1 <CJK>
++<U8D09> /x8f/xdf/xc2 <CJK>
++<U8D12> /x8f/xdf/xc3 <CJK>
++<U8D17> /x8f/xdf/xc4 <CJK>
++<U8D1B> /x8f/xdf/xc5 <CJK>
++<U8D65> /x8f/xdf/xc6 <CJK>
++<U8D69> /x8f/xdf/xc7 <CJK>
++<U8D6C> /x8f/xdf/xc8 <CJK>
++<U8D6E> /x8f/xdf/xc9 <CJK>
++<U8D7F> /x8f/xdf/xca <CJK>
++<U8D82> /x8f/xdf/xcb <CJK>
++<U8D84> /x8f/xdf/xcc <CJK>
++<U8D88> /x8f/xdf/xcd <CJK>
++<U8D8D> /x8f/xdf/xce <CJK>
++<U8D90> /x8f/xdf/xcf <CJK>
++<U8D91> /x8f/xdf/xd0 <CJK>
++<U8D95> /x8f/xdf/xd1 <CJK>
++<U8D9E> /x8f/xdf/xd2 <CJK>
++<U8D9F> /x8f/xdf/xd3 <CJK>
++<U8DA0> /x8f/xdf/xd4 <CJK>
++<U8DA6> /x8f/xdf/xd5 <CJK>
++<U8DAB> /x8f/xdf/xd6 <CJK>
++<U8DAC> /x8f/xdf/xd7 <CJK>
++<U8DAF> /x8f/xdf/xd8 <CJK>
++<U8DB2> /x8f/xdf/xd9 <CJK>
++<U8DB5> /x8f/xdf/xda <CJK>
++<U8DB7> /x8f/xdf/xdb <CJK>
++<U8DB9> /x8f/xdf/xdc <CJK>
++<U8DBB> /x8f/xdf/xdd <CJK>
++<U8DC0> /x8f/xdf/xde <CJK>
++<U8DC5> /x8f/xdf/xdf <CJK>
++<U8DC6> /x8f/xdf/xe0 <CJK>
++<U8DC7> /x8f/xdf/xe1 <CJK>
++<U8DC8> /x8f/xdf/xe2 <CJK>
++<U8DCA> /x8f/xdf/xe3 <CJK>
++<U8DCE> /x8f/xdf/xe4 <CJK>
++<U8DD1> /x8f/xdf/xe5 <CJK>
++<U8DD4> /x8f/xdf/xe6 <CJK>
++<U8DD5> /x8f/xdf/xe7 <CJK>
++<U8DD7> /x8f/xdf/xe8 <CJK>
++<U8DD9> /x8f/xdf/xe9 <CJK>
++<U8DE4> /x8f/xdf/xea <CJK>
++<U8DE5> /x8f/xdf/xeb <CJK>
++<U8DE7> /x8f/xdf/xec <CJK>
++<U8DEC> /x8f/xdf/xed <CJK>
++<U8DF0> /x8f/xdf/xee <CJK>
++<U8DBC> /x8f/xdf/xef <CJK>
++<U8DF1> /x8f/xdf/xf0 <CJK>
++<U8DF2> /x8f/xdf/xf1 <CJK>
++<U8DF4> /x8f/xdf/xf2 <CJK>
++<U8DFD> /x8f/xdf/xf3 <CJK>
++<U8E01> /x8f/xdf/xf4 <CJK>
++<U8E04> /x8f/xdf/xf5 <CJK>
++<U8E05> /x8f/xdf/xf6 <CJK>
++<U8E06> /x8f/xdf/xf7 <CJK>
++<U8E0B> /x8f/xdf/xf8 <CJK>
++<U8E11> /x8f/xdf/xf9 <CJK>
++<U8E14> /x8f/xdf/xfa <CJK>
++<U8E16> /x8f/xdf/xfb <CJK>
++<U8E20> /x8f/xdf/xfc <CJK>
++<U8E21> /x8f/xdf/xfd <CJK>
++<U8E22> /x8f/xdf/xfe <CJK>
++<U8E23> /x8f/xe0/xa1 <CJK>
++<U8E26> /x8f/xe0/xa2 <CJK>
++<U8E27> /x8f/xe0/xa3 <CJK>
++<U8E31> /x8f/xe0/xa4 <CJK>
++<U8E33> /x8f/xe0/xa5 <CJK>
++<U8E36> /x8f/xe0/xa6 <CJK>
++<U8E37> /x8f/xe0/xa7 <CJK>
++<U8E38> /x8f/xe0/xa8 <CJK>
++<U8E39> /x8f/xe0/xa9 <CJK>
++<U8E3D> /x8f/xe0/xaa <CJK>
++<U8E40> /x8f/xe0/xab <CJK>
++<U8E41> /x8f/xe0/xac <CJK>
++<U8E4B> /x8f/xe0/xad <CJK>
++<U8E4D> /x8f/xe0/xae <CJK>
++<U8E4E> /x8f/xe0/xaf <CJK>
++<U8E4F> /x8f/xe0/xb0 <CJK>
++<U8E54> /x8f/xe0/xb1 <CJK>
++<U8E5B> /x8f/xe0/xb2 <CJK>
++<U8E5C> /x8f/xe0/xb3 <CJK>
++<U8E5D> /x8f/xe0/xb4 <CJK>
++<U8E5E> /x8f/xe0/xb5 <CJK>
++<U8E61> /x8f/xe0/xb6 <CJK>
++<U8E62> /x8f/xe0/xb7 <CJK>
++<U8E69> /x8f/xe0/xb8 <CJK>
++<U8E6C> /x8f/xe0/xb9 <CJK>
++<U8E6D> /x8f/xe0/xba <CJK>
++<U8E6F> /x8f/xe0/xbb <CJK>
++<U8E70> /x8f/xe0/xbc <CJK>
++<U8E71> /x8f/xe0/xbd <CJK>
++<U8E79> /x8f/xe0/xbe <CJK>
++<U8E7A> /x8f/xe0/xbf <CJK>
++<U8E7B> /x8f/xe0/xc0 <CJK>
++<U8E82> /x8f/xe0/xc1 <CJK>
++<U8E83> /x8f/xe0/xc2 <CJK>
++<U8E89> /x8f/xe0/xc3 <CJK>
++<U8E90> /x8f/xe0/xc4 <CJK>
++<U8E92> /x8f/xe0/xc5 <CJK>
++<U8E95> /x8f/xe0/xc6 <CJK>
++<U8E9A> /x8f/xe0/xc7 <CJK>
++<U8E9B> /x8f/xe0/xc8 <CJK>
++<U8E9D> /x8f/xe0/xc9 <CJK>
++<U8E9E> /x8f/xe0/xca <CJK>
++<U8EA2> /x8f/xe0/xcb <CJK>
++<U8EA7> /x8f/xe0/xcc <CJK>
++<U8EA9> /x8f/xe0/xcd <CJK>
++<U8EAD> /x8f/xe0/xce <CJK>
++<U8EAE> /x8f/xe0/xcf <CJK>
++<U8EB3> /x8f/xe0/xd0 <CJK>
++<U8EB5> /x8f/xe0/xd1 <CJK>
++<U8EBA> /x8f/xe0/xd2 <CJK>
++<U8EBB> /x8f/xe0/xd3 <CJK>
++<U8EC0> /x8f/xe0/xd4 <CJK>
++<U8EC1> /x8f/xe0/xd5 <CJK>
++<U8EC3> /x8f/xe0/xd6 <CJK>
++<U8EC4> /x8f/xe0/xd7 <CJK>
++<U8EC7> /x8f/xe0/xd8 <CJK>
++<U8ECF> /x8f/xe0/xd9 <CJK>
++<U8ED1> /x8f/xe0/xda <CJK>
++<U8ED4> /x8f/xe0/xdb <CJK>
++<U8EDC> /x8f/xe0/xdc <CJK>
++<U8EE8> /x8f/xe0/xdd <CJK>
++<U8EEE> /x8f/xe0/xde <CJK>
++<U8EF0> /x8f/xe0/xdf <CJK>
++<U8EF1> /x8f/xe0/xe0 <CJK>
++<U8EF7> /x8f/xe0/xe1 <CJK>
++<U8EF9> /x8f/xe0/xe2 <CJK>
++<U8EFA> /x8f/xe0/xe3 <CJK>
++<U8EED> /x8f/xe0/xe4 <CJK>
++<U8F00> /x8f/xe0/xe5 <CJK>
++<U8F02> /x8f/xe0/xe6 <CJK>
++<U8F07> /x8f/xe0/xe7 <CJK>
++<U8F08> /x8f/xe0/xe8 <CJK>
++<U8F0F> /x8f/xe0/xe9 <CJK>
++<U8F10> /x8f/xe0/xea <CJK>
++<U8F16> /x8f/xe0/xeb <CJK>
++<U8F17> /x8f/xe0/xec <CJK>
++<U8F18> /x8f/xe0/xed <CJK>
++<U8F1E> /x8f/xe0/xee <CJK>
++<U8F20> /x8f/xe0/xef <CJK>
++<U8F21> /x8f/xe0/xf0 <CJK>
++<U8F23> /x8f/xe0/xf1 <CJK>
++<U8F25> /x8f/xe0/xf2 <CJK>
++<U8F27> /x8f/xe0/xf3 <CJK>
++<U8F28> /x8f/xe0/xf4 <CJK>
++<U8F2C> /x8f/xe0/xf5 <CJK>
++<U8F2D> /x8f/xe0/xf6 <CJK>
++<U8F2E> /x8f/xe0/xf7 <CJK>
++<U8F34> /x8f/xe0/xf8 <CJK>
++<U8F35> /x8f/xe0/xf9 <CJK>
++<U8F36> /x8f/xe0/xfa <CJK>
++<U8F37> /x8f/xe0/xfb <CJK>
++<U8F3A> /x8f/xe0/xfc <CJK>
++<U8F40> /x8f/xe0/xfd <CJK>
++<U8F41> /x8f/xe0/xfe <CJK>
++<U8F43> /x8f/xe1/xa1 <CJK>
++<U8F47> /x8f/xe1/xa2 <CJK>
++<U8F4F> /x8f/xe1/xa3 <CJK>
++<U8F51> /x8f/xe1/xa4 <CJK>
++<U8F52> /x8f/xe1/xa5 <CJK>
++<U8F53> /x8f/xe1/xa6 <CJK>
++<U8F54> /x8f/xe1/xa7 <CJK>
++<U8F55> /x8f/xe1/xa8 <CJK>
++<U8F58> /x8f/xe1/xa9 <CJK>
++<U8F5D> /x8f/xe1/xaa <CJK>
++<U8F5E> /x8f/xe1/xab <CJK>
++<U8F65> /x8f/xe1/xac <CJK>
++<U8F9D> /x8f/xe1/xad <CJK>
++<U8FA0> /x8f/xe1/xae <CJK>
++<U8FA1> /x8f/xe1/xaf <CJK>
++<U8FA4> /x8f/xe1/xb0 <CJK>
++<U8FA5> /x8f/xe1/xb1 <CJK>
++<U8FA6> /x8f/xe1/xb2 <CJK>
++<U8FB5> /x8f/xe1/xb3 <CJK>
++<U8FB6> /x8f/xe1/xb4 <CJK>
++<U8FB8> /x8f/xe1/xb5 <CJK>
++<U8FBE> /x8f/xe1/xb6 <CJK>
++<U8FC0> /x8f/xe1/xb7 <CJK>
++<U8FC1> /x8f/xe1/xb8 <CJK>
++<U8FC6> /x8f/xe1/xb9 <CJK>
++<U8FCA> /x8f/xe1/xba <CJK>
++<U8FCB> /x8f/xe1/xbb <CJK>
++<U8FCD> /x8f/xe1/xbc <CJK>
++<U8FD0> /x8f/xe1/xbd <CJK>
++<U8FD2> /x8f/xe1/xbe <CJK>
++<U8FD3> /x8f/xe1/xbf <CJK>
++<U8FD5> /x8f/xe1/xc0 <CJK>
++<U8FE0> /x8f/xe1/xc1 <CJK>
++<U8FE3> /x8f/xe1/xc2 <CJK>
++<U8FE4> /x8f/xe1/xc3 <CJK>
++<U8FE8> /x8f/xe1/xc4 <CJK>
++<U8FEE> /x8f/xe1/xc5 <CJK>
++<U8FF1> /x8f/xe1/xc6 <CJK>
++<U8FF5> /x8f/xe1/xc7 <CJK>
++<U8FF6> /x8f/xe1/xc8 <CJK>
++<U8FFB> /x8f/xe1/xc9 <CJK>
++<U8FFE> /x8f/xe1/xca <CJK>
++<U9002> /x8f/xe1/xcb <CJK>
++<U9004> /x8f/xe1/xcc <CJK>
++<U9008> /x8f/xe1/xcd <CJK>
++<U900C> /x8f/xe1/xce <CJK>
++<U9018> /x8f/xe1/xcf <CJK>
++<U901B> /x8f/xe1/xd0 <CJK>
++<U9028> /x8f/xe1/xd1 <CJK>
++<U9029> /x8f/xe1/xd2 <CJK>
++<U902F> /x8f/xe1/xd3 <CJK>
++<U902A> /x8f/xe1/xd4 <CJK>
++<U902C> /x8f/xe1/xd5 <CJK>
++<U902D> /x8f/xe1/xd6 <CJK>
++<U9033> /x8f/xe1/xd7 <CJK>
++<U9034> /x8f/xe1/xd8 <CJK>
++<U9037> /x8f/xe1/xd9 <CJK>
++<U903F> /x8f/xe1/xda <CJK>
++<U9043> /x8f/xe1/xdb <CJK>
++<U9044> /x8f/xe1/xdc <CJK>
++<U904C> /x8f/xe1/xdd <CJK>
++<U905B> /x8f/xe1/xde <CJK>
++<U905D> /x8f/xe1/xdf <CJK>
++<U9062> /x8f/xe1/xe0 <CJK>
++<U9066> /x8f/xe1/xe1 <CJK>
++<U9067> /x8f/xe1/xe2 <CJK>
++<U906C> /x8f/xe1/xe3 <CJK>
++<U9070> /x8f/xe1/xe4 <CJK>
++<U9074> /x8f/xe1/xe5 <CJK>
++<U9079> /x8f/xe1/xe6 <CJK>
++<U9085> /x8f/xe1/xe7 <CJK>
++<U9088> /x8f/xe1/xe8 <CJK>
++<U908B> /x8f/xe1/xe9 <CJK>
++<U908C> /x8f/xe1/xea <CJK>
++<U908E> /x8f/xe1/xeb <CJK>
++<U9090> /x8f/xe1/xec <CJK>
++<U9095> /x8f/xe1/xed <CJK>
++<U9097> /x8f/xe1/xee <CJK>
++<U9098> /x8f/xe1/xef <CJK>
++<U9099> /x8f/xe1/xf0 <CJK>
++<U909B> /x8f/xe1/xf1 <CJK>
++<U90A0> /x8f/xe1/xf2 <CJK>
++<U90A1> /x8f/xe1/xf3 <CJK>
++<U90A2> /x8f/xe1/xf4 <CJK>
++<U90A5> /x8f/xe1/xf5 <CJK>
++<U90B0> /x8f/xe1/xf6 <CJK>
++<U90B2> /x8f/xe1/xf7 <CJK>
++<U90B3> /x8f/xe1/xf8 <CJK>
++<U90B4> /x8f/xe1/xf9 <CJK>
++<U90B6> /x8f/xe1/xfa <CJK>
++<U90BD> /x8f/xe1/xfb <CJK>
++<U90CC> /x8f/xe1/xfc <CJK>
++<U90BE> /x8f/xe1/xfd <CJK>
++<U90C3> /x8f/xe1/xfe <CJK>
++<U90C4> /x8f/xe2/xa1 <CJK>
++<U90C5> /x8f/xe2/xa2 <CJK>
++<U90C7> /x8f/xe2/xa3 <CJK>
++<U90C8> /x8f/xe2/xa4 <CJK>
++<U90D5> /x8f/xe2/xa5 <CJK>
++<U90D7> /x8f/xe2/xa6 <CJK>
++<U90D8> /x8f/xe2/xa7 <CJK>
++<U90D9> /x8f/xe2/xa8 <CJK>
++<U90DC> /x8f/xe2/xa9 <CJK>
++<U90DD> /x8f/xe2/xaa <CJK>
++<U90DF> /x8f/xe2/xab <CJK>
++<U90E5> /x8f/xe2/xac <CJK>
++<U90D2> /x8f/xe2/xad <CJK>
++<U90F6> /x8f/xe2/xae <CJK>
++<U90EB> /x8f/xe2/xaf <CJK>
++<U90EF> /x8f/xe2/xb0 <CJK>
++<U90F0> /x8f/xe2/xb1 <CJK>
++<U90F4> /x8f/xe2/xb2 <CJK>
++<U90FE> /x8f/xe2/xb3 <CJK>
++<U90FF> /x8f/xe2/xb4 <CJK>
++<U9100> /x8f/xe2/xb5 <CJK>
++<U9104> /x8f/xe2/xb6 <CJK>
++<U9105> /x8f/xe2/xb7 <CJK>
++<U9106> /x8f/xe2/xb8 <CJK>
++<U9108> /x8f/xe2/xb9 <CJK>
++<U910D> /x8f/xe2/xba <CJK>
++<U9110> /x8f/xe2/xbb <CJK>
++<U9114> /x8f/xe2/xbc <CJK>
++<U9116> /x8f/xe2/xbd <CJK>
++<U9117> /x8f/xe2/xbe <CJK>
++<U9118> /x8f/xe2/xbf <CJK>
++<U911A> /x8f/xe2/xc0 <CJK>
++<U911C> /x8f/xe2/xc1 <CJK>
++<U911E> /x8f/xe2/xc2 <CJK>
++<U9120> /x8f/xe2/xc3 <CJK>
++<U9125> /x8f/xe2/xc4 <CJK>
++<U9122> /x8f/xe2/xc5 <CJK>
++<U9123> /x8f/xe2/xc6 <CJK>
++<U9127> /x8f/xe2/xc7 <CJK>
++<U9129> /x8f/xe2/xc8 <CJK>
++<U912E> /x8f/xe2/xc9 <CJK>
++<U912F> /x8f/xe2/xca <CJK>
++<U9131> /x8f/xe2/xcb <CJK>
++<U9134> /x8f/xe2/xcc <CJK>
++<U9136> /x8f/xe2/xcd <CJK>
++<U9137> /x8f/xe2/xce <CJK>
++<U9139> /x8f/xe2/xcf <CJK>
++<U913A> /x8f/xe2/xd0 <CJK>
++<U913C> /x8f/xe2/xd1 <CJK>
++<U913D> /x8f/xe2/xd2 <CJK>
++<U9143> /x8f/xe2/xd3 <CJK>
++<U9147> /x8f/xe2/xd4 <CJK>
++<U9148> /x8f/xe2/xd5 <CJK>
++<U914F> /x8f/xe2/xd6 <CJK>
++<U9153> /x8f/xe2/xd7 <CJK>
++<U9157> /x8f/xe2/xd8 <CJK>
++<U9159> /x8f/xe2/xd9 <CJK>
++<U915A> /x8f/xe2/xda <CJK>
++<U915B> /x8f/xe2/xdb <CJK>
++<U9161> /x8f/xe2/xdc <CJK>
++<U9164> /x8f/xe2/xdd <CJK>
++<U9167> /x8f/xe2/xde <CJK>
++<U916D> /x8f/xe2/xdf <CJK>
++<U9174> /x8f/xe2/xe0 <CJK>
++<U9179> /x8f/xe2/xe1 <CJK>
++<U917A> /x8f/xe2/xe2 <CJK>
++<U917B> /x8f/xe2/xe3 <CJK>
++<U9181> /x8f/xe2/xe4 <CJK>
++<U9183> /x8f/xe2/xe5 <CJK>
++<U9185> /x8f/xe2/xe6 <CJK>
++<U9186> /x8f/xe2/xe7 <CJK>
++<U918A> /x8f/xe2/xe8 <CJK>
++<U918E> /x8f/xe2/xe9 <CJK>
++<U9191> /x8f/xe2/xea <CJK>
++<U9193> /x8f/xe2/xeb <CJK>
++<U9194> /x8f/xe2/xec <CJK>
++<U9195> /x8f/xe2/xed <CJK>
++<U9198> /x8f/xe2/xee <CJK>
++<U919E> /x8f/xe2/xef <CJK>
++<U91A1> /x8f/xe2/xf0 <CJK>
++<U91A6> /x8f/xe2/xf1 <CJK>
++<U91A8> /x8f/xe2/xf2 <CJK>
++<U91AC> /x8f/xe2/xf3 <CJK>
++<U91AD> /x8f/xe2/xf4 <CJK>
++<U91AE> /x8f/xe2/xf5 <CJK>
++<U91B0> /x8f/xe2/xf6 <CJK>
++<U91B1> /x8f/xe2/xf7 <CJK>
++<U91B2> /x8f/xe2/xf8 <CJK>
++<U91B3> /x8f/xe2/xf9 <CJK>
++<U91B6> /x8f/xe2/xfa <CJK>
++<U91BB> /x8f/xe2/xfb <CJK>
++<U91BC> /x8f/xe2/xfc <CJK>
++<U91BD> /x8f/xe2/xfd <CJK>
++<U91BF> /x8f/xe2/xfe <CJK>
++<U91C2> /x8f/xe3/xa1 <CJK>
++<U91C3> /x8f/xe3/xa2 <CJK>
++<U91C5> /x8f/xe3/xa3 <CJK>
++<U91D3> /x8f/xe3/xa4 <CJK>
++<U91D4> /x8f/xe3/xa5 <CJK>
++<U91D7> /x8f/xe3/xa6 <CJK>
++<U91D9> /x8f/xe3/xa7 <CJK>
++<U91DA> /x8f/xe3/xa8 <CJK>
++<U91DE> /x8f/xe3/xa9 <CJK>
++<U91E4> /x8f/xe3/xaa <CJK>
++<U91E5> /x8f/xe3/xab <CJK>
++<U91E9> /x8f/xe3/xac <CJK>
++<U91EA> /x8f/xe3/xad <CJK>
++<U91EC> /x8f/xe3/xae <CJK>
++<U91ED> /x8f/xe3/xaf <CJK>
++<U91EE> /x8f/xe3/xb0 <CJK>
++<U91EF> /x8f/xe3/xb1 <CJK>
++<U91F0> /x8f/xe3/xb2 <CJK>
++<U91F1> /x8f/xe3/xb3 <CJK>
++<U91F7> /x8f/xe3/xb4 <CJK>
++<U91F9> /x8f/xe3/xb5 <CJK>
++<U91FB> /x8f/xe3/xb6 <CJK>
++<U91FD> /x8f/xe3/xb7 <CJK>
++<U9200> /x8f/xe3/xb8 <CJK>
++<U9201> /x8f/xe3/xb9 <CJK>
++<U9204> /x8f/xe3/xba <CJK>
++<U9205> /x8f/xe3/xbb <CJK>
++<U9206> /x8f/xe3/xbc <CJK>
++<U9207> /x8f/xe3/xbd <CJK>
++<U9209> /x8f/xe3/xbe <CJK>
++<U920A> /x8f/xe3/xbf <CJK>
++<U920C> /x8f/xe3/xc0 <CJK>
++<U9210> /x8f/xe3/xc1 <CJK>
++<U9212> /x8f/xe3/xc2 <CJK>
++<U9213> /x8f/xe3/xc3 <CJK>
++<U9216> /x8f/xe3/xc4 <CJK>
++<U9218> /x8f/xe3/xc5 <CJK>
++<U921C> /x8f/xe3/xc6 <CJK>
++<U921D> /x8f/xe3/xc7 <CJK>
++<U9223> /x8f/xe3/xc8 <CJK>
++<U9224> /x8f/xe3/xc9 <CJK>
++<U9225> /x8f/xe3/xca <CJK>
++<U9226> /x8f/xe3/xcb <CJK>
++<U9228> /x8f/xe3/xcc <CJK>
++<U922E> /x8f/xe3/xcd <CJK>
++<U922F> /x8f/xe3/xce <CJK>
++<U9230> /x8f/xe3/xcf <CJK>
++<U9233> /x8f/xe3/xd0 <CJK>
++<U9235> /x8f/xe3/xd1 <CJK>
++<U9236> /x8f/xe3/xd2 <CJK>
++<U9238> /x8f/xe3/xd3 <CJK>
++<U9239> /x8f/xe3/xd4 <CJK>
++<U923A> /x8f/xe3/xd5 <CJK>
++<U923C> /x8f/xe3/xd6 <CJK>
++<U923E> /x8f/xe3/xd7 <CJK>
++<U9240> /x8f/xe3/xd8 <CJK>
++<U9242> /x8f/xe3/xd9 <CJK>
++<U9243> /x8f/xe3/xda <CJK>
++<U9246> /x8f/xe3/xdb <CJK>
++<U9247> /x8f/xe3/xdc <CJK>
++<U924A> /x8f/xe3/xdd <CJK>
++<U924D> /x8f/xe3/xde <CJK>
++<U924E> /x8f/xe3/xdf <CJK>
++<U924F> /x8f/xe3/xe0 <CJK>
++<U9251> /x8f/xe3/xe1 <CJK>
++<U9258> /x8f/xe3/xe2 <CJK>
++<U9259> /x8f/xe3/xe3 <CJK>
++<U925C> /x8f/xe3/xe4 <CJK>
++<U925D> /x8f/xe3/xe5 <CJK>
++<U9260> /x8f/xe3/xe6 <CJK>
++<U9261> /x8f/xe3/xe7 <CJK>
++<U9265> /x8f/xe3/xe8 <CJK>
++<U9267> /x8f/xe3/xe9 <CJK>
++<U9268> /x8f/xe3/xea <CJK>
++<U9269> /x8f/xe3/xeb <CJK>
++<U926E> /x8f/xe3/xec <CJK>
++<U926F> /x8f/xe3/xed <CJK>
++<U9270> /x8f/xe3/xee <CJK>
++<U9275> /x8f/xe3/xef <CJK>
++<U9276> /x8f/xe3/xf0 <CJK>
++<U9277> /x8f/xe3/xf1 <CJK>
++<U9278> /x8f/xe3/xf2 <CJK>
++<U9279> /x8f/xe3/xf3 <CJK>
++<U927B> /x8f/xe3/xf4 <CJK>
++<U927C> /x8f/xe3/xf5 <CJK>
++<U927D> /x8f/xe3/xf6 <CJK>
++<U927F> /x8f/xe3/xf7 <CJK>
++<U9288> /x8f/xe3/xf8 <CJK>
++<U9289> /x8f/xe3/xf9 <CJK>
++<U928A> /x8f/xe3/xfa <CJK>
++<U928D> /x8f/xe3/xfb <CJK>
++<U928E> /x8f/xe3/xfc <CJK>
++<U9292> /x8f/xe3/xfd <CJK>
++<U9297> /x8f/xe3/xfe <CJK>
++<U9299> /x8f/xe4/xa1 <CJK>
++<U929F> /x8f/xe4/xa2 <CJK>
++<U92A0> /x8f/xe4/xa3 <CJK>
++<U92A4> /x8f/xe4/xa4 <CJK>
++<U92A5> /x8f/xe4/xa5 <CJK>
++<U92A7> /x8f/xe4/xa6 <CJK>
++<U92A8> /x8f/xe4/xa7 <CJK>
++<U92AB> /x8f/xe4/xa8 <CJK>
++<U92AF> /x8f/xe4/xa9 <CJK>
++<U92B2> /x8f/xe4/xaa <CJK>
++<U92B6> /x8f/xe4/xab <CJK>
++<U92B8> /x8f/xe4/xac <CJK>
++<U92BA> /x8f/xe4/xad <CJK>
++<U92BB> /x8f/xe4/xae <CJK>
++<U92BC> /x8f/xe4/xaf <CJK>
++<U92BD> /x8f/xe4/xb0 <CJK>
++<U92BF> /x8f/xe4/xb1 <CJK>
++<U92C0> /x8f/xe4/xb2 <CJK>
++<U92C1> /x8f/xe4/xb3 <CJK>
++<U92C2> /x8f/xe4/xb4 <CJK>
++<U92C3> /x8f/xe4/xb5 <CJK>
++<U92C5> /x8f/xe4/xb6 <CJK>
++<U92C6> /x8f/xe4/xb7 <CJK>
++<U92C7> /x8f/xe4/xb8 <CJK>
++<U92C8> /x8f/xe4/xb9 <CJK>
++<U92CB> /x8f/xe4/xba <CJK>
++<U92CC> /x8f/xe4/xbb <CJK>
++<U92CD> /x8f/xe4/xbc <CJK>
++<U92CE> /x8f/xe4/xbd <CJK>
++<U92D0> /x8f/xe4/xbe <CJK>
++<U92D3> /x8f/xe4/xbf <CJK>
++<U92D5> /x8f/xe4/xc0 <CJK>
++<U92D7> /x8f/xe4/xc1 <CJK>
++<U92D8> /x8f/xe4/xc2 <CJK>
++<U92D9> /x8f/xe4/xc3 <CJK>
++<U92DC> /x8f/xe4/xc4 <CJK>
++<U92DD> /x8f/xe4/xc5 <CJK>
++<U92DF> /x8f/xe4/xc6 <CJK>
++<U92E0> /x8f/xe4/xc7 <CJK>
++<U92E1> /x8f/xe4/xc8 <CJK>
++<U92E3> /x8f/xe4/xc9 <CJK>
++<U92E5> /x8f/xe4/xca <CJK>
++<U92E7> /x8f/xe4/xcb <CJK>
++<U92E8> /x8f/xe4/xcc <CJK>
++<U92EC> /x8f/xe4/xcd <CJK>
++<U92EE> /x8f/xe4/xce <CJK>
++<U92F0> /x8f/xe4/xcf <CJK>
++<U92F9> /x8f/xe4/xd0 <CJK>
++<U92FB> /x8f/xe4/xd1 <CJK>
++<U92FF> /x8f/xe4/xd2 <CJK>
++<U9300> /x8f/xe4/xd3 <CJK>
++<U9302> /x8f/xe4/xd4 <CJK>
++<U9308> /x8f/xe4/xd5 <CJK>
++<U930D> /x8f/xe4/xd6 <CJK>
++<U9311> /x8f/xe4/xd7 <CJK>
++<U9314> /x8f/xe4/xd8 <CJK>
++<U9315> /x8f/xe4/xd9 <CJK>
++<U931C> /x8f/xe4/xda <CJK>
++<U931D> /x8f/xe4/xdb <CJK>
++<U931E> /x8f/xe4/xdc <CJK>
++<U931F> /x8f/xe4/xdd <CJK>
++<U9321> /x8f/xe4/xde <CJK>
++<U9324> /x8f/xe4/xdf <CJK>
++<U9325> /x8f/xe4/xe0 <CJK>
++<U9327> /x8f/xe4/xe1 <CJK>
++<U9329> /x8f/xe4/xe2 <CJK>
++<U932A> /x8f/xe4/xe3 <CJK>
++<U9333> /x8f/xe4/xe4 <CJK>
++<U9334> /x8f/xe4/xe5 <CJK>
++<U9336> /x8f/xe4/xe6 <CJK>
++<U9337> /x8f/xe4/xe7 <CJK>
++<U9347> /x8f/xe4/xe8 <CJK>
++<U9348> /x8f/xe4/xe9 <CJK>
++<U9349> /x8f/xe4/xea <CJK>
++<U9350> /x8f/xe4/xeb <CJK>
++<U9351> /x8f/xe4/xec <CJK>
++<U9352> /x8f/xe4/xed <CJK>
++<U9355> /x8f/xe4/xee <CJK>
++<U9357> /x8f/xe4/xef <CJK>
++<U9358> /x8f/xe4/xf0 <CJK>
++<U935A> /x8f/xe4/xf1 <CJK>
++<U935E> /x8f/xe4/xf2 <CJK>
++<U9364> /x8f/xe4/xf3 <CJK>
++<U9365> /x8f/xe4/xf4 <CJK>
++<U9367> /x8f/xe4/xf5 <CJK>
++<U9369> /x8f/xe4/xf6 <CJK>
++<U936A> /x8f/xe4/xf7 <CJK>
++<U936D> /x8f/xe4/xf8 <CJK>
++<U936F> /x8f/xe4/xf9 <CJK>
++<U9370> /x8f/xe4/xfa <CJK>
++<U9371> /x8f/xe4/xfb <CJK>
++<U9373> /x8f/xe4/xfc <CJK>
++<U9374> /x8f/xe4/xfd <CJK>
++<U9376> /x8f/xe4/xfe <CJK>
++<U937A> /x8f/xe5/xa1 <CJK>
++<U937D> /x8f/xe5/xa2 <CJK>
++<U937F> /x8f/xe5/xa3 <CJK>
++<U9380> /x8f/xe5/xa4 <CJK>
++<U9381> /x8f/xe5/xa5 <CJK>
++<U9382> /x8f/xe5/xa6 <CJK>
++<U9388> /x8f/xe5/xa7 <CJK>
++<U938A> /x8f/xe5/xa8 <CJK>
++<U938B> /x8f/xe5/xa9 <CJK>
++<U938D> /x8f/xe5/xaa <CJK>
++<U938F> /x8f/xe5/xab <CJK>
++<U9392> /x8f/xe5/xac <CJK>
++<U9395> /x8f/xe5/xad <CJK>
++<U9398> /x8f/xe5/xae <CJK>
++<U939B> /x8f/xe5/xaf <CJK>
++<U939E> /x8f/xe5/xb0 <CJK>
++<U93A1> /x8f/xe5/xb1 <CJK>
++<U93A3> /x8f/xe5/xb2 <CJK>
++<U93A4> /x8f/xe5/xb3 <CJK>
++<U93A6> /x8f/xe5/xb4 <CJK>
++<U93A8> /x8f/xe5/xb5 <CJK>
++<U93AB> /x8f/xe5/xb6 <CJK>
++<U93B4> /x8f/xe5/xb7 <CJK>
++<U93B5> /x8f/xe5/xb8 <CJK>
++<U93B6> /x8f/xe5/xb9 <CJK>
++<U93BA> /x8f/xe5/xba <CJK>
++<U93A9> /x8f/xe5/xbb <CJK>
++<U93C1> /x8f/xe5/xbc <CJK>
++<U93C4> /x8f/xe5/xbd <CJK>
++<U93C5> /x8f/xe5/xbe <CJK>
++<U93C6> /x8f/xe5/xbf <CJK>
++<U93C7> /x8f/xe5/xc0 <CJK>
++<U93C9> /x8f/xe5/xc1 <CJK>
++<U93CA> /x8f/xe5/xc2 <CJK>
++<U93CB> /x8f/xe5/xc3 <CJK>
++<U93CC> /x8f/xe5/xc4 <CJK>
++<U93CD> /x8f/xe5/xc5 <CJK>
++<U93D3> /x8f/xe5/xc6 <CJK>
++<U93D9> /x8f/xe5/xc7 <CJK>
++<U93DC> /x8f/xe5/xc8 <CJK>
++<U93DE> /x8f/xe5/xc9 <CJK>
++<U93DF> /x8f/xe5/xca <CJK>
++<U93E2> /x8f/xe5/xcb <CJK>
++<U93E6> /x8f/xe5/xcc <CJK>
++<U93E7> /x8f/xe5/xcd <CJK>
++<U93F9> /x8f/xe5/xce <CJK>
++<U93F7> /x8f/xe5/xcf <CJK>
++<U93F8> /x8f/xe5/xd0 <CJK>
++<U93FA> /x8f/xe5/xd1 <CJK>
++<U93FB> /x8f/xe5/xd2 <CJK>
++<U93FD> /x8f/xe5/xd3 <CJK>
++<U9401> /x8f/xe5/xd4 <CJK>
++<U9402> /x8f/xe5/xd5 <CJK>
++<U9404> /x8f/xe5/xd6 <CJK>
++<U9408> /x8f/xe5/xd7 <CJK>
++<U9409> /x8f/xe5/xd8 <CJK>
++<U940D> /x8f/xe5/xd9 <CJK>
++<U940E> /x8f/xe5/xda <CJK>
++<U940F> /x8f/xe5/xdb <CJK>
++<U9415> /x8f/xe5/xdc <CJK>
++<U9416> /x8f/xe5/xdd <CJK>
++<U9417> /x8f/xe5/xde <CJK>
++<U941F> /x8f/xe5/xdf <CJK>
++<U942E> /x8f/xe5/xe0 <CJK>
++<U942F> /x8f/xe5/xe1 <CJK>
++<U9431> /x8f/xe5/xe2 <CJK>
++<U9432> /x8f/xe5/xe3 <CJK>
++<U9433> /x8f/xe5/xe4 <CJK>
++<U9434> /x8f/xe5/xe5 <CJK>
++<U943B> /x8f/xe5/xe6 <CJK>
++<U943F> /x8f/xe5/xe7 <CJK>
++<U943D> /x8f/xe5/xe8 <CJK>
++<U9443> /x8f/xe5/xe9 <CJK>
++<U9445> /x8f/xe5/xea <CJK>
++<U9448> /x8f/xe5/xeb <CJK>
++<U944A> /x8f/xe5/xec <CJK>
++<U944C> /x8f/xe5/xed <CJK>
++<U9455> /x8f/xe5/xee <CJK>
++<U9459> /x8f/xe5/xef <CJK>
++<U945C> /x8f/xe5/xf0 <CJK>
++<U945F> /x8f/xe5/xf1 <CJK>
++<U9461> /x8f/xe5/xf2 <CJK>
++<U9463> /x8f/xe5/xf3 <CJK>
++<U9468> /x8f/xe5/xf4 <CJK>
++<U946B> /x8f/xe5/xf5 <CJK>
++<U946D> /x8f/xe5/xf6 <CJK>
++<U946E> /x8f/xe5/xf7 <CJK>
++<U946F> /x8f/xe5/xf8 <CJK>
++<U9471> /x8f/xe5/xf9 <CJK>
++<U9472> /x8f/xe5/xfa <CJK>
++<U9484> /x8f/xe5/xfb <CJK>
++<U9483> /x8f/xe5/xfc <CJK>
++<U9578> /x8f/xe5/xfd <CJK>
++<U9579> /x8f/xe5/xfe <CJK>
++<U957E> /x8f/xe6/xa1 <CJK>
++<U9584> /x8f/xe6/xa2 <CJK>
++<U9588> /x8f/xe6/xa3 <CJK>
++<U958C> /x8f/xe6/xa4 <CJK>
++<U958D> /x8f/xe6/xa5 <CJK>
++<U958E> /x8f/xe6/xa6 <CJK>
++<U959D> /x8f/xe6/xa7 <CJK>
++<U959E> /x8f/xe6/xa8 <CJK>
++<U959F> /x8f/xe6/xa9 <CJK>
++<U95A1> /x8f/xe6/xaa <CJK>
++<U95A6> /x8f/xe6/xab <CJK>
++<U95A9> /x8f/xe6/xac <CJK>
++<U95AB> /x8f/xe6/xad <CJK>
++<U95AC> /x8f/xe6/xae <CJK>
++<U95B4> /x8f/xe6/xaf <CJK>
++<U95B6> /x8f/xe6/xb0 <CJK>
++<U95BA> /x8f/xe6/xb1 <CJK>
++<U95BD> /x8f/xe6/xb2 <CJK>
++<U95BF> /x8f/xe6/xb3 <CJK>
++<U95C6> /x8f/xe6/xb4 <CJK>
++<U95C8> /x8f/xe6/xb5 <CJK>
++<U95C9> /x8f/xe6/xb6 <CJK>
++<U95CB> /x8f/xe6/xb7 <CJK>
++<U95D0> /x8f/xe6/xb8 <CJK>
++<U95D1> /x8f/xe6/xb9 <CJK>
++<U95D2> /x8f/xe6/xba <CJK>
++<U95D3> /x8f/xe6/xbb <CJK>
++<U95D9> /x8f/xe6/xbc <CJK>
++<U95DA> /x8f/xe6/xbd <CJK>
++<U95DD> /x8f/xe6/xbe <CJK>
++<U95DE> /x8f/xe6/xbf <CJK>
++<U95DF> /x8f/xe6/xc0 <CJK>
++<U95E0> /x8f/xe6/xc1 <CJK>
++<U95E4> /x8f/xe6/xc2 <CJK>
++<U95E6> /x8f/xe6/xc3 <CJK>
++<U961D> /x8f/xe6/xc4 <CJK>
++<U961E> /x8f/xe6/xc5 <CJK>
++<U9622> /x8f/xe6/xc6 <CJK>
++<U9624> /x8f/xe6/xc7 <CJK>
++<U9625> /x8f/xe6/xc8 <CJK>
++<U9626> /x8f/xe6/xc9 <CJK>
++<U962C> /x8f/xe6/xca <CJK>
++<U9631> /x8f/xe6/xcb <CJK>
++<U9633> /x8f/xe6/xcc <CJK>
++<U9637> /x8f/xe6/xcd <CJK>
++<U9638> /x8f/xe6/xce <CJK>
++<U9639> /x8f/xe6/xcf <CJK>
++<U963A> /x8f/xe6/xd0 <CJK>
++<U963C> /x8f/xe6/xd1 <CJK>
++<U963D> /x8f/xe6/xd2 <CJK>
++<U9641> /x8f/xe6/xd3 <CJK>
++<U9652> /x8f/xe6/xd4 <CJK>
++<U9654> /x8f/xe6/xd5 <CJK>
++<U9656> /x8f/xe6/xd6 <CJK>
++<U9657> /x8f/xe6/xd7 <CJK>
++<U9658> /x8f/xe6/xd8 <CJK>
++<U9661> /x8f/xe6/xd9 <CJK>
++<U966E> /x8f/xe6/xda <CJK>
++<U9674> /x8f/xe6/xdb <CJK>
++<U967B> /x8f/xe6/xdc <CJK>
++<U967C> /x8f/xe6/xdd <CJK>
++<U967E> /x8f/xe6/xde <CJK>
++<U967F> /x8f/xe6/xdf <CJK>
++<U9681> /x8f/xe6/xe0 <CJK>
++<U9682> /x8f/xe6/xe1 <CJK>
++<U9683> /x8f/xe6/xe2 <CJK>
++<U9684> /x8f/xe6/xe3 <CJK>
++<U9689> /x8f/xe6/xe4 <CJK>
++<U9691> /x8f/xe6/xe5 <CJK>
++<U9696> /x8f/xe6/xe6 <CJK>
++<U969A> /x8f/xe6/xe7 <CJK>
++<U969D> /x8f/xe6/xe8 <CJK>
++<U969F> /x8f/xe6/xe9 <CJK>
++<U96A4> /x8f/xe6/xea <CJK>
++<U96A5> /x8f/xe6/xeb <CJK>
++<U96A6> /x8f/xe6/xec <CJK>
++<U96A9> /x8f/xe6/xed <CJK>
++<U96AE> /x8f/xe6/xee <CJK>
++<U96AF> /x8f/xe6/xef <CJK>
++<U96B3> /x8f/xe6/xf0 <CJK>
++<U96BA> /x8f/xe6/xf1 <CJK>
++<U96CA> /x8f/xe6/xf2 <CJK>
++<U96D2> /x8f/xe6/xf3 <CJK>
++<U5DB2> /x8f/xe6/xf4 <CJK>
++<U96D8> /x8f/xe6/xf5 <CJK>
++<U96DA> /x8f/xe6/xf6 <CJK>
++<U96DD> /x8f/xe6/xf7 <CJK>
++<U96DE> /x8f/xe6/xf8 <CJK>
++<U96DF> /x8f/xe6/xf9 <CJK>
++<U96E9> /x8f/xe6/xfa <CJK>
++<U96EF> /x8f/xe6/xfb <CJK>
++<U96F1> /x8f/xe6/xfc <CJK>
++<U96FA> /x8f/xe6/xfd <CJK>
++<U9702> /x8f/xe6/xfe <CJK>
++<U9703> /x8f/xe7/xa1 <CJK>
++<U9705> /x8f/xe7/xa2 <CJK>
++<U9709> /x8f/xe7/xa3 <CJK>
++<U971A> /x8f/xe7/xa4 <CJK>
++<U971B> /x8f/xe7/xa5 <CJK>
++<U971D> /x8f/xe7/xa6 <CJK>
++<U9721> /x8f/xe7/xa7 <CJK>
++<U9722> /x8f/xe7/xa8 <CJK>
++<U9723> /x8f/xe7/xa9 <CJK>
++<U9728> /x8f/xe7/xaa <CJK>
++<U9731> /x8f/xe7/xab <CJK>
++<U9733> /x8f/xe7/xac <CJK>
++<U9741> /x8f/xe7/xad <CJK>
++<U9743> /x8f/xe7/xae <CJK>
++<U974A> /x8f/xe7/xaf <CJK>
++<U974E> /x8f/xe7/xb0 <CJK>
++<U974F> /x8f/xe7/xb1 <CJK>
++<U9755> /x8f/xe7/xb2 <CJK>
++<U9757> /x8f/xe7/xb3 <CJK>
++<U9758> /x8f/xe7/xb4 <CJK>
++<U975A> /x8f/xe7/xb5 <CJK>
++<U975B> /x8f/xe7/xb6 <CJK>
++<U9763> /x8f/xe7/xb7 <CJK>
++<U9767> /x8f/xe7/xb8 <CJK>
++<U976A> /x8f/xe7/xb9 <CJK>
++<U976E> /x8f/xe7/xba <CJK>
++<U9773> /x8f/xe7/xbb <CJK>
++<U9776> /x8f/xe7/xbc <CJK>
++<U9777> /x8f/xe7/xbd <CJK>
++<U9778> /x8f/xe7/xbe <CJK>
++<U977B> /x8f/xe7/xbf <CJK>
++<U977D> /x8f/xe7/xc0 <CJK>
++<U977F> /x8f/xe7/xc1 <CJK>
++<U9780> /x8f/xe7/xc2 <CJK>
++<U9789> /x8f/xe7/xc3 <CJK>
++<U9795> /x8f/xe7/xc4 <CJK>
++<U9796> /x8f/xe7/xc5 <CJK>
++<U9797> /x8f/xe7/xc6 <CJK>
++<U9799> /x8f/xe7/xc7 <CJK>
++<U979A> /x8f/xe7/xc8 <CJK>
++<U979E> /x8f/xe7/xc9 <CJK>
++<U979F> /x8f/xe7/xca <CJK>
++<U97A2> /x8f/xe7/xcb <CJK>
++<U97AC> /x8f/xe7/xcc <CJK>
++<U97AE> /x8f/xe7/xcd <CJK>
++<U97B1> /x8f/xe7/xce <CJK>
++<U97B2> /x8f/xe7/xcf <CJK>
++<U97B5> /x8f/xe7/xd0 <CJK>
++<U97B6> /x8f/xe7/xd1 <CJK>
++<U97B8> /x8f/xe7/xd2 <CJK>
++<U97B9> /x8f/xe7/xd3 <CJK>
++<U97BA> /x8f/xe7/xd4 <CJK>
++<U97BC> /x8f/xe7/xd5 <CJK>
++<U97BE> /x8f/xe7/xd6 <CJK>
++<U97BF> /x8f/xe7/xd7 <CJK>
++<U97C1> /x8f/xe7/xd8 <CJK>
++<U97C4> /x8f/xe7/xd9 <CJK>
++<U97C5> /x8f/xe7/xda <CJK>
++<U97C7> /x8f/xe7/xdb <CJK>
++<U97C9> /x8f/xe7/xdc <CJK>
++<U97CA> /x8f/xe7/xdd <CJK>
++<U97CC> /x8f/xe7/xde <CJK>
++<U97CD> /x8f/xe7/xdf <CJK>
++<U97CE> /x8f/xe7/xe0 <CJK>
++<U97D0> /x8f/xe7/xe1 <CJK>
++<U97D1> /x8f/xe7/xe2 <CJK>
++<U97D4> /x8f/xe7/xe3 <CJK>
++<U97D7> /x8f/xe7/xe4 <CJK>
++<U97D8> /x8f/xe7/xe5 <CJK>
++<U97D9> /x8f/xe7/xe6 <CJK>
++<U97DD> /x8f/xe7/xe7 <CJK>
++<U97DE> /x8f/xe7/xe8 <CJK>
++<U97E0> /x8f/xe7/xe9 <CJK>
++<U97DB> /x8f/xe7/xea <CJK>
++<U97E1> /x8f/xe7/xeb <CJK>
++<U97E4> /x8f/xe7/xec <CJK>
++<U97EF> /x8f/xe7/xed <CJK>
++<U97F1> /x8f/xe7/xee <CJK>
++<U97F4> /x8f/xe7/xef <CJK>
++<U97F7> /x8f/xe7/xf0 <CJK>
++<U97F8> /x8f/xe7/xf1 <CJK>
++<U97FA> /x8f/xe7/xf2 <CJK>
++<U9807> /x8f/xe7/xf3 <CJK>
++<U980A> /x8f/xe7/xf4 <CJK>
++<U9819> /x8f/xe7/xf5 <CJK>
++<U980D> /x8f/xe7/xf6 <CJK>
++<U980E> /x8f/xe7/xf7 <CJK>
++<U9814> /x8f/xe7/xf8 <CJK>
++<U9816> /x8f/xe7/xf9 <CJK>
++<U981C> /x8f/xe7/xfa <CJK>
++<U981E> /x8f/xe7/xfb <CJK>
++<U9820> /x8f/xe7/xfc <CJK>
++<U9823> /x8f/xe7/xfd <CJK>
++<U9826> /x8f/xe7/xfe <CJK>
++<U982B> /x8f/xe8/xa1 <CJK>
++<U982E> /x8f/xe8/xa2 <CJK>
++<U982F> /x8f/xe8/xa3 <CJK>
++<U9830> /x8f/xe8/xa4 <CJK>
++<U9832> /x8f/xe8/xa5 <CJK>
++<U9833> /x8f/xe8/xa6 <CJK>
++<U9835> /x8f/xe8/xa7 <CJK>
++<U9825> /x8f/xe8/xa8 <CJK>
++<U983E> /x8f/xe8/xa9 <CJK>
++<U9844> /x8f/xe8/xaa <CJK>
++<U9847> /x8f/xe8/xab <CJK>
++<U984A> /x8f/xe8/xac <CJK>
++<U9851> /x8f/xe8/xad <CJK>
++<U9852> /x8f/xe8/xae <CJK>
++<U9853> /x8f/xe8/xaf <CJK>
++<U9856> /x8f/xe8/xb0 <CJK>
++<U9857> /x8f/xe8/xb1 <CJK>
++<U9859> /x8f/xe8/xb2 <CJK>
++<U985A> /x8f/xe8/xb3 <CJK>
++<U9862> /x8f/xe8/xb4 <CJK>
++<U9863> /x8f/xe8/xb5 <CJK>
++<U9865> /x8f/xe8/xb6 <CJK>
++<U9866> /x8f/xe8/xb7 <CJK>
++<U986A> /x8f/xe8/xb8 <CJK>
++<U986C> /x8f/xe8/xb9 <CJK>
++<U98AB> /x8f/xe8/xba <CJK>
++<U98AD> /x8f/xe8/xbb <CJK>
++<U98AE> /x8f/xe8/xbc <CJK>
++<U98B0> /x8f/xe8/xbd <CJK>
++<U98B4> /x8f/xe8/xbe <CJK>
++<U98B7> /x8f/xe8/xbf <CJK>
++<U98B8> /x8f/xe8/xc0 <CJK>
++<U98BA> /x8f/xe8/xc1 <CJK>
++<U98BB> /x8f/xe8/xc2 <CJK>
++<U98BF> /x8f/xe8/xc3 <CJK>
++<U98C2> /x8f/xe8/xc4 <CJK>
++<U98C5> /x8f/xe8/xc5 <CJK>
++<U98C8> /x8f/xe8/xc6 <CJK>
++<U98CC> /x8f/xe8/xc7 <CJK>
++<U98E1> /x8f/xe8/xc8 <CJK>
++<U98E3> /x8f/xe8/xc9 <CJK>
++<U98E5> /x8f/xe8/xca <CJK>
++<U98E6> /x8f/xe8/xcb <CJK>
++<U98E7> /x8f/xe8/xcc <CJK>
++<U98EA> /x8f/xe8/xcd <CJK>
++<U98F3> /x8f/xe8/xce <CJK>
++<U98F6> /x8f/xe8/xcf <CJK>
++<U9902> /x8f/xe8/xd0 <CJK>
++<U9907> /x8f/xe8/xd1 <CJK>
++<U9908> /x8f/xe8/xd2 <CJK>
++<U9911> /x8f/xe8/xd3 <CJK>
++<U9915> /x8f/xe8/xd4 <CJK>
++<U9916> /x8f/xe8/xd5 <CJK>
++<U9917> /x8f/xe8/xd6 <CJK>
++<U991A> /x8f/xe8/xd7 <CJK>
++<U991B> /x8f/xe8/xd8 <CJK>
++<U991C> /x8f/xe8/xd9 <CJK>
++<U991F> /x8f/xe8/xda <CJK>
++<U9922> /x8f/xe8/xdb <CJK>
++<U9926> /x8f/xe8/xdc <CJK>
++<U9927> /x8f/xe8/xdd <CJK>
++<U992B> /x8f/xe8/xde <CJK>
++<U9931> /x8f/xe8/xdf <CJK>
++<U9932> /x8f/xe8/xe0 <CJK>
++<U9933> /x8f/xe8/xe1 <CJK>
++<U9934> /x8f/xe8/xe2 <CJK>
++<U9935> /x8f/xe8/xe3 <CJK>
++<U9939> /x8f/xe8/xe4 <CJK>
++<U993A> /x8f/xe8/xe5 <CJK>
++<U993B> /x8f/xe8/xe6 <CJK>
++<U993C> /x8f/xe8/xe7 <CJK>
++<U9940> /x8f/xe8/xe8 <CJK>
++<U9941> /x8f/xe8/xe9 <CJK>
++<U9946> /x8f/xe8/xea <CJK>
++<U9947> /x8f/xe8/xeb <CJK>
++<U9948> /x8f/xe8/xec <CJK>
++<U994D> /x8f/xe8/xed <CJK>
++<U994E> /x8f/xe8/xee <CJK>
++<U9954> /x8f/xe8/xef <CJK>
++<U9958> /x8f/xe8/xf0 <CJK>
++<U9959> /x8f/xe8/xf1 <CJK>
++<U995B> /x8f/xe8/xf2 <CJK>
++<U995C> /x8f/xe8/xf3 <CJK>
++<U995E> /x8f/xe8/xf4 <CJK>
++<U995F> /x8f/xe8/xf5 <CJK>
++<U9960> /x8f/xe8/xf6 <CJK>
++<U999B> /x8f/xe8/xf7 <CJK>
++<U999D> /x8f/xe8/xf8 <CJK>
++<U999F> /x8f/xe8/xf9 <CJK>
++<U99A6> /x8f/xe8/xfa <CJK>
++<U99B0> /x8f/xe8/xfb <CJK>
++<U99B1> /x8f/xe8/xfc <CJK>
++<U99B2> /x8f/xe8/xfd <CJK>
++<U99B5> /x8f/xe8/xfe <CJK>
++<U99B9> /x8f/xe9/xa1 <CJK>
++<U99BA> /x8f/xe9/xa2 <CJK>
++<U99BD> /x8f/xe9/xa3 <CJK>
++<U99BF> /x8f/xe9/xa4 <CJK>
++<U99C3> /x8f/xe9/xa5 <CJK>
++<U99C9> /x8f/xe9/xa6 <CJK>
++<U99D3> /x8f/xe9/xa7 <CJK>
++<U99D4> /x8f/xe9/xa8 <CJK>
++<U99D9> /x8f/xe9/xa9 <CJK>
++<U99DA> /x8f/xe9/xaa <CJK>
++<U99DC> /x8f/xe9/xab <CJK>
++<U99DE> /x8f/xe9/xac <CJK>
++<U99E7> /x8f/xe9/xad <CJK>
++<U99EA> /x8f/xe9/xae <CJK>
++<U99EB> /x8f/xe9/xaf <CJK>
++<U99EC> /x8f/xe9/xb0 <CJK>
++<U99F0> /x8f/xe9/xb1 <CJK>
++<U99F4> /x8f/xe9/xb2 <CJK>
++<U99F5> /x8f/xe9/xb3 <CJK>
++<U99F9> /x8f/xe9/xb4 <CJK>
++<U99FD> /x8f/xe9/xb5 <CJK>
++<U99FE> /x8f/xe9/xb6 <CJK>
++<U9A02> /x8f/xe9/xb7 <CJK>
++<U9A03> /x8f/xe9/xb8 <CJK>
++<U9A04> /x8f/xe9/xb9 <CJK>
++<U9A0B> /x8f/xe9/xba <CJK>
++<U9A0C> /x8f/xe9/xbb <CJK>
++<U9A10> /x8f/xe9/xbc <CJK>
++<U9A11> /x8f/xe9/xbd <CJK>
++<U9A16> /x8f/xe9/xbe <CJK>
++<U9A1E> /x8f/xe9/xbf <CJK>
++<U9A20> /x8f/xe9/xc0 <CJK>
++<U9A22> /x8f/xe9/xc1 <CJK>
++<U9A23> /x8f/xe9/xc2 <CJK>
++<U9A24> /x8f/xe9/xc3 <CJK>
++<U9A27> /x8f/xe9/xc4 <CJK>
++<U9A2D> /x8f/xe9/xc5 <CJK>
++<U9A2E> /x8f/xe9/xc6 <CJK>
++<U9A33> /x8f/xe9/xc7 <CJK>
++<U9A35> /x8f/xe9/xc8 <CJK>
++<U9A36> /x8f/xe9/xc9 <CJK>
++<U9A38> /x8f/xe9/xca <CJK>
++<U9A47> /x8f/xe9/xcb <CJK>
++<U9A41> /x8f/xe9/xcc <CJK>
++<U9A44> /x8f/xe9/xcd <CJK>
++<U9A4A> /x8f/xe9/xce <CJK>
++<U9A4B> /x8f/xe9/xcf <CJK>
++<U9A4C> /x8f/xe9/xd0 <CJK>
++<U9A4E> /x8f/xe9/xd1 <CJK>
++<U9A51> /x8f/xe9/xd2 <CJK>
++<U9A54> /x8f/xe9/xd3 <CJK>
++<U9A56> /x8f/xe9/xd4 <CJK>
++<U9A5D> /x8f/xe9/xd5 <CJK>
++<U9AAA> /x8f/xe9/xd6 <CJK>
++<U9AAC> /x8f/xe9/xd7 <CJK>
++<U9AAE> /x8f/xe9/xd8 <CJK>
++<U9AAF> /x8f/xe9/xd9 <CJK>
++<U9AB2> /x8f/xe9/xda <CJK>
++<U9AB4> /x8f/xe9/xdb <CJK>
++<U9AB5> /x8f/xe9/xdc <CJK>
++<U9AB6> /x8f/xe9/xdd <CJK>
++<U9AB9> /x8f/xe9/xde <CJK>
++<U9ABB> /x8f/xe9/xdf <CJK>
++<U9ABE> /x8f/xe9/xe0 <CJK>
++<U9ABF> /x8f/xe9/xe1 <CJK>
++<U9AC1> /x8f/xe9/xe2 <CJK>
++<U9AC3> /x8f/xe9/xe3 <CJK>
++<U9AC6> /x8f/xe9/xe4 <CJK>
++<U9AC8> /x8f/xe9/xe5 <CJK>
++<U9ACE> /x8f/xe9/xe6 <CJK>
++<U9AD0> /x8f/xe9/xe7 <CJK>
++<U9AD2> /x8f/xe9/xe8 <CJK>
++<U9AD5> /x8f/xe9/xe9 <CJK>
++<U9AD6> /x8f/xe9/xea <CJK>
++<U9AD7> /x8f/xe9/xeb <CJK>
++<U9ADB> /x8f/xe9/xec <CJK>
++<U9ADC> /x8f/xe9/xed <CJK>
++<U9AE0> /x8f/xe9/xee <CJK>
++<U9AE4> /x8f/xe9/xef <CJK>
++<U9AE5> /x8f/xe9/xf0 <CJK>
++<U9AE7> /x8f/xe9/xf1 <CJK>
++<U9AE9> /x8f/xe9/xf2 <CJK>
++<U9AEC> /x8f/xe9/xf3 <CJK>
++<U9AF2> /x8f/xe9/xf4 <CJK>
++<U9AF3> /x8f/xe9/xf5 <CJK>
++<U9AF5> /x8f/xe9/xf6 <CJK>
++<U9AF9> /x8f/xe9/xf7 <CJK>
++<U9AFA> /x8f/xe9/xf8 <CJK>
++<U9AFD> /x8f/xe9/xf9 <CJK>
++<U9AFF> /x8f/xe9/xfa <CJK>
++<U9B00> /x8f/xe9/xfb <CJK>
++<U9B01> /x8f/xe9/xfc <CJK>
++<U9B02> /x8f/xe9/xfd <CJK>
++<U9B03> /x8f/xe9/xfe <CJK>
++<U9B04> /x8f/xea/xa1 <CJK>
++<U9B05> /x8f/xea/xa2 <CJK>
++<U9B08> /x8f/xea/xa3 <CJK>
++<U9B09> /x8f/xea/xa4 <CJK>
++<U9B0B> /x8f/xea/xa5 <CJK>
++<U9B0C> /x8f/xea/xa6 <CJK>
++<U9B0D> /x8f/xea/xa7 <CJK>
++<U9B0E> /x8f/xea/xa8 <CJK>
++<U9B10> /x8f/xea/xa9 <CJK>
++<U9B12> /x8f/xea/xaa <CJK>
++<U9B16> /x8f/xea/xab <CJK>
++<U9B19> /x8f/xea/xac <CJK>
++<U9B1B> /x8f/xea/xad <CJK>
++<U9B1C> /x8f/xea/xae <CJK>
++<U9B20> /x8f/xea/xaf <CJK>
++<U9B26> /x8f/xea/xb0 <CJK>
++<U9B2B> /x8f/xea/xb1 <CJK>
++<U9B2D> /x8f/xea/xb2 <CJK>
++<U9B33> /x8f/xea/xb3 <CJK>
++<U9B34> /x8f/xea/xb4 <CJK>
++<U9B35> /x8f/xea/xb5 <CJK>
++<U9B37> /x8f/xea/xb6 <CJK>
++<U9B39> /x8f/xea/xb7 <CJK>
++<U9B3A> /x8f/xea/xb8 <CJK>
++<U9B3D> /x8f/xea/xb9 <CJK>
++<U9B48> /x8f/xea/xba <CJK>
++<U9B4B> /x8f/xea/xbb <CJK>
++<U9B4C> /x8f/xea/xbc <CJK>
++<U9B55> /x8f/xea/xbd <CJK>
++<U9B56> /x8f/xea/xbe <CJK>
++<U9B57> /x8f/xea/xbf <CJK>
++<U9B5B> /x8f/xea/xc0 <CJK>
++<U9B5E> /x8f/xea/xc1 <CJK>
++<U9B61> /x8f/xea/xc2 <CJK>
++<U9B63> /x8f/xea/xc3 <CJK>
++<U9B65> /x8f/xea/xc4 <CJK>
++<U9B66> /x8f/xea/xc5 <CJK>
++<U9B68> /x8f/xea/xc6 <CJK>
++<U9B6A> /x8f/xea/xc7 <CJK>
++<U9B6B> /x8f/xea/xc8 <CJK>
++<U9B6C> /x8f/xea/xc9 <CJK>
++<U9B6D> /x8f/xea/xca <CJK>
++<U9B6E> /x8f/xea/xcb <CJK>
++<U9B73> /x8f/xea/xcc <CJK>
++<U9B75> /x8f/xea/xcd <CJK>
++<U9B77> /x8f/xea/xce <CJK>
++<U9B78> /x8f/xea/xcf <CJK>
++<U9B79> /x8f/xea/xd0 <CJK>
++<U9B7F> /x8f/xea/xd1 <CJK>
++<U9B80> /x8f/xea/xd2 <CJK>
++<U9B84> /x8f/xea/xd3 <CJK>
++<U9B85> /x8f/xea/xd4 <CJK>
++<U9B86> /x8f/xea/xd5 <CJK>
++<U9B87> /x8f/xea/xd6 <CJK>
++<U9B89> /x8f/xea/xd7 <CJK>
++<U9B8A> /x8f/xea/xd8 <CJK>
++<U9B8B> /x8f/xea/xd9 <CJK>
++<U9B8D> /x8f/xea/xda <CJK>
++<U9B8F> /x8f/xea/xdb <CJK>
++<U9B90> /x8f/xea/xdc <CJK>
++<U9B94> /x8f/xea/xdd <CJK>
++<U9B9A> /x8f/xea/xde <CJK>
++<U9B9D> /x8f/xea/xdf <CJK>
++<U9B9E> /x8f/xea/xe0 <CJK>
++<U9BA6> /x8f/xea/xe1 <CJK>
++<U9BA7> /x8f/xea/xe2 <CJK>
++<U9BA9> /x8f/xea/xe3 <CJK>
++<U9BAC> /x8f/xea/xe4 <CJK>
++<U9BB0> /x8f/xea/xe5 <CJK>
++<U9BB1> /x8f/xea/xe6 <CJK>
++<U9BB2> /x8f/xea/xe7 <CJK>
++<U9BB7> /x8f/xea/xe8 <CJK>
++<U9BB8> /x8f/xea/xe9 <CJK>
++<U9BBB> /x8f/xea/xea <CJK>
++<U9BBC> /x8f/xea/xeb <CJK>
++<U9BBE> /x8f/xea/xec <CJK>
++<U9BBF> /x8f/xea/xed <CJK>
++<U9BC1> /x8f/xea/xee <CJK>
++<U9BC7> /x8f/xea/xef <CJK>
++<U9BC8> /x8f/xea/xf0 <CJK>
++<U9BCE> /x8f/xea/xf1 <CJK>
++<U9BD0> /x8f/xea/xf2 <CJK>
++<U9BD7> /x8f/xea/xf3 <CJK>
++<U9BD8> /x8f/xea/xf4 <CJK>
++<U9BDD> /x8f/xea/xf5 <CJK>
++<U9BDF> /x8f/xea/xf6 <CJK>
++<U9BE5> /x8f/xea/xf7 <CJK>
++<U9BE7> /x8f/xea/xf8 <CJK>
++<U9BEA> /x8f/xea/xf9 <CJK>
++<U9BEB> /x8f/xea/xfa <CJK>
++<U9BEF> /x8f/xea/xfb <CJK>
++<U9BF3> /x8f/xea/xfc <CJK>
++<U9BF7> /x8f/xea/xfd <CJK>
++<U9BF8> /x8f/xea/xfe <CJK>
++<U9BF9> /x8f/xeb/xa1 <CJK>
++<U9BFA> /x8f/xeb/xa2 <CJK>
++<U9BFD> /x8f/xeb/xa3 <CJK>
++<U9BFF> /x8f/xeb/xa4 <CJK>
++<U9C00> /x8f/xeb/xa5 <CJK>
++<U9C02> /x8f/xeb/xa6 <CJK>
++<U9C0B> /x8f/xeb/xa7 <CJK>
++<U9C0F> /x8f/xeb/xa8 <CJK>
++<U9C11> /x8f/xeb/xa9 <CJK>
++<U9C16> /x8f/xeb/xaa <CJK>
++<U9C18> /x8f/xeb/xab <CJK>
++<U9C19> /x8f/xeb/xac <CJK>
++<U9C1A> /x8f/xeb/xad <CJK>
++<U9C1C> /x8f/xeb/xae <CJK>
++<U9C1E> /x8f/xeb/xaf <CJK>
++<U9C22> /x8f/xeb/xb0 <CJK>
++<U9C23> /x8f/xeb/xb1 <CJK>
++<U9C26> /x8f/xeb/xb2 <CJK>
++<U9C27> /x8f/xeb/xb3 <CJK>
++<U9C28> /x8f/xeb/xb4 <CJK>
++<U9C29> /x8f/xeb/xb5 <CJK>
++<U9C2A> /x8f/xeb/xb6 <CJK>
++<U9C31> /x8f/xeb/xb7 <CJK>
++<U9C35> /x8f/xeb/xb8 <CJK>
++<U9C36> /x8f/xeb/xb9 <CJK>
++<U9C37> /x8f/xeb/xba <CJK>
++<U9C3D> /x8f/xeb/xbb <CJK>
++<U9C41> /x8f/xeb/xbc <CJK>
++<U9C43> /x8f/xeb/xbd <CJK>
++<U9C44> /x8f/xeb/xbe <CJK>
++<U9C45> /x8f/xeb/xbf <CJK>
++<U9C49> /x8f/xeb/xc0 <CJK>
++<U9C4A> /x8f/xeb/xc1 <CJK>
++<U9C4E> /x8f/xeb/xc2 <CJK>
++<U9C4F> /x8f/xeb/xc3 <CJK>
++<U9C50> /x8f/xeb/xc4 <CJK>
++<U9C53> /x8f/xeb/xc5 <CJK>
++<U9C54> /x8f/xeb/xc6 <CJK>
++<U9C56> /x8f/xeb/xc7 <CJK>
++<U9C58> /x8f/xeb/xc8 <CJK>
++<U9C5B> /x8f/xeb/xc9 <CJK>
++<U9C5D> /x8f/xeb/xca <CJK>
++<U9C5E> /x8f/xeb/xcb <CJK>
++<U9C5F> /x8f/xeb/xcc <CJK>
++<U9C63> /x8f/xeb/xcd <CJK>
++<U9C69> /x8f/xeb/xce <CJK>
++<U9C6A> /x8f/xeb/xcf <CJK>
++<U9C5C> /x8f/xeb/xd0 <CJK>
++<U9C6B> /x8f/xeb/xd1 <CJK>
++<U9C68> /x8f/xeb/xd2 <CJK>
++<U9C6E> /x8f/xeb/xd3 <CJK>
++<U9C70> /x8f/xeb/xd4 <CJK>
++<U9C72> /x8f/xeb/xd5 <CJK>
++<U9C75> /x8f/xeb/xd6 <CJK>
++<U9C77> /x8f/xeb/xd7 <CJK>
++<U9C7B> /x8f/xeb/xd8 <CJK>
++<U9CE6> /x8f/xeb/xd9 <CJK>
++<U9CF2> /x8f/xeb/xda <CJK>
++<U9CF7> /x8f/xeb/xdb <CJK>
++<U9CF9> /x8f/xeb/xdc <CJK>
++<U9D0B> /x8f/xeb/xdd <CJK>
++<U9D02> /x8f/xeb/xde <CJK>
++<U9D11> /x8f/xeb/xdf <CJK>
++<U9D17> /x8f/xeb/xe0 <CJK>
++<U9D18> /x8f/xeb/xe1 <CJK>
++<U9D1C> /x8f/xeb/xe2 <CJK>
++<U9D1D> /x8f/xeb/xe3 <CJK>
++<U9D1E> /x8f/xeb/xe4 <CJK>
++<U9D2F> /x8f/xeb/xe5 <CJK>
++<U9D30> /x8f/xeb/xe6 <CJK>
++<U9D32> /x8f/xeb/xe7 <CJK>
++<U9D33> /x8f/xeb/xe8 <CJK>
++<U9D34> /x8f/xeb/xe9 <CJK>
++<U9D3A> /x8f/xeb/xea <CJK>
++<U9D3C> /x8f/xeb/xeb <CJK>
++<U9D45> /x8f/xeb/xec <CJK>
++<U9D3D> /x8f/xeb/xed <CJK>
++<U9D42> /x8f/xeb/xee <CJK>
++<U9D43> /x8f/xeb/xef <CJK>
++<U9D47> /x8f/xeb/xf0 <CJK>
++<U9D4A> /x8f/xeb/xf1 <CJK>
++<U9D53> /x8f/xeb/xf2 <CJK>
++<U9D54> /x8f/xeb/xf3 <CJK>
++<U9D5F> /x8f/xeb/xf4 <CJK>
++<U9D63> /x8f/xeb/xf5 <CJK>
++<U9D62> /x8f/xeb/xf6 <CJK>
++<U9D65> /x8f/xeb/xf7 <CJK>
++<U9D69> /x8f/xeb/xf8 <CJK>
++<U9D6A> /x8f/xeb/xf9 <CJK>
++<U9D6B> /x8f/xeb/xfa <CJK>
++<U9D70> /x8f/xeb/xfb <CJK>
++<U9D76> /x8f/xeb/xfc <CJK>
++<U9D77> /x8f/xeb/xfd <CJK>
++<U9D7B> /x8f/xeb/xfe <CJK>
++<U9D7C> /x8f/xec/xa1 <CJK>
++<U9D7E> /x8f/xec/xa2 <CJK>
++<U9D83> /x8f/xec/xa3 <CJK>
++<U9D84> /x8f/xec/xa4 <CJK>
++<U9D86> /x8f/xec/xa5 <CJK>
++<U9D8A> /x8f/xec/xa6 <CJK>
++<U9D8D> /x8f/xec/xa7 <CJK>
++<U9D8E> /x8f/xec/xa8 <CJK>
++<U9D92> /x8f/xec/xa9 <CJK>
++<U9D93> /x8f/xec/xaa <CJK>
++<U9D95> /x8f/xec/xab <CJK>
++<U9D96> /x8f/xec/xac <CJK>
++<U9D97> /x8f/xec/xad <CJK>
++<U9D98> /x8f/xec/xae <CJK>
++<U9DA1> /x8f/xec/xaf <CJK>
++<U9DAA> /x8f/xec/xb0 <CJK>
++<U9DAC> /x8f/xec/xb1 <CJK>
++<U9DAE> /x8f/xec/xb2 <CJK>
++<U9DB1> /x8f/xec/xb3 <CJK>
++<U9DB5> /x8f/xec/xb4 <CJK>
++<U9DB9> /x8f/xec/xb5 <CJK>
++<U9DBC> /x8f/xec/xb6 <CJK>
++<U9DBF> /x8f/xec/xb7 <CJK>
++<U9DC3> /x8f/xec/xb8 <CJK>
++<U9DC7> /x8f/xec/xb9 <CJK>
++<U9DC9> /x8f/xec/xba <CJK>
++<U9DCA> /x8f/xec/xbb <CJK>
++<U9DD4> /x8f/xec/xbc <CJK>
++<U9DD5> /x8f/xec/xbd <CJK>
++<U9DD6> /x8f/xec/xbe <CJK>
++<U9DD7> /x8f/xec/xbf <CJK>
++<U9DDA> /x8f/xec/xc0 <CJK>
++<U9DDE> /x8f/xec/xc1 <CJK>
++<U9DDF> /x8f/xec/xc2 <CJK>
++<U9DE0> /x8f/xec/xc3 <CJK>
++<U9DE5> /x8f/xec/xc4 <CJK>
++<U9DE7> /x8f/xec/xc5 <CJK>
++<U9DE9> /x8f/xec/xc6 <CJK>
++<U9DEB> /x8f/xec/xc7 <CJK>
++<U9DEE> /x8f/xec/xc8 <CJK>
++<U9DF0> /x8f/xec/xc9 <CJK>
++<U9DF3> /x8f/xec/xca <CJK>
++<U9DF4> /x8f/xec/xcb <CJK>
++<U9DFE> /x8f/xec/xcc <CJK>
++<U9E0A> /x8f/xec/xcd <CJK>
++<U9E02> /x8f/xec/xce <CJK>
++<U9E07> /x8f/xec/xcf <CJK>
++<U9E0E> /x8f/xec/xd0 <CJK>
++<U9E10> /x8f/xec/xd1 <CJK>
++<U9E11> /x8f/xec/xd2 <CJK>
++<U9E12> /x8f/xec/xd3 <CJK>
++<U9E15> /x8f/xec/xd4 <CJK>
++<U9E16> /x8f/xec/xd5 <CJK>
++<U9E19> /x8f/xec/xd6 <CJK>
++<U9E1C> /x8f/xec/xd7 <CJK>
++<U9E1D> /x8f/xec/xd8 <CJK>
++<U9E7A> /x8f/xec/xd9 <CJK>
++<U9E7B> /x8f/xec/xda <CJK>
++<U9E7C> /x8f/xec/xdb <CJK>
++<U9E80> /x8f/xec/xdc <CJK>
++<U9E82> /x8f/xec/xdd <CJK>
++<U9E83> /x8f/xec/xde <CJK>
++<U9E84> /x8f/xec/xdf <CJK>
++<U9E85> /x8f/xec/xe0 <CJK>
++<U9E87> /x8f/xec/xe1 <CJK>
++<U9E8E> /x8f/xec/xe2 <CJK>
++<U9E8F> /x8f/xec/xe3 <CJK>
++<U9E96> /x8f/xec/xe4 <CJK>
++<U9E98> /x8f/xec/xe5 <CJK>
++<U9E9B> /x8f/xec/xe6 <CJK>
++<U9E9E> /x8f/xec/xe7 <CJK>
++<U9EA4> /x8f/xec/xe8 <CJK>
++<U9EA8> /x8f/xec/xe9 <CJK>
++<U9EAC> /x8f/xec/xea <CJK>
++<U9EAE> /x8f/xec/xeb <CJK>
++<U9EAF> /x8f/xec/xec <CJK>
++<U9EB0> /x8f/xec/xed <CJK>
++<U9EB3> /x8f/xec/xee <CJK>
++<U9EB4> /x8f/xec/xef <CJK>
++<U9EB5> /x8f/xec/xf0 <CJK>
++<U9EC6> /x8f/xec/xf1 <CJK>
++<U9EC8> /x8f/xec/xf2 <CJK>
++<U9ECB> /x8f/xec/xf3 <CJK>
++<U9ED5> /x8f/xec/xf4 <CJK>
++<U9EDF> /x8f/xec/xf5 <CJK>
++<U9EE4> /x8f/xec/xf6 <CJK>
++<U9EE7> /x8f/xec/xf7 <CJK>
++<U9EEC> /x8f/xec/xf8 <CJK>
++<U9EED> /x8f/xec/xf9 <CJK>
++<U9EEE> /x8f/xec/xfa <CJK>
++<U9EF0> /x8f/xec/xfb <CJK>
++<U9EF1> /x8f/xec/xfc <CJK>
++<U9EF2> /x8f/xec/xfd <CJK>
++<U9EF5> /x8f/xec/xfe <CJK>
++<U9EF8> /x8f/xed/xa1 <CJK>
++<U9EFF> /x8f/xed/xa2 <CJK>
++<U9F02> /x8f/xed/xa3 <CJK>
++<U9F03> /x8f/xed/xa4 <CJK>
++<U9F09> /x8f/xed/xa5 <CJK>
++<U9F0F> /x8f/xed/xa6 <CJK>
++<U9F10> /x8f/xed/xa7 <CJK>
++<U9F11> /x8f/xed/xa8 <CJK>
++<U9F12> /x8f/xed/xa9 <CJK>
++<U9F14> /x8f/xed/xaa <CJK>
++<U9F16> /x8f/xed/xab <CJK>
++<U9F17> /x8f/xed/xac <CJK>
++<U9F19> /x8f/xed/xad <CJK>
++<U9F1A> /x8f/xed/xae <CJK>
++<U9F1B> /x8f/xed/xaf <CJK>
++<U9F1F> /x8f/xed/xb0 <CJK>
++<U9F22> /x8f/xed/xb1 <CJK>
++<U9F26> /x8f/xed/xb2 <CJK>
++<U9F2A> /x8f/xed/xb3 <CJK>
++<U9F2B> /x8f/xed/xb4 <CJK>
++<U9F2F> /x8f/xed/xb5 <CJK>
++<U9F31> /x8f/xed/xb6 <CJK>
++<U9F32> /x8f/xed/xb7 <CJK>
++<U9F34> /x8f/xed/xb8 <CJK>
++<U9F37> /x8f/xed/xb9 <CJK>
++<U9F39> /x8f/xed/xba <CJK>
++<U9F3A> /x8f/xed/xbb <CJK>
++<U9F3C> /x8f/xed/xbc <CJK>
++<U9F3D> /x8f/xed/xbd <CJK>
++<U9F3F> /x8f/xed/xbe <CJK>
++<U9F41> /x8f/xed/xbf <CJK>
++<U9F43> /x8f/xed/xc0 <CJK>
++<U9F44> /x8f/xed/xc1 <CJK>
++<U9F45> /x8f/xed/xc2 <CJK>
++<U9F46> /x8f/xed/xc3 <CJK>
++<U9F47> /x8f/xed/xc4 <CJK>
++<U9F53> /x8f/xed/xc5 <CJK>
++<U9F55> /x8f/xed/xc6 <CJK>
++<U9F56> /x8f/xed/xc7 <CJK>
++<U9F57> /x8f/xed/xc8 <CJK>
++<U9F58> /x8f/xed/xc9 <CJK>
++<U9F5A> /x8f/xed/xca <CJK>
++<U9F5D> /x8f/xed/xcb <CJK>
++<U9F5E> /x8f/xed/xcc <CJK>
++<U9F68> /x8f/xed/xcd <CJK>
++<U9F69> /x8f/xed/xce <CJK>
++<U9F6D> /x8f/xed/xcf <CJK>
++<U9F6E> /x8f/xed/xd0 <CJK>
++<U9F6F> /x8f/xed/xd1 <CJK>
++<U9F70> /x8f/xed/xd2 <CJK>
++<U9F71> /x8f/xed/xd3 <CJK>
++<U9F73> /x8f/xed/xd4 <CJK>
++<U9F75> /x8f/xed/xd5 <CJK>
++<U9F7A> /x8f/xed/xd6 <CJK>
++<U9F7D> /x8f/xed/xd7 <CJK>
++<U9F8F> /x8f/xed/xd8 <CJK>
++<U9F90> /x8f/xed/xd9 <CJK>
++<U9F91> /x8f/xed/xda <CJK>
++<U9F92> /x8f/xed/xdb <CJK>
++<U9F94> /x8f/xed/xdc <CJK>
++<U9F96> /x8f/xed/xdd <CJK>
++<U9F97> /x8f/xed/xde <CJK>
++<U9F9E> /x8f/xed/xdf <CJK>
++<U9FA1> /x8f/xed/xe0 <CJK>
++<U9FA2> /x8f/xed/xe1 <CJK>
++<U9FA3> /x8f/xed/xe2 <CJK>
++<U9FA5> /x8f/xed/xe3 <CJK>
++<U2170> /x8f/xf3/xf3 SMALL ROMAN NUMERAL ONE
++<U2171> /x8f/xf3/xf4 SMALL ROMAN NUMERAL TWO
++<U2172> /x8f/xf3/xf5 SMALL ROMAN NUMERAL THREE
++<U2173> /x8f/xf3/xf6 SMALL ROMAN NUMERAL FOUR
++<U2174> /x8f/xf3/xf7 SMALL ROMAN NUMERAL FIVE
++<U2175> /x8f/xf3/xf8 SMALL ROMAN NUMERAL SIX
++<U2176> /x8f/xf3/xf9 SMALL ROMAN NUMERAL SEVEN
++<U2177> /x8f/xf3/xfa SMALL ROMAN NUMERAL EIGHT
++<U2178> /x8f/xf3/xfb SMALL ROMAN NUMERAL NINE
++<U2179> /x8f/xf3/xfc SMALL ROMAN NUMERAL TEN
++%IRREVERSIBLE%<U2160> /x8f/xf3/xfd ROMAN NUMERAL ONE
++%IRREVERSIBLE%<U2161> /x8f/xf3/xfe ROMAN NUMERAL TWO
++%IRREVERSIBLE%<U2162> /x8f/xf4/xa1 ROMAN NUMERAL THREE
++%IRREVERSIBLE%<U2163> /x8f/xf4/xa2 ROMAN NUMERAL FOUR
++%IRREVERSIBLE%<U2164> /x8f/xf4/xa3 ROMAN NUMERAL FIVE
++%IRREVERSIBLE%<U2165> /x8f/xf4/xa4 ROMAN NUMERAL SIX
++%IRREVERSIBLE%<U2166> /x8f/xf4/xa5 ROMAN NUMERAL SEVEN
++%IRREVERSIBLE%<U2167> /x8f/xf4/xa6 ROMAN NUMERAL EIGHT
++%IRREVERSIBLE%<U2168> /x8f/xf4/xa7 ROMAN NUMERAL NINE
++%IRREVERSIBLE%<U2169> /x8f/xf4/xa8 ROMAN NUMERAL TEN
++<UFF07> /x8f/xf4/xa9 FULLWIDTH APOSTROPHE
++<UFF02> /x8f/xf4/xaa FULLWIDTH QUOTATION MARK
++%IRREVERSIBLE%<U3231> /x8f/xf4/xab PARENTHESIZED IDEOGRAPH STOCK
++%IRREVERSIBLE%<U2116> /x8f/xf4/xac NUMERO SIGN
++%IRREVERSIBLE%<U2121> /x8f/xf4/xad TELEPHONE SIGN
++<U70BB> /x8f/xf4/xae <CJK>
++<U4EFC> /x8f/xf4/xaf <CJK>
++<U50F4> /x8f/xf4/xb0 <CJK>
++<U51EC> /x8f/xf4/xb1 <CJK>
++<U5307> /x8f/xf4/xb2 <CJK>
++<U5324> /x8f/xf4/xb3 <CJK>
++<UFA0E> /x8f/xf4/xb4 CJK COMPATIBILITY IDEOGRAPH-FA0E
++<U548A> /x8f/xf4/xb5 <CJK>
++<U5759> /x8f/xf4/xb6 <CJK>
++<UFA0F> /x8f/xf4/xb7 CJK COMPATIBILITY IDEOGRAPH-FA0F
++<UFA10> /x8f/xf4/xb8 CJK COMPATIBILITY IDEOGRAPH-FA10
++<U589E> /x8f/xf4/xb9 <CJK>
++<U5BEC> /x8f/xf4/xba <CJK>
++<U5CF5> /x8f/xf4/xbb <CJK>
++<U5D53> /x8f/xf4/xbc <CJK>
++<UFA11> /x8f/xf4/xbd CJK COMPATIBILITY IDEOGRAPH-FA11
++<U5FB7> /x8f/xf4/xbe <CJK>
++<U6085> /x8f/xf4/xbf <CJK>
++<U6120> /x8f/xf4/xc0 <CJK>
++<U654E> /x8f/xf4/xc1 <CJK>
++<U663B> /x8f/xf4/xc2 <CJK>
++<U6665> /x8f/xf4/xc3 <CJK>
++<UFA12> /x8f/xf4/xc4 CJK COMPATIBILITY IDEOGRAPH-FA12
++<UF929> /x8f/xf4/xc5 CJK COMPATIBILITY IDEOGRAPH-F929
++<U6801> /x8f/xf4/xc6 <CJK>
++<UFA13> /x8f/xf4/xc7 CJK COMPATIBILITY IDEOGRAPH-FA13
++<UFA14> /x8f/xf4/xc8 CJK COMPATIBILITY IDEOGRAPH-FA14
++<U6A6B> /x8f/xf4/xc9 <CJK>
++<U6AE2> /x8f/xf4/xca <CJK>
++<U6DF8> /x8f/xf4/xcb <CJK>
++<U6DF2> /x8f/xf4/xcc <CJK>
++<U7028> /x8f/xf4/xcd <CJK>
++<UFA15> /x8f/xf4/xce CJK COMPATIBILITY IDEOGRAPH-FA15
++<UFA16> /x8f/xf4/xcf CJK COMPATIBILITY IDEOGRAPH-FA16
++<U7501> /x8f/xf4/xd0 <CJK>
++<U7682> /x8f/xf4/xd1 <CJK>
++<U769E> /x8f/xf4/xd2 <CJK>
++<UFA17> /x8f/xf4/xd3 CJK COMPATIBILITY IDEOGRAPH-FA17
++<U7930> /x8f/xf4/xd4 <CJK>
++<UFA18> /x8f/xf4/xd5 CJK COMPATIBILITY IDEOGRAPH-FA18
++<UFA19> /x8f/xf4/xd6 CJK COMPATIBILITY IDEOGRAPH-FA19
++<UFA1A> /x8f/xf4/xd7 CJK COMPATIBILITY IDEOGRAPH-FA1A
++<UFA1B> /x8f/xf4/xd8 CJK COMPATIBILITY IDEOGRAPH-FA1B
++<U7AE7> /x8f/xf4/xd9 <CJK>
++<UFA1C> /x8f/xf4/xda CJK COMPATIBILITY IDEOGRAPH-FA1C
++<UFA1D> /x8f/xf4/xdb CJK COMPATIBILITY IDEOGRAPH-FA1D
++<U7DA0> /x8f/xf4/xdc <CJK>
++<U7DD6> /x8f/xf4/xdd <CJK>
++<UFA1E> /x8f/xf4/xde CJK COMPATIBILITY IDEOGRAPH-FA1E
++<U8362> /x8f/xf4/xdf <CJK>
++<UFA1F> /x8f/xf4/xe0 CJK COMPATIBILITY IDEOGRAPH-FA1F
++<U85B0> /x8f/xf4/xe1 <CJK>
++<UFA20> /x8f/xf4/xe2 CJK COMPATIBILITY IDEOGRAPH-FA20
++<UFA21> /x8f/xf4/xe3 CJK COMPATIBILITY IDEOGRAPH-FA21
++<U8807> /x8f/xf4/xe4 <CJK>
++<UFA22> /x8f/xf4/xe5 CJK COMPATIBILITY IDEOGRAPH-FA22
++<U8B7F> /x8f/xf4/xe6 <CJK>
++<U8CF4> /x8f/xf4/xe7 <CJK>
++<U8D76> /x8f/xf4/xe8 <CJK>
++<UFA23> /x8f/xf4/xe9 CJK COMPATIBILITY IDEOGRAPH-FA23
++<UFA24> /x8f/xf4/xea CJK COMPATIBILITY IDEOGRAPH-FA24
++<UFA25> /x8f/xf4/xeb CJK COMPATIBILITY IDEOGRAPH-FA25
++<U90DE> /x8f/xf4/xec <CJK>
++<UFA26> /x8f/xf4/xed CJK COMPATIBILITY IDEOGRAPH-FA26
++<U9115> /x8f/xf4/xee <CJK>
++<UFA27> /x8f/xf4/xef CJK COMPATIBILITY IDEOGRAPH-FA27
++<UFA28> /x8f/xf4/xf0 CJK COMPATIBILITY IDEOGRAPH-FA28
++<U9592> /x8f/xf4/xf1 <CJK>
++<UF9DC> /x8f/xf4/xf2 CJK COMPATIBILITY IDEOGRAPH-F9DC
++<UFA29> /x8f/xf4/xf3 CJK COMPATIBILITY IDEOGRAPH-FA29
++<U973B> /x8f/xf4/xf4 <CJK>
++<U974D> /x8f/xf4/xf5 <CJK>
++<U9751> /x8f/xf4/xf6 <CJK>
++<UFA2A> /x8f/xf4/xf7 CJK COMPATIBILITY IDEOGRAPH-FA2A
++<UFA2B> /x8f/xf4/xf8 CJK COMPATIBILITY IDEOGRAPH-FA2B
++<UFA2C> /x8f/xf4/xf9 CJK COMPATIBILITY IDEOGRAPH-FA2C
++<U999E> /x8f/xf4/xfa <CJK>
++<U9AD9> /x8f/xf4/xfb <CJK>
++<U9B72> /x8f/xf4/xfc <CJK>
++<UFA2D> /x8f/xf4/xfd CJK COMPATIBILITY IDEOGRAPH-FA2D
++<U9ED1> /x8f/xf4/xfe <CJK>
++
++%
++% User Defined Characters (EUC Code Set 3)
++%
++<UE3AC> /x8f/xf5/xa1 <Private Use>
++<UE3AD> /x8f/xf5/xa2 <Private Use>
++<UE3AE> /x8f/xf5/xa3 <Private Use>
++<UE3AF> /x8f/xf5/xa4 <Private Use>
++<UE3B0> /x8f/xf5/xa5 <Private Use>
++<UE3B1> /x8f/xf5/xa6 <Private Use>
++<UE3B2> /x8f/xf5/xa7 <Private Use>
++<UE3B3> /x8f/xf5/xa8 <Private Use>
++<UE3B4> /x8f/xf5/xa9 <Private Use>
++<UE3B5> /x8f/xf5/xaa <Private Use>
++<UE3B6> /x8f/xf5/xab <Private Use>
++<UE3B7> /x8f/xf5/xac <Private Use>
++<UE3B8> /x8f/xf5/xad <Private Use>
++<UE3B9> /x8f/xf5/xae <Private Use>
++<UE3BA> /x8f/xf5/xaf <Private Use>
++<UE3BB> /x8f/xf5/xb0 <Private Use>
++<UE3BC> /x8f/xf5/xb1 <Private Use>
++<UE3BD> /x8f/xf5/xb2 <Private Use>
++<UE3BE> /x8f/xf5/xb3 <Private Use>
++<UE3BF> /x8f/xf5/xb4 <Private Use>
++<UE3C0> /x8f/xf5/xb5 <Private Use>
++<UE3C1> /x8f/xf5/xb6 <Private Use>
++<UE3C2> /x8f/xf5/xb7 <Private Use>
++<UE3C3> /x8f/xf5/xb8 <Private Use>
++<UE3C4> /x8f/xf5/xb9 <Private Use>
++<UE3C5> /x8f/xf5/xba <Private Use>
++<UE3C6> /x8f/xf5/xbb <Private Use>
++<UE3C7> /x8f/xf5/xbc <Private Use>
++<UE3C8> /x8f/xf5/xbd <Private Use>
++<UE3C9> /x8f/xf5/xbe <Private Use>
++<UE3CA> /x8f/xf5/xbf <Private Use>
++<UE3CB> /x8f/xf5/xc0 <Private Use>
++<UE3CC> /x8f/xf5/xc1 <Private Use>
++<UE3CD> /x8f/xf5/xc2 <Private Use>
++<UE3CE> /x8f/xf5/xc3 <Private Use>
++<UE3CF> /x8f/xf5/xc4 <Private Use>
++<UE3D0> /x8f/xf5/xc5 <Private Use>
++<UE3D1> /x8f/xf5/xc6 <Private Use>
++<UE3D2> /x8f/xf5/xc7 <Private Use>
++<UE3D3> /x8f/xf5/xc8 <Private Use>
++<UE3D4> /x8f/xf5/xc9 <Private Use>
++<UE3D5> /x8f/xf5/xca <Private Use>
++<UE3D6> /x8f/xf5/xcb <Private Use>
++<UE3D7> /x8f/xf5/xcc <Private Use>
++<UE3D8> /x8f/xf5/xcd <Private Use>
++<UE3D9> /x8f/xf5/xce <Private Use>
++<UE3DA> /x8f/xf5/xcf <Private Use>
++<UE3DB> /x8f/xf5/xd0 <Private Use>
++<UE3DC> /x8f/xf5/xd1 <Private Use>
++<UE3DD> /x8f/xf5/xd2 <Private Use>
++<UE3DE> /x8f/xf5/xd3 <Private Use>
++<UE3DF> /x8f/xf5/xd4 <Private Use>
++<UE3E0> /x8f/xf5/xd5 <Private Use>
++<UE3E1> /x8f/xf5/xd6 <Private Use>
++<UE3E2> /x8f/xf5/xd7 <Private Use>
++<UE3E3> /x8f/xf5/xd8 <Private Use>
++<UE3E4> /x8f/xf5/xd9 <Private Use>
++<UE3E5> /x8f/xf5/xda <Private Use>
++<UE3E6> /x8f/xf5/xdb <Private Use>
++<UE3E7> /x8f/xf5/xdc <Private Use>
++<UE3E8> /x8f/xf5/xdd <Private Use>
++<UE3E9> /x8f/xf5/xde <Private Use>
++<UE3EA> /x8f/xf5/xdf <Private Use>
++<UE3EB> /x8f/xf5/xe0 <Private Use>
++<UE3EC> /x8f/xf5/xe1 <Private Use>
++<UE3ED> /x8f/xf5/xe2 <Private Use>
++<UE3EE> /x8f/xf5/xe3 <Private Use>
++<UE3EF> /x8f/xf5/xe4 <Private Use>
++<UE3F0> /x8f/xf5/xe5 <Private Use>
++<UE3F1> /x8f/xf5/xe6 <Private Use>
++<UE3F2> /x8f/xf5/xe7 <Private Use>
++<UE3F3> /x8f/xf5/xe8 <Private Use>
++<UE3F4> /x8f/xf5/xe9 <Private Use>
++<UE3F5> /x8f/xf5/xea <Private Use>
++<UE3F6> /x8f/xf5/xeb <Private Use>
++<UE3F7> /x8f/xf5/xec <Private Use>
++<UE3F8> /x8f/xf5/xed <Private Use>
++<UE3F9> /x8f/xf5/xee <Private Use>
++<UE3FA> /x8f/xf5/xef <Private Use>
++<UE3FB> /x8f/xf5/xf0 <Private Use>
++<UE3FC> /x8f/xf5/xf1 <Private Use>
++<UE3FD> /x8f/xf5/xf2 <Private Use>
++<UE3FE> /x8f/xf5/xf3 <Private Use>
++<UE3FF> /x8f/xf5/xf4 <Private Use>
++<UE400> /x8f/xf5/xf5 <Private Use>
++<UE401> /x8f/xf5/xf6 <Private Use>
++<UE402> /x8f/xf5/xf7 <Private Use>
++<UE403> /x8f/xf5/xf8 <Private Use>
++<UE404> /x8f/xf5/xf9 <Private Use>
++<UE405> /x8f/xf5/xfa <Private Use>
++<UE406> /x8f/xf5/xfb <Private Use>
++<UE407> /x8f/xf5/xfc <Private Use>
++<UE408> /x8f/xf5/xfd <Private Use>
++<UE409> /x8f/xf5/xfe <Private Use>
++<UE40A> /x8f/xf6/xa1 <Private Use>
++<UE40B> /x8f/xf6/xa2 <Private Use>
++<UE40C> /x8f/xf6/xa3 <Private Use>
++<UE40D> /x8f/xf6/xa4 <Private Use>
++<UE40E> /x8f/xf6/xa5 <Private Use>
++<UE40F> /x8f/xf6/xa6 <Private Use>
++<UE410> /x8f/xf6/xa7 <Private Use>
++<UE411> /x8f/xf6/xa8 <Private Use>
++<UE412> /x8f/xf6/xa9 <Private Use>
++<UE413> /x8f/xf6/xaa <Private Use>
++<UE414> /x8f/xf6/xab <Private Use>
++<UE415> /x8f/xf6/xac <Private Use>
++<UE416> /x8f/xf6/xad <Private Use>
++<UE417> /x8f/xf6/xae <Private Use>
++<UE418> /x8f/xf6/xaf <Private Use>
++<UE419> /x8f/xf6/xb0 <Private Use>
++<UE41A> /x8f/xf6/xb1 <Private Use>
++<UE41B> /x8f/xf6/xb2 <Private Use>
++<UE41C> /x8f/xf6/xb3 <Private Use>
++<UE41D> /x8f/xf6/xb4 <Private Use>
++<UE41E> /x8f/xf6/xb5 <Private Use>
++<UE41F> /x8f/xf6/xb6 <Private Use>
++<UE420> /x8f/xf6/xb7 <Private Use>
++<UE421> /x8f/xf6/xb8 <Private Use>
++<UE422> /x8f/xf6/xb9 <Private Use>
++<UE423> /x8f/xf6/xba <Private Use>
++<UE424> /x8f/xf6/xbb <Private Use>
++<UE425> /x8f/xf6/xbc <Private Use>
++<UE426> /x8f/xf6/xbd <Private Use>
++<UE427> /x8f/xf6/xbe <Private Use>
++<UE428> /x8f/xf6/xbf <Private Use>
++<UE429> /x8f/xf6/xc0 <Private Use>
++<UE42A> /x8f/xf6/xc1 <Private Use>
++<UE42B> /x8f/xf6/xc2 <Private Use>
++<UE42C> /x8f/xf6/xc3 <Private Use>
++<UE42D> /x8f/xf6/xc4 <Private Use>
++<UE42E> /x8f/xf6/xc5 <Private Use>
++<UE42F> /x8f/xf6/xc6 <Private Use>
++<UE430> /x8f/xf6/xc7 <Private Use>
++<UE431> /x8f/xf6/xc8 <Private Use>
++<UE432> /x8f/xf6/xc9 <Private Use>
++<UE433> /x8f/xf6/xca <Private Use>
++<UE434> /x8f/xf6/xcb <Private Use>
++<UE435> /x8f/xf6/xcc <Private Use>
++<UE436> /x8f/xf6/xcd <Private Use>
++<UE437> /x8f/xf6/xce <Private Use>
++<UE438> /x8f/xf6/xcf <Private Use>
++<UE439> /x8f/xf6/xd0 <Private Use>
++<UE43A> /x8f/xf6/xd1 <Private Use>
++<UE43B> /x8f/xf6/xd2 <Private Use>
++<UE43C> /x8f/xf6/xd3 <Private Use>
++<UE43D> /x8f/xf6/xd4 <Private Use>
++<UE43E> /x8f/xf6/xd5 <Private Use>
++<UE43F> /x8f/xf6/xd6 <Private Use>
++<UE440> /x8f/xf6/xd7 <Private Use>
++<UE441> /x8f/xf6/xd8 <Private Use>
++<UE442> /x8f/xf6/xd9 <Private Use>
++<UE443> /x8f/xf6/xda <Private Use>
++<UE444> /x8f/xf6/xdb <Private Use>
++<UE445> /x8f/xf6/xdc <Private Use>
++<UE446> /x8f/xf6/xdd <Private Use>
++<UE447> /x8f/xf6/xde <Private Use>
++<UE448> /x8f/xf6/xdf <Private Use>
++<UE449> /x8f/xf6/xe0 <Private Use>
++<UE44A> /x8f/xf6/xe1 <Private Use>
++<UE44B> /x8f/xf6/xe2 <Private Use>
++<UE44C> /x8f/xf6/xe3 <Private Use>
++<UE44D> /x8f/xf6/xe4 <Private Use>
++<UE44E> /x8f/xf6/xe5 <Private Use>
++<UE44F> /x8f/xf6/xe6 <Private Use>
++<UE450> /x8f/xf6/xe7 <Private Use>
++<UE451> /x8f/xf6/xe8 <Private Use>
++<UE452> /x8f/xf6/xe9 <Private Use>
++<UE453> /x8f/xf6/xea <Private Use>
++<UE454> /x8f/xf6/xeb <Private Use>
++<UE455> /x8f/xf6/xec <Private Use>
++<UE456> /x8f/xf6/xed <Private Use>
++<UE457> /x8f/xf6/xee <Private Use>
++<UE458> /x8f/xf6/xef <Private Use>
++<UE459> /x8f/xf6/xf0 <Private Use>
++<UE45A> /x8f/xf6/xf1 <Private Use>
++<UE45B> /x8f/xf6/xf2 <Private Use>
++<UE45C> /x8f/xf6/xf3 <Private Use>
++<UE45D> /x8f/xf6/xf4 <Private Use>
++<UE45E> /x8f/xf6/xf5 <Private Use>
++<UE45F> /x8f/xf6/xf6 <Private Use>
++<UE460> /x8f/xf6/xf7 <Private Use>
++<UE461> /x8f/xf6/xf8 <Private Use>
++<UE462> /x8f/xf6/xf9 <Private Use>
++<UE463> /x8f/xf6/xfa <Private Use>
++<UE464> /x8f/xf6/xfb <Private Use>
++<UE465> /x8f/xf6/xfc <Private Use>
++<UE466> /x8f/xf6/xfd <Private Use>
++<UE467> /x8f/xf6/xfe <Private Use>
++<UE468> /x8f/xf7/xa1 <Private Use>
++<UE469> /x8f/xf7/xa2 <Private Use>
++<UE46A> /x8f/xf7/xa3 <Private Use>
++<UE46B> /x8f/xf7/xa4 <Private Use>
++<UE46C> /x8f/xf7/xa5 <Private Use>
++<UE46D> /x8f/xf7/xa6 <Private Use>
++<UE46E> /x8f/xf7/xa7 <Private Use>
++<UE46F> /x8f/xf7/xa8 <Private Use>
++<UE470> /x8f/xf7/xa9 <Private Use>
++<UE471> /x8f/xf7/xaa <Private Use>
++<UE472> /x8f/xf7/xab <Private Use>
++<UE473> /x8f/xf7/xac <Private Use>
++<UE474> /x8f/xf7/xad <Private Use>
++<UE475> /x8f/xf7/xae <Private Use>
++<UE476> /x8f/xf7/xaf <Private Use>
++<UE477> /x8f/xf7/xb0 <Private Use>
++<UE478> /x8f/xf7/xb1 <Private Use>
++<UE479> /x8f/xf7/xb2 <Private Use>
++<UE47A> /x8f/xf7/xb3 <Private Use>
++<UE47B> /x8f/xf7/xb4 <Private Use>
++<UE47C> /x8f/xf7/xb5 <Private Use>
++<UE47D> /x8f/xf7/xb6 <Private Use>
++<UE47E> /x8f/xf7/xb7 <Private Use>
++<UE47F> /x8f/xf7/xb8 <Private Use>
++<UE480> /x8f/xf7/xb9 <Private Use>
++<UE481> /x8f/xf7/xba <Private Use>
++<UE482> /x8f/xf7/xbb <Private Use>
++<UE483> /x8f/xf7/xbc <Private Use>
++<UE484> /x8f/xf7/xbd <Private Use>
++<UE485> /x8f/xf7/xbe <Private Use>
++<UE486> /x8f/xf7/xbf <Private Use>
++<UE487> /x8f/xf7/xc0 <Private Use>
++<UE488> /x8f/xf7/xc1 <Private Use>
++<UE489> /x8f/xf7/xc2 <Private Use>
++<UE48A> /x8f/xf7/xc3 <Private Use>
++<UE48B> /x8f/xf7/xc4 <Private Use>
++<UE48C> /x8f/xf7/xc5 <Private Use>
++<UE48D> /x8f/xf7/xc6 <Private Use>
++<UE48E> /x8f/xf7/xc7 <Private Use>
++<UE48F> /x8f/xf7/xc8 <Private Use>
++<UE490> /x8f/xf7/xc9 <Private Use>
++<UE491> /x8f/xf7/xca <Private Use>
++<UE492> /x8f/xf7/xcb <Private Use>
++<UE493> /x8f/xf7/xcc <Private Use>
++<UE494> /x8f/xf7/xcd <Private Use>
++<UE495> /x8f/xf7/xce <Private Use>
++<UE496> /x8f/xf7/xcf <Private Use>
++<UE497> /x8f/xf7/xd0 <Private Use>
++<UE498> /x8f/xf7/xd1 <Private Use>
++<UE499> /x8f/xf7/xd2 <Private Use>
++<UE49A> /x8f/xf7/xd3 <Private Use>
++<UE49B> /x8f/xf7/xd4 <Private Use>
++<UE49C> /x8f/xf7/xd5 <Private Use>
++<UE49D> /x8f/xf7/xd6 <Private Use>
++<UE49E> /x8f/xf7/xd7 <Private Use>
++<UE49F> /x8f/xf7/xd8 <Private Use>
++<UE4A0> /x8f/xf7/xd9 <Private Use>
++<UE4A1> /x8f/xf7/xda <Private Use>
++<UE4A2> /x8f/xf7/xdb <Private Use>
++<UE4A3> /x8f/xf7/xdc <Private Use>
++<UE4A4> /x8f/xf7/xdd <Private Use>
++<UE4A5> /x8f/xf7/xde <Private Use>
++<UE4A6> /x8f/xf7/xdf <Private Use>
++<UE4A7> /x8f/xf7/xe0 <Private Use>
++<UE4A8> /x8f/xf7/xe1 <Private Use>
++<UE4A9> /x8f/xf7/xe2 <Private Use>
++<UE4AA> /x8f/xf7/xe3 <Private Use>
++<UE4AB> /x8f/xf7/xe4 <Private Use>
++<UE4AC> /x8f/xf7/xe5 <Private Use>
++<UE4AD> /x8f/xf7/xe6 <Private Use>
++<UE4AE> /x8f/xf7/xe7 <Private Use>
++<UE4AF> /x8f/xf7/xe8 <Private Use>
++<UE4B0> /x8f/xf7/xe9 <Private Use>
++<UE4B1> /x8f/xf7/xea <Private Use>
++<UE4B2> /x8f/xf7/xeb <Private Use>
++<UE4B3> /x8f/xf7/xec <Private Use>
++<UE4B4> /x8f/xf7/xed <Private Use>
++<UE4B5> /x8f/xf7/xee <Private Use>
++<UE4B6> /x8f/xf7/xef <Private Use>
++<UE4B7> /x8f/xf7/xf0 <Private Use>
++<UE4B8> /x8f/xf7/xf1 <Private Use>
++<UE4B9> /x8f/xf7/xf2 <Private Use>
++<UE4BA> /x8f/xf7/xf3 <Private Use>
++<UE4BB> /x8f/xf7/xf4 <Private Use>
++<UE4BC> /x8f/xf7/xf5 <Private Use>
++<UE4BD> /x8f/xf7/xf6 <Private Use>
++<UE4BE> /x8f/xf7/xf7 <Private Use>
++<UE4BF> /x8f/xf7/xf8 <Private Use>
++<UE4C0> /x8f/xf7/xf9 <Private Use>
++<UE4C1> /x8f/xf7/xfa <Private Use>
++<UE4C2> /x8f/xf7/xfb <Private Use>
++<UE4C3> /x8f/xf7/xfc <Private Use>
++<UE4C4> /x8f/xf7/xfd <Private Use>
++<UE4C5> /x8f/xf7/xfe <Private Use>
++<UE4C6> /x8f/xf8/xa1 <Private Use>
++<UE4C7> /x8f/xf8/xa2 <Private Use>
++<UE4C8> /x8f/xf8/xa3 <Private Use>
++<UE4C9> /x8f/xf8/xa4 <Private Use>
++<UE4CA> /x8f/xf8/xa5 <Private Use>
++<UE4CB> /x8f/xf8/xa6 <Private Use>
++<UE4CC> /x8f/xf8/xa7 <Private Use>
++<UE4CD> /x8f/xf8/xa8 <Private Use>
++<UE4CE> /x8f/xf8/xa9 <Private Use>
++<UE4CF> /x8f/xf8/xaa <Private Use>
++<UE4D0> /x8f/xf8/xab <Private Use>
++<UE4D1> /x8f/xf8/xac <Private Use>
++<UE4D2> /x8f/xf8/xad <Private Use>
++<UE4D3> /x8f/xf8/xae <Private Use>
++<UE4D4> /x8f/xf8/xaf <Private Use>
++<UE4D5> /x8f/xf8/xb0 <Private Use>
++<UE4D6> /x8f/xf8/xb1 <Private Use>
++<UE4D7> /x8f/xf8/xb2 <Private Use>
++<UE4D8> /x8f/xf8/xb3 <Private Use>
++<UE4D9> /x8f/xf8/xb4 <Private Use>
++<UE4DA> /x8f/xf8/xb5 <Private Use>
++<UE4DB> /x8f/xf8/xb6 <Private Use>
++<UE4DC> /x8f/xf8/xb7 <Private Use>
++<UE4DD> /x8f/xf8/xb8 <Private Use>
++<UE4DE> /x8f/xf8/xb9 <Private Use>
++<UE4DF> /x8f/xf8/xba <Private Use>
++<UE4E0> /x8f/xf8/xbb <Private Use>
++<UE4E1> /x8f/xf8/xbc <Private Use>
++<UE4E2> /x8f/xf8/xbd <Private Use>
++<UE4E3> /x8f/xf8/xbe <Private Use>
++<UE4E4> /x8f/xf8/xbf <Private Use>
++<UE4E5> /x8f/xf8/xc0 <Private Use>
++<UE4E6> /x8f/xf8/xc1 <Private Use>
++<UE4E7> /x8f/xf8/xc2 <Private Use>
++<UE4E8> /x8f/xf8/xc3 <Private Use>
++<UE4E9> /x8f/xf8/xc4 <Private Use>
++<UE4EA> /x8f/xf8/xc5 <Private Use>
++<UE4EB> /x8f/xf8/xc6 <Private Use>
++<UE4EC> /x8f/xf8/xc7 <Private Use>
++<UE4ED> /x8f/xf8/xc8 <Private Use>
++<UE4EE> /x8f/xf8/xc9 <Private Use>
++<UE4EF> /x8f/xf8/xca <Private Use>
++<UE4F0> /x8f/xf8/xcb <Private Use>
++<UE4F1> /x8f/xf8/xcc <Private Use>
++<UE4F2> /x8f/xf8/xcd <Private Use>
++<UE4F3> /x8f/xf8/xce <Private Use>
++<UE4F4> /x8f/xf8/xcf <Private Use>
++<UE4F5> /x8f/xf8/xd0 <Private Use>
++<UE4F6> /x8f/xf8/xd1 <Private Use>
++<UE4F7> /x8f/xf8/xd2 <Private Use>
++<UE4F8> /x8f/xf8/xd3 <Private Use>
++<UE4F9> /x8f/xf8/xd4 <Private Use>
++<UE4FA> /x8f/xf8/xd5 <Private Use>
++<UE4FB> /x8f/xf8/xd6 <Private Use>
++<UE4FC> /x8f/xf8/xd7 <Private Use>
++<UE4FD> /x8f/xf8/xd8 <Private Use>
++<UE4FE> /x8f/xf8/xd9 <Private Use>
++<UE4FF> /x8f/xf8/xda <Private Use>
++<UE500> /x8f/xf8/xdb <Private Use>
++<UE501> /x8f/xf8/xdc <Private Use>
++<UE502> /x8f/xf8/xdd <Private Use>
++<UE503> /x8f/xf8/xde <Private Use>
++<UE504> /x8f/xf8/xdf <Private Use>
++<UE505> /x8f/xf8/xe0 <Private Use>
++<UE506> /x8f/xf8/xe1 <Private Use>
++<UE507> /x8f/xf8/xe2 <Private Use>
++<UE508> /x8f/xf8/xe3 <Private Use>
++<UE509> /x8f/xf8/xe4 <Private Use>
++<UE50A> /x8f/xf8/xe5 <Private Use>
++<UE50B> /x8f/xf8/xe6 <Private Use>
++<UE50C> /x8f/xf8/xe7 <Private Use>
++<UE50D> /x8f/xf8/xe8 <Private Use>
++<UE50E> /x8f/xf8/xe9 <Private Use>
++<UE50F> /x8f/xf8/xea <Private Use>
++<UE510> /x8f/xf8/xeb <Private Use>
++<UE511> /x8f/xf8/xec <Private Use>
++<UE512> /x8f/xf8/xed <Private Use>
++<UE513> /x8f/xf8/xee <Private Use>
++<UE514> /x8f/xf8/xef <Private Use>
++<UE515> /x8f/xf8/xf0 <Private Use>
++<UE516> /x8f/xf8/xf1 <Private Use>
++<UE517> /x8f/xf8/xf2 <Private Use>
++<UE518> /x8f/xf8/xf3 <Private Use>
++<UE519> /x8f/xf8/xf4 <Private Use>
++<UE51A> /x8f/xf8/xf5 <Private Use>
++<UE51B> /x8f/xf8/xf6 <Private Use>
++<UE51C> /x8f/xf8/xf7 <Private Use>
++<UE51D> /x8f/xf8/xf8 <Private Use>
++<UE51E> /x8f/xf8/xf9 <Private Use>
++<UE51F> /x8f/xf8/xfa <Private Use>
++<UE520> /x8f/xf8/xfb <Private Use>
++<UE521> /x8f/xf8/xfc <Private Use>
++<UE522> /x8f/xf8/xfd <Private Use>
++<UE523> /x8f/xf8/xfe <Private Use>
++<UE524> /x8f/xf9/xa1 <Private Use>
++<UE525> /x8f/xf9/xa2 <Private Use>
++<UE526> /x8f/xf9/xa3 <Private Use>
++<UE527> /x8f/xf9/xa4 <Private Use>
++<UE528> /x8f/xf9/xa5 <Private Use>
++<UE529> /x8f/xf9/xa6 <Private Use>
++<UE52A> /x8f/xf9/xa7 <Private Use>
++<UE52B> /x8f/xf9/xa8 <Private Use>
++<UE52C> /x8f/xf9/xa9 <Private Use>
++<UE52D> /x8f/xf9/xaa <Private Use>
++<UE52E> /x8f/xf9/xab <Private Use>
++<UE52F> /x8f/xf9/xac <Private Use>
++<UE530> /x8f/xf9/xad <Private Use>
++<UE531> /x8f/xf9/xae <Private Use>
++<UE532> /x8f/xf9/xaf <Private Use>
++<UE533> /x8f/xf9/xb0 <Private Use>
++<UE534> /x8f/xf9/xb1 <Private Use>
++<UE535> /x8f/xf9/xb2 <Private Use>
++<UE536> /x8f/xf9/xb3 <Private Use>
++<UE537> /x8f/xf9/xb4 <Private Use>
++<UE538> /x8f/xf9/xb5 <Private Use>
++<UE539> /x8f/xf9/xb6 <Private Use>
++<UE53A> /x8f/xf9/xb7 <Private Use>
++<UE53B> /x8f/xf9/xb8 <Private Use>
++<UE53C> /x8f/xf9/xb9 <Private Use>
++<UE53D> /x8f/xf9/xba <Private Use>
++<UE53E> /x8f/xf9/xbb <Private Use>
++<UE53F> /x8f/xf9/xbc <Private Use>
++<UE540> /x8f/xf9/xbd <Private Use>
++<UE541> /x8f/xf9/xbe <Private Use>
++<UE542> /x8f/xf9/xbf <Private Use>
++<UE543> /x8f/xf9/xc0 <Private Use>
++<UE544> /x8f/xf9/xc1 <Private Use>
++<UE545> /x8f/xf9/xc2 <Private Use>
++<UE546> /x8f/xf9/xc3 <Private Use>
++<UE547> /x8f/xf9/xc4 <Private Use>
++<UE548> /x8f/xf9/xc5 <Private Use>
++<UE549> /x8f/xf9/xc6 <Private Use>
++<UE54A> /x8f/xf9/xc7 <Private Use>
++<UE54B> /x8f/xf9/xc8 <Private Use>
++<UE54C> /x8f/xf9/xc9 <Private Use>
++<UE54D> /x8f/xf9/xca <Private Use>
++<UE54E> /x8f/xf9/xcb <Private Use>
++<UE54F> /x8f/xf9/xcc <Private Use>
++<UE550> /x8f/xf9/xcd <Private Use>
++<UE551> /x8f/xf9/xce <Private Use>
++<UE552> /x8f/xf9/xcf <Private Use>
++<UE553> /x8f/xf9/xd0 <Private Use>
++<UE554> /x8f/xf9/xd1 <Private Use>
++<UE555> /x8f/xf9/xd2 <Private Use>
++<UE556> /x8f/xf9/xd3 <Private Use>
++<UE557> /x8f/xf9/xd4 <Private Use>
++<UE558> /x8f/xf9/xd5 <Private Use>
++<UE559> /x8f/xf9/xd6 <Private Use>
++<UE55A> /x8f/xf9/xd7 <Private Use>
++<UE55B> /x8f/xf9/xd8 <Private Use>
++<UE55C> /x8f/xf9/xd9 <Private Use>
++<UE55D> /x8f/xf9/xda <Private Use>
++<UE55E> /x8f/xf9/xdb <Private Use>
++<UE55F> /x8f/xf9/xdc <Private Use>
++<UE560> /x8f/xf9/xdd <Private Use>
++<UE561> /x8f/xf9/xde <Private Use>
++<UE562> /x8f/xf9/xdf <Private Use>
++<UE563> /x8f/xf9/xe0 <Private Use>
++<UE564> /x8f/xf9/xe1 <Private Use>
++<UE565> /x8f/xf9/xe2 <Private Use>
++<UE566> /x8f/xf9/xe3 <Private Use>
++<UE567> /x8f/xf9/xe4 <Private Use>
++<UE568> /x8f/xf9/xe5 <Private Use>
++<UE569> /x8f/xf9/xe6 <Private Use>
++<UE56A> /x8f/xf9/xe7 <Private Use>
++<UE56B> /x8f/xf9/xe8 <Private Use>
++<UE56C> /x8f/xf9/xe9 <Private Use>
++<UE56D> /x8f/xf9/xea <Private Use>
++<UE56E> /x8f/xf9/xeb <Private Use>
++<UE56F> /x8f/xf9/xec <Private Use>
++<UE570> /x8f/xf9/xed <Private Use>
++<UE571> /x8f/xf9/xee <Private Use>
++<UE572> /x8f/xf9/xef <Private Use>
++<UE573> /x8f/xf9/xf0 <Private Use>
++<UE574> /x8f/xf9/xf1 <Private Use>
++<UE575> /x8f/xf9/xf2 <Private Use>
++<UE576> /x8f/xf9/xf3 <Private Use>
++<UE577> /x8f/xf9/xf4 <Private Use>
++<UE578> /x8f/xf9/xf5 <Private Use>
++<UE579> /x8f/xf9/xf6 <Private Use>
++<UE57A> /x8f/xf9/xf7 <Private Use>
++<UE57B> /x8f/xf9/xf8 <Private Use>
++<UE57C> /x8f/xf9/xf9 <Private Use>
++<UE57D> /x8f/xf9/xfa <Private Use>
++<UE57E> /x8f/xf9/xfb <Private Use>
++<UE57F> /x8f/xf9/xfc <Private Use>
++<UE580> /x8f/xf9/xfd <Private Use>
++<UE581> /x8f/xf9/xfe <Private Use>
++<UE582> /x8f/xfa/xa1 <Private Use>
++<UE583> /x8f/xfa/xa2 <Private Use>
++<UE584> /x8f/xfa/xa3 <Private Use>
++<UE585> /x8f/xfa/xa4 <Private Use>
++<UE586> /x8f/xfa/xa5 <Private Use>
++<UE587> /x8f/xfa/xa6 <Private Use>
++<UE588> /x8f/xfa/xa7 <Private Use>
++<UE589> /x8f/xfa/xa8 <Private Use>
++<UE58A> /x8f/xfa/xa9 <Private Use>
++<UE58B> /x8f/xfa/xaa <Private Use>
++<UE58C> /x8f/xfa/xab <Private Use>
++<UE58D> /x8f/xfa/xac <Private Use>
++<UE58E> /x8f/xfa/xad <Private Use>
++<UE58F> /x8f/xfa/xae <Private Use>
++<UE590> /x8f/xfa/xaf <Private Use>
++<UE591> /x8f/xfa/xb0 <Private Use>
++<UE592> /x8f/xfa/xb1 <Private Use>
++<UE593> /x8f/xfa/xb2 <Private Use>
++<UE594> /x8f/xfa/xb3 <Private Use>
++<UE595> /x8f/xfa/xb4 <Private Use>
++<UE596> /x8f/xfa/xb5 <Private Use>
++<UE597> /x8f/xfa/xb6 <Private Use>
++<UE598> /x8f/xfa/xb7 <Private Use>
++<UE599> /x8f/xfa/xb8 <Private Use>
++<UE59A> /x8f/xfa/xb9 <Private Use>
++<UE59B> /x8f/xfa/xba <Private Use>
++<UE59C> /x8f/xfa/xbb <Private Use>
++<UE59D> /x8f/xfa/xbc <Private Use>
++<UE59E> /x8f/xfa/xbd <Private Use>
++<UE59F> /x8f/xfa/xbe <Private Use>
++<UE5A0> /x8f/xfa/xbf <Private Use>
++<UE5A1> /x8f/xfa/xc0 <Private Use>
++<UE5A2> /x8f/xfa/xc1 <Private Use>
++<UE5A3> /x8f/xfa/xc2 <Private Use>
++<UE5A4> /x8f/xfa/xc3 <Private Use>
++<UE5A5> /x8f/xfa/xc4 <Private Use>
++<UE5A6> /x8f/xfa/xc5 <Private Use>
++<UE5A7> /x8f/xfa/xc6 <Private Use>
++<UE5A8> /x8f/xfa/xc7 <Private Use>
++<UE5A9> /x8f/xfa/xc8 <Private Use>
++<UE5AA> /x8f/xfa/xc9 <Private Use>
++<UE5AB> /x8f/xfa/xca <Private Use>
++<UE5AC> /x8f/xfa/xcb <Private Use>
++<UE5AD> /x8f/xfa/xcc <Private Use>
++<UE5AE> /x8f/xfa/xcd <Private Use>
++<UE5AF> /x8f/xfa/xce <Private Use>
++<UE5B0> /x8f/xfa/xcf <Private Use>
++<UE5B1> /x8f/xfa/xd0 <Private Use>
++<UE5B2> /x8f/xfa/xd1 <Private Use>
++<UE5B3> /x8f/xfa/xd2 <Private Use>
++<UE5B4> /x8f/xfa/xd3 <Private Use>
++<UE5B5> /x8f/xfa/xd4 <Private Use>
++<UE5B6> /x8f/xfa/xd5 <Private Use>
++<UE5B7> /x8f/xfa/xd6 <Private Use>
++<UE5B8> /x8f/xfa/xd7 <Private Use>
++<UE5B9> /x8f/xfa/xd8 <Private Use>
++<UE5BA> /x8f/xfa/xd9 <Private Use>
++<UE5BB> /x8f/xfa/xda <Private Use>
++<UE5BC> /x8f/xfa/xdb <Private Use>
++<UE5BD> /x8f/xfa/xdc <Private Use>
++<UE5BE> /x8f/xfa/xdd <Private Use>
++<UE5BF> /x8f/xfa/xde <Private Use>
++<UE5C0> /x8f/xfa/xdf <Private Use>
++<UE5C1> /x8f/xfa/xe0 <Private Use>
++<UE5C2> /x8f/xfa/xe1 <Private Use>
++<UE5C3> /x8f/xfa/xe2 <Private Use>
++<UE5C4> /x8f/xfa/xe3 <Private Use>
++<UE5C5> /x8f/xfa/xe4 <Private Use>
++<UE5C6> /x8f/xfa/xe5 <Private Use>
++<UE5C7> /x8f/xfa/xe6 <Private Use>
++<UE5C8> /x8f/xfa/xe7 <Private Use>
++<UE5C9> /x8f/xfa/xe8 <Private Use>
++<UE5CA> /x8f/xfa/xe9 <Private Use>
++<UE5CB> /x8f/xfa/xea <Private Use>
++<UE5CC> /x8f/xfa/xeb <Private Use>
++<UE5CD> /x8f/xfa/xec <Private Use>
++<UE5CE> /x8f/xfa/xed <Private Use>
++<UE5CF> /x8f/xfa/xee <Private Use>
++<UE5D0> /x8f/xfa/xef <Private Use>
++<UE5D1> /x8f/xfa/xf0 <Private Use>
++<UE5D2> /x8f/xfa/xf1 <Private Use>
++<UE5D3> /x8f/xfa/xf2 <Private Use>
++<UE5D4> /x8f/xfa/xf3 <Private Use>
++<UE5D5> /x8f/xfa/xf4 <Private Use>
++<UE5D6> /x8f/xfa/xf5 <Private Use>
++<UE5D7> /x8f/xfa/xf6 <Private Use>
++<UE5D8> /x8f/xfa/xf7 <Private Use>
++<UE5D9> /x8f/xfa/xf8 <Private Use>
++<UE5DA> /x8f/xfa/xf9 <Private Use>
++<UE5DB> /x8f/xfa/xfa <Private Use>
++<UE5DC> /x8f/xfa/xfb <Private Use>
++<UE5DD> /x8f/xfa/xfc <Private Use>
++<UE5DE> /x8f/xfa/xfd <Private Use>
++<UE5DF> /x8f/xfa/xfe <Private Use>
++<UE5E0> /x8f/xfb/xa1 <Private Use>
++<UE5E1> /x8f/xfb/xa2 <Private Use>
++<UE5E2> /x8f/xfb/xa3 <Private Use>
++<UE5E3> /x8f/xfb/xa4 <Private Use>
++<UE5E4> /x8f/xfb/xa5 <Private Use>
++<UE5E5> /x8f/xfb/xa6 <Private Use>
++<UE5E6> /x8f/xfb/xa7 <Private Use>
++<UE5E7> /x8f/xfb/xa8 <Private Use>
++<UE5E8> /x8f/xfb/xa9 <Private Use>
++<UE5E9> /x8f/xfb/xaa <Private Use>
++<UE5EA> /x8f/xfb/xab <Private Use>
++<UE5EB> /x8f/xfb/xac <Private Use>
++<UE5EC> /x8f/xfb/xad <Private Use>
++<UE5ED> /x8f/xfb/xae <Private Use>
++<UE5EE> /x8f/xfb/xaf <Private Use>
++<UE5EF> /x8f/xfb/xb0 <Private Use>
++<UE5F0> /x8f/xfb/xb1 <Private Use>
++<UE5F1> /x8f/xfb/xb2 <Private Use>
++<UE5F2> /x8f/xfb/xb3 <Private Use>
++<UE5F3> /x8f/xfb/xb4 <Private Use>
++<UE5F4> /x8f/xfb/xb5 <Private Use>
++<UE5F5> /x8f/xfb/xb6 <Private Use>
++<UE5F6> /x8f/xfb/xb7 <Private Use>
++<UE5F7> /x8f/xfb/xb8 <Private Use>
++<UE5F8> /x8f/xfb/xb9 <Private Use>
++<UE5F9> /x8f/xfb/xba <Private Use>
++<UE5FA> /x8f/xfb/xbb <Private Use>
++<UE5FB> /x8f/xfb/xbc <Private Use>
++<UE5FC> /x8f/xfb/xbd <Private Use>
++<UE5FD> /x8f/xfb/xbe <Private Use>
++<UE5FE> /x8f/xfb/xbf <Private Use>
++<UE5FF> /x8f/xfb/xc0 <Private Use>
++<UE600> /x8f/xfb/xc1 <Private Use>
++<UE601> /x8f/xfb/xc2 <Private Use>
++<UE602> /x8f/xfb/xc3 <Private Use>
++<UE603> /x8f/xfb/xc4 <Private Use>
++<UE604> /x8f/xfb/xc5 <Private Use>
++<UE605> /x8f/xfb/xc6 <Private Use>
++<UE606> /x8f/xfb/xc7 <Private Use>
++<UE607> /x8f/xfb/xc8 <Private Use>
++<UE608> /x8f/xfb/xc9 <Private Use>
++<UE609> /x8f/xfb/xca <Private Use>
++<UE60A> /x8f/xfb/xcb <Private Use>
++<UE60B> /x8f/xfb/xcc <Private Use>
++<UE60C> /x8f/xfb/xcd <Private Use>
++<UE60D> /x8f/xfb/xce <Private Use>
++<UE60E> /x8f/xfb/xcf <Private Use>
++<UE60F> /x8f/xfb/xd0 <Private Use>
++<UE610> /x8f/xfb/xd1 <Private Use>
++<UE611> /x8f/xfb/xd2 <Private Use>
++<UE612> /x8f/xfb/xd3 <Private Use>
++<UE613> /x8f/xfb/xd4 <Private Use>
++<UE614> /x8f/xfb/xd5 <Private Use>
++<UE615> /x8f/xfb/xd6 <Private Use>
++<UE616> /x8f/xfb/xd7 <Private Use>
++<UE617> /x8f/xfb/xd8 <Private Use>
++<UE618> /x8f/xfb/xd9 <Private Use>
++<UE619> /x8f/xfb/xda <Private Use>
++<UE61A> /x8f/xfb/xdb <Private Use>
++<UE61B> /x8f/xfb/xdc <Private Use>
++<UE61C> /x8f/xfb/xdd <Private Use>
++<UE61D> /x8f/xfb/xde <Private Use>
++<UE61E> /x8f/xfb/xdf <Private Use>
++<UE61F> /x8f/xfb/xe0 <Private Use>
++<UE620> /x8f/xfb/xe1 <Private Use>
++<UE621> /x8f/xfb/xe2 <Private Use>
++<UE622> /x8f/xfb/xe3 <Private Use>
++<UE623> /x8f/xfb/xe4 <Private Use>
++<UE624> /x8f/xfb/xe5 <Private Use>
++<UE625> /x8f/xfb/xe6 <Private Use>
++<UE626> /x8f/xfb/xe7 <Private Use>
++<UE627> /x8f/xfb/xe8 <Private Use>
++<UE628> /x8f/xfb/xe9 <Private Use>
++<UE629> /x8f/xfb/xea <Private Use>
++<UE62A> /x8f/xfb/xeb <Private Use>
++<UE62B> /x8f/xfb/xec <Private Use>
++<UE62C> /x8f/xfb/xed <Private Use>
++<UE62D> /x8f/xfb/xee <Private Use>
++<UE62E> /x8f/xfb/xef <Private Use>
++<UE62F> /x8f/xfb/xf0 <Private Use>
++<UE630> /x8f/xfb/xf1 <Private Use>
++<UE631> /x8f/xfb/xf2 <Private Use>
++<UE632> /x8f/xfb/xf3 <Private Use>
++<UE633> /x8f/xfb/xf4 <Private Use>
++<UE634> /x8f/xfb/xf5 <Private Use>
++<UE635> /x8f/xfb/xf6 <Private Use>
++<UE636> /x8f/xfb/xf7 <Private Use>
++<UE637> /x8f/xfb/xf8 <Private Use>
++<UE638> /x8f/xfb/xf9 <Private Use>
++<UE639> /x8f/xfb/xfa <Private Use>
++<UE63A> /x8f/xfb/xfb <Private Use>
++<UE63B> /x8f/xfb/xfc <Private Use>
++<UE63C> /x8f/xfb/xfd <Private Use>
++<UE63D> /x8f/xfb/xfe <Private Use>
++<UE63E> /x8f/xfc/xa1 <Private Use>
++<UE63F> /x8f/xfc/xa2 <Private Use>
++<UE640> /x8f/xfc/xa3 <Private Use>
++<UE641> /x8f/xfc/xa4 <Private Use>
++<UE642> /x8f/xfc/xa5 <Private Use>
++<UE643> /x8f/xfc/xa6 <Private Use>
++<UE644> /x8f/xfc/xa7 <Private Use>
++<UE645> /x8f/xfc/xa8 <Private Use>
++<UE646> /x8f/xfc/xa9 <Private Use>
++<UE647> /x8f/xfc/xaa <Private Use>
++<UE648> /x8f/xfc/xab <Private Use>
++<UE649> /x8f/xfc/xac <Private Use>
++<UE64A> /x8f/xfc/xad <Private Use>
++<UE64B> /x8f/xfc/xae <Private Use>
++<UE64C> /x8f/xfc/xaf <Private Use>
++<UE64D> /x8f/xfc/xb0 <Private Use>
++<UE64E> /x8f/xfc/xb1 <Private Use>
++<UE64F> /x8f/xfc/xb2 <Private Use>
++<UE650> /x8f/xfc/xb3 <Private Use>
++<UE651> /x8f/xfc/xb4 <Private Use>
++<UE652> /x8f/xfc/xb5 <Private Use>
++<UE653> /x8f/xfc/xb6 <Private Use>
++<UE654> /x8f/xfc/xb7 <Private Use>
++<UE655> /x8f/xfc/xb8 <Private Use>
++<UE656> /x8f/xfc/xb9 <Private Use>
++<UE657> /x8f/xfc/xba <Private Use>
++<UE658> /x8f/xfc/xbb <Private Use>
++<UE659> /x8f/xfc/xbc <Private Use>
++<UE65A> /x8f/xfc/xbd <Private Use>
++<UE65B> /x8f/xfc/xbe <Private Use>
++<UE65C> /x8f/xfc/xbf <Private Use>
++<UE65D> /x8f/xfc/xc0 <Private Use>
++<UE65E> /x8f/xfc/xc1 <Private Use>
++<UE65F> /x8f/xfc/xc2 <Private Use>
++<UE660> /x8f/xfc/xc3 <Private Use>
++<UE661> /x8f/xfc/xc4 <Private Use>
++<UE662> /x8f/xfc/xc5 <Private Use>
++<UE663> /x8f/xfc/xc6 <Private Use>
++<UE664> /x8f/xfc/xc7 <Private Use>
++<UE665> /x8f/xfc/xc8 <Private Use>
++<UE666> /x8f/xfc/xc9 <Private Use>
++<UE667> /x8f/xfc/xca <Private Use>
++<UE668> /x8f/xfc/xcb <Private Use>
++<UE669> /x8f/xfc/xcc <Private Use>
++<UE66A> /x8f/xfc/xcd <Private Use>
++<UE66B> /x8f/xfc/xce <Private Use>
++<UE66C> /x8f/xfc/xcf <Private Use>
++<UE66D> /x8f/xfc/xd0 <Private Use>
++<UE66E> /x8f/xfc/xd1 <Private Use>
++<UE66F> /x8f/xfc/xd2 <Private Use>
++<UE670> /x8f/xfc/xd3 <Private Use>
++<UE671> /x8f/xfc/xd4 <Private Use>
++<UE672> /x8f/xfc/xd5 <Private Use>
++<UE673> /x8f/xfc/xd6 <Private Use>
++<UE674> /x8f/xfc/xd7 <Private Use>
++<UE675> /x8f/xfc/xd8 <Private Use>
++<UE676> /x8f/xfc/xd9 <Private Use>
++<UE677> /x8f/xfc/xda <Private Use>
++<UE678> /x8f/xfc/xdb <Private Use>
++<UE679> /x8f/xfc/xdc <Private Use>
++<UE67A> /x8f/xfc/xdd <Private Use>
++<UE67B> /x8f/xfc/xde <Private Use>
++<UE67C> /x8f/xfc/xdf <Private Use>
++<UE67D> /x8f/xfc/xe0 <Private Use>
++<UE67E> /x8f/xfc/xe1 <Private Use>
++<UE67F> /x8f/xfc/xe2 <Private Use>
++<UE680> /x8f/xfc/xe3 <Private Use>
++<UE681> /x8f/xfc/xe4 <Private Use>
++<UE682> /x8f/xfc/xe5 <Private Use>
++<UE683> /x8f/xfc/xe6 <Private Use>
++<UE684> /x8f/xfc/xe7 <Private Use>
++<UE685> /x8f/xfc/xe8 <Private Use>
++<UE686> /x8f/xfc/xe9 <Private Use>
++<UE687> /x8f/xfc/xea <Private Use>
++<UE688> /x8f/xfc/xeb <Private Use>
++<UE689> /x8f/xfc/xec <Private Use>
++<UE68A> /x8f/xfc/xed <Private Use>
++<UE68B> /x8f/xfc/xee <Private Use>
++<UE68C> /x8f/xfc/xef <Private Use>
++<UE68D> /x8f/xfc/xf0 <Private Use>
++<UE68E> /x8f/xfc/xf1 <Private Use>
++<UE68F> /x8f/xfc/xf2 <Private Use>
++<UE690> /x8f/xfc/xf3 <Private Use>
++<UE691> /x8f/xfc/xf4 <Private Use>
++<UE692> /x8f/xfc/xf5 <Private Use>
++<UE693> /x8f/xfc/xf6 <Private Use>
++<UE694> /x8f/xfc/xf7 <Private Use>
++<UE695> /x8f/xfc/xf8 <Private Use>
++<UE696> /x8f/xfc/xf9 <Private Use>
++<UE697> /x8f/xfc/xfa <Private Use>
++<UE698> /x8f/xfc/xfb <Private Use>
++<UE699> /x8f/xfc/xfc <Private Use>
++<UE69A> /x8f/xfc/xfd <Private Use>
++<UE69B> /x8f/xfc/xfe <Private Use>
++<UE69C> /x8f/xfd/xa1 <Private Use>
++<UE69D> /x8f/xfd/xa2 <Private Use>
++<UE69E> /x8f/xfd/xa3 <Private Use>
++<UE69F> /x8f/xfd/xa4 <Private Use>
++<UE6A0> /x8f/xfd/xa5 <Private Use>
++<UE6A1> /x8f/xfd/xa6 <Private Use>
++<UE6A2> /x8f/xfd/xa7 <Private Use>
++<UE6A3> /x8f/xfd/xa8 <Private Use>
++<UE6A4> /x8f/xfd/xa9 <Private Use>
++<UE6A5> /x8f/xfd/xaa <Private Use>
++<UE6A6> /x8f/xfd/xab <Private Use>
++<UE6A7> /x8f/xfd/xac <Private Use>
++<UE6A8> /x8f/xfd/xad <Private Use>
++<UE6A9> /x8f/xfd/xae <Private Use>
++<UE6AA> /x8f/xfd/xaf <Private Use>
++<UE6AB> /x8f/xfd/xb0 <Private Use>
++<UE6AC> /x8f/xfd/xb1 <Private Use>
++<UE6AD> /x8f/xfd/xb2 <Private Use>
++<UE6AE> /x8f/xfd/xb3 <Private Use>
++<UE6AF> /x8f/xfd/xb4 <Private Use>
++<UE6B0> /x8f/xfd/xb5 <Private Use>
++<UE6B1> /x8f/xfd/xb6 <Private Use>
++<UE6B2> /x8f/xfd/xb7 <Private Use>
++<UE6B3> /x8f/xfd/xb8 <Private Use>
++<UE6B4> /x8f/xfd/xb9 <Private Use>
++<UE6B5> /x8f/xfd/xba <Private Use>
++<UE6B6> /x8f/xfd/xbb <Private Use>
++<UE6B7> /x8f/xfd/xbc <Private Use>
++<UE6B8> /x8f/xfd/xbd <Private Use>
++<UE6B9> /x8f/xfd/xbe <Private Use>
++<UE6BA> /x8f/xfd/xbf <Private Use>
++<UE6BB> /x8f/xfd/xc0 <Private Use>
++<UE6BC> /x8f/xfd/xc1 <Private Use>
++<UE6BD> /x8f/xfd/xc2 <Private Use>
++<UE6BE> /x8f/xfd/xc3 <Private Use>
++<UE6BF> /x8f/xfd/xc4 <Private Use>
++<UE6C0> /x8f/xfd/xc5 <Private Use>
++<UE6C1> /x8f/xfd/xc6 <Private Use>
++<UE6C2> /x8f/xfd/xc7 <Private Use>
++<UE6C3> /x8f/xfd/xc8 <Private Use>
++<UE6C4> /x8f/xfd/xc9 <Private Use>
++<UE6C5> /x8f/xfd/xca <Private Use>
++<UE6C6> /x8f/xfd/xcb <Private Use>
++<UE6C7> /x8f/xfd/xcc <Private Use>
++<UE6C8> /x8f/xfd/xcd <Private Use>
++<UE6C9> /x8f/xfd/xce <Private Use>
++<UE6CA> /x8f/xfd/xcf <Private Use>
++<UE6CB> /x8f/xfd/xd0 <Private Use>
++<UE6CC> /x8f/xfd/xd1 <Private Use>
++<UE6CD> /x8f/xfd/xd2 <Private Use>
++<UE6CE> /x8f/xfd/xd3 <Private Use>
++<UE6CF> /x8f/xfd/xd4 <Private Use>
++<UE6D0> /x8f/xfd/xd5 <Private Use>
++<UE6D1> /x8f/xfd/xd6 <Private Use>
++<UE6D2> /x8f/xfd/xd7 <Private Use>
++<UE6D3> /x8f/xfd/xd8 <Private Use>
++<UE6D4> /x8f/xfd/xd9 <Private Use>
++<UE6D5> /x8f/xfd/xda <Private Use>
++<UE6D6> /x8f/xfd/xdb <Private Use>
++<UE6D7> /x8f/xfd/xdc <Private Use>
++<UE6D8> /x8f/xfd/xdd <Private Use>
++<UE6D9> /x8f/xfd/xde <Private Use>
++<UE6DA> /x8f/xfd/xdf <Private Use>
++<UE6DB> /x8f/xfd/xe0 <Private Use>
++<UE6DC> /x8f/xfd/xe1 <Private Use>
++<UE6DD> /x8f/xfd/xe2 <Private Use>
++<UE6DE> /x8f/xfd/xe3 <Private Use>
++<UE6DF> /x8f/xfd/xe4 <Private Use>
++<UE6E0> /x8f/xfd/xe5 <Private Use>
++<UE6E1> /x8f/xfd/xe6 <Private Use>
++<UE6E2> /x8f/xfd/xe7 <Private Use>
++<UE6E3> /x8f/xfd/xe8 <Private Use>
++<UE6E4> /x8f/xfd/xe9 <Private Use>
++<UE6E5> /x8f/xfd/xea <Private Use>
++<UE6E6> /x8f/xfd/xeb <Private Use>
++<UE6E7> /x8f/xfd/xec <Private Use>
++<UE6E8> /x8f/xfd/xed <Private Use>
++<UE6E9> /x8f/xfd/xee <Private Use>
++<UE6EA> /x8f/xfd/xef <Private Use>
++<UE6EB> /x8f/xfd/xf0 <Private Use>
++<UE6EC> /x8f/xfd/xf1 <Private Use>
++<UE6ED> /x8f/xfd/xf2 <Private Use>
++<UE6EE> /x8f/xfd/xf3 <Private Use>
++<UE6EF> /x8f/xfd/xf4 <Private Use>
++<UE6F0> /x8f/xfd/xf5 <Private Use>
++<UE6F1> /x8f/xfd/xf6 <Private Use>
++<UE6F2> /x8f/xfd/xf7 <Private Use>
++<UE6F3> /x8f/xfd/xf8 <Private Use>
++<UE6F4> /x8f/xfd/xf9 <Private Use>
++<UE6F5> /x8f/xfd/xfa <Private Use>
++<UE6F6> /x8f/xfd/xfb <Private Use>
++<UE6F7> /x8f/xfd/xfc <Private Use>
++<UE6F8> /x8f/xfd/xfd <Private Use>
++<UE6F9> /x8f/xfd/xfe <Private Use>
++<UE6FA> /x8f/xfe/xa1 <Private Use>
++<UE6FB> /x8f/xfe/xa2 <Private Use>
++<UE6FC> /x8f/xfe/xa3 <Private Use>
++<UE6FD> /x8f/xfe/xa4 <Private Use>
++<UE6FE> /x8f/xfe/xa5 <Private Use>
++<UE6FF> /x8f/xfe/xa6 <Private Use>
++<UE700> /x8f/xfe/xa7 <Private Use>
++<UE701> /x8f/xfe/xa8 <Private Use>
++<UE702> /x8f/xfe/xa9 <Private Use>
++<UE703> /x8f/xfe/xaa <Private Use>
++<UE704> /x8f/xfe/xab <Private Use>
++<UE705> /x8f/xfe/xac <Private Use>
++<UE706> /x8f/xfe/xad <Private Use>
++<UE707> /x8f/xfe/xae <Private Use>
++<UE708> /x8f/xfe/xaf <Private Use>
++<UE709> /x8f/xfe/xb0 <Private Use>
++<UE70A> /x8f/xfe/xb1 <Private Use>
++<UE70B> /x8f/xfe/xb2 <Private Use>
++<UE70C> /x8f/xfe/xb3 <Private Use>
++<UE70D> /x8f/xfe/xb4 <Private Use>
++<UE70E> /x8f/xfe/xb5 <Private Use>
++<UE70F> /x8f/xfe/xb6 <Private Use>
++<UE710> /x8f/xfe/xb7 <Private Use>
++<UE711> /x8f/xfe/xb8 <Private Use>
++<UE712> /x8f/xfe/xb9 <Private Use>
++<UE713> /x8f/xfe/xba <Private Use>
++<UE714> /x8f/xfe/xbb <Private Use>
++<UE715> /x8f/xfe/xbc <Private Use>
++<UE716> /x8f/xfe/xbd <Private Use>
++<UE717> /x8f/xfe/xbe <Private Use>
++<UE718> /x8f/xfe/xbf <Private Use>
++<UE719> /x8f/xfe/xc0 <Private Use>
++<UE71A> /x8f/xfe/xc1 <Private Use>
++<UE71B> /x8f/xfe/xc2 <Private Use>
++<UE71C> /x8f/xfe/xc3 <Private Use>
++<UE71D> /x8f/xfe/xc4 <Private Use>
++<UE71E> /x8f/xfe/xc5 <Private Use>
++<UE71F> /x8f/xfe/xc6 <Private Use>
++<UE720> /x8f/xfe/xc7 <Private Use>
++<UE721> /x8f/xfe/xc8 <Private Use>
++<UE722> /x8f/xfe/xc9 <Private Use>
++<UE723> /x8f/xfe/xca <Private Use>
++<UE724> /x8f/xfe/xcb <Private Use>
++<UE725> /x8f/xfe/xcc <Private Use>
++<UE726> /x8f/xfe/xcd <Private Use>
++<UE727> /x8f/xfe/xce <Private Use>
++<UE728> /x8f/xfe/xcf <Private Use>
++<UE729> /x8f/xfe/xd0 <Private Use>
++<UE72A> /x8f/xfe/xd1 <Private Use>
++<UE72B> /x8f/xfe/xd2 <Private Use>
++<UE72C> /x8f/xfe/xd3 <Private Use>
++<UE72D> /x8f/xfe/xd4 <Private Use>
++<UE72E> /x8f/xfe/xd5 <Private Use>
++<UE72F> /x8f/xfe/xd6 <Private Use>
++<UE730> /x8f/xfe/xd7 <Private Use>
++<UE731> /x8f/xfe/xd8 <Private Use>
++<UE732> /x8f/xfe/xd9 <Private Use>
++<UE733> /x8f/xfe/xda <Private Use>
++<UE734> /x8f/xfe/xdb <Private Use>
++<UE735> /x8f/xfe/xdc <Private Use>
++<UE736> /x8f/xfe/xdd <Private Use>
++<UE737> /x8f/xfe/xde <Private Use>
++<UE738> /x8f/xfe/xdf <Private Use>
++<UE739> /x8f/xfe/xe0 <Private Use>
++<UE73A> /x8f/xfe/xe1 <Private Use>
++<UE73B> /x8f/xfe/xe2 <Private Use>
++<UE73C> /x8f/xfe/xe3 <Private Use>
++<UE73D> /x8f/xfe/xe4 <Private Use>
++<UE73E> /x8f/xfe/xe5 <Private Use>
++<UE73F> /x8f/xfe/xe6 <Private Use>
++<UE740> /x8f/xfe/xe7 <Private Use>
++<UE741> /x8f/xfe/xe8 <Private Use>
++<UE742> /x8f/xfe/xe9 <Private Use>
++<UE743> /x8f/xfe/xea <Private Use>
++<UE744> /x8f/xfe/xeb <Private Use>
++<UE745> /x8f/xfe/xec <Private Use>
++<UE746> /x8f/xfe/xed <Private Use>
++<UE747> /x8f/xfe/xee <Private Use>
++<UE748> /x8f/xfe/xef <Private Use>
++<UE749> /x8f/xfe/xf0 <Private Use>
++<UE74A> /x8f/xfe/xf1 <Private Use>
++<UE74B> /x8f/xfe/xf2 <Private Use>
++<UE74C> /x8f/xfe/xf3 <Private Use>
++<UE74D> /x8f/xfe/xf4 <Private Use>
++<UE74E> /x8f/xfe/xf5 <Private Use>
++<UE74F> /x8f/xfe/xf6 <Private Use>
++<UE750> /x8f/xfe/xf7 <Private Use>
++<UE751> /x8f/xfe/xf8 <Private Use>
++<UE752> /x8f/xfe/xf9 <Private Use>
++<UE753> /x8f/xfe/xfa <Private Use>
++<UE754> /x8f/xfe/xfb <Private Use>
++<UE755> /x8f/xfe/xfc <Private Use>
++<UE756> /x8f/xfe/xfd <Private Use>
++<UE757> /x8f/xfe/xfe <Private Use>
++END CHARMAP
++
++WIDTH
++<U3000>...<U7199> 2
++<UE000>...<UE3AB> 2
++<U02D8>...<U9ED1> 2
++<UE3AC>...<UE757> 2
++END WIDTH
+--- glibc-2.3.2/localedata/charmaps/GBK 2002-11-02 23:49:08.000000000 -0500
++++ glibc-2.3.2/localedata/charmaps/GBK 2003-08-21 08:37:06.000000000 -0400
+@@ -4,6 +4,9 @@
+ <comment_char> %
+ <escape_char> /
+
++% alias CP936
++% alias MS936
++% alias WINDOWS-936
+ CHARMAP
+ <U0000> /x00 NULL (NUL)
+ <U0001> /x01 START OF HEADING (SOH)
+--- glibc-2.3.2/localedata/charmaps/IBM1047 2000-06-23 14:38:48.000000000 -0400
++++ glibc-2.3.2/localedata/charmaps/IBM1047 2003-08-21 08:37:06.000000000 -0400
+@@ -6,6 +6,7 @@
+
+ % Registry SC09-1391-00 p 150.
+
++% alias IBM-1047
+ % alias CP1047
+ % alias 1047
+ CHARMAP
+--- glibc-2.3.2/localedata/charmaps/ISO-8859-15 2000-06-23 15:02:28.000000000 -0400
++++ glibc-2.3.2/localedata/charmaps/ISO-8859-15 2003-08-21 08:37:06.000000000 -0400
+@@ -3,6 +3,8 @@
+ <escape_char> /
+ % automatically generated from the charDB
+
++% alias ISO_8859-15
++% alias LATIN-9
+ CHARMAP
+ <U0000> /x00 NULL
+ <U0001> /x01 START OF HEADING
+--- glibc-2.3.2/localedata/charmaps/ISO-8859-16 2001-11-26 22:44:03.000000000 -0500
++++ glibc-2.3.2/localedata/charmaps/ISO-8859-16 2003-08-21 08:37:06.000000000 -0400
+@@ -4,6 +4,8 @@
+ % automatically generated from the charDB
+
+ % alias ISO-IR-226
++% alias ISO_8859-16:2001
++% alias ISO_8859-16
+ % alias LATIN10
+ % alias L10
+ CHARMAP
+--- glibc-2.3.2/localedata/charmaps/WINDOWS-31J 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/charmaps/WINDOWS-31J 2003-08-14 04:48:04.000000000 -0400
+@@ -0,0 +1,9823 @@
++<code_set_name> WINDOWS-31J
++<comment_char> %
++<escape_char> /
++<mb_cur_min> 1
++<mb_cur_max> 2
++
++% WINDOWS-31J character map
++% MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
++% Last changed: 2003-07-18
++
++alias CP932
++
++CHARMAP
++<U0000> /x00 NULL
++<U0001> /x01 START OF HEADING
++<U0002> /x02 START OF TEXT
++<U0003> /x03 END OF TEXT
++<U0004> /x04 END OF TRANSMISSION
++<U0005> /x05 ENQUIRY
++<U0006> /x06 ACKNOWLEDGE
++<U0007> /x07 BELL
++<U0008> /x08 BACKSPACE
++<U0009> /x09 HORIZONTAL TABULATION
++<U000A> /x0a LINE FEED
++<U000B> /x0b VERTICAL TABULATION
++<U000C> /x0c FORM FEED
++<U000D> /x0d CARRIAGE RETURN
++<U000E> /x0e SHIFT OUT
++<U000F> /x0f SHIFT IN
++<U0010> /x10 DATA LINK ESCAPE
++<U0011> /x11 DEVICE CONTROL ONE
++<U0012> /x12 DEVICE CONTROL TWO
++<U0013> /x13 DEVICE CONTROL THREE
++<U0014> /x14 DEVICE CONTROL FOUR
++<U0015> /x15 NEGATIVE ACKNOWLEDGE
++<U0016> /x16 SYNCHRONOUS IDLE
++<U0017> /x17 END OF TRANSMISSION BLOCK
++<U0018> /x18 CANCEL
++<U0019> /x19 END OF MEDIUM
++<U001A> /x1a SUBSTITUTE
++<U001B> /x1b ESCAPE
++<U001C> /x1c FILE SEPARATOR
++<U001D> /x1d GROUP SEPARATOR
++<U001E> /x1e RECORD SEPARATOR
++<U001F> /x1f UNIT SEPARATOR
++<U0020> /x20 SPACE
++<U0021> /x21 EXCLAMATION MARK
++<U0022> /x22 QUOTATION MARK
++<U0023> /x23 NUMBER SIGN
++<U0024> /x24 DOLLAR SIGN
++<U0025> /x25 PERCENT SIGN
++<U0026> /x26 AMPERSAND
++<U0027> /x27 APOSTROPHE
++<U0028> /x28 LEFT PARENTHESIS
++<U0029> /x29 RIGHT PARENTHESIS
++<U002A> /x2a ASTERISK
++<U002B> /x2b PLUS SIGN
++<U002C> /x2c COMMA
++<U002D> /x2d HYPHEN-MINUS
++<U002E> /x2e FULL STOP
++<U002F> /x2f SOLIDUS
++<U0030> /x30 DIGIT ZERO
++<U0031> /x31 DIGIT ONE
++<U0032> /x32 DIGIT TWO
++<U0033> /x33 DIGIT THREE
++<U0034> /x34 DIGIT FOUR
++<U0035> /x35 DIGIT FIVE
++<U0036> /x36 DIGIT SIX
++<U0037> /x37 DIGIT SEVEN
++<U0038> /x38 DIGIT EIGHT
++<U0039> /x39 DIGIT NINE
++<U003A> /x3a COLON
++<U003B> /x3b SEMICOLON
++<U003C> /x3c LESS-THAN SIGN
++<U003D> /x3d EQUALS SIGN
++<U003E> /x3e GREATER-THAN SIGN
++<U003F> /x3f QUESTION MARK
++<U0040> /x40 COMMERCIAL AT
++<U0041> /x41 LATIN CAPITAL LETTER A
++<U0042> /x42 LATIN CAPITAL LETTER B
++<U0043> /x43 LATIN CAPITAL LETTER C
++<U0044> /x44 LATIN CAPITAL LETTER D
++<U0045> /x45 LATIN CAPITAL LETTER E
++<U0046> /x46 LATIN CAPITAL LETTER F
++<U0047> /x47 LATIN CAPITAL LETTER G
++<U0048> /x48 LATIN CAPITAL LETTER H
++<U0049> /x49 LATIN CAPITAL LETTER I
++<U004A> /x4a LATIN CAPITAL LETTER J
++<U004B> /x4b LATIN CAPITAL LETTER K
++<U004C> /x4c LATIN CAPITAL LETTER L
++<U004D> /x4d LATIN CAPITAL LETTER M
++<U004E> /x4e LATIN CAPITAL LETTER N
++<U004F> /x4f LATIN CAPITAL LETTER O
++<U0050> /x50 LATIN CAPITAL LETTER P
++<U0051> /x51 LATIN CAPITAL LETTER Q
++<U0052> /x52 LATIN CAPITAL LETTER R
++<U0053> /x53 LATIN CAPITAL LETTER S
++<U0054> /x54 LATIN CAPITAL LETTER T
++<U0055> /x55 LATIN CAPITAL LETTER U
++<U0056> /x56 LATIN CAPITAL LETTER V
++<U0057> /x57 LATIN CAPITAL LETTER W
++<U0058> /x58 LATIN CAPITAL LETTER X
++<U0059> /x59 LATIN CAPITAL LETTER Y
++<U005A> /x5a LATIN CAPITAL LETTER Z
++<U005B> /x5b LEFT SQUARE BRACKET
++<U005C> /x5c REVERSE SOLIDUS
++<U005D> /x5d RIGHT SQUARE BRACKET
++<U005E> /x5e CIRCUMFLEX ACCENT
++<U005F> /x5f LOW LINE
++<U0060> /x60 GRAVE ACCENT
++<U0061> /x61 LATIN SMALL LETTER A
++<U0062> /x62 LATIN SMALL LETTER B
++<U0063> /x63 LATIN SMALL LETTER C
++<U0064> /x64 LATIN SMALL LETTER D
++<U0065> /x65 LATIN SMALL LETTER E
++<U0066> /x66 LATIN SMALL LETTER F
++<U0067> /x67 LATIN SMALL LETTER G
++<U0068> /x68 LATIN SMALL LETTER H
++<U0069> /x69 LATIN SMALL LETTER I
++<U006A> /x6a LATIN SMALL LETTER J
++<U006B> /x6b LATIN SMALL LETTER K
++<U006C> /x6c LATIN SMALL LETTER L
++<U006D> /x6d LATIN SMALL LETTER M
++<U006E> /x6e LATIN SMALL LETTER N
++<U006F> /x6f LATIN SMALL LETTER O
++<U0070> /x70 LATIN SMALL LETTER P
++<U0071> /x71 LATIN SMALL LETTER Q
++<U0072> /x72 LATIN SMALL LETTER R
++<U0073> /x73 LATIN SMALL LETTER S
++<U0074> /x74 LATIN SMALL LETTER T
++<U0075> /x75 LATIN SMALL LETTER U
++<U0076> /x76 LATIN SMALL LETTER V
++<U0077> /x77 LATIN SMALL LETTER W
++<U0078> /x78 LATIN SMALL LETTER X
++<U0079> /x79 LATIN SMALL LETTER Y
++<U007A> /x7a LATIN SMALL LETTER Z
++<U007B> /x7b LEFT CURLY BRACKET
++<U007C> /x7c VERTICAL LINE
++<U007D> /x7d RIGHT CURLY BRACKET
++<U007E> /x7e TILDE
++<U007F> /x7f DELETE
++
++<U3000> /x81/x40 IDEOGRAPHIC SPACE
++<U3001> /x81/x41 IDEOGRAPHIC COMMA
++<U3002> /x81/x42 IDEOGRAPHIC FULL STOP
++<UFF0C> /x81/x43 FULLWIDTH COMMA
++<UFF0E> /x81/x44 FULLWIDTH FULL STOP
++<U30FB> /x81/x45 KATAKANA MIDDLE DOT
++<UFF1A> /x81/x46 FULLWIDTH COLON
++<UFF1B> /x81/x47 FULLWIDTH SEMICOLON
++<UFF1F> /x81/x48 FULLWIDTH QUESTION MARK
++<UFF01> /x81/x49 FULLWIDTH EXCLAMATION MARK
++<U309B> /x81/x4a KATAKANA-HIRAGANA VOICED SOUND MARK
++<U309C> /x81/x4b KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
++<U00B4> /x81/x4c ACUTE ACCENT
++<UFF40> /x81/x4d FULLWIDTH GRAVE ACCENT
++<U00A8> /x81/x4e DIAERESIS
++<UFF3E> /x81/x4f FULLWIDTH CIRCUMFLEX ACCENT
++<UFFE3> /x81/x50 FULLWIDTH MACRON
++<UFF3F> /x81/x51 FULLWIDTH LOW LINE
++<U30FD> /x81/x52 KATAKANA ITERATION MARK
++<U30FE> /x81/x53 KATAKANA VOICED ITERATION MARK
++<U309D> /x81/x54 HIRAGANA ITERATION MARK
++<U309E> /x81/x55 HIRAGANA VOICED ITERATION MARK
++<U3003> /x81/x56 DITTO MARK
++<U4EDD> /x81/x57 <CJK>
++<U3005> /x81/x58 IDEOGRAPHIC ITERATION MARK
++<U3006> /x81/x59 IDEOGRAPHIC CLOSING MARK
++<U3007> /x81/x5a IDEOGRAPHIC NUMBER ZERO
++<U30FC> /x81/x5b KATAKANA-HIRAGANA PROLONGED SOUND MARK
++<U2015> /x81/x5c HORIZONTAL BAR
++<U2010> /x81/x5d HYPHEN
++<UFF0F> /x81/x5e FULLWIDTH SOLIDUS
++<UFF3C> /x81/x5f FULLWIDTH REVERSE SOLIDUS
++<UFF5E> /x81/x60 FULLWIDTH TILDE
++<U2225> /x81/x61 PARALLEL TO
++<UFF5C> /x81/x62 FULLWIDTH VERTICAL LINE
++<U2026> /x81/x63 HORIZONTAL ELLIPSIS
++<U2025> /x81/x64 TWO DOT LEADER
++<U2018> /x81/x65 LEFT SINGLE QUOTATION MARK
++<U2019> /x81/x66 RIGHT SINGLE QUOTATION MARK
++<U201C> /x81/x67 LEFT DOUBLE QUOTATION MARK
++<U201D> /x81/x68 RIGHT DOUBLE QUOTATION MARK
++<UFF08> /x81/x69 FULLWIDTH LEFT PARENTHESIS
++<UFF09> /x81/x6a FULLWIDTH RIGHT PARENTHESIS
++<U3014> /x81/x6b LEFT TORTOISE SHELL BRACKET
++<U3015> /x81/x6c RIGHT TORTOISE SHELL BRACKET
++<UFF3B> /x81/x6d FULLWIDTH LEFT SQUARE BRACKET
++<UFF3D> /x81/x6e FULLWIDTH RIGHT SQUARE BRACKET
++<UFF5B> /x81/x6f FULLWIDTH LEFT CURLY BRACKET
++<UFF5D> /x81/x70 FULLWIDTH RIGHT CURLY BRACKET
++<U3008> /x81/x71 LEFT ANGLE BRACKET
++<U3009> /x81/x72 RIGHT ANGLE BRACKET
++<U300A> /x81/x73 LEFT DOUBLE ANGLE BRACKET
++<U300B> /x81/x74 RIGHT DOUBLE ANGLE BRACKET
++<U300C> /x81/x75 LEFT CORNER BRACKET
++<U300D> /x81/x76 RIGHT CORNER BRACKET
++<U300E> /x81/x77 LEFT WHITE CORNER BRACKET
++<U300F> /x81/x78 RIGHT WHITE CORNER BRACKET
++<U3010> /x81/x79 LEFT BLACK LENTICULAR BRACKET
++<U3011> /x81/x7a RIGHT BLACK LENTICULAR BRACKET
++<UFF0B> /x81/x7b FULLWIDTH PLUS SIGN
++<UFF0D> /x81/x7c FULLWIDTH HYPHEN-MINUS
++<U00B1> /x81/x7d PLUS-MINUS SIGN
++<U00D7> /x81/x7e MULTIPLICATION SIGN
++<U00F7> /x81/x80 DIVISION SIGN
++<UFF1D> /x81/x81 FULLWIDTH EQUALS SIGN
++<U2260> /x81/x82 NOT EQUAL TO
++<UFF1C> /x81/x83 FULLWIDTH LESS-THAN SIGN
++<UFF1E> /x81/x84 FULLWIDTH GREATER-THAN SIGN
++<U2266> /x81/x85 LESS-THAN OVER EQUAL TO
++<U2267> /x81/x86 GREATER-THAN OVER EQUAL TO
++<U221E> /x81/x87 INFINITY
++<U2234> /x81/x88 THEREFORE
++<U2642> /x81/x89 MALE SIGN
++<U2640> /x81/x8a FEMALE SIGN
++<U00B0> /x81/x8b DEGREE SIGN
++<U2032> /x81/x8c PRIME
++<U2033> /x81/x8d DOUBLE PRIME
++<U2103> /x81/x8e DEGREE CELSIUS
++<UFFE5> /x81/x8f FULLWIDTH YEN SIGN
++<UFF04> /x81/x90 FULLWIDTH DOLLAR SIGN
++<UFFE0> /x81/x91 FULLWIDTH CENT SIGN
++<UFFE1> /x81/x92 FULLWIDTH POUND SIGN
++<UFF05> /x81/x93 FULLWIDTH PERCENT SIGN
++<UFF03> /x81/x94 FULLWIDTH NUMBER SIGN
++<UFF06> /x81/x95 FULLWIDTH AMPERSAND
++<UFF0A> /x81/x96 FULLWIDTH ASTERISK
++<UFF20> /x81/x97 FULLWIDTH COMMERCIAL AT
++<U00A7> /x81/x98 SECTION SIGN
++<U2606> /x81/x99 WHITE STAR
++<U2605> /x81/x9a BLACK STAR
++<U25CB> /x81/x9b WHITE CIRCLE
++<U25CF> /x81/x9c BLACK CIRCLE
++<U25CE> /x81/x9d BULLSEYE
++<U25C7> /x81/x9e WHITE DIAMOND
++<U25C6> /x81/x9f BLACK DIAMOND
++<U25A1> /x81/xa0 WHITE SQUARE
++<U25A0> /x81/xa1 BLACK SQUARE
++<U25B3> /x81/xa2 WHITE UP-POINTING TRIANGLE
++<U25B2> /x81/xa3 BLACK UP-POINTING TRIANGLE
++<U25BD> /x81/xa4 WHITE DOWN-POINTING TRIANGLE
++<U25BC> /x81/xa5 BLACK DOWN-POINTING TRIANGLE
++<U203B> /x81/xa6 REFERENCE MARK
++<U3012> /x81/xa7 POSTAL MARK
++<U2192> /x81/xa8 RIGHTWARDS ARROW
++<U2190> /x81/xa9 LEFTWARDS ARROW
++<U2191> /x81/xaa UPWARDS ARROW
++<U2193> /x81/xab DOWNWARDS ARROW
++<U3013> /x81/xac GETA MARK
++<U2208> /x81/xb8 ELEMENT OF
++<U220B> /x81/xb9 CONTAINS AS MEMBER
++<U2286> /x81/xba SUBSET OF OR EQUAL TO
++<U2287> /x81/xbb SUPERSET OF OR EQUAL TO
++<U2282> /x81/xbc SUBSET OF
++<U2283> /x81/xbd SUPERSET OF
++<U222A> /x81/xbe UNION
++<U2229> /x81/xbf INTERSECTION
++<U2227> /x81/xc8 LOGICAL AND
++<U2228> /x81/xc9 LOGICAL OR
++<UFFE2> /x81/xca FULLWIDTH NOT SIGN
++<U21D2> /x81/xcb RIGHTWARDS DOUBLE ARROW
++<U21D4> /x81/xcc LEFT RIGHT DOUBLE ARROW
++<U2200> /x81/xcd FOR ALL
++<U2203> /x81/xce THERE EXISTS
++<U2220> /x81/xda ANGLE
++<U22A5> /x81/xdb UP TACK
++<U2312> /x81/xdc ARC
++<U2202> /x81/xdd PARTIAL DIFFERENTIAL
++<U2207> /x81/xde NABLA
++<U2261> /x81/xdf IDENTICAL TO
++<U2252> /x81/xe0 APPROXIMATELY EQUAL TO OR THE IMAGE OF
++<U226A> /x81/xe1 MUCH LESS-THAN
++<U226B> /x81/xe2 MUCH GREATER-THAN
++<U221A> /x81/xe3 SQUARE ROOT
++<U223D> /x81/xe4 REVERSED TILDE
++<U221D> /x81/xe5 PROPORTIONAL TO
++<U2235> /x81/xe6 BECAUSE
++<U222B> /x81/xe7 INTEGRAL
++<U222C> /x81/xe8 DOUBLE INTEGRAL
++<U212B> /x81/xf0 ANGSTROM SIGN
++<U2030> /x81/xf1 PER MILLE SIGN
++<U266F> /x81/xf2 MUSIC SHARP SIGN
++<U266D> /x81/xf3 MUSIC FLAT SIGN
++<U266A> /x81/xf4 EIGHTH NOTE
++<U2020> /x81/xf5 DAGGER
++<U2021> /x81/xf6 DOUBLE DAGGER
++<U00B6> /x81/xf7 PILCROW SIGN
++<U25EF> /x81/xfc LARGE CIRCLE
++<UFF10> /x82/x4f FULLWIDTH DIGIT ZERO
++<UFF11> /x82/x50 FULLWIDTH DIGIT ONE
++<UFF12> /x82/x51 FULLWIDTH DIGIT TWO
++<UFF13> /x82/x52 FULLWIDTH DIGIT THREE
++<UFF14> /x82/x53 FULLWIDTH DIGIT FOUR
++<UFF15> /x82/x54 FULLWIDTH DIGIT FIVE
++<UFF16> /x82/x55 FULLWIDTH DIGIT SIX
++<UFF17> /x82/x56 FULLWIDTH DIGIT SEVEN
++<UFF18> /x82/x57 FULLWIDTH DIGIT EIGHT
++<UFF19> /x82/x58 FULLWIDTH DIGIT NINE
++<UFF21> /x82/x60 FULLWIDTH LATIN CAPITAL LETTER A
++<UFF22> /x82/x61 FULLWIDTH LATIN CAPITAL LETTER B
++<UFF23> /x82/x62 FULLWIDTH LATIN CAPITAL LETTER C
++<UFF24> /x82/x63 FULLWIDTH LATIN CAPITAL LETTER D
++<UFF25> /x82/x64 FULLWIDTH LATIN CAPITAL LETTER E
++<UFF26> /x82/x65 FULLWIDTH LATIN CAPITAL LETTER F
++<UFF27> /x82/x66 FULLWIDTH LATIN CAPITAL LETTER G
++<UFF28> /x82/x67 FULLWIDTH LATIN CAPITAL LETTER H
++<UFF29> /x82/x68 FULLWIDTH LATIN CAPITAL LETTER I
++<UFF2A> /x82/x69 FULLWIDTH LATIN CAPITAL LETTER J
++<UFF2B> /x82/x6a FULLWIDTH LATIN CAPITAL LETTER K
++<UFF2C> /x82/x6b FULLWIDTH LATIN CAPITAL LETTER L
++<UFF2D> /x82/x6c FULLWIDTH LATIN CAPITAL LETTER M
++<UFF2E> /x82/x6d FULLWIDTH LATIN CAPITAL LETTER N
++<UFF2F> /x82/x6e FULLWIDTH LATIN CAPITAL LETTER O
++<UFF30> /x82/x6f FULLWIDTH LATIN CAPITAL LETTER P
++<UFF31> /x82/x70 FULLWIDTH LATIN CAPITAL LETTER Q
++<UFF32> /x82/x71 FULLWIDTH LATIN CAPITAL LETTER R
++<UFF33> /x82/x72 FULLWIDTH LATIN CAPITAL LETTER S
++<UFF34> /x82/x73 FULLWIDTH LATIN CAPITAL LETTER T
++<UFF35> /x82/x74 FULLWIDTH LATIN CAPITAL LETTER U
++<UFF36> /x82/x75 FULLWIDTH LATIN CAPITAL LETTER V
++<UFF37> /x82/x76 FULLWIDTH LATIN CAPITAL LETTER W
++<UFF38> /x82/x77 FULLWIDTH LATIN CAPITAL LETTER X
++<UFF39> /x82/x78 FULLWIDTH LATIN CAPITAL LETTER Y
++<UFF3A> /x82/x79 FULLWIDTH LATIN CAPITAL LETTER Z
++<UFF41> /x82/x81 FULLWIDTH LATIN SMALL LETTER A
++<UFF42> /x82/x82 FULLWIDTH LATIN SMALL LETTER B
++<UFF43> /x82/x83 FULLWIDTH LATIN SMALL LETTER C
++<UFF44> /x82/x84 FULLWIDTH LATIN SMALL LETTER D
++<UFF45> /x82/x85 FULLWIDTH LATIN SMALL LETTER E
++<UFF46> /x82/x86 FULLWIDTH LATIN SMALL LETTER F
++<UFF47> /x82/x87 FULLWIDTH LATIN SMALL LETTER G
++<UFF48> /x82/x88 FULLWIDTH LATIN SMALL LETTER H
++<UFF49> /x82/x89 FULLWIDTH LATIN SMALL LETTER I
++<UFF4A> /x82/x8a FULLWIDTH LATIN SMALL LETTER J
++<UFF4B> /x82/x8b FULLWIDTH LATIN SMALL LETTER K
++<UFF4C> /x82/x8c FULLWIDTH LATIN SMALL LETTER L
++<UFF4D> /x82/x8d FULLWIDTH LATIN SMALL LETTER M
++<UFF4E> /x82/x8e FULLWIDTH LATIN SMALL LETTER N
++<UFF4F> /x82/x8f FULLWIDTH LATIN SMALL LETTER O
++<UFF50> /x82/x90 FULLWIDTH LATIN SMALL LETTER P
++<UFF51> /x82/x91 FULLWIDTH LATIN SMALL LETTER Q
++<UFF52> /x82/x92 FULLWIDTH LATIN SMALL LETTER R
++<UFF53> /x82/x93 FULLWIDTH LATIN SMALL LETTER S
++<UFF54> /x82/x94 FULLWIDTH LATIN SMALL LETTER T
++<UFF55> /x82/x95 FULLWIDTH LATIN SMALL LETTER U
++<UFF56> /x82/x96 FULLWIDTH LATIN SMALL LETTER V
++<UFF57> /x82/x97 FULLWIDTH LATIN SMALL LETTER W
++<UFF58> /x82/x98 FULLWIDTH LATIN SMALL LETTER X
++<UFF59> /x82/x99 FULLWIDTH LATIN SMALL LETTER Y
++<UFF5A> /x82/x9a FULLWIDTH LATIN SMALL LETTER Z
++<U3041> /x82/x9f HIRAGANA LETTER SMALL A
++<U3042> /x82/xa0 HIRAGANA LETTER A
++<U3043> /x82/xa1 HIRAGANA LETTER SMALL I
++<U3044> /x82/xa2 HIRAGANA LETTER I
++<U3045> /x82/xa3 HIRAGANA LETTER SMALL U
++<U3046> /x82/xa4 HIRAGANA LETTER U
++<U3047> /x82/xa5 HIRAGANA LETTER SMALL E
++<U3048> /x82/xa6 HIRAGANA LETTER E
++<U3049> /x82/xa7 HIRAGANA LETTER SMALL O
++<U304A> /x82/xa8 HIRAGANA LETTER O
++<U304B> /x82/xa9 HIRAGANA LETTER KA
++<U304C> /x82/xaa HIRAGANA LETTER GA
++<U304D> /x82/xab HIRAGANA LETTER KI
++<U304E> /x82/xac HIRAGANA LETTER GI
++<U304F> /x82/xad HIRAGANA LETTER KU
++<U3050> /x82/xae HIRAGANA LETTER GU
++<U3051> /x82/xaf HIRAGANA LETTER KE
++<U3052> /x82/xb0 HIRAGANA LETTER GE
++<U3053> /x82/xb1 HIRAGANA LETTER KO
++<U3054> /x82/xb2 HIRAGANA LETTER GO
++<U3055> /x82/xb3 HIRAGANA LETTER SA
++<U3056> /x82/xb4 HIRAGANA LETTER ZA
++<U3057> /x82/xb5 HIRAGANA LETTER SI
++<U3058> /x82/xb6 HIRAGANA LETTER ZI
++<U3059> /x82/xb7 HIRAGANA LETTER SU
++<U305A> /x82/xb8 HIRAGANA LETTER ZU
++<U305B> /x82/xb9 HIRAGANA LETTER SE
++<U305C> /x82/xba HIRAGANA LETTER ZE
++<U305D> /x82/xbb HIRAGANA LETTER SO
++<U305E> /x82/xbc HIRAGANA LETTER ZO
++<U305F> /x82/xbd HIRAGANA LETTER TA
++<U3060> /x82/xbe HIRAGANA LETTER DA
++<U3061> /x82/xbf HIRAGANA LETTER TI
++<U3062> /x82/xc0 HIRAGANA LETTER DI
++<U3063> /x82/xc1 HIRAGANA LETTER SMALL TU
++<U3064> /x82/xc2 HIRAGANA LETTER TU
++<U3065> /x82/xc3 HIRAGANA LETTER DU
++<U3066> /x82/xc4 HIRAGANA LETTER TE
++<U3067> /x82/xc5 HIRAGANA LETTER DE
++<U3068> /x82/xc6 HIRAGANA LETTER TO
++<U3069> /x82/xc7 HIRAGANA LETTER DO
++<U306A> /x82/xc8 HIRAGANA LETTER NA
++<U306B> /x82/xc9 HIRAGANA LETTER NI
++<U306C> /x82/xca HIRAGANA LETTER NU
++<U306D> /x82/xcb HIRAGANA LETTER NE
++<U306E> /x82/xcc HIRAGANA LETTER NO
++<U306F> /x82/xcd HIRAGANA LETTER HA
++<U3070> /x82/xce HIRAGANA LETTER BA
++<U3071> /x82/xcf HIRAGANA LETTER PA
++<U3072> /x82/xd0 HIRAGANA LETTER HI
++<U3073> /x82/xd1 HIRAGANA LETTER BI
++<U3074> /x82/xd2 HIRAGANA LETTER PI
++<U3075> /x82/xd3 HIRAGANA LETTER HU
++<U3076> /x82/xd4 HIRAGANA LETTER BU
++<U3077> /x82/xd5 HIRAGANA LETTER PU
++<U3078> /x82/xd6 HIRAGANA LETTER HE
++<U3079> /x82/xd7 HIRAGANA LETTER BE
++<U307A> /x82/xd8 HIRAGANA LETTER PE
++<U307B> /x82/xd9 HIRAGANA LETTER HO
++<U307C> /x82/xda HIRAGANA LETTER BO
++<U307D> /x82/xdb HIRAGANA LETTER PO
++<U307E> /x82/xdc HIRAGANA LETTER MA
++<U307F> /x82/xdd HIRAGANA LETTER MI
++<U3080> /x82/xde HIRAGANA LETTER MU
++<U3081> /x82/xdf HIRAGANA LETTER ME
++<U3082> /x82/xe0 HIRAGANA LETTER MO
++<U3083> /x82/xe1 HIRAGANA LETTER SMALL YA
++<U3084> /x82/xe2 HIRAGANA LETTER YA
++<U3085> /x82/xe3 HIRAGANA LETTER SMALL YU
++<U3086> /x82/xe4 HIRAGANA LETTER YU
++<U3087> /x82/xe5 HIRAGANA LETTER SMALL YO
++<U3088> /x82/xe6 HIRAGANA LETTER YO
++<U3089> /x82/xe7 HIRAGANA LETTER RA
++<U308A> /x82/xe8 HIRAGANA LETTER RI
++<U308B> /x82/xe9 HIRAGANA LETTER RU
++<U308C> /x82/xea HIRAGANA LETTER RE
++<U308D> /x82/xeb HIRAGANA LETTER RO
++<U308E> /x82/xec HIRAGANA LETTER SMALL WA
++<U308F> /x82/xed HIRAGANA LETTER WA
++<U3090> /x82/xee HIRAGANA LETTER WI
++<U3091> /x82/xef HIRAGANA LETTER WE
++<U3092> /x82/xf0 HIRAGANA LETTER WO
++<U3093> /x82/xf1 HIRAGANA LETTER N
++<U30A1> /x83/x40 KATAKANA LETTER SMALL A
++<U30A2> /x83/x41 KATAKANA LETTER A
++<U30A3> /x83/x42 KATAKANA LETTER SMALL I
++<U30A4> /x83/x43 KATAKANA LETTER I
++<U30A5> /x83/x44 KATAKANA LETTER SMALL U
++<U30A6> /x83/x45 KATAKANA LETTER U
++<U30A7> /x83/x46 KATAKANA LETTER SMALL E
++<U30A8> /x83/x47 KATAKANA LETTER E
++<U30A9> /x83/x48 KATAKANA LETTER SMALL O
++<U30AA> /x83/x49 KATAKANA LETTER O
++<U30AB> /x83/x4a KATAKANA LETTER KA
++<U30AC> /x83/x4b KATAKANA LETTER GA
++<U30AD> /x83/x4c KATAKANA LETTER KI
++<U30AE> /x83/x4d KATAKANA LETTER GI
++<U30AF> /x83/x4e KATAKANA LETTER KU
++<U30B0> /x83/x4f KATAKANA LETTER GU
++<U30B1> /x83/x50 KATAKANA LETTER KE
++<U30B2> /x83/x51 KATAKANA LETTER GE
++<U30B3> /x83/x52 KATAKANA LETTER KO
++<U30B4> /x83/x53 KATAKANA LETTER GO
++<U30B5> /x83/x54 KATAKANA LETTER SA
++<U30B6> /x83/x55 KATAKANA LETTER ZA
++<U30B7> /x83/x56 KATAKANA LETTER SI
++<U30B8> /x83/x57 KATAKANA LETTER ZI
++<U30B9> /x83/x58 KATAKANA LETTER SU
++<U30BA> /x83/x59 KATAKANA LETTER ZU
++<U30BB> /x83/x5a KATAKANA LETTER SE
++<U30BC> /x83/x5b KATAKANA LETTER ZE
++<U30BD> /x83/x5c KATAKANA LETTER SO
++<U30BE> /x83/x5d KATAKANA LETTER ZO
++<U30BF> /x83/x5e KATAKANA LETTER TA
++<U30C0> /x83/x5f KATAKANA LETTER DA
++<U30C1> /x83/x60 KATAKANA LETTER TI
++<U30C2> /x83/x61 KATAKANA LETTER DI
++<U30C3> /x83/x62 KATAKANA LETTER SMALL TU
++<U30C4> /x83/x63 KATAKANA LETTER TU
++<U30C5> /x83/x64 KATAKANA LETTER DU
++<U30C6> /x83/x65 KATAKANA LETTER TE
++<U30C7> /x83/x66 KATAKANA LETTER DE
++<U30C8> /x83/x67 KATAKANA LETTER TO
++<U30C9> /x83/x68 KATAKANA LETTER DO
++<U30CA> /x83/x69 KATAKANA LETTER NA
++<U30CB> /x83/x6a KATAKANA LETTER NI
++<U30CC> /x83/x6b KATAKANA LETTER NU
++<U30CD> /x83/x6c KATAKANA LETTER NE
++<U30CE> /x83/x6d KATAKANA LETTER NO
++<U30CF> /x83/x6e KATAKANA LETTER HA
++<U30D0> /x83/x6f KATAKANA LETTER BA
++<U30D1> /x83/x70 KATAKANA LETTER PA
++<U30D2> /x83/x71 KATAKANA LETTER HI
++<U30D3> /x83/x72 KATAKANA LETTER BI
++<U30D4> /x83/x73 KATAKANA LETTER PI
++<U30D5> /x83/x74 KATAKANA LETTER HU
++<U30D6> /x83/x75 KATAKANA LETTER BU
++<U30D7> /x83/x76 KATAKANA LETTER PU
++<U30D8> /x83/x77 KATAKANA LETTER HE
++<U30D9> /x83/x78 KATAKANA LETTER BE
++<U30DA> /x83/x79 KATAKANA LETTER PE
++<U30DB> /x83/x7a KATAKANA LETTER HO
++<U30DC> /x83/x7b KATAKANA LETTER BO
++<U30DD> /x83/x7c KATAKANA LETTER PO
++<U30DE> /x83/x7d KATAKANA LETTER MA
++<U30DF> /x83/x7e KATAKANA LETTER MI
++<U30E0> /x83/x80 KATAKANA LETTER MU
++<U30E1> /x83/x81 KATAKANA LETTER ME
++<U30E2> /x83/x82 KATAKANA LETTER MO
++<U30E3> /x83/x83 KATAKANA LETTER SMALL YA
++<U30E4> /x83/x84 KATAKANA LETTER YA
++<U30E5> /x83/x85 KATAKANA LETTER SMALL YU
++<U30E6> /x83/x86 KATAKANA LETTER YU
++<U30E7> /x83/x87 KATAKANA LETTER SMALL YO
++<U30E8> /x83/x88 KATAKANA LETTER YO
++<U30E9> /x83/x89 KATAKANA LETTER RA
++<U30EA> /x83/x8a KATAKANA LETTER RI
++<U30EB> /x83/x8b KATAKANA LETTER RU
++<U30EC> /x83/x8c KATAKANA LETTER RE
++<U30ED> /x83/x8d KATAKANA LETTER RO
++<U30EE> /x83/x8e KATAKANA LETTER SMALL WA
++<U30EF> /x83/x8f KATAKANA LETTER WA
++<U30F0> /x83/x90 KATAKANA LETTER WI
++<U30F1> /x83/x91 KATAKANA LETTER WE
++<U30F2> /x83/x92 KATAKANA LETTER WO
++<U30F3> /x83/x93 KATAKANA LETTER N
++<U30F4> /x83/x94 KATAKANA LETTER VU
++<U30F5> /x83/x95 KATAKANA LETTER SMALL KA
++<U30F6> /x83/x96 KATAKANA LETTER SMALL KE
++<U0391> /x83/x9f GREEK CAPITAL LETTER ALPHA
++<U0392> /x83/xa0 GREEK CAPITAL LETTER BETA
++<U0393> /x83/xa1 GREEK CAPITAL LETTER GAMMA
++<U0394> /x83/xa2 GREEK CAPITAL LETTER DELTA
++<U0395> /x83/xa3 GREEK CAPITAL LETTER EPSILON
++<U0396> /x83/xa4 GREEK CAPITAL LETTER ZETA
++<U0397> /x83/xa5 GREEK CAPITAL LETTER ETA
++<U0398> /x83/xa6 GREEK CAPITAL LETTER THETA
++<U0399> /x83/xa7 GREEK CAPITAL LETTER IOTA
++<U039A> /x83/xa8 GREEK CAPITAL LETTER KAPPA
++<U039B> /x83/xa9 GREEK CAPITAL LETTER LAMDA
++<U039C> /x83/xaa GREEK CAPITAL LETTER MU
++<U039D> /x83/xab GREEK CAPITAL LETTER NU
++<U039E> /x83/xac GREEK CAPITAL LETTER XI
++<U039F> /x83/xad GREEK CAPITAL LETTER OMICRON
++<U03A0> /x83/xae GREEK CAPITAL LETTER PI
++<U03A1> /x83/xaf GREEK CAPITAL LETTER RHO
++<U03A3> /x83/xb0 GREEK CAPITAL LETTER SIGMA
++<U03A4> /x83/xb1 GREEK CAPITAL LETTER TAU
++<U03A5> /x83/xb2 GREEK CAPITAL LETTER UPSILON
++<U03A6> /x83/xb3 GREEK CAPITAL LETTER PHI
++<U03A7> /x83/xb4 GREEK CAPITAL LETTER CHI
++<U03A8> /x83/xb5 GREEK CAPITAL LETTER PSI
++<U03A9> /x83/xb6 GREEK CAPITAL LETTER OMEGA
++<U03B1> /x83/xbf GREEK SMALL LETTER ALPHA
++<U03B2> /x83/xc0 GREEK SMALL LETTER BETA
++<U03B3> /x83/xc1 GREEK SMALL LETTER GAMMA
++<U03B4> /x83/xc2 GREEK SMALL LETTER DELTA
++<U03B5> /x83/xc3 GREEK SMALL LETTER EPSILON
++<U03B6> /x83/xc4 GREEK SMALL LETTER ZETA
++<U03B7> /x83/xc5 GREEK SMALL LETTER ETA
++<U03B8> /x83/xc6 GREEK SMALL LETTER THETA
++<U03B9> /x83/xc7 GREEK SMALL LETTER IOTA
++<U03BA> /x83/xc8 GREEK SMALL LETTER KAPPA
++<U03BB> /x83/xc9 GREEK SMALL LETTER LAMDA
++<U03BC> /x83/xca GREEK SMALL LETTER MU
++<U03BD> /x83/xcb GREEK SMALL LETTER NU
++<U03BE> /x83/xcc GREEK SMALL LETTER XI
++<U03BF> /x83/xcd GREEK SMALL LETTER OMICRON
++<U03C0> /x83/xce GREEK SMALL LETTER PI
++<U03C1> /x83/xcf GREEK SMALL LETTER RHO
++<U03C3> /x83/xd0 GREEK SMALL LETTER SIGMA
++<U03C4> /x83/xd1 GREEK SMALL LETTER TAU
++<U03C5> /x83/xd2 GREEK SMALL LETTER UPSILON
++<U03C6> /x83/xd3 GREEK SMALL LETTER PHI
++<U03C7> /x83/xd4 GREEK SMALL LETTER CHI
++<U03C8> /x83/xd5 GREEK SMALL LETTER PSI
++<U03C9> /x83/xd6 GREEK SMALL LETTER OMEGA
++<U0410> /x84/x40 CYRILLIC CAPITAL LETTER A
++<U0411> /x84/x41 CYRILLIC CAPITAL LETTER BE
++<U0412> /x84/x42 CYRILLIC CAPITAL LETTER VE
++<U0413> /x84/x43 CYRILLIC CAPITAL LETTER GHE
++<U0414> /x84/x44 CYRILLIC CAPITAL LETTER DE
++<U0415> /x84/x45 CYRILLIC CAPITAL LETTER IE
++<U0401> /x84/x46 CYRILLIC CAPITAL LETTER IO
++<U0416> /x84/x47 CYRILLIC CAPITAL LETTER ZHE
++<U0417> /x84/x48 CYRILLIC CAPITAL LETTER ZE
++<U0418> /x84/x49 CYRILLIC CAPITAL LETTER I
++<U0419> /x84/x4a CYRILLIC CAPITAL LETTER SHORT I
++<U041A> /x84/x4b CYRILLIC CAPITAL LETTER KA
++<U041B> /x84/x4c CYRILLIC CAPITAL LETTER EL
++<U041C> /x84/x4d CYRILLIC CAPITAL LETTER EM
++<U041D> /x84/x4e CYRILLIC CAPITAL LETTER EN
++<U041E> /x84/x4f CYRILLIC CAPITAL LETTER O
++<U041F> /x84/x50 CYRILLIC CAPITAL LETTER PE
++<U0420> /x84/x51 CYRILLIC CAPITAL LETTER ER
++<U0421> /x84/x52 CYRILLIC CAPITAL LETTER ES
++<U0422> /x84/x53 CYRILLIC CAPITAL LETTER TE
++<U0423> /x84/x54 CYRILLIC CAPITAL LETTER U
++<U0424> /x84/x55 CYRILLIC CAPITAL LETTER EF
++<U0425> /x84/x56 CYRILLIC CAPITAL LETTER HA
++<U0426> /x84/x57 CYRILLIC CAPITAL LETTER TSE
++<U0427> /x84/x58 CYRILLIC CAPITAL LETTER CHE
++<U0428> /x84/x59 CYRILLIC CAPITAL LETTER SHA
++<U0429> /x84/x5a CYRILLIC CAPITAL LETTER SHCHA
++<U042A> /x84/x5b CYRILLIC CAPITAL LETTER HARD SIGN
++<U042B> /x84/x5c CYRILLIC CAPITAL LETTER YERU
++<U042C> /x84/x5d CYRILLIC CAPITAL LETTER SOFT SIGN
++<U042D> /x84/x5e CYRILLIC CAPITAL LETTER E
++<U042E> /x84/x5f CYRILLIC CAPITAL LETTER YU
++<U042F> /x84/x60 CYRILLIC CAPITAL LETTER YA
++<U0430> /x84/x70 CYRILLIC SMALL LETTER A
++<U0431> /x84/x71 CYRILLIC SMALL LETTER BE
++<U0432> /x84/x72 CYRILLIC SMALL LETTER VE
++<U0433> /x84/x73 CYRILLIC SMALL LETTER GHE
++<U0434> /x84/x74 CYRILLIC SMALL LETTER DE
++<U0435> /x84/x75 CYRILLIC SMALL LETTER IE
++<U0451> /x84/x76 CYRILLIC SMALL LETTER IO
++<U0436> /x84/x77 CYRILLIC SMALL LETTER ZHE
++<U0437> /x84/x78 CYRILLIC SMALL LETTER ZE
++<U0438> /x84/x79 CYRILLIC SMALL LETTER I
++<U0439> /x84/x7a CYRILLIC SMALL LETTER SHORT I
++<U043A> /x84/x7b CYRILLIC SMALL LETTER KA
++<U043B> /x84/x7c CYRILLIC SMALL LETTER EL
++<U043C> /x84/x7d CYRILLIC SMALL LETTER EM
++<U043D> /x84/x7e CYRILLIC SMALL LETTER EN
++<U043E> /x84/x80 CYRILLIC SMALL LETTER O
++<U043F> /x84/x81 CYRILLIC SMALL LETTER PE
++<U0440> /x84/x82 CYRILLIC SMALL LETTER ER
++<U0441> /x84/x83 CYRILLIC SMALL LETTER ES
++<U0442> /x84/x84 CYRILLIC SMALL LETTER TE
++<U0443> /x84/x85 CYRILLIC SMALL LETTER U
++<U0444> /x84/x86 CYRILLIC SMALL LETTER EF
++<U0445> /x84/x87 CYRILLIC SMALL LETTER HA
++<U0446> /x84/x88 CYRILLIC SMALL LETTER TSE
++<U0447> /x84/x89 CYRILLIC SMALL LETTER CHE
++<U0448> /x84/x8a CYRILLIC SMALL LETTER SHA
++<U0449> /x84/x8b CYRILLIC SMALL LETTER SHCHA
++<U044A> /x84/x8c CYRILLIC SMALL LETTER HARD SIGN
++<U044B> /x84/x8d CYRILLIC SMALL LETTER YERU
++<U044C> /x84/x8e CYRILLIC SMALL LETTER SOFT SIGN
++<U044D> /x84/x8f CYRILLIC SMALL LETTER E
++<U044E> /x84/x90 CYRILLIC SMALL LETTER YU
++<U044F> /x84/x91 CYRILLIC SMALL LETTER YA
++<U2500> /x84/x9f BOX DRAWINGS LIGHT HORIZONTAL
++<U2502> /x84/xa0 BOX DRAWINGS LIGHT VERTICAL
++<U250C> /x84/xa1 BOX DRAWINGS LIGHT DOWN AND RIGHT
++<U2510> /x84/xa2 BOX DRAWINGS LIGHT DOWN AND LEFT
++<U2518> /x84/xa3 BOX DRAWINGS LIGHT UP AND LEFT
++<U2514> /x84/xa4 BOX DRAWINGS LIGHT UP AND RIGHT
++<U251C> /x84/xa5 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
++<U252C> /x84/xa6 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
++<U2524> /x84/xa7 BOX DRAWINGS LIGHT VERTICAL AND LEFT
++<U2534> /x84/xa8 BOX DRAWINGS LIGHT UP AND HORIZONTAL
++<U253C> /x84/xa9 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
++<U2501> /x84/xaa BOX DRAWINGS HEAVY HORIZONTAL
++<U2503> /x84/xab BOX DRAWINGS HEAVY VERTICAL
++<U250F> /x84/xac BOX DRAWINGS HEAVY DOWN AND RIGHT
++<U2513> /x84/xad BOX DRAWINGS HEAVY DOWN AND LEFT
++<U251B> /x84/xae BOX DRAWINGS HEAVY UP AND LEFT
++<U2517> /x84/xaf BOX DRAWINGS HEAVY UP AND RIGHT
++<U2523> /x84/xb0 BOX DRAWINGS HEAVY VERTICAL AND RIGHT
++<U2533> /x84/xb1 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
++<U252B> /x84/xb2 BOX DRAWINGS HEAVY VERTICAL AND LEFT
++<U253B> /x84/xb3 BOX DRAWINGS HEAVY UP AND HORIZONTAL
++<U254B> /x84/xb4 BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
++<U2520> /x84/xb5 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
++<U252F> /x84/xb6 BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
++<U2528> /x84/xb7 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
++<U2537> /x84/xb8 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
++<U253F> /x84/xb9 BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
++<U251D> /x84/xba BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
++<U2530> /x84/xbb BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
++<U2525> /x84/xbc BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
++<U2538> /x84/xbd BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
++<U2542> /x84/xbe BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
++<U2460> /x87/x40 CIRCLED DIGIT ONE
++<U2461> /x87/x41 CIRCLED DIGIT TWO
++<U2462> /x87/x42 CIRCLED DIGIT THREE
++<U2463> /x87/x43 CIRCLED DIGIT FOUR
++<U2464> /x87/x44 CIRCLED DIGIT FIVE
++<U2465> /x87/x45 CIRCLED DIGIT SIX
++<U2466> /x87/x46 CIRCLED DIGIT SEVEN
++<U2467> /x87/x47 CIRCLED DIGIT EIGHT
++<U2468> /x87/x48 CIRCLED DIGIT NINE
++<U2469> /x87/x49 CIRCLED NUMBER TEN
++<U246A> /x87/x4a CIRCLED NUMBER ELEVEN
++<U246B> /x87/x4b CIRCLED NUMBER TWELVE
++<U246C> /x87/x4c CIRCLED NUMBER THIRTEEN
++<U246D> /x87/x4d CIRCLED NUMBER FOURTEEN
++<U246E> /x87/x4e CIRCLED NUMBER FIFTEEN
++<U246F> /x87/x4f CIRCLED NUMBER SIXTEEN
++<U2470> /x87/x50 CIRCLED NUMBER SEVENTEEN
++<U2471> /x87/x51 CIRCLED NUMBER EIGHTEEN
++<U2472> /x87/x52 CIRCLED NUMBER NINETEEN
++<U2473> /x87/x53 CIRCLED NUMBER TWENTY
++<U2160> /x87/x54 ROMAN NUMERAL ONE
++<U2161> /x87/x55 ROMAN NUMERAL TWO
++<U2162> /x87/x56 ROMAN NUMERAL THREE
++<U2163> /x87/x57 ROMAN NUMERAL FOUR
++<U2164> /x87/x58 ROMAN NUMERAL FIVE
++<U2165> /x87/x59 ROMAN NUMERAL SIX
++<U2166> /x87/x5a ROMAN NUMERAL SEVEN
++<U2167> /x87/x5b ROMAN NUMERAL EIGHT
++<U2168> /x87/x5c ROMAN NUMERAL NINE
++<U2169> /x87/x5d ROMAN NUMERAL TEN
++<U3349> /x87/x5f SQUARE MIRI
++<U3314> /x87/x60 SQUARE KIRO
++<U3322> /x87/x61 SQUARE SENTI
++<U334D> /x87/x62 SQUARE MEETORU
++<U3318> /x87/x63 SQUARE GURAMU
++<U3327> /x87/x64 SQUARE TON
++<U3303> /x87/x65 SQUARE AARU
++<U3336> /x87/x66 SQUARE HEKUTAARU
++<U3351> /x87/x67 SQUARE RITTORU
++<U3357> /x87/x68 SQUARE WATTO
++<U330D> /x87/x69 SQUARE KARORII
++<U3326> /x87/x6a SQUARE DORU
++<U3323> /x87/x6b SQUARE SENTO
++<U332B> /x87/x6c SQUARE PAASENTO
++<U334A> /x87/x6d SQUARE MIRIBAARU
++<U333B> /x87/x6e SQUARE PEEZI
++<U339C> /x87/x6f SQUARE MM
++<U339D> /x87/x70 SQUARE CM
++<U339E> /x87/x71 SQUARE KM
++<U338E> /x87/x72 SQUARE MG
++<U338F> /x87/x73 SQUARE KG
++<U33C4> /x87/x74 SQUARE CC
++<U33A1> /x87/x75 SQUARE M SQUARED
++<U337B> /x87/x7e SQUARE ERA NAME HEISEI
++<U301D> /x87/x80 REVERSED DOUBLE PRIME QUOTATION MARK
++<U301F> /x87/x81 LOW DOUBLE PRIME QUOTATION MARK
++<U2116> /x87/x82 NUMERO SIGN
++<U33CD> /x87/x83 SQUARE KK
++<U2121> /x87/x84 TELEPHONE SIGN
++<U32A4> /x87/x85 CIRCLED IDEOGRAPH HIGH
++<U32A5> /x87/x86 CIRCLED IDEOGRAPH CENTRE
++<U32A6> /x87/x87 CIRCLED IDEOGRAPH LOW
++<U32A7> /x87/x88 CIRCLED IDEOGRAPH LEFT
++<U32A8> /x87/x89 CIRCLED IDEOGRAPH RIGHT
++<U3231> /x87/x8a PARENTHESIZED IDEOGRAPH STOCK
++<U3232> /x87/x8b PARENTHESIZED IDEOGRAPH HAVE
++<U3239> /x87/x8c PARENTHESIZED IDEOGRAPH REPRESENT
++<U337E> /x87/x8d SQUARE ERA NAME MEIZI
++<U337D> /x87/x8e SQUARE ERA NAME TAISYOU
++<U337C> /x87/x8f SQUARE ERA NAME SYOUWA
++%IRREVERSIBLE%<U2252> /x87/x90 APPROXIMATELY EQUAL TO OR THE IMAGE OF
++%IRREVERSIBLE%<U2261> /x87/x91 IDENTICAL TO
++%IRREVERSIBLE%<U222B> /x87/x92 INTEGRAL
++<U222E> /x87/x93 CONTOUR INTEGRAL
++<U2211> /x87/x94 N-ARY SUMMATION
++%IRREVERSIBLE%<U221A> /x87/x95 SQUARE ROOT
++%IRREVERSIBLE%<U22A5> /x87/x96 UP TACK
++%IRREVERSIBLE%<U2220> /x87/x97 ANGLE
++<U221F> /x87/x98 RIGHT ANGLE
++<U22BF> /x87/x99 RIGHT TRIANGLE
++%IRREVERSIBLE%<U2235> /x87/x9a BECAUSE
++%IRREVERSIBLE%<U2229> /x87/x9b INTERSECTION
++%IRREVERSIBLE%<U222A> /x87/x9c UNION
++<U4E9C> /x88/x9f <CJK>
++<U5516> /x88/xa0 <CJK>
++<U5A03> /x88/xa1 <CJK>
++<U963F> /x88/xa2 <CJK>
++<U54C0> /x88/xa3 <CJK>
++<U611B> /x88/xa4 <CJK>
++<U6328> /x88/xa5 <CJK>
++<U59F6> /x88/xa6 <CJK>
++<U9022> /x88/xa7 <CJK>
++<U8475> /x88/xa8 <CJK>
++<U831C> /x88/xa9 <CJK>
++<U7A50> /x88/xaa <CJK>
++<U60AA> /x88/xab <CJK>
++<U63E1> /x88/xac <CJK>
++<U6E25> /x88/xad <CJK>
++<U65ED> /x88/xae <CJK>
++<U8466> /x88/xaf <CJK>
++<U82A6> /x88/xb0 <CJK>
++<U9BF5> /x88/xb1 <CJK>
++<U6893> /x88/xb2 <CJK>
++<U5727> /x88/xb3 <CJK>
++<U65A1> /x88/xb4 <CJK>
++<U6271> /x88/xb5 <CJK>
++<U5B9B> /x88/xb6 <CJK>
++<U59D0> /x88/xb7 <CJK>
++<U867B> /x88/xb8 <CJK>
++<U98F4> /x88/xb9 <CJK>
++<U7D62> /x88/xba <CJK>
++<U7DBE> /x88/xbb <CJK>
++<U9B8E> /x88/xbc <CJK>
++<U6216> /x88/xbd <CJK>
++<U7C9F> /x88/xbe <CJK>
++<U88B7> /x88/xbf <CJK>
++<U5B89> /x88/xc0 <CJK>
++<U5EB5> /x88/xc1 <CJK>
++<U6309> /x88/xc2 <CJK>
++<U6697> /x88/xc3 <CJK>
++<U6848> /x88/xc4 <CJK>
++<U95C7> /x88/xc5 <CJK>
++<U978D> /x88/xc6 <CJK>
++<U674F> /x88/xc7 <CJK>
++<U4EE5> /x88/xc8 <CJK>
++<U4F0A> /x88/xc9 <CJK>
++<U4F4D> /x88/xca <CJK>
++<U4F9D> /x88/xcb <CJK>
++<U5049> /x88/xcc <CJK>
++<U56F2> /x88/xcd <CJK>
++<U5937> /x88/xce <CJK>
++<U59D4> /x88/xcf <CJK>
++<U5A01> /x88/xd0 <CJK>
++<U5C09> /x88/xd1 <CJK>
++<U60DF> /x88/xd2 <CJK>
++<U610F> /x88/xd3 <CJK>
++<U6170> /x88/xd4 <CJK>
++<U6613> /x88/xd5 <CJK>
++<U6905> /x88/xd6 <CJK>
++<U70BA> /x88/xd7 <CJK>
++<U754F> /x88/xd8 <CJK>
++<U7570> /x88/xd9 <CJK>
++<U79FB> /x88/xda <CJK>
++<U7DAD> /x88/xdb <CJK>
++<U7DEF> /x88/xdc <CJK>
++<U80C3> /x88/xdd <CJK>
++<U840E> /x88/xde <CJK>
++<U8863> /x88/xdf <CJK>
++<U8B02> /x88/xe0 <CJK>
++<U9055> /x88/xe1 <CJK>
++<U907A> /x88/xe2 <CJK>
++<U533B> /x88/xe3 <CJK>
++<U4E95> /x88/xe4 <CJK>
++<U4EA5> /x88/xe5 <CJK>
++<U57DF> /x88/xe6 <CJK>
++<U80B2> /x88/xe7 <CJK>
++<U90C1> /x88/xe8 <CJK>
++<U78EF> /x88/xe9 <CJK>
++<U4E00> /x88/xea <CJK>
++<U58F1> /x88/xeb <CJK>
++<U6EA2> /x88/xec <CJK>
++<U9038> /x88/xed <CJK>
++<U7A32> /x88/xee <CJK>
++<U8328> /x88/xef <CJK>
++<U828B> /x88/xf0 <CJK>
++<U9C2F> /x88/xf1 <CJK>
++<U5141> /x88/xf2 <CJK>
++<U5370> /x88/xf3 <CJK>
++<U54BD> /x88/xf4 <CJK>
++<U54E1> /x88/xf5 <CJK>
++<U56E0> /x88/xf6 <CJK>
++<U59FB> /x88/xf7 <CJK>
++<U5F15> /x88/xf8 <CJK>
++<U98F2> /x88/xf9 <CJK>
++<U6DEB> /x88/xfa <CJK>
++<U80E4> /x88/xfb <CJK>
++<U852D> /x88/xfc <CJK>
++<U9662> /x89/x40 <CJK>
++<U9670> /x89/x41 <CJK>
++<U96A0> /x89/x42 <CJK>
++<U97FB> /x89/x43 <CJK>
++<U540B> /x89/x44 <CJK>
++<U53F3> /x89/x45 <CJK>
++<U5B87> /x89/x46 <CJK>
++<U70CF> /x89/x47 <CJK>
++<U7FBD> /x89/x48 <CJK>
++<U8FC2> /x89/x49 <CJK>
++<U96E8> /x89/x4a <CJK>
++<U536F> /x89/x4b <CJK>
++<U9D5C> /x89/x4c <CJK>
++<U7ABA> /x89/x4d <CJK>
++<U4E11> /x89/x4e <CJK>
++<U7893> /x89/x4f <CJK>
++<U81FC> /x89/x50 <CJK>
++<U6E26> /x89/x51 <CJK>
++<U5618> /x89/x52 <CJK>
++<U5504> /x89/x53 <CJK>
++<U6B1D> /x89/x54 <CJK>
++<U851A> /x89/x55 <CJK>
++<U9C3B> /x89/x56 <CJK>
++<U59E5> /x89/x57 <CJK>
++<U53A9> /x89/x58 <CJK>
++<U6D66> /x89/x59 <CJK>
++<U74DC> /x89/x5a <CJK>
++<U958F> /x89/x5b <CJK>
++<U5642> /x89/x5c <CJK>
++<U4E91> /x89/x5d <CJK>
++<U904B> /x89/x5e <CJK>
++<U96F2> /x89/x5f <CJK>
++<U834F> /x89/x60 <CJK>
++<U990C> /x89/x61 <CJK>
++<U53E1> /x89/x62 <CJK>
++<U55B6> /x89/x63 <CJK>
++<U5B30> /x89/x64 <CJK>
++<U5F71> /x89/x65 <CJK>
++<U6620> /x89/x66 <CJK>
++<U66F3> /x89/x67 <CJK>
++<U6804> /x89/x68 <CJK>
++<U6C38> /x89/x69 <CJK>
++<U6CF3> /x89/x6a <CJK>
++<U6D29> /x89/x6b <CJK>
++<U745B> /x89/x6c <CJK>
++<U76C8> /x89/x6d <CJK>
++<U7A4E> /x89/x6e <CJK>
++<U9834> /x89/x6f <CJK>
++<U82F1> /x89/x70 <CJK>
++<U885B> /x89/x71 <CJK>
++<U8A60> /x89/x72 <CJK>
++<U92ED> /x89/x73 <CJK>
++<U6DB2> /x89/x74 <CJK>
++<U75AB> /x89/x75 <CJK>
++<U76CA> /x89/x76 <CJK>
++<U99C5> /x89/x77 <CJK>
++<U60A6> /x89/x78 <CJK>
++<U8B01> /x89/x79 <CJK>
++<U8D8A> /x89/x7a <CJK>
++<U95B2> /x89/x7b <CJK>
++<U698E> /x89/x7c <CJK>
++<U53AD> /x89/x7d <CJK>
++<U5186> /x89/x7e <CJK>
++<U5712> /x89/x80 <CJK>
++<U5830> /x89/x81 <CJK>
++<U5944> /x89/x82 <CJK>
++<U5BB4> /x89/x83 <CJK>
++<U5EF6> /x89/x84 <CJK>
++<U6028> /x89/x85 <CJK>
++<U63A9> /x89/x86 <CJK>
++<U63F4> /x89/x87 <CJK>
++<U6CBF> /x89/x88 <CJK>
++<U6F14> /x89/x89 <CJK>
++<U708E> /x89/x8a <CJK>
++<U7114> /x89/x8b <CJK>
++<U7159> /x89/x8c <CJK>
++<U71D5> /x89/x8d <CJK>
++<U733F> /x89/x8e <CJK>
++<U7E01> /x89/x8f <CJK>
++<U8276> /x89/x90 <CJK>
++<U82D1> /x89/x91 <CJK>
++<U8597> /x89/x92 <CJK>
++<U9060> /x89/x93 <CJK>
++<U925B> /x89/x94 <CJK>
++<U9D1B> /x89/x95 <CJK>
++<U5869> /x89/x96 <CJK>
++<U65BC> /x89/x97 <CJK>
++<U6C5A> /x89/x98 <CJK>
++<U7525> /x89/x99 <CJK>
++<U51F9> /x89/x9a <CJK>
++<U592E> /x89/x9b <CJK>
++<U5965> /x89/x9c <CJK>
++<U5F80> /x89/x9d <CJK>
++<U5FDC> /x89/x9e <CJK>
++<U62BC> /x89/x9f <CJK>
++<U65FA> /x89/xa0 <CJK>
++<U6A2A> /x89/xa1 <CJK>
++<U6B27> /x89/xa2 <CJK>
++<U6BB4> /x89/xa3 <CJK>
++<U738B> /x89/xa4 <CJK>
++<U7FC1> /x89/xa5 <CJK>
++<U8956> /x89/xa6 <CJK>
++<U9D2C> /x89/xa7 <CJK>
++<U9D0E> /x89/xa8 <CJK>
++<U9EC4> /x89/xa9 <CJK>
++<U5CA1> /x89/xaa <CJK>
++<U6C96> /x89/xab <CJK>
++<U837B> /x89/xac <CJK>
++<U5104> /x89/xad <CJK>
++<U5C4B> /x89/xae <CJK>
++<U61B6> /x89/xaf <CJK>
++<U81C6> /x89/xb0 <CJK>
++<U6876> /x89/xb1 <CJK>
++<U7261> /x89/xb2 <CJK>
++<U4E59> /x89/xb3 <CJK>
++<U4FFA> /x89/xb4 <CJK>
++<U5378> /x89/xb5 <CJK>
++<U6069> /x89/xb6 <CJK>
++<U6E29> /x89/xb7 <CJK>
++<U7A4F> /x89/xb8 <CJK>
++<U97F3> /x89/xb9 <CJK>
++<U4E0B> /x89/xba <CJK>
++<U5316> /x89/xbb <CJK>
++<U4EEE> /x89/xbc <CJK>
++<U4F55> /x89/xbd <CJK>
++<U4F3D> /x89/xbe <CJK>
++<U4FA1> /x89/xbf <CJK>
++<U4F73> /x89/xc0 <CJK>
++<U52A0> /x89/xc1 <CJK>
++<U53EF> /x89/xc2 <CJK>
++<U5609> /x89/xc3 <CJK>
++<U590F> /x89/xc4 <CJK>
++<U5AC1> /x89/xc5 <CJK>
++<U5BB6> /x89/xc6 <CJK>
++<U5BE1> /x89/xc7 <CJK>
++<U79D1> /x89/xc8 <CJK>
++<U6687> /x89/xc9 <CJK>
++<U679C> /x89/xca <CJK>
++<U67B6> /x89/xcb <CJK>
++<U6B4C> /x89/xcc <CJK>
++<U6CB3> /x89/xcd <CJK>
++<U706B> /x89/xce <CJK>
++<U73C2> /x89/xcf <CJK>
++<U798D> /x89/xd0 <CJK>
++<U79BE> /x89/xd1 <CJK>
++<U7A3C> /x89/xd2 <CJK>
++<U7B87> /x89/xd3 <CJK>
++<U82B1> /x89/xd4 <CJK>
++<U82DB> /x89/xd5 <CJK>
++<U8304> /x89/xd6 <CJK>
++<U8377> /x89/xd7 <CJK>
++<U83EF> /x89/xd8 <CJK>
++<U83D3> /x89/xd9 <CJK>
++<U8766> /x89/xda <CJK>
++<U8AB2> /x89/xdb <CJK>
++<U5629> /x89/xdc <CJK>
++<U8CA8> /x89/xdd <CJK>
++<U8FE6> /x89/xde <CJK>
++<U904E> /x89/xdf <CJK>
++<U971E> /x89/xe0 <CJK>
++<U868A> /x89/xe1 <CJK>
++<U4FC4> /x89/xe2 <CJK>
++<U5CE8> /x89/xe3 <CJK>
++<U6211> /x89/xe4 <CJK>
++<U7259> /x89/xe5 <CJK>
++<U753B> /x89/xe6 <CJK>
++<U81E5> /x89/xe7 <CJK>
++<U82BD> /x89/xe8 <CJK>
++<U86FE> /x89/xe9 <CJK>
++<U8CC0> /x89/xea <CJK>
++<U96C5> /x89/xeb <CJK>
++<U9913> /x89/xec <CJK>
++<U99D5> /x89/xed <CJK>
++<U4ECB> /x89/xee <CJK>
++<U4F1A> /x89/xef <CJK>
++<U89E3> /x89/xf0 <CJK>
++<U56DE> /x89/xf1 <CJK>
++<U584A> /x89/xf2 <CJK>
++<U58CA> /x89/xf3 <CJK>
++<U5EFB> /x89/xf4 <CJK>
++<U5FEB> /x89/xf5 <CJK>
++<U602A> /x89/xf6 <CJK>
++<U6094> /x89/xf7 <CJK>
++<U6062> /x89/xf8 <CJK>
++<U61D0> /x89/xf9 <CJK>
++<U6212> /x89/xfa <CJK>
++<U62D0> /x89/xfb <CJK>
++<U6539> /x89/xfc <CJK>
++<U9B41> /x8a/x40 <CJK>
++<U6666> /x8a/x41 <CJK>
++<U68B0> /x8a/x42 <CJK>
++<U6D77> /x8a/x43 <CJK>
++<U7070> /x8a/x44 <CJK>
++<U754C> /x8a/x45 <CJK>
++<U7686> /x8a/x46 <CJK>
++<U7D75> /x8a/x47 <CJK>
++<U82A5> /x8a/x48 <CJK>
++<U87F9> /x8a/x49 <CJK>
++<U958B> /x8a/x4a <CJK>
++<U968E> /x8a/x4b <CJK>
++<U8C9D> /x8a/x4c <CJK>
++<U51F1> /x8a/x4d <CJK>
++<U52BE> /x8a/x4e <CJK>
++<U5916> /x8a/x4f <CJK>
++<U54B3> /x8a/x50 <CJK>
++<U5BB3> /x8a/x51 <CJK>
++<U5D16> /x8a/x52 <CJK>
++<U6168> /x8a/x53 <CJK>
++<U6982> /x8a/x54 <CJK>
++<U6DAF> /x8a/x55 <CJK>
++<U788D> /x8a/x56 <CJK>
++<U84CB> /x8a/x57 <CJK>
++<U8857> /x8a/x58 <CJK>
++<U8A72> /x8a/x59 <CJK>
++<U93A7> /x8a/x5a <CJK>
++<U9AB8> /x8a/x5b <CJK>
++<U6D6C> /x8a/x5c <CJK>
++<U99A8> /x8a/x5d <CJK>
++<U86D9> /x8a/x5e <CJK>
++<U57A3> /x8a/x5f <CJK>
++<U67FF> /x8a/x60 <CJK>
++<U86CE> /x8a/x61 <CJK>
++<U920E> /x8a/x62 <CJK>
++<U5283> /x8a/x63 <CJK>
++<U5687> /x8a/x64 <CJK>
++<U5404> /x8a/x65 <CJK>
++<U5ED3> /x8a/x66 <CJK>
++<U62E1> /x8a/x67 <CJK>
++<U64B9> /x8a/x68 <CJK>
++<U683C> /x8a/x69 <CJK>
++<U6838> /x8a/x6a <CJK>
++<U6BBB> /x8a/x6b <CJK>
++<U7372> /x8a/x6c <CJK>
++<U78BA> /x8a/x6d <CJK>
++<U7A6B> /x8a/x6e <CJK>
++<U899A> /x8a/x6f <CJK>
++<U89D2> /x8a/x70 <CJK>
++<U8D6B> /x8a/x71 <CJK>
++<U8F03> /x8a/x72 <CJK>
++<U90ED> /x8a/x73 <CJK>
++<U95A3> /x8a/x74 <CJK>
++<U9694> /x8a/x75 <CJK>
++<U9769> /x8a/x76 <CJK>
++<U5B66> /x8a/x77 <CJK>
++<U5CB3> /x8a/x78 <CJK>
++<U697D> /x8a/x79 <CJK>
++<U984D> /x8a/x7a <CJK>
++<U984E> /x8a/x7b <CJK>
++<U639B> /x8a/x7c <CJK>
++<U7B20> /x8a/x7d <CJK>
++<U6A2B> /x8a/x7e <CJK>
++<U6A7F> /x8a/x80 <CJK>
++<U68B6> /x8a/x81 <CJK>
++<U9C0D> /x8a/x82 <CJK>
++<U6F5F> /x8a/x83 <CJK>
++<U5272> /x8a/x84 <CJK>
++<U559D> /x8a/x85 <CJK>
++<U6070> /x8a/x86 <CJK>
++<U62EC> /x8a/x87 <CJK>
++<U6D3B> /x8a/x88 <CJK>
++<U6E07> /x8a/x89 <CJK>
++<U6ED1> /x8a/x8a <CJK>
++<U845B> /x8a/x8b <CJK>
++<U8910> /x8a/x8c <CJK>
++<U8F44> /x8a/x8d <CJK>
++<U4E14> /x8a/x8e <CJK>
++<U9C39> /x8a/x8f <CJK>
++<U53F6> /x8a/x90 <CJK>
++<U691B> /x8a/x91 <CJK>
++<U6A3A> /x8a/x92 <CJK>
++<U9784> /x8a/x93 <CJK>
++<U682A> /x8a/x94 <CJK>
++<U515C> /x8a/x95 <CJK>
++<U7AC3> /x8a/x96 <CJK>
++<U84B2> /x8a/x97 <CJK>
++<U91DC> /x8a/x98 <CJK>
++<U938C> /x8a/x99 <CJK>
++<U565B> /x8a/x9a <CJK>
++<U9D28> /x8a/x9b <CJK>
++<U6822> /x8a/x9c <CJK>
++<U8305> /x8a/x9d <CJK>
++<U8431> /x8a/x9e <CJK>
++<U7CA5> /x8a/x9f <CJK>
++<U5208> /x8a/xa0 <CJK>
++<U82C5> /x8a/xa1 <CJK>
++<U74E6> /x8a/xa2 <CJK>
++<U4E7E> /x8a/xa3 <CJK>
++<U4F83> /x8a/xa4 <CJK>
++<U51A0> /x8a/xa5 <CJK>
++<U5BD2> /x8a/xa6 <CJK>
++<U520A> /x8a/xa7 <CJK>
++<U52D8> /x8a/xa8 <CJK>
++<U52E7> /x8a/xa9 <CJK>
++<U5DFB> /x8a/xaa <CJK>
++<U559A> /x8a/xab <CJK>
++<U582A> /x8a/xac <CJK>
++<U59E6> /x8a/xad <CJK>
++<U5B8C> /x8a/xae <CJK>
++<U5B98> /x8a/xaf <CJK>
++<U5BDB> /x8a/xb0 <CJK>
++<U5E72> /x8a/xb1 <CJK>
++<U5E79> /x8a/xb2 <CJK>
++<U60A3> /x8a/xb3 <CJK>
++<U611F> /x8a/xb4 <CJK>
++<U6163> /x8a/xb5 <CJK>
++<U61BE> /x8a/xb6 <CJK>
++<U63DB> /x8a/xb7 <CJK>
++<U6562> /x8a/xb8 <CJK>
++<U67D1> /x8a/xb9 <CJK>
++<U6853> /x8a/xba <CJK>
++<U68FA> /x8a/xbb <CJK>
++<U6B3E> /x8a/xbc <CJK>
++<U6B53> /x8a/xbd <CJK>
++<U6C57> /x8a/xbe <CJK>
++<U6F22> /x8a/xbf <CJK>
++<U6F97> /x8a/xc0 <CJK>
++<U6F45> /x8a/xc1 <CJK>
++<U74B0> /x8a/xc2 <CJK>
++<U7518> /x8a/xc3 <CJK>
++<U76E3> /x8a/xc4 <CJK>
++<U770B> /x8a/xc5 <CJK>
++<U7AFF> /x8a/xc6 <CJK>
++<U7BA1> /x8a/xc7 <CJK>
++<U7C21> /x8a/xc8 <CJK>
++<U7DE9> /x8a/xc9 <CJK>
++<U7F36> /x8a/xca <CJK>
++<U7FF0> /x8a/xcb <CJK>
++<U809D> /x8a/xcc <CJK>
++<U8266> /x8a/xcd <CJK>
++<U839E> /x8a/xce <CJK>
++<U89B3> /x8a/xcf <CJK>
++<U8ACC> /x8a/xd0 <CJK>
++<U8CAB> /x8a/xd1 <CJK>
++<U9084> /x8a/xd2 <CJK>
++<U9451> /x8a/xd3 <CJK>
++<U9593> /x8a/xd4 <CJK>
++<U9591> /x8a/xd5 <CJK>
++<U95A2> /x8a/xd6 <CJK>
++<U9665> /x8a/xd7 <CJK>
++<U97D3> /x8a/xd8 <CJK>
++<U9928> /x8a/xd9 <CJK>
++<U8218> /x8a/xda <CJK>
++<U4E38> /x8a/xdb <CJK>
++<U542B> /x8a/xdc <CJK>
++<U5CB8> /x8a/xdd <CJK>
++<U5DCC> /x8a/xde <CJK>
++<U73A9> /x8a/xdf <CJK>
++<U764C> /x8a/xe0 <CJK>
++<U773C> /x8a/xe1 <CJK>
++<U5CA9> /x8a/xe2 <CJK>
++<U7FEB> /x8a/xe3 <CJK>
++<U8D0B> /x8a/xe4 <CJK>
++<U96C1> /x8a/xe5 <CJK>
++<U9811> /x8a/xe6 <CJK>
++<U9854> /x8a/xe7 <CJK>
++<U9858> /x8a/xe8 <CJK>
++<U4F01> /x8a/xe9 <CJK>
++<U4F0E> /x8a/xea <CJK>
++<U5371> /x8a/xeb <CJK>
++<U559C> /x8a/xec <CJK>
++<U5668> /x8a/xed <CJK>
++<U57FA> /x8a/xee <CJK>
++<U5947> /x8a/xef <CJK>
++<U5B09> /x8a/xf0 <CJK>
++<U5BC4> /x8a/xf1 <CJK>
++<U5C90> /x8a/xf2 <CJK>
++<U5E0C> /x8a/xf3 <CJK>
++<U5E7E> /x8a/xf4 <CJK>
++<U5FCC> /x8a/xf5 <CJK>
++<U63EE> /x8a/xf6 <CJK>
++<U673A> /x8a/xf7 <CJK>
++<U65D7> /x8a/xf8 <CJK>
++<U65E2> /x8a/xf9 <CJK>
++<U671F> /x8a/xfa <CJK>
++<U68CB> /x8a/xfb <CJK>
++<U68C4> /x8a/xfc <CJK>
++<U6A5F> /x8b/x40 <CJK>
++<U5E30> /x8b/x41 <CJK>
++<U6BC5> /x8b/x42 <CJK>
++<U6C17> /x8b/x43 <CJK>
++<U6C7D> /x8b/x44 <CJK>
++<U757F> /x8b/x45 <CJK>
++<U7948> /x8b/x46 <CJK>
++<U5B63> /x8b/x47 <CJK>
++<U7A00> /x8b/x48 <CJK>
++<U7D00> /x8b/x49 <CJK>
++<U5FBD> /x8b/x4a <CJK>
++<U898F> /x8b/x4b <CJK>
++<U8A18> /x8b/x4c <CJK>
++<U8CB4> /x8b/x4d <CJK>
++<U8D77> /x8b/x4e <CJK>
++<U8ECC> /x8b/x4f <CJK>
++<U8F1D> /x8b/x50 <CJK>
++<U98E2> /x8b/x51 <CJK>
++<U9A0E> /x8b/x52 <CJK>
++<U9B3C> /x8b/x53 <CJK>
++<U4E80> /x8b/x54 <CJK>
++<U507D> /x8b/x55 <CJK>
++<U5100> /x8b/x56 <CJK>
++<U5993> /x8b/x57 <CJK>
++<U5B9C> /x8b/x58 <CJK>
++<U622F> /x8b/x59 <CJK>
++<U6280> /x8b/x5a <CJK>
++<U64EC> /x8b/x5b <CJK>
++<U6B3A> /x8b/x5c <CJK>
++<U72A0> /x8b/x5d <CJK>
++<U7591> /x8b/x5e <CJK>
++<U7947> /x8b/x5f <CJK>
++<U7FA9> /x8b/x60 <CJK>
++<U87FB> /x8b/x61 <CJK>
++<U8ABC> /x8b/x62 <CJK>
++<U8B70> /x8b/x63 <CJK>
++<U63AC> /x8b/x64 <CJK>
++<U83CA> /x8b/x65 <CJK>
++<U97A0> /x8b/x66 <CJK>
++<U5409> /x8b/x67 <CJK>
++<U5403> /x8b/x68 <CJK>
++<U55AB> /x8b/x69 <CJK>
++<U6854> /x8b/x6a <CJK>
++<U6A58> /x8b/x6b <CJK>
++<U8A70> /x8b/x6c <CJK>
++<U7827> /x8b/x6d <CJK>
++<U6775> /x8b/x6e <CJK>
++<U9ECD> /x8b/x6f <CJK>
++<U5374> /x8b/x70 <CJK>
++<U5BA2> /x8b/x71 <CJK>
++<U811A> /x8b/x72 <CJK>
++<U8650> /x8b/x73 <CJK>
++<U9006> /x8b/x74 <CJK>
++<U4E18> /x8b/x75 <CJK>
++<U4E45> /x8b/x76 <CJK>
++<U4EC7> /x8b/x77 <CJK>
++<U4F11> /x8b/x78 <CJK>
++<U53CA> /x8b/x79 <CJK>
++<U5438> /x8b/x7a <CJK>
++<U5BAE> /x8b/x7b <CJK>
++<U5F13> /x8b/x7c <CJK>
++<U6025> /x8b/x7d <CJK>
++<U6551> /x8b/x7e <CJK>
++<U673D> /x8b/x80 <CJK>
++<U6C42> /x8b/x81 <CJK>
++<U6C72> /x8b/x82 <CJK>
++<U6CE3> /x8b/x83 <CJK>
++<U7078> /x8b/x84 <CJK>
++<U7403> /x8b/x85 <CJK>
++<U7A76> /x8b/x86 <CJK>
++<U7AAE> /x8b/x87 <CJK>
++<U7B08> /x8b/x88 <CJK>
++<U7D1A> /x8b/x89 <CJK>
++<U7CFE> /x8b/x8a <CJK>
++<U7D66> /x8b/x8b <CJK>
++<U65E7> /x8b/x8c <CJK>
++<U725B> /x8b/x8d <CJK>
++<U53BB> /x8b/x8e <CJK>
++<U5C45> /x8b/x8f <CJK>
++<U5DE8> /x8b/x90 <CJK>
++<U62D2> /x8b/x91 <CJK>
++<U62E0> /x8b/x92 <CJK>
++<U6319> /x8b/x93 <CJK>
++<U6E20> /x8b/x94 <CJK>
++<U865A> /x8b/x95 <CJK>
++<U8A31> /x8b/x96 <CJK>
++<U8DDD> /x8b/x97 <CJK>
++<U92F8> /x8b/x98 <CJK>
++<U6F01> /x8b/x99 <CJK>
++<U79A6> /x8b/x9a <CJK>
++<U9B5A> /x8b/x9b <CJK>
++<U4EA8> /x8b/x9c <CJK>
++<U4EAB> /x8b/x9d <CJK>
++<U4EAC> /x8b/x9e <CJK>
++<U4F9B> /x8b/x9f <CJK>
++<U4FA0> /x8b/xa0 <CJK>
++<U50D1> /x8b/xa1 <CJK>
++<U5147> /x8b/xa2 <CJK>
++<U7AF6> /x8b/xa3 <CJK>
++<U5171> /x8b/xa4 <CJK>
++<U51F6> /x8b/xa5 <CJK>
++<U5354> /x8b/xa6 <CJK>
++<U5321> /x8b/xa7 <CJK>
++<U537F> /x8b/xa8 <CJK>
++<U53EB> /x8b/xa9 <CJK>
++<U55AC> /x8b/xaa <CJK>
++<U5883> /x8b/xab <CJK>
++<U5CE1> /x8b/xac <CJK>
++<U5F37> /x8b/xad <CJK>
++<U5F4A> /x8b/xae <CJK>
++<U602F> /x8b/xaf <CJK>
++<U6050> /x8b/xb0 <CJK>
++<U606D> /x8b/xb1 <CJK>
++<U631F> /x8b/xb2 <CJK>
++<U6559> /x8b/xb3 <CJK>
++<U6A4B> /x8b/xb4 <CJK>
++<U6CC1> /x8b/xb5 <CJK>
++<U72C2> /x8b/xb6 <CJK>
++<U72ED> /x8b/xb7 <CJK>
++<U77EF> /x8b/xb8 <CJK>
++<U80F8> /x8b/xb9 <CJK>
++<U8105> /x8b/xba <CJK>
++<U8208> /x8b/xbb <CJK>
++<U854E> /x8b/xbc <CJK>
++<U90F7> /x8b/xbd <CJK>
++<U93E1> /x8b/xbe <CJK>
++<U97FF> /x8b/xbf <CJK>
++<U9957> /x8b/xc0 <CJK>
++<U9A5A> /x8b/xc1 <CJK>
++<U4EF0> /x8b/xc2 <CJK>
++<U51DD> /x8b/xc3 <CJK>
++<U5C2D> /x8b/xc4 <CJK>
++<U6681> /x8b/xc5 <CJK>
++<U696D> /x8b/xc6 <CJK>
++<U5C40> /x8b/xc7 <CJK>
++<U66F2> /x8b/xc8 <CJK>
++<U6975> /x8b/xc9 <CJK>
++<U7389> /x8b/xca <CJK>
++<U6850> /x8b/xcb <CJK>
++<U7C81> /x8b/xcc <CJK>
++<U50C5> /x8b/xcd <CJK>
++<U52E4> /x8b/xce <CJK>
++<U5747> /x8b/xcf <CJK>
++<U5DFE> /x8b/xd0 <CJK>
++<U9326> /x8b/xd1 <CJK>
++<U65A4> /x8b/xd2 <CJK>
++<U6B23> /x8b/xd3 <CJK>
++<U6B3D> /x8b/xd4 <CJK>
++<U7434> /x8b/xd5 <CJK>
++<U7981> /x8b/xd6 <CJK>
++<U79BD> /x8b/xd7 <CJK>
++<U7B4B> /x8b/xd8 <CJK>
++<U7DCA> /x8b/xd9 <CJK>
++<U82B9> /x8b/xda <CJK>
++<U83CC> /x8b/xdb <CJK>
++<U887F> /x8b/xdc <CJK>
++<U895F> /x8b/xdd <CJK>
++<U8B39> /x8b/xde <CJK>
++<U8FD1> /x8b/xdf <CJK>
++<U91D1> /x8b/xe0 <CJK>
++<U541F> /x8b/xe1 <CJK>
++<U9280> /x8b/xe2 <CJK>
++<U4E5D> /x8b/xe3 <CJK>
++<U5036> /x8b/xe4 <CJK>
++<U53E5> /x8b/xe5 <CJK>
++<U533A> /x8b/xe6 <CJK>
++<U72D7> /x8b/xe7 <CJK>
++<U7396> /x8b/xe8 <CJK>
++<U77E9> /x8b/xe9 <CJK>
++<U82E6> /x8b/xea <CJK>
++<U8EAF> /x8b/xeb <CJK>
++<U99C6> /x8b/xec <CJK>
++<U99C8> /x8b/xed <CJK>
++<U99D2> /x8b/xee <CJK>
++<U5177> /x8b/xef <CJK>
++<U611A> /x8b/xf0 <CJK>
++<U865E> /x8b/xf1 <CJK>
++<U55B0> /x8b/xf2 <CJK>
++<U7A7A> /x8b/xf3 <CJK>
++<U5076> /x8b/xf4 <CJK>
++<U5BD3> /x8b/xf5 <CJK>
++<U9047> /x8b/xf6 <CJK>
++<U9685> /x8b/xf7 <CJK>
++<U4E32> /x8b/xf8 <CJK>
++<U6ADB> /x8b/xf9 <CJK>
++<U91E7> /x8b/xfa <CJK>
++<U5C51> /x8b/xfb <CJK>
++<U5C48> /x8b/xfc <CJK>
++<U6398> /x8c/x40 <CJK>
++<U7A9F> /x8c/x41 <CJK>
++<U6C93> /x8c/x42 <CJK>
++<U9774> /x8c/x43 <CJK>
++<U8F61> /x8c/x44 <CJK>
++<U7AAA> /x8c/x45 <CJK>
++<U718A> /x8c/x46 <CJK>
++<U9688> /x8c/x47 <CJK>
++<U7C82> /x8c/x48 <CJK>
++<U6817> /x8c/x49 <CJK>
++<U7E70> /x8c/x4a <CJK>
++<U6851> /x8c/x4b <CJK>
++<U936C> /x8c/x4c <CJK>
++<U52F2> /x8c/x4d <CJK>
++<U541B> /x8c/x4e <CJK>
++<U85AB> /x8c/x4f <CJK>
++<U8A13> /x8c/x50 <CJK>
++<U7FA4> /x8c/x51 <CJK>
++<U8ECD> /x8c/x52 <CJK>
++<U90E1> /x8c/x53 <CJK>
++<U5366> /x8c/x54 <CJK>
++<U8888> /x8c/x55 <CJK>
++<U7941> /x8c/x56 <CJK>
++<U4FC2> /x8c/x57 <CJK>
++<U50BE> /x8c/x58 <CJK>
++<U5211> /x8c/x59 <CJK>
++<U5144> /x8c/x5a <CJK>
++<U5553> /x8c/x5b <CJK>
++<U572D> /x8c/x5c <CJK>
++<U73EA> /x8c/x5d <CJK>
++<U578B> /x8c/x5e <CJK>
++<U5951> /x8c/x5f <CJK>
++<U5F62> /x8c/x60 <CJK>
++<U5F84> /x8c/x61 <CJK>
++<U6075> /x8c/x62 <CJK>
++<U6176> /x8c/x63 <CJK>
++<U6167> /x8c/x64 <CJK>
++<U61A9> /x8c/x65 <CJK>
++<U63B2> /x8c/x66 <CJK>
++<U643A> /x8c/x67 <CJK>
++<U656C> /x8c/x68 <CJK>
++<U666F> /x8c/x69 <CJK>
++<U6842> /x8c/x6a <CJK>
++<U6E13> /x8c/x6b <CJK>
++<U7566> /x8c/x6c <CJK>
++<U7A3D> /x8c/x6d <CJK>
++<U7CFB> /x8c/x6e <CJK>
++<U7D4C> /x8c/x6f <CJK>
++<U7D99> /x8c/x70 <CJK>
++<U7E4B> /x8c/x71 <CJK>
++<U7F6B> /x8c/x72 <CJK>
++<U830E> /x8c/x73 <CJK>
++<U834A> /x8c/x74 <CJK>
++<U86CD> /x8c/x75 <CJK>
++<U8A08> /x8c/x76 <CJK>
++<U8A63> /x8c/x77 <CJK>
++<U8B66> /x8c/x78 <CJK>
++<U8EFD> /x8c/x79 <CJK>
++<U981A> /x8c/x7a <CJK>
++<U9D8F> /x8c/x7b <CJK>
++<U82B8> /x8c/x7c <CJK>
++<U8FCE> /x8c/x7d <CJK>
++<U9BE8> /x8c/x7e <CJK>
++<U5287> /x8c/x80 <CJK>
++<U621F> /x8c/x81 <CJK>
++<U6483> /x8c/x82 <CJK>
++<U6FC0> /x8c/x83 <CJK>
++<U9699> /x8c/x84 <CJK>
++<U6841> /x8c/x85 <CJK>
++<U5091> /x8c/x86 <CJK>
++<U6B20> /x8c/x87 <CJK>
++<U6C7A> /x8c/x88 <CJK>
++<U6F54> /x8c/x89 <CJK>
++<U7A74> /x8c/x8a <CJK>
++<U7D50> /x8c/x8b <CJK>
++<U8840> /x8c/x8c <CJK>
++<U8A23> /x8c/x8d <CJK>
++<U6708> /x8c/x8e <CJK>
++<U4EF6> /x8c/x8f <CJK>
++<U5039> /x8c/x90 <CJK>
++<U5026> /x8c/x91 <CJK>
++<U5065> /x8c/x92 <CJK>
++<U517C> /x8c/x93 <CJK>
++<U5238> /x8c/x94 <CJK>
++<U5263> /x8c/x95 <CJK>
++<U55A7> /x8c/x96 <CJK>
++<U570F> /x8c/x97 <CJK>
++<U5805> /x8c/x98 <CJK>
++<U5ACC> /x8c/x99 <CJK>
++<U5EFA> /x8c/x9a <CJK>
++<U61B2> /x8c/x9b <CJK>
++<U61F8> /x8c/x9c <CJK>
++<U62F3> /x8c/x9d <CJK>
++<U6372> /x8c/x9e <CJK>
++<U691C> /x8c/x9f <CJK>
++<U6A29> /x8c/xa0 <CJK>
++<U727D> /x8c/xa1 <CJK>
++<U72AC> /x8c/xa2 <CJK>
++<U732E> /x8c/xa3 <CJK>
++<U7814> /x8c/xa4 <CJK>
++<U786F> /x8c/xa5 <CJK>
++<U7D79> /x8c/xa6 <CJK>
++<U770C> /x8c/xa7 <CJK>
++<U80A9> /x8c/xa8 <CJK>
++<U898B> /x8c/xa9 <CJK>
++<U8B19> /x8c/xaa <CJK>
++<U8CE2> /x8c/xab <CJK>
++<U8ED2> /x8c/xac <CJK>
++<U9063> /x8c/xad <CJK>
++<U9375> /x8c/xae <CJK>
++<U967A> /x8c/xaf <CJK>
++<U9855> /x8c/xb0 <CJK>
++<U9A13> /x8c/xb1 <CJK>
++<U9E78> /x8c/xb2 <CJK>
++<U5143> /x8c/xb3 <CJK>
++<U539F> /x8c/xb4 <CJK>
++<U53B3> /x8c/xb5 <CJK>
++<U5E7B> /x8c/xb6 <CJK>
++<U5F26> /x8c/xb7 <CJK>
++<U6E1B> /x8c/xb8 <CJK>
++<U6E90> /x8c/xb9 <CJK>
++<U7384> /x8c/xba <CJK>
++<U73FE> /x8c/xbb <CJK>
++<U7D43> /x8c/xbc <CJK>
++<U8237> /x8c/xbd <CJK>
++<U8A00> /x8c/xbe <CJK>
++<U8AFA> /x8c/xbf <CJK>
++<U9650> /x8c/xc0 <CJK>
++<U4E4E> /x8c/xc1 <CJK>
++<U500B> /x8c/xc2 <CJK>
++<U53E4> /x8c/xc3 <CJK>
++<U547C> /x8c/xc4 <CJK>
++<U56FA> /x8c/xc5 <CJK>
++<U59D1> /x8c/xc6 <CJK>
++<U5B64> /x8c/xc7 <CJK>
++<U5DF1> /x8c/xc8 <CJK>
++<U5EAB> /x8c/xc9 <CJK>
++<U5F27> /x8c/xca <CJK>
++<U6238> /x8c/xcb <CJK>
++<U6545> /x8c/xcc <CJK>
++<U67AF> /x8c/xcd <CJK>
++<U6E56> /x8c/xce <CJK>
++<U72D0> /x8c/xcf <CJK>
++<U7CCA> /x8c/xd0 <CJK>
++<U88B4> /x8c/xd1 <CJK>
++<U80A1> /x8c/xd2 <CJK>
++<U80E1> /x8c/xd3 <CJK>
++<U83F0> /x8c/xd4 <CJK>
++<U864E> /x8c/xd5 <CJK>
++<U8A87> /x8c/xd6 <CJK>
++<U8DE8> /x8c/xd7 <CJK>
++<U9237> /x8c/xd8 <CJK>
++<U96C7> /x8c/xd9 <CJK>
++<U9867> /x8c/xda <CJK>
++<U9F13> /x8c/xdb <CJK>
++<U4E94> /x8c/xdc <CJK>
++<U4E92> /x8c/xdd <CJK>
++<U4F0D> /x8c/xde <CJK>
++<U5348> /x8c/xdf <CJK>
++<U5449> /x8c/xe0 <CJK>
++<U543E> /x8c/xe1 <CJK>
++<U5A2F> /x8c/xe2 <CJK>
++<U5F8C> /x8c/xe3 <CJK>
++<U5FA1> /x8c/xe4 <CJK>
++<U609F> /x8c/xe5 <CJK>
++<U68A7> /x8c/xe6 <CJK>
++<U6A8E> /x8c/xe7 <CJK>
++<U745A> /x8c/xe8 <CJK>
++<U7881> /x8c/xe9 <CJK>
++<U8A9E> /x8c/xea <CJK>
++<U8AA4> /x8c/xeb <CJK>
++<U8B77> /x8c/xec <CJK>
++<U9190> /x8c/xed <CJK>
++<U4E5E> /x8c/xee <CJK>
++<U9BC9> /x8c/xef <CJK>
++<U4EA4> /x8c/xf0 <CJK>
++<U4F7C> /x8c/xf1 <CJK>
++<U4FAF> /x8c/xf2 <CJK>
++<U5019> /x8c/xf3 <CJK>
++<U5016> /x8c/xf4 <CJK>
++<U5149> /x8c/xf5 <CJK>
++<U516C> /x8c/xf6 <CJK>
++<U529F> /x8c/xf7 <CJK>
++<U52B9> /x8c/xf8 <CJK>
++<U52FE> /x8c/xf9 <CJK>
++<U539A> /x8c/xfa <CJK>
++<U53E3> /x8c/xfb <CJK>
++<U5411> /x8c/xfc <CJK>
++<U540E> /x8d/x40 <CJK>
++<U5589> /x8d/x41 <CJK>
++<U5751> /x8d/x42 <CJK>
++<U57A2> /x8d/x43 <CJK>
++<U597D> /x8d/x44 <CJK>
++<U5B54> /x8d/x45 <CJK>
++<U5B5D> /x8d/x46 <CJK>
++<U5B8F> /x8d/x47 <CJK>
++<U5DE5> /x8d/x48 <CJK>
++<U5DE7> /x8d/x49 <CJK>
++<U5DF7> /x8d/x4a <CJK>
++<U5E78> /x8d/x4b <CJK>
++<U5E83> /x8d/x4c <CJK>
++<U5E9A> /x8d/x4d <CJK>
++<U5EB7> /x8d/x4e <CJK>
++<U5F18> /x8d/x4f <CJK>
++<U6052> /x8d/x50 <CJK>
++<U614C> /x8d/x51 <CJK>
++<U6297> /x8d/x52 <CJK>
++<U62D8> /x8d/x53 <CJK>
++<U63A7> /x8d/x54 <CJK>
++<U653B> /x8d/x55 <CJK>
++<U6602> /x8d/x56 <CJK>
++<U6643> /x8d/x57 <CJK>
++<U66F4> /x8d/x58 <CJK>
++<U676D> /x8d/x59 <CJK>
++<U6821> /x8d/x5a <CJK>
++<U6897> /x8d/x5b <CJK>
++<U69CB> /x8d/x5c <CJK>
++<U6C5F> /x8d/x5d <CJK>
++<U6D2A> /x8d/x5e <CJK>
++<U6D69> /x8d/x5f <CJK>
++<U6E2F> /x8d/x60 <CJK>
++<U6E9D> /x8d/x61 <CJK>
++<U7532> /x8d/x62 <CJK>
++<U7687> /x8d/x63 <CJK>
++<U786C> /x8d/x64 <CJK>
++<U7A3F> /x8d/x65 <CJK>
++<U7CE0> /x8d/x66 <CJK>
++<U7D05> /x8d/x67 <CJK>
++<U7D18> /x8d/x68 <CJK>
++<U7D5E> /x8d/x69 <CJK>
++<U7DB1> /x8d/x6a <CJK>
++<U8015> /x8d/x6b <CJK>
++<U8003> /x8d/x6c <CJK>
++<U80AF> /x8d/x6d <CJK>
++<U80B1> /x8d/x6e <CJK>
++<U8154> /x8d/x6f <CJK>
++<U818F> /x8d/x70 <CJK>
++<U822A> /x8d/x71 <CJK>
++<U8352> /x8d/x72 <CJK>
++<U884C> /x8d/x73 <CJK>
++<U8861> /x8d/x74 <CJK>
++<U8B1B> /x8d/x75 <CJK>
++<U8CA2> /x8d/x76 <CJK>
++<U8CFC> /x8d/x77 <CJK>
++<U90CA> /x8d/x78 <CJK>
++<U9175> /x8d/x79 <CJK>
++<U9271> /x8d/x7a <CJK>
++<U783F> /x8d/x7b <CJK>
++<U92FC> /x8d/x7c <CJK>
++<U95A4> /x8d/x7d <CJK>
++<U964D> /x8d/x7e <CJK>
++<U9805> /x8d/x80 <CJK>
++<U9999> /x8d/x81 <CJK>
++<U9AD8> /x8d/x82 <CJK>
++<U9D3B> /x8d/x83 <CJK>
++<U525B> /x8d/x84 <CJK>
++<U52AB> /x8d/x85 <CJK>
++<U53F7> /x8d/x86 <CJK>
++<U5408> /x8d/x87 <CJK>
++<U58D5> /x8d/x88 <CJK>
++<U62F7> /x8d/x89 <CJK>
++<U6FE0> /x8d/x8a <CJK>
++<U8C6A> /x8d/x8b <CJK>
++<U8F5F> /x8d/x8c <CJK>
++<U9EB9> /x8d/x8d <CJK>
++<U514B> /x8d/x8e <CJK>
++<U523B> /x8d/x8f <CJK>
++<U544A> /x8d/x90 <CJK>
++<U56FD> /x8d/x91 <CJK>
++<U7A40> /x8d/x92 <CJK>
++<U9177> /x8d/x93 <CJK>
++<U9D60> /x8d/x94 <CJK>
++<U9ED2> /x8d/x95 <CJK>
++<U7344> /x8d/x96 <CJK>
++<U6F09> /x8d/x97 <CJK>
++<U8170> /x8d/x98 <CJK>
++<U7511> /x8d/x99 <CJK>
++<U5FFD> /x8d/x9a <CJK>
++<U60DA> /x8d/x9b <CJK>
++<U9AA8> /x8d/x9c <CJK>
++<U72DB> /x8d/x9d <CJK>
++<U8FBC> /x8d/x9e <CJK>
++<U6B64> /x8d/x9f <CJK>
++<U9803> /x8d/xa0 <CJK>
++<U4ECA> /x8d/xa1 <CJK>
++<U56F0> /x8d/xa2 <CJK>
++<U5764> /x8d/xa3 <CJK>
++<U58BE> /x8d/xa4 <CJK>
++<U5A5A> /x8d/xa5 <CJK>
++<U6068> /x8d/xa6 <CJK>
++<U61C7> /x8d/xa7 <CJK>
++<U660F> /x8d/xa8 <CJK>
++<U6606> /x8d/xa9 <CJK>
++<U6839> /x8d/xaa <CJK>
++<U68B1> /x8d/xab <CJK>
++<U6DF7> /x8d/xac <CJK>
++<U75D5> /x8d/xad <CJK>
++<U7D3A> /x8d/xae <CJK>
++<U826E> /x8d/xaf <CJK>
++<U9B42> /x8d/xb0 <CJK>
++<U4E9B> /x8d/xb1 <CJK>
++<U4F50> /x8d/xb2 <CJK>
++<U53C9> /x8d/xb3 <CJK>
++<U5506> /x8d/xb4 <CJK>
++<U5D6F> /x8d/xb5 <CJK>
++<U5DE6> /x8d/xb6 <CJK>
++<U5DEE> /x8d/xb7 <CJK>
++<U67FB> /x8d/xb8 <CJK>
++<U6C99> /x8d/xb9 <CJK>
++<U7473> /x8d/xba <CJK>
++<U7802> /x8d/xbb <CJK>
++<U8A50> /x8d/xbc <CJK>
++<U9396> /x8d/xbd <CJK>
++<U88DF> /x8d/xbe <CJK>
++<U5750> /x8d/xbf <CJK>
++<U5EA7> /x8d/xc0 <CJK>
++<U632B> /x8d/xc1 <CJK>
++<U50B5> /x8d/xc2 <CJK>
++<U50AC> /x8d/xc3 <CJK>
++<U518D> /x8d/xc4 <CJK>
++<U6700> /x8d/xc5 <CJK>
++<U54C9> /x8d/xc6 <CJK>
++<U585E> /x8d/xc7 <CJK>
++<U59BB> /x8d/xc8 <CJK>
++<U5BB0> /x8d/xc9 <CJK>
++<U5F69> /x8d/xca <CJK>
++<U624D> /x8d/xcb <CJK>
++<U63A1> /x8d/xcc <CJK>
++<U683D> /x8d/xcd <CJK>
++<U6B73> /x8d/xce <CJK>
++<U6E08> /x8d/xcf <CJK>
++<U707D> /x8d/xd0 <CJK>
++<U91C7> /x8d/xd1 <CJK>
++<U7280> /x8d/xd2 <CJK>
++<U7815> /x8d/xd3 <CJK>
++<U7826> /x8d/xd4 <CJK>
++<U796D> /x8d/xd5 <CJK>
++<U658E> /x8d/xd6 <CJK>
++<U7D30> /x8d/xd7 <CJK>
++<U83DC> /x8d/xd8 <CJK>
++<U88C1> /x8d/xd9 <CJK>
++<U8F09> /x8d/xda <CJK>
++<U969B> /x8d/xdb <CJK>
++<U5264> /x8d/xdc <CJK>
++<U5728> /x8d/xdd <CJK>
++<U6750> /x8d/xde <CJK>
++<U7F6A> /x8d/xdf <CJK>
++<U8CA1> /x8d/xe0 <CJK>
++<U51B4> /x8d/xe1 <CJK>
++<U5742> /x8d/xe2 <CJK>
++<U962A> /x8d/xe3 <CJK>
++<U583A> /x8d/xe4 <CJK>
++<U698A> /x8d/xe5 <CJK>
++<U80B4> /x8d/xe6 <CJK>
++<U54B2> /x8d/xe7 <CJK>
++<U5D0E> /x8d/xe8 <CJK>
++<U57FC> /x8d/xe9 <CJK>
++<U7895> /x8d/xea <CJK>
++<U9DFA> /x8d/xeb <CJK>
++<U4F5C> /x8d/xec <CJK>
++<U524A> /x8d/xed <CJK>
++<U548B> /x8d/xee <CJK>
++<U643E> /x8d/xef <CJK>
++<U6628> /x8d/xf0 <CJK>
++<U6714> /x8d/xf1 <CJK>
++<U67F5> /x8d/xf2 <CJK>
++<U7A84> /x8d/xf3 <CJK>
++<U7B56> /x8d/xf4 <CJK>
++<U7D22> /x8d/xf5 <CJK>
++<U932F> /x8d/xf6 <CJK>
++<U685C> /x8d/xf7 <CJK>
++<U9BAD> /x8d/xf8 <CJK>
++<U7B39> /x8d/xf9 <CJK>
++<U5319> /x8d/xfa <CJK>
++<U518A> /x8d/xfb <CJK>
++<U5237> /x8d/xfc <CJK>
++<U5BDF> /x8e/x40 <CJK>
++<U62F6> /x8e/x41 <CJK>
++<U64AE> /x8e/x42 <CJK>
++<U64E6> /x8e/x43 <CJK>
++<U672D> /x8e/x44 <CJK>
++<U6BBA> /x8e/x45 <CJK>
++<U85A9> /x8e/x46 <CJK>
++<U96D1> /x8e/x47 <CJK>
++<U7690> /x8e/x48 <CJK>
++<U9BD6> /x8e/x49 <CJK>
++<U634C> /x8e/x4a <CJK>
++<U9306> /x8e/x4b <CJK>
++<U9BAB> /x8e/x4c <CJK>
++<U76BF> /x8e/x4d <CJK>
++<U6652> /x8e/x4e <CJK>
++<U4E09> /x8e/x4f <CJK>
++<U5098> /x8e/x50 <CJK>
++<U53C2> /x8e/x51 <CJK>
++<U5C71> /x8e/x52 <CJK>
++<U60E8> /x8e/x53 <CJK>
++<U6492> /x8e/x54 <CJK>
++<U6563> /x8e/x55 <CJK>
++<U685F> /x8e/x56 <CJK>
++<U71E6> /x8e/x57 <CJK>
++<U73CA> /x8e/x58 <CJK>
++<U7523> /x8e/x59 <CJK>
++<U7B97> /x8e/x5a <CJK>
++<U7E82> /x8e/x5b <CJK>
++<U8695> /x8e/x5c <CJK>
++<U8B83> /x8e/x5d <CJK>
++<U8CDB> /x8e/x5e <CJK>
++<U9178> /x8e/x5f <CJK>
++<U9910> /x8e/x60 <CJK>
++<U65AC> /x8e/x61 <CJK>
++<U66AB> /x8e/x62 <CJK>
++<U6B8B> /x8e/x63 <CJK>
++<U4ED5> /x8e/x64 <CJK>
++<U4ED4> /x8e/x65 <CJK>
++<U4F3A> /x8e/x66 <CJK>
++<U4F7F> /x8e/x67 <CJK>
++<U523A> /x8e/x68 <CJK>
++<U53F8> /x8e/x69 <CJK>
++<U53F2> /x8e/x6a <CJK>
++<U55E3> /x8e/x6b <CJK>
++<U56DB> /x8e/x6c <CJK>
++<U58EB> /x8e/x6d <CJK>
++<U59CB> /x8e/x6e <CJK>
++<U59C9> /x8e/x6f <CJK>
++<U59FF> /x8e/x70 <CJK>
++<U5B50> /x8e/x71 <CJK>
++<U5C4D> /x8e/x72 <CJK>
++<U5E02> /x8e/x73 <CJK>
++<U5E2B> /x8e/x74 <CJK>
++<U5FD7> /x8e/x75 <CJK>
++<U601D> /x8e/x76 <CJK>
++<U6307> /x8e/x77 <CJK>
++<U652F> /x8e/x78 <CJK>
++<U5B5C> /x8e/x79 <CJK>
++<U65AF> /x8e/x7a <CJK>
++<U65BD> /x8e/x7b <CJK>
++<U65E8> /x8e/x7c <CJK>
++<U679D> /x8e/x7d <CJK>
++<U6B62> /x8e/x7e <CJK>
++<U6B7B> /x8e/x80 <CJK>
++<U6C0F> /x8e/x81 <CJK>
++<U7345> /x8e/x82 <CJK>
++<U7949> /x8e/x83 <CJK>
++<U79C1> /x8e/x84 <CJK>
++<U7CF8> /x8e/x85 <CJK>
++<U7D19> /x8e/x86 <CJK>
++<U7D2B> /x8e/x87 <CJK>
++<U80A2> /x8e/x88 <CJK>
++<U8102> /x8e/x89 <CJK>
++<U81F3> /x8e/x8a <CJK>
++<U8996> /x8e/x8b <CJK>
++<U8A5E> /x8e/x8c <CJK>
++<U8A69> /x8e/x8d <CJK>
++<U8A66> /x8e/x8e <CJK>
++<U8A8C> /x8e/x8f <CJK>
++<U8AEE> /x8e/x90 <CJK>
++<U8CC7> /x8e/x91 <CJK>
++<U8CDC> /x8e/x92 <CJK>
++<U96CC> /x8e/x93 <CJK>
++<U98FC> /x8e/x94 <CJK>
++<U6B6F> /x8e/x95 <CJK>
++<U4E8B> /x8e/x96 <CJK>
++<U4F3C> /x8e/x97 <CJK>
++<U4F8D> /x8e/x98 <CJK>
++<U5150> /x8e/x99 <CJK>
++<U5B57> /x8e/x9a <CJK>
++<U5BFA> /x8e/x9b <CJK>
++<U6148> /x8e/x9c <CJK>
++<U6301> /x8e/x9d <CJK>
++<U6642> /x8e/x9e <CJK>
++<U6B21> /x8e/x9f <CJK>
++<U6ECB> /x8e/xa0 <CJK>
++<U6CBB> /x8e/xa1 <CJK>
++<U723E> /x8e/xa2 <CJK>
++<U74BD> /x8e/xa3 <CJK>
++<U75D4> /x8e/xa4 <CJK>
++<U78C1> /x8e/xa5 <CJK>
++<U793A> /x8e/xa6 <CJK>
++<U800C> /x8e/xa7 <CJK>
++<U8033> /x8e/xa8 <CJK>
++<U81EA> /x8e/xa9 <CJK>
++<U8494> /x8e/xaa <CJK>
++<U8F9E> /x8e/xab <CJK>
++<U6C50> /x8e/xac <CJK>
++<U9E7F> /x8e/xad <CJK>
++<U5F0F> /x8e/xae <CJK>
++<U8B58> /x8e/xaf <CJK>
++<U9D2B> /x8e/xb0 <CJK>
++<U7AFA> /x8e/xb1 <CJK>
++<U8EF8> /x8e/xb2 <CJK>
++<U5B8D> /x8e/xb3 <CJK>
++<U96EB> /x8e/xb4 <CJK>
++<U4E03> /x8e/xb5 <CJK>
++<U53F1> /x8e/xb6 <CJK>
++<U57F7> /x8e/xb7 <CJK>
++<U5931> /x8e/xb8 <CJK>
++<U5AC9> /x8e/xb9 <CJK>
++<U5BA4> /x8e/xba <CJK>
++<U6089> /x8e/xbb <CJK>
++<U6E7F> /x8e/xbc <CJK>
++<U6F06> /x8e/xbd <CJK>
++<U75BE> /x8e/xbe <CJK>
++<U8CEA> /x8e/xbf <CJK>
++<U5B9F> /x8e/xc0 <CJK>
++<U8500> /x8e/xc1 <CJK>
++<U7BE0> /x8e/xc2 <CJK>
++<U5072> /x8e/xc3 <CJK>
++<U67F4> /x8e/xc4 <CJK>
++<U829D> /x8e/xc5 <CJK>
++<U5C61> /x8e/xc6 <CJK>
++<U854A> /x8e/xc7 <CJK>
++<U7E1E> /x8e/xc8 <CJK>
++<U820E> /x8e/xc9 <CJK>
++<U5199> /x8e/xca <CJK>
++<U5C04> /x8e/xcb <CJK>
++<U6368> /x8e/xcc <CJK>
++<U8D66> /x8e/xcd <CJK>
++<U659C> /x8e/xce <CJK>
++<U716E> /x8e/xcf <CJK>
++<U793E> /x8e/xd0 <CJK>
++<U7D17> /x8e/xd1 <CJK>
++<U8005> /x8e/xd2 <CJK>
++<U8B1D> /x8e/xd3 <CJK>
++<U8ECA> /x8e/xd4 <CJK>
++<U906E> /x8e/xd5 <CJK>
++<U86C7> /x8e/xd6 <CJK>
++<U90AA> /x8e/xd7 <CJK>
++<U501F> /x8e/xd8 <CJK>
++<U52FA> /x8e/xd9 <CJK>
++<U5C3A> /x8e/xda <CJK>
++<U6753> /x8e/xdb <CJK>
++<U707C> /x8e/xdc <CJK>
++<U7235> /x8e/xdd <CJK>
++<U914C> /x8e/xde <CJK>
++<U91C8> /x8e/xdf <CJK>
++<U932B> /x8e/xe0 <CJK>
++<U82E5> /x8e/xe1 <CJK>
++<U5BC2> /x8e/xe2 <CJK>
++<U5F31> /x8e/xe3 <CJK>
++<U60F9> /x8e/xe4 <CJK>
++<U4E3B> /x8e/xe5 <CJK>
++<U53D6> /x8e/xe6 <CJK>
++<U5B88> /x8e/xe7 <CJK>
++<U624B> /x8e/xe8 <CJK>
++<U6731> /x8e/xe9 <CJK>
++<U6B8A> /x8e/xea <CJK>
++<U72E9> /x8e/xeb <CJK>
++<U73E0> /x8e/xec <CJK>
++<U7A2E> /x8e/xed <CJK>
++<U816B> /x8e/xee <CJK>
++<U8DA3> /x8e/xef <CJK>
++<U9152> /x8e/xf0 <CJK>
++<U9996> /x8e/xf1 <CJK>
++<U5112> /x8e/xf2 <CJK>
++<U53D7> /x8e/xf3 <CJK>
++<U546A> /x8e/xf4 <CJK>
++<U5BFF> /x8e/xf5 <CJK>
++<U6388> /x8e/xf6 <CJK>
++<U6A39> /x8e/xf7 <CJK>
++<U7DAC> /x8e/xf8 <CJK>
++<U9700> /x8e/xf9 <CJK>
++<U56DA> /x8e/xfa <CJK>
++<U53CE> /x8e/xfb <CJK>
++<U5468> /x8e/xfc <CJK>
++<U5B97> /x8f/x40 <CJK>
++<U5C31> /x8f/x41 <CJK>
++<U5DDE> /x8f/x42 <CJK>
++<U4FEE> /x8f/x43 <CJK>
++<U6101> /x8f/x44 <CJK>
++<U62FE> /x8f/x45 <CJK>
++<U6D32> /x8f/x46 <CJK>
++<U79C0> /x8f/x47 <CJK>
++<U79CB> /x8f/x48 <CJK>
++<U7D42> /x8f/x49 <CJK>
++<U7E4D> /x8f/x4a <CJK>
++<U7FD2> /x8f/x4b <CJK>
++<U81ED> /x8f/x4c <CJK>
++<U821F> /x8f/x4d <CJK>
++<U8490> /x8f/x4e <CJK>
++<U8846> /x8f/x4f <CJK>
++<U8972> /x8f/x50 <CJK>
++<U8B90> /x8f/x51 <CJK>
++<U8E74> /x8f/x52 <CJK>
++<U8F2F> /x8f/x53 <CJK>
++<U9031> /x8f/x54 <CJK>
++<U914B> /x8f/x55 <CJK>
++<U916C> /x8f/x56 <CJK>
++<U96C6> /x8f/x57 <CJK>
++<U919C> /x8f/x58 <CJK>
++<U4EC0> /x8f/x59 <CJK>
++<U4F4F> /x8f/x5a <CJK>
++<U5145> /x8f/x5b <CJK>
++<U5341> /x8f/x5c <CJK>
++<U5F93> /x8f/x5d <CJK>
++<U620E> /x8f/x5e <CJK>
++<U67D4> /x8f/x5f <CJK>
++<U6C41> /x8f/x60 <CJK>
++<U6E0B> /x8f/x61 <CJK>
++<U7363> /x8f/x62 <CJK>
++<U7E26> /x8f/x63 <CJK>
++<U91CD> /x8f/x64 <CJK>
++<U9283> /x8f/x65 <CJK>
++<U53D4> /x8f/x66 <CJK>
++<U5919> /x8f/x67 <CJK>
++<U5BBF> /x8f/x68 <CJK>
++<U6DD1> /x8f/x69 <CJK>
++<U795D> /x8f/x6a <CJK>
++<U7E2E> /x8f/x6b <CJK>
++<U7C9B> /x8f/x6c <CJK>
++<U587E> /x8f/x6d <CJK>
++<U719F> /x8f/x6e <CJK>
++<U51FA> /x8f/x6f <CJK>
++<U8853> /x8f/x70 <CJK>
++<U8FF0> /x8f/x71 <CJK>
++<U4FCA> /x8f/x72 <CJK>
++<U5CFB> /x8f/x73 <CJK>
++<U6625> /x8f/x74 <CJK>
++<U77AC> /x8f/x75 <CJK>
++<U7AE3> /x8f/x76 <CJK>
++<U821C> /x8f/x77 <CJK>
++<U99FF> /x8f/x78 <CJK>
++<U51C6> /x8f/x79 <CJK>
++<U5FAA> /x8f/x7a <CJK>
++<U65EC> /x8f/x7b <CJK>
++<U696F> /x8f/x7c <CJK>
++<U6B89> /x8f/x7d <CJK>
++<U6DF3> /x8f/x7e <CJK>
++<U6E96> /x8f/x80 <CJK>
++<U6F64> /x8f/x81 <CJK>
++<U76FE> /x8f/x82 <CJK>
++<U7D14> /x8f/x83 <CJK>
++<U5DE1> /x8f/x84 <CJK>
++<U9075> /x8f/x85 <CJK>
++<U9187> /x8f/x86 <CJK>
++<U9806> /x8f/x87 <CJK>
++<U51E6> /x8f/x88 <CJK>
++<U521D> /x8f/x89 <CJK>
++<U6240> /x8f/x8a <CJK>
++<U6691> /x8f/x8b <CJK>
++<U66D9> /x8f/x8c <CJK>
++<U6E1A> /x8f/x8d <CJK>
++<U5EB6> /x8f/x8e <CJK>
++<U7DD2> /x8f/x8f <CJK>
++<U7F72> /x8f/x90 <CJK>
++<U66F8> /x8f/x91 <CJK>
++<U85AF> /x8f/x92 <CJK>
++<U85F7> /x8f/x93 <CJK>
++<U8AF8> /x8f/x94 <CJK>
++<U52A9> /x8f/x95 <CJK>
++<U53D9> /x8f/x96 <CJK>
++<U5973> /x8f/x97 <CJK>
++<U5E8F> /x8f/x98 <CJK>
++<U5F90> /x8f/x99 <CJK>
++<U6055> /x8f/x9a <CJK>
++<U92E4> /x8f/x9b <CJK>
++<U9664> /x8f/x9c <CJK>
++<U50B7> /x8f/x9d <CJK>
++<U511F> /x8f/x9e <CJK>
++<U52DD> /x8f/x9f <CJK>
++<U5320> /x8f/xa0 <CJK>
++<U5347> /x8f/xa1 <CJK>
++<U53EC> /x8f/xa2 <CJK>
++<U54E8> /x8f/xa3 <CJK>
++<U5546> /x8f/xa4 <CJK>
++<U5531> /x8f/xa5 <CJK>
++<U5617> /x8f/xa6 <CJK>
++<U5968> /x8f/xa7 <CJK>
++<U59BE> /x8f/xa8 <CJK>
++<U5A3C> /x8f/xa9 <CJK>
++<U5BB5> /x8f/xaa <CJK>
++<U5C06> /x8f/xab <CJK>
++<U5C0F> /x8f/xac <CJK>
++<U5C11> /x8f/xad <CJK>
++<U5C1A> /x8f/xae <CJK>
++<U5E84> /x8f/xaf <CJK>
++<U5E8A> /x8f/xb0 <CJK>
++<U5EE0> /x8f/xb1 <CJK>
++<U5F70> /x8f/xb2 <CJK>
++<U627F> /x8f/xb3 <CJK>
++<U6284> /x8f/xb4 <CJK>
++<U62DB> /x8f/xb5 <CJK>
++<U638C> /x8f/xb6 <CJK>
++<U6377> /x8f/xb7 <CJK>
++<U6607> /x8f/xb8 <CJK>
++<U660C> /x8f/xb9 <CJK>
++<U662D> /x8f/xba <CJK>
++<U6676> /x8f/xbb <CJK>
++<U677E> /x8f/xbc <CJK>
++<U68A2> /x8f/xbd <CJK>
++<U6A1F> /x8f/xbe <CJK>
++<U6A35> /x8f/xbf <CJK>
++<U6CBC> /x8f/xc0 <CJK>
++<U6D88> /x8f/xc1 <CJK>
++<U6E09> /x8f/xc2 <CJK>
++<U6E58> /x8f/xc3 <CJK>
++<U713C> /x8f/xc4 <CJK>
++<U7126> /x8f/xc5 <CJK>
++<U7167> /x8f/xc6 <CJK>
++<U75C7> /x8f/xc7 <CJK>
++<U7701> /x8f/xc8 <CJK>
++<U785D> /x8f/xc9 <CJK>
++<U7901> /x8f/xca <CJK>
++<U7965> /x8f/xcb <CJK>
++<U79F0> /x8f/xcc <CJK>
++<U7AE0> /x8f/xcd <CJK>
++<U7B11> /x8f/xce <CJK>
++<U7CA7> /x8f/xcf <CJK>
++<U7D39> /x8f/xd0 <CJK>
++<U8096> /x8f/xd1 <CJK>
++<U83D6> /x8f/xd2 <CJK>
++<U848B> /x8f/xd3 <CJK>
++<U8549> /x8f/xd4 <CJK>
++<U885D> /x8f/xd5 <CJK>
++<U88F3> /x8f/xd6 <CJK>
++<U8A1F> /x8f/xd7 <CJK>
++<U8A3C> /x8f/xd8 <CJK>
++<U8A54> /x8f/xd9 <CJK>
++<U8A73> /x8f/xda <CJK>
++<U8C61> /x8f/xdb <CJK>
++<U8CDE> /x8f/xdc <CJK>
++<U91A4> /x8f/xdd <CJK>
++<U9266> /x8f/xde <CJK>
++<U937E> /x8f/xdf <CJK>
++<U9418> /x8f/xe0 <CJK>
++<U969C> /x8f/xe1 <CJK>
++<U9798> /x8f/xe2 <CJK>
++<U4E0A> /x8f/xe3 <CJK>
++<U4E08> /x8f/xe4 <CJK>
++<U4E1E> /x8f/xe5 <CJK>
++<U4E57> /x8f/xe6 <CJK>
++<U5197> /x8f/xe7 <CJK>
++<U5270> /x8f/xe8 <CJK>
++<U57CE> /x8f/xe9 <CJK>
++<U5834> /x8f/xea <CJK>
++<U58CC> /x8f/xeb <CJK>
++<U5B22> /x8f/xec <CJK>
++<U5E38> /x8f/xed <CJK>
++<U60C5> /x8f/xee <CJK>
++<U64FE> /x8f/xef <CJK>
++<U6761> /x8f/xf0 <CJK>
++<U6756> /x8f/xf1 <CJK>
++<U6D44> /x8f/xf2 <CJK>
++<U72B6> /x8f/xf3 <CJK>
++<U7573> /x8f/xf4 <CJK>
++<U7A63> /x8f/xf5 <CJK>
++<U84B8> /x8f/xf6 <CJK>
++<U8B72> /x8f/xf7 <CJK>
++<U91B8> /x8f/xf8 <CJK>
++<U9320> /x8f/xf9 <CJK>
++<U5631> /x8f/xfa <CJK>
++<U57F4> /x8f/xfb <CJK>
++<U98FE> /x8f/xfc <CJK>
++<U62ED> /x90/x40 <CJK>
++<U690D> /x90/x41 <CJK>
++<U6B96> /x90/x42 <CJK>
++<U71ED> /x90/x43 <CJK>
++<U7E54> /x90/x44 <CJK>
++<U8077> /x90/x45 <CJK>
++<U8272> /x90/x46 <CJK>
++<U89E6> /x90/x47 <CJK>
++<U98DF> /x90/x48 <CJK>
++<U8755> /x90/x49 <CJK>
++<U8FB1> /x90/x4a <CJK>
++<U5C3B> /x90/x4b <CJK>
++<U4F38> /x90/x4c <CJK>
++<U4FE1> /x90/x4d <CJK>
++<U4FB5> /x90/x4e <CJK>
++<U5507> /x90/x4f <CJK>
++<U5A20> /x90/x50 <CJK>
++<U5BDD> /x90/x51 <CJK>
++<U5BE9> /x90/x52 <CJK>
++<U5FC3> /x90/x53 <CJK>
++<U614E> /x90/x54 <CJK>
++<U632F> /x90/x55 <CJK>
++<U65B0> /x90/x56 <CJK>
++<U664B> /x90/x57 <CJK>
++<U68EE> /x90/x58 <CJK>
++<U699B> /x90/x59 <CJK>
++<U6D78> /x90/x5a <CJK>
++<U6DF1> /x90/x5b <CJK>
++<U7533> /x90/x5c <CJK>
++<U75B9> /x90/x5d <CJK>
++<U771F> /x90/x5e <CJK>
++<U795E> /x90/x5f <CJK>
++<U79E6> /x90/x60 <CJK>
++<U7D33> /x90/x61 <CJK>
++<U81E3> /x90/x62 <CJK>
++<U82AF> /x90/x63 <CJK>
++<U85AA> /x90/x64 <CJK>
++<U89AA> /x90/x65 <CJK>
++<U8A3A> /x90/x66 <CJK>
++<U8EAB> /x90/x67 <CJK>
++<U8F9B> /x90/x68 <CJK>
++<U9032> /x90/x69 <CJK>
++<U91DD> /x90/x6a <CJK>
++<U9707> /x90/x6b <CJK>
++<U4EBA> /x90/x6c <CJK>
++<U4EC1> /x90/x6d <CJK>
++<U5203> /x90/x6e <CJK>
++<U5875> /x90/x6f <CJK>
++<U58EC> /x90/x70 <CJK>
++<U5C0B> /x90/x71 <CJK>
++<U751A> /x90/x72 <CJK>
++<U5C3D> /x90/x73 <CJK>
++<U814E> /x90/x74 <CJK>
++<U8A0A> /x90/x75 <CJK>
++<U8FC5> /x90/x76 <CJK>
++<U9663> /x90/x77 <CJK>
++<U976D> /x90/x78 <CJK>
++<U7B25> /x90/x79 <CJK>
++<U8ACF> /x90/x7a <CJK>
++<U9808> /x90/x7b <CJK>
++<U9162> /x90/x7c <CJK>
++<U56F3> /x90/x7d <CJK>
++<U53A8> /x90/x7e <CJK>
++<U9017> /x90/x80 <CJK>
++<U5439> /x90/x81 <CJK>
++<U5782> /x90/x82 <CJK>
++<U5E25> /x90/x83 <CJK>
++<U63A8> /x90/x84 <CJK>
++<U6C34> /x90/x85 <CJK>
++<U708A> /x90/x86 <CJK>
++<U7761> /x90/x87 <CJK>
++<U7C8B> /x90/x88 <CJK>
++<U7FE0> /x90/x89 <CJK>
++<U8870> /x90/x8a <CJK>
++<U9042> /x90/x8b <CJK>
++<U9154> /x90/x8c <CJK>
++<U9310> /x90/x8d <CJK>
++<U9318> /x90/x8e <CJK>
++<U968F> /x90/x8f <CJK>
++<U745E> /x90/x90 <CJK>
++<U9AC4> /x90/x91 <CJK>
++<U5D07> /x90/x92 <CJK>
++<U5D69> /x90/x93 <CJK>
++<U6570> /x90/x94 <CJK>
++<U67A2> /x90/x95 <CJK>
++<U8DA8> /x90/x96 <CJK>
++<U96DB> /x90/x97 <CJK>
++<U636E> /x90/x98 <CJK>
++<U6749> /x90/x99 <CJK>
++<U6919> /x90/x9a <CJK>
++<U83C5> /x90/x9b <CJK>
++<U9817> /x90/x9c <CJK>
++<U96C0> /x90/x9d <CJK>
++<U88FE> /x90/x9e <CJK>
++<U6F84> /x90/x9f <CJK>
++<U647A> /x90/xa0 <CJK>
++<U5BF8> /x90/xa1 <CJK>
++<U4E16> /x90/xa2 <CJK>
++<U702C> /x90/xa3 <CJK>
++<U755D> /x90/xa4 <CJK>
++<U662F> /x90/xa5 <CJK>
++<U51C4> /x90/xa6 <CJK>
++<U5236> /x90/xa7 <CJK>
++<U52E2> /x90/xa8 <CJK>
++<U59D3> /x90/xa9 <CJK>
++<U5F81> /x90/xaa <CJK>
++<U6027> /x90/xab <CJK>
++<U6210> /x90/xac <CJK>
++<U653F> /x90/xad <CJK>
++<U6574> /x90/xae <CJK>
++<U661F> /x90/xaf <CJK>
++<U6674> /x90/xb0 <CJK>
++<U68F2> /x90/xb1 <CJK>
++<U6816> /x90/xb2 <CJK>
++<U6B63> /x90/xb3 <CJK>
++<U6E05> /x90/xb4 <CJK>
++<U7272> /x90/xb5 <CJK>
++<U751F> /x90/xb6 <CJK>
++<U76DB> /x90/xb7 <CJK>
++<U7CBE> /x90/xb8 <CJK>
++<U8056> /x90/xb9 <CJK>
++<U58F0> /x90/xba <CJK>
++<U88FD> /x90/xbb <CJK>
++<U897F> /x90/xbc <CJK>
++<U8AA0> /x90/xbd <CJK>
++<U8A93> /x90/xbe <CJK>
++<U8ACB> /x90/xbf <CJK>
++<U901D> /x90/xc0 <CJK>
++<U9192> /x90/xc1 <CJK>
++<U9752> /x90/xc2 <CJK>
++<U9759> /x90/xc3 <CJK>
++<U6589> /x90/xc4 <CJK>
++<U7A0E> /x90/xc5 <CJK>
++<U8106> /x90/xc6 <CJK>
++<U96BB> /x90/xc7 <CJK>
++<U5E2D> /x90/xc8 <CJK>
++<U60DC> /x90/xc9 <CJK>
++<U621A> /x90/xca <CJK>
++<U65A5> /x90/xcb <CJK>
++<U6614> /x90/xcc <CJK>
++<U6790> /x90/xcd <CJK>
++<U77F3> /x90/xce <CJK>
++<U7A4D> /x90/xcf <CJK>
++<U7C4D> /x90/xd0 <CJK>
++<U7E3E> /x90/xd1 <CJK>
++<U810A> /x90/xd2 <CJK>
++<U8CAC> /x90/xd3 <CJK>
++<U8D64> /x90/xd4 <CJK>
++<U8DE1> /x90/xd5 <CJK>
++<U8E5F> /x90/xd6 <CJK>
++<U78A9> /x90/xd7 <CJK>
++<U5207> /x90/xd8 <CJK>
++<U62D9> /x90/xd9 <CJK>
++<U63A5> /x90/xda <CJK>
++<U6442> /x90/xdb <CJK>
++<U6298> /x90/xdc <CJK>
++<U8A2D> /x90/xdd <CJK>
++<U7A83> /x90/xde <CJK>
++<U7BC0> /x90/xdf <CJK>
++<U8AAC> /x90/xe0 <CJK>
++<U96EA> /x90/xe1 <CJK>
++<U7D76> /x90/xe2 <CJK>
++<U820C> /x90/xe3 <CJK>
++<U8749> /x90/xe4 <CJK>
++<U4ED9> /x90/xe5 <CJK>
++<U5148> /x90/xe6 <CJK>
++<U5343> /x90/xe7 <CJK>
++<U5360> /x90/xe8 <CJK>
++<U5BA3> /x90/xe9 <CJK>
++<U5C02> /x90/xea <CJK>
++<U5C16> /x90/xeb <CJK>
++<U5DDD> /x90/xec <CJK>
++<U6226> /x90/xed <CJK>
++<U6247> /x90/xee <CJK>
++<U64B0> /x90/xef <CJK>
++<U6813> /x90/xf0 <CJK>
++<U6834> /x90/xf1 <CJK>
++<U6CC9> /x90/xf2 <CJK>
++<U6D45> /x90/xf3 <CJK>
++<U6D17> /x90/xf4 <CJK>
++<U67D3> /x90/xf5 <CJK>
++<U6F5C> /x90/xf6 <CJK>
++<U714E> /x90/xf7 <CJK>
++<U717D> /x90/xf8 <CJK>
++<U65CB> /x90/xf9 <CJK>
++<U7A7F> /x90/xfa <CJK>
++<U7BAD> /x90/xfb <CJK>
++<U7DDA> /x90/xfc <CJK>
++<U7E4A> /x91/x40 <CJK>
++<U7FA8> /x91/x41 <CJK>
++<U817A> /x91/x42 <CJK>
++<U821B> /x91/x43 <CJK>
++<U8239> /x91/x44 <CJK>
++<U85A6> /x91/x45 <CJK>
++<U8A6E> /x91/x46 <CJK>
++<U8CCE> /x91/x47 <CJK>
++<U8DF5> /x91/x48 <CJK>
++<U9078> /x91/x49 <CJK>
++<U9077> /x91/x4a <CJK>
++<U92AD> /x91/x4b <CJK>
++<U9291> /x91/x4c <CJK>
++<U9583> /x91/x4d <CJK>
++<U9BAE> /x91/x4e <CJK>
++<U524D> /x91/x4f <CJK>
++<U5584> /x91/x50 <CJK>
++<U6F38> /x91/x51 <CJK>
++<U7136> /x91/x52 <CJK>
++<U5168> /x91/x53 <CJK>
++<U7985> /x91/x54 <CJK>
++<U7E55> /x91/x55 <CJK>
++<U81B3> /x91/x56 <CJK>
++<U7CCE> /x91/x57 <CJK>
++<U564C> /x91/x58 <CJK>
++<U5851> /x91/x59 <CJK>
++<U5CA8> /x91/x5a <CJK>
++<U63AA> /x91/x5b <CJK>
++<U66FE> /x91/x5c <CJK>
++<U66FD> /x91/x5d <CJK>
++<U695A> /x91/x5e <CJK>
++<U72D9> /x91/x5f <CJK>
++<U758F> /x91/x60 <CJK>
++<U758E> /x91/x61 <CJK>
++<U790E> /x91/x62 <CJK>
++<U7956> /x91/x63 <CJK>
++<U79DF> /x91/x64 <CJK>
++<U7C97> /x91/x65 <CJK>
++<U7D20> /x91/x66 <CJK>
++<U7D44> /x91/x67 <CJK>
++<U8607> /x91/x68 <CJK>
++<U8A34> /x91/x69 <CJK>
++<U963B> /x91/x6a <CJK>
++<U9061> /x91/x6b <CJK>
++<U9F20> /x91/x6c <CJK>
++<U50E7> /x91/x6d <CJK>
++<U5275> /x91/x6e <CJK>
++<U53CC> /x91/x6f <CJK>
++<U53E2> /x91/x70 <CJK>
++<U5009> /x91/x71 <CJK>
++<U55AA> /x91/x72 <CJK>
++<U58EE> /x91/x73 <CJK>
++<U594F> /x91/x74 <CJK>
++<U723D> /x91/x75 <CJK>
++<U5B8B> /x91/x76 <CJK>
++<U5C64> /x91/x77 <CJK>
++<U531D> /x91/x78 <CJK>
++<U60E3> /x91/x79 <CJK>
++<U60F3> /x91/x7a <CJK>
++<U635C> /x91/x7b <CJK>
++<U6383> /x91/x7c <CJK>
++<U633F> /x91/x7d <CJK>
++<U63BB> /x91/x7e <CJK>
++<U64CD> /x91/x80 <CJK>
++<U65E9> /x91/x81 <CJK>
++<U66F9> /x91/x82 <CJK>
++<U5DE3> /x91/x83 <CJK>
++<U69CD> /x91/x84 <CJK>
++<U69FD> /x91/x85 <CJK>
++<U6F15> /x91/x86 <CJK>
++<U71E5> /x91/x87 <CJK>
++<U4E89> /x91/x88 <CJK>
++<U75E9> /x91/x89 <CJK>
++<U76F8> /x91/x8a <CJK>
++<U7A93> /x91/x8b <CJK>
++<U7CDF> /x91/x8c <CJK>
++<U7DCF> /x91/x8d <CJK>
++<U7D9C> /x91/x8e <CJK>
++<U8061> /x91/x8f <CJK>
++<U8349> /x91/x90 <CJK>
++<U8358> /x91/x91 <CJK>
++<U846C> /x91/x92 <CJK>
++<U84BC> /x91/x93 <CJK>
++<U85FB> /x91/x94 <CJK>
++<U88C5> /x91/x95 <CJK>
++<U8D70> /x91/x96 <CJK>
++<U9001> /x91/x97 <CJK>
++<U906D> /x91/x98 <CJK>
++<U9397> /x91/x99 <CJK>
++<U971C> /x91/x9a <CJK>
++<U9A12> /x91/x9b <CJK>
++<U50CF> /x91/x9c <CJK>
++<U5897> /x91/x9d <CJK>
++<U618E> /x91/x9e <CJK>
++<U81D3> /x91/x9f <CJK>
++<U8535> /x91/xa0 <CJK>
++<U8D08> /x91/xa1 <CJK>
++<U9020> /x91/xa2 <CJK>
++<U4FC3> /x91/xa3 <CJK>
++<U5074> /x91/xa4 <CJK>
++<U5247> /x91/xa5 <CJK>
++<U5373> /x91/xa6 <CJK>
++<U606F> /x91/xa7 <CJK>
++<U6349> /x91/xa8 <CJK>
++<U675F> /x91/xa9 <CJK>
++<U6E2C> /x91/xaa <CJK>
++<U8DB3> /x91/xab <CJK>
++<U901F> /x91/xac <CJK>
++<U4FD7> /x91/xad <CJK>
++<U5C5E> /x91/xae <CJK>
++<U8CCA> /x91/xaf <CJK>
++<U65CF> /x91/xb0 <CJK>
++<U7D9A> /x91/xb1 <CJK>
++<U5352> /x91/xb2 <CJK>
++<U8896> /x91/xb3 <CJK>
++<U5176> /x91/xb4 <CJK>
++<U63C3> /x91/xb5 <CJK>
++<U5B58> /x91/xb6 <CJK>
++<U5B6B> /x91/xb7 <CJK>
++<U5C0A> /x91/xb8 <CJK>
++<U640D> /x91/xb9 <CJK>
++<U6751> /x91/xba <CJK>
++<U905C> /x91/xbb <CJK>
++<U4ED6> /x91/xbc <CJK>
++<U591A> /x91/xbd <CJK>
++<U592A> /x91/xbe <CJK>
++<U6C70> /x91/xbf <CJK>
++<U8A51> /x91/xc0 <CJK>
++<U553E> /x91/xc1 <CJK>
++<U5815> /x91/xc2 <CJK>
++<U59A5> /x91/xc3 <CJK>
++<U60F0> /x91/xc4 <CJK>
++<U6253> /x91/xc5 <CJK>
++<U67C1> /x91/xc6 <CJK>
++<U8235> /x91/xc7 <CJK>
++<U6955> /x91/xc8 <CJK>
++<U9640> /x91/xc9 <CJK>
++<U99C4> /x91/xca <CJK>
++<U9A28> /x91/xcb <CJK>
++<U4F53> /x91/xcc <CJK>
++<U5806> /x91/xcd <CJK>
++<U5BFE> /x91/xce <CJK>
++<U8010> /x91/xcf <CJK>
++<U5CB1> /x91/xd0 <CJK>
++<U5E2F> /x91/xd1 <CJK>
++<U5F85> /x91/xd2 <CJK>
++<U6020> /x91/xd3 <CJK>
++<U614B> /x91/xd4 <CJK>
++<U6234> /x91/xd5 <CJK>
++<U66FF> /x91/xd6 <CJK>
++<U6CF0> /x91/xd7 <CJK>
++<U6EDE> /x91/xd8 <CJK>
++<U80CE> /x91/xd9 <CJK>
++<U817F> /x91/xda <CJK>
++<U82D4> /x91/xdb <CJK>
++<U888B> /x91/xdc <CJK>
++<U8CB8> /x91/xdd <CJK>
++<U9000> /x91/xde <CJK>
++<U902E> /x91/xdf <CJK>
++<U968A> /x91/xe0 <CJK>
++<U9EDB> /x91/xe1 <CJK>
++<U9BDB> /x91/xe2 <CJK>
++<U4EE3> /x91/xe3 <CJK>
++<U53F0> /x91/xe4 <CJK>
++<U5927> /x91/xe5 <CJK>
++<U7B2C> /x91/xe6 <CJK>
++<U918D> /x91/xe7 <CJK>
++<U984C> /x91/xe8 <CJK>
++<U9DF9> /x91/xe9 <CJK>
++<U6EDD> /x91/xea <CJK>
++<U7027> /x91/xeb <CJK>
++<U5353> /x91/xec <CJK>
++<U5544> /x91/xed <CJK>
++<U5B85> /x91/xee <CJK>
++<U6258> /x91/xef <CJK>
++<U629E> /x91/xf0 <CJK>
++<U62D3> /x91/xf1 <CJK>
++<U6CA2> /x91/xf2 <CJK>
++<U6FEF> /x91/xf3 <CJK>
++<U7422> /x91/xf4 <CJK>
++<U8A17> /x91/xf5 <CJK>
++<U9438> /x91/xf6 <CJK>
++<U6FC1> /x91/xf7 <CJK>
++<U8AFE> /x91/xf8 <CJK>
++<U8338> /x91/xf9 <CJK>
++<U51E7> /x91/xfa <CJK>
++<U86F8> /x91/xfb <CJK>
++<U53EA> /x91/xfc <CJK>
++<U53E9> /x92/x40 <CJK>
++<U4F46> /x92/x41 <CJK>
++<U9054> /x92/x42 <CJK>
++<U8FB0> /x92/x43 <CJK>
++<U596A> /x92/x44 <CJK>
++<U8131> /x92/x45 <CJK>
++<U5DFD> /x92/x46 <CJK>
++<U7AEA> /x92/x47 <CJK>
++<U8FBF> /x92/x48 <CJK>
++<U68DA> /x92/x49 <CJK>
++<U8C37> /x92/x4a <CJK>
++<U72F8> /x92/x4b <CJK>
++<U9C48> /x92/x4c <CJK>
++<U6A3D> /x92/x4d <CJK>
++<U8AB0> /x92/x4e <CJK>
++<U4E39> /x92/x4f <CJK>
++<U5358> /x92/x50 <CJK>
++<U5606> /x92/x51 <CJK>
++<U5766> /x92/x52 <CJK>
++<U62C5> /x92/x53 <CJK>
++<U63A2> /x92/x54 <CJK>
++<U65E6> /x92/x55 <CJK>
++<U6B4E> /x92/x56 <CJK>
++<U6DE1> /x92/x57 <CJK>
++<U6E5B> /x92/x58 <CJK>
++<U70AD> /x92/x59 <CJK>
++<U77ED> /x92/x5a <CJK>
++<U7AEF> /x92/x5b <CJK>
++<U7BAA> /x92/x5c <CJK>
++<U7DBB> /x92/x5d <CJK>
++<U803D> /x92/x5e <CJK>
++<U80C6> /x92/x5f <CJK>
++<U86CB> /x92/x60 <CJK>
++<U8A95> /x92/x61 <CJK>
++<U935B> /x92/x62 <CJK>
++<U56E3> /x92/x63 <CJK>
++<U58C7> /x92/x64 <CJK>
++<U5F3E> /x92/x65 <CJK>
++<U65AD> /x92/x66 <CJK>
++<U6696> /x92/x67 <CJK>
++<U6A80> /x92/x68 <CJK>
++<U6BB5> /x92/x69 <CJK>
++<U7537> /x92/x6a <CJK>
++<U8AC7> /x92/x6b <CJK>
++<U5024> /x92/x6c <CJK>
++<U77E5> /x92/x6d <CJK>
++<U5730> /x92/x6e <CJK>
++<U5F1B> /x92/x6f <CJK>
++<U6065> /x92/x70 <CJK>
++<U667A> /x92/x71 <CJK>
++<U6C60> /x92/x72 <CJK>
++<U75F4> /x92/x73 <CJK>
++<U7A1A> /x92/x74 <CJK>
++<U7F6E> /x92/x75 <CJK>
++<U81F4> /x92/x76 <CJK>
++<U8718> /x92/x77 <CJK>
++<U9045> /x92/x78 <CJK>
++<U99B3> /x92/x79 <CJK>
++<U7BC9> /x92/x7a <CJK>
++<U755C> /x92/x7b <CJK>
++<U7AF9> /x92/x7c <CJK>
++<U7B51> /x92/x7d <CJK>
++<U84C4> /x92/x7e <CJK>
++<U9010> /x92/x80 <CJK>
++<U79E9> /x92/x81 <CJK>
++<U7A92> /x92/x82 <CJK>
++<U8336> /x92/x83 <CJK>
++<U5AE1> /x92/x84 <CJK>
++<U7740> /x92/x85 <CJK>
++<U4E2D> /x92/x86 <CJK>
++<U4EF2> /x92/x87 <CJK>
++<U5B99> /x92/x88 <CJK>
++<U5FE0> /x92/x89 <CJK>
++<U62BD> /x92/x8a <CJK>
++<U663C> /x92/x8b <CJK>
++<U67F1> /x92/x8c <CJK>
++<U6CE8> /x92/x8d <CJK>
++<U866B> /x92/x8e <CJK>
++<U8877> /x92/x8f <CJK>
++<U8A3B> /x92/x90 <CJK>
++<U914E> /x92/x91 <CJK>
++<U92F3> /x92/x92 <CJK>
++<U99D0> /x92/x93 <CJK>
++<U6A17> /x92/x94 <CJK>
++<U7026> /x92/x95 <CJK>
++<U732A> /x92/x96 <CJK>
++<U82E7> /x92/x97 <CJK>
++<U8457> /x92/x98 <CJK>
++<U8CAF> /x92/x99 <CJK>
++<U4E01> /x92/x9a <CJK>
++<U5146> /x92/x9b <CJK>
++<U51CB> /x92/x9c <CJK>
++<U558B> /x92/x9d <CJK>
++<U5BF5> /x92/x9e <CJK>
++<U5E16> /x92/x9f <CJK>
++<U5E33> /x92/xa0 <CJK>
++<U5E81> /x92/xa1 <CJK>
++<U5F14> /x92/xa2 <CJK>
++<U5F35> /x92/xa3 <CJK>
++<U5F6B> /x92/xa4 <CJK>
++<U5FB4> /x92/xa5 <CJK>
++<U61F2> /x92/xa6 <CJK>
++<U6311> /x92/xa7 <CJK>
++<U66A2> /x92/xa8 <CJK>
++<U671D> /x92/xa9 <CJK>
++<U6F6E> /x92/xaa <CJK>
++<U7252> /x92/xab <CJK>
++<U753A> /x92/xac <CJK>
++<U773A> /x92/xad <CJK>
++<U8074> /x92/xae <CJK>
++<U8139> /x92/xaf <CJK>
++<U8178> /x92/xb0 <CJK>
++<U8776> /x92/xb1 <CJK>
++<U8ABF> /x92/xb2 <CJK>
++<U8ADC> /x92/xb3 <CJK>
++<U8D85> /x92/xb4 <CJK>
++<U8DF3> /x92/xb5 <CJK>
++<U929A> /x92/xb6 <CJK>
++<U9577> /x92/xb7 <CJK>
++<U9802> /x92/xb8 <CJK>
++<U9CE5> /x92/xb9 <CJK>
++<U52C5> /x92/xba <CJK>
++<U6357> /x92/xbb <CJK>
++<U76F4> /x92/xbc <CJK>
++<U6715> /x92/xbd <CJK>
++<U6C88> /x92/xbe <CJK>
++<U73CD> /x92/xbf <CJK>
++<U8CC3> /x92/xc0 <CJK>
++<U93AE> /x92/xc1 <CJK>
++<U9673> /x92/xc2 <CJK>
++<U6D25> /x92/xc3 <CJK>
++<U589C> /x92/xc4 <CJK>
++<U690E> /x92/xc5 <CJK>
++<U69CC> /x92/xc6 <CJK>
++<U8FFD> /x92/xc7 <CJK>
++<U939A> /x92/xc8 <CJK>
++<U75DB> /x92/xc9 <CJK>
++<U901A> /x92/xca <CJK>
++<U585A> /x92/xcb <CJK>
++<U6802> /x92/xcc <CJK>
++<U63B4> /x92/xcd <CJK>
++<U69FB> /x92/xce <CJK>
++<U4F43> /x92/xcf <CJK>
++<U6F2C> /x92/xd0 <CJK>
++<U67D8> /x92/xd1 <CJK>
++<U8FBB> /x92/xd2 <CJK>
++<U8526> /x92/xd3 <CJK>
++<U7DB4> /x92/xd4 <CJK>
++<U9354> /x92/xd5 <CJK>
++<U693F> /x92/xd6 <CJK>
++<U6F70> /x92/xd7 <CJK>
++<U576A> /x92/xd8 <CJK>
++<U58F7> /x92/xd9 <CJK>
++<U5B2C> /x92/xda <CJK>
++<U7D2C> /x92/xdb <CJK>
++<U722A> /x92/xdc <CJK>
++<U540A> /x92/xdd <CJK>
++<U91E3> /x92/xde <CJK>
++<U9DB4> /x92/xdf <CJK>
++<U4EAD> /x92/xe0 <CJK>
++<U4F4E> /x92/xe1 <CJK>
++<U505C> /x92/xe2 <CJK>
++<U5075> /x92/xe3 <CJK>
++<U5243> /x92/xe4 <CJK>
++<U8C9E> /x92/xe5 <CJK>
++<U5448> /x92/xe6 <CJK>
++<U5824> /x92/xe7 <CJK>
++<U5B9A> /x92/xe8 <CJK>
++<U5E1D> /x92/xe9 <CJK>
++<U5E95> /x92/xea <CJK>
++<U5EAD> /x92/xeb <CJK>
++<U5EF7> /x92/xec <CJK>
++<U5F1F> /x92/xed <CJK>
++<U608C> /x92/xee <CJK>
++<U62B5> /x92/xef <CJK>
++<U633A> /x92/xf0 <CJK>
++<U63D0> /x92/xf1 <CJK>
++<U68AF> /x92/xf2 <CJK>
++<U6C40> /x92/xf3 <CJK>
++<U7887> /x92/xf4 <CJK>
++<U798E> /x92/xf5 <CJK>
++<U7A0B> /x92/xf6 <CJK>
++<U7DE0> /x92/xf7 <CJK>
++<U8247> /x92/xf8 <CJK>
++<U8A02> /x92/xf9 <CJK>
++<U8AE6> /x92/xfa <CJK>
++<U8E44> /x92/xfb <CJK>
++<U9013> /x92/xfc <CJK>
++<U90B8> /x93/x40 <CJK>
++<U912D> /x93/x41 <CJK>
++<U91D8> /x93/x42 <CJK>
++<U9F0E> /x93/x43 <CJK>
++<U6CE5> /x93/x44 <CJK>
++<U6458> /x93/x45 <CJK>
++<U64E2> /x93/x46 <CJK>
++<U6575> /x93/x47 <CJK>
++<U6EF4> /x93/x48 <CJK>
++<U7684> /x93/x49 <CJK>
++<U7B1B> /x93/x4a <CJK>
++<U9069> /x93/x4b <CJK>
++<U93D1> /x93/x4c <CJK>
++<U6EBA> /x93/x4d <CJK>
++<U54F2> /x93/x4e <CJK>
++<U5FB9> /x93/x4f <CJK>
++<U64A4> /x93/x50 <CJK>
++<U8F4D> /x93/x51 <CJK>
++<U8FED> /x93/x52 <CJK>
++<U9244> /x93/x53 <CJK>
++<U5178> /x93/x54 <CJK>
++<U586B> /x93/x55 <CJK>
++<U5929> /x93/x56 <CJK>
++<U5C55> /x93/x57 <CJK>
++<U5E97> /x93/x58 <CJK>
++<U6DFB> /x93/x59 <CJK>
++<U7E8F> /x93/x5a <CJK>
++<U751C> /x93/x5b <CJK>
++<U8CBC> /x93/x5c <CJK>
++<U8EE2> /x93/x5d <CJK>
++<U985B> /x93/x5e <CJK>
++<U70B9> /x93/x5f <CJK>
++<U4F1D> /x93/x60 <CJK>
++<U6BBF> /x93/x61 <CJK>
++<U6FB1> /x93/x62 <CJK>
++<U7530> /x93/x63 <CJK>
++<U96FB> /x93/x64 <CJK>
++<U514E> /x93/x65 <CJK>
++<U5410> /x93/x66 <CJK>
++<U5835> /x93/x67 <CJK>
++<U5857> /x93/x68 <CJK>
++<U59AC> /x93/x69 <CJK>
++<U5C60> /x93/x6a <CJK>
++<U5F92> /x93/x6b <CJK>
++<U6597> /x93/x6c <CJK>
++<U675C> /x93/x6d <CJK>
++<U6E21> /x93/x6e <CJK>
++<U767B> /x93/x6f <CJK>
++<U83DF> /x93/x70 <CJK>
++<U8CED> /x93/x71 <CJK>
++<U9014> /x93/x72 <CJK>
++<U90FD> /x93/x73 <CJK>
++<U934D> /x93/x74 <CJK>
++<U7825> /x93/x75 <CJK>
++<U783A> /x93/x76 <CJK>
++<U52AA> /x93/x77 <CJK>
++<U5EA6> /x93/x78 <CJK>
++<U571F> /x93/x79 <CJK>
++<U5974> /x93/x7a <CJK>
++<U6012> /x93/x7b <CJK>
++<U5012> /x93/x7c <CJK>
++<U515A> /x93/x7d <CJK>
++<U51AC> /x93/x7e <CJK>
++<U51CD> /x93/x80 <CJK>
++<U5200> /x93/x81 <CJK>
++<U5510> /x93/x82 <CJK>
++<U5854> /x93/x83 <CJK>
++<U5858> /x93/x84 <CJK>
++<U5957> /x93/x85 <CJK>
++<U5B95> /x93/x86 <CJK>
++<U5CF6> /x93/x87 <CJK>
++<U5D8B> /x93/x88 <CJK>
++<U60BC> /x93/x89 <CJK>
++<U6295> /x93/x8a <CJK>
++<U642D> /x93/x8b <CJK>
++<U6771> /x93/x8c <CJK>
++<U6843> /x93/x8d <CJK>
++<U68BC> /x93/x8e <CJK>
++<U68DF> /x93/x8f <CJK>
++<U76D7> /x93/x90 <CJK>
++<U6DD8> /x93/x91 <CJK>
++<U6E6F> /x93/x92 <CJK>
++<U6D9B> /x93/x93 <CJK>
++<U706F> /x93/x94 <CJK>
++<U71C8> /x93/x95 <CJK>
++<U5F53> /x93/x96 <CJK>
++<U75D8> /x93/x97 <CJK>
++<U7977> /x93/x98 <CJK>
++<U7B49> /x93/x99 <CJK>
++<U7B54> /x93/x9a <CJK>
++<U7B52> /x93/x9b <CJK>
++<U7CD6> /x93/x9c <CJK>
++<U7D71> /x93/x9d <CJK>
++<U5230> /x93/x9e <CJK>
++<U8463> /x93/x9f <CJK>
++<U8569> /x93/xa0 <CJK>
++<U85E4> /x93/xa1 <CJK>
++<U8A0E> /x93/xa2 <CJK>
++<U8B04> /x93/xa3 <CJK>
++<U8C46> /x93/xa4 <CJK>
++<U8E0F> /x93/xa5 <CJK>
++<U9003> /x93/xa6 <CJK>
++<U900F> /x93/xa7 <CJK>
++<U9419> /x93/xa8 <CJK>
++<U9676> /x93/xa9 <CJK>
++<U982D> /x93/xaa <CJK>
++<U9A30> /x93/xab <CJK>
++<U95D8> /x93/xac <CJK>
++<U50CD> /x93/xad <CJK>
++<U52D5> /x93/xae <CJK>
++<U540C> /x93/xaf <CJK>
++<U5802> /x93/xb0 <CJK>
++<U5C0E> /x93/xb1 <CJK>
++<U61A7> /x93/xb2 <CJK>
++<U649E> /x93/xb3 <CJK>
++<U6D1E> /x93/xb4 <CJK>
++<U77B3> /x93/xb5 <CJK>
++<U7AE5> /x93/xb6 <CJK>
++<U80F4> /x93/xb7 <CJK>
++<U8404> /x93/xb8 <CJK>
++<U9053> /x93/xb9 <CJK>
++<U9285> /x93/xba <CJK>
++<U5CE0> /x93/xbb <CJK>
++<U9D07> /x93/xbc <CJK>
++<U533F> /x93/xbd <CJK>
++<U5F97> /x93/xbe <CJK>
++<U5FB3> /x93/xbf <CJK>
++<U6D9C> /x93/xc0 <CJK>
++<U7279> /x93/xc1 <CJK>
++<U7763> /x93/xc2 <CJK>
++<U79BF> /x93/xc3 <CJK>
++<U7BE4> /x93/xc4 <CJK>
++<U6BD2> /x93/xc5 <CJK>
++<U72EC> /x93/xc6 <CJK>
++<U8AAD> /x93/xc7 <CJK>
++<U6803> /x93/xc8 <CJK>
++<U6A61> /x93/xc9 <CJK>
++<U51F8> /x93/xca <CJK>
++<U7A81> /x93/xcb <CJK>
++<U6934> /x93/xcc <CJK>
++<U5C4A> /x93/xcd <CJK>
++<U9CF6> /x93/xce <CJK>
++<U82EB> /x93/xcf <CJK>
++<U5BC5> /x93/xd0 <CJK>
++<U9149> /x93/xd1 <CJK>
++<U701E> /x93/xd2 <CJK>
++<U5678> /x93/xd3 <CJK>
++<U5C6F> /x93/xd4 <CJK>
++<U60C7> /x93/xd5 <CJK>
++<U6566> /x93/xd6 <CJK>
++<U6C8C> /x93/xd7 <CJK>
++<U8C5A> /x93/xd8 <CJK>
++<U9041> /x93/xd9 <CJK>
++<U9813> /x93/xda <CJK>
++<U5451> /x93/xdb <CJK>
++<U66C7> /x93/xdc <CJK>
++<U920D> /x93/xdd <CJK>
++<U5948> /x93/xde <CJK>
++<U90A3> /x93/xdf <CJK>
++<U5185> /x93/xe0 <CJK>
++<U4E4D> /x93/xe1 <CJK>
++<U51EA> /x93/xe2 <CJK>
++<U8599> /x93/xe3 <CJK>
++<U8B0E> /x93/xe4 <CJK>
++<U7058> /x93/xe5 <CJK>
++<U637A> /x93/xe6 <CJK>
++<U934B> /x93/xe7 <CJK>
++<U6962> /x93/xe8 <CJK>
++<U99B4> /x93/xe9 <CJK>
++<U7E04> /x93/xea <CJK>
++<U7577> /x93/xeb <CJK>
++<U5357> /x93/xec <CJK>
++<U6960> /x93/xed <CJK>
++<U8EDF> /x93/xee <CJK>
++<U96E3> /x93/xef <CJK>
++<U6C5D> /x93/xf0 <CJK>
++<U4E8C> /x93/xf1 <CJK>
++<U5C3C> /x93/xf2 <CJK>
++<U5F10> /x93/xf3 <CJK>
++<U8FE9> /x93/xf4 <CJK>
++<U5302> /x93/xf5 <CJK>
++<U8CD1> /x93/xf6 <CJK>
++<U8089> /x93/xf7 <CJK>
++<U8679> /x93/xf8 <CJK>
++<U5EFF> /x93/xf9 <CJK>
++<U65E5> /x93/xfa <CJK>
++<U4E73> /x93/xfb <CJK>
++<U5165> /x93/xfc <CJK>
++<U5982> /x94/x40 <CJK>
++<U5C3F> /x94/x41 <CJK>
++<U97EE> /x94/x42 <CJK>
++<U4EFB> /x94/x43 <CJK>
++<U598A> /x94/x44 <CJK>
++<U5FCD> /x94/x45 <CJK>
++<U8A8D> /x94/x46 <CJK>
++<U6FE1> /x94/x47 <CJK>
++<U79B0> /x94/x48 <CJK>
++<U7962> /x94/x49 <CJK>
++<U5BE7> /x94/x4a <CJK>
++<U8471> /x94/x4b <CJK>
++<U732B> /x94/x4c <CJK>
++<U71B1> /x94/x4d <CJK>
++<U5E74> /x94/x4e <CJK>
++<U5FF5> /x94/x4f <CJK>
++<U637B> /x94/x50 <CJK>
++<U649A> /x94/x51 <CJK>
++<U71C3> /x94/x52 <CJK>
++<U7C98> /x94/x53 <CJK>
++<U4E43> /x94/x54 <CJK>
++<U5EFC> /x94/x55 <CJK>
++<U4E4B> /x94/x56 <CJK>
++<U57DC> /x94/x57 <CJK>
++<U56A2> /x94/x58 <CJK>
++<U60A9> /x94/x59 <CJK>
++<U6FC3> /x94/x5a <CJK>
++<U7D0D> /x94/x5b <CJK>
++<U80FD> /x94/x5c <CJK>
++<U8133> /x94/x5d <CJK>
++<U81BF> /x94/x5e <CJK>
++<U8FB2> /x94/x5f <CJK>
++<U8997> /x94/x60 <CJK>
++<U86A4> /x94/x61 <CJK>
++<U5DF4> /x94/x62 <CJK>
++<U628A> /x94/x63 <CJK>
++<U64AD> /x94/x64 <CJK>
++<U8987> /x94/x65 <CJK>
++<U6777> /x94/x66 <CJK>
++<U6CE2> /x94/x67 <CJK>
++<U6D3E> /x94/x68 <CJK>
++<U7436> /x94/x69 <CJK>
++<U7834> /x94/x6a <CJK>
++<U5A46> /x94/x6b <CJK>
++<U7F75> /x94/x6c <CJK>
++<U82AD> /x94/x6d <CJK>
++<U99AC> /x94/x6e <CJK>
++<U4FF3> /x94/x6f <CJK>
++<U5EC3> /x94/x70 <CJK>
++<U62DD> /x94/x71 <CJK>
++<U6392> /x94/x72 <CJK>
++<U6557> /x94/x73 <CJK>
++<U676F> /x94/x74 <CJK>
++<U76C3> /x94/x75 <CJK>
++<U724C> /x94/x76 <CJK>
++<U80CC> /x94/x77 <CJK>
++<U80BA> /x94/x78 <CJK>
++<U8F29> /x94/x79 <CJK>
++<U914D> /x94/x7a <CJK>
++<U500D> /x94/x7b <CJK>
++<U57F9> /x94/x7c <CJK>
++<U5A92> /x94/x7d <CJK>
++<U6885> /x94/x7e <CJK>
++<U6973> /x94/x80 <CJK>
++<U7164> /x94/x81 <CJK>
++<U72FD> /x94/x82 <CJK>
++<U8CB7> /x94/x83 <CJK>
++<U58F2> /x94/x84 <CJK>
++<U8CE0> /x94/x85 <CJK>
++<U966A> /x94/x86 <CJK>
++<U9019> /x94/x87 <CJK>
++<U877F> /x94/x88 <CJK>
++<U79E4> /x94/x89 <CJK>
++<U77E7> /x94/x8a <CJK>
++<U8429> /x94/x8b <CJK>
++<U4F2F> /x94/x8c <CJK>
++<U5265> /x94/x8d <CJK>
++<U535A> /x94/x8e <CJK>
++<U62CD> /x94/x8f <CJK>
++<U67CF> /x94/x90 <CJK>
++<U6CCA> /x94/x91 <CJK>
++<U767D> /x94/x92 <CJK>
++<U7B94> /x94/x93 <CJK>
++<U7C95> /x94/x94 <CJK>
++<U8236> /x94/x95 <CJK>
++<U8584> /x94/x96 <CJK>
++<U8FEB> /x94/x97 <CJK>
++<U66DD> /x94/x98 <CJK>
++<U6F20> /x94/x99 <CJK>
++<U7206> /x94/x9a <CJK>
++<U7E1B> /x94/x9b <CJK>
++<U83AB> /x94/x9c <CJK>
++<U99C1> /x94/x9d <CJK>
++<U9EA6> /x94/x9e <CJK>
++<U51FD> /x94/x9f <CJK>
++<U7BB1> /x94/xa0 <CJK>
++<U7872> /x94/xa1 <CJK>
++<U7BB8> /x94/xa2 <CJK>
++<U8087> /x94/xa3 <CJK>
++<U7B48> /x94/xa4 <CJK>
++<U6AE8> /x94/xa5 <CJK>
++<U5E61> /x94/xa6 <CJK>
++<U808C> /x94/xa7 <CJK>
++<U7551> /x94/xa8 <CJK>
++<U7560> /x94/xa9 <CJK>
++<U516B> /x94/xaa <CJK>
++<U9262> /x94/xab <CJK>
++<U6E8C> /x94/xac <CJK>
++<U767A> /x94/xad <CJK>
++<U9197> /x94/xae <CJK>
++<U9AEA> /x94/xaf <CJK>
++<U4F10> /x94/xb0 <CJK>
++<U7F70> /x94/xb1 <CJK>
++<U629C> /x94/xb2 <CJK>
++<U7B4F> /x94/xb3 <CJK>
++<U95A5> /x94/xb4 <CJK>
++<U9CE9> /x94/xb5 <CJK>
++<U567A> /x94/xb6 <CJK>
++<U5859> /x94/xb7 <CJK>
++<U86E4> /x94/xb8 <CJK>
++<U96BC> /x94/xb9 <CJK>
++<U4F34> /x94/xba <CJK>
++<U5224> /x94/xbb <CJK>
++<U534A> /x94/xbc <CJK>
++<U53CD> /x94/xbd <CJK>
++<U53DB> /x94/xbe <CJK>
++<U5E06> /x94/xbf <CJK>
++<U642C> /x94/xc0 <CJK>
++<U6591> /x94/xc1 <CJK>
++<U677F> /x94/xc2 <CJK>
++<U6C3E> /x94/xc3 <CJK>
++<U6C4E> /x94/xc4 <CJK>
++<U7248> /x94/xc5 <CJK>
++<U72AF> /x94/xc6 <CJK>
++<U73ED> /x94/xc7 <CJK>
++<U7554> /x94/xc8 <CJK>
++<U7E41> /x94/xc9 <CJK>
++<U822C> /x94/xca <CJK>
++<U85E9> /x94/xcb <CJK>
++<U8CA9> /x94/xcc <CJK>
++<U7BC4> /x94/xcd <CJK>
++<U91C6> /x94/xce <CJK>
++<U7169> /x94/xcf <CJK>
++<U9812> /x94/xd0 <CJK>
++<U98EF> /x94/xd1 <CJK>
++<U633D> /x94/xd2 <CJK>
++<U6669> /x94/xd3 <CJK>
++<U756A> /x94/xd4 <CJK>
++<U76E4> /x94/xd5 <CJK>
++<U78D0> /x94/xd6 <CJK>
++<U8543> /x94/xd7 <CJK>
++<U86EE> /x94/xd8 <CJK>
++<U532A> /x94/xd9 <CJK>
++<U5351> /x94/xda <CJK>
++<U5426> /x94/xdb <CJK>
++<U5983> /x94/xdc <CJK>
++<U5E87> /x94/xdd <CJK>
++<U5F7C> /x94/xde <CJK>
++<U60B2> /x94/xdf <CJK>
++<U6249> /x94/xe0 <CJK>
++<U6279> /x94/xe1 <CJK>
++<U62AB> /x94/xe2 <CJK>
++<U6590> /x94/xe3 <CJK>
++<U6BD4> /x94/xe4 <CJK>
++<U6CCC> /x94/xe5 <CJK>
++<U75B2> /x94/xe6 <CJK>
++<U76AE> /x94/xe7 <CJK>
++<U7891> /x94/xe8 <CJK>
++<U79D8> /x94/xe9 <CJK>
++<U7DCB> /x94/xea <CJK>
++<U7F77> /x94/xeb <CJK>
++<U80A5> /x94/xec <CJK>
++<U88AB> /x94/xed <CJK>
++<U8AB9> /x94/xee <CJK>
++<U8CBB> /x94/xef <CJK>
++<U907F> /x94/xf0 <CJK>
++<U975E> /x94/xf1 <CJK>
++<U98DB> /x94/xf2 <CJK>
++<U6A0B> /x94/xf3 <CJK>
++<U7C38> /x94/xf4 <CJK>
++<U5099> /x94/xf5 <CJK>
++<U5C3E> /x94/xf6 <CJK>
++<U5FAE> /x94/xf7 <CJK>
++<U6787> /x94/xf8 <CJK>
++<U6BD8> /x94/xf9 <CJK>
++<U7435> /x94/xfa <CJK>
++<U7709> /x94/xfb <CJK>
++<U7F8E> /x94/xfc <CJK>
++<U9F3B> /x95/x40 <CJK>
++<U67CA> /x95/x41 <CJK>
++<U7A17> /x95/x42 <CJK>
++<U5339> /x95/x43 <CJK>
++<U758B> /x95/x44 <CJK>
++<U9AED> /x95/x45 <CJK>
++<U5F66> /x95/x46 <CJK>
++<U819D> /x95/x47 <CJK>
++<U83F1> /x95/x48 <CJK>
++<U8098> /x95/x49 <CJK>
++<U5F3C> /x95/x4a <CJK>
++<U5FC5> /x95/x4b <CJK>
++<U7562> /x95/x4c <CJK>
++<U7B46> /x95/x4d <CJK>
++<U903C> /x95/x4e <CJK>
++<U6867> /x95/x4f <CJK>
++<U59EB> /x95/x50 <CJK>
++<U5A9B> /x95/x51 <CJK>
++<U7D10> /x95/x52 <CJK>
++<U767E> /x95/x53 <CJK>
++<U8B2C> /x95/x54 <CJK>
++<U4FF5> /x95/x55 <CJK>
++<U5F6A> /x95/x56 <CJK>
++<U6A19> /x95/x57 <CJK>
++<U6C37> /x95/x58 <CJK>
++<U6F02> /x95/x59 <CJK>
++<U74E2> /x95/x5a <CJK>
++<U7968> /x95/x5b <CJK>
++<U8868> /x95/x5c <CJK>
++<U8A55> /x95/x5d <CJK>
++<U8C79> /x95/x5e <CJK>
++<U5EDF> /x95/x5f <CJK>
++<U63CF> /x95/x60 <CJK>
++<U75C5> /x95/x61 <CJK>
++<U79D2> /x95/x62 <CJK>
++<U82D7> /x95/x63 <CJK>
++<U9328> /x95/x64 <CJK>
++<U92F2> /x95/x65 <CJK>
++<U849C> /x95/x66 <CJK>
++<U86ED> /x95/x67 <CJK>
++<U9C2D> /x95/x68 <CJK>
++<U54C1> /x95/x69 <CJK>
++<U5F6C> /x95/x6a <CJK>
++<U658C> /x95/x6b <CJK>
++<U6D5C> /x95/x6c <CJK>
++<U7015> /x95/x6d <CJK>
++<U8CA7> /x95/x6e <CJK>
++<U8CD3> /x95/x6f <CJK>
++<U983B> /x95/x70 <CJK>
++<U654F> /x95/x71 <CJK>
++<U74F6> /x95/x72 <CJK>
++<U4E0D> /x95/x73 <CJK>
++<U4ED8> /x95/x74 <CJK>
++<U57E0> /x95/x75 <CJK>
++<U592B> /x95/x76 <CJK>
++<U5A66> /x95/x77 <CJK>
++<U5BCC> /x95/x78 <CJK>
++<U51A8> /x95/x79 <CJK>
++<U5E03> /x95/x7a <CJK>
++<U5E9C> /x95/x7b <CJK>
++<U6016> /x95/x7c <CJK>
++<U6276> /x95/x7d <CJK>
++<U6577> /x95/x7e <CJK>
++<U65A7> /x95/x80 <CJK>
++<U666E> /x95/x81 <CJK>
++<U6D6E> /x95/x82 <CJK>
++<U7236> /x95/x83 <CJK>
++<U7B26> /x95/x84 <CJK>
++<U8150> /x95/x85 <CJK>
++<U819A> /x95/x86 <CJK>
++<U8299> /x95/x87 <CJK>
++<U8B5C> /x95/x88 <CJK>
++<U8CA0> /x95/x89 <CJK>
++<U8CE6> /x95/x8a <CJK>
++<U8D74> /x95/x8b <CJK>
++<U961C> /x95/x8c <CJK>
++<U9644> /x95/x8d <CJK>
++<U4FAE> /x95/x8e <CJK>
++<U64AB> /x95/x8f <CJK>
++<U6B66> /x95/x90 <CJK>
++<U821E> /x95/x91 <CJK>
++<U8461> /x95/x92 <CJK>
++<U856A> /x95/x93 <CJK>
++<U90E8> /x95/x94 <CJK>
++<U5C01> /x95/x95 <CJK>
++<U6953> /x95/x96 <CJK>
++<U98A8> /x95/x97 <CJK>
++<U847A> /x95/x98 <CJK>
++<U8557> /x95/x99 <CJK>
++<U4F0F> /x95/x9a <CJK>
++<U526F> /x95/x9b <CJK>
++<U5FA9> /x95/x9c <CJK>
++<U5E45> /x95/x9d <CJK>
++<U670D> /x95/x9e <CJK>
++<U798F> /x95/x9f <CJK>
++<U8179> /x95/xa0 <CJK>
++<U8907> /x95/xa1 <CJK>
++<U8986> /x95/xa2 <CJK>
++<U6DF5> /x95/xa3 <CJK>
++<U5F17> /x95/xa4 <CJK>
++<U6255> /x95/xa5 <CJK>
++<U6CB8> /x95/xa6 <CJK>
++<U4ECF> /x95/xa7 <CJK>
++<U7269> /x95/xa8 <CJK>
++<U9B92> /x95/xa9 <CJK>
++<U5206> /x95/xaa <CJK>
++<U543B> /x95/xab <CJK>
++<U5674> /x95/xac <CJK>
++<U58B3> /x95/xad <CJK>
++<U61A4> /x95/xae <CJK>
++<U626E> /x95/xaf <CJK>
++<U711A> /x95/xb0 <CJK>
++<U596E> /x95/xb1 <CJK>
++<U7C89> /x95/xb2 <CJK>
++<U7CDE> /x95/xb3 <CJK>
++<U7D1B> /x95/xb4 <CJK>
++<U96F0> /x95/xb5 <CJK>
++<U6587> /x95/xb6 <CJK>
++<U805E> /x95/xb7 <CJK>
++<U4E19> /x95/xb8 <CJK>
++<U4F75> /x95/xb9 <CJK>
++<U5175> /x95/xba <CJK>
++<U5840> /x95/xbb <CJK>
++<U5E63> /x95/xbc <CJK>
++<U5E73> /x95/xbd <CJK>
++<U5F0A> /x95/xbe <CJK>
++<U67C4> /x95/xbf <CJK>
++<U4E26> /x95/xc0 <CJK>
++<U853D> /x95/xc1 <CJK>
++<U9589> /x95/xc2 <CJK>
++<U965B> /x95/xc3 <CJK>
++<U7C73> /x95/xc4 <CJK>
++<U9801> /x95/xc5 <CJK>
++<U50FB> /x95/xc6 <CJK>
++<U58C1> /x95/xc7 <CJK>
++<U7656> /x95/xc8 <CJK>
++<U78A7> /x95/xc9 <CJK>
++<U5225> /x95/xca <CJK>
++<U77A5> /x95/xcb <CJK>
++<U8511> /x95/xcc <CJK>
++<U7B86> /x95/xcd <CJK>
++<U504F> /x95/xce <CJK>
++<U5909> /x95/xcf <CJK>
++<U7247> /x95/xd0 <CJK>
++<U7BC7> /x95/xd1 <CJK>
++<U7DE8> /x95/xd2 <CJK>
++<U8FBA> /x95/xd3 <CJK>
++<U8FD4> /x95/xd4 <CJK>
++<U904D> /x95/xd5 <CJK>
++<U4FBF> /x95/xd6 <CJK>
++<U52C9> /x95/xd7 <CJK>
++<U5A29> /x95/xd8 <CJK>
++<U5F01> /x95/xd9 <CJK>
++<U97AD> /x95/xda <CJK>
++<U4FDD> /x95/xdb <CJK>
++<U8217> /x95/xdc <CJK>
++<U92EA> /x95/xdd <CJK>
++<U5703> /x95/xde <CJK>
++<U6355> /x95/xdf <CJK>
++<U6B69> /x95/xe0 <CJK>
++<U752B> /x95/xe1 <CJK>
++<U88DC> /x95/xe2 <CJK>
++<U8F14> /x95/xe3 <CJK>
++<U7A42> /x95/xe4 <CJK>
++<U52DF> /x95/xe5 <CJK>
++<U5893> /x95/xe6 <CJK>
++<U6155> /x95/xe7 <CJK>
++<U620A> /x95/xe8 <CJK>
++<U66AE> /x95/xe9 <CJK>
++<U6BCD> /x95/xea <CJK>
++<U7C3F> /x95/xeb <CJK>
++<U83E9> /x95/xec <CJK>
++<U5023> /x95/xed <CJK>
++<U4FF8> /x95/xee <CJK>
++<U5305> /x95/xef <CJK>
++<U5446> /x95/xf0 <CJK>
++<U5831> /x95/xf1 <CJK>
++<U5949> /x95/xf2 <CJK>
++<U5B9D> /x95/xf3 <CJK>
++<U5CF0> /x95/xf4 <CJK>
++<U5CEF> /x95/xf5 <CJK>
++<U5D29> /x95/xf6 <CJK>
++<U5E96> /x95/xf7 <CJK>
++<U62B1> /x95/xf8 <CJK>
++<U6367> /x95/xf9 <CJK>
++<U653E> /x95/xfa <CJK>
++<U65B9> /x95/xfb <CJK>
++<U670B> /x95/xfc <CJK>
++<U6CD5> /x96/x40 <CJK>
++<U6CE1> /x96/x41 <CJK>
++<U70F9> /x96/x42 <CJK>
++<U7832> /x96/x43 <CJK>
++<U7E2B> /x96/x44 <CJK>
++<U80DE> /x96/x45 <CJK>
++<U82B3> /x96/x46 <CJK>
++<U840C> /x96/x47 <CJK>
++<U84EC> /x96/x48 <CJK>
++<U8702> /x96/x49 <CJK>
++<U8912> /x96/x4a <CJK>
++<U8A2A> /x96/x4b <CJK>
++<U8C4A> /x96/x4c <CJK>
++<U90A6> /x96/x4d <CJK>
++<U92D2> /x96/x4e <CJK>
++<U98FD> /x96/x4f <CJK>
++<U9CF3> /x96/x50 <CJK>
++<U9D6C> /x96/x51 <CJK>
++<U4E4F> /x96/x52 <CJK>
++<U4EA1> /x96/x53 <CJK>
++<U508D> /x96/x54 <CJK>
++<U5256> /x96/x55 <CJK>
++<U574A> /x96/x56 <CJK>
++<U59A8> /x96/x57 <CJK>
++<U5E3D> /x96/x58 <CJK>
++<U5FD8> /x96/x59 <CJK>
++<U5FD9> /x96/x5a <CJK>
++<U623F> /x96/x5b <CJK>
++<U66B4> /x96/x5c <CJK>
++<U671B> /x96/x5d <CJK>
++<U67D0> /x96/x5e <CJK>
++<U68D2> /x96/x5f <CJK>
++<U5192> /x96/x60 <CJK>
++<U7D21> /x96/x61 <CJK>
++<U80AA> /x96/x62 <CJK>
++<U81A8> /x96/x63 <CJK>
++<U8B00> /x96/x64 <CJK>
++<U8C8C> /x96/x65 <CJK>
++<U8CBF> /x96/x66 <CJK>
++<U927E> /x96/x67 <CJK>
++<U9632> /x96/x68 <CJK>
++<U5420> /x96/x69 <CJK>
++<U982C> /x96/x6a <CJK>
++<U5317> /x96/x6b <CJK>
++<U50D5> /x96/x6c <CJK>
++<U535C> /x96/x6d <CJK>
++<U58A8> /x96/x6e <CJK>
++<U64B2> /x96/x6f <CJK>
++<U6734> /x96/x70 <CJK>
++<U7267> /x96/x71 <CJK>
++<U7766> /x96/x72 <CJK>
++<U7A46> /x96/x73 <CJK>
++<U91E6> /x96/x74 <CJK>
++<U52C3> /x96/x75 <CJK>
++<U6CA1> /x96/x76 <CJK>
++<U6B86> /x96/x77 <CJK>
++<U5800> /x96/x78 <CJK>
++<U5E4C> /x96/x79 <CJK>
++<U5954> /x96/x7a <CJK>
++<U672C> /x96/x7b <CJK>
++<U7FFB> /x96/x7c <CJK>
++<U51E1> /x96/x7d <CJK>
++<U76C6> /x96/x7e <CJK>
++<U6469> /x96/x80 <CJK>
++<U78E8> /x96/x81 <CJK>
++<U9B54> /x96/x82 <CJK>
++<U9EBB> /x96/x83 <CJK>
++<U57CB> /x96/x84 <CJK>
++<U59B9> /x96/x85 <CJK>
++<U6627> /x96/x86 <CJK>
++<U679A> /x96/x87 <CJK>
++<U6BCE> /x96/x88 <CJK>
++<U54E9> /x96/x89 <CJK>
++<U69D9> /x96/x8a <CJK>
++<U5E55> /x96/x8b <CJK>
++<U819C> /x96/x8c <CJK>
++<U6795> /x96/x8d <CJK>
++<U9BAA> /x96/x8e <CJK>
++<U67FE> /x96/x8f <CJK>
++<U9C52> /x96/x90 <CJK>
++<U685D> /x96/x91 <CJK>
++<U4EA6> /x96/x92 <CJK>
++<U4FE3> /x96/x93 <CJK>
++<U53C8> /x96/x94 <CJK>
++<U62B9> /x96/x95 <CJK>
++<U672B> /x96/x96 <CJK>
++<U6CAB> /x96/x97 <CJK>
++<U8FC4> /x96/x98 <CJK>
++<U4FAD> /x96/x99 <CJK>
++<U7E6D> /x96/x9a <CJK>
++<U9EBF> /x96/x9b <CJK>
++<U4E07> /x96/x9c <CJK>
++<U6162> /x96/x9d <CJK>
++<U6E80> /x96/x9e <CJK>
++<U6F2B> /x96/x9f <CJK>
++<U8513> /x96/xa0 <CJK>
++<U5473> /x96/xa1 <CJK>
++<U672A> /x96/xa2 <CJK>
++<U9B45> /x96/xa3 <CJK>
++<U5DF3> /x96/xa4 <CJK>
++<U7B95> /x96/xa5 <CJK>
++<U5CAC> /x96/xa6 <CJK>
++<U5BC6> /x96/xa7 <CJK>
++<U871C> /x96/xa8 <CJK>
++<U6E4A> /x96/xa9 <CJK>
++<U84D1> /x96/xaa <CJK>
++<U7A14> /x96/xab <CJK>
++<U8108> /x96/xac <CJK>
++<U5999> /x96/xad <CJK>
++<U7C8D> /x96/xae <CJK>
++<U6C11> /x96/xaf <CJK>
++<U7720> /x96/xb0 <CJK>
++<U52D9> /x96/xb1 <CJK>
++<U5922> /x96/xb2 <CJK>
++<U7121> /x96/xb3 <CJK>
++<U725F> /x96/xb4 <CJK>
++<U77DB> /x96/xb5 <CJK>
++<U9727> /x96/xb6 <CJK>
++<U9D61> /x96/xb7 <CJK>
++<U690B> /x96/xb8 <CJK>
++<U5A7F> /x96/xb9 <CJK>
++<U5A18> /x96/xba <CJK>
++<U51A5> /x96/xbb <CJK>
++<U540D> /x96/xbc <CJK>
++<U547D> /x96/xbd <CJK>
++<U660E> /x96/xbe <CJK>
++<U76DF> /x96/xbf <CJK>
++<U8FF7> /x96/xc0 <CJK>
++<U9298> /x96/xc1 <CJK>
++<U9CF4> /x96/xc2 <CJK>
++<U59EA> /x96/xc3 <CJK>
++<U725D> /x96/xc4 <CJK>
++<U6EC5> /x96/xc5 <CJK>
++<U514D> /x96/xc6 <CJK>
++<U68C9> /x96/xc7 <CJK>
++<U7DBF> /x96/xc8 <CJK>
++<U7DEC> /x96/xc9 <CJK>
++<U9762> /x96/xca <CJK>
++<U9EBA> /x96/xcb <CJK>
++<U6478> /x96/xcc <CJK>
++<U6A21> /x96/xcd <CJK>
++<U8302> /x96/xce <CJK>
++<U5984> /x96/xcf <CJK>
++<U5B5F> /x96/xd0 <CJK>
++<U6BDB> /x96/xd1 <CJK>
++<U731B> /x96/xd2 <CJK>
++<U76F2> /x96/xd3 <CJK>
++<U7DB2> /x96/xd4 <CJK>
++<U8017> /x96/xd5 <CJK>
++<U8499> /x96/xd6 <CJK>
++<U5132> /x96/xd7 <CJK>
++<U6728> /x96/xd8 <CJK>
++<U9ED9> /x96/xd9 <CJK>
++<U76EE> /x96/xda <CJK>
++<U6762> /x96/xdb <CJK>
++<U52FF> /x96/xdc <CJK>
++<U9905> /x96/xdd <CJK>
++<U5C24> /x96/xde <CJK>
++<U623B> /x96/xdf <CJK>
++<U7C7E> /x96/xe0 <CJK>
++<U8CB0> /x96/xe1 <CJK>
++<U554F> /x96/xe2 <CJK>
++<U60B6> /x96/xe3 <CJK>
++<U7D0B> /x96/xe4 <CJK>
++<U9580> /x96/xe5 <CJK>
++<U5301> /x96/xe6 <CJK>
++<U4E5F> /x96/xe7 <CJK>
++<U51B6> /x96/xe8 <CJK>
++<U591C> /x96/xe9 <CJK>
++<U723A> /x96/xea <CJK>
++<U8036> /x96/xeb <CJK>
++<U91CE> /x96/xec <CJK>
++<U5F25> /x96/xed <CJK>
++<U77E2> /x96/xee <CJK>
++<U5384> /x96/xef <CJK>
++<U5F79> /x96/xf0 <CJK>
++<U7D04> /x96/xf1 <CJK>
++<U85AC> /x96/xf2 <CJK>
++<U8A33> /x96/xf3 <CJK>
++<U8E8D> /x96/xf4 <CJK>
++<U9756> /x96/xf5 <CJK>
++<U67F3> /x96/xf6 <CJK>
++<U85AE> /x96/xf7 <CJK>
++<U9453> /x96/xf8 <CJK>
++<U6109> /x96/xf9 <CJK>
++<U6108> /x96/xfa <CJK>
++<U6CB9> /x96/xfb <CJK>
++<U7652> /x96/xfc <CJK>
++<U8AED> /x97/x40 <CJK>
++<U8F38> /x97/x41 <CJK>
++<U552F> /x97/x42 <CJK>
++<U4F51> /x97/x43 <CJK>
++<U512A> /x97/x44 <CJK>
++<U52C7> /x97/x45 <CJK>
++<U53CB> /x97/x46 <CJK>
++<U5BA5> /x97/x47 <CJK>
++<U5E7D> /x97/x48 <CJK>
++<U60A0> /x97/x49 <CJK>
++<U6182> /x97/x4a <CJK>
++<U63D6> /x97/x4b <CJK>
++<U6709> /x97/x4c <CJK>
++<U67DA> /x97/x4d <CJK>
++<U6E67> /x97/x4e <CJK>
++<U6D8C> /x97/x4f <CJK>
++<U7336> /x97/x50 <CJK>
++<U7337> /x97/x51 <CJK>
++<U7531> /x97/x52 <CJK>
++<U7950> /x97/x53 <CJK>
++<U88D5> /x97/x54 <CJK>
++<U8A98> /x97/x55 <CJK>
++<U904A> /x97/x56 <CJK>
++<U9091> /x97/x57 <CJK>
++<U90F5> /x97/x58 <CJK>
++<U96C4> /x97/x59 <CJK>
++<U878D> /x97/x5a <CJK>
++<U5915> /x97/x5b <CJK>
++<U4E88> /x97/x5c <CJK>
++<U4F59> /x97/x5d <CJK>
++<U4E0E> /x97/x5e <CJK>
++<U8A89> /x97/x5f <CJK>
++<U8F3F> /x97/x60 <CJK>
++<U9810> /x97/x61 <CJK>
++<U50AD> /x97/x62 <CJK>
++<U5E7C> /x97/x63 <CJK>
++<U5996> /x97/x64 <CJK>
++<U5BB9> /x97/x65 <CJK>
++<U5EB8> /x97/x66 <CJK>
++<U63DA> /x97/x67 <CJK>
++<U63FA> /x97/x68 <CJK>
++<U64C1> /x97/x69 <CJK>
++<U66DC> /x97/x6a <CJK>
++<U694A> /x97/x6b <CJK>
++<U69D8> /x97/x6c <CJK>
++<U6D0B> /x97/x6d <CJK>
++<U6EB6> /x97/x6e <CJK>
++<U7194> /x97/x6f <CJK>
++<U7528> /x97/x70 <CJK>
++<U7AAF> /x97/x71 <CJK>
++<U7F8A> /x97/x72 <CJK>
++<U8000> /x97/x73 <CJK>
++<U8449> /x97/x74 <CJK>
++<U84C9> /x97/x75 <CJK>
++<U8981> /x97/x76 <CJK>
++<U8B21> /x97/x77 <CJK>
++<U8E0A> /x97/x78 <CJK>
++<U9065> /x97/x79 <CJK>
++<U967D> /x97/x7a <CJK>
++<U990A> /x97/x7b <CJK>
++<U617E> /x97/x7c <CJK>
++<U6291> /x97/x7d <CJK>
++<U6B32> /x97/x7e <CJK>
++<U6C83> /x97/x80 <CJK>
++<U6D74> /x97/x81 <CJK>
++<U7FCC> /x97/x82 <CJK>
++<U7FFC> /x97/x83 <CJK>
++<U6DC0> /x97/x84 <CJK>
++<U7F85> /x97/x85 <CJK>
++<U87BA> /x97/x86 <CJK>
++<U88F8> /x97/x87 <CJK>
++<U6765> /x97/x88 <CJK>
++<U83B1> /x97/x89 <CJK>
++<U983C> /x97/x8a <CJK>
++<U96F7> /x97/x8b <CJK>
++<U6D1B> /x97/x8c <CJK>
++<U7D61> /x97/x8d <CJK>
++<U843D> /x97/x8e <CJK>
++<U916A> /x97/x8f <CJK>
++<U4E71> /x97/x90 <CJK>
++<U5375> /x97/x91 <CJK>
++<U5D50> /x97/x92 <CJK>
++<U6B04> /x97/x93 <CJK>
++<U6FEB> /x97/x94 <CJK>
++<U85CD> /x97/x95 <CJK>
++<U862D> /x97/x96 <CJK>
++<U89A7> /x97/x97 <CJK>
++<U5229> /x97/x98 <CJK>
++<U540F> /x97/x99 <CJK>
++<U5C65> /x97/x9a <CJK>
++<U674E> /x97/x9b <CJK>
++<U68A8> /x97/x9c <CJK>
++<U7406> /x97/x9d <CJK>
++<U7483> /x97/x9e <CJK>
++<U75E2> /x97/x9f <CJK>
++<U88CF> /x97/xa0 <CJK>
++<U88E1> /x97/xa1 <CJK>
++<U91CC> /x97/xa2 <CJK>
++<U96E2> /x97/xa3 <CJK>
++<U9678> /x97/xa4 <CJK>
++<U5F8B> /x97/xa5 <CJK>
++<U7387> /x97/xa6 <CJK>
++<U7ACB> /x97/xa7 <CJK>
++<U844E> /x97/xa8 <CJK>
++<U63A0> /x97/xa9 <CJK>
++<U7565> /x97/xaa <CJK>
++<U5289> /x97/xab <CJK>
++<U6D41> /x97/xac <CJK>
++<U6E9C> /x97/xad <CJK>
++<U7409> /x97/xae <CJK>
++<U7559> /x97/xaf <CJK>
++<U786B> /x97/xb0 <CJK>
++<U7C92> /x97/xb1 <CJK>
++<U9686> /x97/xb2 <CJK>
++<U7ADC> /x97/xb3 <CJK>
++<U9F8D> /x97/xb4 <CJK>
++<U4FB6> /x97/xb5 <CJK>
++<U616E> /x97/xb6 <CJK>
++<U65C5> /x97/xb7 <CJK>
++<U865C> /x97/xb8 <CJK>
++<U4E86> /x97/xb9 <CJK>
++<U4EAE> /x97/xba <CJK>
++<U50DA> /x97/xbb <CJK>
++<U4E21> /x97/xbc <CJK>
++<U51CC> /x97/xbd <CJK>
++<U5BEE> /x97/xbe <CJK>
++<U6599> /x97/xbf <CJK>
++<U6881> /x97/xc0 <CJK>
++<U6DBC> /x97/xc1 <CJK>
++<U731F> /x97/xc2 <CJK>
++<U7642> /x97/xc3 <CJK>
++<U77AD> /x97/xc4 <CJK>
++<U7A1C> /x97/xc5 <CJK>
++<U7CE7> /x97/xc6 <CJK>
++<U826F> /x97/xc7 <CJK>
++<U8AD2> /x97/xc8 <CJK>
++<U907C> /x97/xc9 <CJK>
++<U91CF> /x97/xca <CJK>
++<U9675> /x97/xcb <CJK>
++<U9818> /x97/xcc <CJK>
++<U529B> /x97/xcd <CJK>
++<U7DD1> /x97/xce <CJK>
++<U502B> /x97/xcf <CJK>
++<U5398> /x97/xd0 <CJK>
++<U6797> /x97/xd1 <CJK>
++<U6DCB> /x97/xd2 <CJK>
++<U71D0> /x97/xd3 <CJK>
++<U7433> /x97/xd4 <CJK>
++<U81E8> /x97/xd5 <CJK>
++<U8F2A> /x97/xd6 <CJK>
++<U96A3> /x97/xd7 <CJK>
++<U9C57> /x97/xd8 <CJK>
++<U9E9F> /x97/xd9 <CJK>
++<U7460> /x97/xda <CJK>
++<U5841> /x97/xdb <CJK>
++<U6D99> /x97/xdc <CJK>
++<U7D2F> /x97/xdd <CJK>
++<U985E> /x97/xde <CJK>
++<U4EE4> /x97/xdf <CJK>
++<U4F36> /x97/xe0 <CJK>
++<U4F8B> /x97/xe1 <CJK>
++<U51B7> /x97/xe2 <CJK>
++<U52B1> /x97/xe3 <CJK>
++<U5DBA> /x97/xe4 <CJK>
++<U601C> /x97/xe5 <CJK>
++<U73B2> /x97/xe6 <CJK>
++<U793C> /x97/xe7 <CJK>
++<U82D3> /x97/xe8 <CJK>
++<U9234> /x97/xe9 <CJK>
++<U96B7> /x97/xea <CJK>
++<U96F6> /x97/xeb <CJK>
++<U970A> /x97/xec <CJK>
++<U9E97> /x97/xed <CJK>
++<U9F62> /x97/xee <CJK>
++<U66A6> /x97/xef <CJK>
++<U6B74> /x97/xf0 <CJK>
++<U5217> /x97/xf1 <CJK>
++<U52A3> /x97/xf2 <CJK>
++<U70C8> /x97/xf3 <CJK>
++<U88C2> /x97/xf4 <CJK>
++<U5EC9> /x97/xf5 <CJK>
++<U604B> /x97/xf6 <CJK>
++<U6190> /x97/xf7 <CJK>
++<U6F23> /x97/xf8 <CJK>
++<U7149> /x97/xf9 <CJK>
++<U7C3E> /x97/xfa <CJK>
++<U7DF4> /x97/xfb <CJK>
++<U806F> /x97/xfc <CJK>
++<U84EE> /x98/x40 <CJK>
++<U9023> /x98/x41 <CJK>
++<U932C> /x98/x42 <CJK>
++<U5442> /x98/x43 <CJK>
++<U9B6F> /x98/x44 <CJK>
++<U6AD3> /x98/x45 <CJK>
++<U7089> /x98/x46 <CJK>
++<U8CC2> /x98/x47 <CJK>
++<U8DEF> /x98/x48 <CJK>
++<U9732> /x98/x49 <CJK>
++<U52B4> /x98/x4a <CJK>
++<U5A41> /x98/x4b <CJK>
++<U5ECA> /x98/x4c <CJK>
++<U5F04> /x98/x4d <CJK>
++<U6717> /x98/x4e <CJK>
++<U697C> /x98/x4f <CJK>
++<U6994> /x98/x50 <CJK>
++<U6D6A> /x98/x51 <CJK>
++<U6F0F> /x98/x52 <CJK>
++<U7262> /x98/x53 <CJK>
++<U72FC> /x98/x54 <CJK>
++<U7BED> /x98/x55 <CJK>
++<U8001> /x98/x56 <CJK>
++<U807E> /x98/x57 <CJK>
++<U874B> /x98/x58 <CJK>
++<U90CE> /x98/x59 <CJK>
++<U516D> /x98/x5a <CJK>
++<U9E93> /x98/x5b <CJK>
++<U7984> /x98/x5c <CJK>
++<U808B> /x98/x5d <CJK>
++<U9332> /x98/x5e <CJK>
++<U8AD6> /x98/x5f <CJK>
++<U502D> /x98/x60 <CJK>
++<U548C> /x98/x61 <CJK>
++<U8A71> /x98/x62 <CJK>
++<U6B6A> /x98/x63 <CJK>
++<U8CC4> /x98/x64 <CJK>
++<U8107> /x98/x65 <CJK>
++<U60D1> /x98/x66 <CJK>
++<U67A0> /x98/x67 <CJK>
++<U9DF2> /x98/x68 <CJK>
++<U4E99> /x98/x69 <CJK>
++<U4E98> /x98/x6a <CJK>
++<U9C10> /x98/x6b <CJK>
++<U8A6B> /x98/x6c <CJK>
++<U85C1> /x98/x6d <CJK>
++<U8568> /x98/x6e <CJK>
++<U6900> /x98/x6f <CJK>
++<U6E7E> /x98/x70 <CJK>
++<U7897> /x98/x71 <CJK>
++<U8155> /x98/x72 <CJK>
++<U5F0C> /x98/x9f <CJK>
++<U4E10> /x98/xa0 <CJK>
++<U4E15> /x98/xa1 <CJK>
++<U4E2A> /x98/xa2 <CJK>
++<U4E31> /x98/xa3 <CJK>
++<U4E36> /x98/xa4 <CJK>
++<U4E3C> /x98/xa5 <CJK>
++<U4E3F> /x98/xa6 <CJK>
++<U4E42> /x98/xa7 <CJK>
++<U4E56> /x98/xa8 <CJK>
++<U4E58> /x98/xa9 <CJK>
++<U4E82> /x98/xaa <CJK>
++<U4E85> /x98/xab <CJK>
++<U8C6B> /x98/xac <CJK>
++<U4E8A> /x98/xad <CJK>
++<U8212> /x98/xae <CJK>
++<U5F0D> /x98/xaf <CJK>
++<U4E8E> /x98/xb0 <CJK>
++<U4E9E> /x98/xb1 <CJK>
++<U4E9F> /x98/xb2 <CJK>
++<U4EA0> /x98/xb3 <CJK>
++<U4EA2> /x98/xb4 <CJK>
++<U4EB0> /x98/xb5 <CJK>
++<U4EB3> /x98/xb6 <CJK>
++<U4EB6> /x98/xb7 <CJK>
++<U4ECE> /x98/xb8 <CJK>
++<U4ECD> /x98/xb9 <CJK>
++<U4EC4> /x98/xba <CJK>
++<U4EC6> /x98/xbb <CJK>
++<U4EC2> /x98/xbc <CJK>
++<U4ED7> /x98/xbd <CJK>
++<U4EDE> /x98/xbe <CJK>
++<U4EED> /x98/xbf <CJK>
++<U4EDF> /x98/xc0 <CJK>
++<U4EF7> /x98/xc1 <CJK>
++<U4F09> /x98/xc2 <CJK>
++<U4F5A> /x98/xc3 <CJK>
++<U4F30> /x98/xc4 <CJK>
++<U4F5B> /x98/xc5 <CJK>
++<U4F5D> /x98/xc6 <CJK>
++<U4F57> /x98/xc7 <CJK>
++<U4F47> /x98/xc8 <CJK>
++<U4F76> /x98/xc9 <CJK>
++<U4F88> /x98/xca <CJK>
++<U4F8F> /x98/xcb <CJK>
++<U4F98> /x98/xcc <CJK>
++<U4F7B> /x98/xcd <CJK>
++<U4F69> /x98/xce <CJK>
++<U4F70> /x98/xcf <CJK>
++<U4F91> /x98/xd0 <CJK>
++<U4F6F> /x98/xd1 <CJK>
++<U4F86> /x98/xd2 <CJK>
++<U4F96> /x98/xd3 <CJK>
++<U5118> /x98/xd4 <CJK>
++<U4FD4> /x98/xd5 <CJK>
++<U4FDF> /x98/xd6 <CJK>
++<U4FCE> /x98/xd7 <CJK>
++<U4FD8> /x98/xd8 <CJK>
++<U4FDB> /x98/xd9 <CJK>
++<U4FD1> /x98/xda <CJK>
++<U4FDA> /x98/xdb <CJK>
++<U4FD0> /x98/xdc <CJK>
++<U4FE4> /x98/xdd <CJK>
++<U4FE5> /x98/xde <CJK>
++<U501A> /x98/xdf <CJK>
++<U5028> /x98/xe0 <CJK>
++<U5014> /x98/xe1 <CJK>
++<U502A> /x98/xe2 <CJK>
++<U5025> /x98/xe3 <CJK>
++<U5005> /x98/xe4 <CJK>
++<U4F1C> /x98/xe5 <CJK>
++<U4FF6> /x98/xe6 <CJK>
++<U5021> /x98/xe7 <CJK>
++<U5029> /x98/xe8 <CJK>
++<U502C> /x98/xe9 <CJK>
++<U4FFE> /x98/xea <CJK>
++<U4FEF> /x98/xeb <CJK>
++<U5011> /x98/xec <CJK>
++<U5006> /x98/xed <CJK>
++<U5043> /x98/xee <CJK>
++<U5047> /x98/xef <CJK>
++<U6703> /x98/xf0 <CJK>
++<U5055> /x98/xf1 <CJK>
++<U5050> /x98/xf2 <CJK>
++<U5048> /x98/xf3 <CJK>
++<U505A> /x98/xf4 <CJK>
++<U5056> /x98/xf5 <CJK>
++<U506C> /x98/xf6 <CJK>
++<U5078> /x98/xf7 <CJK>
++<U5080> /x98/xf8 <CJK>
++<U509A> /x98/xf9 <CJK>
++<U5085> /x98/xfa <CJK>
++<U50B4> /x98/xfb <CJK>
++<U50B2> /x98/xfc <CJK>
++<U50C9> /x99/x40 <CJK>
++<U50CA> /x99/x41 <CJK>
++<U50B3> /x99/x42 <CJK>
++<U50C2> /x99/x43 <CJK>
++<U50D6> /x99/x44 <CJK>
++<U50DE> /x99/x45 <CJK>
++<U50E5> /x99/x46 <CJK>
++<U50ED> /x99/x47 <CJK>
++<U50E3> /x99/x48 <CJK>
++<U50EE> /x99/x49 <CJK>
++<U50F9> /x99/x4a <CJK>
++<U50F5> /x99/x4b <CJK>
++<U5109> /x99/x4c <CJK>
++<U5101> /x99/x4d <CJK>
++<U5102> /x99/x4e <CJK>
++<U5116> /x99/x4f <CJK>
++<U5115> /x99/x50 <CJK>
++<U5114> /x99/x51 <CJK>
++<U511A> /x99/x52 <CJK>
++<U5121> /x99/x53 <CJK>
++<U513A> /x99/x54 <CJK>
++<U5137> /x99/x55 <CJK>
++<U513C> /x99/x56 <CJK>
++<U513B> /x99/x57 <CJK>
++<U513F> /x99/x58 <CJK>
++<U5140> /x99/x59 <CJK>
++<U5152> /x99/x5a <CJK>
++<U514C> /x99/x5b <CJK>
++<U5154> /x99/x5c <CJK>
++<U5162> /x99/x5d <CJK>
++<U7AF8> /x99/x5e <CJK>
++<U5169> /x99/x5f <CJK>
++<U516A> /x99/x60 <CJK>
++<U516E> /x99/x61 <CJK>
++<U5180> /x99/x62 <CJK>
++<U5182> /x99/x63 <CJK>
++<U56D8> /x99/x64 <CJK>
++<U518C> /x99/x65 <CJK>
++<U5189> /x99/x66 <CJK>
++<U518F> /x99/x67 <CJK>
++<U5191> /x99/x68 <CJK>
++<U5193> /x99/x69 <CJK>
++<U5195> /x99/x6a <CJK>
++<U5196> /x99/x6b <CJK>
++<U51A4> /x99/x6c <CJK>
++<U51A6> /x99/x6d <CJK>
++<U51A2> /x99/x6e <CJK>
++<U51A9> /x99/x6f <CJK>
++<U51AA> /x99/x70 <CJK>
++<U51AB> /x99/x71 <CJK>
++<U51B3> /x99/x72 <CJK>
++<U51B1> /x99/x73 <CJK>
++<U51B2> /x99/x74 <CJK>
++<U51B0> /x99/x75 <CJK>
++<U51B5> /x99/x76 <CJK>
++<U51BD> /x99/x77 <CJK>
++<U51C5> /x99/x78 <CJK>
++<U51C9> /x99/x79 <CJK>
++<U51DB> /x99/x7a <CJK>
++<U51E0> /x99/x7b <CJK>
++<U8655> /x99/x7c <CJK>
++<U51E9> /x99/x7d <CJK>
++<U51ED> /x99/x7e <CJK>
++<U51F0> /x99/x80 <CJK>
++<U51F5> /x99/x81 <CJK>
++<U51FE> /x99/x82 <CJK>
++<U5204> /x99/x83 <CJK>
++<U520B> /x99/x84 <CJK>
++<U5214> /x99/x85 <CJK>
++<U520E> /x99/x86 <CJK>
++<U5227> /x99/x87 <CJK>
++<U522A> /x99/x88 <CJK>
++<U522E> /x99/x89 <CJK>
++<U5233> /x99/x8a <CJK>
++<U5239> /x99/x8b <CJK>
++<U524F> /x99/x8c <CJK>
++<U5244> /x99/x8d <CJK>
++<U524B> /x99/x8e <CJK>
++<U524C> /x99/x8f <CJK>
++<U525E> /x99/x90 <CJK>
++<U5254> /x99/x91 <CJK>
++<U526A> /x99/x92 <CJK>
++<U5274> /x99/x93 <CJK>
++<U5269> /x99/x94 <CJK>
++<U5273> /x99/x95 <CJK>
++<U527F> /x99/x96 <CJK>
++<U527D> /x99/x97 <CJK>
++<U528D> /x99/x98 <CJK>
++<U5294> /x99/x99 <CJK>
++<U5292> /x99/x9a <CJK>
++<U5271> /x99/x9b <CJK>
++<U5288> /x99/x9c <CJK>
++<U5291> /x99/x9d <CJK>
++<U8FA8> /x99/x9e <CJK>
++<U8FA7> /x99/x9f <CJK>
++<U52AC> /x99/xa0 <CJK>
++<U52AD> /x99/xa1 <CJK>
++<U52BC> /x99/xa2 <CJK>
++<U52B5> /x99/xa3 <CJK>
++<U52C1> /x99/xa4 <CJK>
++<U52CD> /x99/xa5 <CJK>
++<U52D7> /x99/xa6 <CJK>
++<U52DE> /x99/xa7 <CJK>
++<U52E3> /x99/xa8 <CJK>
++<U52E6> /x99/xa9 <CJK>
++<U98ED> /x99/xaa <CJK>
++<U52E0> /x99/xab <CJK>
++<U52F3> /x99/xac <CJK>
++<U52F5> /x99/xad <CJK>
++<U52F8> /x99/xae <CJK>
++<U52F9> /x99/xaf <CJK>
++<U5306> /x99/xb0 <CJK>
++<U5308> /x99/xb1 <CJK>
++<U7538> /x99/xb2 <CJK>
++<U530D> /x99/xb3 <CJK>
++<U5310> /x99/xb4 <CJK>
++<U530F> /x99/xb5 <CJK>
++<U5315> /x99/xb6 <CJK>
++<U531A> /x99/xb7 <CJK>
++<U5323> /x99/xb8 <CJK>
++<U532F> /x99/xb9 <CJK>
++<U5331> /x99/xba <CJK>
++<U5333> /x99/xbb <CJK>
++<U5338> /x99/xbc <CJK>
++<U5340> /x99/xbd <CJK>
++<U5346> /x99/xbe <CJK>
++<U5345> /x99/xbf <CJK>
++<U4E17> /x99/xc0 <CJK>
++<U5349> /x99/xc1 <CJK>
++<U534D> /x99/xc2 <CJK>
++<U51D6> /x99/xc3 <CJK>
++<U535E> /x99/xc4 <CJK>
++<U5369> /x99/xc5 <CJK>
++<U536E> /x99/xc6 <CJK>
++<U5918> /x99/xc7 <CJK>
++<U537B> /x99/xc8 <CJK>
++<U5377> /x99/xc9 <CJK>
++<U5382> /x99/xca <CJK>
++<U5396> /x99/xcb <CJK>
++<U53A0> /x99/xcc <CJK>
++<U53A6> /x99/xcd <CJK>
++<U53A5> /x99/xce <CJK>
++<U53AE> /x99/xcf <CJK>
++<U53B0> /x99/xd0 <CJK>
++<U53B6> /x99/xd1 <CJK>
++<U53C3> /x99/xd2 <CJK>
++<U7C12> /x99/xd3 <CJK>
++<U96D9> /x99/xd4 <CJK>
++<U53DF> /x99/xd5 <CJK>
++<U66FC> /x99/xd6 <CJK>
++<U71EE> /x99/xd7 <CJK>
++<U53EE> /x99/xd8 <CJK>
++<U53E8> /x99/xd9 <CJK>
++<U53ED> /x99/xda <CJK>
++<U53FA> /x99/xdb <CJK>
++<U5401> /x99/xdc <CJK>
++<U543D> /x99/xdd <CJK>
++<U5440> /x99/xde <CJK>
++<U542C> /x99/xdf <CJK>
++<U542D> /x99/xe0 <CJK>
++<U543C> /x99/xe1 <CJK>
++<U542E> /x99/xe2 <CJK>
++<U5436> /x99/xe3 <CJK>
++<U5429> /x99/xe4 <CJK>
++<U541D> /x99/xe5 <CJK>
++<U544E> /x99/xe6 <CJK>
++<U548F> /x99/xe7 <CJK>
++<U5475> /x99/xe8 <CJK>
++<U548E> /x99/xe9 <CJK>
++<U545F> /x99/xea <CJK>
++<U5471> /x99/xeb <CJK>
++<U5477> /x99/xec <CJK>
++<U5470> /x99/xed <CJK>
++<U5492> /x99/xee <CJK>
++<U547B> /x99/xef <CJK>
++<U5480> /x99/xf0 <CJK>
++<U5476> /x99/xf1 <CJK>
++<U5484> /x99/xf2 <CJK>
++<U5490> /x99/xf3 <CJK>
++<U5486> /x99/xf4 <CJK>
++<U54C7> /x99/xf5 <CJK>
++<U54A2> /x99/xf6 <CJK>
++<U54B8> /x99/xf7 <CJK>
++<U54A5> /x99/xf8 <CJK>
++<U54AC> /x99/xf9 <CJK>
++<U54C4> /x99/xfa <CJK>
++<U54C8> /x99/xfb <CJK>
++<U54A8> /x99/xfc <CJK>
++<U54AB> /x9a/x40 <CJK>
++<U54C2> /x9a/x41 <CJK>
++<U54A4> /x9a/x42 <CJK>
++<U54BE> /x9a/x43 <CJK>
++<U54BC> /x9a/x44 <CJK>
++<U54D8> /x9a/x45 <CJK>
++<U54E5> /x9a/x46 <CJK>
++<U54E6> /x9a/x47 <CJK>
++<U550F> /x9a/x48 <CJK>
++<U5514> /x9a/x49 <CJK>
++<U54FD> /x9a/x4a <CJK>
++<U54EE> /x9a/x4b <CJK>
++<U54ED> /x9a/x4c <CJK>
++<U54FA> /x9a/x4d <CJK>
++<U54E2> /x9a/x4e <CJK>
++<U5539> /x9a/x4f <CJK>
++<U5540> /x9a/x50 <CJK>
++<U5563> /x9a/x51 <CJK>
++<U554C> /x9a/x52 <CJK>
++<U552E> /x9a/x53 <CJK>
++<U555C> /x9a/x54 <CJK>
++<U5545> /x9a/x55 <CJK>
++<U5556> /x9a/x56 <CJK>
++<U5557> /x9a/x57 <CJK>
++<U5538> /x9a/x58 <CJK>
++<U5533> /x9a/x59 <CJK>
++<U555D> /x9a/x5a <CJK>
++<U5599> /x9a/x5b <CJK>
++<U5580> /x9a/x5c <CJK>
++<U54AF> /x9a/x5d <CJK>
++<U558A> /x9a/x5e <CJK>
++<U559F> /x9a/x5f <CJK>
++<U557B> /x9a/x60 <CJK>
++<U557E> /x9a/x61 <CJK>
++<U5598> /x9a/x62 <CJK>
++<U559E> /x9a/x63 <CJK>
++<U55AE> /x9a/x64 <CJK>
++<U557C> /x9a/x65 <CJK>
++<U5583> /x9a/x66 <CJK>
++<U55A9> /x9a/x67 <CJK>
++<U5587> /x9a/x68 <CJK>
++<U55A8> /x9a/x69 <CJK>
++<U55DA> /x9a/x6a <CJK>
++<U55C5> /x9a/x6b <CJK>
++<U55DF> /x9a/x6c <CJK>
++<U55C4> /x9a/x6d <CJK>
++<U55DC> /x9a/x6e <CJK>
++<U55E4> /x9a/x6f <CJK>
++<U55D4> /x9a/x70 <CJK>
++<U5614> /x9a/x71 <CJK>
++<U55F7> /x9a/x72 <CJK>
++<U5616> /x9a/x73 <CJK>
++<U55FE> /x9a/x74 <CJK>
++<U55FD> /x9a/x75 <CJK>
++<U561B> /x9a/x76 <CJK>
++<U55F9> /x9a/x77 <CJK>
++<U564E> /x9a/x78 <CJK>
++<U5650> /x9a/x79 <CJK>
++<U71DF> /x9a/x7a <CJK>
++<U5634> /x9a/x7b <CJK>
++<U5636> /x9a/x7c <CJK>
++<U5632> /x9a/x7d <CJK>
++<U5638> /x9a/x7e <CJK>
++<U566B> /x9a/x80 <CJK>
++<U5664> /x9a/x81 <CJK>
++<U562F> /x9a/x82 <CJK>
++<U566C> /x9a/x83 <CJK>
++<U566A> /x9a/x84 <CJK>
++<U5686> /x9a/x85 <CJK>
++<U5680> /x9a/x86 <CJK>
++<U568A> /x9a/x87 <CJK>
++<U56A0> /x9a/x88 <CJK>
++<U5694> /x9a/x89 <CJK>
++<U568F> /x9a/x8a <CJK>
++<U56A5> /x9a/x8b <CJK>
++<U56AE> /x9a/x8c <CJK>
++<U56B6> /x9a/x8d <CJK>
++<U56B4> /x9a/x8e <CJK>
++<U56C2> /x9a/x8f <CJK>
++<U56BC> /x9a/x90 <CJK>
++<U56C1> /x9a/x91 <CJK>
++<U56C3> /x9a/x92 <CJK>
++<U56C0> /x9a/x93 <CJK>
++<U56C8> /x9a/x94 <CJK>
++<U56CE> /x9a/x95 <CJK>
++<U56D1> /x9a/x96 <CJK>
++<U56D3> /x9a/x97 <CJK>
++<U56D7> /x9a/x98 <CJK>
++<U56EE> /x9a/x99 <CJK>
++<U56F9> /x9a/x9a <CJK>
++<U5700> /x9a/x9b <CJK>
++<U56FF> /x9a/x9c <CJK>
++<U5704> /x9a/x9d <CJK>
++<U5709> /x9a/x9e <CJK>
++<U5708> /x9a/x9f <CJK>
++<U570B> /x9a/xa0 <CJK>
++<U570D> /x9a/xa1 <CJK>
++<U5713> /x9a/xa2 <CJK>
++<U5718> /x9a/xa3 <CJK>
++<U5716> /x9a/xa4 <CJK>
++<U55C7> /x9a/xa5 <CJK>
++<U571C> /x9a/xa6 <CJK>
++<U5726> /x9a/xa7 <CJK>
++<U5737> /x9a/xa8 <CJK>
++<U5738> /x9a/xa9 <CJK>
++<U574E> /x9a/xaa <CJK>
++<U573B> /x9a/xab <CJK>
++<U5740> /x9a/xac <CJK>
++<U574F> /x9a/xad <CJK>
++<U5769> /x9a/xae <CJK>
++<U57C0> /x9a/xaf <CJK>
++<U5788> /x9a/xb0 <CJK>
++<U5761> /x9a/xb1 <CJK>
++<U577F> /x9a/xb2 <CJK>
++<U5789> /x9a/xb3 <CJK>
++<U5793> /x9a/xb4 <CJK>
++<U57A0> /x9a/xb5 <CJK>
++<U57B3> /x9a/xb6 <CJK>
++<U57A4> /x9a/xb7 <CJK>
++<U57AA> /x9a/xb8 <CJK>
++<U57B0> /x9a/xb9 <CJK>
++<U57C3> /x9a/xba <CJK>
++<U57C6> /x9a/xbb <CJK>
++<U57D4> /x9a/xbc <CJK>
++<U57D2> /x9a/xbd <CJK>
++<U57D3> /x9a/xbe <CJK>
++<U580A> /x9a/xbf <CJK>
++<U57D6> /x9a/xc0 <CJK>
++<U57E3> /x9a/xc1 <CJK>
++<U580B> /x9a/xc2 <CJK>
++<U5819> /x9a/xc3 <CJK>
++<U581D> /x9a/xc4 <CJK>
++<U5872> /x9a/xc5 <CJK>
++<U5821> /x9a/xc6 <CJK>
++<U5862> /x9a/xc7 <CJK>
++<U584B> /x9a/xc8 <CJK>
++<U5870> /x9a/xc9 <CJK>
++<U6BC0> /x9a/xca <CJK>
++<U5852> /x9a/xcb <CJK>
++<U583D> /x9a/xcc <CJK>
++<U5879> /x9a/xcd <CJK>
++<U5885> /x9a/xce <CJK>
++<U58B9> /x9a/xcf <CJK>
++<U589F> /x9a/xd0 <CJK>
++<U58AB> /x9a/xd1 <CJK>
++<U58BA> /x9a/xd2 <CJK>
++<U58DE> /x9a/xd3 <CJK>
++<U58BB> /x9a/xd4 <CJK>
++<U58B8> /x9a/xd5 <CJK>
++<U58AE> /x9a/xd6 <CJK>
++<U58C5> /x9a/xd7 <CJK>
++<U58D3> /x9a/xd8 <CJK>
++<U58D1> /x9a/xd9 <CJK>
++<U58D7> /x9a/xda <CJK>
++<U58D9> /x9a/xdb <CJK>
++<U58D8> /x9a/xdc <CJK>
++<U58E5> /x9a/xdd <CJK>
++<U58DC> /x9a/xde <CJK>
++<U58E4> /x9a/xdf <CJK>
++<U58DF> /x9a/xe0 <CJK>
++<U58EF> /x9a/xe1 <CJK>
++<U58FA> /x9a/xe2 <CJK>
++<U58F9> /x9a/xe3 <CJK>
++<U58FB> /x9a/xe4 <CJK>
++<U58FC> /x9a/xe5 <CJK>
++<U58FD> /x9a/xe6 <CJK>
++<U5902> /x9a/xe7 <CJK>
++<U590A> /x9a/xe8 <CJK>
++<U5910> /x9a/xe9 <CJK>
++<U591B> /x9a/xea <CJK>
++<U68A6> /x9a/xeb <CJK>
++<U5925> /x9a/xec <CJK>
++<U592C> /x9a/xed <CJK>
++<U592D> /x9a/xee <CJK>
++<U5932> /x9a/xef <CJK>
++<U5938> /x9a/xf0 <CJK>
++<U593E> /x9a/xf1 <CJK>
++<U7AD2> /x9a/xf2 <CJK>
++<U5955> /x9a/xf3 <CJK>
++<U5950> /x9a/xf4 <CJK>
++<U594E> /x9a/xf5 <CJK>
++<U595A> /x9a/xf6 <CJK>
++<U5958> /x9a/xf7 <CJK>
++<U5962> /x9a/xf8 <CJK>
++<U5960> /x9a/xf9 <CJK>
++<U5967> /x9a/xfa <CJK>
++<U596C> /x9a/xfb <CJK>
++<U5969> /x9a/xfc <CJK>
++<U5978> /x9b/x40 <CJK>
++<U5981> /x9b/x41 <CJK>
++<U599D> /x9b/x42 <CJK>
++<U4F5E> /x9b/x43 <CJK>
++<U4FAB> /x9b/x44 <CJK>
++<U59A3> /x9b/x45 <CJK>
++<U59B2> /x9b/x46 <CJK>
++<U59C6> /x9b/x47 <CJK>
++<U59E8> /x9b/x48 <CJK>
++<U59DC> /x9b/x49 <CJK>
++<U598D> /x9b/x4a <CJK>
++<U59D9> /x9b/x4b <CJK>
++<U59DA> /x9b/x4c <CJK>
++<U5A25> /x9b/x4d <CJK>
++<U5A1F> /x9b/x4e <CJK>
++<U5A11> /x9b/x4f <CJK>
++<U5A1C> /x9b/x50 <CJK>
++<U5A09> /x9b/x51 <CJK>
++<U5A1A> /x9b/x52 <CJK>
++<U5A40> /x9b/x53 <CJK>
++<U5A6C> /x9b/x54 <CJK>
++<U5A49> /x9b/x55 <CJK>
++<U5A35> /x9b/x56 <CJK>
++<U5A36> /x9b/x57 <CJK>
++<U5A62> /x9b/x58 <CJK>
++<U5A6A> /x9b/x59 <CJK>
++<U5A9A> /x9b/x5a <CJK>
++<U5ABC> /x9b/x5b <CJK>
++<U5ABE> /x9b/x5c <CJK>
++<U5ACB> /x9b/x5d <CJK>
++<U5AC2> /x9b/x5e <CJK>
++<U5ABD> /x9b/x5f <CJK>
++<U5AE3> /x9b/x60 <CJK>
++<U5AD7> /x9b/x61 <CJK>
++<U5AE6> /x9b/x62 <CJK>
++<U5AE9> /x9b/x63 <CJK>
++<U5AD6> /x9b/x64 <CJK>
++<U5AFA> /x9b/x65 <CJK>
++<U5AFB> /x9b/x66 <CJK>
++<U5B0C> /x9b/x67 <CJK>
++<U5B0B> /x9b/x68 <CJK>
++<U5B16> /x9b/x69 <CJK>
++<U5B32> /x9b/x6a <CJK>
++<U5AD0> /x9b/x6b <CJK>
++<U5B2A> /x9b/x6c <CJK>
++<U5B36> /x9b/x6d <CJK>
++<U5B3E> /x9b/x6e <CJK>
++<U5B43> /x9b/x6f <CJK>
++<U5B45> /x9b/x70 <CJK>
++<U5B40> /x9b/x71 <CJK>
++<U5B51> /x9b/x72 <CJK>
++<U5B55> /x9b/x73 <CJK>
++<U5B5A> /x9b/x74 <CJK>
++<U5B5B> /x9b/x75 <CJK>
++<U5B65> /x9b/x76 <CJK>
++<U5B69> /x9b/x77 <CJK>
++<U5B70> /x9b/x78 <CJK>
++<U5B73> /x9b/x79 <CJK>
++<U5B75> /x9b/x7a <CJK>
++<U5B78> /x9b/x7b <CJK>
++<U6588> /x9b/x7c <CJK>
++<U5B7A> /x9b/x7d <CJK>
++<U5B80> /x9b/x7e <CJK>
++<U5B83> /x9b/x80 <CJK>
++<U5BA6> /x9b/x81 <CJK>
++<U5BB8> /x9b/x82 <CJK>
++<U5BC3> /x9b/x83 <CJK>
++<U5BC7> /x9b/x84 <CJK>
++<U5BC9> /x9b/x85 <CJK>
++<U5BD4> /x9b/x86 <CJK>
++<U5BD0> /x9b/x87 <CJK>
++<U5BE4> /x9b/x88 <CJK>
++<U5BE6> /x9b/x89 <CJK>
++<U5BE2> /x9b/x8a <CJK>
++<U5BDE> /x9b/x8b <CJK>
++<U5BE5> /x9b/x8c <CJK>
++<U5BEB> /x9b/x8d <CJK>
++<U5BF0> /x9b/x8e <CJK>
++<U5BF6> /x9b/x8f <CJK>
++<U5BF3> /x9b/x90 <CJK>
++<U5C05> /x9b/x91 <CJK>
++<U5C07> /x9b/x92 <CJK>
++<U5C08> /x9b/x93 <CJK>
++<U5C0D> /x9b/x94 <CJK>
++<U5C13> /x9b/x95 <CJK>
++<U5C20> /x9b/x96 <CJK>
++<U5C22> /x9b/x97 <CJK>
++<U5C28> /x9b/x98 <CJK>
++<U5C38> /x9b/x99 <CJK>
++<U5C39> /x9b/x9a <CJK>
++<U5C41> /x9b/x9b <CJK>
++<U5C46> /x9b/x9c <CJK>
++<U5C4E> /x9b/x9d <CJK>
++<U5C53> /x9b/x9e <CJK>
++<U5C50> /x9b/x9f <CJK>
++<U5C4F> /x9b/xa0 <CJK>
++<U5B71> /x9b/xa1 <CJK>
++<U5C6C> /x9b/xa2 <CJK>
++<U5C6E> /x9b/xa3 <CJK>
++<U4E62> /x9b/xa4 <CJK>
++<U5C76> /x9b/xa5 <CJK>
++<U5C79> /x9b/xa6 <CJK>
++<U5C8C> /x9b/xa7 <CJK>
++<U5C91> /x9b/xa8 <CJK>
++<U5C94> /x9b/xa9 <CJK>
++<U599B> /x9b/xaa <CJK>
++<U5CAB> /x9b/xab <CJK>
++<U5CBB> /x9b/xac <CJK>
++<U5CB6> /x9b/xad <CJK>
++<U5CBC> /x9b/xae <CJK>
++<U5CB7> /x9b/xaf <CJK>
++<U5CC5> /x9b/xb0 <CJK>
++<U5CBE> /x9b/xb1 <CJK>
++<U5CC7> /x9b/xb2 <CJK>
++<U5CD9> /x9b/xb3 <CJK>
++<U5CE9> /x9b/xb4 <CJK>
++<U5CFD> /x9b/xb5 <CJK>
++<U5CFA> /x9b/xb6 <CJK>
++<U5CED> /x9b/xb7 <CJK>
++<U5D8C> /x9b/xb8 <CJK>
++<U5CEA> /x9b/xb9 <CJK>
++<U5D0B> /x9b/xba <CJK>
++<U5D15> /x9b/xbb <CJK>
++<U5D17> /x9b/xbc <CJK>
++<U5D5C> /x9b/xbd <CJK>
++<U5D1F> /x9b/xbe <CJK>
++<U5D1B> /x9b/xbf <CJK>
++<U5D11> /x9b/xc0 <CJK>
++<U5D14> /x9b/xc1 <CJK>
++<U5D22> /x9b/xc2 <CJK>
++<U5D1A> /x9b/xc3 <CJK>
++<U5D19> /x9b/xc4 <CJK>
++<U5D18> /x9b/xc5 <CJK>
++<U5D4C> /x9b/xc6 <CJK>
++<U5D52> /x9b/xc7 <CJK>
++<U5D4E> /x9b/xc8 <CJK>
++<U5D4B> /x9b/xc9 <CJK>
++<U5D6C> /x9b/xca <CJK>
++<U5D73> /x9b/xcb <CJK>
++<U5D76> /x9b/xcc <CJK>
++<U5D87> /x9b/xcd <CJK>
++<U5D84> /x9b/xce <CJK>
++<U5D82> /x9b/xcf <CJK>
++<U5DA2> /x9b/xd0 <CJK>
++<U5D9D> /x9b/xd1 <CJK>
++<U5DAC> /x9b/xd2 <CJK>
++<U5DAE> /x9b/xd3 <CJK>
++<U5DBD> /x9b/xd4 <CJK>
++<U5D90> /x9b/xd5 <CJK>
++<U5DB7> /x9b/xd6 <CJK>
++<U5DBC> /x9b/xd7 <CJK>
++<U5DC9> /x9b/xd8 <CJK>
++<U5DCD> /x9b/xd9 <CJK>
++<U5DD3> /x9b/xda <CJK>
++<U5DD2> /x9b/xdb <CJK>
++<U5DD6> /x9b/xdc <CJK>
++<U5DDB> /x9b/xdd <CJK>
++<U5DEB> /x9b/xde <CJK>
++<U5DF2> /x9b/xdf <CJK>
++<U5DF5> /x9b/xe0 <CJK>
++<U5E0B> /x9b/xe1 <CJK>
++<U5E1A> /x9b/xe2 <CJK>
++<U5E19> /x9b/xe3 <CJK>
++<U5E11> /x9b/xe4 <CJK>
++<U5E1B> /x9b/xe5 <CJK>
++<U5E36> /x9b/xe6 <CJK>
++<U5E37> /x9b/xe7 <CJK>
++<U5E44> /x9b/xe8 <CJK>
++<U5E43> /x9b/xe9 <CJK>
++<U5E40> /x9b/xea <CJK>
++<U5E4E> /x9b/xeb <CJK>
++<U5E57> /x9b/xec <CJK>
++<U5E54> /x9b/xed <CJK>
++<U5E5F> /x9b/xee <CJK>
++<U5E62> /x9b/xef <CJK>
++<U5E64> /x9b/xf0 <CJK>
++<U5E47> /x9b/xf1 <CJK>
++<U5E75> /x9b/xf2 <CJK>
++<U5E76> /x9b/xf3 <CJK>
++<U5E7A> /x9b/xf4 <CJK>
++<U9EBC> /x9b/xf5 <CJK>
++<U5E7F> /x9b/xf6 <CJK>
++<U5EA0> /x9b/xf7 <CJK>
++<U5EC1> /x9b/xf8 <CJK>
++<U5EC2> /x9b/xf9 <CJK>
++<U5EC8> /x9b/xfa <CJK>
++<U5ED0> /x9b/xfb <CJK>
++<U5ECF> /x9b/xfc <CJK>
++<U5ED6> /x9c/x40 <CJK>
++<U5EE3> /x9c/x41 <CJK>
++<U5EDD> /x9c/x42 <CJK>
++<U5EDA> /x9c/x43 <CJK>
++<U5EDB> /x9c/x44 <CJK>
++<U5EE2> /x9c/x45 <CJK>
++<U5EE1> /x9c/x46 <CJK>
++<U5EE8> /x9c/x47 <CJK>
++<U5EE9> /x9c/x48 <CJK>
++<U5EEC> /x9c/x49 <CJK>
++<U5EF1> /x9c/x4a <CJK>
++<U5EF3> /x9c/x4b <CJK>
++<U5EF0> /x9c/x4c <CJK>
++<U5EF4> /x9c/x4d <CJK>
++<U5EF8> /x9c/x4e <CJK>
++<U5EFE> /x9c/x4f <CJK>
++<U5F03> /x9c/x50 <CJK>
++<U5F09> /x9c/x51 <CJK>
++<U5F5D> /x9c/x52 <CJK>
++<U5F5C> /x9c/x53 <CJK>
++<U5F0B> /x9c/x54 <CJK>
++<U5F11> /x9c/x55 <CJK>
++<U5F16> /x9c/x56 <CJK>
++<U5F29> /x9c/x57 <CJK>
++<U5F2D> /x9c/x58 <CJK>
++<U5F38> /x9c/x59 <CJK>
++<U5F41> /x9c/x5a <CJK>
++<U5F48> /x9c/x5b <CJK>
++<U5F4C> /x9c/x5c <CJK>
++<U5F4E> /x9c/x5d <CJK>
++<U5F2F> /x9c/x5e <CJK>
++<U5F51> /x9c/x5f <CJK>
++<U5F56> /x9c/x60 <CJK>
++<U5F57> /x9c/x61 <CJK>
++<U5F59> /x9c/x62 <CJK>
++<U5F61> /x9c/x63 <CJK>
++<U5F6D> /x9c/x64 <CJK>
++<U5F73> /x9c/x65 <CJK>
++<U5F77> /x9c/x66 <CJK>
++<U5F83> /x9c/x67 <CJK>
++<U5F82> /x9c/x68 <CJK>
++<U5F7F> /x9c/x69 <CJK>
++<U5F8A> /x9c/x6a <CJK>
++<U5F88> /x9c/x6b <CJK>
++<U5F91> /x9c/x6c <CJK>
++<U5F87> /x9c/x6d <CJK>
++<U5F9E> /x9c/x6e <CJK>
++<U5F99> /x9c/x6f <CJK>
++<U5F98> /x9c/x70 <CJK>
++<U5FA0> /x9c/x71 <CJK>
++<U5FA8> /x9c/x72 <CJK>
++<U5FAD> /x9c/x73 <CJK>
++<U5FBC> /x9c/x74 <CJK>
++<U5FD6> /x9c/x75 <CJK>
++<U5FFB> /x9c/x76 <CJK>
++<U5FE4> /x9c/x77 <CJK>
++<U5FF8> /x9c/x78 <CJK>
++<U5FF1> /x9c/x79 <CJK>
++<U5FDD> /x9c/x7a <CJK>
++<U60B3> /x9c/x7b <CJK>
++<U5FFF> /x9c/x7c <CJK>
++<U6021> /x9c/x7d <CJK>
++<U6060> /x9c/x7e <CJK>
++<U6019> /x9c/x80 <CJK>
++<U6010> /x9c/x81 <CJK>
++<U6029> /x9c/x82 <CJK>
++<U600E> /x9c/x83 <CJK>
++<U6031> /x9c/x84 <CJK>
++<U601B> /x9c/x85 <CJK>
++<U6015> /x9c/x86 <CJK>
++<U602B> /x9c/x87 <CJK>
++<U6026> /x9c/x88 <CJK>
++<U600F> /x9c/x89 <CJK>
++<U603A> /x9c/x8a <CJK>
++<U605A> /x9c/x8b <CJK>
++<U6041> /x9c/x8c <CJK>
++<U606A> /x9c/x8d <CJK>
++<U6077> /x9c/x8e <CJK>
++<U605F> /x9c/x8f <CJK>
++<U604A> /x9c/x90 <CJK>
++<U6046> /x9c/x91 <CJK>
++<U604D> /x9c/x92 <CJK>
++<U6063> /x9c/x93 <CJK>
++<U6043> /x9c/x94 <CJK>
++<U6064> /x9c/x95 <CJK>
++<U6042> /x9c/x96 <CJK>
++<U606C> /x9c/x97 <CJK>
++<U606B> /x9c/x98 <CJK>
++<U6059> /x9c/x99 <CJK>
++<U6081> /x9c/x9a <CJK>
++<U608D> /x9c/x9b <CJK>
++<U60E7> /x9c/x9c <CJK>
++<U6083> /x9c/x9d <CJK>
++<U609A> /x9c/x9e <CJK>
++<U6084> /x9c/x9f <CJK>
++<U609B> /x9c/xa0 <CJK>
++<U6096> /x9c/xa1 <CJK>
++<U6097> /x9c/xa2 <CJK>
++<U6092> /x9c/xa3 <CJK>
++<U60A7> /x9c/xa4 <CJK>
++<U608B> /x9c/xa5 <CJK>
++<U60E1> /x9c/xa6 <CJK>
++<U60B8> /x9c/xa7 <CJK>
++<U60E0> /x9c/xa8 <CJK>
++<U60D3> /x9c/xa9 <CJK>
++<U60B4> /x9c/xaa <CJK>
++<U5FF0> /x9c/xab <CJK>
++<U60BD> /x9c/xac <CJK>
++<U60C6> /x9c/xad <CJK>
++<U60B5> /x9c/xae <CJK>
++<U60D8> /x9c/xaf <CJK>
++<U614D> /x9c/xb0 <CJK>
++<U6115> /x9c/xb1 <CJK>
++<U6106> /x9c/xb2 <CJK>
++<U60F6> /x9c/xb3 <CJK>
++<U60F7> /x9c/xb4 <CJK>
++<U6100> /x9c/xb5 <CJK>
++<U60F4> /x9c/xb6 <CJK>
++<U60FA> /x9c/xb7 <CJK>
++<U6103> /x9c/xb8 <CJK>
++<U6121> /x9c/xb9 <CJK>
++<U60FB> /x9c/xba <CJK>
++<U60F1> /x9c/xbb <CJK>
++<U610D> /x9c/xbc <CJK>
++<U610E> /x9c/xbd <CJK>
++<U6147> /x9c/xbe <CJK>
++<U613E> /x9c/xbf <CJK>
++<U6128> /x9c/xc0 <CJK>
++<U6127> /x9c/xc1 <CJK>
++<U614A> /x9c/xc2 <CJK>
++<U613F> /x9c/xc3 <CJK>
++<U613C> /x9c/xc4 <CJK>
++<U612C> /x9c/xc5 <CJK>
++<U6134> /x9c/xc6 <CJK>
++<U613D> /x9c/xc7 <CJK>
++<U6142> /x9c/xc8 <CJK>
++<U6144> /x9c/xc9 <CJK>
++<U6173> /x9c/xca <CJK>
++<U6177> /x9c/xcb <CJK>
++<U6158> /x9c/xcc <CJK>
++<U6159> /x9c/xcd <CJK>
++<U615A> /x9c/xce <CJK>
++<U616B> /x9c/xcf <CJK>
++<U6174> /x9c/xd0 <CJK>
++<U616F> /x9c/xd1 <CJK>
++<U6165> /x9c/xd2 <CJK>
++<U6171> /x9c/xd3 <CJK>
++<U615F> /x9c/xd4 <CJK>
++<U615D> /x9c/xd5 <CJK>
++<U6153> /x9c/xd6 <CJK>
++<U6175> /x9c/xd7 <CJK>
++<U6199> /x9c/xd8 <CJK>
++<U6196> /x9c/xd9 <CJK>
++<U6187> /x9c/xda <CJK>
++<U61AC> /x9c/xdb <CJK>
++<U6194> /x9c/xdc <CJK>
++<U619A> /x9c/xdd <CJK>
++<U618A> /x9c/xde <CJK>
++<U6191> /x9c/xdf <CJK>
++<U61AB> /x9c/xe0 <CJK>
++<U61AE> /x9c/xe1 <CJK>
++<U61CC> /x9c/xe2 <CJK>
++<U61CA> /x9c/xe3 <CJK>
++<U61C9> /x9c/xe4 <CJK>
++<U61F7> /x9c/xe5 <CJK>
++<U61C8> /x9c/xe6 <CJK>
++<U61C3> /x9c/xe7 <CJK>
++<U61C6> /x9c/xe8 <CJK>
++<U61BA> /x9c/xe9 <CJK>
++<U61CB> /x9c/xea <CJK>
++<U7F79> /x9c/xeb <CJK>
++<U61CD> /x9c/xec <CJK>
++<U61E6> /x9c/xed <CJK>
++<U61E3> /x9c/xee <CJK>
++<U61F6> /x9c/xef <CJK>
++<U61FA> /x9c/xf0 <CJK>
++<U61F4> /x9c/xf1 <CJK>
++<U61FF> /x9c/xf2 <CJK>
++<U61FD> /x9c/xf3 <CJK>
++<U61FC> /x9c/xf4 <CJK>
++<U61FE> /x9c/xf5 <CJK>
++<U6200> /x9c/xf6 <CJK>
++<U6208> /x9c/xf7 <CJK>
++<U6209> /x9c/xf8 <CJK>
++<U620D> /x9c/xf9 <CJK>
++<U620C> /x9c/xfa <CJK>
++<U6214> /x9c/xfb <CJK>
++<U621B> /x9c/xfc <CJK>
++<U621E> /x9d/x40 <CJK>
++<U6221> /x9d/x41 <CJK>
++<U622A> /x9d/x42 <CJK>
++<U622E> /x9d/x43 <CJK>
++<U6230> /x9d/x44 <CJK>
++<U6232> /x9d/x45 <CJK>
++<U6233> /x9d/x46 <CJK>
++<U6241> /x9d/x47 <CJK>
++<U624E> /x9d/x48 <CJK>
++<U625E> /x9d/x49 <CJK>
++<U6263> /x9d/x4a <CJK>
++<U625B> /x9d/x4b <CJK>
++<U6260> /x9d/x4c <CJK>
++<U6268> /x9d/x4d <CJK>
++<U627C> /x9d/x4e <CJK>
++<U6282> /x9d/x4f <CJK>
++<U6289> /x9d/x50 <CJK>
++<U627E> /x9d/x51 <CJK>
++<U6292> /x9d/x52 <CJK>
++<U6293> /x9d/x53 <CJK>
++<U6296> /x9d/x54 <CJK>
++<U62D4> /x9d/x55 <CJK>
++<U6283> /x9d/x56 <CJK>
++<U6294> /x9d/x57 <CJK>
++<U62D7> /x9d/x58 <CJK>
++<U62D1> /x9d/x59 <CJK>
++<U62BB> /x9d/x5a <CJK>
++<U62CF> /x9d/x5b <CJK>
++<U62FF> /x9d/x5c <CJK>
++<U62C6> /x9d/x5d <CJK>
++<U64D4> /x9d/x5e <CJK>
++<U62C8> /x9d/x5f <CJK>
++<U62DC> /x9d/x60 <CJK>
++<U62CC> /x9d/x61 <CJK>
++<U62CA> /x9d/x62 <CJK>
++<U62C2> /x9d/x63 <CJK>
++<U62C7> /x9d/x64 <CJK>
++<U629B> /x9d/x65 <CJK>
++<U62C9> /x9d/x66 <CJK>
++<U630C> /x9d/x67 <CJK>
++<U62EE> /x9d/x68 <CJK>
++<U62F1> /x9d/x69 <CJK>
++<U6327> /x9d/x6a <CJK>
++<U6302> /x9d/x6b <CJK>
++<U6308> /x9d/x6c <CJK>
++<U62EF> /x9d/x6d <CJK>
++<U62F5> /x9d/x6e <CJK>
++<U6350> /x9d/x6f <CJK>
++<U633E> /x9d/x70 <CJK>
++<U634D> /x9d/x71 <CJK>
++<U641C> /x9d/x72 <CJK>
++<U634F> /x9d/x73 <CJK>
++<U6396> /x9d/x74 <CJK>
++<U638E> /x9d/x75 <CJK>
++<U6380> /x9d/x76 <CJK>
++<U63AB> /x9d/x77 <CJK>
++<U6376> /x9d/x78 <CJK>
++<U63A3> /x9d/x79 <CJK>
++<U638F> /x9d/x7a <CJK>
++<U6389> /x9d/x7b <CJK>
++<U639F> /x9d/x7c <CJK>
++<U63B5> /x9d/x7d <CJK>
++<U636B> /x9d/x7e <CJK>
++<U6369> /x9d/x80 <CJK>
++<U63BE> /x9d/x81 <CJK>
++<U63E9> /x9d/x82 <CJK>
++<U63C0> /x9d/x83 <CJK>
++<U63C6> /x9d/x84 <CJK>
++<U63E3> /x9d/x85 <CJK>
++<U63C9> /x9d/x86 <CJK>
++<U63D2> /x9d/x87 <CJK>
++<U63F6> /x9d/x88 <CJK>
++<U63C4> /x9d/x89 <CJK>
++<U6416> /x9d/x8a <CJK>
++<U6434> /x9d/x8b <CJK>
++<U6406> /x9d/x8c <CJK>
++<U6413> /x9d/x8d <CJK>
++<U6426> /x9d/x8e <CJK>
++<U6436> /x9d/x8f <CJK>
++<U651D> /x9d/x90 <CJK>
++<U6417> /x9d/x91 <CJK>
++<U6428> /x9d/x92 <CJK>
++<U640F> /x9d/x93 <CJK>
++<U6467> /x9d/x94 <CJK>
++<U646F> /x9d/x95 <CJK>
++<U6476> /x9d/x96 <CJK>
++<U644E> /x9d/x97 <CJK>
++<U652A> /x9d/x98 <CJK>
++<U6495> /x9d/x99 <CJK>
++<U6493> /x9d/x9a <CJK>
++<U64A5> /x9d/x9b <CJK>
++<U64A9> /x9d/x9c <CJK>
++<U6488> /x9d/x9d <CJK>
++<U64BC> /x9d/x9e <CJK>
++<U64DA> /x9d/x9f <CJK>
++<U64D2> /x9d/xa0 <CJK>
++<U64C5> /x9d/xa1 <CJK>
++<U64C7> /x9d/xa2 <CJK>
++<U64BB> /x9d/xa3 <CJK>
++<U64D8> /x9d/xa4 <CJK>
++<U64C2> /x9d/xa5 <CJK>
++<U64F1> /x9d/xa6 <CJK>
++<U64E7> /x9d/xa7 <CJK>
++<U8209> /x9d/xa8 <CJK>
++<U64E0> /x9d/xa9 <CJK>
++<U64E1> /x9d/xaa <CJK>
++<U62AC> /x9d/xab <CJK>
++<U64E3> /x9d/xac <CJK>
++<U64EF> /x9d/xad <CJK>
++<U652C> /x9d/xae <CJK>
++<U64F6> /x9d/xaf <CJK>
++<U64F4> /x9d/xb0 <CJK>
++<U64F2> /x9d/xb1 <CJK>
++<U64FA> /x9d/xb2 <CJK>
++<U6500> /x9d/xb3 <CJK>
++<U64FD> /x9d/xb4 <CJK>
++<U6518> /x9d/xb5 <CJK>
++<U651C> /x9d/xb6 <CJK>
++<U6505> /x9d/xb7 <CJK>
++<U6524> /x9d/xb8 <CJK>
++<U6523> /x9d/xb9 <CJK>
++<U652B> /x9d/xba <CJK>
++<U6534> /x9d/xbb <CJK>
++<U6535> /x9d/xbc <CJK>
++<U6537> /x9d/xbd <CJK>
++<U6536> /x9d/xbe <CJK>
++<U6538> /x9d/xbf <CJK>
++<U754B> /x9d/xc0 <CJK>
++<U6548> /x9d/xc1 <CJK>
++<U6556> /x9d/xc2 <CJK>
++<U6555> /x9d/xc3 <CJK>
++<U654D> /x9d/xc4 <CJK>
++<U6558> /x9d/xc5 <CJK>
++<U655E> /x9d/xc6 <CJK>
++<U655D> /x9d/xc7 <CJK>
++<U6572> /x9d/xc8 <CJK>
++<U6578> /x9d/xc9 <CJK>
++<U6582> /x9d/xca <CJK>
++<U6583> /x9d/xcb <CJK>
++<U8B8A> /x9d/xcc <CJK>
++<U659B> /x9d/xcd <CJK>
++<U659F> /x9d/xce <CJK>
++<U65AB> /x9d/xcf <CJK>
++<U65B7> /x9d/xd0 <CJK>
++<U65C3> /x9d/xd1 <CJK>
++<U65C6> /x9d/xd2 <CJK>
++<U65C1> /x9d/xd3 <CJK>
++<U65C4> /x9d/xd4 <CJK>
++<U65CC> /x9d/xd5 <CJK>
++<U65D2> /x9d/xd6 <CJK>
++<U65DB> /x9d/xd7 <CJK>
++<U65D9> /x9d/xd8 <CJK>
++<U65E0> /x9d/xd9 <CJK>
++<U65E1> /x9d/xda <CJK>
++<U65F1> /x9d/xdb <CJK>
++<U6772> /x9d/xdc <CJK>
++<U660A> /x9d/xdd <CJK>
++<U6603> /x9d/xde <CJK>
++<U65FB> /x9d/xdf <CJK>
++<U6773> /x9d/xe0 <CJK>
++<U6635> /x9d/xe1 <CJK>
++<U6636> /x9d/xe2 <CJK>
++<U6634> /x9d/xe3 <CJK>
++<U661C> /x9d/xe4 <CJK>
++<U664F> /x9d/xe5 <CJK>
++<U6644> /x9d/xe6 <CJK>
++<U6649> /x9d/xe7 <CJK>
++<U6641> /x9d/xe8 <CJK>
++<U665E> /x9d/xe9 <CJK>
++<U665D> /x9d/xea <CJK>
++<U6664> /x9d/xeb <CJK>
++<U6667> /x9d/xec <CJK>
++<U6668> /x9d/xed <CJK>
++<U665F> /x9d/xee <CJK>
++<U6662> /x9d/xef <CJK>
++<U6670> /x9d/xf0 <CJK>
++<U6683> /x9d/xf1 <CJK>
++<U6688> /x9d/xf2 <CJK>
++<U668E> /x9d/xf3 <CJK>
++<U6689> /x9d/xf4 <CJK>
++<U6684> /x9d/xf5 <CJK>
++<U6698> /x9d/xf6 <CJK>
++<U669D> /x9d/xf7 <CJK>
++<U66C1> /x9d/xf8 <CJK>
++<U66B9> /x9d/xf9 <CJK>
++<U66C9> /x9d/xfa <CJK>
++<U66BE> /x9d/xfb <CJK>
++<U66BC> /x9d/xfc <CJK>
++<U66C4> /x9e/x40 <CJK>
++<U66B8> /x9e/x41 <CJK>
++<U66D6> /x9e/x42 <CJK>
++<U66DA> /x9e/x43 <CJK>
++<U66E0> /x9e/x44 <CJK>
++<U663F> /x9e/x45 <CJK>
++<U66E6> /x9e/x46 <CJK>
++<U66E9> /x9e/x47 <CJK>
++<U66F0> /x9e/x48 <CJK>
++<U66F5> /x9e/x49 <CJK>
++<U66F7> /x9e/x4a <CJK>
++<U670F> /x9e/x4b <CJK>
++<U6716> /x9e/x4c <CJK>
++<U671E> /x9e/x4d <CJK>
++<U6726> /x9e/x4e <CJK>
++<U6727> /x9e/x4f <CJK>
++<U9738> /x9e/x50 <CJK>
++<U672E> /x9e/x51 <CJK>
++<U673F> /x9e/x52 <CJK>
++<U6736> /x9e/x53 <CJK>
++<U6741> /x9e/x54 <CJK>
++<U6738> /x9e/x55 <CJK>
++<U6737> /x9e/x56 <CJK>
++<U6746> /x9e/x57 <CJK>
++<U675E> /x9e/x58 <CJK>
++<U6760> /x9e/x59 <CJK>
++<U6759> /x9e/x5a <CJK>
++<U6763> /x9e/x5b <CJK>
++<U6764> /x9e/x5c <CJK>
++<U6789> /x9e/x5d <CJK>
++<U6770> /x9e/x5e <CJK>
++<U67A9> /x9e/x5f <CJK>
++<U677C> /x9e/x60 <CJK>
++<U676A> /x9e/x61 <CJK>
++<U678C> /x9e/x62 <CJK>
++<U678B> /x9e/x63 <CJK>
++<U67A6> /x9e/x64 <CJK>
++<U67A1> /x9e/x65 <CJK>
++<U6785> /x9e/x66 <CJK>
++<U67B7> /x9e/x67 <CJK>
++<U67EF> /x9e/x68 <CJK>
++<U67B4> /x9e/x69 <CJK>
++<U67EC> /x9e/x6a <CJK>
++<U67B3> /x9e/x6b <CJK>
++<U67E9> /x9e/x6c <CJK>
++<U67B8> /x9e/x6d <CJK>
++<U67E4> /x9e/x6e <CJK>
++<U67DE> /x9e/x6f <CJK>
++<U67DD> /x9e/x70 <CJK>
++<U67E2> /x9e/x71 <CJK>
++<U67EE> /x9e/x72 <CJK>
++<U67B9> /x9e/x73 <CJK>
++<U67CE> /x9e/x74 <CJK>
++<U67C6> /x9e/x75 <CJK>
++<U67E7> /x9e/x76 <CJK>
++<U6A9C> /x9e/x77 <CJK>
++<U681E> /x9e/x78 <CJK>
++<U6846> /x9e/x79 <CJK>
++<U6829> /x9e/x7a <CJK>
++<U6840> /x9e/x7b <CJK>
++<U684D> /x9e/x7c <CJK>
++<U6832> /x9e/x7d <CJK>
++<U684E> /x9e/x7e <CJK>
++<U68B3> /x9e/x80 <CJK>
++<U682B> /x9e/x81 <CJK>
++<U6859> /x9e/x82 <CJK>
++<U6863> /x9e/x83 <CJK>
++<U6877> /x9e/x84 <CJK>
++<U687F> /x9e/x85 <CJK>
++<U689F> /x9e/x86 <CJK>
++<U688F> /x9e/x87 <CJK>
++<U68AD> /x9e/x88 <CJK>
++<U6894> /x9e/x89 <CJK>
++<U689D> /x9e/x8a <CJK>
++<U689B> /x9e/x8b <CJK>
++<U6883> /x9e/x8c <CJK>
++<U6AAE> /x9e/x8d <CJK>
++<U68B9> /x9e/x8e <CJK>
++<U6874> /x9e/x8f <CJK>
++<U68B5> /x9e/x90 <CJK>
++<U68A0> /x9e/x91 <CJK>
++<U68BA> /x9e/x92 <CJK>
++<U690F> /x9e/x93 <CJK>
++<U688D> /x9e/x94 <CJK>
++<U687E> /x9e/x95 <CJK>
++<U6901> /x9e/x96 <CJK>
++<U68CA> /x9e/x97 <CJK>
++<U6908> /x9e/x98 <CJK>
++<U68D8> /x9e/x99 <CJK>
++<U6922> /x9e/x9a <CJK>
++<U6926> /x9e/x9b <CJK>
++<U68E1> /x9e/x9c <CJK>
++<U690C> /x9e/x9d <CJK>
++<U68CD> /x9e/x9e <CJK>
++<U68D4> /x9e/x9f <CJK>
++<U68E7> /x9e/xa0 <CJK>
++<U68D5> /x9e/xa1 <CJK>
++<U6936> /x9e/xa2 <CJK>
++<U6912> /x9e/xa3 <CJK>
++<U6904> /x9e/xa4 <CJK>
++<U68D7> /x9e/xa5 <CJK>
++<U68E3> /x9e/xa6 <CJK>
++<U6925> /x9e/xa7 <CJK>
++<U68F9> /x9e/xa8 <CJK>
++<U68E0> /x9e/xa9 <CJK>
++<U68EF> /x9e/xaa <CJK>
++<U6928> /x9e/xab <CJK>
++<U692A> /x9e/xac <CJK>
++<U691A> /x9e/xad <CJK>
++<U6923> /x9e/xae <CJK>
++<U6921> /x9e/xaf <CJK>
++<U68C6> /x9e/xb0 <CJK>
++<U6979> /x9e/xb1 <CJK>
++<U6977> /x9e/xb2 <CJK>
++<U695C> /x9e/xb3 <CJK>
++<U6978> /x9e/xb4 <CJK>
++<U696B> /x9e/xb5 <CJK>
++<U6954> /x9e/xb6 <CJK>
++<U697E> /x9e/xb7 <CJK>
++<U696E> /x9e/xb8 <CJK>
++<U6939> /x9e/xb9 <CJK>
++<U6974> /x9e/xba <CJK>
++<U693D> /x9e/xbb <CJK>
++<U6959> /x9e/xbc <CJK>
++<U6930> /x9e/xbd <CJK>
++<U6961> /x9e/xbe <CJK>
++<U695E> /x9e/xbf <CJK>
++<U695D> /x9e/xc0 <CJK>
++<U6981> /x9e/xc1 <CJK>
++<U696A> /x9e/xc2 <CJK>
++<U69B2> /x9e/xc3 <CJK>
++<U69AE> /x9e/xc4 <CJK>
++<U69D0> /x9e/xc5 <CJK>
++<U69BF> /x9e/xc6 <CJK>
++<U69C1> /x9e/xc7 <CJK>
++<U69D3> /x9e/xc8 <CJK>
++<U69BE> /x9e/xc9 <CJK>
++<U69CE> /x9e/xca <CJK>
++<U5BE8> /x9e/xcb <CJK>
++<U69CA> /x9e/xcc <CJK>
++<U69DD> /x9e/xcd <CJK>
++<U69BB> /x9e/xce <CJK>
++<U69C3> /x9e/xcf <CJK>
++<U69A7> /x9e/xd0 <CJK>
++<U6A2E> /x9e/xd1 <CJK>
++<U6991> /x9e/xd2 <CJK>
++<U69A0> /x9e/xd3 <CJK>
++<U699C> /x9e/xd4 <CJK>
++<U6995> /x9e/xd5 <CJK>
++<U69B4> /x9e/xd6 <CJK>
++<U69DE> /x9e/xd7 <CJK>
++<U69E8> /x9e/xd8 <CJK>
++<U6A02> /x9e/xd9 <CJK>
++<U6A1B> /x9e/xda <CJK>
++<U69FF> /x9e/xdb <CJK>
++<U6B0A> /x9e/xdc <CJK>
++<U69F9> /x9e/xdd <CJK>
++<U69F2> /x9e/xde <CJK>
++<U69E7> /x9e/xdf <CJK>
++<U6A05> /x9e/xe0 <CJK>
++<U69B1> /x9e/xe1 <CJK>
++<U6A1E> /x9e/xe2 <CJK>
++<U69ED> /x9e/xe3 <CJK>
++<U6A14> /x9e/xe4 <CJK>
++<U69EB> /x9e/xe5 <CJK>
++<U6A0A> /x9e/xe6 <CJK>
++<U6A12> /x9e/xe7 <CJK>
++<U6AC1> /x9e/xe8 <CJK>
++<U6A23> /x9e/xe9 <CJK>
++<U6A13> /x9e/xea <CJK>
++<U6A44> /x9e/xeb <CJK>
++<U6A0C> /x9e/xec <CJK>
++<U6A72> /x9e/xed <CJK>
++<U6A36> /x9e/xee <CJK>
++<U6A78> /x9e/xef <CJK>
++<U6A47> /x9e/xf0 <CJK>
++<U6A62> /x9e/xf1 <CJK>
++<U6A59> /x9e/xf2 <CJK>
++<U6A66> /x9e/xf3 <CJK>
++<U6A48> /x9e/xf4 <CJK>
++<U6A38> /x9e/xf5 <CJK>
++<U6A22> /x9e/xf6 <CJK>
++<U6A90> /x9e/xf7 <CJK>
++<U6A8D> /x9e/xf8 <CJK>
++<U6AA0> /x9e/xf9 <CJK>
++<U6A84> /x9e/xfa <CJK>
++<U6AA2> /x9e/xfb <CJK>
++<U6AA3> /x9e/xfc <CJK>
++<U6A97> /x9f/x40 <CJK>
++<U8617> /x9f/x41 <CJK>
++<U6ABB> /x9f/x42 <CJK>
++<U6AC3> /x9f/x43 <CJK>
++<U6AC2> /x9f/x44 <CJK>
++<U6AB8> /x9f/x45 <CJK>
++<U6AB3> /x9f/x46 <CJK>
++<U6AAC> /x9f/x47 <CJK>
++<U6ADE> /x9f/x48 <CJK>
++<U6AD1> /x9f/x49 <CJK>
++<U6ADF> /x9f/x4a <CJK>
++<U6AAA> /x9f/x4b <CJK>
++<U6ADA> /x9f/x4c <CJK>
++<U6AEA> /x9f/x4d <CJK>
++<U6AFB> /x9f/x4e <CJK>
++<U6B05> /x9f/x4f <CJK>
++<U8616> /x9f/x50 <CJK>
++<U6AFA> /x9f/x51 <CJK>
++<U6B12> /x9f/x52 <CJK>
++<U6B16> /x9f/x53 <CJK>
++<U9B31> /x9f/x54 <CJK>
++<U6B1F> /x9f/x55 <CJK>
++<U6B38> /x9f/x56 <CJK>
++<U6B37> /x9f/x57 <CJK>
++<U76DC> /x9f/x58 <CJK>
++<U6B39> /x9f/x59 <CJK>
++<U98EE> /x9f/x5a <CJK>
++<U6B47> /x9f/x5b <CJK>
++<U6B43> /x9f/x5c <CJK>
++<U6B49> /x9f/x5d <CJK>
++<U6B50> /x9f/x5e <CJK>
++<U6B59> /x9f/x5f <CJK>
++<U6B54> /x9f/x60 <CJK>
++<U6B5B> /x9f/x61 <CJK>
++<U6B5F> /x9f/x62 <CJK>
++<U6B61> /x9f/x63 <CJK>
++<U6B78> /x9f/x64 <CJK>
++<U6B79> /x9f/x65 <CJK>
++<U6B7F> /x9f/x66 <CJK>
++<U6B80> /x9f/x67 <CJK>
++<U6B84> /x9f/x68 <CJK>
++<U6B83> /x9f/x69 <CJK>
++<U6B8D> /x9f/x6a <CJK>
++<U6B98> /x9f/x6b <CJK>
++<U6B95> /x9f/x6c <CJK>
++<U6B9E> /x9f/x6d <CJK>
++<U6BA4> /x9f/x6e <CJK>
++<U6BAA> /x9f/x6f <CJK>
++<U6BAB> /x9f/x70 <CJK>
++<U6BAF> /x9f/x71 <CJK>
++<U6BB2> /x9f/x72 <CJK>
++<U6BB1> /x9f/x73 <CJK>
++<U6BB3> /x9f/x74 <CJK>
++<U6BB7> /x9f/x75 <CJK>
++<U6BBC> /x9f/x76 <CJK>
++<U6BC6> /x9f/x77 <CJK>
++<U6BCB> /x9f/x78 <CJK>
++<U6BD3> /x9f/x79 <CJK>
++<U6BDF> /x9f/x7a <CJK>
++<U6BEC> /x9f/x7b <CJK>
++<U6BEB> /x9f/x7c <CJK>
++<U6BF3> /x9f/x7d <CJK>
++<U6BEF> /x9f/x7e <CJK>
++<U9EBE> /x9f/x80 <CJK>
++<U6C08> /x9f/x81 <CJK>
++<U6C13> /x9f/x82 <CJK>
++<U6C14> /x9f/x83 <CJK>
++<U6C1B> /x9f/x84 <CJK>
++<U6C24> /x9f/x85 <CJK>
++<U6C23> /x9f/x86 <CJK>
++<U6C5E> /x9f/x87 <CJK>
++<U6C55> /x9f/x88 <CJK>
++<U6C62> /x9f/x89 <CJK>
++<U6C6A> /x9f/x8a <CJK>
++<U6C82> /x9f/x8b <CJK>
++<U6C8D> /x9f/x8c <CJK>
++<U6C9A> /x9f/x8d <CJK>
++<U6C81> /x9f/x8e <CJK>
++<U6C9B> /x9f/x8f <CJK>
++<U6C7E> /x9f/x90 <CJK>
++<U6C68> /x9f/x91 <CJK>
++<U6C73> /x9f/x92 <CJK>
++<U6C92> /x9f/x93 <CJK>
++<U6C90> /x9f/x94 <CJK>
++<U6CC4> /x9f/x95 <CJK>
++<U6CF1> /x9f/x96 <CJK>
++<U6CD3> /x9f/x97 <CJK>
++<U6CBD> /x9f/x98 <CJK>
++<U6CD7> /x9f/x99 <CJK>
++<U6CC5> /x9f/x9a <CJK>
++<U6CDD> /x9f/x9b <CJK>
++<U6CAE> /x9f/x9c <CJK>
++<U6CB1> /x9f/x9d <CJK>
++<U6CBE> /x9f/x9e <CJK>
++<U6CBA> /x9f/x9f <CJK>
++<U6CDB> /x9f/xa0 <CJK>
++<U6CEF> /x9f/xa1 <CJK>
++<U6CD9> /x9f/xa2 <CJK>
++<U6CEA> /x9f/xa3 <CJK>
++<U6D1F> /x9f/xa4 <CJK>
++<U884D> /x9f/xa5 <CJK>
++<U6D36> /x9f/xa6 <CJK>
++<U6D2B> /x9f/xa7 <CJK>
++<U6D3D> /x9f/xa8 <CJK>
++<U6D38> /x9f/xa9 <CJK>
++<U6D19> /x9f/xaa <CJK>
++<U6D35> /x9f/xab <CJK>
++<U6D33> /x9f/xac <CJK>
++<U6D12> /x9f/xad <CJK>
++<U6D0C> /x9f/xae <CJK>
++<U6D63> /x9f/xaf <CJK>
++<U6D93> /x9f/xb0 <CJK>
++<U6D64> /x9f/xb1 <CJK>
++<U6D5A> /x9f/xb2 <CJK>
++<U6D79> /x9f/xb3 <CJK>
++<U6D59> /x9f/xb4 <CJK>
++<U6D8E> /x9f/xb5 <CJK>
++<U6D95> /x9f/xb6 <CJK>
++<U6FE4> /x9f/xb7 <CJK>
++<U6D85> /x9f/xb8 <CJK>
++<U6DF9> /x9f/xb9 <CJK>
++<U6E15> /x9f/xba <CJK>
++<U6E0A> /x9f/xbb <CJK>
++<U6DB5> /x9f/xbc <CJK>
++<U6DC7> /x9f/xbd <CJK>
++<U6DE6> /x9f/xbe <CJK>
++<U6DB8> /x9f/xbf <CJK>
++<U6DC6> /x9f/xc0 <CJK>
++<U6DEC> /x9f/xc1 <CJK>
++<U6DDE> /x9f/xc2 <CJK>
++<U6DCC> /x9f/xc3 <CJK>
++<U6DE8> /x9f/xc4 <CJK>
++<U6DD2> /x9f/xc5 <CJK>
++<U6DC5> /x9f/xc6 <CJK>
++<U6DFA> /x9f/xc7 <CJK>
++<U6DD9> /x9f/xc8 <CJK>
++<U6DE4> /x9f/xc9 <CJK>
++<U6DD5> /x9f/xca <CJK>
++<U6DEA> /x9f/xcb <CJK>
++<U6DEE> /x9f/xcc <CJK>
++<U6E2D> /x9f/xcd <CJK>
++<U6E6E> /x9f/xce <CJK>
++<U6E2E> /x9f/xcf <CJK>
++<U6E19> /x9f/xd0 <CJK>
++<U6E72> /x9f/xd1 <CJK>
++<U6E5F> /x9f/xd2 <CJK>
++<U6E3E> /x9f/xd3 <CJK>
++<U6E23> /x9f/xd4 <CJK>
++<U6E6B> /x9f/xd5 <CJK>
++<U6E2B> /x9f/xd6 <CJK>
++<U6E76> /x9f/xd7 <CJK>
++<U6E4D> /x9f/xd8 <CJK>
++<U6E1F> /x9f/xd9 <CJK>
++<U6E43> /x9f/xda <CJK>
++<U6E3A> /x9f/xdb <CJK>
++<U6E4E> /x9f/xdc <CJK>
++<U6E24> /x9f/xdd <CJK>
++<U6EFF> /x9f/xde <CJK>
++<U6E1D> /x9f/xdf <CJK>
++<U6E38> /x9f/xe0 <CJK>
++<U6E82> /x9f/xe1 <CJK>
++<U6EAA> /x9f/xe2 <CJK>
++<U6E98> /x9f/xe3 <CJK>
++<U6EC9> /x9f/xe4 <CJK>
++<U6EB7> /x9f/xe5 <CJK>
++<U6ED3> /x9f/xe6 <CJK>
++<U6EBD> /x9f/xe7 <CJK>
++<U6EAF> /x9f/xe8 <CJK>
++<U6EC4> /x9f/xe9 <CJK>
++<U6EB2> /x9f/xea <CJK>
++<U6ED4> /x9f/xeb <CJK>
++<U6ED5> /x9f/xec <CJK>
++<U6E8F> /x9f/xed <CJK>
++<U6EA5> /x9f/xee <CJK>
++<U6EC2> /x9f/xef <CJK>
++<U6E9F> /x9f/xf0 <CJK>
++<U6F41> /x9f/xf1 <CJK>
++<U6F11> /x9f/xf2 <CJK>
++<U704C> /x9f/xf3 <CJK>
++<U6EEC> /x9f/xf4 <CJK>
++<U6EF8> /x9f/xf5 <CJK>
++<U6EFE> /x9f/xf6 <CJK>
++<U6F3F> /x9f/xf7 <CJK>
++<U6EF2> /x9f/xf8 <CJK>
++<U6F31> /x9f/xf9 <CJK>
++<U6EEF> /x9f/xfa <CJK>
++<U6F32> /x9f/xfb <CJK>
++<U6ECC> /x9f/xfc <CJK>
++
++<UFF61> /xa1 HALFWIDTH IDEOGRAPHIC FULL STOP
++<UFF62> /xa2 HALFWIDTH LEFT CORNER BRACKET
++<UFF63> /xa3 HALFWIDTH RIGHT CORNER BRACKET
++<UFF64> /xa4 HALFWIDTH IDEOGRAPHIC COMMA
++<UFF65> /xa5 HALFWIDTH KATAKANA MIDDLE DOT
++<UFF66> /xa6 HALFWIDTH KATAKANA LETTER WO
++<UFF67> /xa7 HALFWIDTH KATAKANA LETTER SMALL A
++<UFF68> /xa8 HALFWIDTH KATAKANA LETTER SMALL I
++<UFF69> /xa9 HALFWIDTH KATAKANA LETTER SMALL U
++<UFF6A> /xaa HALFWIDTH KATAKANA LETTER SMALL E
++<UFF6B> /xab HALFWIDTH KATAKANA LETTER SMALL O
++<UFF6C> /xac HALFWIDTH KATAKANA LETTER SMALL YA
++<UFF6D> /xad HALFWIDTH KATAKANA LETTER SMALL YU
++<UFF6E> /xae HALFWIDTH KATAKANA LETTER SMALL YO
++<UFF6F> /xaf HALFWIDTH KATAKANA LETTER SMALL TU
++<UFF70> /xb0 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
++<UFF71> /xb1 HALFWIDTH KATAKANA LETTER A
++<UFF72> /xb2 HALFWIDTH KATAKANA LETTER I
++<UFF73> /xb3 HALFWIDTH KATAKANA LETTER U
++<UFF74> /xb4 HALFWIDTH KATAKANA LETTER E
++<UFF75> /xb5 HALFWIDTH KATAKANA LETTER O
++<UFF76> /xb6 HALFWIDTH KATAKANA LETTER KA
++<UFF77> /xb7 HALFWIDTH KATAKANA LETTER KI
++<UFF78> /xb8 HALFWIDTH KATAKANA LETTER KU
++<UFF79> /xb9 HALFWIDTH KATAKANA LETTER KE
++<UFF7A> /xba HALFWIDTH KATAKANA LETTER KO
++<UFF7B> /xbb HALFWIDTH KATAKANA LETTER SA
++<UFF7C> /xbc HALFWIDTH KATAKANA LETTER SI
++<UFF7D> /xbd HALFWIDTH KATAKANA LETTER SU
++<UFF7E> /xbe HALFWIDTH KATAKANA LETTER SE
++<UFF7F> /xbf HALFWIDTH KATAKANA LETTER SO
++<UFF80> /xc0 HALFWIDTH KATAKANA LETTER TA
++<UFF81> /xc1 HALFWIDTH KATAKANA LETTER TI
++<UFF82> /xc2 HALFWIDTH KATAKANA LETTER TU
++<UFF83> /xc3 HALFWIDTH KATAKANA LETTER TE
++<UFF84> /xc4 HALFWIDTH KATAKANA LETTER TO
++<UFF85> /xc5 HALFWIDTH KATAKANA LETTER NA
++<UFF86> /xc6 HALFWIDTH KATAKANA LETTER NI
++<UFF87> /xc7 HALFWIDTH KATAKANA LETTER NU
++<UFF88> /xc8 HALFWIDTH KATAKANA LETTER NE
++<UFF89> /xc9 HALFWIDTH KATAKANA LETTER NO
++<UFF8A> /xca HALFWIDTH KATAKANA LETTER HA
++<UFF8B> /xcb HALFWIDTH KATAKANA LETTER HI
++<UFF8C> /xcc HALFWIDTH KATAKANA LETTER HU
++<UFF8D> /xcd HALFWIDTH KATAKANA LETTER HE
++<UFF8E> /xce HALFWIDTH KATAKANA LETTER HO
++<UFF8F> /xcf HALFWIDTH KATAKANA LETTER MA
++<UFF90> /xd0 HALFWIDTH KATAKANA LETTER MI
++<UFF91> /xd1 HALFWIDTH KATAKANA LETTER MU
++<UFF92> /xd2 HALFWIDTH KATAKANA LETTER ME
++<UFF93> /xd3 HALFWIDTH KATAKANA LETTER MO
++<UFF94> /xd4 HALFWIDTH KATAKANA LETTER YA
++<UFF95> /xd5 HALFWIDTH KATAKANA LETTER YU
++<UFF96> /xd6 HALFWIDTH KATAKANA LETTER YO
++<UFF97> /xd7 HALFWIDTH KATAKANA LETTER RA
++<UFF98> /xd8 HALFWIDTH KATAKANA LETTER RI
++<UFF99> /xd9 HALFWIDTH KATAKANA LETTER RU
++<UFF9A> /xda HALFWIDTH KATAKANA LETTER RE
++<UFF9B> /xdb HALFWIDTH KATAKANA LETTER RO
++<UFF9C> /xdc HALFWIDTH KATAKANA LETTER WA
++<UFF9D> /xdd HALFWIDTH KATAKANA LETTER N
++<UFF9E> /xde HALFWIDTH KATAKANA VOICED SOUND MARK
++<UFF9F> /xdf HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
++
++<U6F3E> /xe0/x40 <CJK>
++<U6F13> /xe0/x41 <CJK>
++<U6EF7> /xe0/x42 <CJK>
++<U6F86> /xe0/x43 <CJK>
++<U6F7A> /xe0/x44 <CJK>
++<U6F78> /xe0/x45 <CJK>
++<U6F81> /xe0/x46 <CJK>
++<U6F80> /xe0/x47 <CJK>
++<U6F6F> /xe0/x48 <CJK>
++<U6F5B> /xe0/x49 <CJK>
++<U6FF3> /xe0/x4a <CJK>
++<U6F6D> /xe0/x4b <CJK>
++<U6F82> /xe0/x4c <CJK>
++<U6F7C> /xe0/x4d <CJK>
++<U6F58> /xe0/x4e <CJK>
++<U6F8E> /xe0/x4f <CJK>
++<U6F91> /xe0/x50 <CJK>
++<U6FC2> /xe0/x51 <CJK>
++<U6F66> /xe0/x52 <CJK>
++<U6FB3> /xe0/x53 <CJK>
++<U6FA3> /xe0/x54 <CJK>
++<U6FA1> /xe0/x55 <CJK>
++<U6FA4> /xe0/x56 <CJK>
++<U6FB9> /xe0/x57 <CJK>
++<U6FC6> /xe0/x58 <CJK>
++<U6FAA> /xe0/x59 <CJK>
++<U6FDF> /xe0/x5a <CJK>
++<U6FD5> /xe0/x5b <CJK>
++<U6FEC> /xe0/x5c <CJK>
++<U6FD4> /xe0/x5d <CJK>
++<U6FD8> /xe0/x5e <CJK>
++<U6FF1> /xe0/x5f <CJK>
++<U6FEE> /xe0/x60 <CJK>
++<U6FDB> /xe0/x61 <CJK>
++<U7009> /xe0/x62 <CJK>
++<U700B> /xe0/x63 <CJK>
++<U6FFA> /xe0/x64 <CJK>
++<U7011> /xe0/x65 <CJK>
++<U7001> /xe0/x66 <CJK>
++<U700F> /xe0/x67 <CJK>
++<U6FFE> /xe0/x68 <CJK>
++<U701B> /xe0/x69 <CJK>
++<U701A> /xe0/x6a <CJK>
++<U6F74> /xe0/x6b <CJK>
++<U701D> /xe0/x6c <CJK>
++<U7018> /xe0/x6d <CJK>
++<U701F> /xe0/x6e <CJK>
++<U7030> /xe0/x6f <CJK>
++<U703E> /xe0/x70 <CJK>
++<U7032> /xe0/x71 <CJK>
++<U7051> /xe0/x72 <CJK>
++<U7063> /xe0/x73 <CJK>
++<U7099> /xe0/x74 <CJK>
++<U7092> /xe0/x75 <CJK>
++<U70AF> /xe0/x76 <CJK>
++<U70F1> /xe0/x77 <CJK>
++<U70AC> /xe0/x78 <CJK>
++<U70B8> /xe0/x79 <CJK>
++<U70B3> /xe0/x7a <CJK>
++<U70AE> /xe0/x7b <CJK>
++<U70DF> /xe0/x7c <CJK>
++<U70CB> /xe0/x7d <CJK>
++<U70DD> /xe0/x7e <CJK>
++<U70D9> /xe0/x80 <CJK>
++<U7109> /xe0/x81 <CJK>
++<U70FD> /xe0/x82 <CJK>
++<U711C> /xe0/x83 <CJK>
++<U7119> /xe0/x84 <CJK>
++<U7165> /xe0/x85 <CJK>
++<U7155> /xe0/x86 <CJK>
++<U7188> /xe0/x87 <CJK>
++<U7166> /xe0/x88 <CJK>
++<U7162> /xe0/x89 <CJK>
++<U714C> /xe0/x8a <CJK>
++<U7156> /xe0/x8b <CJK>
++<U716C> /xe0/x8c <CJK>
++<U718F> /xe0/x8d <CJK>
++<U71FB> /xe0/x8e <CJK>
++<U7184> /xe0/x8f <CJK>
++<U7195> /xe0/x90 <CJK>
++<U71A8> /xe0/x91 <CJK>
++<U71AC> /xe0/x92 <CJK>
++<U71D7> /xe0/x93 <CJK>
++<U71B9> /xe0/x94 <CJK>
++<U71BE> /xe0/x95 <CJK>
++<U71D2> /xe0/x96 <CJK>
++<U71C9> /xe0/x97 <CJK>
++<U71D4> /xe0/x98 <CJK>
++<U71CE> /xe0/x99 <CJK>
++<U71E0> /xe0/x9a <CJK>
++<U71EC> /xe0/x9b <CJK>
++<U71E7> /xe0/x9c <CJK>
++<U71F5> /xe0/x9d <CJK>
++<U71FC> /xe0/x9e <CJK>
++<U71F9> /xe0/x9f <CJK>
++<U71FF> /xe0/xa0 <CJK>
++<U720D> /xe0/xa1 <CJK>
++<U7210> /xe0/xa2 <CJK>
++<U721B> /xe0/xa3 <CJK>
++<U7228> /xe0/xa4 <CJK>
++<U722D> /xe0/xa5 <CJK>
++<U722C> /xe0/xa6 <CJK>
++<U7230> /xe0/xa7 <CJK>
++<U7232> /xe0/xa8 <CJK>
++<U723B> /xe0/xa9 <CJK>
++<U723C> /xe0/xaa <CJK>
++<U723F> /xe0/xab <CJK>
++<U7240> /xe0/xac <CJK>
++<U7246> /xe0/xad <CJK>
++<U724B> /xe0/xae <CJK>
++<U7258> /xe0/xaf <CJK>
++<U7274> /xe0/xb0 <CJK>
++<U727E> /xe0/xb1 <CJK>
++<U7282> /xe0/xb2 <CJK>
++<U7281> /xe0/xb3 <CJK>
++<U7287> /xe0/xb4 <CJK>
++<U7292> /xe0/xb5 <CJK>
++<U7296> /xe0/xb6 <CJK>
++<U72A2> /xe0/xb7 <CJK>
++<U72A7> /xe0/xb8 <CJK>
++<U72B9> /xe0/xb9 <CJK>
++<U72B2> /xe0/xba <CJK>
++<U72C3> /xe0/xbb <CJK>
++<U72C6> /xe0/xbc <CJK>
++<U72C4> /xe0/xbd <CJK>
++<U72CE> /xe0/xbe <CJK>
++<U72D2> /xe0/xbf <CJK>
++<U72E2> /xe0/xc0 <CJK>
++<U72E0> /xe0/xc1 <CJK>
++<U72E1> /xe0/xc2 <CJK>
++<U72F9> /xe0/xc3 <CJK>
++<U72F7> /xe0/xc4 <CJK>
++<U500F> /xe0/xc5 <CJK>
++<U7317> /xe0/xc6 <CJK>
++<U730A> /xe0/xc7 <CJK>
++<U731C> /xe0/xc8 <CJK>
++<U7316> /xe0/xc9 <CJK>
++<U731D> /xe0/xca <CJK>
++<U7334> /xe0/xcb <CJK>
++<U732F> /xe0/xcc <CJK>
++<U7329> /xe0/xcd <CJK>
++<U7325> /xe0/xce <CJK>
++<U733E> /xe0/xcf <CJK>
++<U734E> /xe0/xd0 <CJK>
++<U734F> /xe0/xd1 <CJK>
++<U9ED8> /xe0/xd2 <CJK>
++<U7357> /xe0/xd3 <CJK>
++<U736A> /xe0/xd4 <CJK>
++<U7368> /xe0/xd5 <CJK>
++<U7370> /xe0/xd6 <CJK>
++<U7378> /xe0/xd7 <CJK>
++<U7375> /xe0/xd8 <CJK>
++<U737B> /xe0/xd9 <CJK>
++<U737A> /xe0/xda <CJK>
++<U73C8> /xe0/xdb <CJK>
++<U73B3> /xe0/xdc <CJK>
++<U73CE> /xe0/xdd <CJK>
++<U73BB> /xe0/xde <CJK>
++<U73C0> /xe0/xdf <CJK>
++<U73E5> /xe0/xe0 <CJK>
++<U73EE> /xe0/xe1 <CJK>
++<U73DE> /xe0/xe2 <CJK>
++<U74A2> /xe0/xe3 <CJK>
++<U7405> /xe0/xe4 <CJK>
++<U746F> /xe0/xe5 <CJK>
++<U7425> /xe0/xe6 <CJK>
++<U73F8> /xe0/xe7 <CJK>
++<U7432> /xe0/xe8 <CJK>
++<U743A> /xe0/xe9 <CJK>
++<U7455> /xe0/xea <CJK>
++<U743F> /xe0/xeb <CJK>
++<U745F> /xe0/xec <CJK>
++<U7459> /xe0/xed <CJK>
++<U7441> /xe0/xee <CJK>
++<U745C> /xe0/xef <CJK>
++<U7469> /xe0/xf0 <CJK>
++<U7470> /xe0/xf1 <CJK>
++<U7463> /xe0/xf2 <CJK>
++<U746A> /xe0/xf3 <CJK>
++<U7476> /xe0/xf4 <CJK>
++<U747E> /xe0/xf5 <CJK>
++<U748B> /xe0/xf6 <CJK>
++<U749E> /xe0/xf7 <CJK>
++<U74A7> /xe0/xf8 <CJK>
++<U74CA> /xe0/xf9 <CJK>
++<U74CF> /xe0/xfa <CJK>
++<U74D4> /xe0/xfb <CJK>
++<U73F1> /xe0/xfc <CJK>
++<U74E0> /xe1/x40 <CJK>
++<U74E3> /xe1/x41 <CJK>
++<U74E7> /xe1/x42 <CJK>
++<U74E9> /xe1/x43 <CJK>
++<U74EE> /xe1/x44 <CJK>
++<U74F2> /xe1/x45 <CJK>
++<U74F0> /xe1/x46 <CJK>
++<U74F1> /xe1/x47 <CJK>
++<U74F8> /xe1/x48 <CJK>
++<U74F7> /xe1/x49 <CJK>
++<U7504> /xe1/x4a <CJK>
++<U7503> /xe1/x4b <CJK>
++<U7505> /xe1/x4c <CJK>
++<U750C> /xe1/x4d <CJK>
++<U750E> /xe1/x4e <CJK>
++<U750D> /xe1/x4f <CJK>
++<U7515> /xe1/x50 <CJK>
++<U7513> /xe1/x51 <CJK>
++<U751E> /xe1/x52 <CJK>
++<U7526> /xe1/x53 <CJK>
++<U752C> /xe1/x54 <CJK>
++<U753C> /xe1/x55 <CJK>
++<U7544> /xe1/x56 <CJK>
++<U754D> /xe1/x57 <CJK>
++<U754A> /xe1/x58 <CJK>
++<U7549> /xe1/x59 <CJK>
++<U755B> /xe1/x5a <CJK>
++<U7546> /xe1/x5b <CJK>
++<U755A> /xe1/x5c <CJK>
++<U7569> /xe1/x5d <CJK>
++<U7564> /xe1/x5e <CJK>
++<U7567> /xe1/x5f <CJK>
++<U756B> /xe1/x60 <CJK>
++<U756D> /xe1/x61 <CJK>
++<U7578> /xe1/x62 <CJK>
++<U7576> /xe1/x63 <CJK>
++<U7586> /xe1/x64 <CJK>
++<U7587> /xe1/x65 <CJK>
++<U7574> /xe1/x66 <CJK>
++<U758A> /xe1/x67 <CJK>
++<U7589> /xe1/x68 <CJK>
++<U7582> /xe1/x69 <CJK>
++<U7594> /xe1/x6a <CJK>
++<U759A> /xe1/x6b <CJK>
++<U759D> /xe1/x6c <CJK>
++<U75A5> /xe1/x6d <CJK>
++<U75A3> /xe1/x6e <CJK>
++<U75C2> /xe1/x6f <CJK>
++<U75B3> /xe1/x70 <CJK>
++<U75C3> /xe1/x71 <CJK>
++<U75B5> /xe1/x72 <CJK>
++<U75BD> /xe1/x73 <CJK>
++<U75B8> /xe1/x74 <CJK>
++<U75BC> /xe1/x75 <CJK>
++<U75B1> /xe1/x76 <CJK>
++<U75CD> /xe1/x77 <CJK>
++<U75CA> /xe1/x78 <CJK>
++<U75D2> /xe1/x79 <CJK>
++<U75D9> /xe1/x7a <CJK>
++<U75E3> /xe1/x7b <CJK>
++<U75DE> /xe1/x7c <CJK>
++<U75FE> /xe1/x7d <CJK>
++<U75FF> /xe1/x7e <CJK>
++<U75FC> /xe1/x80 <CJK>
++<U7601> /xe1/x81 <CJK>
++<U75F0> /xe1/x82 <CJK>
++<U75FA> /xe1/x83 <CJK>
++<U75F2> /xe1/x84 <CJK>
++<U75F3> /xe1/x85 <CJK>
++<U760B> /xe1/x86 <CJK>
++<U760D> /xe1/x87 <CJK>
++<U7609> /xe1/x88 <CJK>
++<U761F> /xe1/x89 <CJK>
++<U7627> /xe1/x8a <CJK>
++<U7620> /xe1/x8b <CJK>
++<U7621> /xe1/x8c <CJK>
++<U7622> /xe1/x8d <CJK>
++<U7624> /xe1/x8e <CJK>
++<U7634> /xe1/x8f <CJK>
++<U7630> /xe1/x90 <CJK>
++<U763B> /xe1/x91 <CJK>
++<U7647> /xe1/x92 <CJK>
++<U7648> /xe1/x93 <CJK>
++<U7646> /xe1/x94 <CJK>
++<U765C> /xe1/x95 <CJK>
++<U7658> /xe1/x96 <CJK>
++<U7661> /xe1/x97 <CJK>
++<U7662> /xe1/x98 <CJK>
++<U7668> /xe1/x99 <CJK>
++<U7669> /xe1/x9a <CJK>
++<U766A> /xe1/x9b <CJK>
++<U7667> /xe1/x9c <CJK>
++<U766C> /xe1/x9d <CJK>
++<U7670> /xe1/x9e <CJK>
++<U7672> /xe1/x9f <CJK>
++<U7676> /xe1/xa0 <CJK>
++<U7678> /xe1/xa1 <CJK>
++<U767C> /xe1/xa2 <CJK>
++<U7680> /xe1/xa3 <CJK>
++<U7683> /xe1/xa4 <CJK>
++<U7688> /xe1/xa5 <CJK>
++<U768B> /xe1/xa6 <CJK>
++<U768E> /xe1/xa7 <CJK>
++<U7696> /xe1/xa8 <CJK>
++<U7693> /xe1/xa9 <CJK>
++<U7699> /xe1/xaa <CJK>
++<U769A> /xe1/xab <CJK>
++<U76B0> /xe1/xac <CJK>
++<U76B4> /xe1/xad <CJK>
++<U76B8> /xe1/xae <CJK>
++<U76B9> /xe1/xaf <CJK>
++<U76BA> /xe1/xb0 <CJK>
++<U76C2> /xe1/xb1 <CJK>
++<U76CD> /xe1/xb2 <CJK>
++<U76D6> /xe1/xb3 <CJK>
++<U76D2> /xe1/xb4 <CJK>
++<U76DE> /xe1/xb5 <CJK>
++<U76E1> /xe1/xb6 <CJK>
++<U76E5> /xe1/xb7 <CJK>
++<U76E7> /xe1/xb8 <CJK>
++<U76EA> /xe1/xb9 <CJK>
++<U862F> /xe1/xba <CJK>
++<U76FB> /xe1/xbb <CJK>
++<U7708> /xe1/xbc <CJK>
++<U7707> /xe1/xbd <CJK>
++<U7704> /xe1/xbe <CJK>
++<U7729> /xe1/xbf <CJK>
++<U7724> /xe1/xc0 <CJK>
++<U771E> /xe1/xc1 <CJK>
++<U7725> /xe1/xc2 <CJK>
++<U7726> /xe1/xc3 <CJK>
++<U771B> /xe1/xc4 <CJK>
++<U7737> /xe1/xc5 <CJK>
++<U7738> /xe1/xc6 <CJK>
++<U7747> /xe1/xc7 <CJK>
++<U775A> /xe1/xc8 <CJK>
++<U7768> /xe1/xc9 <CJK>
++<U776B> /xe1/xca <CJK>
++<U775B> /xe1/xcb <CJK>
++<U7765> /xe1/xcc <CJK>
++<U777F> /xe1/xcd <CJK>
++<U777E> /xe1/xce <CJK>
++<U7779> /xe1/xcf <CJK>
++<U778E> /xe1/xd0 <CJK>
++<U778B> /xe1/xd1 <CJK>
++<U7791> /xe1/xd2 <CJK>
++<U77A0> /xe1/xd3 <CJK>
++<U779E> /xe1/xd4 <CJK>
++<U77B0> /xe1/xd5 <CJK>
++<U77B6> /xe1/xd6 <CJK>
++<U77B9> /xe1/xd7 <CJK>
++<U77BF> /xe1/xd8 <CJK>
++<U77BC> /xe1/xd9 <CJK>
++<U77BD> /xe1/xda <CJK>
++<U77BB> /xe1/xdb <CJK>
++<U77C7> /xe1/xdc <CJK>
++<U77CD> /xe1/xdd <CJK>
++<U77D7> /xe1/xde <CJK>
++<U77DA> /xe1/xdf <CJK>
++<U77DC> /xe1/xe0 <CJK>
++<U77E3> /xe1/xe1 <CJK>
++<U77EE> /xe1/xe2 <CJK>
++<U77FC> /xe1/xe3 <CJK>
++<U780C> /xe1/xe4 <CJK>
++<U7812> /xe1/xe5 <CJK>
++<U7926> /xe1/xe6 <CJK>
++<U7820> /xe1/xe7 <CJK>
++<U792A> /xe1/xe8 <CJK>
++<U7845> /xe1/xe9 <CJK>
++<U788E> /xe1/xea <CJK>
++<U7874> /xe1/xeb <CJK>
++<U7886> /xe1/xec <CJK>
++<U787C> /xe1/xed <CJK>
++<U789A> /xe1/xee <CJK>
++<U788C> /xe1/xef <CJK>
++<U78A3> /xe1/xf0 <CJK>
++<U78B5> /xe1/xf1 <CJK>
++<U78AA> /xe1/xf2 <CJK>
++<U78AF> /xe1/xf3 <CJK>
++<U78D1> /xe1/xf4 <CJK>
++<U78C6> /xe1/xf5 <CJK>
++<U78CB> /xe1/xf6 <CJK>
++<U78D4> /xe1/xf7 <CJK>
++<U78BE> /xe1/xf8 <CJK>
++<U78BC> /xe1/xf9 <CJK>
++<U78C5> /xe1/xfa <CJK>
++<U78CA> /xe1/xfb <CJK>
++<U78EC> /xe1/xfc <CJK>
++<U78E7> /xe2/x40 <CJK>
++<U78DA> /xe2/x41 <CJK>
++<U78FD> /xe2/x42 <CJK>
++<U78F4> /xe2/x43 <CJK>
++<U7907> /xe2/x44 <CJK>
++<U7912> /xe2/x45 <CJK>
++<U7911> /xe2/x46 <CJK>
++<U7919> /xe2/x47 <CJK>
++<U792C> /xe2/x48 <CJK>
++<U792B> /xe2/x49 <CJK>
++<U7940> /xe2/x4a <CJK>
++<U7960> /xe2/x4b <CJK>
++<U7957> /xe2/x4c <CJK>
++<U795F> /xe2/x4d <CJK>
++<U795A> /xe2/x4e <CJK>
++<U7955> /xe2/x4f <CJK>
++<U7953> /xe2/x50 <CJK>
++<U797A> /xe2/x51 <CJK>
++<U797F> /xe2/x52 <CJK>
++<U798A> /xe2/x53 <CJK>
++<U799D> /xe2/x54 <CJK>
++<U79A7> /xe2/x55 <CJK>
++<U9F4B> /xe2/x56 <CJK>
++<U79AA> /xe2/x57 <CJK>
++<U79AE> /xe2/x58 <CJK>
++<U79B3> /xe2/x59 <CJK>
++<U79B9> /xe2/x5a <CJK>
++<U79BA> /xe2/x5b <CJK>
++<U79C9> /xe2/x5c <CJK>
++<U79D5> /xe2/x5d <CJK>
++<U79E7> /xe2/x5e <CJK>
++<U79EC> /xe2/x5f <CJK>
++<U79E1> /xe2/x60 <CJK>
++<U79E3> /xe2/x61 <CJK>
++<U7A08> /xe2/x62 <CJK>
++<U7A0D> /xe2/x63 <CJK>
++<U7A18> /xe2/x64 <CJK>
++<U7A19> /xe2/x65 <CJK>
++<U7A20> /xe2/x66 <CJK>
++<U7A1F> /xe2/x67 <CJK>
++<U7980> /xe2/x68 <CJK>
++<U7A31> /xe2/x69 <CJK>
++<U7A3B> /xe2/x6a <CJK>
++<U7A3E> /xe2/x6b <CJK>
++<U7A37> /xe2/x6c <CJK>
++<U7A43> /xe2/x6d <CJK>
++<U7A57> /xe2/x6e <CJK>
++<U7A49> /xe2/x6f <CJK>
++<U7A61> /xe2/x70 <CJK>
++<U7A62> /xe2/x71 <CJK>
++<U7A69> /xe2/x72 <CJK>
++<U9F9D> /xe2/x73 <CJK>
++<U7A70> /xe2/x74 <CJK>
++<U7A79> /xe2/x75 <CJK>
++<U7A7D> /xe2/x76 <CJK>
++<U7A88> /xe2/x77 <CJK>
++<U7A97> /xe2/x78 <CJK>
++<U7A95> /xe2/x79 <CJK>
++<U7A98> /xe2/x7a <CJK>
++<U7A96> /xe2/x7b <CJK>
++<U7AA9> /xe2/x7c <CJK>
++<U7AC8> /xe2/x7d <CJK>
++<U7AB0> /xe2/x7e <CJK>
++<U7AB6> /xe2/x80 <CJK>
++<U7AC5> /xe2/x81 <CJK>
++<U7AC4> /xe2/x82 <CJK>
++<U7ABF> /xe2/x83 <CJK>
++<U9083> /xe2/x84 <CJK>
++<U7AC7> /xe2/x85 <CJK>
++<U7ACA> /xe2/x86 <CJK>
++<U7ACD> /xe2/x87 <CJK>
++<U7ACF> /xe2/x88 <CJK>
++<U7AD5> /xe2/x89 <CJK>
++<U7AD3> /xe2/x8a <CJK>
++<U7AD9> /xe2/x8b <CJK>
++<U7ADA> /xe2/x8c <CJK>
++<U7ADD> /xe2/x8d <CJK>
++<U7AE1> /xe2/x8e <CJK>
++<U7AE2> /xe2/x8f <CJK>
++<U7AE6> /xe2/x90 <CJK>
++<U7AED> /xe2/x91 <CJK>
++<U7AF0> /xe2/x92 <CJK>
++<U7B02> /xe2/x93 <CJK>
++<U7B0F> /xe2/x94 <CJK>
++<U7B0A> /xe2/x95 <CJK>
++<U7B06> /xe2/x96 <CJK>
++<U7B33> /xe2/x97 <CJK>
++<U7B18> /xe2/x98 <CJK>
++<U7B19> /xe2/x99 <CJK>
++<U7B1E> /xe2/x9a <CJK>
++<U7B35> /xe2/x9b <CJK>
++<U7B28> /xe2/x9c <CJK>
++<U7B36> /xe2/x9d <CJK>
++<U7B50> /xe2/x9e <CJK>
++<U7B7A> /xe2/x9f <CJK>
++<U7B04> /xe2/xa0 <CJK>
++<U7B4D> /xe2/xa1 <CJK>
++<U7B0B> /xe2/xa2 <CJK>
++<U7B4C> /xe2/xa3 <CJK>
++<U7B45> /xe2/xa4 <CJK>
++<U7B75> /xe2/xa5 <CJK>
++<U7B65> /xe2/xa6 <CJK>
++<U7B74> /xe2/xa7 <CJK>
++<U7B67> /xe2/xa8 <CJK>
++<U7B70> /xe2/xa9 <CJK>
++<U7B71> /xe2/xaa <CJK>
++<U7B6C> /xe2/xab <CJK>
++<U7B6E> /xe2/xac <CJK>
++<U7B9D> /xe2/xad <CJK>
++<U7B98> /xe2/xae <CJK>
++<U7B9F> /xe2/xaf <CJK>
++<U7B8D> /xe2/xb0 <CJK>
++<U7B9C> /xe2/xb1 <CJK>
++<U7B9A> /xe2/xb2 <CJK>
++<U7B8B> /xe2/xb3 <CJK>
++<U7B92> /xe2/xb4 <CJK>
++<U7B8F> /xe2/xb5 <CJK>
++<U7B5D> /xe2/xb6 <CJK>
++<U7B99> /xe2/xb7 <CJK>
++<U7BCB> /xe2/xb8 <CJK>
++<U7BC1> /xe2/xb9 <CJK>
++<U7BCC> /xe2/xba <CJK>
++<U7BCF> /xe2/xbb <CJK>
++<U7BB4> /xe2/xbc <CJK>
++<U7BC6> /xe2/xbd <CJK>
++<U7BDD> /xe2/xbe <CJK>
++<U7BE9> /xe2/xbf <CJK>
++<U7C11> /xe2/xc0 <CJK>
++<U7C14> /xe2/xc1 <CJK>
++<U7BE6> /xe2/xc2 <CJK>
++<U7BE5> /xe2/xc3 <CJK>
++<U7C60> /xe2/xc4 <CJK>
++<U7C00> /xe2/xc5 <CJK>
++<U7C07> /xe2/xc6 <CJK>
++<U7C13> /xe2/xc7 <CJK>
++<U7BF3> /xe2/xc8 <CJK>
++<U7BF7> /xe2/xc9 <CJK>
++<U7C17> /xe2/xca <CJK>
++<U7C0D> /xe2/xcb <CJK>
++<U7BF6> /xe2/xcc <CJK>
++<U7C23> /xe2/xcd <CJK>
++<U7C27> /xe2/xce <CJK>
++<U7C2A> /xe2/xcf <CJK>
++<U7C1F> /xe2/xd0 <CJK>
++<U7C37> /xe2/xd1 <CJK>
++<U7C2B> /xe2/xd2 <CJK>
++<U7C3D> /xe2/xd3 <CJK>
++<U7C4C> /xe2/xd4 <CJK>
++<U7C43> /xe2/xd5 <CJK>
++<U7C54> /xe2/xd6 <CJK>
++<U7C4F> /xe2/xd7 <CJK>
++<U7C40> /xe2/xd8 <CJK>
++<U7C50> /xe2/xd9 <CJK>
++<U7C58> /xe2/xda <CJK>
++<U7C5F> /xe2/xdb <CJK>
++<U7C64> /xe2/xdc <CJK>
++<U7C56> /xe2/xdd <CJK>
++<U7C65> /xe2/xde <CJK>
++<U7C6C> /xe2/xdf <CJK>
++<U7C75> /xe2/xe0 <CJK>
++<U7C83> /xe2/xe1 <CJK>
++<U7C90> /xe2/xe2 <CJK>
++<U7CA4> /xe2/xe3 <CJK>
++<U7CAD> /xe2/xe4 <CJK>
++<U7CA2> /xe2/xe5 <CJK>
++<U7CAB> /xe2/xe6 <CJK>
++<U7CA1> /xe2/xe7 <CJK>
++<U7CA8> /xe2/xe8 <CJK>
++<U7CB3> /xe2/xe9 <CJK>
++<U7CB2> /xe2/xea <CJK>
++<U7CB1> /xe2/xeb <CJK>
++<U7CAE> /xe2/xec <CJK>
++<U7CB9> /xe2/xed <CJK>
++<U7CBD> /xe2/xee <CJK>
++<U7CC0> /xe2/xef <CJK>
++<U7CC5> /xe2/xf0 <CJK>
++<U7CC2> /xe2/xf1 <CJK>
++<U7CD8> /xe2/xf2 <CJK>
++<U7CD2> /xe2/xf3 <CJK>
++<U7CDC> /xe2/xf4 <CJK>
++<U7CE2> /xe2/xf5 <CJK>
++<U9B3B> /xe2/xf6 <CJK>
++<U7CEF> /xe2/xf7 <CJK>
++<U7CF2> /xe2/xf8 <CJK>
++<U7CF4> /xe2/xf9 <CJK>
++<U7CF6> /xe2/xfa <CJK>
++<U7CFA> /xe2/xfb <CJK>
++<U7D06> /xe2/xfc <CJK>
++<U7D02> /xe3/x40 <CJK>
++<U7D1C> /xe3/x41 <CJK>
++<U7D15> /xe3/x42 <CJK>
++<U7D0A> /xe3/x43 <CJK>
++<U7D45> /xe3/x44 <CJK>
++<U7D4B> /xe3/x45 <CJK>
++<U7D2E> /xe3/x46 <CJK>
++<U7D32> /xe3/x47 <CJK>
++<U7D3F> /xe3/x48 <CJK>
++<U7D35> /xe3/x49 <CJK>
++<U7D46> /xe3/x4a <CJK>
++<U7D73> /xe3/x4b <CJK>
++<U7D56> /xe3/x4c <CJK>
++<U7D4E> /xe3/x4d <CJK>
++<U7D72> /xe3/x4e <CJK>
++<U7D68> /xe3/x4f <CJK>
++<U7D6E> /xe3/x50 <CJK>
++<U7D4F> /xe3/x51 <CJK>
++<U7D63> /xe3/x52 <CJK>
++<U7D93> /xe3/x53 <CJK>
++<U7D89> /xe3/x54 <CJK>
++<U7D5B> /xe3/x55 <CJK>
++<U7D8F> /xe3/x56 <CJK>
++<U7D7D> /xe3/x57 <CJK>
++<U7D9B> /xe3/x58 <CJK>
++<U7DBA> /xe3/x59 <CJK>
++<U7DAE> /xe3/x5a <CJK>
++<U7DA3> /xe3/x5b <CJK>
++<U7DB5> /xe3/x5c <CJK>
++<U7DC7> /xe3/x5d <CJK>
++<U7DBD> /xe3/x5e <CJK>
++<U7DAB> /xe3/x5f <CJK>
++<U7E3D> /xe3/x60 <CJK>
++<U7DA2> /xe3/x61 <CJK>
++<U7DAF> /xe3/x62 <CJK>
++<U7DDC> /xe3/x63 <CJK>
++<U7DB8> /xe3/x64 <CJK>
++<U7D9F> /xe3/x65 <CJK>
++<U7DB0> /xe3/x66 <CJK>
++<U7DD8> /xe3/x67 <CJK>
++<U7DDD> /xe3/x68 <CJK>
++<U7DE4> /xe3/x69 <CJK>
++<U7DDE> /xe3/x6a <CJK>
++<U7DFB> /xe3/x6b <CJK>
++<U7DF2> /xe3/x6c <CJK>
++<U7DE1> /xe3/x6d <CJK>
++<U7E05> /xe3/x6e <CJK>
++<U7E0A> /xe3/x6f <CJK>
++<U7E23> /xe3/x70 <CJK>
++<U7E21> /xe3/x71 <CJK>
++<U7E12> /xe3/x72 <CJK>
++<U7E31> /xe3/x73 <CJK>
++<U7E1F> /xe3/x74 <CJK>
++<U7E09> /xe3/x75 <CJK>
++<U7E0B> /xe3/x76 <CJK>
++<U7E22> /xe3/x77 <CJK>
++<U7E46> /xe3/x78 <CJK>
++<U7E66> /xe3/x79 <CJK>
++<U7E3B> /xe3/x7a <CJK>
++<U7E35> /xe3/x7b <CJK>
++<U7E39> /xe3/x7c <CJK>
++<U7E43> /xe3/x7d <CJK>
++<U7E37> /xe3/x7e <CJK>
++<U7E32> /xe3/x80 <CJK>
++<U7E3A> /xe3/x81 <CJK>
++<U7E67> /xe3/x82 <CJK>
++<U7E5D> /xe3/x83 <CJK>
++<U7E56> /xe3/x84 <CJK>
++<U7E5E> /xe3/x85 <CJK>
++<U7E59> /xe3/x86 <CJK>
++<U7E5A> /xe3/x87 <CJK>
++<U7E79> /xe3/x88 <CJK>
++<U7E6A> /xe3/x89 <CJK>
++<U7E69> /xe3/x8a <CJK>
++<U7E7C> /xe3/x8b <CJK>
++<U7E7B> /xe3/x8c <CJK>
++<U7E83> /xe3/x8d <CJK>
++<U7DD5> /xe3/x8e <CJK>
++<U7E7D> /xe3/x8f <CJK>
++<U8FAE> /xe3/x90 <CJK>
++<U7E7F> /xe3/x91 <CJK>
++<U7E88> /xe3/x92 <CJK>
++<U7E89> /xe3/x93 <CJK>
++<U7E8C> /xe3/x94 <CJK>
++<U7E92> /xe3/x95 <CJK>
++<U7E90> /xe3/x96 <CJK>
++<U7E93> /xe3/x97 <CJK>
++<U7E94> /xe3/x98 <CJK>
++<U7E96> /xe3/x99 <CJK>
++<U7E8E> /xe3/x9a <CJK>
++<U7E9B> /xe3/x9b <CJK>
++<U7E9C> /xe3/x9c <CJK>
++<U7F38> /xe3/x9d <CJK>
++<U7F3A> /xe3/x9e <CJK>
++<U7F45> /xe3/x9f <CJK>
++<U7F4C> /xe3/xa0 <CJK>
++<U7F4D> /xe3/xa1 <CJK>
++<U7F4E> /xe3/xa2 <CJK>
++<U7F50> /xe3/xa3 <CJK>
++<U7F51> /xe3/xa4 <CJK>
++<U7F55> /xe3/xa5 <CJK>
++<U7F54> /xe3/xa6 <CJK>
++<U7F58> /xe3/xa7 <CJK>
++<U7F5F> /xe3/xa8 <CJK>
++<U7F60> /xe3/xa9 <CJK>
++<U7F68> /xe3/xaa <CJK>
++<U7F69> /xe3/xab <CJK>
++<U7F67> /xe3/xac <CJK>
++<U7F78> /xe3/xad <CJK>
++<U7F82> /xe3/xae <CJK>
++<U7F86> /xe3/xaf <CJK>
++<U7F83> /xe3/xb0 <CJK>
++<U7F88> /xe3/xb1 <CJK>
++<U7F87> /xe3/xb2 <CJK>
++<U7F8C> /xe3/xb3 <CJK>
++<U7F94> /xe3/xb4 <CJK>
++<U7F9E> /xe3/xb5 <CJK>
++<U7F9D> /xe3/xb6 <CJK>
++<U7F9A> /xe3/xb7 <CJK>
++<U7FA3> /xe3/xb8 <CJK>
++<U7FAF> /xe3/xb9 <CJK>
++<U7FB2> /xe3/xba <CJK>
++<U7FB9> /xe3/xbb <CJK>
++<U7FAE> /xe3/xbc <CJK>
++<U7FB6> /xe3/xbd <CJK>
++<U7FB8> /xe3/xbe <CJK>
++<U8B71> /xe3/xbf <CJK>
++<U7FC5> /xe3/xc0 <CJK>
++<U7FC6> /xe3/xc1 <CJK>
++<U7FCA> /xe3/xc2 <CJK>
++<U7FD5> /xe3/xc3 <CJK>
++<U7FD4> /xe3/xc4 <CJK>
++<U7FE1> /xe3/xc5 <CJK>
++<U7FE6> /xe3/xc6 <CJK>
++<U7FE9> /xe3/xc7 <CJK>
++<U7FF3> /xe3/xc8 <CJK>
++<U7FF9> /xe3/xc9 <CJK>
++<U98DC> /xe3/xca <CJK>
++<U8006> /xe3/xcb <CJK>
++<U8004> /xe3/xcc <CJK>
++<U800B> /xe3/xcd <CJK>
++<U8012> /xe3/xce <CJK>
++<U8018> /xe3/xcf <CJK>
++<U8019> /xe3/xd0 <CJK>
++<U801C> /xe3/xd1 <CJK>
++<U8021> /xe3/xd2 <CJK>
++<U8028> /xe3/xd3 <CJK>
++<U803F> /xe3/xd4 <CJK>
++<U803B> /xe3/xd5 <CJK>
++<U804A> /xe3/xd6 <CJK>
++<U8046> /xe3/xd7 <CJK>
++<U8052> /xe3/xd8 <CJK>
++<U8058> /xe3/xd9 <CJK>
++<U805A> /xe3/xda <CJK>
++<U805F> /xe3/xdb <CJK>
++<U8062> /xe3/xdc <CJK>
++<U8068> /xe3/xdd <CJK>
++<U8073> /xe3/xde <CJK>
++<U8072> /xe3/xdf <CJK>
++<U8070> /xe3/xe0 <CJK>
++<U8076> /xe3/xe1 <CJK>
++<U8079> /xe3/xe2 <CJK>
++<U807D> /xe3/xe3 <CJK>
++<U807F> /xe3/xe4 <CJK>
++<U8084> /xe3/xe5 <CJK>
++<U8086> /xe3/xe6 <CJK>
++<U8085> /xe3/xe7 <CJK>
++<U809B> /xe3/xe8 <CJK>
++<U8093> /xe3/xe9 <CJK>
++<U809A> /xe3/xea <CJK>
++<U80AD> /xe3/xeb <CJK>
++<U5190> /xe3/xec <CJK>
++<U80AC> /xe3/xed <CJK>
++<U80DB> /xe3/xee <CJK>
++<U80E5> /xe3/xef <CJK>
++<U80D9> /xe3/xf0 <CJK>
++<U80DD> /xe3/xf1 <CJK>
++<U80C4> /xe3/xf2 <CJK>
++<U80DA> /xe3/xf3 <CJK>
++<U80D6> /xe3/xf4 <CJK>
++<U8109> /xe3/xf5 <CJK>
++<U80EF> /xe3/xf6 <CJK>
++<U80F1> /xe3/xf7 <CJK>
++<U811B> /xe3/xf8 <CJK>
++<U8129> /xe3/xf9 <CJK>
++<U8123> /xe3/xfa <CJK>
++<U812F> /xe3/xfb <CJK>
++<U814B> /xe3/xfc <CJK>
++<U968B> /xe4/x40 <CJK>
++<U8146> /xe4/x41 <CJK>
++<U813E> /xe4/x42 <CJK>
++<U8153> /xe4/x43 <CJK>
++<U8151> /xe4/x44 <CJK>
++<U80FC> /xe4/x45 <CJK>
++<U8171> /xe4/x46 <CJK>
++<U816E> /xe4/x47 <CJK>
++<U8165> /xe4/x48 <CJK>
++<U8166> /xe4/x49 <CJK>
++<U8174> /xe4/x4a <CJK>
++<U8183> /xe4/x4b <CJK>
++<U8188> /xe4/x4c <CJK>
++<U818A> /xe4/x4d <CJK>
++<U8180> /xe4/x4e <CJK>
++<U8182> /xe4/x4f <CJK>
++<U81A0> /xe4/x50 <CJK>
++<U8195> /xe4/x51 <CJK>
++<U81A4> /xe4/x52 <CJK>
++<U81A3> /xe4/x53 <CJK>
++<U815F> /xe4/x54 <CJK>
++<U8193> /xe4/x55 <CJK>
++<U81A9> /xe4/x56 <CJK>
++<U81B0> /xe4/x57 <CJK>
++<U81B5> /xe4/x58 <CJK>
++<U81BE> /xe4/x59 <CJK>
++<U81B8> /xe4/x5a <CJK>
++<U81BD> /xe4/x5b <CJK>
++<U81C0> /xe4/x5c <CJK>
++<U81C2> /xe4/x5d <CJK>
++<U81BA> /xe4/x5e <CJK>
++<U81C9> /xe4/x5f <CJK>
++<U81CD> /xe4/x60 <CJK>
++<U81D1> /xe4/x61 <CJK>
++<U81D9> /xe4/x62 <CJK>
++<U81D8> /xe4/x63 <CJK>
++<U81C8> /xe4/x64 <CJK>
++<U81DA> /xe4/x65 <CJK>
++<U81DF> /xe4/x66 <CJK>
++<U81E0> /xe4/x67 <CJK>
++<U81E7> /xe4/x68 <CJK>
++<U81FA> /xe4/x69 <CJK>
++<U81FB> /xe4/x6a <CJK>
++<U81FE> /xe4/x6b <CJK>
++<U8201> /xe4/x6c <CJK>
++<U8202> /xe4/x6d <CJK>
++<U8205> /xe4/x6e <CJK>
++<U8207> /xe4/x6f <CJK>
++<U820A> /xe4/x70 <CJK>
++<U820D> /xe4/x71 <CJK>
++<U8210> /xe4/x72 <CJK>
++<U8216> /xe4/x73 <CJK>
++<U8229> /xe4/x74 <CJK>
++<U822B> /xe4/x75 <CJK>
++<U8238> /xe4/x76 <CJK>
++<U8233> /xe4/x77 <CJK>
++<U8240> /xe4/x78 <CJK>
++<U8259> /xe4/x79 <CJK>
++<U8258> /xe4/x7a <CJK>
++<U825D> /xe4/x7b <CJK>
++<U825A> /xe4/x7c <CJK>
++<U825F> /xe4/x7d <CJK>
++<U8264> /xe4/x7e <CJK>
++<U8262> /xe4/x80 <CJK>
++<U8268> /xe4/x81 <CJK>
++<U826A> /xe4/x82 <CJK>
++<U826B> /xe4/x83 <CJK>
++<U822E> /xe4/x84 <CJK>
++<U8271> /xe4/x85 <CJK>
++<U8277> /xe4/x86 <CJK>
++<U8278> /xe4/x87 <CJK>
++<U827E> /xe4/x88 <CJK>
++<U828D> /xe4/x89 <CJK>
++<U8292> /xe4/x8a <CJK>
++<U82AB> /xe4/x8b <CJK>
++<U829F> /xe4/x8c <CJK>
++<U82BB> /xe4/x8d <CJK>
++<U82AC> /xe4/x8e <CJK>
++<U82E1> /xe4/x8f <CJK>
++<U82E3> /xe4/x90 <CJK>
++<U82DF> /xe4/x91 <CJK>
++<U82D2> /xe4/x92 <CJK>
++<U82F4> /xe4/x93 <CJK>
++<U82F3> /xe4/x94 <CJK>
++<U82FA> /xe4/x95 <CJK>
++<U8393> /xe4/x96 <CJK>
++<U8303> /xe4/x97 <CJK>
++<U82FB> /xe4/x98 <CJK>
++<U82F9> /xe4/x99 <CJK>
++<U82DE> /xe4/x9a <CJK>
++<U8306> /xe4/x9b <CJK>
++<U82DC> /xe4/x9c <CJK>
++<U8309> /xe4/x9d <CJK>
++<U82D9> /xe4/x9e <CJK>
++<U8335> /xe4/x9f <CJK>
++<U8334> /xe4/xa0 <CJK>
++<U8316> /xe4/xa1 <CJK>
++<U8332> /xe4/xa2 <CJK>
++<U8331> /xe4/xa3 <CJK>
++<U8340> /xe4/xa4 <CJK>
++<U8339> /xe4/xa5 <CJK>
++<U8350> /xe4/xa6 <CJK>
++<U8345> /xe4/xa7 <CJK>
++<U832F> /xe4/xa8 <CJK>
++<U832B> /xe4/xa9 <CJK>
++<U8317> /xe4/xaa <CJK>
++<U8318> /xe4/xab <CJK>
++<U8385> /xe4/xac <CJK>
++<U839A> /xe4/xad <CJK>
++<U83AA> /xe4/xae <CJK>
++<U839F> /xe4/xaf <CJK>
++<U83A2> /xe4/xb0 <CJK>
++<U8396> /xe4/xb1 <CJK>
++<U8323> /xe4/xb2 <CJK>
++<U838E> /xe4/xb3 <CJK>
++<U8387> /xe4/xb4 <CJK>
++<U838A> /xe4/xb5 <CJK>
++<U837C> /xe4/xb6 <CJK>
++<U83B5> /xe4/xb7 <CJK>
++<U8373> /xe4/xb8 <CJK>
++<U8375> /xe4/xb9 <CJK>
++<U83A0> /xe4/xba <CJK>
++<U8389> /xe4/xbb <CJK>
++<U83A8> /xe4/xbc <CJK>
++<U83F4> /xe4/xbd <CJK>
++<U8413> /xe4/xbe <CJK>
++<U83EB> /xe4/xbf <CJK>
++<U83CE> /xe4/xc0 <CJK>
++<U83FD> /xe4/xc1 <CJK>
++<U8403> /xe4/xc2 <CJK>
++<U83D8> /xe4/xc3 <CJK>
++<U840B> /xe4/xc4 <CJK>
++<U83C1> /xe4/xc5 <CJK>
++<U83F7> /xe4/xc6 <CJK>
++<U8407> /xe4/xc7 <CJK>
++<U83E0> /xe4/xc8 <CJK>
++<U83F2> /xe4/xc9 <CJK>
++<U840D> /xe4/xca <CJK>
++<U8422> /xe4/xcb <CJK>
++<U8420> /xe4/xcc <CJK>
++<U83BD> /xe4/xcd <CJK>
++<U8438> /xe4/xce <CJK>
++<U8506> /xe4/xcf <CJK>
++<U83FB> /xe4/xd0 <CJK>
++<U846D> /xe4/xd1 <CJK>
++<U842A> /xe4/xd2 <CJK>
++<U843C> /xe4/xd3 <CJK>
++<U855A> /xe4/xd4 <CJK>
++<U8484> /xe4/xd5 <CJK>
++<U8477> /xe4/xd6 <CJK>
++<U846B> /xe4/xd7 <CJK>
++<U84AD> /xe4/xd8 <CJK>
++<U846E> /xe4/xd9 <CJK>
++<U8482> /xe4/xda <CJK>
++<U8469> /xe4/xdb <CJK>
++<U8446> /xe4/xdc <CJK>
++<U842C> /xe4/xdd <CJK>
++<U846F> /xe4/xde <CJK>
++<U8479> /xe4/xdf <CJK>
++<U8435> /xe4/xe0 <CJK>
++<U84CA> /xe4/xe1 <CJK>
++<U8462> /xe4/xe2 <CJK>
++<U84B9> /xe4/xe3 <CJK>
++<U84BF> /xe4/xe4 <CJK>
++<U849F> /xe4/xe5 <CJK>
++<U84D9> /xe4/xe6 <CJK>
++<U84CD> /xe4/xe7 <CJK>
++<U84BB> /xe4/xe8 <CJK>
++<U84DA> /xe4/xe9 <CJK>
++<U84D0> /xe4/xea <CJK>
++<U84C1> /xe4/xeb <CJK>
++<U84C6> /xe4/xec <CJK>
++<U84D6> /xe4/xed <CJK>
++<U84A1> /xe4/xee <CJK>
++<U8521> /xe4/xef <CJK>
++<U84FF> /xe4/xf0 <CJK>
++<U84F4> /xe4/xf1 <CJK>
++<U8517> /xe4/xf2 <CJK>
++<U8518> /xe4/xf3 <CJK>
++<U852C> /xe4/xf4 <CJK>
++<U851F> /xe4/xf5 <CJK>
++<U8515> /xe4/xf6 <CJK>
++<U8514> /xe4/xf7 <CJK>
++<U84FC> /xe4/xf8 <CJK>
++<U8540> /xe4/xf9 <CJK>
++<U8563> /xe4/xfa <CJK>
++<U8558> /xe4/xfb <CJK>
++<U8548> /xe4/xfc <CJK>
++<U8541> /xe5/x40 <CJK>
++<U8602> /xe5/x41 <CJK>
++<U854B> /xe5/x42 <CJK>
++<U8555> /xe5/x43 <CJK>
++<U8580> /xe5/x44 <CJK>
++<U85A4> /xe5/x45 <CJK>
++<U8588> /xe5/x46 <CJK>
++<U8591> /xe5/x47 <CJK>
++<U858A> /xe5/x48 <CJK>
++<U85A8> /xe5/x49 <CJK>
++<U856D> /xe5/x4a <CJK>
++<U8594> /xe5/x4b <CJK>
++<U859B> /xe5/x4c <CJK>
++<U85EA> /xe5/x4d <CJK>
++<U8587> /xe5/x4e <CJK>
++<U859C> /xe5/x4f <CJK>
++<U8577> /xe5/x50 <CJK>
++<U857E> /xe5/x51 <CJK>
++<U8590> /xe5/x52 <CJK>
++<U85C9> /xe5/x53 <CJK>
++<U85BA> /xe5/x54 <CJK>
++<U85CF> /xe5/x55 <CJK>
++<U85B9> /xe5/x56 <CJK>
++<U85D0> /xe5/x57 <CJK>
++<U85D5> /xe5/x58 <CJK>
++<U85DD> /xe5/x59 <CJK>
++<U85E5> /xe5/x5a <CJK>
++<U85DC> /xe5/x5b <CJK>
++<U85F9> /xe5/x5c <CJK>
++<U860A> /xe5/x5d <CJK>
++<U8613> /xe5/x5e <CJK>
++<U860B> /xe5/x5f <CJK>
++<U85FE> /xe5/x60 <CJK>
++<U85FA> /xe5/x61 <CJK>
++<U8606> /xe5/x62 <CJK>
++<U8622> /xe5/x63 <CJK>
++<U861A> /xe5/x64 <CJK>
++<U8630> /xe5/x65 <CJK>
++<U863F> /xe5/x66 <CJK>
++<U864D> /xe5/x67 <CJK>
++<U4E55> /xe5/x68 <CJK>
++<U8654> /xe5/x69 <CJK>
++<U865F> /xe5/x6a <CJK>
++<U8667> /xe5/x6b <CJK>
++<U8671> /xe5/x6c <CJK>
++<U8693> /xe5/x6d <CJK>
++<U86A3> /xe5/x6e <CJK>
++<U86A9> /xe5/x6f <CJK>
++<U86AA> /xe5/x70 <CJK>
++<U868B> /xe5/x71 <CJK>
++<U868C> /xe5/x72 <CJK>
++<U86B6> /xe5/x73 <CJK>
++<U86AF> /xe5/x74 <CJK>
++<U86C4> /xe5/x75 <CJK>
++<U86C6> /xe5/x76 <CJK>
++<U86B0> /xe5/x77 <CJK>
++<U86C9> /xe5/x78 <CJK>
++<U8823> /xe5/x79 <CJK>
++<U86AB> /xe5/x7a <CJK>
++<U86D4> /xe5/x7b <CJK>
++<U86DE> /xe5/x7c <CJK>
++<U86E9> /xe5/x7d <CJK>
++<U86EC> /xe5/x7e <CJK>
++<U86DF> /xe5/x80 <CJK>
++<U86DB> /xe5/x81 <CJK>
++<U86EF> /xe5/x82 <CJK>
++<U8712> /xe5/x83 <CJK>
++<U8706> /xe5/x84 <CJK>
++<U8708> /xe5/x85 <CJK>
++<U8700> /xe5/x86 <CJK>
++<U8703> /xe5/x87 <CJK>
++<U86FB> /xe5/x88 <CJK>
++<U8711> /xe5/x89 <CJK>
++<U8709> /xe5/x8a <CJK>
++<U870D> /xe5/x8b <CJK>
++<U86F9> /xe5/x8c <CJK>
++<U870A> /xe5/x8d <CJK>
++<U8734> /xe5/x8e <CJK>
++<U873F> /xe5/x8f <CJK>
++<U8737> /xe5/x90 <CJK>
++<U873B> /xe5/x91 <CJK>
++<U8725> /xe5/x92 <CJK>
++<U8729> /xe5/x93 <CJK>
++<U871A> /xe5/x94 <CJK>
++<U8760> /xe5/x95 <CJK>
++<U875F> /xe5/x96 <CJK>
++<U8778> /xe5/x97 <CJK>
++<U874C> /xe5/x98 <CJK>
++<U874E> /xe5/x99 <CJK>
++<U8774> /xe5/x9a <CJK>
++<U8757> /xe5/x9b <CJK>
++<U8768> /xe5/x9c <CJK>
++<U876E> /xe5/x9d <CJK>
++<U8759> /xe5/x9e <CJK>
++<U8753> /xe5/x9f <CJK>
++<U8763> /xe5/xa0 <CJK>
++<U876A> /xe5/xa1 <CJK>
++<U8805> /xe5/xa2 <CJK>
++<U87A2> /xe5/xa3 <CJK>
++<U879F> /xe5/xa4 <CJK>
++<U8782> /xe5/xa5 <CJK>
++<U87AF> /xe5/xa6 <CJK>
++<U87CB> /xe5/xa7 <CJK>
++<U87BD> /xe5/xa8 <CJK>
++<U87C0> /xe5/xa9 <CJK>
++<U87D0> /xe5/xaa <CJK>
++<U96D6> /xe5/xab <CJK>
++<U87AB> /xe5/xac <CJK>
++<U87C4> /xe5/xad <CJK>
++<U87B3> /xe5/xae <CJK>
++<U87C7> /xe5/xaf <CJK>
++<U87C6> /xe5/xb0 <CJK>
++<U87BB> /xe5/xb1 <CJK>
++<U87EF> /xe5/xb2 <CJK>
++<U87F2> /xe5/xb3 <CJK>
++<U87E0> /xe5/xb4 <CJK>
++<U880F> /xe5/xb5 <CJK>
++<U880D> /xe5/xb6 <CJK>
++<U87FE> /xe5/xb7 <CJK>
++<U87F6> /xe5/xb8 <CJK>
++<U87F7> /xe5/xb9 <CJK>
++<U880E> /xe5/xba <CJK>
++<U87D2> /xe5/xbb <CJK>
++<U8811> /xe5/xbc <CJK>
++<U8816> /xe5/xbd <CJK>
++<U8815> /xe5/xbe <CJK>
++<U8822> /xe5/xbf <CJK>
++<U8821> /xe5/xc0 <CJK>
++<U8831> /xe5/xc1 <CJK>
++<U8836> /xe5/xc2 <CJK>
++<U8839> /xe5/xc3 <CJK>
++<U8827> /xe5/xc4 <CJK>
++<U883B> /xe5/xc5 <CJK>
++<U8844> /xe5/xc6 <CJK>
++<U8842> /xe5/xc7 <CJK>
++<U8852> /xe5/xc8 <CJK>
++<U8859> /xe5/xc9 <CJK>
++<U885E> /xe5/xca <CJK>
++<U8862> /xe5/xcb <CJK>
++<U886B> /xe5/xcc <CJK>
++<U8881> /xe5/xcd <CJK>
++<U887E> /xe5/xce <CJK>
++<U889E> /xe5/xcf <CJK>
++<U8875> /xe5/xd0 <CJK>
++<U887D> /xe5/xd1 <CJK>
++<U88B5> /xe5/xd2 <CJK>
++<U8872> /xe5/xd3 <CJK>
++<U8882> /xe5/xd4 <CJK>
++<U8897> /xe5/xd5 <CJK>
++<U8892> /xe5/xd6 <CJK>
++<U88AE> /xe5/xd7 <CJK>
++<U8899> /xe5/xd8 <CJK>
++<U88A2> /xe5/xd9 <CJK>
++<U888D> /xe5/xda <CJK>
++<U88A4> /xe5/xdb <CJK>
++<U88B0> /xe5/xdc <CJK>
++<U88BF> /xe5/xdd <CJK>
++<U88B1> /xe5/xde <CJK>
++<U88C3> /xe5/xdf <CJK>
++<U88C4> /xe5/xe0 <CJK>
++<U88D4> /xe5/xe1 <CJK>
++<U88D8> /xe5/xe2 <CJK>
++<U88D9> /xe5/xe3 <CJK>
++<U88DD> /xe5/xe4 <CJK>
++<U88F9> /xe5/xe5 <CJK>
++<U8902> /xe5/xe6 <CJK>
++<U88FC> /xe5/xe7 <CJK>
++<U88F4> /xe5/xe8 <CJK>
++<U88E8> /xe5/xe9 <CJK>
++<U88F2> /xe5/xea <CJK>
++<U8904> /xe5/xeb <CJK>
++<U890C> /xe5/xec <CJK>
++<U890A> /xe5/xed <CJK>
++<U8913> /xe5/xee <CJK>
++<U8943> /xe5/xef <CJK>
++<U891E> /xe5/xf0 <CJK>
++<U8925> /xe5/xf1 <CJK>
++<U892A> /xe5/xf2 <CJK>
++<U892B> /xe5/xf3 <CJK>
++<U8941> /xe5/xf4 <CJK>
++<U8944> /xe5/xf5 <CJK>
++<U893B> /xe5/xf6 <CJK>
++<U8936> /xe5/xf7 <CJK>
++<U8938> /xe5/xf8 <CJK>
++<U894C> /xe5/xf9 <CJK>
++<U891D> /xe5/xfa <CJK>
++<U8960> /xe5/xfb <CJK>
++<U895E> /xe5/xfc <CJK>
++<U8966> /xe6/x40 <CJK>
++<U8964> /xe6/x41 <CJK>
++<U896D> /xe6/x42 <CJK>
++<U896A> /xe6/x43 <CJK>
++<U896F> /xe6/x44 <CJK>
++<U8974> /xe6/x45 <CJK>
++<U8977> /xe6/x46 <CJK>
++<U897E> /xe6/x47 <CJK>
++<U8983> /xe6/x48 <CJK>
++<U8988> /xe6/x49 <CJK>
++<U898A> /xe6/x4a <CJK>
++<U8993> /xe6/x4b <CJK>
++<U8998> /xe6/x4c <CJK>
++<U89A1> /xe6/x4d <CJK>
++<U89A9> /xe6/x4e <CJK>
++<U89A6> /xe6/x4f <CJK>
++<U89AC> /xe6/x50 <CJK>
++<U89AF> /xe6/x51 <CJK>
++<U89B2> /xe6/x52 <CJK>
++<U89BA> /xe6/x53 <CJK>
++<U89BD> /xe6/x54 <CJK>
++<U89BF> /xe6/x55 <CJK>
++<U89C0> /xe6/x56 <CJK>
++<U89DA> /xe6/x57 <CJK>
++<U89DC> /xe6/x58 <CJK>
++<U89DD> /xe6/x59 <CJK>
++<U89E7> /xe6/x5a <CJK>
++<U89F4> /xe6/x5b <CJK>
++<U89F8> /xe6/x5c <CJK>
++<U8A03> /xe6/x5d <CJK>
++<U8A16> /xe6/x5e <CJK>
++<U8A10> /xe6/x5f <CJK>
++<U8A0C> /xe6/x60 <CJK>
++<U8A1B> /xe6/x61 <CJK>
++<U8A1D> /xe6/x62 <CJK>
++<U8A25> /xe6/x63 <CJK>
++<U8A36> /xe6/x64 <CJK>
++<U8A41> /xe6/x65 <CJK>
++<U8A5B> /xe6/x66 <CJK>
++<U8A52> /xe6/x67 <CJK>
++<U8A46> /xe6/x68 <CJK>
++<U8A48> /xe6/x69 <CJK>
++<U8A7C> /xe6/x6a <CJK>
++<U8A6D> /xe6/x6b <CJK>
++<U8A6C> /xe6/x6c <CJK>
++<U8A62> /xe6/x6d <CJK>
++<U8A85> /xe6/x6e <CJK>
++<U8A82> /xe6/x6f <CJK>
++<U8A84> /xe6/x70 <CJK>
++<U8AA8> /xe6/x71 <CJK>
++<U8AA1> /xe6/x72 <CJK>
++<U8A91> /xe6/x73 <CJK>
++<U8AA5> /xe6/x74 <CJK>
++<U8AA6> /xe6/x75 <CJK>
++<U8A9A> /xe6/x76 <CJK>
++<U8AA3> /xe6/x77 <CJK>
++<U8AC4> /xe6/x78 <CJK>
++<U8ACD> /xe6/x79 <CJK>
++<U8AC2> /xe6/x7a <CJK>
++<U8ADA> /xe6/x7b <CJK>
++<U8AEB> /xe6/x7c <CJK>
++<U8AF3> /xe6/x7d <CJK>
++<U8AE7> /xe6/x7e <CJK>
++<U8AE4> /xe6/x80 <CJK>
++<U8AF1> /xe6/x81 <CJK>
++<U8B14> /xe6/x82 <CJK>
++<U8AE0> /xe6/x83 <CJK>
++<U8AE2> /xe6/x84 <CJK>
++<U8AF7> /xe6/x85 <CJK>
++<U8ADE> /xe6/x86 <CJK>
++<U8ADB> /xe6/x87 <CJK>
++<U8B0C> /xe6/x88 <CJK>
++<U8B07> /xe6/x89 <CJK>
++<U8B1A> /xe6/x8a <CJK>
++<U8AE1> /xe6/x8b <CJK>
++<U8B16> /xe6/x8c <CJK>
++<U8B10> /xe6/x8d <CJK>
++<U8B17> /xe6/x8e <CJK>
++<U8B20> /xe6/x8f <CJK>
++<U8B33> /xe6/x90 <CJK>
++<U97AB> /xe6/x91 <CJK>
++<U8B26> /xe6/x92 <CJK>
++<U8B2B> /xe6/x93 <CJK>
++<U8B3E> /xe6/x94 <CJK>
++<U8B28> /xe6/x95 <CJK>
++<U8B41> /xe6/x96 <CJK>
++<U8B4C> /xe6/x97 <CJK>
++<U8B4F> /xe6/x98 <CJK>
++<U8B4E> /xe6/x99 <CJK>
++<U8B49> /xe6/x9a <CJK>
++<U8B56> /xe6/x9b <CJK>
++<U8B5B> /xe6/x9c <CJK>
++<U8B5A> /xe6/x9d <CJK>
++<U8B6B> /xe6/x9e <CJK>
++<U8B5F> /xe6/x9f <CJK>
++<U8B6C> /xe6/xa0 <CJK>
++<U8B6F> /xe6/xa1 <CJK>
++<U8B74> /xe6/xa2 <CJK>
++<U8B7D> /xe6/xa3 <CJK>
++<U8B80> /xe6/xa4 <CJK>
++<U8B8C> /xe6/xa5 <CJK>
++<U8B8E> /xe6/xa6 <CJK>
++<U8B92> /xe6/xa7 <CJK>
++<U8B93> /xe6/xa8 <CJK>
++<U8B96> /xe6/xa9 <CJK>
++<U8B99> /xe6/xaa <CJK>
++<U8B9A> /xe6/xab <CJK>
++<U8C3A> /xe6/xac <CJK>
++<U8C41> /xe6/xad <CJK>
++<U8C3F> /xe6/xae <CJK>
++<U8C48> /xe6/xaf <CJK>
++<U8C4C> /xe6/xb0 <CJK>
++<U8C4E> /xe6/xb1 <CJK>
++<U8C50> /xe6/xb2 <CJK>
++<U8C55> /xe6/xb3 <CJK>
++<U8C62> /xe6/xb4 <CJK>
++<U8C6C> /xe6/xb5 <CJK>
++<U8C78> /xe6/xb6 <CJK>
++<U8C7A> /xe6/xb7 <CJK>
++<U8C82> /xe6/xb8 <CJK>
++<U8C89> /xe6/xb9 <CJK>
++<U8C85> /xe6/xba <CJK>
++<U8C8A> /xe6/xbb <CJK>
++<U8C8D> /xe6/xbc <CJK>
++<U8C8E> /xe6/xbd <CJK>
++<U8C94> /xe6/xbe <CJK>
++<U8C7C> /xe6/xbf <CJK>
++<U8C98> /xe6/xc0 <CJK>
++<U621D> /xe6/xc1 <CJK>
++<U8CAD> /xe6/xc2 <CJK>
++<U8CAA> /xe6/xc3 <CJK>
++<U8CBD> /xe6/xc4 <CJK>
++<U8CB2> /xe6/xc5 <CJK>
++<U8CB3> /xe6/xc6 <CJK>
++<U8CAE> /xe6/xc7 <CJK>
++<U8CB6> /xe6/xc8 <CJK>
++<U8CC8> /xe6/xc9 <CJK>
++<U8CC1> /xe6/xca <CJK>
++<U8CE4> /xe6/xcb <CJK>
++<U8CE3> /xe6/xcc <CJK>
++<U8CDA> /xe6/xcd <CJK>
++<U8CFD> /xe6/xce <CJK>
++<U8CFA> /xe6/xcf <CJK>
++<U8CFB> /xe6/xd0 <CJK>
++<U8D04> /xe6/xd1 <CJK>
++<U8D05> /xe6/xd2 <CJK>
++<U8D0A> /xe6/xd3 <CJK>
++<U8D07> /xe6/xd4 <CJK>
++<U8D0F> /xe6/xd5 <CJK>
++<U8D0D> /xe6/xd6 <CJK>
++<U8D10> /xe6/xd7 <CJK>
++<U9F4E> /xe6/xd8 <CJK>
++<U8D13> /xe6/xd9 <CJK>
++<U8CCD> /xe6/xda <CJK>
++<U8D14> /xe6/xdb <CJK>
++<U8D16> /xe6/xdc <CJK>
++<U8D67> /xe6/xdd <CJK>
++<U8D6D> /xe6/xde <CJK>
++<U8D71> /xe6/xdf <CJK>
++<U8D73> /xe6/xe0 <CJK>
++<U8D81> /xe6/xe1 <CJK>
++<U8D99> /xe6/xe2 <CJK>
++<U8DC2> /xe6/xe3 <CJK>
++<U8DBE> /xe6/xe4 <CJK>
++<U8DBA> /xe6/xe5 <CJK>
++<U8DCF> /xe6/xe6 <CJK>
++<U8DDA> /xe6/xe7 <CJK>
++<U8DD6> /xe6/xe8 <CJK>
++<U8DCC> /xe6/xe9 <CJK>
++<U8DDB> /xe6/xea <CJK>
++<U8DCB> /xe6/xeb <CJK>
++<U8DEA> /xe6/xec <CJK>
++<U8DEB> /xe6/xed <CJK>
++<U8DDF> /xe6/xee <CJK>
++<U8DE3> /xe6/xef <CJK>
++<U8DFC> /xe6/xf0 <CJK>
++<U8E08> /xe6/xf1 <CJK>
++<U8E09> /xe6/xf2 <CJK>
++<U8DFF> /xe6/xf3 <CJK>
++<U8E1D> /xe6/xf4 <CJK>
++<U8E1E> /xe6/xf5 <CJK>
++<U8E10> /xe6/xf6 <CJK>
++<U8E1F> /xe6/xf7 <CJK>
++<U8E42> /xe6/xf8 <CJK>
++<U8E35> /xe6/xf9 <CJK>
++<U8E30> /xe6/xfa <CJK>
++<U8E34> /xe6/xfb <CJK>
++<U8E4A> /xe6/xfc <CJK>
++<U8E47> /xe7/x40 <CJK>
++<U8E49> /xe7/x41 <CJK>
++<U8E4C> /xe7/x42 <CJK>
++<U8E50> /xe7/x43 <CJK>
++<U8E48> /xe7/x44 <CJK>
++<U8E59> /xe7/x45 <CJK>
++<U8E64> /xe7/x46 <CJK>
++<U8E60> /xe7/x47 <CJK>
++<U8E2A> /xe7/x48 <CJK>
++<U8E63> /xe7/x49 <CJK>
++<U8E55> /xe7/x4a <CJK>
++<U8E76> /xe7/x4b <CJK>
++<U8E72> /xe7/x4c <CJK>
++<U8E7C> /xe7/x4d <CJK>
++<U8E81> /xe7/x4e <CJK>
++<U8E87> /xe7/x4f <CJK>
++<U8E85> /xe7/x50 <CJK>
++<U8E84> /xe7/x51 <CJK>
++<U8E8B> /xe7/x52 <CJK>
++<U8E8A> /xe7/x53 <CJK>
++<U8E93> /xe7/x54 <CJK>
++<U8E91> /xe7/x55 <CJK>
++<U8E94> /xe7/x56 <CJK>
++<U8E99> /xe7/x57 <CJK>
++<U8EAA> /xe7/x58 <CJK>
++<U8EA1> /xe7/x59 <CJK>
++<U8EAC> /xe7/x5a <CJK>
++<U8EB0> /xe7/x5b <CJK>
++<U8EC6> /xe7/x5c <CJK>
++<U8EB1> /xe7/x5d <CJK>
++<U8EBE> /xe7/x5e <CJK>
++<U8EC5> /xe7/x5f <CJK>
++<U8EC8> /xe7/x60 <CJK>
++<U8ECB> /xe7/x61 <CJK>
++<U8EDB> /xe7/x62 <CJK>
++<U8EE3> /xe7/x63 <CJK>
++<U8EFC> /xe7/x64 <CJK>
++<U8EFB> /xe7/x65 <CJK>
++<U8EEB> /xe7/x66 <CJK>
++<U8EFE> /xe7/x67 <CJK>
++<U8F0A> /xe7/x68 <CJK>
++<U8F05> /xe7/x69 <CJK>
++<U8F15> /xe7/x6a <CJK>
++<U8F12> /xe7/x6b <CJK>
++<U8F19> /xe7/x6c <CJK>
++<U8F13> /xe7/x6d <CJK>
++<U8F1C> /xe7/x6e <CJK>
++<U8F1F> /xe7/x6f <CJK>
++<U8F1B> /xe7/x70 <CJK>
++<U8F0C> /xe7/x71 <CJK>
++<U8F26> /xe7/x72 <CJK>
++<U8F33> /xe7/x73 <CJK>
++<U8F3B> /xe7/x74 <CJK>
++<U8F39> /xe7/x75 <CJK>
++<U8F45> /xe7/x76 <CJK>
++<U8F42> /xe7/x77 <CJK>
++<U8F3E> /xe7/x78 <CJK>
++<U8F4C> /xe7/x79 <CJK>
++<U8F49> /xe7/x7a <CJK>
++<U8F46> /xe7/x7b <CJK>
++<U8F4E> /xe7/x7c <CJK>
++<U8F57> /xe7/x7d <CJK>
++<U8F5C> /xe7/x7e <CJK>
++<U8F62> /xe7/x80 <CJK>
++<U8F63> /xe7/x81 <CJK>
++<U8F64> /xe7/x82 <CJK>
++<U8F9C> /xe7/x83 <CJK>
++<U8F9F> /xe7/x84 <CJK>
++<U8FA3> /xe7/x85 <CJK>
++<U8FAD> /xe7/x86 <CJK>
++<U8FAF> /xe7/x87 <CJK>
++<U8FB7> /xe7/x88 <CJK>
++<U8FDA> /xe7/x89 <CJK>
++<U8FE5> /xe7/x8a <CJK>
++<U8FE2> /xe7/x8b <CJK>
++<U8FEA> /xe7/x8c <CJK>
++<U8FEF> /xe7/x8d <CJK>
++<U9087> /xe7/x8e <CJK>
++<U8FF4> /xe7/x8f <CJK>
++<U9005> /xe7/x90 <CJK>
++<U8FF9> /xe7/x91 <CJK>
++<U8FFA> /xe7/x92 <CJK>
++<U9011> /xe7/x93 <CJK>
++<U9015> /xe7/x94 <CJK>
++<U9021> /xe7/x95 <CJK>
++<U900D> /xe7/x96 <CJK>
++<U901E> /xe7/x97 <CJK>
++<U9016> /xe7/x98 <CJK>
++<U900B> /xe7/x99 <CJK>
++<U9027> /xe7/x9a <CJK>
++<U9036> /xe7/x9b <CJK>
++<U9035> /xe7/x9c <CJK>
++<U9039> /xe7/x9d <CJK>
++<U8FF8> /xe7/x9e <CJK>
++<U904F> /xe7/x9f <CJK>
++<U9050> /xe7/xa0 <CJK>
++<U9051> /xe7/xa1 <CJK>
++<U9052> /xe7/xa2 <CJK>
++<U900E> /xe7/xa3 <CJK>
++<U9049> /xe7/xa4 <CJK>
++<U903E> /xe7/xa5 <CJK>
++<U9056> /xe7/xa6 <CJK>
++<U9058> /xe7/xa7 <CJK>
++<U905E> /xe7/xa8 <CJK>
++<U9068> /xe7/xa9 <CJK>
++<U906F> /xe7/xaa <CJK>
++<U9076> /xe7/xab <CJK>
++<U96A8> /xe7/xac <CJK>
++<U9072> /xe7/xad <CJK>
++<U9082> /xe7/xae <CJK>
++<U907D> /xe7/xaf <CJK>
++<U9081> /xe7/xb0 <CJK>
++<U9080> /xe7/xb1 <CJK>
++<U908A> /xe7/xb2 <CJK>
++<U9089> /xe7/xb3 <CJK>
++<U908F> /xe7/xb4 <CJK>
++<U90A8> /xe7/xb5 <CJK>
++<U90AF> /xe7/xb6 <CJK>
++<U90B1> /xe7/xb7 <CJK>
++<U90B5> /xe7/xb8 <CJK>
++<U90E2> /xe7/xb9 <CJK>
++<U90E4> /xe7/xba <CJK>
++<U6248> /xe7/xbb <CJK>
++<U90DB> /xe7/xbc <CJK>
++<U9102> /xe7/xbd <CJK>
++<U9112> /xe7/xbe <CJK>
++<U9119> /xe7/xbf <CJK>
++<U9132> /xe7/xc0 <CJK>
++<U9130> /xe7/xc1 <CJK>
++<U914A> /xe7/xc2 <CJK>
++<U9156> /xe7/xc3 <CJK>
++<U9158> /xe7/xc4 <CJK>
++<U9163> /xe7/xc5 <CJK>
++<U9165> /xe7/xc6 <CJK>
++<U9169> /xe7/xc7 <CJK>
++<U9173> /xe7/xc8 <CJK>
++<U9172> /xe7/xc9 <CJK>
++<U918B> /xe7/xca <CJK>
++<U9189> /xe7/xcb <CJK>
++<U9182> /xe7/xcc <CJK>
++<U91A2> /xe7/xcd <CJK>
++<U91AB> /xe7/xce <CJK>
++<U91AF> /xe7/xcf <CJK>
++<U91AA> /xe7/xd0 <CJK>
++<U91B5> /xe7/xd1 <CJK>
++<U91B4> /xe7/xd2 <CJK>
++<U91BA> /xe7/xd3 <CJK>
++<U91C0> /xe7/xd4 <CJK>
++<U91C1> /xe7/xd5 <CJK>
++<U91C9> /xe7/xd6 <CJK>
++<U91CB> /xe7/xd7 <CJK>
++<U91D0> /xe7/xd8 <CJK>
++<U91D6> /xe7/xd9 <CJK>
++<U91DF> /xe7/xda <CJK>
++<U91E1> /xe7/xdb <CJK>
++<U91DB> /xe7/xdc <CJK>
++<U91FC> /xe7/xdd <CJK>
++<U91F5> /xe7/xde <CJK>
++<U91F6> /xe7/xdf <CJK>
++<U921E> /xe7/xe0 <CJK>
++<U91FF> /xe7/xe1 <CJK>
++<U9214> /xe7/xe2 <CJK>
++<U922C> /xe7/xe3 <CJK>
++<U9215> /xe7/xe4 <CJK>
++<U9211> /xe7/xe5 <CJK>
++<U925E> /xe7/xe6 <CJK>
++<U9257> /xe7/xe7 <CJK>
++<U9245> /xe7/xe8 <CJK>
++<U9249> /xe7/xe9 <CJK>
++<U9264> /xe7/xea <CJK>
++<U9248> /xe7/xeb <CJK>
++<U9295> /xe7/xec <CJK>
++<U923F> /xe7/xed <CJK>
++<U924B> /xe7/xee <CJK>
++<U9250> /xe7/xef <CJK>
++<U929C> /xe7/xf0 <CJK>
++<U9296> /xe7/xf1 <CJK>
++<U9293> /xe7/xf2 <CJK>
++<U929B> /xe7/xf3 <CJK>
++<U925A> /xe7/xf4 <CJK>
++<U92CF> /xe7/xf5 <CJK>
++<U92B9> /xe7/xf6 <CJK>
++<U92B7> /xe7/xf7 <CJK>
++<U92E9> /xe7/xf8 <CJK>
++<U930F> /xe7/xf9 <CJK>
++<U92FA> /xe7/xfa <CJK>
++<U9344> /xe7/xfb <CJK>
++<U932E> /xe7/xfc <CJK>
++<U9319> /xe8/x40 <CJK>
++<U9322> /xe8/x41 <CJK>
++<U931A> /xe8/x42 <CJK>
++<U9323> /xe8/x43 <CJK>
++<U933A> /xe8/x44 <CJK>
++<U9335> /xe8/x45 <CJK>
++<U933B> /xe8/x46 <CJK>
++<U935C> /xe8/x47 <CJK>
++<U9360> /xe8/x48 <CJK>
++<U937C> /xe8/x49 <CJK>
++<U936E> /xe8/x4a <CJK>
++<U9356> /xe8/x4b <CJK>
++<U93B0> /xe8/x4c <CJK>
++<U93AC> /xe8/x4d <CJK>
++<U93AD> /xe8/x4e <CJK>
++<U9394> /xe8/x4f <CJK>
++<U93B9> /xe8/x50 <CJK>
++<U93D6> /xe8/x51 <CJK>
++<U93D7> /xe8/x52 <CJK>
++<U93E8> /xe8/x53 <CJK>
++<U93E5> /xe8/x54 <CJK>
++<U93D8> /xe8/x55 <CJK>
++<U93C3> /xe8/x56 <CJK>
++<U93DD> /xe8/x57 <CJK>
++<U93D0> /xe8/x58 <CJK>
++<U93C8> /xe8/x59 <CJK>
++<U93E4> /xe8/x5a <CJK>
++<U941A> /xe8/x5b <CJK>
++<U9414> /xe8/x5c <CJK>
++<U9413> /xe8/x5d <CJK>
++<U9403> /xe8/x5e <CJK>
++<U9407> /xe8/x5f <CJK>
++<U9410> /xe8/x60 <CJK>
++<U9436> /xe8/x61 <CJK>
++<U942B> /xe8/x62 <CJK>
++<U9435> /xe8/x63 <CJK>
++<U9421> /xe8/x64 <CJK>
++<U943A> /xe8/x65 <CJK>
++<U9441> /xe8/x66 <CJK>
++<U9452> /xe8/x67 <CJK>
++<U9444> /xe8/x68 <CJK>
++<U945B> /xe8/x69 <CJK>
++<U9460> /xe8/x6a <CJK>
++<U9462> /xe8/x6b <CJK>
++<U945E> /xe8/x6c <CJK>
++<U946A> /xe8/x6d <CJK>
++<U9229> /xe8/x6e <CJK>
++<U9470> /xe8/x6f <CJK>
++<U9475> /xe8/x70 <CJK>
++<U9477> /xe8/x71 <CJK>
++<U947D> /xe8/x72 <CJK>
++<U945A> /xe8/x73 <CJK>
++<U947C> /xe8/x74 <CJK>
++<U947E> /xe8/x75 <CJK>
++<U9481> /xe8/x76 <CJK>
++<U947F> /xe8/x77 <CJK>
++<U9582> /xe8/x78 <CJK>
++<U9587> /xe8/x79 <CJK>
++<U958A> /xe8/x7a <CJK>
++<U9594> /xe8/x7b <CJK>
++<U9596> /xe8/x7c <CJK>
++<U9598> /xe8/x7d <CJK>
++<U9599> /xe8/x7e <CJK>
++<U95A0> /xe8/x80 <CJK>
++<U95A8> /xe8/x81 <CJK>
++<U95A7> /xe8/x82 <CJK>
++<U95AD> /xe8/x83 <CJK>
++<U95BC> /xe8/x84 <CJK>
++<U95BB> /xe8/x85 <CJK>
++<U95B9> /xe8/x86 <CJK>
++<U95BE> /xe8/x87 <CJK>
++<U95CA> /xe8/x88 <CJK>
++<U6FF6> /xe8/x89 <CJK>
++<U95C3> /xe8/x8a <CJK>
++<U95CD> /xe8/x8b <CJK>
++<U95CC> /xe8/x8c <CJK>
++<U95D5> /xe8/x8d <CJK>
++<U95D4> /xe8/x8e <CJK>
++<U95D6> /xe8/x8f <CJK>
++<U95DC> /xe8/x90 <CJK>
++<U95E1> /xe8/x91 <CJK>
++<U95E5> /xe8/x92 <CJK>
++<U95E2> /xe8/x93 <CJK>
++<U9621> /xe8/x94 <CJK>
++<U9628> /xe8/x95 <CJK>
++<U962E> /xe8/x96 <CJK>
++<U962F> /xe8/x97 <CJK>
++<U9642> /xe8/x98 <CJK>
++<U964C> /xe8/x99 <CJK>
++<U964F> /xe8/x9a <CJK>
++<U964B> /xe8/x9b <CJK>
++<U9677> /xe8/x9c <CJK>
++<U965C> /xe8/x9d <CJK>
++<U965E> /xe8/x9e <CJK>
++<U965D> /xe8/x9f <CJK>
++<U965F> /xe8/xa0 <CJK>
++<U9666> /xe8/xa1 <CJK>
++<U9672> /xe8/xa2 <CJK>
++<U966C> /xe8/xa3 <CJK>
++<U968D> /xe8/xa4 <CJK>
++<U9698> /xe8/xa5 <CJK>
++<U9695> /xe8/xa6 <CJK>
++<U9697> /xe8/xa7 <CJK>
++<U96AA> /xe8/xa8 <CJK>
++<U96A7> /xe8/xa9 <CJK>
++<U96B1> /xe8/xaa <CJK>
++<U96B2> /xe8/xab <CJK>
++<U96B0> /xe8/xac <CJK>
++<U96B4> /xe8/xad <CJK>
++<U96B6> /xe8/xae <CJK>
++<U96B8> /xe8/xaf <CJK>
++<U96B9> /xe8/xb0 <CJK>
++<U96CE> /xe8/xb1 <CJK>
++<U96CB> /xe8/xb2 <CJK>
++<U96C9> /xe8/xb3 <CJK>
++<U96CD> /xe8/xb4 <CJK>
++<U894D> /xe8/xb5 <CJK>
++<U96DC> /xe8/xb6 <CJK>
++<U970D> /xe8/xb7 <CJK>
++<U96D5> /xe8/xb8 <CJK>
++<U96F9> /xe8/xb9 <CJK>
++<U9704> /xe8/xba <CJK>
++<U9706> /xe8/xbb <CJK>
++<U9708> /xe8/xbc <CJK>
++<U9713> /xe8/xbd <CJK>
++<U970E> /xe8/xbe <CJK>
++<U9711> /xe8/xbf <CJK>
++<U970F> /xe8/xc0 <CJK>
++<U9716> /xe8/xc1 <CJK>
++<U9719> /xe8/xc2 <CJK>
++<U9724> /xe8/xc3 <CJK>
++<U972A> /xe8/xc4 <CJK>
++<U9730> /xe8/xc5 <CJK>
++<U9739> /xe8/xc6 <CJK>
++<U973D> /xe8/xc7 <CJK>
++<U973E> /xe8/xc8 <CJK>
++<U9744> /xe8/xc9 <CJK>
++<U9746> /xe8/xca <CJK>
++<U9748> /xe8/xcb <CJK>
++<U9742> /xe8/xcc <CJK>
++<U9749> /xe8/xcd <CJK>
++<U975C> /xe8/xce <CJK>
++<U9760> /xe8/xcf <CJK>
++<U9764> /xe8/xd0 <CJK>
++<U9766> /xe8/xd1 <CJK>
++<U9768> /xe8/xd2 <CJK>
++<U52D2> /xe8/xd3 <CJK>
++<U976B> /xe8/xd4 <CJK>
++<U9771> /xe8/xd5 <CJK>
++<U9779> /xe8/xd6 <CJK>
++<U9785> /xe8/xd7 <CJK>
++<U977C> /xe8/xd8 <CJK>
++<U9781> /xe8/xd9 <CJK>
++<U977A> /xe8/xda <CJK>
++<U9786> /xe8/xdb <CJK>
++<U978B> /xe8/xdc <CJK>
++<U978F> /xe8/xdd <CJK>
++<U9790> /xe8/xde <CJK>
++<U979C> /xe8/xdf <CJK>
++<U97A8> /xe8/xe0 <CJK>
++<U97A6> /xe8/xe1 <CJK>
++<U97A3> /xe8/xe2 <CJK>
++<U97B3> /xe8/xe3 <CJK>
++<U97B4> /xe8/xe4 <CJK>
++<U97C3> /xe8/xe5 <CJK>
++<U97C6> /xe8/xe6 <CJK>
++<U97C8> /xe8/xe7 <CJK>
++<U97CB> /xe8/xe8 <CJK>
++<U97DC> /xe8/xe9 <CJK>
++<U97ED> /xe8/xea <CJK>
++<U9F4F> /xe8/xeb <CJK>
++<U97F2> /xe8/xec <CJK>
++<U7ADF> /xe8/xed <CJK>
++<U97F6> /xe8/xee <CJK>
++<U97F5> /xe8/xef <CJK>
++<U980F> /xe8/xf0 <CJK>
++<U980C> /xe8/xf1 <CJK>
++<U9838> /xe8/xf2 <CJK>
++<U9824> /xe8/xf3 <CJK>
++<U9821> /xe8/xf4 <CJK>
++<U9837> /xe8/xf5 <CJK>
++<U983D> /xe8/xf6 <CJK>
++<U9846> /xe8/xf7 <CJK>
++<U984F> /xe8/xf8 <CJK>
++<U984B> /xe8/xf9 <CJK>
++<U986B> /xe8/xfa <CJK>
++<U986F> /xe8/xfb <CJK>
++<U9870> /xe8/xfc <CJK>
++<U9871> /xe9/x40 <CJK>
++<U9874> /xe9/x41 <CJK>
++<U9873> /xe9/x42 <CJK>
++<U98AA> /xe9/x43 <CJK>
++<U98AF> /xe9/x44 <CJK>
++<U98B1> /xe9/x45 <CJK>
++<U98B6> /xe9/x46 <CJK>
++<U98C4> /xe9/x47 <CJK>
++<U98C3> /xe9/x48 <CJK>
++<U98C6> /xe9/x49 <CJK>
++<U98E9> /xe9/x4a <CJK>
++<U98EB> /xe9/x4b <CJK>
++<U9903> /xe9/x4c <CJK>
++<U9909> /xe9/x4d <CJK>
++<U9912> /xe9/x4e <CJK>
++<U9914> /xe9/x4f <CJK>
++<U9918> /xe9/x50 <CJK>
++<U9921> /xe9/x51 <CJK>
++<U991D> /xe9/x52 <CJK>
++<U991E> /xe9/x53 <CJK>
++<U9924> /xe9/x54 <CJK>
++<U9920> /xe9/x55 <CJK>
++<U992C> /xe9/x56 <CJK>
++<U992E> /xe9/x57 <CJK>
++<U993D> /xe9/x58 <CJK>
++<U993E> /xe9/x59 <CJK>
++<U9942> /xe9/x5a <CJK>
++<U9949> /xe9/x5b <CJK>
++<U9945> /xe9/x5c <CJK>
++<U9950> /xe9/x5d <CJK>
++<U994B> /xe9/x5e <CJK>
++<U9951> /xe9/x5f <CJK>
++<U9952> /xe9/x60 <CJK>
++<U994C> /xe9/x61 <CJK>
++<U9955> /xe9/x62 <CJK>
++<U9997> /xe9/x63 <CJK>
++<U9998> /xe9/x64 <CJK>
++<U99A5> /xe9/x65 <CJK>
++<U99AD> /xe9/x66 <CJK>
++<U99AE> /xe9/x67 <CJK>
++<U99BC> /xe9/x68 <CJK>
++<U99DF> /xe9/x69 <CJK>
++<U99DB> /xe9/x6a <CJK>
++<U99DD> /xe9/x6b <CJK>
++<U99D8> /xe9/x6c <CJK>
++<U99D1> /xe9/x6d <CJK>
++<U99ED> /xe9/x6e <CJK>
++<U99EE> /xe9/x6f <CJK>
++<U99F1> /xe9/x70 <CJK>
++<U99F2> /xe9/x71 <CJK>
++<U99FB> /xe9/x72 <CJK>
++<U99F8> /xe9/x73 <CJK>
++<U9A01> /xe9/x74 <CJK>
++<U9A0F> /xe9/x75 <CJK>
++<U9A05> /xe9/x76 <CJK>
++<U99E2> /xe9/x77 <CJK>
++<U9A19> /xe9/x78 <CJK>
++<U9A2B> /xe9/x79 <CJK>
++<U9A37> /xe9/x7a <CJK>
++<U9A45> /xe9/x7b <CJK>
++<U9A42> /xe9/x7c <CJK>
++<U9A40> /xe9/x7d <CJK>
++<U9A43> /xe9/x7e <CJK>
++<U9A3E> /xe9/x80 <CJK>
++<U9A55> /xe9/x81 <CJK>
++<U9A4D> /xe9/x82 <CJK>
++<U9A5B> /xe9/x83 <CJK>
++<U9A57> /xe9/x84 <CJK>
++<U9A5F> /xe9/x85 <CJK>
++<U9A62> /xe9/x86 <CJK>
++<U9A65> /xe9/x87 <CJK>
++<U9A64> /xe9/x88 <CJK>
++<U9A69> /xe9/x89 <CJK>
++<U9A6B> /xe9/x8a <CJK>
++<U9A6A> /xe9/x8b <CJK>
++<U9AAD> /xe9/x8c <CJK>
++<U9AB0> /xe9/x8d <CJK>
++<U9ABC> /xe9/x8e <CJK>
++<U9AC0> /xe9/x8f <CJK>
++<U9ACF> /xe9/x90 <CJK>
++<U9AD1> /xe9/x91 <CJK>
++<U9AD3> /xe9/x92 <CJK>
++<U9AD4> /xe9/x93 <CJK>
++<U9ADE> /xe9/x94 <CJK>
++<U9ADF> /xe9/x95 <CJK>
++<U9AE2> /xe9/x96 <CJK>
++<U9AE3> /xe9/x97 <CJK>
++<U9AE6> /xe9/x98 <CJK>
++<U9AEF> /xe9/x99 <CJK>
++<U9AEB> /xe9/x9a <CJK>
++<U9AEE> /xe9/x9b <CJK>
++<U9AF4> /xe9/x9c <CJK>
++<U9AF1> /xe9/x9d <CJK>
++<U9AF7> /xe9/x9e <CJK>
++<U9AFB> /xe9/x9f <CJK>
++<U9B06> /xe9/xa0 <CJK>
++<U9B18> /xe9/xa1 <CJK>
++<U9B1A> /xe9/xa2 <CJK>
++<U9B1F> /xe9/xa3 <CJK>
++<U9B22> /xe9/xa4 <CJK>
++<U9B23> /xe9/xa5 <CJK>
++<U9B25> /xe9/xa6 <CJK>
++<U9B27> /xe9/xa7 <CJK>
++<U9B28> /xe9/xa8 <CJK>
++<U9B29> /xe9/xa9 <CJK>
++<U9B2A> /xe9/xaa <CJK>
++<U9B2E> /xe9/xab <CJK>
++<U9B2F> /xe9/xac <CJK>
++<U9B32> /xe9/xad <CJK>
++<U9B44> /xe9/xae <CJK>
++<U9B43> /xe9/xaf <CJK>
++<U9B4F> /xe9/xb0 <CJK>
++<U9B4D> /xe9/xb1 <CJK>
++<U9B4E> /xe9/xb2 <CJK>
++<U9B51> /xe9/xb3 <CJK>
++<U9B58> /xe9/xb4 <CJK>
++<U9B74> /xe9/xb5 <CJK>
++<U9B93> /xe9/xb6 <CJK>
++<U9B83> /xe9/xb7 <CJK>
++<U9B91> /xe9/xb8 <CJK>
++<U9B96> /xe9/xb9 <CJK>
++<U9B97> /xe9/xba <CJK>
++<U9B9F> /xe9/xbb <CJK>
++<U9BA0> /xe9/xbc <CJK>
++<U9BA8> /xe9/xbd <CJK>
++<U9BB4> /xe9/xbe <CJK>
++<U9BC0> /xe9/xbf <CJK>
++<U9BCA> /xe9/xc0 <CJK>
++<U9BB9> /xe9/xc1 <CJK>
++<U9BC6> /xe9/xc2 <CJK>
++<U9BCF> /xe9/xc3 <CJK>
++<U9BD1> /xe9/xc4 <CJK>
++<U9BD2> /xe9/xc5 <CJK>
++<U9BE3> /xe9/xc6 <CJK>
++<U9BE2> /xe9/xc7 <CJK>
++<U9BE4> /xe9/xc8 <CJK>
++<U9BD4> /xe9/xc9 <CJK>
++<U9BE1> /xe9/xca <CJK>
++<U9C3A> /xe9/xcb <CJK>
++<U9BF2> /xe9/xcc <CJK>
++<U9BF1> /xe9/xcd <CJK>
++<U9BF0> /xe9/xce <CJK>
++<U9C15> /xe9/xcf <CJK>
++<U9C14> /xe9/xd0 <CJK>
++<U9C09> /xe9/xd1 <CJK>
++<U9C13> /xe9/xd2 <CJK>
++<U9C0C> /xe9/xd3 <CJK>
++<U9C06> /xe9/xd4 <CJK>
++<U9C08> /xe9/xd5 <CJK>
++<U9C12> /xe9/xd6 <CJK>
++<U9C0A> /xe9/xd7 <CJK>
++<U9C04> /xe9/xd8 <CJK>
++<U9C2E> /xe9/xd9 <CJK>
++<U9C1B> /xe9/xda <CJK>
++<U9C25> /xe9/xdb <CJK>
++<U9C24> /xe9/xdc <CJK>
++<U9C21> /xe9/xdd <CJK>
++<U9C30> /xe9/xde <CJK>
++<U9C47> /xe9/xdf <CJK>
++<U9C32> /xe9/xe0 <CJK>
++<U9C46> /xe9/xe1 <CJK>
++<U9C3E> /xe9/xe2 <CJK>
++<U9C5A> /xe9/xe3 <CJK>
++<U9C60> /xe9/xe4 <CJK>
++<U9C67> /xe9/xe5 <CJK>
++<U9C76> /xe9/xe6 <CJK>
++<U9C78> /xe9/xe7 <CJK>
++<U9CE7> /xe9/xe8 <CJK>
++<U9CEC> /xe9/xe9 <CJK>
++<U9CF0> /xe9/xea <CJK>
++<U9D09> /xe9/xeb <CJK>
++<U9D08> /xe9/xec <CJK>
++<U9CEB> /xe9/xed <CJK>
++<U9D03> /xe9/xee <CJK>
++<U9D06> /xe9/xef <CJK>
++<U9D2A> /xe9/xf0 <CJK>
++<U9D26> /xe9/xf1 <CJK>
++<U9DAF> /xe9/xf2 <CJK>
++<U9D23> /xe9/xf3 <CJK>
++<U9D1F> /xe9/xf4 <CJK>
++<U9D44> /xe9/xf5 <CJK>
++<U9D15> /xe9/xf6 <CJK>
++<U9D12> /xe9/xf7 <CJK>
++<U9D41> /xe9/xf8 <CJK>
++<U9D3F> /xe9/xf9 <CJK>
++<U9D3E> /xe9/xfa <CJK>
++<U9D46> /xe9/xfb <CJK>
++<U9D48> /xe9/xfc <CJK>
++<U9D5D> /xea/x40 <CJK>
++<U9D5E> /xea/x41 <CJK>
++<U9D64> /xea/x42 <CJK>
++<U9D51> /xea/x43 <CJK>
++<U9D50> /xea/x44 <CJK>
++<U9D59> /xea/x45 <CJK>
++<U9D72> /xea/x46 <CJK>
++<U9D89> /xea/x47 <CJK>
++<U9D87> /xea/x48 <CJK>
++<U9DAB> /xea/x49 <CJK>
++<U9D6F> /xea/x4a <CJK>
++<U9D7A> /xea/x4b <CJK>
++<U9D9A> /xea/x4c <CJK>
++<U9DA4> /xea/x4d <CJK>
++<U9DA9> /xea/x4e <CJK>
++<U9DB2> /xea/x4f <CJK>
++<U9DC4> /xea/x50 <CJK>
++<U9DC1> /xea/x51 <CJK>
++<U9DBB> /xea/x52 <CJK>
++<U9DB8> /xea/x53 <CJK>
++<U9DBA> /xea/x54 <CJK>
++<U9DC6> /xea/x55 <CJK>
++<U9DCF> /xea/x56 <CJK>
++<U9DC2> /xea/x57 <CJK>
++<U9DD9> /xea/x58 <CJK>
++<U9DD3> /xea/x59 <CJK>
++<U9DF8> /xea/x5a <CJK>
++<U9DE6> /xea/x5b <CJK>
++<U9DED> /xea/x5c <CJK>
++<U9DEF> /xea/x5d <CJK>
++<U9DFD> /xea/x5e <CJK>
++<U9E1A> /xea/x5f <CJK>
++<U9E1B> /xea/x60 <CJK>
++<U9E1E> /xea/x61 <CJK>
++<U9E75> /xea/x62 <CJK>
++<U9E79> /xea/x63 <CJK>
++<U9E7D> /xea/x64 <CJK>
++<U9E81> /xea/x65 <CJK>
++<U9E88> /xea/x66 <CJK>
++<U9E8B> /xea/x67 <CJK>
++<U9E8C> /xea/x68 <CJK>
++<U9E92> /xea/x69 <CJK>
++<U9E95> /xea/x6a <CJK>
++<U9E91> /xea/x6b <CJK>
++<U9E9D> /xea/x6c <CJK>
++<U9EA5> /xea/x6d <CJK>
++<U9EA9> /xea/x6e <CJK>
++<U9EB8> /xea/x6f <CJK>
++<U9EAA> /xea/x70 <CJK>
++<U9EAD> /xea/x71 <CJK>
++<U9761> /xea/x72 <CJK>
++<U9ECC> /xea/x73 <CJK>
++<U9ECE> /xea/x74 <CJK>
++<U9ECF> /xea/x75 <CJK>
++<U9ED0> /xea/x76 <CJK>
++<U9ED4> /xea/x77 <CJK>
++<U9EDC> /xea/x78 <CJK>
++<U9EDE> /xea/x79 <CJK>
++<U9EDD> /xea/x7a <CJK>
++<U9EE0> /xea/x7b <CJK>
++<U9EE5> /xea/x7c <CJK>
++<U9EE8> /xea/x7d <CJK>
++<U9EEF> /xea/x7e <CJK>
++<U9EF4> /xea/x80 <CJK>
++<U9EF6> /xea/x81 <CJK>
++<U9EF7> /xea/x82 <CJK>
++<U9EF9> /xea/x83 <CJK>
++<U9EFB> /xea/x84 <CJK>
++<U9EFC> /xea/x85 <CJK>
++<U9EFD> /xea/x86 <CJK>
++<U9F07> /xea/x87 <CJK>
++<U9F08> /xea/x88 <CJK>
++<U76B7> /xea/x89 <CJK>
++<U9F15> /xea/x8a <CJK>
++<U9F21> /xea/x8b <CJK>
++<U9F2C> /xea/x8c <CJK>
++<U9F3E> /xea/x8d <CJK>
++<U9F4A> /xea/x8e <CJK>
++<U9F52> /xea/x8f <CJK>
++<U9F54> /xea/x90 <CJK>
++<U9F63> /xea/x91 <CJK>
++<U9F5F> /xea/x92 <CJK>
++<U9F60> /xea/x93 <CJK>
++<U9F61> /xea/x94 <CJK>
++<U9F66> /xea/x95 <CJK>
++<U9F67> /xea/x96 <CJK>
++<U9F6C> /xea/x97 <CJK>
++<U9F6A> /xea/x98 <CJK>
++<U9F77> /xea/x99 <CJK>
++<U9F72> /xea/x9a <CJK>
++<U9F76> /xea/x9b <CJK>
++<U9F95> /xea/x9c <CJK>
++<U9F9C> /xea/x9d <CJK>
++<U9FA0> /xea/x9e <CJK>
++<U582F> /xea/x9f <CJK>
++<U69C7> /xea/xa0 <CJK>
++<U9059> /xea/xa1 <CJK>
++<U7464> /xea/xa2 <CJK>
++<U51DC> /xea/xa3 <CJK>
++<U7199> /xea/xa4 <CJK>
++
++%IRREVERSIBLE%<U7E8A> /xed/x40 <CJK>
++%IRREVERSIBLE%<U891C> /xed/x41 <CJK>
++%IRREVERSIBLE%<U9348> /xed/x42 <CJK>
++%IRREVERSIBLE%<U9288> /xed/x43 <CJK>
++%IRREVERSIBLE%<U84DC> /xed/x44 <CJK>
++%IRREVERSIBLE%<U4FC9> /xed/x45 <CJK>
++%IRREVERSIBLE%<U70BB> /xed/x46 <CJK>
++%IRREVERSIBLE%<U6631> /xed/x47 <CJK>
++%IRREVERSIBLE%<U68C8> /xed/x48 <CJK>
++%IRREVERSIBLE%<U92F9> /xed/x49 <CJK>
++%IRREVERSIBLE%<U66FB> /xed/x4a <CJK>
++%IRREVERSIBLE%<U5F45> /xed/x4b <CJK>
++%IRREVERSIBLE%<U4E28> /xed/x4c <CJK>
++%IRREVERSIBLE%<U4EE1> /xed/x4d <CJK>
++%IRREVERSIBLE%<U4EFC> /xed/x4e <CJK>
++%IRREVERSIBLE%<U4F00> /xed/x4f <CJK>
++%IRREVERSIBLE%<U4F03> /xed/x50 <CJK>
++%IRREVERSIBLE%<U4F39> /xed/x51 <CJK>
++%IRREVERSIBLE%<U4F56> /xed/x52 <CJK>
++%IRREVERSIBLE%<U4F92> /xed/x53 <CJK>
++%IRREVERSIBLE%<U4F8A> /xed/x54 <CJK>
++%IRREVERSIBLE%<U4F9A> /xed/x55 <CJK>
++%IRREVERSIBLE%<U4F94> /xed/x56 <CJK>
++%IRREVERSIBLE%<U4FCD> /xed/x57 <CJK>
++%IRREVERSIBLE%<U5040> /xed/x58 <CJK>
++%IRREVERSIBLE%<U5022> /xed/x59 <CJK>
++%IRREVERSIBLE%<U4FFF> /xed/x5a <CJK>
++%IRREVERSIBLE%<U501E> /xed/x5b <CJK>
++%IRREVERSIBLE%<U5046> /xed/x5c <CJK>
++%IRREVERSIBLE%<U5070> /xed/x5d <CJK>
++%IRREVERSIBLE%<U5042> /xed/x5e <CJK>
++%IRREVERSIBLE%<U5094> /xed/x5f <CJK>
++%IRREVERSIBLE%<U50F4> /xed/x60 <CJK>
++%IRREVERSIBLE%<U50D8> /xed/x61 <CJK>
++%IRREVERSIBLE%<U514A> /xed/x62 <CJK>
++%IRREVERSIBLE%<U5164> /xed/x63 <CJK>
++%IRREVERSIBLE%<U519D> /xed/x64 <CJK>
++%IRREVERSIBLE%<U51BE> /xed/x65 <CJK>
++%IRREVERSIBLE%<U51EC> /xed/x66 <CJK>
++%IRREVERSIBLE%<U5215> /xed/x67 <CJK>
++%IRREVERSIBLE%<U529C> /xed/x68 <CJK>
++%IRREVERSIBLE%<U52A6> /xed/x69 <CJK>
++%IRREVERSIBLE%<U52C0> /xed/x6a <CJK>
++%IRREVERSIBLE%<U52DB> /xed/x6b <CJK>
++%IRREVERSIBLE%<U5300> /xed/x6c <CJK>
++%IRREVERSIBLE%<U5307> /xed/x6d <CJK>
++%IRREVERSIBLE%<U5324> /xed/x6e <CJK>
++%IRREVERSIBLE%<U5372> /xed/x6f <CJK>
++%IRREVERSIBLE%<U5393> /xed/x70 <CJK>
++%IRREVERSIBLE%<U53B2> /xed/x71 <CJK>
++%IRREVERSIBLE%<U53DD> /xed/x72 <CJK>
++%IRREVERSIBLE%<UFA0E> /xed/x73 CJK COMPATIBILITY IDEOGRAPH-FA0E
++%IRREVERSIBLE%<U549C> /xed/x74 <CJK>
++%IRREVERSIBLE%<U548A> /xed/x75 <CJK>
++%IRREVERSIBLE%<U54A9> /xed/x76 <CJK>
++%IRREVERSIBLE%<U54FF> /xed/x77 <CJK>
++%IRREVERSIBLE%<U5586> /xed/x78 <CJK>
++%IRREVERSIBLE%<U5759> /xed/x79 <CJK>
++%IRREVERSIBLE%<U5765> /xed/x7a <CJK>
++%IRREVERSIBLE%<U57AC> /xed/x7b <CJK>
++%IRREVERSIBLE%<U57C8> /xed/x7c <CJK>
++%IRREVERSIBLE%<U57C7> /xed/x7d <CJK>
++%IRREVERSIBLE%<UFA0F> /xed/x7e CJK COMPATIBILITY IDEOGRAPH-FA0F
++%IRREVERSIBLE%<UFA10> /xed/x80 CJK COMPATIBILITY IDEOGRAPH-FA10
++%IRREVERSIBLE%<U589E> /xed/x81 <CJK>
++%IRREVERSIBLE%<U58B2> /xed/x82 <CJK>
++%IRREVERSIBLE%<U590B> /xed/x83 <CJK>
++%IRREVERSIBLE%<U5953> /xed/x84 <CJK>
++%IRREVERSIBLE%<U595B> /xed/x85 <CJK>
++%IRREVERSIBLE%<U595D> /xed/x86 <CJK>
++%IRREVERSIBLE%<U5963> /xed/x87 <CJK>
++%IRREVERSIBLE%<U59A4> /xed/x88 <CJK>
++%IRREVERSIBLE%<U59BA> /xed/x89 <CJK>
++%IRREVERSIBLE%<U5B56> /xed/x8a <CJK>
++%IRREVERSIBLE%<U5BC0> /xed/x8b <CJK>
++%IRREVERSIBLE%<U752F> /xed/x8c <CJK>
++%IRREVERSIBLE%<U5BD8> /xed/x8d <CJK>
++%IRREVERSIBLE%<U5BEC> /xed/x8e <CJK>
++%IRREVERSIBLE%<U5C1E> /xed/x8f <CJK>
++%IRREVERSIBLE%<U5CA6> /xed/x90 <CJK>
++%IRREVERSIBLE%<U5CBA> /xed/x91 <CJK>
++%IRREVERSIBLE%<U5CF5> /xed/x92 <CJK>
++%IRREVERSIBLE%<U5D27> /xed/x93 <CJK>
++%IRREVERSIBLE%<U5D53> /xed/x94 <CJK>
++%IRREVERSIBLE%<UFA11> /xed/x95 CJK COMPATIBILITY IDEOGRAPH-FA11
++%IRREVERSIBLE%<U5D42> /xed/x96 <CJK>
++%IRREVERSIBLE%<U5D6D> /xed/x97 <CJK>
++%IRREVERSIBLE%<U5DB8> /xed/x98 <CJK>
++%IRREVERSIBLE%<U5DB9> /xed/x99 <CJK>
++%IRREVERSIBLE%<U5DD0> /xed/x9a <CJK>
++%IRREVERSIBLE%<U5F21> /xed/x9b <CJK>
++%IRREVERSIBLE%<U5F34> /xed/x9c <CJK>
++%IRREVERSIBLE%<U5F67> /xed/x9d <CJK>
++%IRREVERSIBLE%<U5FB7> /xed/x9e <CJK>
++%IRREVERSIBLE%<U5FDE> /xed/x9f <CJK>
++%IRREVERSIBLE%<U605D> /xed/xa0 <CJK>
++%IRREVERSIBLE%<U6085> /xed/xa1 <CJK>
++%IRREVERSIBLE%<U608A> /xed/xa2 <CJK>
++%IRREVERSIBLE%<U60DE> /xed/xa3 <CJK>
++%IRREVERSIBLE%<U60D5> /xed/xa4 <CJK>
++%IRREVERSIBLE%<U6120> /xed/xa5 <CJK>
++%IRREVERSIBLE%<U60F2> /xed/xa6 <CJK>
++%IRREVERSIBLE%<U6111> /xed/xa7 <CJK>
++%IRREVERSIBLE%<U6137> /xed/xa8 <CJK>
++%IRREVERSIBLE%<U6130> /xed/xa9 <CJK>
++%IRREVERSIBLE%<U6198> /xed/xaa <CJK>
++%IRREVERSIBLE%<U6213> /xed/xab <CJK>
++%IRREVERSIBLE%<U62A6> /xed/xac <CJK>
++%IRREVERSIBLE%<U63F5> /xed/xad <CJK>
++%IRREVERSIBLE%<U6460> /xed/xae <CJK>
++%IRREVERSIBLE%<U649D> /xed/xaf <CJK>
++%IRREVERSIBLE%<U64CE> /xed/xb0 <CJK>
++%IRREVERSIBLE%<U654E> /xed/xb1 <CJK>
++%IRREVERSIBLE%<U6600> /xed/xb2 <CJK>
++%IRREVERSIBLE%<U6615> /xed/xb3 <CJK>
++%IRREVERSIBLE%<U663B> /xed/xb4 <CJK>
++%IRREVERSIBLE%<U6609> /xed/xb5 <CJK>
++%IRREVERSIBLE%<U662E> /xed/xb6 <CJK>
++%IRREVERSIBLE%<U661E> /xed/xb7 <CJK>
++%IRREVERSIBLE%<U6624> /xed/xb8 <CJK>
++%IRREVERSIBLE%<U6665> /xed/xb9 <CJK>
++%IRREVERSIBLE%<U6657> /xed/xba <CJK>
++%IRREVERSIBLE%<U6659> /xed/xbb <CJK>
++%IRREVERSIBLE%<UFA12> /xed/xbc CJK COMPATIBILITY IDEOGRAPH-FA12
++%IRREVERSIBLE%<U6673> /xed/xbd <CJK>
++%IRREVERSIBLE%<U6699> /xed/xbe <CJK>
++%IRREVERSIBLE%<U66A0> /xed/xbf <CJK>
++%IRREVERSIBLE%<U66B2> /xed/xc0 <CJK>
++%IRREVERSIBLE%<U66BF> /xed/xc1 <CJK>
++%IRREVERSIBLE%<U66FA> /xed/xc2 <CJK>
++%IRREVERSIBLE%<U670E> /xed/xc3 <CJK>
++%IRREVERSIBLE%<UF929> /xed/xc4 CJK COMPATIBILITY IDEOGRAPH-F929
++%IRREVERSIBLE%<U6766> /xed/xc5 <CJK>
++%IRREVERSIBLE%<U67BB> /xed/xc6 <CJK>
++%IRREVERSIBLE%<U6852> /xed/xc7 <CJK>
++%IRREVERSIBLE%<U67C0> /xed/xc8 <CJK>
++%IRREVERSIBLE%<U6801> /xed/xc9 <CJK>
++%IRREVERSIBLE%<U6844> /xed/xca <CJK>
++%IRREVERSIBLE%<U68CF> /xed/xcb <CJK>
++%IRREVERSIBLE%<UFA13> /xed/xcc CJK COMPATIBILITY IDEOGRAPH-FA13
++%IRREVERSIBLE%<U6968> /xed/xcd <CJK>
++%IRREVERSIBLE%<UFA14> /xed/xce CJK COMPATIBILITY IDEOGRAPH-FA14
++%IRREVERSIBLE%<U6998> /xed/xcf <CJK>
++%IRREVERSIBLE%<U69E2> /xed/xd0 <CJK>
++%IRREVERSIBLE%<U6A30> /xed/xd1 <CJK>
++%IRREVERSIBLE%<U6A6B> /xed/xd2 <CJK>
++%IRREVERSIBLE%<U6A46> /xed/xd3 <CJK>
++%IRREVERSIBLE%<U6A73> /xed/xd4 <CJK>
++%IRREVERSIBLE%<U6A7E> /xed/xd5 <CJK>
++%IRREVERSIBLE%<U6AE2> /xed/xd6 <CJK>
++%IRREVERSIBLE%<U6AE4> /xed/xd7 <CJK>
++%IRREVERSIBLE%<U6BD6> /xed/xd8 <CJK>
++%IRREVERSIBLE%<U6C3F> /xed/xd9 <CJK>
++%IRREVERSIBLE%<U6C5C> /xed/xda <CJK>
++%IRREVERSIBLE%<U6C86> /xed/xdb <CJK>
++%IRREVERSIBLE%<U6C6F> /xed/xdc <CJK>
++%IRREVERSIBLE%<U6CDA> /xed/xdd <CJK>
++%IRREVERSIBLE%<U6D04> /xed/xde <CJK>
++%IRREVERSIBLE%<U6D87> /xed/xdf <CJK>
++%IRREVERSIBLE%<U6D6F> /xed/xe0 <CJK>
++%IRREVERSIBLE%<U6D96> /xed/xe1 <CJK>
++%IRREVERSIBLE%<U6DAC> /xed/xe2 <CJK>
++%IRREVERSIBLE%<U6DCF> /xed/xe3 <CJK>
++%IRREVERSIBLE%<U6DF8> /xed/xe4 <CJK>
++%IRREVERSIBLE%<U6DF2> /xed/xe5 <CJK>
++%IRREVERSIBLE%<U6DFC> /xed/xe6 <CJK>
++%IRREVERSIBLE%<U6E39> /xed/xe7 <CJK>
++%IRREVERSIBLE%<U6E5C> /xed/xe8 <CJK>
++%IRREVERSIBLE%<U6E27> /xed/xe9 <CJK>
++%IRREVERSIBLE%<U6E3C> /xed/xea <CJK>
++%IRREVERSIBLE%<U6EBF> /xed/xeb <CJK>
++%IRREVERSIBLE%<U6F88> /xed/xec <CJK>
++%IRREVERSIBLE%<U6FB5> /xed/xed <CJK>
++%IRREVERSIBLE%<U6FF5> /xed/xee <CJK>
++%IRREVERSIBLE%<U7005> /xed/xef <CJK>
++%IRREVERSIBLE%<U7007> /xed/xf0 <CJK>
++%IRREVERSIBLE%<U7028> /xed/xf1 <CJK>
++%IRREVERSIBLE%<U7085> /xed/xf2 <CJK>
++%IRREVERSIBLE%<U70AB> /xed/xf3 <CJK>
++%IRREVERSIBLE%<U710F> /xed/xf4 <CJK>
++%IRREVERSIBLE%<U7104> /xed/xf5 <CJK>
++%IRREVERSIBLE%<U715C> /xed/xf6 <CJK>
++%IRREVERSIBLE%<U7146> /xed/xf7 <CJK>
++%IRREVERSIBLE%<U7147> /xed/xf8 <CJK>
++%IRREVERSIBLE%<UFA15> /xed/xf9 CJK COMPATIBILITY IDEOGRAPH-FA15
++%IRREVERSIBLE%<U71C1> /xed/xfa <CJK>
++%IRREVERSIBLE%<U71FE> /xed/xfb <CJK>
++%IRREVERSIBLE%<U72B1> /xed/xfc <CJK>
++%IRREVERSIBLE%<U72BE> /xee/x40 <CJK>
++%IRREVERSIBLE%<U7324> /xee/x41 <CJK>
++%IRREVERSIBLE%<UFA16> /xee/x42 CJK COMPATIBILITY IDEOGRAPH-FA16
++%IRREVERSIBLE%<U7377> /xee/x43 <CJK>
++%IRREVERSIBLE%<U73BD> /xee/x44 <CJK>
++%IRREVERSIBLE%<U73C9> /xee/x45 <CJK>
++%IRREVERSIBLE%<U73D6> /xee/x46 <CJK>
++%IRREVERSIBLE%<U73E3> /xee/x47 <CJK>
++%IRREVERSIBLE%<U73D2> /xee/x48 <CJK>
++%IRREVERSIBLE%<U7407> /xee/x49 <CJK>
++%IRREVERSIBLE%<U73F5> /xee/x4a <CJK>
++%IRREVERSIBLE%<U7426> /xee/x4b <CJK>
++%IRREVERSIBLE%<U742A> /xee/x4c <CJK>
++%IRREVERSIBLE%<U7429> /xee/x4d <CJK>
++%IRREVERSIBLE%<U742E> /xee/x4e <CJK>
++%IRREVERSIBLE%<U7462> /xee/x4f <CJK>
++%IRREVERSIBLE%<U7489> /xee/x50 <CJK>
++%IRREVERSIBLE%<U749F> /xee/x51 <CJK>
++%IRREVERSIBLE%<U7501> /xee/x52 <CJK>
++%IRREVERSIBLE%<U756F> /xee/x53 <CJK>
++%IRREVERSIBLE%<U7682> /xee/x54 <CJK>
++%IRREVERSIBLE%<U769C> /xee/x55 <CJK>
++%IRREVERSIBLE%<U769E> /xee/x56 <CJK>
++%IRREVERSIBLE%<U769B> /xee/x57 <CJK>
++%IRREVERSIBLE%<U76A6> /xee/x58 <CJK>
++%IRREVERSIBLE%<UFA17> /xee/x59 CJK COMPATIBILITY IDEOGRAPH-FA17
++%IRREVERSIBLE%<U7746> /xee/x5a <CJK>
++%IRREVERSIBLE%<U52AF> /xee/x5b <CJK>
++%IRREVERSIBLE%<U7821> /xee/x5c <CJK>
++%IRREVERSIBLE%<U784E> /xee/x5d <CJK>
++%IRREVERSIBLE%<U7864> /xee/x5e <CJK>
++%IRREVERSIBLE%<U787A> /xee/x5f <CJK>
++%IRREVERSIBLE%<U7930> /xee/x60 <CJK>
++%IRREVERSIBLE%<UFA18> /xee/x61 CJK COMPATIBILITY IDEOGRAPH-FA18
++%IRREVERSIBLE%<UFA19> /xee/x62 CJK COMPATIBILITY IDEOGRAPH-FA19
++%IRREVERSIBLE%<UFA1A> /xee/x63 CJK COMPATIBILITY IDEOGRAPH-FA1A
++%IRREVERSIBLE%<U7994> /xee/x64 <CJK>
++%IRREVERSIBLE%<UFA1B> /xee/x65 CJK COMPATIBILITY IDEOGRAPH-FA1B
++%IRREVERSIBLE%<U799B> /xee/x66 <CJK>
++%IRREVERSIBLE%<U7AD1> /xee/x67 <CJK>
++%IRREVERSIBLE%<U7AE7> /xee/x68 <CJK>
++%IRREVERSIBLE%<UFA1C> /xee/x69 CJK COMPATIBILITY IDEOGRAPH-FA1C
++%IRREVERSIBLE%<U7AEB> /xee/x6a <CJK>
++%IRREVERSIBLE%<U7B9E> /xee/x6b <CJK>
++%IRREVERSIBLE%<UFA1D> /xee/x6c CJK COMPATIBILITY IDEOGRAPH-FA1D
++%IRREVERSIBLE%<U7D48> /xee/x6d <CJK>
++%IRREVERSIBLE%<U7D5C> /xee/x6e <CJK>
++%IRREVERSIBLE%<U7DB7> /xee/x6f <CJK>
++%IRREVERSIBLE%<U7DA0> /xee/x70 <CJK>
++%IRREVERSIBLE%<U7DD6> /xee/x71 <CJK>
++%IRREVERSIBLE%<U7E52> /xee/x72 <CJK>
++%IRREVERSIBLE%<U7F47> /xee/x73 <CJK>
++%IRREVERSIBLE%<U7FA1> /xee/x74 <CJK>
++%IRREVERSIBLE%<UFA1E> /xee/x75 CJK COMPATIBILITY IDEOGRAPH-FA1E
++%IRREVERSIBLE%<U8301> /xee/x76 <CJK>
++%IRREVERSIBLE%<U8362> /xee/x77 <CJK>
++%IRREVERSIBLE%<U837F> /xee/x78 <CJK>
++%IRREVERSIBLE%<U83C7> /xee/x79 <CJK>
++%IRREVERSIBLE%<U83F6> /xee/x7a <CJK>
++%IRREVERSIBLE%<U8448> /xee/x7b <CJK>
++%IRREVERSIBLE%<U84B4> /xee/x7c <CJK>
++%IRREVERSIBLE%<U8553> /xee/x7d <CJK>
++%IRREVERSIBLE%<U8559> /xee/x7e <CJK>
++%IRREVERSIBLE%<U856B> /xee/x80 <CJK>
++%IRREVERSIBLE%<UFA1F> /xee/x81 CJK COMPATIBILITY IDEOGRAPH-FA1F
++%IRREVERSIBLE%<U85B0> /xee/x82 <CJK>
++%IRREVERSIBLE%<UFA20> /xee/x83 CJK COMPATIBILITY IDEOGRAPH-FA20
++%IRREVERSIBLE%<UFA21> /xee/x84 CJK COMPATIBILITY IDEOGRAPH-FA21
++%IRREVERSIBLE%<U8807> /xee/x85 <CJK>
++%IRREVERSIBLE%<U88F5> /xee/x86 <CJK>
++%IRREVERSIBLE%<U8A12> /xee/x87 <CJK>
++%IRREVERSIBLE%<U8A37> /xee/x88 <CJK>
++%IRREVERSIBLE%<U8A79> /xee/x89 <CJK>
++%IRREVERSIBLE%<U8AA7> /xee/x8a <CJK>
++%IRREVERSIBLE%<U8ABE> /xee/x8b <CJK>
++%IRREVERSIBLE%<U8ADF> /xee/x8c <CJK>
++%IRREVERSIBLE%<UFA22> /xee/x8d CJK COMPATIBILITY IDEOGRAPH-FA22
++%IRREVERSIBLE%<U8AF6> /xee/x8e <CJK>
++%IRREVERSIBLE%<U8B53> /xee/x8f <CJK>
++%IRREVERSIBLE%<U8B7F> /xee/x90 <CJK>
++%IRREVERSIBLE%<U8CF0> /xee/x91 <CJK>
++%IRREVERSIBLE%<U8CF4> /xee/x92 <CJK>
++%IRREVERSIBLE%<U8D12> /xee/x93 <CJK>
++%IRREVERSIBLE%<U8D76> /xee/x94 <CJK>
++%IRREVERSIBLE%<UFA23> /xee/x95 CJK COMPATIBILITY IDEOGRAPH-FA23
++%IRREVERSIBLE%<U8ECF> /xee/x96 <CJK>
++%IRREVERSIBLE%<UFA24> /xee/x97 CJK COMPATIBILITY IDEOGRAPH-FA24
++%IRREVERSIBLE%<UFA25> /xee/x98 CJK COMPATIBILITY IDEOGRAPH-FA25
++%IRREVERSIBLE%<U9067> /xee/x99 <CJK>
++%IRREVERSIBLE%<U90DE> /xee/x9a <CJK>
++%IRREVERSIBLE%<UFA26> /xee/x9b CJK COMPATIBILITY IDEOGRAPH-FA26
++%IRREVERSIBLE%<U9115> /xee/x9c <CJK>
++%IRREVERSIBLE%<U9127> /xee/x9d <CJK>
++%IRREVERSIBLE%<U91DA> /xee/x9e <CJK>
++%IRREVERSIBLE%<U91D7> /xee/x9f <CJK>
++%IRREVERSIBLE%<U91DE> /xee/xa0 <CJK>
++%IRREVERSIBLE%<U91ED> /xee/xa1 <CJK>
++%IRREVERSIBLE%<U91EE> /xee/xa2 <CJK>
++%IRREVERSIBLE%<U91E4> /xee/xa3 <CJK>
++%IRREVERSIBLE%<U91E5> /xee/xa4 <CJK>
++%IRREVERSIBLE%<U9206> /xee/xa5 <CJK>
++%IRREVERSIBLE%<U9210> /xee/xa6 <CJK>
++%IRREVERSIBLE%<U920A> /xee/xa7 <CJK>
++%IRREVERSIBLE%<U923A> /xee/xa8 <CJK>
++%IRREVERSIBLE%<U9240> /xee/xa9 <CJK>
++%IRREVERSIBLE%<U923C> /xee/xaa <CJK>
++%IRREVERSIBLE%<U924E> /xee/xab <CJK>
++%IRREVERSIBLE%<U9259> /xee/xac <CJK>
++%IRREVERSIBLE%<U9251> /xee/xad <CJK>
++%IRREVERSIBLE%<U9239> /xee/xae <CJK>
++%IRREVERSIBLE%<U9267> /xee/xaf <CJK>
++%IRREVERSIBLE%<U92A7> /xee/xb0 <CJK>
++%IRREVERSIBLE%<U9277> /xee/xb1 <CJK>
++%IRREVERSIBLE%<U9278> /xee/xb2 <CJK>
++%IRREVERSIBLE%<U92E7> /xee/xb3 <CJK>
++%IRREVERSIBLE%<U92D7> /xee/xb4 <CJK>
++%IRREVERSIBLE%<U92D9> /xee/xb5 <CJK>
++%IRREVERSIBLE%<U92D0> /xee/xb6 <CJK>
++%IRREVERSIBLE%<UFA27> /xee/xb7 CJK COMPATIBILITY IDEOGRAPH-FA27
++%IRREVERSIBLE%<U92D5> /xee/xb8 <CJK>
++%IRREVERSIBLE%<U92E0> /xee/xb9 <CJK>
++%IRREVERSIBLE%<U92D3> /xee/xba <CJK>
++%IRREVERSIBLE%<U9325> /xee/xbb <CJK>
++%IRREVERSIBLE%<U9321> /xee/xbc <CJK>
++%IRREVERSIBLE%<U92FB> /xee/xbd <CJK>
++%IRREVERSIBLE%<UFA28> /xee/xbe CJK COMPATIBILITY IDEOGRAPH-FA28
++%IRREVERSIBLE%<U931E> /xee/xbf <CJK>
++%IRREVERSIBLE%<U92FF> /xee/xc0 <CJK>
++%IRREVERSIBLE%<U931D> /xee/xc1 <CJK>
++%IRREVERSIBLE%<U9302> /xee/xc2 <CJK>
++%IRREVERSIBLE%<U9370> /xee/xc3 <CJK>
++%IRREVERSIBLE%<U9357> /xee/xc4 <CJK>
++%IRREVERSIBLE%<U93A4> /xee/xc5 <CJK>
++%IRREVERSIBLE%<U93C6> /xee/xc6 <CJK>
++%IRREVERSIBLE%<U93DE> /xee/xc7 <CJK>
++%IRREVERSIBLE%<U93F8> /xee/xc8 <CJK>
++%IRREVERSIBLE%<U9431> /xee/xc9 <CJK>
++%IRREVERSIBLE%<U9445> /xee/xca <CJK>
++%IRREVERSIBLE%<U9448> /xee/xcb <CJK>
++%IRREVERSIBLE%<U9592> /xee/xcc <CJK>
++%IRREVERSIBLE%<UF9DC> /xee/xcd CJK COMPATIBILITY IDEOGRAPH-F9DC
++%IRREVERSIBLE%<UFA29> /xee/xce CJK COMPATIBILITY IDEOGRAPH-FA29
++%IRREVERSIBLE%<U969D> /xee/xcf <CJK>
++%IRREVERSIBLE%<U96AF> /xee/xd0 <CJK>
++%IRREVERSIBLE%<U9733> /xee/xd1 <CJK>
++%IRREVERSIBLE%<U973B> /xee/xd2 <CJK>
++%IRREVERSIBLE%<U9743> /xee/xd3 <CJK>
++%IRREVERSIBLE%<U974D> /xee/xd4 <CJK>
++%IRREVERSIBLE%<U974F> /xee/xd5 <CJK>
++%IRREVERSIBLE%<U9751> /xee/xd6 <CJK>
++%IRREVERSIBLE%<U9755> /xee/xd7 <CJK>
++%IRREVERSIBLE%<U9857> /xee/xd8 <CJK>
++%IRREVERSIBLE%<U9865> /xee/xd9 <CJK>
++%IRREVERSIBLE%<UFA2A> /xee/xda CJK COMPATIBILITY IDEOGRAPH-FA2A
++%IRREVERSIBLE%<UFA2B> /xee/xdb CJK COMPATIBILITY IDEOGRAPH-FA2B
++%IRREVERSIBLE%<U9927> /xee/xdc <CJK>
++%IRREVERSIBLE%<UFA2C> /xee/xdd CJK COMPATIBILITY IDEOGRAPH-FA2C
++%IRREVERSIBLE%<U999E> /xee/xde <CJK>
++%IRREVERSIBLE%<U9A4E> /xee/xdf <CJK>
++%IRREVERSIBLE%<U9AD9> /xee/xe0 <CJK>
++%IRREVERSIBLE%<U9ADC> /xee/xe1 <CJK>
++%IRREVERSIBLE%<U9B75> /xee/xe2 <CJK>
++%IRREVERSIBLE%<U9B72> /xee/xe3 <CJK>
++%IRREVERSIBLE%<U9B8F> /xee/xe4 <CJK>
++%IRREVERSIBLE%<U9BB1> /xee/xe5 <CJK>
++%IRREVERSIBLE%<U9BBB> /xee/xe6 <CJK>
++%IRREVERSIBLE%<U9C00> /xee/xe7 <CJK>
++%IRREVERSIBLE%<U9D70> /xee/xe8 <CJK>
++%IRREVERSIBLE%<U9D6B> /xee/xe9 <CJK>
++%IRREVERSIBLE%<UFA2D> /xee/xea CJK COMPATIBILITY IDEOGRAPH-FA2D
++%IRREVERSIBLE%<U9E19> /xee/xeb <CJK>
++%IRREVERSIBLE%<U9ED1> /xee/xec <CJK>
++%IRREVERSIBLE%<U2170> /xee/xef SMALL ROMAN NUMERAL ONE
++%IRREVERSIBLE%<U2171> /xee/xf0 SMALL ROMAN NUMERAL TWO
++%IRREVERSIBLE%<U2172> /xee/xf1 SMALL ROMAN NUMERAL THREE
++%IRREVERSIBLE%<U2173> /xee/xf2 SMALL ROMAN NUMERAL FOUR
++%IRREVERSIBLE%<U2174> /xee/xf3 SMALL ROMAN NUMERAL FIVE
++%IRREVERSIBLE%<U2175> /xee/xf4 SMALL ROMAN NUMERAL SIX
++%IRREVERSIBLE%<U2176> /xee/xf5 SMALL ROMAN NUMERAL SEVEN
++%IRREVERSIBLE%<U2177> /xee/xf6 SMALL ROMAN NUMERAL EIGHT
++%IRREVERSIBLE%<U2178> /xee/xf7 SMALL ROMAN NUMERAL NINE
++%IRREVERSIBLE%<U2179> /xee/xf8 SMALL ROMAN NUMERAL TEN
++%IRREVERSIBLE%<UFFE2> /xee/xf9 FULLWIDTH NOT SIGN
++%IRREVERSIBLE%<UFFE4> /xee/xfa FULLWIDTH BROKEN BAR
++%IRREVERSIBLE%<UFF07> /xee/xfb FULLWIDTH APOSTROPHE
++%IRREVERSIBLE%<UFF02> /xee/xfc FULLWIDTH QUOTATION MARK
++
++<UE000> /xf0/x40 <Private Use>
++<UE001> /xf0/x41 <Private Use>
++<UE002> /xf0/x42 <Private Use>
++<UE003> /xf0/x43 <Private Use>
++<UE004> /xf0/x44 <Private Use>
++<UE005> /xf0/x45 <Private Use>
++<UE006> /xf0/x46 <Private Use>
++<UE007> /xf0/x47 <Private Use>
++<UE008> /xf0/x48 <Private Use>
++<UE009> /xf0/x49 <Private Use>
++<UE00A> /xf0/x4a <Private Use>
++<UE00B> /xf0/x4b <Private Use>
++<UE00C> /xf0/x4c <Private Use>
++<UE00D> /xf0/x4d <Private Use>
++<UE00E> /xf0/x4e <Private Use>
++<UE00F> /xf0/x4f <Private Use>
++<UE010> /xf0/x50 <Private Use>
++<UE011> /xf0/x51 <Private Use>
++<UE012> /xf0/x52 <Private Use>
++<UE013> /xf0/x53 <Private Use>
++<UE014> /xf0/x54 <Private Use>
++<UE015> /xf0/x55 <Private Use>
++<UE016> /xf0/x56 <Private Use>
++<UE017> /xf0/x57 <Private Use>
++<UE018> /xf0/x58 <Private Use>
++<UE019> /xf0/x59 <Private Use>
++<UE01A> /xf0/x5a <Private Use>
++<UE01B> /xf0/x5b <Private Use>
++<UE01C> /xf0/x5c <Private Use>
++<UE01D> /xf0/x5d <Private Use>
++<UE01E> /xf0/x5e <Private Use>
++<UE01F> /xf0/x5f <Private Use>
++<UE020> /xf0/x60 <Private Use>
++<UE021> /xf0/x61 <Private Use>
++<UE022> /xf0/x62 <Private Use>
++<UE023> /xf0/x63 <Private Use>
++<UE024> /xf0/x64 <Private Use>
++<UE025> /xf0/x65 <Private Use>
++<UE026> /xf0/x66 <Private Use>
++<UE027> /xf0/x67 <Private Use>
++<UE028> /xf0/x68 <Private Use>
++<UE029> /xf0/x69 <Private Use>
++<UE02A> /xf0/x6a <Private Use>
++<UE02B> /xf0/x6b <Private Use>
++<UE02C> /xf0/x6c <Private Use>
++<UE02D> /xf0/x6d <Private Use>
++<UE02E> /xf0/x6e <Private Use>
++<UE02F> /xf0/x6f <Private Use>
++<UE030> /xf0/x70 <Private Use>
++<UE031> /xf0/x71 <Private Use>
++<UE032> /xf0/x72 <Private Use>
++<UE033> /xf0/x73 <Private Use>
++<UE034> /xf0/x74 <Private Use>
++<UE035> /xf0/x75 <Private Use>
++<UE036> /xf0/x76 <Private Use>
++<UE037> /xf0/x77 <Private Use>
++<UE038> /xf0/x78 <Private Use>
++<UE039> /xf0/x79 <Private Use>
++<UE03A> /xf0/x7a <Private Use>
++<UE03B> /xf0/x7b <Private Use>
++<UE03C> /xf0/x7c <Private Use>
++<UE03D> /xf0/x7d <Private Use>
++<UE03E> /xf0/x7e <Private Use>
++<UE03F> /xf0/x80 <Private Use>
++<UE040> /xf0/x81 <Private Use>
++<UE041> /xf0/x82 <Private Use>
++<UE042> /xf0/x83 <Private Use>
++<UE043> /xf0/x84 <Private Use>
++<UE044> /xf0/x85 <Private Use>
++<UE045> /xf0/x86 <Private Use>
++<UE046> /xf0/x87 <Private Use>
++<UE047> /xf0/x88 <Private Use>
++<UE048> /xf0/x89 <Private Use>
++<UE049> /xf0/x8a <Private Use>
++<UE04A> /xf0/x8b <Private Use>
++<UE04B> /xf0/x8c <Private Use>
++<UE04C> /xf0/x8d <Private Use>
++<UE04D> /xf0/x8e <Private Use>
++<UE04E> /xf0/x8f <Private Use>
++<UE04F> /xf0/x90 <Private Use>
++<UE050> /xf0/x91 <Private Use>
++<UE051> /xf0/x92 <Private Use>
++<UE052> /xf0/x93 <Private Use>
++<UE053> /xf0/x94 <Private Use>
++<UE054> /xf0/x95 <Private Use>
++<UE055> /xf0/x96 <Private Use>
++<UE056> /xf0/x97 <Private Use>
++<UE057> /xf0/x98 <Private Use>
++<UE058> /xf0/x99 <Private Use>
++<UE059> /xf0/x9a <Private Use>
++<UE05A> /xf0/x9b <Private Use>
++<UE05B> /xf0/x9c <Private Use>
++<UE05C> /xf0/x9d <Private Use>
++<UE05D> /xf0/x9e <Private Use>
++<UE05E> /xf0/x9f <Private Use>
++<UE05F> /xf0/xa0 <Private Use>
++<UE060> /xf0/xa1 <Private Use>
++<UE061> /xf0/xa2 <Private Use>
++<UE062> /xf0/xa3 <Private Use>
++<UE063> /xf0/xa4 <Private Use>
++<UE064> /xf0/xa5 <Private Use>
++<UE065> /xf0/xa6 <Private Use>
++<UE066> /xf0/xa7 <Private Use>
++<UE067> /xf0/xa8 <Private Use>
++<UE068> /xf0/xa9 <Private Use>
++<UE069> /xf0/xaa <Private Use>
++<UE06A> /xf0/xab <Private Use>
++<UE06B> /xf0/xac <Private Use>
++<UE06C> /xf0/xad <Private Use>
++<UE06D> /xf0/xae <Private Use>
++<UE06E> /xf0/xaf <Private Use>
++<UE06F> /xf0/xb0 <Private Use>
++<UE070> /xf0/xb1 <Private Use>
++<UE071> /xf0/xb2 <Private Use>
++<UE072> /xf0/xb3 <Private Use>
++<UE073> /xf0/xb4 <Private Use>
++<UE074> /xf0/xb5 <Private Use>
++<UE075> /xf0/xb6 <Private Use>
++<UE076> /xf0/xb7 <Private Use>
++<UE077> /xf0/xb8 <Private Use>
++<UE078> /xf0/xb9 <Private Use>
++<UE079> /xf0/xba <Private Use>
++<UE07A> /xf0/xbb <Private Use>
++<UE07B> /xf0/xbc <Private Use>
++<UE07C> /xf0/xbd <Private Use>
++<UE07D> /xf0/xbe <Private Use>
++<UE07E> /xf0/xbf <Private Use>
++<UE07F> /xf0/xc0 <Private Use>
++<UE080> /xf0/xc1 <Private Use>
++<UE081> /xf0/xc2 <Private Use>
++<UE082> /xf0/xc3 <Private Use>
++<UE083> /xf0/xc4 <Private Use>
++<UE084> /xf0/xc5 <Private Use>
++<UE085> /xf0/xc6 <Private Use>
++<UE086> /xf0/xc7 <Private Use>
++<UE087> /xf0/xc8 <Private Use>
++<UE088> /xf0/xc9 <Private Use>
++<UE089> /xf0/xca <Private Use>
++<UE08A> /xf0/xcb <Private Use>
++<UE08B> /xf0/xcc <Private Use>
++<UE08C> /xf0/xcd <Private Use>
++<UE08D> /xf0/xce <Private Use>
++<UE08E> /xf0/xcf <Private Use>
++<UE08F> /xf0/xd0 <Private Use>
++<UE090> /xf0/xd1 <Private Use>
++<UE091> /xf0/xd2 <Private Use>
++<UE092> /xf0/xd3 <Private Use>
++<UE093> /xf0/xd4 <Private Use>
++<UE094> /xf0/xd5 <Private Use>
++<UE095> /xf0/xd6 <Private Use>
++<UE096> /xf0/xd7 <Private Use>
++<UE097> /xf0/xd8 <Private Use>
++<UE098> /xf0/xd9 <Private Use>
++<UE099> /xf0/xda <Private Use>
++<UE09A> /xf0/xdb <Private Use>
++<UE09B> /xf0/xdc <Private Use>
++<UE09C> /xf0/xdd <Private Use>
++<UE09D> /xf0/xde <Private Use>
++<UE09E> /xf0/xdf <Private Use>
++<UE09F> /xf0/xe0 <Private Use>
++<UE0A0> /xf0/xe1 <Private Use>
++<UE0A1> /xf0/xe2 <Private Use>
++<UE0A2> /xf0/xe3 <Private Use>
++<UE0A3> /xf0/xe4 <Private Use>
++<UE0A4> /xf0/xe5 <Private Use>
++<UE0A5> /xf0/xe6 <Private Use>
++<UE0A6> /xf0/xe7 <Private Use>
++<UE0A7> /xf0/xe8 <Private Use>
++<UE0A8> /xf0/xe9 <Private Use>
++<UE0A9> /xf0/xea <Private Use>
++<UE0AA> /xf0/xeb <Private Use>
++<UE0AB> /xf0/xec <Private Use>
++<UE0AC> /xf0/xed <Private Use>
++<UE0AD> /xf0/xee <Private Use>
++<UE0AE> /xf0/xef <Private Use>
++<UE0AF> /xf0/xf0 <Private Use>
++<UE0B0> /xf0/xf1 <Private Use>
++<UE0B1> /xf0/xf2 <Private Use>
++<UE0B2> /xf0/xf3 <Private Use>
++<UE0B3> /xf0/xf4 <Private Use>
++<UE0B4> /xf0/xf5 <Private Use>
++<UE0B5> /xf0/xf6 <Private Use>
++<UE0B6> /xf0/xf7 <Private Use>
++<UE0B7> /xf0/xf8 <Private Use>
++<UE0B8> /xf0/xf9 <Private Use>
++<UE0B9> /xf0/xfa <Private Use>
++<UE0BA> /xf0/xfb <Private Use>
++<UE0BB> /xf0/xfc <Private Use>
++<UE0BC> /xf1/x40 <Private Use>
++<UE0BD> /xf1/x41 <Private Use>
++<UE0BE> /xf1/x42 <Private Use>
++<UE0BF> /xf1/x43 <Private Use>
++<UE0C0> /xf1/x44 <Private Use>
++<UE0C1> /xf1/x45 <Private Use>
++<UE0C2> /xf1/x46 <Private Use>
++<UE0C3> /xf1/x47 <Private Use>
++<UE0C4> /xf1/x48 <Private Use>
++<UE0C5> /xf1/x49 <Private Use>
++<UE0C6> /xf1/x4a <Private Use>
++<UE0C7> /xf1/x4b <Private Use>
++<UE0C8> /xf1/x4c <Private Use>
++<UE0C9> /xf1/x4d <Private Use>
++<UE0CA> /xf1/x4e <Private Use>
++<UE0CB> /xf1/x4f <Private Use>
++<UE0CC> /xf1/x50 <Private Use>
++<UE0CD> /xf1/x51 <Private Use>
++<UE0CE> /xf1/x52 <Private Use>
++<UE0CF> /xf1/x53 <Private Use>
++<UE0D0> /xf1/x54 <Private Use>
++<UE0D1> /xf1/x55 <Private Use>
++<UE0D2> /xf1/x56 <Private Use>
++<UE0D3> /xf1/x57 <Private Use>
++<UE0D4> /xf1/x58 <Private Use>
++<UE0D5> /xf1/x59 <Private Use>
++<UE0D6> /xf1/x5a <Private Use>
++<UE0D7> /xf1/x5b <Private Use>
++<UE0D8> /xf1/x5c <Private Use>
++<UE0D9> /xf1/x5d <Private Use>
++<UE0DA> /xf1/x5e <Private Use>
++<UE0DB> /xf1/x5f <Private Use>
++<UE0DC> /xf1/x60 <Private Use>
++<UE0DD> /xf1/x61 <Private Use>
++<UE0DE> /xf1/x62 <Private Use>
++<UE0DF> /xf1/x63 <Private Use>
++<UE0E0> /xf1/x64 <Private Use>
++<UE0E1> /xf1/x65 <Private Use>
++<UE0E2> /xf1/x66 <Private Use>
++<UE0E3> /xf1/x67 <Private Use>
++<UE0E4> /xf1/x68 <Private Use>
++<UE0E5> /xf1/x69 <Private Use>
++<UE0E6> /xf1/x6a <Private Use>
++<UE0E7> /xf1/x6b <Private Use>
++<UE0E8> /xf1/x6c <Private Use>
++<UE0E9> /xf1/x6d <Private Use>
++<UE0EA> /xf1/x6e <Private Use>
++<UE0EB> /xf1/x6f <Private Use>
++<UE0EC> /xf1/x70 <Private Use>
++<UE0ED> /xf1/x71 <Private Use>
++<UE0EE> /xf1/x72 <Private Use>
++<UE0EF> /xf1/x73 <Private Use>
++<UE0F0> /xf1/x74 <Private Use>
++<UE0F1> /xf1/x75 <Private Use>
++<UE0F2> /xf1/x76 <Private Use>
++<UE0F3> /xf1/x77 <Private Use>
++<UE0F4> /xf1/x78 <Private Use>
++<UE0F5> /xf1/x79 <Private Use>
++<UE0F6> /xf1/x7a <Private Use>
++<UE0F7> /xf1/x7b <Private Use>
++<UE0F8> /xf1/x7c <Private Use>
++<UE0F9> /xf1/x7d <Private Use>
++<UE0FA> /xf1/x7e <Private Use>
++<UE0FB> /xf1/x80 <Private Use>
++<UE0FC> /xf1/x81 <Private Use>
++<UE0FD> /xf1/x82 <Private Use>
++<UE0FE> /xf1/x83 <Private Use>
++<UE0FF> /xf1/x84 <Private Use>
++<UE100> /xf1/x85 <Private Use>
++<UE101> /xf1/x86 <Private Use>
++<UE102> /xf1/x87 <Private Use>
++<UE103> /xf1/x88 <Private Use>
++<UE104> /xf1/x89 <Private Use>
++<UE105> /xf1/x8a <Private Use>
++<UE106> /xf1/x8b <Private Use>
++<UE107> /xf1/x8c <Private Use>
++<UE108> /xf1/x8d <Private Use>
++<UE109> /xf1/x8e <Private Use>
++<UE10A> /xf1/x8f <Private Use>
++<UE10B> /xf1/x90 <Private Use>
++<UE10C> /xf1/x91 <Private Use>
++<UE10D> /xf1/x92 <Private Use>
++<UE10E> /xf1/x93 <Private Use>
++<UE10F> /xf1/x94 <Private Use>
++<UE110> /xf1/x95 <Private Use>
++<UE111> /xf1/x96 <Private Use>
++<UE112> /xf1/x97 <Private Use>
++<UE113> /xf1/x98 <Private Use>
++<UE114> /xf1/x99 <Private Use>
++<UE115> /xf1/x9a <Private Use>
++<UE116> /xf1/x9b <Private Use>
++<UE117> /xf1/x9c <Private Use>
++<UE118> /xf1/x9d <Private Use>
++<UE119> /xf1/x9e <Private Use>
++<UE11A> /xf1/x9f <Private Use>
++<UE11B> /xf1/xa0 <Private Use>
++<UE11C> /xf1/xa1 <Private Use>
++<UE11D> /xf1/xa2 <Private Use>
++<UE11E> /xf1/xa3 <Private Use>
++<UE11F> /xf1/xa4 <Private Use>
++<UE120> /xf1/xa5 <Private Use>
++<UE121> /xf1/xa6 <Private Use>
++<UE122> /xf1/xa7 <Private Use>
++<UE123> /xf1/xa8 <Private Use>
++<UE124> /xf1/xa9 <Private Use>
++<UE125> /xf1/xaa <Private Use>
++<UE126> /xf1/xab <Private Use>
++<UE127> /xf1/xac <Private Use>
++<UE128> /xf1/xad <Private Use>
++<UE129> /xf1/xae <Private Use>
++<UE12A> /xf1/xaf <Private Use>
++<UE12B> /xf1/xb0 <Private Use>
++<UE12C> /xf1/xb1 <Private Use>
++<UE12D> /xf1/xb2 <Private Use>
++<UE12E> /xf1/xb3 <Private Use>
++<UE12F> /xf1/xb4 <Private Use>
++<UE130> /xf1/xb5 <Private Use>
++<UE131> /xf1/xb6 <Private Use>
++<UE132> /xf1/xb7 <Private Use>
++<UE133> /xf1/xb8 <Private Use>
++<UE134> /xf1/xb9 <Private Use>
++<UE135> /xf1/xba <Private Use>
++<UE136> /xf1/xbb <Private Use>
++<UE137> /xf1/xbc <Private Use>
++<UE138> /xf1/xbd <Private Use>
++<UE139> /xf1/xbe <Private Use>
++<UE13A> /xf1/xbf <Private Use>
++<UE13B> /xf1/xc0 <Private Use>
++<UE13C> /xf1/xc1 <Private Use>
++<UE13D> /xf1/xc2 <Private Use>
++<UE13E> /xf1/xc3 <Private Use>
++<UE13F> /xf1/xc4 <Private Use>
++<UE140> /xf1/xc5 <Private Use>
++<UE141> /xf1/xc6 <Private Use>
++<UE142> /xf1/xc7 <Private Use>
++<UE143> /xf1/xc8 <Private Use>
++<UE144> /xf1/xc9 <Private Use>
++<UE145> /xf1/xca <Private Use>
++<UE146> /xf1/xcb <Private Use>
++<UE147> /xf1/xcc <Private Use>
++<UE148> /xf1/xcd <Private Use>
++<UE149> /xf1/xce <Private Use>
++<UE14A> /xf1/xcf <Private Use>
++<UE14B> /xf1/xd0 <Private Use>
++<UE14C> /xf1/xd1 <Private Use>
++<UE14D> /xf1/xd2 <Private Use>
++<UE14E> /xf1/xd3 <Private Use>
++<UE14F> /xf1/xd4 <Private Use>
++<UE150> /xf1/xd5 <Private Use>
++<UE151> /xf1/xd6 <Private Use>
++<UE152> /xf1/xd7 <Private Use>
++<UE153> /xf1/xd8 <Private Use>
++<UE154> /xf1/xd9 <Private Use>
++<UE155> /xf1/xda <Private Use>
++<UE156> /xf1/xdb <Private Use>
++<UE157> /xf1/xdc <Private Use>
++<UE158> /xf1/xdd <Private Use>
++<UE159> /xf1/xde <Private Use>
++<UE15A> /xf1/xdf <Private Use>
++<UE15B> /xf1/xe0 <Private Use>
++<UE15C> /xf1/xe1 <Private Use>
++<UE15D> /xf1/xe2 <Private Use>
++<UE15E> /xf1/xe3 <Private Use>
++<UE15F> /xf1/xe4 <Private Use>
++<UE160> /xf1/xe5 <Private Use>
++<UE161> /xf1/xe6 <Private Use>
++<UE162> /xf1/xe7 <Private Use>
++<UE163> /xf1/xe8 <Private Use>
++<UE164> /xf1/xe9 <Private Use>
++<UE165> /xf1/xea <Private Use>
++<UE166> /xf1/xeb <Private Use>
++<UE167> /xf1/xec <Private Use>
++<UE168> /xf1/xed <Private Use>
++<UE169> /xf1/xee <Private Use>
++<UE16A> /xf1/xef <Private Use>
++<UE16B> /xf1/xf0 <Private Use>
++<UE16C> /xf1/xf1 <Private Use>
++<UE16D> /xf1/xf2 <Private Use>
++<UE16E> /xf1/xf3 <Private Use>
++<UE16F> /xf1/xf4 <Private Use>
++<UE170> /xf1/xf5 <Private Use>
++<UE171> /xf1/xf6 <Private Use>
++<UE172> /xf1/xf7 <Private Use>
++<UE173> /xf1/xf8 <Private Use>
++<UE174> /xf1/xf9 <Private Use>
++<UE175> /xf1/xfa <Private Use>
++<UE176> /xf1/xfb <Private Use>
++<UE177> /xf1/xfc <Private Use>
++<UE178> /xf2/x40 <Private Use>
++<UE179> /xf2/x41 <Private Use>
++<UE17A> /xf2/x42 <Private Use>
++<UE17B> /xf2/x43 <Private Use>
++<UE17C> /xf2/x44 <Private Use>
++<UE17D> /xf2/x45 <Private Use>
++<UE17E> /xf2/x46 <Private Use>
++<UE17F> /xf2/x47 <Private Use>
++<UE180> /xf2/x48 <Private Use>
++<UE181> /xf2/x49 <Private Use>
++<UE182> /xf2/x4a <Private Use>
++<UE183> /xf2/x4b <Private Use>
++<UE184> /xf2/x4c <Private Use>
++<UE185> /xf2/x4d <Private Use>
++<UE186> /xf2/x4e <Private Use>
++<UE187> /xf2/x4f <Private Use>
++<UE188> /xf2/x50 <Private Use>
++<UE189> /xf2/x51 <Private Use>
++<UE18A> /xf2/x52 <Private Use>
++<UE18B> /xf2/x53 <Private Use>
++<UE18C> /xf2/x54 <Private Use>
++<UE18D> /xf2/x55 <Private Use>
++<UE18E> /xf2/x56 <Private Use>
++<UE18F> /xf2/x57 <Private Use>
++<UE190> /xf2/x58 <Private Use>
++<UE191> /xf2/x59 <Private Use>
++<UE192> /xf2/x5a <Private Use>
++<UE193> /xf2/x5b <Private Use>
++<UE194> /xf2/x5c <Private Use>
++<UE195> /xf2/x5d <Private Use>
++<UE196> /xf2/x5e <Private Use>
++<UE197> /xf2/x5f <Private Use>
++<UE198> /xf2/x60 <Private Use>
++<UE199> /xf2/x61 <Private Use>
++<UE19A> /xf2/x62 <Private Use>
++<UE19B> /xf2/x63 <Private Use>
++<UE19C> /xf2/x64 <Private Use>
++<UE19D> /xf2/x65 <Private Use>
++<UE19E> /xf2/x66 <Private Use>
++<UE19F> /xf2/x67 <Private Use>
++<UE1A0> /xf2/x68 <Private Use>
++<UE1A1> /xf2/x69 <Private Use>
++<UE1A2> /xf2/x6a <Private Use>
++<UE1A3> /xf2/x6b <Private Use>
++<UE1A4> /xf2/x6c <Private Use>
++<UE1A5> /xf2/x6d <Private Use>
++<UE1A6> /xf2/x6e <Private Use>
++<UE1A7> /xf2/x6f <Private Use>
++<UE1A8> /xf2/x70 <Private Use>
++<UE1A9> /xf2/x71 <Private Use>
++<UE1AA> /xf2/x72 <Private Use>
++<UE1AB> /xf2/x73 <Private Use>
++<UE1AC> /xf2/x74 <Private Use>
++<UE1AD> /xf2/x75 <Private Use>
++<UE1AE> /xf2/x76 <Private Use>
++<UE1AF> /xf2/x77 <Private Use>
++<UE1B0> /xf2/x78 <Private Use>
++<UE1B1> /xf2/x79 <Private Use>
++<UE1B2> /xf2/x7a <Private Use>
++<UE1B3> /xf2/x7b <Private Use>
++<UE1B4> /xf2/x7c <Private Use>
++<UE1B5> /xf2/x7d <Private Use>
++<UE1B6> /xf2/x7e <Private Use>
++<UE1B7> /xf2/x80 <Private Use>
++<UE1B8> /xf2/x81 <Private Use>
++<UE1B9> /xf2/x82 <Private Use>
++<UE1BA> /xf2/x83 <Private Use>
++<UE1BB> /xf2/x84 <Private Use>
++<UE1BC> /xf2/x85 <Private Use>
++<UE1BD> /xf2/x86 <Private Use>
++<UE1BE> /xf2/x87 <Private Use>
++<UE1BF> /xf2/x88 <Private Use>
++<UE1C0> /xf2/x89 <Private Use>
++<UE1C1> /xf2/x8a <Private Use>
++<UE1C2> /xf2/x8b <Private Use>
++<UE1C3> /xf2/x8c <Private Use>
++<UE1C4> /xf2/x8d <Private Use>
++<UE1C5> /xf2/x8e <Private Use>
++<UE1C6> /xf2/x8f <Private Use>
++<UE1C7> /xf2/x90 <Private Use>
++<UE1C8> /xf2/x91 <Private Use>
++<UE1C9> /xf2/x92 <Private Use>
++<UE1CA> /xf2/x93 <Private Use>
++<UE1CB> /xf2/x94 <Private Use>
++<UE1CC> /xf2/x95 <Private Use>
++<UE1CD> /xf2/x96 <Private Use>
++<UE1CE> /xf2/x97 <Private Use>
++<UE1CF> /xf2/x98 <Private Use>
++<UE1D0> /xf2/x99 <Private Use>
++<UE1D1> /xf2/x9a <Private Use>
++<UE1D2> /xf2/x9b <Private Use>
++<UE1D3> /xf2/x9c <Private Use>
++<UE1D4> /xf2/x9d <Private Use>
++<UE1D5> /xf2/x9e <Private Use>
++<UE1D6> /xf2/x9f <Private Use>
++<UE1D7> /xf2/xa0 <Private Use>
++<UE1D8> /xf2/xa1 <Private Use>
++<UE1D9> /xf2/xa2 <Private Use>
++<UE1DA> /xf2/xa3 <Private Use>
++<UE1DB> /xf2/xa4 <Private Use>
++<UE1DC> /xf2/xa5 <Private Use>
++<UE1DD> /xf2/xa6 <Private Use>
++<UE1DE> /xf2/xa7 <Private Use>
++<UE1DF> /xf2/xa8 <Private Use>
++<UE1E0> /xf2/xa9 <Private Use>
++<UE1E1> /xf2/xaa <Private Use>
++<UE1E2> /xf2/xab <Private Use>
++<UE1E3> /xf2/xac <Private Use>
++<UE1E4> /xf2/xad <Private Use>
++<UE1E5> /xf2/xae <Private Use>
++<UE1E6> /xf2/xaf <Private Use>
++<UE1E7> /xf2/xb0 <Private Use>
++<UE1E8> /xf2/xb1 <Private Use>
++<UE1E9> /xf2/xb2 <Private Use>
++<UE1EA> /xf2/xb3 <Private Use>
++<UE1EB> /xf2/xb4 <Private Use>
++<UE1EC> /xf2/xb5 <Private Use>
++<UE1ED> /xf2/xb6 <Private Use>
++<UE1EE> /xf2/xb7 <Private Use>
++<UE1EF> /xf2/xb8 <Private Use>
++<UE1F0> /xf2/xb9 <Private Use>
++<UE1F1> /xf2/xba <Private Use>
++<UE1F2> /xf2/xbb <Private Use>
++<UE1F3> /xf2/xbc <Private Use>
++<UE1F4> /xf2/xbd <Private Use>
++<UE1F5> /xf2/xbe <Private Use>
++<UE1F6> /xf2/xbf <Private Use>
++<UE1F7> /xf2/xc0 <Private Use>
++<UE1F8> /xf2/xc1 <Private Use>
++<UE1F9> /xf2/xc2 <Private Use>
++<UE1FA> /xf2/xc3 <Private Use>
++<UE1FB> /xf2/xc4 <Private Use>
++<UE1FC> /xf2/xc5 <Private Use>
++<UE1FD> /xf2/xc6 <Private Use>
++<UE1FE> /xf2/xc7 <Private Use>
++<UE1FF> /xf2/xc8 <Private Use>
++<UE200> /xf2/xc9 <Private Use>
++<UE201> /xf2/xca <Private Use>
++<UE202> /xf2/xcb <Private Use>
++<UE203> /xf2/xcc <Private Use>
++<UE204> /xf2/xcd <Private Use>
++<UE205> /xf2/xce <Private Use>
++<UE206> /xf2/xcf <Private Use>
++<UE207> /xf2/xd0 <Private Use>
++<UE208> /xf2/xd1 <Private Use>
++<UE209> /xf2/xd2 <Private Use>
++<UE20A> /xf2/xd3 <Private Use>
++<UE20B> /xf2/xd4 <Private Use>
++<UE20C> /xf2/xd5 <Private Use>
++<UE20D> /xf2/xd6 <Private Use>
++<UE20E> /xf2/xd7 <Private Use>
++<UE20F> /xf2/xd8 <Private Use>
++<UE210> /xf2/xd9 <Private Use>
++<UE211> /xf2/xda <Private Use>
++<UE212> /xf2/xdb <Private Use>
++<UE213> /xf2/xdc <Private Use>
++<UE214> /xf2/xdd <Private Use>
++<UE215> /xf2/xde <Private Use>
++<UE216> /xf2/xdf <Private Use>
++<UE217> /xf2/xe0 <Private Use>
++<UE218> /xf2/xe1 <Private Use>
++<UE219> /xf2/xe2 <Private Use>
++<UE21A> /xf2/xe3 <Private Use>
++<UE21B> /xf2/xe4 <Private Use>
++<UE21C> /xf2/xe5 <Private Use>
++<UE21D> /xf2/xe6 <Private Use>
++<UE21E> /xf2/xe7 <Private Use>
++<UE21F> /xf2/xe8 <Private Use>
++<UE220> /xf2/xe9 <Private Use>
++<UE221> /xf2/xea <Private Use>
++<UE222> /xf2/xeb <Private Use>
++<UE223> /xf2/xec <Private Use>
++<UE224> /xf2/xed <Private Use>
++<UE225> /xf2/xee <Private Use>
++<UE226> /xf2/xef <Private Use>
++<UE227> /xf2/xf0 <Private Use>
++<UE228> /xf2/xf1 <Private Use>
++<UE229> /xf2/xf2 <Private Use>
++<UE22A> /xf2/xf3 <Private Use>
++<UE22B> /xf2/xf4 <Private Use>
++<UE22C> /xf2/xf5 <Private Use>
++<UE22D> /xf2/xf6 <Private Use>
++<UE22E> /xf2/xf7 <Private Use>
++<UE22F> /xf2/xf8 <Private Use>
++<UE230> /xf2/xf9 <Private Use>
++<UE231> /xf2/xfa <Private Use>
++<UE232> /xf2/xfb <Private Use>
++<UE233> /xf2/xfc <Private Use>
++<UE234> /xf3/x40 <Private Use>
++<UE235> /xf3/x41 <Private Use>
++<UE236> /xf3/x42 <Private Use>
++<UE237> /xf3/x43 <Private Use>
++<UE238> /xf3/x44 <Private Use>
++<UE239> /xf3/x45 <Private Use>
++<UE23A> /xf3/x46 <Private Use>
++<UE23B> /xf3/x47 <Private Use>
++<UE23C> /xf3/x48 <Private Use>
++<UE23D> /xf3/x49 <Private Use>
++<UE23E> /xf3/x4a <Private Use>
++<UE23F> /xf3/x4b <Private Use>
++<UE240> /xf3/x4c <Private Use>
++<UE241> /xf3/x4d <Private Use>
++<UE242> /xf3/x4e <Private Use>
++<UE243> /xf3/x4f <Private Use>
++<UE244> /xf3/x50 <Private Use>
++<UE245> /xf3/x51 <Private Use>
++<UE246> /xf3/x52 <Private Use>
++<UE247> /xf3/x53 <Private Use>
++<UE248> /xf3/x54 <Private Use>
++<UE249> /xf3/x55 <Private Use>
++<UE24A> /xf3/x56 <Private Use>
++<UE24B> /xf3/x57 <Private Use>
++<UE24C> /xf3/x58 <Private Use>
++<UE24D> /xf3/x59 <Private Use>
++<UE24E> /xf3/x5a <Private Use>
++<UE24F> /xf3/x5b <Private Use>
++<UE250> /xf3/x5c <Private Use>
++<UE251> /xf3/x5d <Private Use>
++<UE252> /xf3/x5e <Private Use>
++<UE253> /xf3/x5f <Private Use>
++<UE254> /xf3/x60 <Private Use>
++<UE255> /xf3/x61 <Private Use>
++<UE256> /xf3/x62 <Private Use>
++<UE257> /xf3/x63 <Private Use>
++<UE258> /xf3/x64 <Private Use>
++<UE259> /xf3/x65 <Private Use>
++<UE25A> /xf3/x66 <Private Use>
++<UE25B> /xf3/x67 <Private Use>
++<UE25C> /xf3/x68 <Private Use>
++<UE25D> /xf3/x69 <Private Use>
++<UE25E> /xf3/x6a <Private Use>
++<UE25F> /xf3/x6b <Private Use>
++<UE260> /xf3/x6c <Private Use>
++<UE261> /xf3/x6d <Private Use>
++<UE262> /xf3/x6e <Private Use>
++<UE263> /xf3/x6f <Private Use>
++<UE264> /xf3/x70 <Private Use>
++<UE265> /xf3/x71 <Private Use>
++<UE266> /xf3/x72 <Private Use>
++<UE267> /xf3/x73 <Private Use>
++<UE268> /xf3/x74 <Private Use>
++<UE269> /xf3/x75 <Private Use>
++<UE26A> /xf3/x76 <Private Use>
++<UE26B> /xf3/x77 <Private Use>
++<UE26C> /xf3/x78 <Private Use>
++<UE26D> /xf3/x79 <Private Use>
++<UE26E> /xf3/x7a <Private Use>
++<UE26F> /xf3/x7b <Private Use>
++<UE270> /xf3/x7c <Private Use>
++<UE271> /xf3/x7d <Private Use>
++<UE272> /xf3/x7e <Private Use>
++<UE273> /xf3/x80 <Private Use>
++<UE274> /xf3/x81 <Private Use>
++<UE275> /xf3/x82 <Private Use>
++<UE276> /xf3/x83 <Private Use>
++<UE277> /xf3/x84 <Private Use>
++<UE278> /xf3/x85 <Private Use>
++<UE279> /xf3/x86 <Private Use>
++<UE27A> /xf3/x87 <Private Use>
++<UE27B> /xf3/x88 <Private Use>
++<UE27C> /xf3/x89 <Private Use>
++<UE27D> /xf3/x8a <Private Use>
++<UE27E> /xf3/x8b <Private Use>
++<UE27F> /xf3/x8c <Private Use>
++<UE280> /xf3/x8d <Private Use>
++<UE281> /xf3/x8e <Private Use>
++<UE282> /xf3/x8f <Private Use>
++<UE283> /xf3/x90 <Private Use>
++<UE284> /xf3/x91 <Private Use>
++<UE285> /xf3/x92 <Private Use>
++<UE286> /xf3/x93 <Private Use>
++<UE287> /xf3/x94 <Private Use>
++<UE288> /xf3/x95 <Private Use>
++<UE289> /xf3/x96 <Private Use>
++<UE28A> /xf3/x97 <Private Use>
++<UE28B> /xf3/x98 <Private Use>
++<UE28C> /xf3/x99 <Private Use>
++<UE28D> /xf3/x9a <Private Use>
++<UE28E> /xf3/x9b <Private Use>
++<UE28F> /xf3/x9c <Private Use>
++<UE290> /xf3/x9d <Private Use>
++<UE291> /xf3/x9e <Private Use>
++<UE292> /xf3/x9f <Private Use>
++<UE293> /xf3/xa0 <Private Use>
++<UE294> /xf3/xa1 <Private Use>
++<UE295> /xf3/xa2 <Private Use>
++<UE296> /xf3/xa3 <Private Use>
++<UE297> /xf3/xa4 <Private Use>
++<UE298> /xf3/xa5 <Private Use>
++<UE299> /xf3/xa6 <Private Use>
++<UE29A> /xf3/xa7 <Private Use>
++<UE29B> /xf3/xa8 <Private Use>
++<UE29C> /xf3/xa9 <Private Use>
++<UE29D> /xf3/xaa <Private Use>
++<UE29E> /xf3/xab <Private Use>
++<UE29F> /xf3/xac <Private Use>
++<UE2A0> /xf3/xad <Private Use>
++<UE2A1> /xf3/xae <Private Use>
++<UE2A2> /xf3/xaf <Private Use>
++<UE2A3> /xf3/xb0 <Private Use>
++<UE2A4> /xf3/xb1 <Private Use>
++<UE2A5> /xf3/xb2 <Private Use>
++<UE2A6> /xf3/xb3 <Private Use>
++<UE2A7> /xf3/xb4 <Private Use>
++<UE2A8> /xf3/xb5 <Private Use>
++<UE2A9> /xf3/xb6 <Private Use>
++<UE2AA> /xf3/xb7 <Private Use>
++<UE2AB> /xf3/xb8 <Private Use>
++<UE2AC> /xf3/xb9 <Private Use>
++<UE2AD> /xf3/xba <Private Use>
++<UE2AE> /xf3/xbb <Private Use>
++<UE2AF> /xf3/xbc <Private Use>
++<UE2B0> /xf3/xbd <Private Use>
++<UE2B1> /xf3/xbe <Private Use>
++<UE2B2> /xf3/xbf <Private Use>
++<UE2B3> /xf3/xc0 <Private Use>
++<UE2B4> /xf3/xc1 <Private Use>
++<UE2B5> /xf3/xc2 <Private Use>
++<UE2B6> /xf3/xc3 <Private Use>
++<UE2B7> /xf3/xc4 <Private Use>
++<UE2B8> /xf3/xc5 <Private Use>
++<UE2B9> /xf3/xc6 <Private Use>
++<UE2BA> /xf3/xc7 <Private Use>
++<UE2BB> /xf3/xc8 <Private Use>
++<UE2BC> /xf3/xc9 <Private Use>
++<UE2BD> /xf3/xca <Private Use>
++<UE2BE> /xf3/xcb <Private Use>
++<UE2BF> /xf3/xcc <Private Use>
++<UE2C0> /xf3/xcd <Private Use>
++<UE2C1> /xf3/xce <Private Use>
++<UE2C2> /xf3/xcf <Private Use>
++<UE2C3> /xf3/xd0 <Private Use>
++<UE2C4> /xf3/xd1 <Private Use>
++<UE2C5> /xf3/xd2 <Private Use>
++<UE2C6> /xf3/xd3 <Private Use>
++<UE2C7> /xf3/xd4 <Private Use>
++<UE2C8> /xf3/xd5 <Private Use>
++<UE2C9> /xf3/xd6 <Private Use>
++<UE2CA> /xf3/xd7 <Private Use>
++<UE2CB> /xf3/xd8 <Private Use>
++<UE2CC> /xf3/xd9 <Private Use>
++<UE2CD> /xf3/xda <Private Use>
++<UE2CE> /xf3/xdb <Private Use>
++<UE2CF> /xf3/xdc <Private Use>
++<UE2D0> /xf3/xdd <Private Use>
++<UE2D1> /xf3/xde <Private Use>
++<UE2D2> /xf3/xdf <Private Use>
++<UE2D3> /xf3/xe0 <Private Use>
++<UE2D4> /xf3/xe1 <Private Use>
++<UE2D5> /xf3/xe2 <Private Use>
++<UE2D6> /xf3/xe3 <Private Use>
++<UE2D7> /xf3/xe4 <Private Use>
++<UE2D8> /xf3/xe5 <Private Use>
++<UE2D9> /xf3/xe6 <Private Use>
++<UE2DA> /xf3/xe7 <Private Use>
++<UE2DB> /xf3/xe8 <Private Use>
++<UE2DC> /xf3/xe9 <Private Use>
++<UE2DD> /xf3/xea <Private Use>
++<UE2DE> /xf3/xeb <Private Use>
++<UE2DF> /xf3/xec <Private Use>
++<UE2E0> /xf3/xed <Private Use>
++<UE2E1> /xf3/xee <Private Use>
++<UE2E2> /xf3/xef <Private Use>
++<UE2E3> /xf3/xf0 <Private Use>
++<UE2E4> /xf3/xf1 <Private Use>
++<UE2E5> /xf3/xf2 <Private Use>
++<UE2E6> /xf3/xf3 <Private Use>
++<UE2E7> /xf3/xf4 <Private Use>
++<UE2E8> /xf3/xf5 <Private Use>
++<UE2E9> /xf3/xf6 <Private Use>
++<UE2EA> /xf3/xf7 <Private Use>
++<UE2EB> /xf3/xf8 <Private Use>
++<UE2EC> /xf3/xf9 <Private Use>
++<UE2ED> /xf3/xfa <Private Use>
++<UE2EE> /xf3/xfb <Private Use>
++<UE2EF> /xf3/xfc <Private Use>
++<UE2F0> /xf4/x40 <Private Use>
++<UE2F1> /xf4/x41 <Private Use>
++<UE2F2> /xf4/x42 <Private Use>
++<UE2F3> /xf4/x43 <Private Use>
++<UE2F4> /xf4/x44 <Private Use>
++<UE2F5> /xf4/x45 <Private Use>
++<UE2F6> /xf4/x46 <Private Use>
++<UE2F7> /xf4/x47 <Private Use>
++<UE2F8> /xf4/x48 <Private Use>
++<UE2F9> /xf4/x49 <Private Use>
++<UE2FA> /xf4/x4a <Private Use>
++<UE2FB> /xf4/x4b <Private Use>
++<UE2FC> /xf4/x4c <Private Use>
++<UE2FD> /xf4/x4d <Private Use>
++<UE2FE> /xf4/x4e <Private Use>
++<UE2FF> /xf4/x4f <Private Use>
++<UE300> /xf4/x50 <Private Use>
++<UE301> /xf4/x51 <Private Use>
++<UE302> /xf4/x52 <Private Use>
++<UE303> /xf4/x53 <Private Use>
++<UE304> /xf4/x54 <Private Use>
++<UE305> /xf4/x55 <Private Use>
++<UE306> /xf4/x56 <Private Use>
++<UE307> /xf4/x57 <Private Use>
++<UE308> /xf4/x58 <Private Use>
++<UE309> /xf4/x59 <Private Use>
++<UE30A> /xf4/x5a <Private Use>
++<UE30B> /xf4/x5b <Private Use>
++<UE30C> /xf4/x5c <Private Use>
++<UE30D> /xf4/x5d <Private Use>
++<UE30E> /xf4/x5e <Private Use>
++<UE30F> /xf4/x5f <Private Use>
++<UE310> /xf4/x60 <Private Use>
++<UE311> /xf4/x61 <Private Use>
++<UE312> /xf4/x62 <Private Use>
++<UE313> /xf4/x63 <Private Use>
++<UE314> /xf4/x64 <Private Use>
++<UE315> /xf4/x65 <Private Use>
++<UE316> /xf4/x66 <Private Use>
++<UE317> /xf4/x67 <Private Use>
++<UE318> /xf4/x68 <Private Use>
++<UE319> /xf4/x69 <Private Use>
++<UE31A> /xf4/x6a <Private Use>
++<UE31B> /xf4/x6b <Private Use>
++<UE31C> /xf4/x6c <Private Use>
++<UE31D> /xf4/x6d <Private Use>
++<UE31E> /xf4/x6e <Private Use>
++<UE31F> /xf4/x6f <Private Use>
++<UE320> /xf4/x70 <Private Use>
++<UE321> /xf4/x71 <Private Use>
++<UE322> /xf4/x72 <Private Use>
++<UE323> /xf4/x73 <Private Use>
++<UE324> /xf4/x74 <Private Use>
++<UE325> /xf4/x75 <Private Use>
++<UE326> /xf4/x76 <Private Use>
++<UE327> /xf4/x77 <Private Use>
++<UE328> /xf4/x78 <Private Use>
++<UE329> /xf4/x79 <Private Use>
++<UE32A> /xf4/x7a <Private Use>
++<UE32B> /xf4/x7b <Private Use>
++<UE32C> /xf4/x7c <Private Use>
++<UE32D> /xf4/x7d <Private Use>
++<UE32E> /xf4/x7e <Private Use>
++<UE32F> /xf4/x80 <Private Use>
++<UE330> /xf4/x81 <Private Use>
++<UE331> /xf4/x82 <Private Use>
++<UE332> /xf4/x83 <Private Use>
++<UE333> /xf4/x84 <Private Use>
++<UE334> /xf4/x85 <Private Use>
++<UE335> /xf4/x86 <Private Use>
++<UE336> /xf4/x87 <Private Use>
++<UE337> /xf4/x88 <Private Use>
++<UE338> /xf4/x89 <Private Use>
++<UE339> /xf4/x8a <Private Use>
++<UE33A> /xf4/x8b <Private Use>
++<UE33B> /xf4/x8c <Private Use>
++<UE33C> /xf4/x8d <Private Use>
++<UE33D> /xf4/x8e <Private Use>
++<UE33E> /xf4/x8f <Private Use>
++<UE33F> /xf4/x90 <Private Use>
++<UE340> /xf4/x91 <Private Use>
++<UE341> /xf4/x92 <Private Use>
++<UE342> /xf4/x93 <Private Use>
++<UE343> /xf4/x94 <Private Use>
++<UE344> /xf4/x95 <Private Use>
++<UE345> /xf4/x96 <Private Use>
++<UE346> /xf4/x97 <Private Use>
++<UE347> /xf4/x98 <Private Use>
++<UE348> /xf4/x99 <Private Use>
++<UE349> /xf4/x9a <Private Use>
++<UE34A> /xf4/x9b <Private Use>
++<UE34B> /xf4/x9c <Private Use>
++<UE34C> /xf4/x9d <Private Use>
++<UE34D> /xf4/x9e <Private Use>
++<UE34E> /xf4/x9f <Private Use>
++<UE34F> /xf4/xa0 <Private Use>
++<UE350> /xf4/xa1 <Private Use>
++<UE351> /xf4/xa2 <Private Use>
++<UE352> /xf4/xa3 <Private Use>
++<UE353> /xf4/xa4 <Private Use>
++<UE354> /xf4/xa5 <Private Use>
++<UE355> /xf4/xa6 <Private Use>
++<UE356> /xf4/xa7 <Private Use>
++<UE357> /xf4/xa8 <Private Use>
++<UE358> /xf4/xa9 <Private Use>
++<UE359> /xf4/xaa <Private Use>
++<UE35A> /xf4/xab <Private Use>
++<UE35B> /xf4/xac <Private Use>
++<UE35C> /xf4/xad <Private Use>
++<UE35D> /xf4/xae <Private Use>
++<UE35E> /xf4/xaf <Private Use>
++<UE35F> /xf4/xb0 <Private Use>
++<UE360> /xf4/xb1 <Private Use>
++<UE361> /xf4/xb2 <Private Use>
++<UE362> /xf4/xb3 <Private Use>
++<UE363> /xf4/xb4 <Private Use>
++<UE364> /xf4/xb5 <Private Use>
++<UE365> /xf4/xb6 <Private Use>
++<UE366> /xf4/xb7 <Private Use>
++<UE367> /xf4/xb8 <Private Use>
++<UE368> /xf4/xb9 <Private Use>
++<UE369> /xf4/xba <Private Use>
++<UE36A> /xf4/xbb <Private Use>
++<UE36B> /xf4/xbc <Private Use>
++<UE36C> /xf4/xbd <Private Use>
++<UE36D> /xf4/xbe <Private Use>
++<UE36E> /xf4/xbf <Private Use>
++<UE36F> /xf4/xc0 <Private Use>
++<UE370> /xf4/xc1 <Private Use>
++<UE371> /xf4/xc2 <Private Use>
++<UE372> /xf4/xc3 <Private Use>
++<UE373> /xf4/xc4 <Private Use>
++<UE374> /xf4/xc5 <Private Use>
++<UE375> /xf4/xc6 <Private Use>
++<UE376> /xf4/xc7 <Private Use>
++<UE377> /xf4/xc8 <Private Use>
++<UE378> /xf4/xc9 <Private Use>
++<UE379> /xf4/xca <Private Use>
++<UE37A> /xf4/xcb <Private Use>
++<UE37B> /xf4/xcc <Private Use>
++<UE37C> /xf4/xcd <Private Use>
++<UE37D> /xf4/xce <Private Use>
++<UE37E> /xf4/xcf <Private Use>
++<UE37F> /xf4/xd0 <Private Use>
++<UE380> /xf4/xd1 <Private Use>
++<UE381> /xf4/xd2 <Private Use>
++<UE382> /xf4/xd3 <Private Use>
++<UE383> /xf4/xd4 <Private Use>
++<UE384> /xf4/xd5 <Private Use>
++<UE385> /xf4/xd6 <Private Use>
++<UE386> /xf4/xd7 <Private Use>
++<UE387> /xf4/xd8 <Private Use>
++<UE388> /xf4/xd9 <Private Use>
++<UE389> /xf4/xda <Private Use>
++<UE38A> /xf4/xdb <Private Use>
++<UE38B> /xf4/xdc <Private Use>
++<UE38C> /xf4/xdd <Private Use>
++<UE38D> /xf4/xde <Private Use>
++<UE38E> /xf4/xdf <Private Use>
++<UE38F> /xf4/xe0 <Private Use>
++<UE390> /xf4/xe1 <Private Use>
++<UE391> /xf4/xe2 <Private Use>
++<UE392> /xf4/xe3 <Private Use>
++<UE393> /xf4/xe4 <Private Use>
++<UE394> /xf4/xe5 <Private Use>
++<UE395> /xf4/xe6 <Private Use>
++<UE396> /xf4/xe7 <Private Use>
++<UE397> /xf4/xe8 <Private Use>
++<UE398> /xf4/xe9 <Private Use>
++<UE399> /xf4/xea <Private Use>
++<UE39A> /xf4/xeb <Private Use>
++<UE39B> /xf4/xec <Private Use>
++<UE39C> /xf4/xed <Private Use>
++<UE39D> /xf4/xee <Private Use>
++<UE39E> /xf4/xef <Private Use>
++<UE39F> /xf4/xf0 <Private Use>
++<UE3A0> /xf4/xf1 <Private Use>
++<UE3A1> /xf4/xf2 <Private Use>
++<UE3A2> /xf4/xf3 <Private Use>
++<UE3A3> /xf4/xf4 <Private Use>
++<UE3A4> /xf4/xf5 <Private Use>
++<UE3A5> /xf4/xf6 <Private Use>
++<UE3A6> /xf4/xf7 <Private Use>
++<UE3A7> /xf4/xf8 <Private Use>
++<UE3A8> /xf4/xf9 <Private Use>
++<UE3A9> /xf4/xfa <Private Use>
++<UE3AA> /xf4/xfb <Private Use>
++<UE3AB> /xf4/xfc <Private Use>
++<UE3AC> /xf5/x40 <Private Use>
++<UE3AD> /xf5/x41 <Private Use>
++<UE3AE> /xf5/x42 <Private Use>
++<UE3AF> /xf5/x43 <Private Use>
++<UE3B0> /xf5/x44 <Private Use>
++<UE3B1> /xf5/x45 <Private Use>
++<UE3B2> /xf5/x46 <Private Use>
++<UE3B3> /xf5/x47 <Private Use>
++<UE3B4> /xf5/x48 <Private Use>
++<UE3B5> /xf5/x49 <Private Use>
++<UE3B6> /xf5/x4a <Private Use>
++<UE3B7> /xf5/x4b <Private Use>
++<UE3B8> /xf5/x4c <Private Use>
++<UE3B9> /xf5/x4d <Private Use>
++<UE3BA> /xf5/x4e <Private Use>
++<UE3BB> /xf5/x4f <Private Use>
++<UE3BC> /xf5/x50 <Private Use>
++<UE3BD> /xf5/x51 <Private Use>
++<UE3BE> /xf5/x52 <Private Use>
++<UE3BF> /xf5/x53 <Private Use>
++<UE3C0> /xf5/x54 <Private Use>
++<UE3C1> /xf5/x55 <Private Use>
++<UE3C2> /xf5/x56 <Private Use>
++<UE3C3> /xf5/x57 <Private Use>
++<UE3C4> /xf5/x58 <Private Use>
++<UE3C5> /xf5/x59 <Private Use>
++<UE3C6> /xf5/x5a <Private Use>
++<UE3C7> /xf5/x5b <Private Use>
++<UE3C8> /xf5/x5c <Private Use>
++<UE3C9> /xf5/x5d <Private Use>
++<UE3CA> /xf5/x5e <Private Use>
++<UE3CB> /xf5/x5f <Private Use>
++<UE3CC> /xf5/x60 <Private Use>
++<UE3CD> /xf5/x61 <Private Use>
++<UE3CE> /xf5/x62 <Private Use>
++<UE3CF> /xf5/x63 <Private Use>
++<UE3D0> /xf5/x64 <Private Use>
++<UE3D1> /xf5/x65 <Private Use>
++<UE3D2> /xf5/x66 <Private Use>
++<UE3D3> /xf5/x67 <Private Use>
++<UE3D4> /xf5/x68 <Private Use>
++<UE3D5> /xf5/x69 <Private Use>
++<UE3D6> /xf5/x6a <Private Use>
++<UE3D7> /xf5/x6b <Private Use>
++<UE3D8> /xf5/x6c <Private Use>
++<UE3D9> /xf5/x6d <Private Use>
++<UE3DA> /xf5/x6e <Private Use>
++<UE3DB> /xf5/x6f <Private Use>
++<UE3DC> /xf5/x70 <Private Use>
++<UE3DD> /xf5/x71 <Private Use>
++<UE3DE> /xf5/x72 <Private Use>
++<UE3DF> /xf5/x73 <Private Use>
++<UE3E0> /xf5/x74 <Private Use>
++<UE3E1> /xf5/x75 <Private Use>
++<UE3E2> /xf5/x76 <Private Use>
++<UE3E3> /xf5/x77 <Private Use>
++<UE3E4> /xf5/x78 <Private Use>
++<UE3E5> /xf5/x79 <Private Use>
++<UE3E6> /xf5/x7a <Private Use>
++<UE3E7> /xf5/x7b <Private Use>
++<UE3E8> /xf5/x7c <Private Use>
++<UE3E9> /xf5/x7d <Private Use>
++<UE3EA> /xf5/x7e <Private Use>
++<UE3EB> /xf5/x80 <Private Use>
++<UE3EC> /xf5/x81 <Private Use>
++<UE3ED> /xf5/x82 <Private Use>
++<UE3EE> /xf5/x83 <Private Use>
++<UE3EF> /xf5/x84 <Private Use>
++<UE3F0> /xf5/x85 <Private Use>
++<UE3F1> /xf5/x86 <Private Use>
++<UE3F2> /xf5/x87 <Private Use>
++<UE3F3> /xf5/x88 <Private Use>
++<UE3F4> /xf5/x89 <Private Use>
++<UE3F5> /xf5/x8a <Private Use>
++<UE3F6> /xf5/x8b <Private Use>
++<UE3F7> /xf5/x8c <Private Use>
++<UE3F8> /xf5/x8d <Private Use>
++<UE3F9> /xf5/x8e <Private Use>
++<UE3FA> /xf5/x8f <Private Use>
++<UE3FB> /xf5/x90 <Private Use>
++<UE3FC> /xf5/x91 <Private Use>
++<UE3FD> /xf5/x92 <Private Use>
++<UE3FE> /xf5/x93 <Private Use>
++<UE3FF> /xf5/x94 <Private Use>
++<UE400> /xf5/x95 <Private Use>
++<UE401> /xf5/x96 <Private Use>
++<UE402> /xf5/x97 <Private Use>
++<UE403> /xf5/x98 <Private Use>
++<UE404> /xf5/x99 <Private Use>
++<UE405> /xf5/x9a <Private Use>
++<UE406> /xf5/x9b <Private Use>
++<UE407> /xf5/x9c <Private Use>
++<UE408> /xf5/x9d <Private Use>
++<UE409> /xf5/x9e <Private Use>
++<UE40A> /xf5/x9f <Private Use>
++<UE40B> /xf5/xa0 <Private Use>
++<UE40C> /xf5/xa1 <Private Use>
++<UE40D> /xf5/xa2 <Private Use>
++<UE40E> /xf5/xa3 <Private Use>
++<UE40F> /xf5/xa4 <Private Use>
++<UE410> /xf5/xa5 <Private Use>
++<UE411> /xf5/xa6 <Private Use>
++<UE412> /xf5/xa7 <Private Use>
++<UE413> /xf5/xa8 <Private Use>
++<UE414> /xf5/xa9 <Private Use>
++<UE415> /xf5/xaa <Private Use>
++<UE416> /xf5/xab <Private Use>
++<UE417> /xf5/xac <Private Use>
++<UE418> /xf5/xad <Private Use>
++<UE419> /xf5/xae <Private Use>
++<UE41A> /xf5/xaf <Private Use>
++<UE41B> /xf5/xb0 <Private Use>
++<UE41C> /xf5/xb1 <Private Use>
++<UE41D> /xf5/xb2 <Private Use>
++<UE41E> /xf5/xb3 <Private Use>
++<UE41F> /xf5/xb4 <Private Use>
++<UE420> /xf5/xb5 <Private Use>
++<UE421> /xf5/xb6 <Private Use>
++<UE422> /xf5/xb7 <Private Use>
++<UE423> /xf5/xb8 <Private Use>
++<UE424> /xf5/xb9 <Private Use>
++<UE425> /xf5/xba <Private Use>
++<UE426> /xf5/xbb <Private Use>
++<UE427> /xf5/xbc <Private Use>
++<UE428> /xf5/xbd <Private Use>
++<UE429> /xf5/xbe <Private Use>
++<UE42A> /xf5/xbf <Private Use>
++<UE42B> /xf5/xc0 <Private Use>
++<UE42C> /xf5/xc1 <Private Use>
++<UE42D> /xf5/xc2 <Private Use>
++<UE42E> /xf5/xc3 <Private Use>
++<UE42F> /xf5/xc4 <Private Use>
++<UE430> /xf5/xc5 <Private Use>
++<UE431> /xf5/xc6 <Private Use>
++<UE432> /xf5/xc7 <Private Use>
++<UE433> /xf5/xc8 <Private Use>
++<UE434> /xf5/xc9 <Private Use>
++<UE435> /xf5/xca <Private Use>
++<UE436> /xf5/xcb <Private Use>
++<UE437> /xf5/xcc <Private Use>
++<UE438> /xf5/xcd <Private Use>
++<UE439> /xf5/xce <Private Use>
++<UE43A> /xf5/xcf <Private Use>
++<UE43B> /xf5/xd0 <Private Use>
++<UE43C> /xf5/xd1 <Private Use>
++<UE43D> /xf5/xd2 <Private Use>
++<UE43E> /xf5/xd3 <Private Use>
++<UE43F> /xf5/xd4 <Private Use>
++<UE440> /xf5/xd5 <Private Use>
++<UE441> /xf5/xd6 <Private Use>
++<UE442> /xf5/xd7 <Private Use>
++<UE443> /xf5/xd8 <Private Use>
++<UE444> /xf5/xd9 <Private Use>
++<UE445> /xf5/xda <Private Use>
++<UE446> /xf5/xdb <Private Use>
++<UE447> /xf5/xdc <Private Use>
++<UE448> /xf5/xdd <Private Use>
++<UE449> /xf5/xde <Private Use>
++<UE44A> /xf5/xdf <Private Use>
++<UE44B> /xf5/xe0 <Private Use>
++<UE44C> /xf5/xe1 <Private Use>
++<UE44D> /xf5/xe2 <Private Use>
++<UE44E> /xf5/xe3 <Private Use>
++<UE44F> /xf5/xe4 <Private Use>
++<UE450> /xf5/xe5 <Private Use>
++<UE451> /xf5/xe6 <Private Use>
++<UE452> /xf5/xe7 <Private Use>
++<UE453> /xf5/xe8 <Private Use>
++<UE454> /xf5/xe9 <Private Use>
++<UE455> /xf5/xea <Private Use>
++<UE456> /xf5/xeb <Private Use>
++<UE457> /xf5/xec <Private Use>
++<UE458> /xf5/xed <Private Use>
++<UE459> /xf5/xee <Private Use>
++<UE45A> /xf5/xef <Private Use>
++<UE45B> /xf5/xf0 <Private Use>
++<UE45C> /xf5/xf1 <Private Use>
++<UE45D> /xf5/xf2 <Private Use>
++<UE45E> /xf5/xf3 <Private Use>
++<UE45F> /xf5/xf4 <Private Use>
++<UE460> /xf5/xf5 <Private Use>
++<UE461> /xf5/xf6 <Private Use>
++<UE462> /xf5/xf7 <Private Use>
++<UE463> /xf5/xf8 <Private Use>
++<UE464> /xf5/xf9 <Private Use>
++<UE465> /xf5/xfa <Private Use>
++<UE466> /xf5/xfb <Private Use>
++<UE467> /xf5/xfc <Private Use>
++<UE468> /xf6/x40 <Private Use>
++<UE469> /xf6/x41 <Private Use>
++<UE46A> /xf6/x42 <Private Use>
++<UE46B> /xf6/x43 <Private Use>
++<UE46C> /xf6/x44 <Private Use>
++<UE46D> /xf6/x45 <Private Use>
++<UE46E> /xf6/x46 <Private Use>
++<UE46F> /xf6/x47 <Private Use>
++<UE470> /xf6/x48 <Private Use>
++<UE471> /xf6/x49 <Private Use>
++<UE472> /xf6/x4a <Private Use>
++<UE473> /xf6/x4b <Private Use>
++<UE474> /xf6/x4c <Private Use>
++<UE475> /xf6/x4d <Private Use>
++<UE476> /xf6/x4e <Private Use>
++<UE477> /xf6/x4f <Private Use>
++<UE478> /xf6/x50 <Private Use>
++<UE479> /xf6/x51 <Private Use>
++<UE47A> /xf6/x52 <Private Use>
++<UE47B> /xf6/x53 <Private Use>
++<UE47C> /xf6/x54 <Private Use>
++<UE47D> /xf6/x55 <Private Use>
++<UE47E> /xf6/x56 <Private Use>
++<UE47F> /xf6/x57 <Private Use>
++<UE480> /xf6/x58 <Private Use>
++<UE481> /xf6/x59 <Private Use>
++<UE482> /xf6/x5a <Private Use>
++<UE483> /xf6/x5b <Private Use>
++<UE484> /xf6/x5c <Private Use>
++<UE485> /xf6/x5d <Private Use>
++<UE486> /xf6/x5e <Private Use>
++<UE487> /xf6/x5f <Private Use>
++<UE488> /xf6/x60 <Private Use>
++<UE489> /xf6/x61 <Private Use>
++<UE48A> /xf6/x62 <Private Use>
++<UE48B> /xf6/x63 <Private Use>
++<UE48C> /xf6/x64 <Private Use>
++<UE48D> /xf6/x65 <Private Use>
++<UE48E> /xf6/x66 <Private Use>
++<UE48F> /xf6/x67 <Private Use>
++<UE490> /xf6/x68 <Private Use>
++<UE491> /xf6/x69 <Private Use>
++<UE492> /xf6/x6a <Private Use>
++<UE493> /xf6/x6b <Private Use>
++<UE494> /xf6/x6c <Private Use>
++<UE495> /xf6/x6d <Private Use>
++<UE496> /xf6/x6e <Private Use>
++<UE497> /xf6/x6f <Private Use>
++<UE498> /xf6/x70 <Private Use>
++<UE499> /xf6/x71 <Private Use>
++<UE49A> /xf6/x72 <Private Use>
++<UE49B> /xf6/x73 <Private Use>
++<UE49C> /xf6/x74 <Private Use>
++<UE49D> /xf6/x75 <Private Use>
++<UE49E> /xf6/x76 <Private Use>
++<UE49F> /xf6/x77 <Private Use>
++<UE4A0> /xf6/x78 <Private Use>
++<UE4A1> /xf6/x79 <Private Use>
++<UE4A2> /xf6/x7a <Private Use>
++<UE4A3> /xf6/x7b <Private Use>
++<UE4A4> /xf6/x7c <Private Use>
++<UE4A5> /xf6/x7d <Private Use>
++<UE4A6> /xf6/x7e <Private Use>
++<UE4A7> /xf6/x80 <Private Use>
++<UE4A8> /xf6/x81 <Private Use>
++<UE4A9> /xf6/x82 <Private Use>
++<UE4AA> /xf6/x83 <Private Use>
++<UE4AB> /xf6/x84 <Private Use>
++<UE4AC> /xf6/x85 <Private Use>
++<UE4AD> /xf6/x86 <Private Use>
++<UE4AE> /xf6/x87 <Private Use>
++<UE4AF> /xf6/x88 <Private Use>
++<UE4B0> /xf6/x89 <Private Use>
++<UE4B1> /xf6/x8a <Private Use>
++<UE4B2> /xf6/x8b <Private Use>
++<UE4B3> /xf6/x8c <Private Use>
++<UE4B4> /xf6/x8d <Private Use>
++<UE4B5> /xf6/x8e <Private Use>
++<UE4B6> /xf6/x8f <Private Use>
++<UE4B7> /xf6/x90 <Private Use>
++<UE4B8> /xf6/x91 <Private Use>
++<UE4B9> /xf6/x92 <Private Use>
++<UE4BA> /xf6/x93 <Private Use>
++<UE4BB> /xf6/x94 <Private Use>
++<UE4BC> /xf6/x95 <Private Use>
++<UE4BD> /xf6/x96 <Private Use>
++<UE4BE> /xf6/x97 <Private Use>
++<UE4BF> /xf6/x98 <Private Use>
++<UE4C0> /xf6/x99 <Private Use>
++<UE4C1> /xf6/x9a <Private Use>
++<UE4C2> /xf6/x9b <Private Use>
++<UE4C3> /xf6/x9c <Private Use>
++<UE4C4> /xf6/x9d <Private Use>
++<UE4C5> /xf6/x9e <Private Use>
++<UE4C6> /xf6/x9f <Private Use>
++<UE4C7> /xf6/xa0 <Private Use>
++<UE4C8> /xf6/xa1 <Private Use>
++<UE4C9> /xf6/xa2 <Private Use>
++<UE4CA> /xf6/xa3 <Private Use>
++<UE4CB> /xf6/xa4 <Private Use>
++<UE4CC> /xf6/xa5 <Private Use>
++<UE4CD> /xf6/xa6 <Private Use>
++<UE4CE> /xf6/xa7 <Private Use>
++<UE4CF> /xf6/xa8 <Private Use>
++<UE4D0> /xf6/xa9 <Private Use>
++<UE4D1> /xf6/xaa <Private Use>
++<UE4D2> /xf6/xab <Private Use>
++<UE4D3> /xf6/xac <Private Use>
++<UE4D4> /xf6/xad <Private Use>
++<UE4D5> /xf6/xae <Private Use>
++<UE4D6> /xf6/xaf <Private Use>
++<UE4D7> /xf6/xb0 <Private Use>
++<UE4D8> /xf6/xb1 <Private Use>
++<UE4D9> /xf6/xb2 <Private Use>
++<UE4DA> /xf6/xb3 <Private Use>
++<UE4DB> /xf6/xb4 <Private Use>
++<UE4DC> /xf6/xb5 <Private Use>
++<UE4DD> /xf6/xb6 <Private Use>
++<UE4DE> /xf6/xb7 <Private Use>
++<UE4DF> /xf6/xb8 <Private Use>
++<UE4E0> /xf6/xb9 <Private Use>
++<UE4E1> /xf6/xba <Private Use>
++<UE4E2> /xf6/xbb <Private Use>
++<UE4E3> /xf6/xbc <Private Use>
++<UE4E4> /xf6/xbd <Private Use>
++<UE4E5> /xf6/xbe <Private Use>
++<UE4E6> /xf6/xbf <Private Use>
++<UE4E7> /xf6/xc0 <Private Use>
++<UE4E8> /xf6/xc1 <Private Use>
++<UE4E9> /xf6/xc2 <Private Use>
++<UE4EA> /xf6/xc3 <Private Use>
++<UE4EB> /xf6/xc4 <Private Use>
++<UE4EC> /xf6/xc5 <Private Use>
++<UE4ED> /xf6/xc6 <Private Use>
++<UE4EE> /xf6/xc7 <Private Use>
++<UE4EF> /xf6/xc8 <Private Use>
++<UE4F0> /xf6/xc9 <Private Use>
++<UE4F1> /xf6/xca <Private Use>
++<UE4F2> /xf6/xcb <Private Use>
++<UE4F3> /xf6/xcc <Private Use>
++<UE4F4> /xf6/xcd <Private Use>
++<UE4F5> /xf6/xce <Private Use>
++<UE4F6> /xf6/xcf <Private Use>
++<UE4F7> /xf6/xd0 <Private Use>
++<UE4F8> /xf6/xd1 <Private Use>
++<UE4F9> /xf6/xd2 <Private Use>
++<UE4FA> /xf6/xd3 <Private Use>
++<UE4FB> /xf6/xd4 <Private Use>
++<UE4FC> /xf6/xd5 <Private Use>
++<UE4FD> /xf6/xd6 <Private Use>
++<UE4FE> /xf6/xd7 <Private Use>
++<UE4FF> /xf6/xd8 <Private Use>
++<UE500> /xf6/xd9 <Private Use>
++<UE501> /xf6/xda <Private Use>
++<UE502> /xf6/xdb <Private Use>
++<UE503> /xf6/xdc <Private Use>
++<UE504> /xf6/xdd <Private Use>
++<UE505> /xf6/xde <Private Use>
++<UE506> /xf6/xdf <Private Use>
++<UE507> /xf6/xe0 <Private Use>
++<UE508> /xf6/xe1 <Private Use>
++<UE509> /xf6/xe2 <Private Use>
++<UE50A> /xf6/xe3 <Private Use>
++<UE50B> /xf6/xe4 <Private Use>
++<UE50C> /xf6/xe5 <Private Use>
++<UE50D> /xf6/xe6 <Private Use>
++<UE50E> /xf6/xe7 <Private Use>
++<UE50F> /xf6/xe8 <Private Use>
++<UE510> /xf6/xe9 <Private Use>
++<UE511> /xf6/xea <Private Use>
++<UE512> /xf6/xeb <Private Use>
++<UE513> /xf6/xec <Private Use>
++<UE514> /xf6/xed <Private Use>
++<UE515> /xf6/xee <Private Use>
++<UE516> /xf6/xef <Private Use>
++<UE517> /xf6/xf0 <Private Use>
++<UE518> /xf6/xf1 <Private Use>
++<UE519> /xf6/xf2 <Private Use>
++<UE51A> /xf6/xf3 <Private Use>
++<UE51B> /xf6/xf4 <Private Use>
++<UE51C> /xf6/xf5 <Private Use>
++<UE51D> /xf6/xf6 <Private Use>
++<UE51E> /xf6/xf7 <Private Use>
++<UE51F> /xf6/xf8 <Private Use>
++<UE520> /xf6/xf9 <Private Use>
++<UE521> /xf6/xfa <Private Use>
++<UE522> /xf6/xfb <Private Use>
++<UE523> /xf6/xfc <Private Use>
++<UE524> /xf7/x40 <Private Use>
++<UE525> /xf7/x41 <Private Use>
++<UE526> /xf7/x42 <Private Use>
++<UE527> /xf7/x43 <Private Use>
++<UE528> /xf7/x44 <Private Use>
++<UE529> /xf7/x45 <Private Use>
++<UE52A> /xf7/x46 <Private Use>
++<UE52B> /xf7/x47 <Private Use>
++<UE52C> /xf7/x48 <Private Use>
++<UE52D> /xf7/x49 <Private Use>
++<UE52E> /xf7/x4a <Private Use>
++<UE52F> /xf7/x4b <Private Use>
++<UE530> /xf7/x4c <Private Use>
++<UE531> /xf7/x4d <Private Use>
++<UE532> /xf7/x4e <Private Use>
++<UE533> /xf7/x4f <Private Use>
++<UE534> /xf7/x50 <Private Use>
++<UE535> /xf7/x51 <Private Use>
++<UE536> /xf7/x52 <Private Use>
++<UE537> /xf7/x53 <Private Use>
++<UE538> /xf7/x54 <Private Use>
++<UE539> /xf7/x55 <Private Use>
++<UE53A> /xf7/x56 <Private Use>
++<UE53B> /xf7/x57 <Private Use>
++<UE53C> /xf7/x58 <Private Use>
++<UE53D> /xf7/x59 <Private Use>
++<UE53E> /xf7/x5a <Private Use>
++<UE53F> /xf7/x5b <Private Use>
++<UE540> /xf7/x5c <Private Use>
++<UE541> /xf7/x5d <Private Use>
++<UE542> /xf7/x5e <Private Use>
++<UE543> /xf7/x5f <Private Use>
++<UE544> /xf7/x60 <Private Use>
++<UE545> /xf7/x61 <Private Use>
++<UE546> /xf7/x62 <Private Use>
++<UE547> /xf7/x63 <Private Use>
++<UE548> /xf7/x64 <Private Use>
++<UE549> /xf7/x65 <Private Use>
++<UE54A> /xf7/x66 <Private Use>
++<UE54B> /xf7/x67 <Private Use>
++<UE54C> /xf7/x68 <Private Use>
++<UE54D> /xf7/x69 <Private Use>
++<UE54E> /xf7/x6a <Private Use>
++<UE54F> /xf7/x6b <Private Use>
++<UE550> /xf7/x6c <Private Use>
++<UE551> /xf7/x6d <Private Use>
++<UE552> /xf7/x6e <Private Use>
++<UE553> /xf7/x6f <Private Use>
++<UE554> /xf7/x70 <Private Use>
++<UE555> /xf7/x71 <Private Use>
++<UE556> /xf7/x72 <Private Use>
++<UE557> /xf7/x73 <Private Use>
++<UE558> /xf7/x74 <Private Use>
++<UE559> /xf7/x75 <Private Use>
++<UE55A> /xf7/x76 <Private Use>
++<UE55B> /xf7/x77 <Private Use>
++<UE55C> /xf7/x78 <Private Use>
++<UE55D> /xf7/x79 <Private Use>
++<UE55E> /xf7/x7a <Private Use>
++<UE55F> /xf7/x7b <Private Use>
++<UE560> /xf7/x7c <Private Use>
++<UE561> /xf7/x7d <Private Use>
++<UE562> /xf7/x7e <Private Use>
++<UE563> /xf7/x80 <Private Use>
++<UE564> /xf7/x81 <Private Use>
++<UE565> /xf7/x82 <Private Use>
++<UE566> /xf7/x83 <Private Use>
++<UE567> /xf7/x84 <Private Use>
++<UE568> /xf7/x85 <Private Use>
++<UE569> /xf7/x86 <Private Use>
++<UE56A> /xf7/x87 <Private Use>
++<UE56B> /xf7/x88 <Private Use>
++<UE56C> /xf7/x89 <Private Use>
++<UE56D> /xf7/x8a <Private Use>
++<UE56E> /xf7/x8b <Private Use>
++<UE56F> /xf7/x8c <Private Use>
++<UE570> /xf7/x8d <Private Use>
++<UE571> /xf7/x8e <Private Use>
++<UE572> /xf7/x8f <Private Use>
++<UE573> /xf7/x90 <Private Use>
++<UE574> /xf7/x91 <Private Use>
++<UE575> /xf7/x92 <Private Use>
++<UE576> /xf7/x93 <Private Use>
++<UE577> /xf7/x94 <Private Use>
++<UE578> /xf7/x95 <Private Use>
++<UE579> /xf7/x96 <Private Use>
++<UE57A> /xf7/x97 <Private Use>
++<UE57B> /xf7/x98 <Private Use>
++<UE57C> /xf7/x99 <Private Use>
++<UE57D> /xf7/x9a <Private Use>
++<UE57E> /xf7/x9b <Private Use>
++<UE57F> /xf7/x9c <Private Use>
++<UE580> /xf7/x9d <Private Use>
++<UE581> /xf7/x9e <Private Use>
++<UE582> /xf7/x9f <Private Use>
++<UE583> /xf7/xa0 <Private Use>
++<UE584> /xf7/xa1 <Private Use>
++<UE585> /xf7/xa2 <Private Use>
++<UE586> /xf7/xa3 <Private Use>
++<UE587> /xf7/xa4 <Private Use>
++<UE588> /xf7/xa5 <Private Use>
++<UE589> /xf7/xa6 <Private Use>
++<UE58A> /xf7/xa7 <Private Use>
++<UE58B> /xf7/xa8 <Private Use>
++<UE58C> /xf7/xa9 <Private Use>
++<UE58D> /xf7/xaa <Private Use>
++<UE58E> /xf7/xab <Private Use>
++<UE58F> /xf7/xac <Private Use>
++<UE590> /xf7/xad <Private Use>
++<UE591> /xf7/xae <Private Use>
++<UE592> /xf7/xaf <Private Use>
++<UE593> /xf7/xb0 <Private Use>
++<UE594> /xf7/xb1 <Private Use>
++<UE595> /xf7/xb2 <Private Use>
++<UE596> /xf7/xb3 <Private Use>
++<UE597> /xf7/xb4 <Private Use>
++<UE598> /xf7/xb5 <Private Use>
++<UE599> /xf7/xb6 <Private Use>
++<UE59A> /xf7/xb7 <Private Use>
++<UE59B> /xf7/xb8 <Private Use>
++<UE59C> /xf7/xb9 <Private Use>
++<UE59D> /xf7/xba <Private Use>
++<UE59E> /xf7/xbb <Private Use>
++<UE59F> /xf7/xbc <Private Use>
++<UE5A0> /xf7/xbd <Private Use>
++<UE5A1> /xf7/xbe <Private Use>
++<UE5A2> /xf7/xbf <Private Use>
++<UE5A3> /xf7/xc0 <Private Use>
++<UE5A4> /xf7/xc1 <Private Use>
++<UE5A5> /xf7/xc2 <Private Use>
++<UE5A6> /xf7/xc3 <Private Use>
++<UE5A7> /xf7/xc4 <Private Use>
++<UE5A8> /xf7/xc5 <Private Use>
++<UE5A9> /xf7/xc6 <Private Use>
++<UE5AA> /xf7/xc7 <Private Use>
++<UE5AB> /xf7/xc8 <Private Use>
++<UE5AC> /xf7/xc9 <Private Use>
++<UE5AD> /xf7/xca <Private Use>
++<UE5AE> /xf7/xcb <Private Use>
++<UE5AF> /xf7/xcc <Private Use>
++<UE5B0> /xf7/xcd <Private Use>
++<UE5B1> /xf7/xce <Private Use>
++<UE5B2> /xf7/xcf <Private Use>
++<UE5B3> /xf7/xd0 <Private Use>
++<UE5B4> /xf7/xd1 <Private Use>
++<UE5B5> /xf7/xd2 <Private Use>
++<UE5B6> /xf7/xd3 <Private Use>
++<UE5B7> /xf7/xd4 <Private Use>
++<UE5B8> /xf7/xd5 <Private Use>
++<UE5B9> /xf7/xd6 <Private Use>
++<UE5BA> /xf7/xd7 <Private Use>
++<UE5BB> /xf7/xd8 <Private Use>
++<UE5BC> /xf7/xd9 <Private Use>
++<UE5BD> /xf7/xda <Private Use>
++<UE5BE> /xf7/xdb <Private Use>
++<UE5BF> /xf7/xdc <Private Use>
++<UE5C0> /xf7/xdd <Private Use>
++<UE5C1> /xf7/xde <Private Use>
++<UE5C2> /xf7/xdf <Private Use>
++<UE5C3> /xf7/xe0 <Private Use>
++<UE5C4> /xf7/xe1 <Private Use>
++<UE5C5> /xf7/xe2 <Private Use>
++<UE5C6> /xf7/xe3 <Private Use>
++<UE5C7> /xf7/xe4 <Private Use>
++<UE5C8> /xf7/xe5 <Private Use>
++<UE5C9> /xf7/xe6 <Private Use>
++<UE5CA> /xf7/xe7 <Private Use>
++<UE5CB> /xf7/xe8 <Private Use>
++<UE5CC> /xf7/xe9 <Private Use>
++<UE5CD> /xf7/xea <Private Use>
++<UE5CE> /xf7/xeb <Private Use>
++<UE5CF> /xf7/xec <Private Use>
++<UE5D0> /xf7/xed <Private Use>
++<UE5D1> /xf7/xee <Private Use>
++<UE5D2> /xf7/xef <Private Use>
++<UE5D3> /xf7/xf0 <Private Use>
++<UE5D4> /xf7/xf1 <Private Use>
++<UE5D5> /xf7/xf2 <Private Use>
++<UE5D6> /xf7/xf3 <Private Use>
++<UE5D7> /xf7/xf4 <Private Use>
++<UE5D8> /xf7/xf5 <Private Use>
++<UE5D9> /xf7/xf6 <Private Use>
++<UE5DA> /xf7/xf7 <Private Use>
++<UE5DB> /xf7/xf8 <Private Use>
++<UE5DC> /xf7/xf9 <Private Use>
++<UE5DD> /xf7/xfa <Private Use>
++<UE5DE> /xf7/xfb <Private Use>
++<UE5DF> /xf7/xfc <Private Use>
++<UE5E0> /xf8/x40 <Private Use>
++<UE5E1> /xf8/x41 <Private Use>
++<UE5E2> /xf8/x42 <Private Use>
++<UE5E3> /xf8/x43 <Private Use>
++<UE5E4> /xf8/x44 <Private Use>
++<UE5E5> /xf8/x45 <Private Use>
++<UE5E6> /xf8/x46 <Private Use>
++<UE5E7> /xf8/x47 <Private Use>
++<UE5E8> /xf8/x48 <Private Use>
++<UE5E9> /xf8/x49 <Private Use>
++<UE5EA> /xf8/x4a <Private Use>
++<UE5EB> /xf8/x4b <Private Use>
++<UE5EC> /xf8/x4c <Private Use>
++<UE5ED> /xf8/x4d <Private Use>
++<UE5EE> /xf8/x4e <Private Use>
++<UE5EF> /xf8/x4f <Private Use>
++<UE5F0> /xf8/x50 <Private Use>
++<UE5F1> /xf8/x51 <Private Use>
++<UE5F2> /xf8/x52 <Private Use>
++<UE5F3> /xf8/x53 <Private Use>
++<UE5F4> /xf8/x54 <Private Use>
++<UE5F5> /xf8/x55 <Private Use>
++<UE5F6> /xf8/x56 <Private Use>
++<UE5F7> /xf8/x57 <Private Use>
++<UE5F8> /xf8/x58 <Private Use>
++<UE5F9> /xf8/x59 <Private Use>
++<UE5FA> /xf8/x5a <Private Use>
++<UE5FB> /xf8/x5b <Private Use>
++<UE5FC> /xf8/x5c <Private Use>
++<UE5FD> /xf8/x5d <Private Use>
++<UE5FE> /xf8/x5e <Private Use>
++<UE5FF> /xf8/x5f <Private Use>
++<UE600> /xf8/x60 <Private Use>
++<UE601> /xf8/x61 <Private Use>
++<UE602> /xf8/x62 <Private Use>
++<UE603> /xf8/x63 <Private Use>
++<UE604> /xf8/x64 <Private Use>
++<UE605> /xf8/x65 <Private Use>
++<UE606> /xf8/x66 <Private Use>
++<UE607> /xf8/x67 <Private Use>
++<UE608> /xf8/x68 <Private Use>
++<UE609> /xf8/x69 <Private Use>
++<UE60A> /xf8/x6a <Private Use>
++<UE60B> /xf8/x6b <Private Use>
++<UE60C> /xf8/x6c <Private Use>
++<UE60D> /xf8/x6d <Private Use>
++<UE60E> /xf8/x6e <Private Use>
++<UE60F> /xf8/x6f <Private Use>
++<UE610> /xf8/x70 <Private Use>
++<UE611> /xf8/x71 <Private Use>
++<UE612> /xf8/x72 <Private Use>
++<UE613> /xf8/x73 <Private Use>
++<UE614> /xf8/x74 <Private Use>
++<UE615> /xf8/x75 <Private Use>
++<UE616> /xf8/x76 <Private Use>
++<UE617> /xf8/x77 <Private Use>
++<UE618> /xf8/x78 <Private Use>
++<UE619> /xf8/x79 <Private Use>
++<UE61A> /xf8/x7a <Private Use>
++<UE61B> /xf8/x7b <Private Use>
++<UE61C> /xf8/x7c <Private Use>
++<UE61D> /xf8/x7d <Private Use>
++<UE61E> /xf8/x7e <Private Use>
++<UE61F> /xf8/x80 <Private Use>
++<UE620> /xf8/x81 <Private Use>
++<UE621> /xf8/x82 <Private Use>
++<UE622> /xf8/x83 <Private Use>
++<UE623> /xf8/x84 <Private Use>
++<UE624> /xf8/x85 <Private Use>
++<UE625> /xf8/x86 <Private Use>
++<UE626> /xf8/x87 <Private Use>
++<UE627> /xf8/x88 <Private Use>
++<UE628> /xf8/x89 <Private Use>
++<UE629> /xf8/x8a <Private Use>
++<UE62A> /xf8/x8b <Private Use>
++<UE62B> /xf8/x8c <Private Use>
++<UE62C> /xf8/x8d <Private Use>
++<UE62D> /xf8/x8e <Private Use>
++<UE62E> /xf8/x8f <Private Use>
++<UE62F> /xf8/x90 <Private Use>
++<UE630> /xf8/x91 <Private Use>
++<UE631> /xf8/x92 <Private Use>
++<UE632> /xf8/x93 <Private Use>
++<UE633> /xf8/x94 <Private Use>
++<UE634> /xf8/x95 <Private Use>
++<UE635> /xf8/x96 <Private Use>
++<UE636> /xf8/x97 <Private Use>
++<UE637> /xf8/x98 <Private Use>
++<UE638> /xf8/x99 <Private Use>
++<UE639> /xf8/x9a <Private Use>
++<UE63A> /xf8/x9b <Private Use>
++<UE63B> /xf8/x9c <Private Use>
++<UE63C> /xf8/x9d <Private Use>
++<UE63D> /xf8/x9e <Private Use>
++<UE63E> /xf8/x9f <Private Use>
++<UE63F> /xf8/xa0 <Private Use>
++<UE640> /xf8/xa1 <Private Use>
++<UE641> /xf8/xa2 <Private Use>
++<UE642> /xf8/xa3 <Private Use>
++<UE643> /xf8/xa4 <Private Use>
++<UE644> /xf8/xa5 <Private Use>
++<UE645> /xf8/xa6 <Private Use>
++<UE646> /xf8/xa7 <Private Use>
++<UE647> /xf8/xa8 <Private Use>
++<UE648> /xf8/xa9 <Private Use>
++<UE649> /xf8/xaa <Private Use>
++<UE64A> /xf8/xab <Private Use>
++<UE64B> /xf8/xac <Private Use>
++<UE64C> /xf8/xad <Private Use>
++<UE64D> /xf8/xae <Private Use>
++<UE64E> /xf8/xaf <Private Use>
++<UE64F> /xf8/xb0 <Private Use>
++<UE650> /xf8/xb1 <Private Use>
++<UE651> /xf8/xb2 <Private Use>
++<UE652> /xf8/xb3 <Private Use>
++<UE653> /xf8/xb4 <Private Use>
++<UE654> /xf8/xb5 <Private Use>
++<UE655> /xf8/xb6 <Private Use>
++<UE656> /xf8/xb7 <Private Use>
++<UE657> /xf8/xb8 <Private Use>
++<UE658> /xf8/xb9 <Private Use>
++<UE659> /xf8/xba <Private Use>
++<UE65A> /xf8/xbb <Private Use>
++<UE65B> /xf8/xbc <Private Use>
++<UE65C> /xf8/xbd <Private Use>
++<UE65D> /xf8/xbe <Private Use>
++<UE65E> /xf8/xbf <Private Use>
++<UE65F> /xf8/xc0 <Private Use>
++<UE660> /xf8/xc1 <Private Use>
++<UE661> /xf8/xc2 <Private Use>
++<UE662> /xf8/xc3 <Private Use>
++<UE663> /xf8/xc4 <Private Use>
++<UE664> /xf8/xc5 <Private Use>
++<UE665> /xf8/xc6 <Private Use>
++<UE666> /xf8/xc7 <Private Use>
++<UE667> /xf8/xc8 <Private Use>
++<UE668> /xf8/xc9 <Private Use>
++<UE669> /xf8/xca <Private Use>
++<UE66A> /xf8/xcb <Private Use>
++<UE66B> /xf8/xcc <Private Use>
++<UE66C> /xf8/xcd <Private Use>
++<UE66D> /xf8/xce <Private Use>
++<UE66E> /xf8/xcf <Private Use>
++<UE66F> /xf8/xd0 <Private Use>
++<UE670> /xf8/xd1 <Private Use>
++<UE671> /xf8/xd2 <Private Use>
++<UE672> /xf8/xd3 <Private Use>
++<UE673> /xf8/xd4 <Private Use>
++<UE674> /xf8/xd5 <Private Use>
++<UE675> /xf8/xd6 <Private Use>
++<UE676> /xf8/xd7 <Private Use>
++<UE677> /xf8/xd8 <Private Use>
++<UE678> /xf8/xd9 <Private Use>
++<UE679> /xf8/xda <Private Use>
++<UE67A> /xf8/xdb <Private Use>
++<UE67B> /xf8/xdc <Private Use>
++<UE67C> /xf8/xdd <Private Use>
++<UE67D> /xf8/xde <Private Use>
++<UE67E> /xf8/xdf <Private Use>
++<UE67F> /xf8/xe0 <Private Use>
++<UE680> /xf8/xe1 <Private Use>
++<UE681> /xf8/xe2 <Private Use>
++<UE682> /xf8/xe3 <Private Use>
++<UE683> /xf8/xe4 <Private Use>
++<UE684> /xf8/xe5 <Private Use>
++<UE685> /xf8/xe6 <Private Use>
++<UE686> /xf8/xe7 <Private Use>
++<UE687> /xf8/xe8 <Private Use>
++<UE688> /xf8/xe9 <Private Use>
++<UE689> /xf8/xea <Private Use>
++<UE68A> /xf8/xeb <Private Use>
++<UE68B> /xf8/xec <Private Use>
++<UE68C> /xf8/xed <Private Use>
++<UE68D> /xf8/xee <Private Use>
++<UE68E> /xf8/xef <Private Use>
++<UE68F> /xf8/xf0 <Private Use>
++<UE690> /xf8/xf1 <Private Use>
++<UE691> /xf8/xf2 <Private Use>
++<UE692> /xf8/xf3 <Private Use>
++<UE693> /xf8/xf4 <Private Use>
++<UE694> /xf8/xf5 <Private Use>
++<UE695> /xf8/xf6 <Private Use>
++<UE696> /xf8/xf7 <Private Use>
++<UE697> /xf8/xf8 <Private Use>
++<UE698> /xf8/xf9 <Private Use>
++<UE699> /xf8/xfa <Private Use>
++<UE69A> /xf8/xfb <Private Use>
++<UE69B> /xf8/xfc <Private Use>
++<UE69C> /xf9/x40 <Private Use>
++<UE69D> /xf9/x41 <Private Use>
++<UE69E> /xf9/x42 <Private Use>
++<UE69F> /xf9/x43 <Private Use>
++<UE6A0> /xf9/x44 <Private Use>
++<UE6A1> /xf9/x45 <Private Use>
++<UE6A2> /xf9/x46 <Private Use>
++<UE6A3> /xf9/x47 <Private Use>
++<UE6A4> /xf9/x48 <Private Use>
++<UE6A5> /xf9/x49 <Private Use>
++<UE6A6> /xf9/x4a <Private Use>
++<UE6A7> /xf9/x4b <Private Use>
++<UE6A8> /xf9/x4c <Private Use>
++<UE6A9> /xf9/x4d <Private Use>
++<UE6AA> /xf9/x4e <Private Use>
++<UE6AB> /xf9/x4f <Private Use>
++<UE6AC> /xf9/x50 <Private Use>
++<UE6AD> /xf9/x51 <Private Use>
++<UE6AE> /xf9/x52 <Private Use>
++<UE6AF> /xf9/x53 <Private Use>
++<UE6B0> /xf9/x54 <Private Use>
++<UE6B1> /xf9/x55 <Private Use>
++<UE6B2> /xf9/x56 <Private Use>
++<UE6B3> /xf9/x57 <Private Use>
++<UE6B4> /xf9/x58 <Private Use>
++<UE6B5> /xf9/x59 <Private Use>
++<UE6B6> /xf9/x5a <Private Use>
++<UE6B7> /xf9/x5b <Private Use>
++<UE6B8> /xf9/x5c <Private Use>
++<UE6B9> /xf9/x5d <Private Use>
++<UE6BA> /xf9/x5e <Private Use>
++<UE6BB> /xf9/x5f <Private Use>
++<UE6BC> /xf9/x60 <Private Use>
++<UE6BD> /xf9/x61 <Private Use>
++<UE6BE> /xf9/x62 <Private Use>
++<UE6BF> /xf9/x63 <Private Use>
++<UE6C0> /xf9/x64 <Private Use>
++<UE6C1> /xf9/x65 <Private Use>
++<UE6C2> /xf9/x66 <Private Use>
++<UE6C3> /xf9/x67 <Private Use>
++<UE6C4> /xf9/x68 <Private Use>
++<UE6C5> /xf9/x69 <Private Use>
++<UE6C6> /xf9/x6a <Private Use>
++<UE6C7> /xf9/x6b <Private Use>
++<UE6C8> /xf9/x6c <Private Use>
++<UE6C9> /xf9/x6d <Private Use>
++<UE6CA> /xf9/x6e <Private Use>
++<UE6CB> /xf9/x6f <Private Use>
++<UE6CC> /xf9/x70 <Private Use>
++<UE6CD> /xf9/x71 <Private Use>
++<UE6CE> /xf9/x72 <Private Use>
++<UE6CF> /xf9/x73 <Private Use>
++<UE6D0> /xf9/x74 <Private Use>
++<UE6D1> /xf9/x75 <Private Use>
++<UE6D2> /xf9/x76 <Private Use>
++<UE6D3> /xf9/x77 <Private Use>
++<UE6D4> /xf9/x78 <Private Use>
++<UE6D5> /xf9/x79 <Private Use>
++<UE6D6> /xf9/x7a <Private Use>
++<UE6D7> /xf9/x7b <Private Use>
++<UE6D8> /xf9/x7c <Private Use>
++<UE6D9> /xf9/x7d <Private Use>
++<UE6DA> /xf9/x7e <Private Use>
++<UE6DB> /xf9/x80 <Private Use>
++<UE6DC> /xf9/x81 <Private Use>
++<UE6DD> /xf9/x82 <Private Use>
++<UE6DE> /xf9/x83 <Private Use>
++<UE6DF> /xf9/x84 <Private Use>
++<UE6E0> /xf9/x85 <Private Use>
++<UE6E1> /xf9/x86 <Private Use>
++<UE6E2> /xf9/x87 <Private Use>
++<UE6E3> /xf9/x88 <Private Use>
++<UE6E4> /xf9/x89 <Private Use>
++<UE6E5> /xf9/x8a <Private Use>
++<UE6E6> /xf9/x8b <Private Use>
++<UE6E7> /xf9/x8c <Private Use>
++<UE6E8> /xf9/x8d <Private Use>
++<UE6E9> /xf9/x8e <Private Use>
++<UE6EA> /xf9/x8f <Private Use>
++<UE6EB> /xf9/x90 <Private Use>
++<UE6EC> /xf9/x91 <Private Use>
++<UE6ED> /xf9/x92 <Private Use>
++<UE6EE> /xf9/x93 <Private Use>
++<UE6EF> /xf9/x94 <Private Use>
++<UE6F0> /xf9/x95 <Private Use>
++<UE6F1> /xf9/x96 <Private Use>
++<UE6F2> /xf9/x97 <Private Use>
++<UE6F3> /xf9/x98 <Private Use>
++<UE6F4> /xf9/x99 <Private Use>
++<UE6F5> /xf9/x9a <Private Use>
++<UE6F6> /xf9/x9b <Private Use>
++<UE6F7> /xf9/x9c <Private Use>
++<UE6F8> /xf9/x9d <Private Use>
++<UE6F9> /xf9/x9e <Private Use>
++<UE6FA> /xf9/x9f <Private Use>
++<UE6FB> /xf9/xa0 <Private Use>
++<UE6FC> /xf9/xa1 <Private Use>
++<UE6FD> /xf9/xa2 <Private Use>
++<UE6FE> /xf9/xa3 <Private Use>
++<UE6FF> /xf9/xa4 <Private Use>
++<UE700> /xf9/xa5 <Private Use>
++<UE701> /xf9/xa6 <Private Use>
++<UE702> /xf9/xa7 <Private Use>
++<UE703> /xf9/xa8 <Private Use>
++<UE704> /xf9/xa9 <Private Use>
++<UE705> /xf9/xaa <Private Use>
++<UE706> /xf9/xab <Private Use>
++<UE707> /xf9/xac <Private Use>
++<UE708> /xf9/xad <Private Use>
++<UE709> /xf9/xae <Private Use>
++<UE70A> /xf9/xaf <Private Use>
++<UE70B> /xf9/xb0 <Private Use>
++<UE70C> /xf9/xb1 <Private Use>
++<UE70D> /xf9/xb2 <Private Use>
++<UE70E> /xf9/xb3 <Private Use>
++<UE70F> /xf9/xb4 <Private Use>
++<UE710> /xf9/xb5 <Private Use>
++<UE711> /xf9/xb6 <Private Use>
++<UE712> /xf9/xb7 <Private Use>
++<UE713> /xf9/xb8 <Private Use>
++<UE714> /xf9/xb9 <Private Use>
++<UE715> /xf9/xba <Private Use>
++<UE716> /xf9/xbb <Private Use>
++<UE717> /xf9/xbc <Private Use>
++<UE718> /xf9/xbd <Private Use>
++<UE719> /xf9/xbe <Private Use>
++<UE71A> /xf9/xbf <Private Use>
++<UE71B> /xf9/xc0 <Private Use>
++<UE71C> /xf9/xc1 <Private Use>
++<UE71D> /xf9/xc2 <Private Use>
++<UE71E> /xf9/xc3 <Private Use>
++<UE71F> /xf9/xc4 <Private Use>
++<UE720> /xf9/xc5 <Private Use>
++<UE721> /xf9/xc6 <Private Use>
++<UE722> /xf9/xc7 <Private Use>
++<UE723> /xf9/xc8 <Private Use>
++<UE724> /xf9/xc9 <Private Use>
++<UE725> /xf9/xca <Private Use>
++<UE726> /xf9/xcb <Private Use>
++<UE727> /xf9/xcc <Private Use>
++<UE728> /xf9/xcd <Private Use>
++<UE729> /xf9/xce <Private Use>
++<UE72A> /xf9/xcf <Private Use>
++<UE72B> /xf9/xd0 <Private Use>
++<UE72C> /xf9/xd1 <Private Use>
++<UE72D> /xf9/xd2 <Private Use>
++<UE72E> /xf9/xd3 <Private Use>
++<UE72F> /xf9/xd4 <Private Use>
++<UE730> /xf9/xd5 <Private Use>
++<UE731> /xf9/xd6 <Private Use>
++<UE732> /xf9/xd7 <Private Use>
++<UE733> /xf9/xd8 <Private Use>
++<UE734> /xf9/xd9 <Private Use>
++<UE735> /xf9/xda <Private Use>
++<UE736> /xf9/xdb <Private Use>
++<UE737> /xf9/xdc <Private Use>
++<UE738> /xf9/xdd <Private Use>
++<UE739> /xf9/xde <Private Use>
++<UE73A> /xf9/xdf <Private Use>
++<UE73B> /xf9/xe0 <Private Use>
++<UE73C> /xf9/xe1 <Private Use>
++<UE73D> /xf9/xe2 <Private Use>
++<UE73E> /xf9/xe3 <Private Use>
++<UE73F> /xf9/xe4 <Private Use>
++<UE740> /xf9/xe5 <Private Use>
++<UE741> /xf9/xe6 <Private Use>
++<UE742> /xf9/xe7 <Private Use>
++<UE743> /xf9/xe8 <Private Use>
++<UE744> /xf9/xe9 <Private Use>
++<UE745> /xf9/xea <Private Use>
++<UE746> /xf9/xeb <Private Use>
++<UE747> /xf9/xec <Private Use>
++<UE748> /xf9/xed <Private Use>
++<UE749> /xf9/xee <Private Use>
++<UE74A> /xf9/xef <Private Use>
++<UE74B> /xf9/xf0 <Private Use>
++<UE74C> /xf9/xf1 <Private Use>
++<UE74D> /xf9/xf2 <Private Use>
++<UE74E> /xf9/xf3 <Private Use>
++<UE74F> /xf9/xf4 <Private Use>
++<UE750> /xf9/xf5 <Private Use>
++<UE751> /xf9/xf6 <Private Use>
++<UE752> /xf9/xf7 <Private Use>
++<UE753> /xf9/xf8 <Private Use>
++<UE754> /xf9/xf9 <Private Use>
++<UE755> /xf9/xfa <Private Use>
++<UE756> /xf9/xfb <Private Use>
++<UE757> /xf9/xfc <Private Use>
++
++<U2170> /xfa/x40 SMALL ROMAN NUMERAL ONE
++<U2171> /xfa/x41 SMALL ROMAN NUMERAL TWO
++<U2172> /xfa/x42 SMALL ROMAN NUMERAL THREE
++<U2173> /xfa/x43 SMALL ROMAN NUMERAL FOUR
++<U2174> /xfa/x44 SMALL ROMAN NUMERAL FIVE
++<U2175> /xfa/x45 SMALL ROMAN NUMERAL SIX
++<U2176> /xfa/x46 SMALL ROMAN NUMERAL SEVEN
++<U2177> /xfa/x47 SMALL ROMAN NUMERAL EIGHT
++<U2178> /xfa/x48 SMALL ROMAN NUMERAL NINE
++<U2179> /xfa/x49 SMALL ROMAN NUMERAL TEN
++%IRREVERSIBLE%<U2160> /xfa/x4a ROMAN NUMERAL ONE
++%IRREVERSIBLE%<U2161> /xfa/x4b ROMAN NUMERAL TWO
++%IRREVERSIBLE%<U2162> /xfa/x4c ROMAN NUMERAL THREE
++%IRREVERSIBLE%<U2163> /xfa/x4d ROMAN NUMERAL FOUR
++%IRREVERSIBLE%<U2164> /xfa/x4e ROMAN NUMERAL FIVE
++%IRREVERSIBLE%<U2165> /xfa/x4f ROMAN NUMERAL SIX
++%IRREVERSIBLE%<U2166> /xfa/x50 ROMAN NUMERAL SEVEN
++%IRREVERSIBLE%<U2167> /xfa/x51 ROMAN NUMERAL EIGHT
++%IRREVERSIBLE%<U2168> /xfa/x52 ROMAN NUMERAL NINE
++%IRREVERSIBLE%<U2169> /xfa/x53 ROMAN NUMERAL TEN
++%IRREVERSIBLE%<UFFE2> /xfa/x54 FULLWIDTH NOT SIGN
++<UFFE4> /xfa/x55 FULLWIDTH BROKEN BAR
++<UFF07> /xfa/x56 FULLWIDTH APOSTROPHE
++<UFF02> /xfa/x57 FULLWIDTH QUOTATION MARK
++%IRREVERSIBLE%<U3231> /xfa/x58 PARENTHESIZED IDEOGRAPH STOCK
++%IRREVERSIBLE%<U2116> /xfa/x59 NUMERO SIGN
++%IRREVERSIBLE%<U2121> /xfa/x5a TELEPHONE SIGN
++%IRREVERSIBLE%<U2235> /xfa/x5b BECAUSE
++<U7E8A> /xfa/x5c <CJK>
++<U891C> /xfa/x5d <CJK>
++<U9348> /xfa/x5e <CJK>
++<U9288> /xfa/x5f <CJK>
++<U84DC> /xfa/x60 <CJK>
++<U4FC9> /xfa/x61 <CJK>
++<U70BB> /xfa/x62 <CJK>
++<U6631> /xfa/x63 <CJK>
++<U68C8> /xfa/x64 <CJK>
++<U92F9> /xfa/x65 <CJK>
++<U66FB> /xfa/x66 <CJK>
++<U5F45> /xfa/x67 <CJK>
++<U4E28> /xfa/x68 <CJK>
++<U4EE1> /xfa/x69 <CJK>
++<U4EFC> /xfa/x6a <CJK>
++<U4F00> /xfa/x6b <CJK>
++<U4F03> /xfa/x6c <CJK>
++<U4F39> /xfa/x6d <CJK>
++<U4F56> /xfa/x6e <CJK>
++<U4F92> /xfa/x6f <CJK>
++<U4F8A> /xfa/x70 <CJK>
++<U4F9A> /xfa/x71 <CJK>
++<U4F94> /xfa/x72 <CJK>
++<U4FCD> /xfa/x73 <CJK>
++<U5040> /xfa/x74 <CJK>
++<U5022> /xfa/x75 <CJK>
++<U4FFF> /xfa/x76 <CJK>
++<U501E> /xfa/x77 <CJK>
++<U5046> /xfa/x78 <CJK>
++<U5070> /xfa/x79 <CJK>
++<U5042> /xfa/x7a <CJK>
++<U5094> /xfa/x7b <CJK>
++<U50F4> /xfa/x7c <CJK>
++<U50D8> /xfa/x7d <CJK>
++<U514A> /xfa/x7e <CJK>
++<U5164> /xfa/x80 <CJK>
++<U519D> /xfa/x81 <CJK>
++<U51BE> /xfa/x82 <CJK>
++<U51EC> /xfa/x83 <CJK>
++<U5215> /xfa/x84 <CJK>
++<U529C> /xfa/x85 <CJK>
++<U52A6> /xfa/x86 <CJK>
++<U52C0> /xfa/x87 <CJK>
++<U52DB> /xfa/x88 <CJK>
++<U5300> /xfa/x89 <CJK>
++<U5307> /xfa/x8a <CJK>
++<U5324> /xfa/x8b <CJK>
++<U5372> /xfa/x8c <CJK>
++<U5393> /xfa/x8d <CJK>
++<U53B2> /xfa/x8e <CJK>
++<U53DD> /xfa/x8f <CJK>
++<UFA0E> /xfa/x90 CJK COMPATIBILITY IDEOGRAPH-FA0E
++<U549C> /xfa/x91 <CJK>
++<U548A> /xfa/x92 <CJK>
++<U54A9> /xfa/x93 <CJK>
++<U54FF> /xfa/x94 <CJK>
++<U5586> /xfa/x95 <CJK>
++<U5759> /xfa/x96 <CJK>
++<U5765> /xfa/x97 <CJK>
++<U57AC> /xfa/x98 <CJK>
++<U57C8> /xfa/x99 <CJK>
++<U57C7> /xfa/x9a <CJK>
++<UFA0F> /xfa/x9b CJK COMPATIBILITY IDEOGRAPH-FA0F
++<UFA10> /xfa/x9c CJK COMPATIBILITY IDEOGRAPH-FA10
++<U589E> /xfa/x9d <CJK>
++<U58B2> /xfa/x9e <CJK>
++<U590B> /xfa/x9f <CJK>
++<U5953> /xfa/xa0 <CJK>
++<U595B> /xfa/xa1 <CJK>
++<U595D> /xfa/xa2 <CJK>
++<U5963> /xfa/xa3 <CJK>
++<U59A4> /xfa/xa4 <CJK>
++<U59BA> /xfa/xa5 <CJK>
++<U5B56> /xfa/xa6 <CJK>
++<U5BC0> /xfa/xa7 <CJK>
++<U752F> /xfa/xa8 <CJK>
++<U5BD8> /xfa/xa9 <CJK>
++<U5BEC> /xfa/xaa <CJK>
++<U5C1E> /xfa/xab <CJK>
++<U5CA6> /xfa/xac <CJK>
++<U5CBA> /xfa/xad <CJK>
++<U5CF5> /xfa/xae <CJK>
++<U5D27> /xfa/xaf <CJK>
++<U5D53> /xfa/xb0 <CJK>
++<UFA11> /xfa/xb1 CJK COMPATIBILITY IDEOGRAPH-FA11
++<U5D42> /xfa/xb2 <CJK>
++<U5D6D> /xfa/xb3 <CJK>
++<U5DB8> /xfa/xb4 <CJK>
++<U5DB9> /xfa/xb5 <CJK>
++<U5DD0> /xfa/xb6 <CJK>
++<U5F21> /xfa/xb7 <CJK>
++<U5F34> /xfa/xb8 <CJK>
++<U5F67> /xfa/xb9 <CJK>
++<U5FB7> /xfa/xba <CJK>
++<U5FDE> /xfa/xbb <CJK>
++<U605D> /xfa/xbc <CJK>
++<U6085> /xfa/xbd <CJK>
++<U608A> /xfa/xbe <CJK>
++<U60DE> /xfa/xbf <CJK>
++<U60D5> /xfa/xc0 <CJK>
++<U6120> /xfa/xc1 <CJK>
++<U60F2> /xfa/xc2 <CJK>
++<U6111> /xfa/xc3 <CJK>
++<U6137> /xfa/xc4 <CJK>
++<U6130> /xfa/xc5 <CJK>
++<U6198> /xfa/xc6 <CJK>
++<U6213> /xfa/xc7 <CJK>
++<U62A6> /xfa/xc8 <CJK>
++<U63F5> /xfa/xc9 <CJK>
++<U6460> /xfa/xca <CJK>
++<U649D> /xfa/xcb <CJK>
++<U64CE> /xfa/xcc <CJK>
++<U654E> /xfa/xcd <CJK>
++<U6600> /xfa/xce <CJK>
++<U6615> /xfa/xcf <CJK>
++<U663B> /xfa/xd0 <CJK>
++<U6609> /xfa/xd1 <CJK>
++<U662E> /xfa/xd2 <CJK>
++<U661E> /xfa/xd3 <CJK>
++<U6624> /xfa/xd4 <CJK>
++<U6665> /xfa/xd5 <CJK>
++<U6657> /xfa/xd6 <CJK>
++<U6659> /xfa/xd7 <CJK>
++<UFA12> /xfa/xd8 CJK COMPATIBILITY IDEOGRAPH-FA12
++<U6673> /xfa/xd9 <CJK>
++<U6699> /xfa/xda <CJK>
++<U66A0> /xfa/xdb <CJK>
++<U66B2> /xfa/xdc <CJK>
++<U66BF> /xfa/xdd <CJK>
++<U66FA> /xfa/xde <CJK>
++<U670E> /xfa/xdf <CJK>
++<UF929> /xfa/xe0 CJK COMPATIBILITY IDEOGRAPH-F929
++<U6766> /xfa/xe1 <CJK>
++<U67BB> /xfa/xe2 <CJK>
++<U6852> /xfa/xe3 <CJK>
++<U67C0> /xfa/xe4 <CJK>
++<U6801> /xfa/xe5 <CJK>
++<U6844> /xfa/xe6 <CJK>
++<U68CF> /xfa/xe7 <CJK>
++<UFA13> /xfa/xe8 CJK COMPATIBILITY IDEOGRAPH-FA13
++<U6968> /xfa/xe9 <CJK>
++<UFA14> /xfa/xea CJK COMPATIBILITY IDEOGRAPH-FA14
++<U6998> /xfa/xeb <CJK>
++<U69E2> /xfa/xec <CJK>
++<U6A30> /xfa/xed <CJK>
++<U6A6B> /xfa/xee <CJK>
++<U6A46> /xfa/xef <CJK>
++<U6A73> /xfa/xf0 <CJK>
++<U6A7E> /xfa/xf1 <CJK>
++<U6AE2> /xfa/xf2 <CJK>
++<U6AE4> /xfa/xf3 <CJK>
++<U6BD6> /xfa/xf4 <CJK>
++<U6C3F> /xfa/xf5 <CJK>
++<U6C5C> /xfa/xf6 <CJK>
++<U6C86> /xfa/xf7 <CJK>
++<U6C6F> /xfa/xf8 <CJK>
++<U6CDA> /xfa/xf9 <CJK>
++<U6D04> /xfa/xfa <CJK>
++<U6D87> /xfa/xfb <CJK>
++<U6D6F> /xfa/xfc <CJK>
++<U6D96> /xfb/x40 <CJK>
++<U6DAC> /xfb/x41 <CJK>
++<U6DCF> /xfb/x42 <CJK>
++<U6DF8> /xfb/x43 <CJK>
++<U6DF2> /xfb/x44 <CJK>
++<U6DFC> /xfb/x45 <CJK>
++<U6E39> /xfb/x46 <CJK>
++<U6E5C> /xfb/x47 <CJK>
++<U6E27> /xfb/x48 <CJK>
++<U6E3C> /xfb/x49 <CJK>
++<U6EBF> /xfb/x4a <CJK>
++<U6F88> /xfb/x4b <CJK>
++<U6FB5> /xfb/x4c <CJK>
++<U6FF5> /xfb/x4d <CJK>
++<U7005> /xfb/x4e <CJK>
++<U7007> /xfb/x4f <CJK>
++<U7028> /xfb/x50 <CJK>
++<U7085> /xfb/x51 <CJK>
++<U70AB> /xfb/x52 <CJK>
++<U710F> /xfb/x53 <CJK>
++<U7104> /xfb/x54 <CJK>
++<U715C> /xfb/x55 <CJK>
++<U7146> /xfb/x56 <CJK>
++<U7147> /xfb/x57 <CJK>
++<UFA15> /xfb/x58 CJK COMPATIBILITY IDEOGRAPH-FA15
++<U71C1> /xfb/x59 <CJK>
++<U71FE> /xfb/x5a <CJK>
++<U72B1> /xfb/x5b <CJK>
++<U72BE> /xfb/x5c <CJK>
++<U7324> /xfb/x5d <CJK>
++<UFA16> /xfb/x5e CJK COMPATIBILITY IDEOGRAPH-FA16
++<U7377> /xfb/x5f <CJK>
++<U73BD> /xfb/x60 <CJK>
++<U73C9> /xfb/x61 <CJK>
++<U73D6> /xfb/x62 <CJK>
++<U73E3> /xfb/x63 <CJK>
++<U73D2> /xfb/x64 <CJK>
++<U7407> /xfb/x65 <CJK>
++<U73F5> /xfb/x66 <CJK>
++<U7426> /xfb/x67 <CJK>
++<U742A> /xfb/x68 <CJK>
++<U7429> /xfb/x69 <CJK>
++<U742E> /xfb/x6a <CJK>
++<U7462> /xfb/x6b <CJK>
++<U7489> /xfb/x6c <CJK>
++<U749F> /xfb/x6d <CJK>
++<U7501> /xfb/x6e <CJK>
++<U756F> /xfb/x6f <CJK>
++<U7682> /xfb/x70 <CJK>
++<U769C> /xfb/x71 <CJK>
++<U769E> /xfb/x72 <CJK>
++<U769B> /xfb/x73 <CJK>
++<U76A6> /xfb/x74 <CJK>
++<UFA17> /xfb/x75 CJK COMPATIBILITY IDEOGRAPH-FA17
++<U7746> /xfb/x76 <CJK>
++<U52AF> /xfb/x77 <CJK>
++<U7821> /xfb/x78 <CJK>
++<U784E> /xfb/x79 <CJK>
++<U7864> /xfb/x7a <CJK>
++<U787A> /xfb/x7b <CJK>
++<U7930> /xfb/x7c <CJK>
++<UFA18> /xfb/x7d CJK COMPATIBILITY IDEOGRAPH-FA18
++<UFA19> /xfb/x7e CJK COMPATIBILITY IDEOGRAPH-FA19
++<UFA1A> /xfb/x80 CJK COMPATIBILITY IDEOGRAPH-FA1A
++<U7994> /xfb/x81 <CJK>
++<UFA1B> /xfb/x82 CJK COMPATIBILITY IDEOGRAPH-FA1B
++<U799B> /xfb/x83 <CJK>
++<U7AD1> /xfb/x84 <CJK>
++<U7AE7> /xfb/x85 <CJK>
++<UFA1C> /xfb/x86 CJK COMPATIBILITY IDEOGRAPH-FA1C
++<U7AEB> /xfb/x87 <CJK>
++<U7B9E> /xfb/x88 <CJK>
++<UFA1D> /xfb/x89 CJK COMPATIBILITY IDEOGRAPH-FA1D
++<U7D48> /xfb/x8a <CJK>
++<U7D5C> /xfb/x8b <CJK>
++<U7DB7> /xfb/x8c <CJK>
++<U7DA0> /xfb/x8d <CJK>
++<U7DD6> /xfb/x8e <CJK>
++<U7E52> /xfb/x8f <CJK>
++<U7F47> /xfb/x90 <CJK>
++<U7FA1> /xfb/x91 <CJK>
++<UFA1E> /xfb/x92 CJK COMPATIBILITY IDEOGRAPH-FA1E
++<U8301> /xfb/x93 <CJK>
++<U8362> /xfb/x94 <CJK>
++<U837F> /xfb/x95 <CJK>
++<U83C7> /xfb/x96 <CJK>
++<U83F6> /xfb/x97 <CJK>
++<U8448> /xfb/x98 <CJK>
++<U84B4> /xfb/x99 <CJK>
++<U8553> /xfb/x9a <CJK>
++<U8559> /xfb/x9b <CJK>
++<U856B> /xfb/x9c <CJK>
++<UFA1F> /xfb/x9d CJK COMPATIBILITY IDEOGRAPH-FA1F
++<U85B0> /xfb/x9e <CJK>
++<UFA20> /xfb/x9f CJK COMPATIBILITY IDEOGRAPH-FA20
++<UFA21> /xfb/xa0 CJK COMPATIBILITY IDEOGRAPH-FA21
++<U8807> /xfb/xa1 <CJK>
++<U88F5> /xfb/xa2 <CJK>
++<U8A12> /xfb/xa3 <CJK>
++<U8A37> /xfb/xa4 <CJK>
++<U8A79> /xfb/xa5 <CJK>
++<U8AA7> /xfb/xa6 <CJK>
++<U8ABE> /xfb/xa7 <CJK>
++<U8ADF> /xfb/xa8 <CJK>
++<UFA22> /xfb/xa9 CJK COMPATIBILITY IDEOGRAPH-FA22
++<U8AF6> /xfb/xaa <CJK>
++<U8B53> /xfb/xab <CJK>
++<U8B7F> /xfb/xac <CJK>
++<U8CF0> /xfb/xad <CJK>
++<U8CF4> /xfb/xae <CJK>
++<U8D12> /xfb/xaf <CJK>
++<U8D76> /xfb/xb0 <CJK>
++<UFA23> /xfb/xb1 CJK COMPATIBILITY IDEOGRAPH-FA23
++<U8ECF> /xfb/xb2 <CJK>
++<UFA24> /xfb/xb3 CJK COMPATIBILITY IDEOGRAPH-FA24
++<UFA25> /xfb/xb4 CJK COMPATIBILITY IDEOGRAPH-FA25
++<U9067> /xfb/xb5 <CJK>
++<U90DE> /xfb/xb6 <CJK>
++<UFA26> /xfb/xb7 CJK COMPATIBILITY IDEOGRAPH-FA26
++<U9115> /xfb/xb8 <CJK>
++<U9127> /xfb/xb9 <CJK>
++<U91DA> /xfb/xba <CJK>
++<U91D7> /xfb/xbb <CJK>
++<U91DE> /xfb/xbc <CJK>
++<U91ED> /xfb/xbd <CJK>
++<U91EE> /xfb/xbe <CJK>
++<U91E4> /xfb/xbf <CJK>
++<U91E5> /xfb/xc0 <CJK>
++<U9206> /xfb/xc1 <CJK>
++<U9210> /xfb/xc2 <CJK>
++<U920A> /xfb/xc3 <CJK>
++<U923A> /xfb/xc4 <CJK>
++<U9240> /xfb/xc5 <CJK>
++<U923C> /xfb/xc6 <CJK>
++<U924E> /xfb/xc7 <CJK>
++<U9259> /xfb/xc8 <CJK>
++<U9251> /xfb/xc9 <CJK>
++<U9239> /xfb/xca <CJK>
++<U9267> /xfb/xcb <CJK>
++<U92A7> /xfb/xcc <CJK>
++<U9277> /xfb/xcd <CJK>
++<U9278> /xfb/xce <CJK>
++<U92E7> /xfb/xcf <CJK>
++<U92D7> /xfb/xd0 <CJK>
++<U92D9> /xfb/xd1 <CJK>
++<U92D0> /xfb/xd2 <CJK>
++<UFA27> /xfb/xd3 CJK COMPATIBILITY IDEOGRAPH-FA27
++<U92D5> /xfb/xd4 <CJK>
++<U92E0> /xfb/xd5 <CJK>
++<U92D3> /xfb/xd6 <CJK>
++<U9325> /xfb/xd7 <CJK>
++<U9321> /xfb/xd8 <CJK>
++<U92FB> /xfb/xd9 <CJK>
++<UFA28> /xfb/xda CJK COMPATIBILITY IDEOGRAPH-FA28
++<U931E> /xfb/xdb <CJK>
++<U92FF> /xfb/xdc <CJK>
++<U931D> /xfb/xdd <CJK>
++<U9302> /xfb/xde <CJK>
++<U9370> /xfb/xdf <CJK>
++<U9357> /xfb/xe0 <CJK>
++<U93A4> /xfb/xe1 <CJK>
++<U93C6> /xfb/xe2 <CJK>
++<U93DE> /xfb/xe3 <CJK>
++<U93F8> /xfb/xe4 <CJK>
++<U9431> /xfb/xe5 <CJK>
++<U9445> /xfb/xe6 <CJK>
++<U9448> /xfb/xe7 <CJK>
++<U9592> /xfb/xe8 <CJK>
++<UF9DC> /xfb/xe9 CJK COMPATIBILITY IDEOGRAPH-F9DC
++<UFA29> /xfb/xea CJK COMPATIBILITY IDEOGRAPH-FA29
++<U969D> /xfb/xeb <CJK>
++<U96AF> /xfb/xec <CJK>
++<U9733> /xfb/xed <CJK>
++<U973B> /xfb/xee <CJK>
++<U9743> /xfb/xef <CJK>
++<U974D> /xfb/xf0 <CJK>
++<U974F> /xfb/xf1 <CJK>
++<U9751> /xfb/xf2 <CJK>
++<U9755> /xfb/xf3 <CJK>
++<U9857> /xfb/xf4 <CJK>
++<U9865> /xfb/xf5 <CJK>
++<UFA2A> /xfb/xf6 CJK COMPATIBILITY IDEOGRAPH-FA2A
++<UFA2B> /xfb/xf7 CJK COMPATIBILITY IDEOGRAPH-FA2B
++<U9927> /xfb/xf8 <CJK>
++<UFA2C> /xfb/xf9 CJK COMPATIBILITY IDEOGRAPH-FA2C
++<U999E> /xfb/xfa <CJK>
++<U9A4E> /xfb/xfb <CJK>
++<U9AD9> /xfb/xfc <CJK>
++<U9ADC> /xfc/x40 <CJK>
++<U9B75> /xfc/x41 <CJK>
++<U9B72> /xfc/x42 <CJK>
++<U9B8F> /xfc/x43 <CJK>
++<U9BB1> /xfc/x44 <CJK>
++<U9BBB> /xfc/x45 <CJK>
++<U9C00> /xfc/x46 <CJK>
++<U9D70> /xfc/x47 <CJK>
++<U9D6B> /xfc/x48 <CJK>
++<UFA2D> /xfc/x49 CJK COMPATIBILITY IDEOGRAPH-FA2D
++<U9E19> /xfc/x4a <CJK>
++<U9ED1> /xfc/x4b <CJK>
++END CHARMAP
++
++WIDTH
++<U3000>...<U6ECC> 2
++<U6F3E>...<U7199> 2
++<U7E8A>...<UFF02> 2
++<UE000>...<UE757> 2
++<U2170>...<U9ED1> 2
++END WIDTH
+--- glibc-2.3.2/localedata/collate-test.c 2001-07-07 15:21:05.000000000 -0400
++++ glibc-2.3.2/localedata/collate-test.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test collation function using real data.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -19,6 +19,7 @@
+ 02111-1307 USA. */
+
+ #include <ctype.h>
++#include <error.h>
+ #include <locale.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -27,8 +28,8 @@
+
+ struct lines
+ {
+- const char *key;
+- const char *line;
++ char *key;
++ char *line;
+ };
+
+ static int xstrcoll (const void *, const void *);
+@@ -43,6 +44,9 @@
+ size_t len = 0;
+ size_t n;
+
++ if (argc < 2)
++ error (1, 0, "usage: %s <random seed>", argv[0]);
++
+ setlocale (LC_ALL, "");
+
+ nstrings_max = 100;
+@@ -63,8 +67,8 @@
+ if (nstrings == nstrings_max)
+ {
+ strings = (struct lines *) realloc (strings,
+- (nstrings_max *= 2
+- * sizeof (*strings)));
++ (nstrings_max *= 2)
++ * sizeof (*strings));
+ if (strings == NULL)
+ {
+ perror (argv[0]);
+@@ -78,6 +82,7 @@
+ strings[nstrings].key = strndup (line, l);
+ ++nstrings;
+ }
++ free (line);
+
+ /* First shuffle. */
+ srandom (atoi (argv[1]));
+@@ -105,7 +110,12 @@
+
+ /* Print the result. */
+ for (n = 0; n < nstrings; ++n)
+- fputs (strings[n].line, stdout);
++ {
++ fputs (strings[n].line, stdout);
++ free (strings[n].line);
++ free (strings[n].key);
++ }
++ free (strings);
+
+ return result;
+ }
+--- glibc-2.3.2/localedata/locales/an_ES 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/locales/an_ES 2003-09-19 22:37:05.000000000 -0400
+@@ -0,0 +1,126 @@
++comment_char %
++escape_char /
++%
++% Aragonese Language Locale for Spain
++% Source:
++% Address:
++% Contact: Jordi Mallach Pérez
++% Email: jordi@gnu.org
++% Language: an
++% Territory: ES
++% Revision: 1.0
++% Date: 2003-05-22
++% Application: general
++% Users: general
++% Charset: ISO-8859-15
++%
++% This file is under the
++% GNU General Public License.
++% Based in the gl_ES Locale
++
++LC_IDENTIFICATION
++title "Aragonese locale for Spain"
++source ""
++address ""
++contact "Jordi Mallach Pérez"
++email "bug-glibc@gnu.org"
++tel ""
++fax ""
++language "Aragonese"
++territory "Spain"
++revision "1.1"
++date "2003-08-25"
++%
++category "i18n:1999";LC_IDENTIFICATION
++category "i18n:1999";LC_CTYPE
++category "i18n:1999";LC_COLLATE
++category "i18n:1999";LC_TIME
++category "posix:1993";LC_NUMERIC
++category "i18n:1999";LC_MONETARY
++category "i18n:1999";LC_MESSAGES
++category "i18n:1999";LC_PAPER
++category "i18n:1999";LC_NAME
++category "i18n:1999";LC_ADDRESS
++category "i18n:1999";LC_TELEPHONE
++END LC_IDENTIFICATION
++
++LC_COLLATE
++copy "es_ES"
++END LC_COLLATE
++
++LC_CTYPE
++copy "es_ES"
++END LC_CTYPE
++
++LC_MESSAGES
++yesexpr "<U005E><U005B><U0073><U0053><U0079><U0059><U005D><U002E><U002A>"
++noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
++END LC_MESSAGES
++
++LC_MONETARY
++copy "es_ES"
++END LC_MONETARY
++
++LC_NUMERIC
++copy "es_ES"
++END LC_NUMERIC
++
++LC_TIME
++abday "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/
++ "<U006D><U0061><U0072>";"<U006D><U0069><U0065>";/
++ "<U0063><U0068><U0075>";"<U0062><U0069><U0065>";/
++ "<U0073><U0061><U0062>"
++day "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/
++ "<U006C><U0075><U006E><U0073>";/
++ "<U006D><U0061><U0072><U0074><U0065><U0073>";/
++ "<U006D><U0069><U0065><U0063><U006F><U006c><U0073>";/
++ "<U0063><U0068><U0075><U0065><U0062><U0065><U0073>";/
++ "<U0062><U0069><U0065><U0072><U006E><U0065><U0073>";/
++ "<U0073><U0061><U0062><U0061><U0064><U006F>"
++abmon "<U0063><U0068><U0069>";"<U0066><U0072><U0065>";/
++ "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/
++ "<U006D><U0061><U0079>";"<U0063><U0068><U006E>";/
++ "<U0063><U0068><U006C>";"<U0061><U0067><U006F>";/
++ "<U0073><U0065><U0074>";"<U006f><U0063><U0074>";/
++ "<U006E><U006F><U0062>";"<U0061><U0062><U0069>"
++mon "<U0063><U0068><U0069><U006E><U0065><U0072><U006F>";/
++ "<U0066><U0072><U0065><U0062><U0065><U0072><U006F>";/
++ "<U006D><U0061><U0072><U007A><U006F>";/
++ "<U0061><U0062><U0072><U0069><U006C>";/
++ "<U006D><U0061><U0079><U006F>";/
++ "<U0063><U0068><U0075><U006E><U0069><U006F>";/
++ "<U0063><U0068><U0075><U006C><U0069><U006F>";/
++ "<U0061><U0067><U006F><U0073><U0074><U006F>";/
++ "<U0073><U0065><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/
++ "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/
++ "<U006E><U006F><U0062><U0069><U0065><U006D><U0062><U0072><U0065>";/
++ "<U0061><U0062><U0069><U0065><U006E><U0074><U006F>"
++d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
++d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
++t_fmt "<U0025><U0054>"
++am_pm "";""
++t_fmt_ampm ""
++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
++<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
++<U0025><U005A><U0020><U0025><U0059>"
++END LC_TIME
++
++LC_PAPER
++copy "es_ES"
++END LC_PAPER
++
++LC_TELEPHONE
++copy "es_ES"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++copy "es_ES"
++END LC_MEASUREMENT
++
++LC_NAME
++copy "es_ES"
++END LC_NAME
++
++LC_ADDRESS
++copy "es_ES"
++END LC_ADDRESS
+--- glibc-2.3.2/localedata/locales/ar_BH 2000-10-26 13:42:04.000000000 -0400
++++ glibc-2.3.2/localedata/locales/ar_BH 2003-04-24 20:05:58.000000000 -0400
+@@ -5,7 +5,7 @@
+ % Tetsuji Orita <orita@jp.ibm.com>.
+
+ LC_IDENTIFICATION
+-title "Arabic language locale for Bahrein"
++title "Arabic language locale for Bahrain"
+ source "IBM Globalization Center of Competency, Yamato Software Laboratory"
+ address "1623-14, Shimotsuruma, Yamato-shi, Kanagawa-ken, 242-8502, Japan"
+ contact ""
+@@ -13,7 +13,7 @@
+ tel ""
+ fax ""
+ language "Arabic"
+-territory "Bahrein"
++territory "Bahrain"
+ revision "1.0"
+ date "2000-07-20"
+ %
+--- glibc-2.3.2/localedata/locales/ar_SD 2000-10-26 13:44:45.000000000 -0400
++++ glibc-2.3.2/localedata/locales/ar_SD 2003-04-24 20:05:58.000000000 -0400
+@@ -47,7 +47,7 @@
+ % These are generated based on XML base Locale difintion file
+ % for IBM Class for Unicode/Java
+ %
+-int_curr_symbol "<U0053><U0044><U0050><U0020>"
++int_curr_symbol "<U0053><U0044><U0044><U0020>"
+ currency_symbol "<U062C><U002E><U0633><U002E>"
+ mon_decimal_point "<U002E>"
+ mon_thousands_sep "<U002C>"
+--- glibc-2.3.2/localedata/locales/de_DE 2002-02-28 03:34:13.000000000 -0500
++++ glibc-2.3.2/localedata/locales/de_DE 2003-05-12 12:13:05.000000000 -0400
+@@ -94,10 +94,10 @@
+ END LC_NUMERIC
+
+ LC_TIME
+-abday "<U0053><U006F><U006E>";"<U004D><U006F><U006E>";/
+- "<U0044><U0069><U0065>";"<U004D><U0069><U0074>";/
+- "<U0044><U006F><U006E>";"<U0046><U0072><U0065>";/
+- "<U0053><U0061><U006D>"
++abday "<U0053><U006F>";"<U004D><U006F>";/
++ "<U0044><U0069>";"<U004D><U0069>";/
++ "<U0044><U006F>";"<U0046><U0072>";/
++ "<U0053><U0061>"
+ day "<U0053><U006F><U006E><U006E><U0074><U0061><U0067>";/
+ "<U004D><U006F><U006E><U0074><U0061><U0067>";/
+ "<U0044><U0069><U0065><U006E><U0073><U0074><U0061><U0067>";/
+--- glibc-2.3.2/localedata/locales/en_ZA 2000-10-26 13:48:46.000000000 -0400
++++ glibc-2.3.2/localedata/locales/en_ZA 2003-03-18 16:46:07.000000000 -0500
+@@ -2,44 +2,54 @@
+ comment_char %
+
+ % English language locale for South Africa
+-% Source: RAP
+-% Email: nic@sig.co.za
+-% Tel: +27 83 7659503
+-% Fax: +27 12 3478098
++% Source: Zuza Software Foundation
++% Email: dwayne@translate.org.za
++% Tel: +27 21 4487827
++% Fax: +27 21 4489574
+ % Language: en
+ % Territory: ZA
+-% Revision: 1.0
+-% Date: 1999-03-28
++% Revision: 1.1
++% Date: 2003-03-14
+ % Users: general
+ % Repertoiremap: mnemonic,ds
+ % Charset: ISO-8859-1
+ % Distribution and use is free, also
+ % for commercial purposes.
++%
++% Changelog
++% 1.1 (2003-03-14):
++% - Updated maintainer to Zuza Sofware Foundation
++% - Changed %x for LC_TIME to use dd/mm/ccyy
++% - Added ^ to LC_MESSAGES regex "^[yY].*"
++% - Confirmed LC_PAPER and LC_MEASUREMENT settings
++% - Added country and language names to LC_ADDRESS
++% - Added missing info for LC_TELEPHONE
+
+ LC_IDENTIFICATION
+ title "English locale for South Africa"
+-source "RAP"
+-address ""
+-contact ""
+-email "bug-glibc@gnu.org"
+-tel ""
+-fax ""
++source "Zuza Software Foundation"
++address "Box 13412, Mowbray, 7701, South Africa"
++contact "Dwayne Bailey"
++email "dwayne@translate.org.za"
++tel "+27 21 448 7827"
++fax "+27 21 448 9574"
+ language "English"
+ territory "South Africa"
+-revision "1.0"
+-date "2000-06-29"
++revision "1.1"
++date "2003-03-14"
+ %
+-category "en_ZA:2000";LC_IDENTIFICATION
++category "en_ZA:2003";LC_IDENTIFICATION
+ category "en_ZA:2000";LC_CTYPE
+ category "en_ZA:2000";LC_COLLATE
+-category "en_ZA:2000";LC_TIME
++category "en_ZA:2003";LC_TIME
+ category "en_ZA:2000";LC_NUMERIC
+ category "en_ZA:2000";LC_MONETARY
+-category "en_ZA:2000";LC_MESSAGES
++category "en_ZA:2003";LC_MESSAGES
+ category "en_ZA:2000";LC_PAPER
++category "en_ZA:2000";LC_MEASUREMENT
+ category "en_ZA:2000";LC_NAME
+-category "en_ZA:2000";LC_ADDRESS
+-category "en_ZA:2000";LC_TELEPHONE
++category "en_ZA:2003";LC_ADDRESS
++category "en_ZA:2003";LC_TELEPHONE
+
+ END LC_IDENTIFICATION
+
+@@ -106,7 +116,7 @@
+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
+ d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+-d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
++d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
+ t_fmt "<U0025><U0054>"
+ am_pm "";""
+ t_fmt_ampm ""
+@@ -116,25 +126,25 @@
+ END LC_TIME
+
+ LC_MESSAGES
+-yesexpr "<U005B><U0079><U0059><U005D><U002E><U002A>"
+-noexpr "<U005B><U006E><U004E><U005D><U002E><U002A>"
++yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
++noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+ END LC_MESSAGES
+
+ LC_PAPER
+-% FIXME
+ height 297
+-% FIXME
+ width 210
+ END LC_PAPER
+
+ LC_TELEPHONE
+ tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+ <U006C>"
++tel_dom_fmt "<U0028><U0025><U0041><U0029><U0020><U0025><U006C>"
++int_select "<U0030><U0039>"
+ int_prefix "<U0032><U0037>"
++
+ END LC_TELEPHONE
+
+ LC_MEASUREMENT
+-% FIXME
+ measurement 1
+ END LC_MEASUREMENT
+
+@@ -149,4 +159,7 @@
+ <U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+ <U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+ <U004E><U0025><U0063><U0025><U004E>"
++country_name "<U0053><U006F><U0075><U0074><U0068><U0020>/
++<U0041><U0066><U0072><U0069><U0063><U0061>"
++lang_name "<U0045><U006E><U0067><U006C><U0069><U0073><U0068>"
+ END LC_ADDRESS
+--- glibc-2.3.2/localedata/locales/es_EC 2002-08-02 16:00:00.000000000 -0400
++++ glibc-2.3.2/localedata/locales/es_EC 2003-04-24 20:05:58.000000000 -0400
+@@ -61,7 +61,7 @@
+ END LC_MESSAGES
+
+ LC_MONETARY
+-int_curr_symbol "<U0045><U0043><U0053><U0020>"
++int_curr_symbol "<U0055><U0053><U0044><U0020>"
+ currency_symbol "<U0024>"
+ mon_decimal_point "<U002C>"
+ mon_thousands_sep "<U002E>"
+--- glibc-2.3.2/localedata/locales/fi_FI 2002-02-28 03:45:33.000000000 -0500
++++ glibc-2.3.2/localedata/locales/fi_FI 2003-08-21 08:37:06.000000000 -0400
+@@ -19,6 +19,10 @@
+ % Charset: ISO-8859-1
+ % Distribution and use is free, also
+ % for commercial purposes.
++%
++% Useful sources:
++% Locale info for Finnish in Finland
++% http://std.dkuug.dk/cultreg/registrations/narrative/fi_FI,_1.0
+
+ LC_IDENTIFICATION
+ title "Finnish locale for Finland"
+@@ -2121,7 +2125,7 @@
+ int_curr_symbol "<U0045><U0055><U0052><U0020>"
+ currency_symbol "<U20AC>"
+ mon_decimal_point "<U002C>"
+-mon_thousands_sep "<U002E>"
++mon_thousands_sep "<U00A0>"
+ mon_grouping 3;3
+ positive_sign ""
+ negative_sign "<U002D>"
+@@ -2139,7 +2143,7 @@
+
+ LC_NUMERIC
+ decimal_point "<U002C>"
+-thousands_sep "<U002E>"
++thousands_sep "<U00A0>"
+ grouping 3;3
+ END LC_NUMERIC
+
+@@ -2178,14 +2182,15 @@
+ "<U006C><U006F><U006B><U0061><U006B><U0075><U0075>";/
+ "<U006D><U0061><U0072><U0072><U0061><U0073><U006B><U0075><U0075>";/
+ "<U006A><U006F><U0075><U006C><U0075><U006B><U0075><U0075>"
+-d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054>"
++d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0020><U0025><U0042>/
++<U0074><U0061><U0020><U0025><U0059><U0020><U0025><U0054>"
+ d_fmt "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+ t_fmt "<U0025><U0054>"
+ am_pm "";""
+ t_fmt_ampm ""
+-date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+-<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+-<U0025><U005A><U0020><U0025><U0059>"
++date_fmt "<U0025><U0061><U0020><U0025><U0042><U006E><U0020><U0025>/
++<U0065><U002E><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025>/
++<U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
+ END LC_TIME
+
+ LC_MESSAGES
+--- glibc-2.3.2/localedata/locales/he_IL 2000-10-26 13:53:59.000000000 -0400
++++ glibc-2.3.2/localedata/locales/he_IL 2003-09-19 22:37:05.000000000 -0400
+@@ -18,6 +18,10 @@
+ % Charset: ISO-8859-8
+ % Distribution and use is free, also
+ % for commercial purposes.
++%
++% This locale replaces iw_IL, as the ISO-639 code for Hebrew was changed
++% from 'iw' to 'he' in 1989, according to Bruno Haible on libc-alpha
++% 2003-09-01.
+
+ LC_IDENTIFICATION
+ title "Hebrew locale for Israel"
+--- glibc-2.3.2/localedata/locales/is_IS 2000-10-26 13:54:41.000000000 -0400
++++ glibc-2.3.2/localedata/locales/is_IS 2003-08-21 08:37:06.000000000 -0400
+@@ -2185,35 +2185,35 @@
+ END LC_NUMERIC
+
+ LC_TIME
+-abday "<U0053><U0075><U006E>";"<U004D><U00E1><U006E>";/
+- "<U00DE><U0072><U0069>";"<U004D><U0069><U00F0>";/
+- "<U0046><U0069><U006D>";"<U0046><U00F6><U0073>";/
+- "<U004C><U0061><U0075>"
+-day "<U0053><U0075><U006E><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
+- "<U004D><U00E1><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
+- "<U00DE><U0072><U0069><U00F0><U006A><U0075><U0064><U0061><U0067><U0075><U0072>";/
+- "<U004D><U0069><U00F0><U0076><U0069><U006B><U0075><U0064><U0061><U0067><U0075><U0072>";/
+- "<U0046><U0069><U006D><U006D><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
+- "<U0046><U00F6><U0073><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
+- "<U004C><U0061><U0075><U0067><U0061><U0072><U0064><U0061><U0067><U0075><U0072>"
+-abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
+- "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
+- "<U004D><U0061><U00ED>";"<U004A><U00FA><U006E>";/
+- "<U004A><U00FA><U006C>";"<U00C1><U0067><U00FA>";/
+- "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
+- "<U004E><U00F3><U0076>";"<U0044><U0065><U0073>"
+-mon "<U004A><U0061><U006E><U00FA><U0061><U0072>";/
+- "<U0046><U0065><U0062><U0072><U00FA><U0061><U0072>";/
+- "<U004D><U0061><U0072><U0073>";/
+- "<U0041><U0070><U0072><U00ED><U006C>";/
+- "<U004D><U0061><U00ED>";/
+- "<U004A><U00FA><U006E><U00ED>";/
+- "<U004A><U00FA><U006C><U00ED>";/
+- "<U00C1><U0067><U00FA><U0073><U0074>";/
+- "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
+- "<U004F><U006B><U0074><U00F3><U0062><U0065><U0072>";/
+- "<U004E><U00F3><U0076><U0065><U006D><U0062><U0065><U0072>";/
+- "<U0044><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
++abday "<U0073><U0075><U006E>";"<U006D><U00E1><U006E>";/
++ "<U00FE><U0072><U0069>";"<U006D><U0069><U00F0>";/
++ "<U0066><U0069><U006D>";"<U0066><U00F6><U0073>";/
++ "<U006C><U0061><U0075>"
++day "<U0073><U0075><U006E><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
++ "<U006D><U00E1><U006E><U0075><U0064><U0061><U0067><U0075><U0072>";/
++ "<U00FE><U0072><U0069><U00F0><U006A><U0075><U0064><U0061><U0067><U0075><U0072>";/
++ "<U006D><U0069><U00F0><U0076><U0069><U006B><U0075><U0064><U0061><U0067><U0075><U0072>";/
++ "<U0066><U0069><U006D><U006D><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
++ "<U0066><U00F6><U0073><U0074><U0075><U0064><U0061><U0067><U0075><U0072>";/
++ "<U006C><U0061><U0075><U0067><U0061><U0072><U0064><U0061><U0067><U0075><U0072>"
++abmon "<U006A><U0061><U006E>";"<U0066><U0065><U0062>";/
++ "<U006D><U0061><U0072>";"<U0061><U0070><U0072>";/
++ "<U006D><U0061><U00ED>";"<U006A><U00FA><U006E>";/
++ "<U006A><U00FA><U006C>";"<U00E1><U0067><U00FA>";/
++ "<U0073><U0065><U0070>";"<U006F><U006B><U0074>";/
++ "<U006E><U00F3><U0076>";"<U0064><U0065><U0073>"
++mon "<U006A><U0061><U006E><U00FA><U0061><U0072>";/
++ "<U0066><U0065><U0062><U0072><U00FA><U0061><U0072>";/
++ "<U006D><U0061><U0072><U0073>";/
++ "<U0061><U0070><U0072><U00ED><U006C>";/
++ "<U006D><U0061><U00ED>";/
++ "<U006A><U00FA><U006E><U00ED>";/
++ "<U006A><U00FA><U006C><U00ED>";/
++ "<U00E1><U0067><U00FA><U0073><U0074>";/
++ "<U0073><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
++ "<U006F><U006B><U0074><U00F3><U0062><U0065><U0072>";/
++ "<U006E><U00F3><U0076><U0065><U006D><U0062><U0065><U0072>";/
++ "<U0064><U0065><U0073><U0065><U006D><U0062><U0065><U0072>"
+ d_t_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0025><U0062><U0020><U0025><U0059><U002C><U0020><U0025><U0054><U0020><U0025><U005A>"
+ d_fmt "<U0025><U0061><U0020><U0025><U0065><U002E><U0025><U0062><U0020><U0025><U0059>"
+ t_fmt "<U0025><U0054>"
+--- glibc-2.3.2/localedata/locales/iw_IL 2000-10-26 13:55:07.000000000 -0400
++++ glibc-2.3.2/localedata/locales/iw_IL 2003-09-19 22:37:05.000000000 -0400
+@@ -18,6 +18,9 @@
+ % Charset: ISO-8859-8
+ % Distribution and use is free, also
+ % for commercial purposes.
++%
++% Obsolete locale. The ISO-639 code for Hebrew was changed from 'iw'
++% to 'he' in 1989, according to Bruno Haible on libc-alpha 2003-09-01.
+
+ LC_IDENTIFICATION
+ title "Hebrew locale for Israel"
+--- glibc-2.3.2/localedata/locales/lo_LA 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/locales/lo_LA 2003-09-19 22:37:05.000000000 -0400
+@@ -0,0 +1,782 @@
++escape_char /
++comment_char %
++
++%
++% Lao Lanuage Locale for Laos
++%
++% Name: lo_LA
++% Author: Anousak Souphavanh
++% Contact:
++% E-mail: Anousak@muanglao.com
++% Language: Lao
++% Territory: Laos
++% Charset: UTF-8
++% Revision: 1.2
++% Date: 2003-15-09
++%
++
++%
++% Copyright (C) 2002 Anousak Souphavanh
++
++%
++% Permission is hereby granted, free of charge, to any person obtaining
++% a copy of this software and associated documentation files (the "Software"),
++% to deal in the Software without restriction, including without limitation
++% the rights to use, copy, modify, merge, publish, distribute, sublicense,
++% and/or sell copies of the Software, and to permit persons to whom the
++% Software is furnished to do so, subject to the following conditions:
++%
++% The above copyright notice and this permission notice shall be included
++% in all copies or substantial portions of the Software.
++%
++% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
++% OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++% ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++% OTHER DEALINGS IN THE SOFTWARE.
++%
++%
++%
++% Note: I would like to give a special thank to Mr. Pablo Salatxaga @ Mandrake , email "srtxg@chanae.alphanet.ch"
++% & Theppitak Karoonboonyanan, email: 'thep@linux.thai.net', all had guided me in the right direction.
++
++LC_IDENTIFICATION
++title "Lao locale for Laos"
++source ""
++address ""
++contact "Anousak Souphavanh at: anousak@muanglao.com"
++email "bug-glibc@gnu.org"
++tel ""
++fax ""
++language "Lao"
++territory "Laos"
++revision "1.0"
++date "2003-4-1"
++%
++category "lo_LA:2000";LC_IDENTIFICATION
++category "lo_LA:2000";LC_CTYPE
++category "lo_LA:2000";LC_COLLATE
++category "lo_LA:2000";LC_TIME
++category "lo_LA:2000";LC_NUMERIC
++category "lo_LA:2000";LC_MONETARY
++category "lo_LA:2000";LC_MESSAGES
++category "lo_LA:2000";LC_PAPER
++category "lo_LA:2000";LC_NAME
++category "lo_LA:2000";LC_ADDRESS
++category "lo_LA:2000";LC_TELEPHONE
++
++END LC_IDENTIFICATION
++
++LC_CTYPE
++copy "i18n"
++translit_start
++include "translit_combining";""
++translit_end
++END LC_CTYPE
++
++LC_COLLATE
++
++%
++
++collating-element <ko-e> from "<U0EC0><U0E81>"
++collating-element <ko-ae> from "<U0EC1><U0E81>"
++collating-element <ko-o> from "<U0EC2><U0E81>"
++collating-element <ko-ai-maimuan> from "<U0EC3><U0E81>"
++collating-element <ko-ai-maimalai> from "<U0EC4><U0E81>"
++
++collating-element <kho-sung-e> from "<U0EC0><U0E82>"
++collating-element <kho-sung-ae> from "<U0EC1><U0E82>"
++collating-element <kho-sung-o> from "<U0EC2><U0E82>"
++collating-element <kho-sung-ai-maimuan> from "<U0EC3><U0E82>"
++collating-element <kho-sung-ai-maimalai> from "<U0EC4><U0E82>"
++
++collating-element <kho-tam-e> from "<U0EC0><U0E84>"
++collating-element <kho-tam-ae> from "<U0EC1><U0E84>"
++collating-element <kho-tam-o> from "<U0EC2><U0E84>"
++collating-element <kho-tam-ai-maimuan> from "<U0EC3><U0E84>"
++collating-element <kho-tam-ai-maimalai> from "<U0EC4><U0E84>"
++
++collating-element <ngo-e> from "<U0EC0><U0E87>"
++collating-element <ngo-ae> from "<U0EC1><U0E87>"
++collating-element <ngo-o> from "<U0EC2><U0E87>"
++collating-element <ngo-ai-maimuan> from "<U0EC3><U0E87>"
++collating-element <ngo-ai-maimalai> from "<U0EC4><U0E87>"
++
++collating-element <cho-e> from "<U0EC0><U0E88>"
++collating-element <cho-ae> from "<U0EC1><U0E88>"
++collating-element <cho-o> from "<U0EC2><U0E88>"
++collating-element <cho-ai-maimuan> from "<U0EC3><U0E88>"
++collating-element <cho-ai-maimalai> from "<U0EC4><U0E88>"
++
++collating-element <xo-e> from "<U0EC0><U0E8A>"
++collating-element <xo-ae> from "<U0EC1><U0E8A>"
++collating-element <xo-o> from "<U0EC2><U0E8A>"
++collating-element <xo-ai-maimuan> from "<U0EC3><U0E8A>"
++collating-element <xo-ai-maimalai> from "<U0EC4><U0E8A>"
++
++collating-element <nyo-e> from "<U0EC0><U0E8D>"
++collating-element <nyo-ae> from "<U0EC1><U0E8D>"
++collating-element <nyo-o> from "<U0EC2><U0E8D>"
++collating-element <nyo-ai-maimuan> from "<U0EC3><U0E8D>"
++collating-element <nyo-ai-maimalai> from "<U0EC4><U0E8D>"
++
++collating-element <do-e> from "<U0EC0><U0E94>"
++collating-element <do-ae> from "<U0EC1><U0E94>"
++collating-element <do-o> from "<U0EC2><U0E94>"
++collating-element <do-ai-maimuan> from "<U0EC3><U0E94>"
++collating-element <do-ai-maimalai> from "<U0EC4><U0E94>"
++
++collating-element <to-e> from "<U0EC0><U0E95>"
++collating-element <to-ae> from "<U0EC1><U0E95>"
++collating-element <to-o> from "<U0EC2><U0E95>"
++collating-element <to-ai-maimuan> from "<U0EC3><U0E95>"
++collating-element <to-ai-maimalai> from "<U0EC4><U0E95>"
++
++collating-element <tho-sung-e> from "<U0EC0><U0E96>"
++collating-element <tho-sung-ae> from "<U0EC1><U0E96>"
++collating-element <tho-sung-o> from "<U0EC2><U0E96>"
++collating-element <tho-sung-ai-maimuan> from "<U0EC3><U0E96>"
++collating-element <tho-sung-ai-maimalai> from "<U0EC4><U0E96>"
++
++collating-element <tho-tam-e> from "<U0EC0><U0E97>"
++collating-element <tho-tam-ae> from "<U0EC1><U0E97>"
++collating-element <tho-tam-o> from "<U0EC2><U0E97>"
++collating-element <tho-tam-ai-maimuan> from "<U0EC3><U0E97>"
++collating-element <tho-tam-ai-maimalai> from "<U0EC4><U0E97>"
++
++collating-element <no-e> from "<U0EC0><U0E99>"
++collating-element <no-ae> from "<U0EC1><U0E99>"
++collating-element <no-o> from "<U0EC2><U0E99>"
++collating-element <no-ai-maimuan> from "<U0EC3><U0E99>"
++collating-element <no-ai-maimalai> from "<U0EC4><U0E99>"
++
++collating-element <bo-e> from "<U0EC0><U0E9A>"
++collating-element <bo-ae> from "<U0EC1><U0E9A>"
++collating-element <bo-o> from "<U0EC2><U0E9A>"
++collating-element <bo-ai-maimuan> from "<U0EC3><U0E9A>"
++collating-element <bo-ai-maimalai> from "<U0EC4><U0E9A>"
++
++collating-element <po-e> from "<U0EC0><U0E9B>"
++collating-element <po-ae> from "<U0EC1><U0E9B>"
++collating-element <po-o> from "<U0EC2><U0E9B>"
++collating-element <po-ai-maimuan> from "<U0EC3><U0E9B>"
++collating-element <po-ai-maimalai> from "<U0EC4><U0E9B>"
++
++collating-element <pho-sung-e> from "<U0EC0><U0E9C>"
++collating-element <pho-sung-ae> from "<U0EC1><U0E9C>"
++collating-element <pho-sung-o> from "<U0EC2><U0E9C>"
++collating-element <pho-sung-ai-maimuan> from "<U0EC3><U0E9C>"
++collating-element <pho-sung-ai-maimalai> from "<U0EC4><U0E9C>"
++
++collating-element <fo-tam-e> from "<U0EC0><U0E9D>"
++collating-element <fo-tam-ae> from "<U0EC1><U0E9D>"
++collating-element <fo-tam-o> from "<U0EC2><U0E9D>"
++collating-element <fo-tam-ai-maimuan> from "<U0EC3><U0E9D>"
++collating-element <fo-tam-ai-maimalai> from "<U0EC4><U0E9D>"
++
++collating-element <pho-tam-e> from "<U0EC0><U0E9E>"
++collating-element <pho-tam-ae> from "<U0EC1><U0E9E>"
++collating-element <pho-tam-o> from "<U0EC2><U0E9E>"
++collating-element <pho-tam-ai-maimuan> from "<U0EC3><U0E9E>"
++collating-element <pho-tam-ai-maimalai> from "<U0EC4><U0E9E>"
++
++collating-element <fo-sung-e> from "<U0EC0><U0E9F>"
++collating-element <fo-sung-ae> from "<U0EC1><U0E9F>"
++collating-element <fo-sung-o> from "<U0EC2><U0E9F>"
++collating-element <fo-sung-ai-maimuan> from "<U0EC3><U0E9F>"
++collating-element <fo-sung-ai-maimalai> from "<U0EC4><U0E9F>"
++
++collating-element <mo-e> from "<U0EC0><U0EA1>"
++collating-element <mo-ae> from "<U0EC1><U0EA1>"
++collating-element <mo-o> from "<U0EC2><U0EA1>"
++collating-element <mo-ai-maimuan> from "<U0EC3><U0EA1>"
++collating-element <mo-ai-maimalai> from "<U0EC4><U0EA1>"
++
++collating-element <yo-e> from "<U0EC0><U0EA2>"
++collating-element <yo-ae> from "<U0EC1><U0EA2>"
++collating-element <yo-o> from "<U0EC2><U0EA2>"
++collating-element <yo-ai-maimuan> from "<U0EC3><U0EA2>"
++collating-element <yo-ai-maimalai> from "<U0EC4><U0EA2>"
++
++collating-element <ro-e> from "<U0EC0><U0EA3>"
++collating-element <ro-ae> from "<U0EC1><U0EA3>"
++collating-element <ro-o> from "<U0EC2><U0EA3>"
++collating-element <ro-ai-maimuan> from "<U0EC3><U0EA3>"
++collating-element <ro-ai-maimalai> from "<U0EC4><U0EA3>"
++
++collating-element <lo-e> from "<U0EC0><U0EA5>"
++collating-element <lo-ae> from "<U0EC1><U0EA5>"
++collating-element <lo-o> from "<U0EC2><U0EA5>"
++collating-element <lo-ai-maimuan> from "<U0EC3><U0EA5>"
++collating-element <lo-ai-maimalai> from "<U0EC4><U0EA5>"
++
++collating-element <wo-e> from "<U0EC0><U0EA7>"
++collating-element <wo-ae> from "<U0EC1><U0EA7>"
++collating-element <wo-o> from "<U0EC2><U0EA7>"
++collating-element <wo-ai-maimuan> from "<U0EC3><U0EA7>"
++collating-element <wo-ai-maimalai> from "<U0EC4><U0EA7>"
++
++collating-element <so-e> from "<U0EC0><U0EAA>"
++collating-element <so-ae> from "<U0EC1><U0EAA>"
++collating-element <so-o> from "<U0EC2><U0EAA>"
++collating-element <so-ai-maimuan> from "<U0EC3><U0EAA>"
++collating-element <so-ai-maimalai> from "<U0EC4><U0EAA>"
++
++collating-element <ho-e> from "<U0EC0><U0EAB>"
++collating-element <ho-ae> from "<U0EC1><U0EAB>"
++collating-element <ho-o> from "<U0EC2><U0EAB>"
++collating-element <ho-ai-maimuan> from "<U0EC3><U0EAB>"
++collating-element <ho-ai-maimalai> from "<U0EC4><U0EAB>"
++
++collating-element <o-ae> from "<U0EC1><U0EAD>"
++collating-element <o-o> from "<U0EC2><U0EAD>"
++collating-element <o-ai-maimuan> from "<U0EC3><U0EAD>"
++collating-element <o-ai-maimalai> from "<U0EC4><U0EAD>"
++
++collating-element <hor-e> from "<U0EC0><U0EAE>"
++collating-element <hor-ae> from "<U0EC1><U0EAE>"
++collating-element <hor-o> from "<U0EC2><U0EAE>"
++collating-element <hor-ai-maimuan> from "<U0EC3><U0EAE>"
++collating-element <hor-ai-maimalai> from "<U0EC4><U0EAE>"
++
++collating-element <nhor-e> from "<U0EC0><U0EDC>"
++collating-element <nhor-ae> from "<U0EC1><U0EDC>"
++collating-element <nhor-o> from "<U0EC2><U0EDC>"
++collating-element <nhor-ai-maimuan> from "<U0EC3><U0EDC>"
++collating-element <nhor-ai-maimalai> from "<U0EC4><U0EDC>"
++
++collating-element <mhor-e> from "<U0EC0><U0EDD>"
++collating-element <mhor-ae> from "<U0EC1><U0EDD>"
++collating-element <mhor-o> from "<U0EC2><U0EDD>"
++collating-element <mhor-ai-maimuan> from "<U0EC3><U0EDD>"
++collating-element <mhor-ai-maimalai> from "<U0EC4><U0EDD>"
++
++
++collating-symbol <BLANK>
++collating-symbol <LaoI>
++collating-symbol <CAP>
++collating-symbol <MIN>
++collating-symbol <EXTRA>
++
++order_start forward;forward;forward;forward
++
++% definitions of extra collating symbols
++<BLANK>
++<LaoI>
++<CAP>
++<MIN>
++<EXTRA>
++
++UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE
++
++% punctuation marks, ordered after ISO/IEC 14651
++<U0020> IGNORE;IGNORE;<U0020>;IGNORE % SPACE
++<U005F> IGNORE;IGNORE;<U005F>;IGNORE % LOW LINE
++<U002D> IGNORE;IGNORE;<U002D>;IGNORE % HYPHEN-MINUS
++<U002C> IGNORE;IGNORE;<U002C>;IGNORE % COMMA
++<U003B> IGNORE;IGNORE;<U003B>;IGNORE % SEMICOLON
++<U003A> IGNORE;IGNORE;<U003A>;IGNORE % COLON
++<U0021> IGNORE;IGNORE;<U0021>;IGNORE % EXCLAMATION MARK
++<U003F> IGNORE;IGNORE;<U003F>;IGNORE % QUESTION MARK
++<U002F> IGNORE;IGNORE;<U002F>;IGNORE % SOLIDUS
++<U002E> IGNORE;IGNORE;<U002E>;IGNORE % FULL STOP
++<U0EAF> IGNORE;IGNORE;<U0EAF>;IGNORE % Lao CHARACTER Lao Ellipse
++<U0060> IGNORE;IGNORE;<U0060>;IGNORE % GRAVE ACCENT
++<U005E> IGNORE;IGNORE;<U005E>;IGNORE % CIRCUMFLEX
++<U007E> IGNORE;IGNORE;<U007E>;IGNORE % TILDE
++<U0027> IGNORE;IGNORE;<U0027>;IGNORE % APOSTROPHE
++<U0022> IGNORE;IGNORE;<U0022>;IGNORE % QUOTATION MARK
++<U0028> IGNORE;IGNORE;<U0028>;IGNORE % LEFT PAREN.
++<U005B> IGNORE;IGNORE;<U005B>;IGNORE % LT BRACKET
++<U007B> IGNORE;IGNORE;<U007B>;IGNORE % LEFT CURLY BRACKET
++<U007D> IGNORE;IGNORE;<U007D>;IGNORE % RIGHT CURLY BRACKET
++<U005D> IGNORE;IGNORE;<U005D>;IGNORE % RT BRACKET
++<U0029> IGNORE;IGNORE;<U0029>;IGNORE % RIGHT PAREN.
++<U0040> IGNORE;IGNORE;<U0040>;IGNORE % COMMERCIAL AT
++<U20AD> IGNORE;IGNORE;<U20AD>;IGNORE % Lao CHARACTER SYMBOL KIP
++<U0024> IGNORE;IGNORE;<U0024>;IGNORE % DOLLAR SIGN
++<U002A> IGNORE;IGNORE;<U002A>;IGNORE % ASTERISK
++<U005C> IGNORE;IGNORE;<U005C>;IGNORE % BACK SOLIDUS
++<U0026> IGNORE;IGNORE;<U0026>;IGNORE % AMPERSAND
++<U0023> IGNORE;IGNORE;<U0023>;IGNORE % NUMBER SIGN
++<U0025> IGNORE;IGNORE;<U0025>;IGNORE % PERCENT
++<U002B> IGNORE;IGNORE;<U002B>;IGNORE % PLUS
++<U003C> IGNORE;IGNORE;<U003C>;IGNORE % LESS THAN
++<U003D> IGNORE;IGNORE;<U003D>;IGNORE % EQUAL
++<U003E> IGNORE;IGNORE;<U003E>;IGNORE % GREATER THAN
++<U007C> IGNORE;IGNORE;<U007C>;IGNORE % VERTICAL LINE
++
++% Lao tone marks and diacritics
++
++<U0ECC> IGNORE;<U0ECC>;<BLANK>;<BLANK> % Lao CHARACTER THANTHAKHAT Or Cancellation Mark
++<U0EC8> IGNORE;<U0EC8>;<BLANK>;<BLANK> % Lao CHARACTER MAI EK
++<U0EC9> IGNORE;<U0EC9>;<BLANK>;<BLANK> % Lao CHARACTER MAI THO
++<U0ECA> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI TI
++<U0ECB> IGNORE;<U0ECB>;<BLANK>;<BLANK> % Lao CHARACTER MAI CHATTAWA
++<U0EBB> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI Kon
++<U0ECD> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI Niggahita
++<U0EC6> IGNORE;<U0ECA>;<BLANK>;<BLANK> % Lao CHARACTER MAI Ko Lao
++
++
++
++
++% Arabic and Lao decimal digits
++<U0030> <U0030>;<BLANK>;<BLANK>;<BLANK> % DIGIT ZERO
++<U0ED0> <U0030>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT ZERO
++<U0031> <U0031>;<BLANK>;<BLANK>;<BLANK> % DIGIT ONE
++<U0ED1> <U0031>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT ONE
++<U0032> <U0032>;<BLANK>;<BLANK>;<BLANK> % DIGIT TWO
++<U0ED2> <U0032>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT TWO
++<U0033> <U0033>;<BLANK>;<BLANK>;<BLANK> % DIGIT THREE
++<U0ED3> <U0033>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT THREE
++<U0034> <U0034>;<BLANK>;<BLANK>;<BLANK> % DIGIT FOUR
++<U0ED4> <U0034>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT FOUR
++<U0035> <U0035>;<BLANK>;<BLANK>;<BLANK> % DIGIT FIVE
++<U0ED5> <U0035>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT FIVE
++<U0036> <U0036>;<BLANK>;<BLANK>;<BLANK> % DIGIT SIX
++<U0ED6> <U0036>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT SIX
++<U0037> <U0037>;<BLANK>;<BLANK>;<BLANK> % DIGIT SEVEN
++<U0ED7> <U0037>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT SEVEN
++<U0038> <U0038>;<BLANK>;<BLANK>;<BLANK> % DIGIT EIGHT
++<U0ED8> <U0038>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT EIGHT
++<U0039> <U0039>;<BLANK>;<BLANK>;<BLANK> % DIGIT NINE
++<U0ED9> <U0039>;<LaoI>;<BLANK>;<BLANK> % Lao DIGIT NINE
++
++% Latin alphabet
++<U0041> <U0041>;<BLANK>;<BLANK>;<CAP> % A
++<U0061> <U0041>;<BLANK>;<BLANK>;<MIN> % a
++<U0042> <U0042>;<BLANK>;<BLANK>;<CAP> % B
++<U0062> <U0042>;<BLANK>;<BLANK>;<MIN> % b
++<U0043> <U0043>;<BLANK>;<BLANK>;<CAP> % C
++<U0063> <U0043>;<BLANK>;<BLANK>;<MIN> % c
++<U0044> <U0044>;<BLANK>;<BLANK>;<CAP> % D
++<U0064> <U0044>;<BLANK>;<BLANK>;<MIN> % d
++<U0045> <U0045>;<BLANK>;<BLANK>;<CAP> % E
++<U0065> <U0045>;<BLANK>;<BLANK>;<MIN> % e
++<U0046> <U0046>;<BLANK>;<BLANK>;<CAP> % F
++<U0066> <U0046>;<BLANK>;<BLANK>;<MIN> % f
++<U0047> <U0047>;<BLANK>;<BLANK>;<CAP> % G
++<U0067> <U0047>;<BLANK>;<BLANK>;<MIN> % g
++<U0048> <U0048>;<BLANK>;<BLANK>;<CAP> % H
++<U0068> <U0048>;<BLANK>;<BLANK>;<MIN> % h
++<U0049> <U0049>;<BLANK>;<BLANK>;<CAP> % I
++<U0069> <U0049>;<BLANK>;<BLANK>;<MIN> % i
++<U004A> <U004A>;<BLANK>;<BLANK>;<CAP> % J
++<U006A> <U004A>;<BLANK>;<BLANK>;<MIN> % j
++<U004B> <U004B>;<BLANK>;<BLANK>;<CAP> % K
++<U006B> <U004B>;<BLANK>;<BLANK>;<MIN> % k
++<U004C> <U004C>;<BLANK>;<BLANK>;<CAP> % L
++<U006C> <U004C>;<BLANK>;<BLANK>;<MIN> % l
++<U004D> <U004D>;<BLANK>;<BLANK>;<CAP> % M
++<U006D> <U004D>;<BLANK>;<BLANK>;<MIN> % m
++<U004E> <U004E>;<BLANK>;<BLANK>;<CAP> % N
++<U006E> <U004E>;<BLANK>;<BLANK>;<MIN> % n
++<U004F> <U004F>;<BLANK>;<BLANK>;<CAP> % O
++<U006F> <U004F>;<BLANK>;<BLANK>;<MIN> % o
++<U0050> <U0050>;<BLANK>;<BLANK>;<CAP> % P
++<U0070> <U0050>;<BLANK>;<BLANK>;<MIN> % p
++<U0051> <U0051>;<BLANK>;<BLANK>;<CAP> % Q
++<U0071> <U0051>;<BLANK>;<BLANK>;<MIN> % q
++<U0052> <U0052>;<BLANK>;<BLANK>;<CAP> % R
++<U0072> <U0052>;<BLANK>;<BLANK>;<MIN> % r
++<U0053> <U0053>;<BLANK>;<BLANK>;<CAP> % S
++<U0073> <U0053>;<BLANK>;<BLANK>;<MIN> % s
++<U0054> <U0054>;<BLANK>;<BLANK>;<CAP> % T
++<U0074> <U0054>;<BLANK>;<BLANK>;<MIN> % t
++<U0055> <U0055>;<BLANK>;<BLANK>;<CAP> % U
++<U0075> <U0055>;<BLANK>;<BLANK>;<MIN> % u
++<U0056> <U0056>;<BLANK>;<BLANK>;<CAP> % V
++<U0076> <U0056>;<BLANK>;<BLANK>;<MIN> % v
++<U0057> <U0057>;<BLANK>;<BLANK>;<CAP> % W
++<U0077> <U0057>;<BLANK>;<BLANK>;<MIN> % w
++<U0058> <U0058>;<BLANK>;<BLANK>;<CAP> % X
++<U0078> <U0058>;<BLANK>;<BLANK>;<MIN> % x
++<U0059> <U0059>;<BLANK>;<BLANK>;<CAP> % Y
++<U0079> <U0059>;<BLANK>;<BLANK>;<MIN> % y
++<U005A> <U005A>;<BLANK>;<BLANK>;<CAP> % Z
++<U007A> <U005A>;<BLANK>;<BLANK>;<MIN> % z
++
++%
++% Lao consonants, with leading vowels rearrangement
++%
++<U0E81> <U0E81>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER KO
++<ko-e> "<U0E81><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<ko-ae> "<U0E81><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<ko-o> "<U0E81><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<ko-ai-maimuan> "<U0E81><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<ko-ai-maimalai> "<U0E81><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E82> <U0E82>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER KHO sung
++<kho-sung-e> "<U0E82><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<kho-sung-ae> "<U0E82><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<kho-sung-o> "<U0E82><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<kho-sung-ai-maimuan> "<U0E82><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<kho-sung-ai-maimalai> "<U0E82><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E84> <U0E84>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER KHO tam
++<kho-tam-e> "<U0E84><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<kho-tam-ae> "<U0E84><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<kho-tam-o> "<U0E84><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<kho-tam-ai-maimuan> "<U0E84><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<kho-tam-ai-maimalai> "<U0E84><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E87> <U0E87>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER NGO
++<ngo-e> "<U0E87><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<ngo-ae> "<U0E87><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<ngo-o> "<U0E87><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<ngo-ai-maimuan> "<U0E87><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<ngo-ai-maimalai> "<U0E87><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E88> <U0E88>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER CHO
++<cho-e> "<U0E88><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<cho-ae> "<U0E88><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<cho-o> "<U0E88><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<cho-ai-maimuan> "<U0E88><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<cho-ai-maimalai> "<U0E88><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E8A> <U0E8A>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SO
++<xo-e> "<U0E8A><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<xo-ae> "<U0E8A><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<xo-o> "<U0E8A><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<xo-ai-maimuan> "<U0E8A><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<xo-ai-maimalai> "<U0E8A><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E8D> <U0E8D>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Nyo
++<nyo-e> "<U0E8D><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<nyo-ae> "<U0E8D><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<nyo-o> "<U0E8D><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<nyo-ai-maimuan> "<U0E8D><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<nyo-ai-maimalai> "<U0E8D><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E94> <U0E94>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER DO
++<do-e> "<U0E94><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<do-ae> "<U0E94><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<do-o> "<U0E94><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<do-ai-maimuan> "<U0E94><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<do-ai-maimalai> "<U0E94><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E95> <U0E95>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER TO
++<to-e> "<U0E95><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<to-ae> "<U0E95><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<to-o> "<U0E95><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<to-ai-maimuan> "<U0E95><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<to-ai-maimalai> "<U0E95><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E96> <U0E96>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER THO Sung
++<tho-sung-e> "<U0E96><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<tho-sung-ae> "<U0E96><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<tho-sung-o> "<U0E96><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<tho-sung-ai-maimuan> "<U0E96><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<tho-sung-ai-maimalai> "<U0E96><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E97> <U0E97>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER THO Tam
++<tho-tam-e> "<U0E97><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<tho-tam-ae> "<U0E97><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<tho-tam-o> "<U0E97><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<tho-tam-ai-maimuan> "<U0E97><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<tho-tam-ai-maimalai> "<U0E97><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E99> <U0E99>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER NO
++<no-e> "<U0E99><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<no-ae> "<U0E99><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<no-o> "<U0E99><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<no-ai-maimuan> "<U0E99><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<no-ai-maimalai> "<U0E99><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E9A> <U0E9A>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER BO
++<bo-e> "<U0E9A><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<bo-ae> "<U0E9A><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<bo-o> "<U0E9A><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<bo-ai-maimuan> "<U0E9A><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<bo-ai-maimalai> "<U0E9A><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E9B> <U0E9B>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER PO
++<po-e> "<U0E9B><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<po-ae> "<U0E9B><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<po-o> "<U0E9B><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<po-ai-maimuan> "<U0E9B><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<po-ai-maimalai> "<U0E9B><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E9C> <U0E9C>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER PHO sUNG
++<pho-sung-e> "<U0E9C><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<pho-sung-ae> "<U0E9C><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<pho-sung-o> "<U0E9C><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<pho-sung-ai-maimuan> "<U0E9C><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<pho-sung-ai-maimalai> "<U0E9C><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E9D> <U0E9D>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER FO tam
++<fo-tam-e> "<U0E9D><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<fo-tam-ae> "<U0E9D><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<fo-tam-o> "<U0E9D><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<fo-tam-ai-maimuan> "<U0E9D><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<fo-tam-ai-maimalai> "<U0E9D><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E9E> <U0E9E>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER pho tam
++<pho-tam-e> "<U0E9E><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<pho-tam-ae> "<U0E9E><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<pho-tam-o> "<U0E9E><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<pho-tam-ai-maimuan> "<U0E9E><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<pho-tam-ai-maimalai> "<U0E9E><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0E9F> <U0E9F>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER fo sung
++<fo-sung-e> "<U0E9F><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<fo-sung-ae> "<U0E9F><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<fo-sung-o> "<U0E9F><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<fo-sung-ai-maimuan> "<U0E9F><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<fo-sung-ai-maimalai> "<U0E9F><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EA1> <U0EA1>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER MO
++<mo-e> "<U0EA1><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<mo-ae> "<U0EA1><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<mo-o> "<U0EA1><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<mo-ai-maimuan> "<U0EA1><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<mo-ai-maimalai> "<U0EA1><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EA2> <U0EA2>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER YO
++<yo-e> "<U0EA2><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<yo-ae> "<U0EA2><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<yo-o> "<U0EA2><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<yo-ai-maimuan> "<U0EA2><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<yo-ai-maimalai> "<U0EA2><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EA3> <U0EA3>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER RO
++<ro-e> "<U0EA3><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<ro-ae> "<U0EA3><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<ro-o> "<U0EA3><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<ro-ai-maimuan> "<U0EA3><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<ro-ai-maimalai> "<U0EA3><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EA5> <U0EA5>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER LO
++<lo-e> "<U0EA5><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<lo-ae> "<U0EA5><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<lo-o> "<U0EA5><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<lo-ai-maimuan> "<U0EA5><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<lo-ai-maimalai> "<U0EA5><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EA7> <U0EA7>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER WO
++<wo-e> "<U0EA7><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<wo-ae> "<U0EA7><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<wo-o> "<U0EA7><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<wo-ai-maimuan> "<U0EA7><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<wo-ai-maimalai> "<U0EA7><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EAA> <U0EAA>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SO
++<so-e> "<U0EAA><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<so-ae> "<U0EAA><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<so-o> "<U0EAA><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<so-ai-maimuan> "<U0EAA><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<so-ai-maimalai> "<U0EAA><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EAB> <U0EAB>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER HO
++<ho-e> "<U0EAB><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<ho-ae> "<U0EAB><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<ho-o> "<U0EAB><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<ho-ai-maimuan> "<U0EAB><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<ho-ai-maimalai> "<U0EAB><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EAD> <U0EAD>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER O
++<o-e> "<U0EAD><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<o-ae> "<U0EAD><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<o-o> "<U0EAD><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<o-ai-maimuan> "<U0EAD><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<o-ai-maimalai> "<U0EAD><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++<U0EAE> <U0EAE>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER HOr
++<hor-e> "<U0EAE><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<hor-ae> "<U0EAE><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<hor-o> "<U0EAE><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<hor-ai-maimuan> "<U0EAE><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<hor-ai-maimalai> "<U0EAE><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++
++<U0EDC> <U0EDC>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER NHOr
++<nhor-e> "<U0EDC><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<nhor-ae> "<U0EDC><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<nhor-o> "<U0EDC><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<nhor-ai-maimuan> "<U0EDC><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<nhor-ai-maimalai> "<U0EDC><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++
++<U0EDD> <U0EDC>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER HHOr
++<mhor-e> "<U0EDD><U0EC0>";<BLANK>;<BLANK>;<BLANK>
++<mor-ae> "<U0EDD><U0EC1>";<BLANK>;<BLANK>;<BLANK>
++<mor-o> "<U0EDD><U0EC2>";<BLANK>;<BLANK>;<BLANK>
++<mor-ai-maimuan> "<U0EDD><U0EC3>";<BLANK>;<BLANK>;<BLANK>
++<mor-ai-maimalai> "<U0EDD><U0EC4>";<BLANK>;<BLANK>;<BLANK>
++
++
++% order of Lao vowels
++<U0EB0> <U0EB0>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SAlA A
++<U0EB1> <U0EB1>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER MAI HAN-AKAT
++<U0EB2> <U0EB2>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER SAlA AA
++<U0EB3> <U0EB3>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AM
++<U0EB4> <U0EB4>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala I
++<U0EB5> <U0EB5>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala II
++<U0EB6> <U0EB6>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala UE
++<U0EB7> <U0EB7>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala UEE
++<U0EB8> <U0EB8>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala U
++<U0EB9> <U0EB9>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala UU
++<U0EBC> <U0EB9>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala Lo
++<U0EBD> <U0EB9>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala Oy
++<U0EC0> <U0EC0>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala E
++<U0EC1> <U0EC1>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AE
++<U0EC2> <U0EC2>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala O
++<U0EC3> <U0EC3>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AI MAIMUAN
++<U0EC4> <U0EC4>;<BLANK>;<BLANK>;<BLANK> % Lao CHARACTER Sala AI MAIMALAI
++
++order_end
++
++END LC_COLLATE
++
++LC_MONETARY
++
++int_curr_symbol "<U004C><U0041><U004B><U0020>"
++
++% monetary unit: Kip
++currency_symbol "<U20AD>"
++mon_decimal_point "<U002E>"
++mon_thousands_sep "<U002C>"
++mon_grouping 3;3
++positive_sign ""
++negative_sign "<U002D>"
++int_frac_digits 2
++frac_digits 2
++p_cs_precedes 1
++p_sep_by_space 2
++n_cs_precedes 1
++n_sep_by_space 2
++p_sign_posn 4
++n_sign_posn 4
++END LC_MONETARY
++
++
++LC_NUMERIC
++
++decimal_point "<U002E>"
++thousands_sep "<U002C>"
++grouping 3
++
++END LC_NUMERIC
++
++LC_TIME
++
++abday "<U0EAD><U0EB2><U002E>";"<U0E88><U002E>";"<U0E84><U002E>";/
++ "<U0E9E><U002E>";"<U0E9E><U0EAB><U002E>";"<U0EAA><U002E>";/
++ "<U0EAA><U002E>"
++day "<U0EAD><U0EB2><U0E97><U0EB4><U0E94>";/
++ "<U0E88><U0EB1><U0E99>";/
++ "<U0EAD><U0EB1><U0E87><U0E84><U0EB2><U0E99>";/
++ "<U0E9E><U0EB8><U0E94>";/
++ "<U0E9E><U0EB0><U0EAB><U0EB1><U0E94>";/
++ "<U0EAA><U0EB8><U0E81>";/
++ "<U0EC0><U0EAA><U0EBB><U0EB2>"
++abmon "<U0EA1><U002E><U0E81><U002E>";/
++ "<U0E81><U002E><U0E9E><U002E>";/
++ "<U0EA1><U002E><U0E99><U002E>";/
++ "<U0EA1><U002E><U0EAA><U002E>";/
++ "<U0E9E><U002E><U0E9E><U002E>";/
++ "<U0EA1><U0EB4><U002E><U0E96><U002E>";/
++ "<U0E81><U002E><U0EA5><U002E>";/
++ "<U0EAA><U002E><U0EAB><U002E>";/
++ "<U0E81><U002E><U0E8D><U002E>";/
++ "<U0E95><U002E><U0EA5><U002E>";/
++ "<U0E9E><U002E><U0E88><U002E>";/
++ "<U0E97><U002E><U0EA7><U002E>"
++mon "<U0EA1><U0EB1><U0E87><U0E81><U0EAD><U0E99>";/
++ "<U0E81><U0EB8><U0EA1><U0E9F><U0EB2>";/
++ "<U0EA1><U0EB5><U0E99><U0EB2>";/
++ "<U0EC0><U0EA1><U0EAA><U0EB2>";/
++ "<U0E9E><U0EB6><U0E94><U0EAA><U0EB0><U0E9E><U0EB2>";/
++ "<U0EA1><U0EB4><U0E96><U0EB8><U0E99><U0EB2>";/
++ "<U0E81><U0ECD><U0EA5><U0EB0><U0E81><U0EBB><U0E94>";/
++ "<U0EAA><U0EB4><U0E87><U0EAB><U0EB2>";/
++ "<U0E81><U0EB1><U0E99><U0E8D><U0EB2>";/
++ "<U0E95><U0EB8><U0EA5><U0EB2>";/
++ "<U0E9E><U0EB0><U0E88><U0EB4><U0E81>";/
++ "<U0E97><U0EB1><U0E99><U0EA7><U0EB2>"
++% Appropriate date & time representation "%a %e %b %Ey, %H:%M:%S"
++d_t_fmt "%a<U0020>%e<U0020>%b<U0020>%Ey<U002C><U0020>%H<U003A>%M<U003A>%S"
++% Appropriate date representation "%d/%m/%Ey"
++d_fmt "%d<U002F>%m<U002F>%Ey"
++% Appropriate time representation "%H:%M:%S"
++t_fmt "%H<U003A>%M<U003A>%S"
++% AM/PM signs
++am_pm "<U0041><U004D>";"<U0050><U004D>"
++% Appropriate 12-hour clock representation "%I:%M:%S %p"
++t_fmt_ampm "%I<U003A>%M<U003A>%S<U0020>%p"
++% Era : Buddhist Era
++era "+:1:-543<U002F>01<U002F>01:+*:<U0E9E><U002E><U0EAA><U002E>:%EC<U0020>%Ey"
++era_d_fmt "%e<U0020>%b<U0020>%Ey"
++era_t_fmt "%H<U002E>%M<U002E>%S<U0020><U0E99><U002E>"
++era_d_t_fmt "<U0EA7><U0EB1><U0E99>%A<U0E97><U0EB5><U0EC8><U0020>%e<U0020>%B<U0020>%EC<U0020>%Ey<U002C><U0020>%H<U002E>%M<U002E>%S<U0020><U0E99><U002E>"
++% Appropriate date representation (date(1)) "%a %e %b %Ey %H:%M:%S %Z"
++date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/
++<U0020><U0025><U0045><U0079><U0020><U0025><U0048><U003A><U0025><U004D>/
++<U003A><U0025><U0053><U0020><U0025><U005A>"
++% ICT-7ICT-7
++timezone "<U0049><U0043><U0054><U002D><U0037><U0049><U0043><U0054><U002d><U0037>"
++END LC_TIME
++
++LC_MESSAGES
++
++% yesexpr : begins with "y", "Y", or mo
++% noexpr : begins with "n", "N", or Bo
++% yesstr = "men" = Sala ae + Mo + MAI EK + No
++% nostr = "Bo Men" = Letter Bo +salo Or+ MAI EK + mo+ Ma Ek+ No
++
++yesexpr "<U005E><U005B><U0079><U0059><U0EA1><U005D>"
++noexpr "<U005E><U005B><U006E><U004E><U0E9A><U005D>"
++yesstr "<U0EC1><U0EA1><U0EC8><U0E99>"
++nostr "<U0E9A><U0ECD><U0EC8><U0EC1><U0EA1><U0EC8><U0E99>"
++
++END LC_MESSAGES
++
++LC_PAPER
++height 297
++width 210
++END LC_PAPER
++
++LC_TELEPHONE
++tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
++<U006C>"
++tel_dom_fmt "<U0028><U0025><U0041><U0029><U0025><U006C>"
++int_select "<U0030><U0030><U0031>"
++int_prefix "<U0038><U0035><U0036>"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++% FIXME
++measurement 1
++END LC_MEASUREMENT
++
++LC_NAME
++name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
++<U0025><U006D><U0025><U0074><U0025><U0066>"
++
++name_mr "<U0E97>."
++name_mrs "<U0E99>."
++END LC_NAME
++
++LC_ADDRESS
++% "%f%N%a%N%d%N%r%t%e%t%b%N%h%t%s%N%T%N%S%N%z%c%N"
++postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
++<U0025><U0064><U0025><U004E><U0025><U0072><U0025><U0074><U0025><U0065>/
++<U0025><U0074><U0025><U0062><U0025><U004E><U0025><U0068><U0025><U0074>/
++<U0025><U0073><U0025><U004E><U0025><U0054><U0025><U004E><U0025><U0053>/
++<U0025><U004E><U0025><U007A><U0025><U0063><U0025><U004E>"
++country_name "<U0EA5><U0EB2><U0EA7>"
++%FIXME
++%country_post ""
++country_ab2 "<U004C><U0041>"
++country_ab3 "<U004C><U0041><U004F>"
++country_num 418
++country_car "<U004C><U0041><U004F>"
++%FIXME
++%country_isbn ""
++lang_name "<U0EA5><U0EB2><U0EA7>"
++lang_ab "<U006C><U006F>"
++lang_term "<U006c><U0061><U006F>"
++lang_lib "<U006C><U0061><U006F>"
++END LC_ADDRESS
+--- glibc-2.3.2/localedata/locales/mn_MN 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/locales/mn_MN 2003-04-24 20:05:58.000000000 -0400
+@@ -0,0 +1,196 @@
++comment_char %
++escape_char /
++% Mongolian language (cyrillic) locale for Mongolia
++% Sanlig Badral <badral@chinggis.com>
++% Revision: 0.9 (2003-2-27)
++% Charsets: UTF-8
++% Distribution and use is free, also
++% for commercial purposes.
++
++LC_IDENTIFICATION
++title "Mongolian locale for Mongolia"
++source "OPENMN"
++address ""
++contact ""
++email "bug-glibc@gnu.org"
++tel ""
++fax ""
++language "Mongolian"
++territory "Mongolia"
++revision "0.9"
++date "2003-02-27"
++
++category "mn_MN:2000";LC_IDENTIFICATION
++category "mn_MN:2000";LC_CTYPE
++category "mn_MN:2000";LC_COLLATE
++category "mn_MN:2000";LC_TIME
++category "mn_MN:2000";LC_NUMERIC
++category "mn_MN:2000";LC_MONETARY
++category "mn_MN:2000";LC_MESSAGES
++category "mn_MN:2000";LC_PAPER
++category "mn_MN:2000";LC_NAME
++category "mn_MN:2000";LC_ADDRESS
++category "mn_MN:2000";LC_TELEPHONE
++
++END LC_IDENTIFICATION
++
++LC_COLLATE
++copy "iso14651_t1"
++
++% iso14651_t1 is missing Mongolian ue(straight u), oe(barred o)
++% like russian, but with <o-=> (<barred-o>) after <o=> and
++% <u'=>(straight u) after <u=>
++
++collating-symbol <o-=>
++collating-symbol <u'=>
++
++reorder-after <CYR-O>
++<o-=>
++reorder-after <CYR-OUBRE>
++<u'=>
++
++reorder-after <U043E>
++<U04E9> <o-=>;<PCL>;<MIN>;IGNORE
++reorder-after <U041E>
++<U04E8> <o-=>;<PCL>;<CAP>;IGNORE
++
++reorder-after <U0443>
++<U04AF> <u'=>;<PCL>;<MIN>;IGNORE
++reorder-after <U0423>
++<U04AE> <u'=>;<PCL>;<CAP>;IGNORE
++
++reorder-end
++END LC_COLLATE
++
++LC_CTYPE
++copy "i18n"
++END LC_CTYPE
++
++LC_MONETARY
++int_curr_symbol "<U004D><U004E><U0054><U0020>"
++currency_symbol "<U20AE>"
++mon_decimal_point "<U002E>"
++mon_thousands_sep "<U0020>"
++mon_grouping 3;3
++positive_sign ""
++negative_sign "<U002D>"
++int_frac_digits 2
++frac_digits 2
++p_cs_precedes 0
++p_sep_by_space 1
++n_cs_precedes 0
++n_sep_by_space 1
++p_sign_posn 1
++n_sign_posn 1
++
++END LC_MONETARY
++
++LC_NUMERIC
++decimal_point "<U002C>"
++thousands_sep "<U002E>"
++grouping 3;3
++END LC_NUMERIC
++
++LC_TIME
++% Abbreviated weekday names (%a)
++abday "<U041D><U044F>";"<U0414><U0430>";/
++ "<U041C><U044F>";"<U041B><U0445>";/
++ "<U041F><U04AF>";"<U0411><U0430>";/
++ "<U0411><U044F>"
++% Full weekday names (%A)
++day "<U041D><U044F><U043C>";/
++ "<U0414><U0430><U0432><U0430><U0430>";/
++ "<U041C><U044F><U0433><U043C><U0430><U0440>";/
++ "<U041B><U0445><U0430><U0433><U0432><U0430>";/
++ "<U041F><U04AF><U0440><U044D><U0432>";/
++ "<U0411><U0430><U0430><U0441><U0430><U043D>";/
++ "<U0411><U044F><U043C><U0431><U0430>"
++% Abbreviated month names (%b)
++abmon "<U0031><U002D><U0440>";"<U0032><U002D><U0440>";/
++ "<U0033><U002D><U0440>";"<U0034><U002D><U0440>";/
++ "<U0035><U002D><U0440>";"<U0036><U002D><U0440>";/
++ "<U0037><U002D><U0440>";"<U0038><U002D><U0440>";/
++ "<U0039><U002D><U0440>";"<U0031><U0030><U002D><U0440>";/
++ "<U0031><U0031><U002D><U0440>";"<U0031><U0032><U002D><U0440>"
++% Full month names (%B)
++mon "<U041D><U044D><U0433><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0425><U043E><U0451><U0440><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0413><U0443><U0440><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0414><U04E9><U0440><U04E9><U0432><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0422><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0417><U0443><U0440><U0433><U0430><U0430><U0434><U0443><U0433><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0414><U043E><U043B><U043E><U043E><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U041D><U0430><U0439><U043C><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0415><U0441><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0410><U0440><U0430><U0432><U0434><U0443><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0410><U0440><U0432><U0430><U043D><U043D><U044D><U0433><U0434><U04AF><U0433><U044D><U044D><U0440><U0020><U0441><U0430><U0440>";/
++ "<U0410><U0440><U0432><U0430><U043D><U0445><U043E><U0451><U0440><U0434><U0433><U0430><U0430><U0440><U0020><U0441><U0430><U0440>"
++% Appropriate date and time representation
++% "%a %d %b %Y %T %Z"
++d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
++
++% Appropriate date representation
++% "%Y.%m.%d"
++d_fmt "<U0025><U0059><U002E><U0025><U006D><U002E><U0025><U0064>"
++% Appropriate time representation
++% "%T"
++t_fmt "<U0025><U0054>"
++% Appropriate 12 h time representation (%r)
++am_pm "";""
++t_fmt_ampm ""
++% Full date and time representation
++% "%a %b %e %H:%M:%S %Z %Y"
++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>"
++END LC_TIME
++
++LC_MESSAGES
++yesexpr "<U005E><U005B><U0442><U0422><U0079><U0059><U005D><U002E><U002A>"
++noexpr "<U005E><U005B><U04AF><U04AE><U006E><U004E><U005D><U002E><U002A>"
++END LC_MESSAGES
++
++% Paper format
++LC_PAPER
++height 297
++width 210
++END LC_PAPER
++
++LC_NAME
++name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
++<U0025><U006D><U0025><U0074><U0025><U0066>"
++
++name_miss "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
++name_mr "<U041D><U043E><U0451><U043D>"
++name_mrs "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
++name_ms "<U0425><U0430><U0442><U0430><U0433><U0442><U0430><U0439>"
++END LC_NAME
++
++LC_ADDRESS
++postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
++<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
++<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
++<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
++<U004E><U0025><U0063><U0025><U004E>"
++
++country_name "<U004D><U006F><U006E><U0067><U006F><U006C><U0069><U0061>"
++country_post "<U004D><U004E>"
++country_ab2 "<U004D><U004E>"
++country_ab3 "<U004D><U004E><U0047>"
++country_num 496
++country_car "<U004D><U0047><U004C>"
++country_isbn 99929
++lang_name "<U004D><U006F><U006E><U0067><U006F><U006C><U0069><U0061><U006E>"
++lang_ab "<U006D><U006E>"
++lang_term "<U006D><U006F><U006E>"
++lang_lib "<U006D><U006F><U006E>"
++END LC_ADDRESS
++
++LC_TELEPHONE
++tel_int_fmt "<U0028><U002B><U0025><U0063><U0020><U0025><U0061><U0029><U0020><U0025><U006C>"
++tel_dom_fmt "<U0028><U0030><U0025><U0061><U0029><U0020><U0025><U006C>"
++int_select "<U0030><U0030>"
++int_prefix "<U0039><U0037><U0036>"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++measurement 1
++END LC_MEASUREMENT
+--- glibc-2.3.2/localedata/locales/no_NO 2000-10-26 13:57:17.000000000 -0400
++++ glibc-2.3.2/localedata/locales/no_NO 2003-08-21 08:37:06.000000000 -0400
+@@ -1056,6 +1056,8 @@
+ <U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+ <U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+ <U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
++<U00D0> <U0044>;<U00D0>;<CAPITAL>;IGNORE %LATIN CAPITAL LETTER ETH (Icelandic)
++<U00F0> <U0044>;<U00D0>;<SMALL>;IGNORE %LATIN SMALL LETTER ETH (Icelandic)
+ <d8>
+ <U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+ <U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+--- glibc-2.3.2/localedata/locales/se_NO 2001-11-15 20:26:50.000000000 -0500
++++ glibc-2.3.2/localedata/locales/se_NO 2002-11-16 08:55:43.000000000 -0500
+@@ -1,4 +1,4 @@
+-# $Id: se_NO,v 1.1 2001/11/16 01:26:50 drepper Exp $
++# $Id: se_NO,v 1.10 2001/11/10 01:35:26 boerre Exp $
+ comment_char %
+ escape_char /
+ %
+--- glibc-2.3.2/localedata/locales/sr_YU 2002-02-13 19:58:15.000000000 -0500
++++ glibc-2.3.2/localedata/locales/sr_YU 2003-04-24 20:05:58.000000000 -0400
+@@ -224,7 +224,7 @@
+ END LC_MESSAGES
+
+ LC_MONETARY
+-int_curr_symbol "<U0059><U0055><U004E><U0020>"
++int_curr_symbol "<U0059><U0055><U004D><U0020>"
+ currency_symbol "<U0064><U0069><U006E>"
+ mon_decimal_point "<U002C>"
+ mon_thousands_sep "<U0020>"
+--- glibc-2.3.2/localedata/locales/sr_YU@cyrillic 2000-10-27 15:33:59.000000000 -0400
++++ glibc-2.3.2/localedata/locales/sr_YU@cyrillic 2003-04-24 20:05:58.000000000 -0400
+@@ -61,7 +61,7 @@
+ END LC_MESSAGES
+
+ LC_MONETARY
+-int_curr_symbol "<U0059><U0055><U004E><U0020>"
++int_curr_symbol "<U0059><U0055><U004D><U0020>"
+ currency_symbol "<U0434><U0438><U043D>"
+ mon_decimal_point "<U002C>"
+ mon_thousands_sep "<U0020>"
+--- glibc-2.3.2/localedata/locales/st_ZA 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/locales/st_ZA 2003-05-10 04:39:17.000000000 -0400
+@@ -0,0 +1,254 @@
++escape_char /
++comment_char %
++
++% ChangeLog
++% 0.1 (2003-04-21):
++% - Initial Sotho locale for South Africa
++% by Zuza Software Foundation
++
++LC_IDENTIFICATION
++title "Sotho locale for South Africa"
++source "Zuza Software Foundation"
++address "PO Box 13412, Mowbray, 7705, South Africa"
++contact "Dwayne Bailey"
++email "dwayne@translate.org.za"
++tel "+27 (0)21 448 9265"
++fax "+27 (0)21 448 9574"
++language "Sotho"
++territory "South Africa"
++revision "0.1"
++date "2003-04-21"
++%
++category "st_ZA:2003";LC_IDENTIFICATION
++category "st_ZA:2003";LC_CTYPE
++category "st_ZA:2003";LC_COLLATE
++category "st_ZA:2003";LC_TIME
++category "st_ZA:2003";LC_NUMERIC
++category "st_ZA:2003";LC_MONETARY
++category "st_ZA:2003";LC_MESSAGES
++category "st_ZA:2003";LC_PAPER
++category "st_ZA:2003";LC_NAME
++category "st_ZA:2003";LC_ADDRESS
++category "st_ZA:2003";LC_TELEPHONE
++category "st_ZA:2003";LC_MEASUREMENT
++
++END LC_IDENTIFICATION
++
++LC_CTYPE
++% Use the characters described in the charmap file "i18n.tgz"
++copy "i18n"
++END LC_CTYPE
++
++LC_COLLATE
++% Copy the template from ISO/IEC 14651 i.e.
++% use the rules there when making ordered lists of words.
++copy "iso14651_t1"
++END LC_COLLATE
++
++LC_MONETARY
++copy "en_ZA"
++END LC_MONETARY
++
++LC_NUMERIC
++copy "en_ZA"
++END LC_NUMERIC
++
++LC_TIME
++
++% abday - The abbreviations for the week days:
++% - Son, Mma, Bed, Rar, Ne, Hla, Moq
++abday "<U0053><U006F><U006E>";/
++ "<U004D><U006D><U0061>";/
++ "<U0042><U0065><U0064>";/
++ "<U0052><U0061><U0072>";/
++ "<U004E><U0065>";/
++ "<U0048><U006C><U0061>";/
++ "<U004D><U006F><U0071>"
++
++% day - The full names of the week days:
++% - Sontaha, Mmantaha, Labobedi, Laboraru, Labone, Labohlane, Moqebelo
++day "<U0053><U006F><U006E><U0074><U0061><U0068><U0061>";/
++ "<U004D><U006D><U0061><U006E><U0074><U0061><U0068><U0061>";/
++ "<U004C><U0061><U0062><U006F><U0062><U0065><U0064><U0069>";/
++ "<U004C><U0061><U0062><U006F><U0072><U0061><U0072><U0075>";/
++ "<U004C><U0061><U0062><U006F><U006E><U0065>";/
++ "<U004C><U0061><U0062><U006F><U0068><U006C><U0061><U006E><U0065>";/
++ "<U004D><U006F><U0071><U0065><U0062><U0065><U006C><U006F>"
++
++% abmon - The abbreviations for the months
++% - Phe, Kol, Ube, Mme, Mot, Jan, Upu, Pha, Leo, Mph, Pun, Tsh
++abmon "<U0050><U0068><U0065>";"<U004B><U006F><U006C>";/
++ "<U0055><U0062><U0065>";"<U004D><U006D><U0065>";/
++ "<U004D><U006F><U0074>";"<U004A><U0061><U006E>";/
++ "<U0055><U0070><U0075>";"<U0050><U0068><U0061>";/
++ "<U004C><U0065><U006F>";"<U004D><U0070><U0068>";/
++ "<U0050><U0075><U006E>";"<U0054><U0073><U0068>"
++
++% mon - The full names of the months -
++% - Phesekgong, Hlakola, Hlakubele, Mmese, Motsheanong, Phupjane,
++% Phupu, Phata, Leotshe, Mphalane, Pundungwane, Tshitwe
++mon "<U0050><U0068><U0065><U0073><U0065><U006B><U0067><U006F><U006E><U0067>";/
++ "<U0048><U006C><U0061><U006B><U006F><U006C><U0061>";/
++ "<U0048><U006C><U0061><U006B><U0075><U0062><U0065><U006C><U0065>";/
++ "<U004D><U006D><U0065><U0073><U0065>";/
++ "<U004D><U006F><U0074><U0073><U0068><U0065><U0061><U006E><U006F><U006E><U0067>";/
++ "<U0050><U0068><U0075><U0070><U006A><U0061><U006E><U0065>";/
++ "<U0050><U0068><U0075><U0070><U0075>";/
++ "<U0050><U0068><U0061><U0074><U0061>";/
++ "<U004C><U0065><U006F><U0074><U0073><U0068><U0065>";/
++ "<U004D><U0070><U0068><U0061><U006C><U0061><U006E><U0065>";/
++ "<U0050><U0075><U006E><U0064><U0075><U006E><U0067><U0077><U0061><U006E><U0065>";/
++ "<U0054><U0073><U0068><U0069><U0074><U0077><U0065>"
++
++% Abreviated date and time representation to be referenced by the "%c" field descriptor -
++d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
++%
++% "%a" (short weekday name),
++% "%d" (day of month as a decimal number),
++% "%b" (short month name),
++% "%Y" (year with century as a decimal number),
++% "%T" (24-hour clock time in format HH:MM:SS),
++% "%Z" (Time zone name)
++
++% Date representation to be referenced by the "%x" field descriptor -
++d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
++% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
++
++% Time representation to be referenced by the "%X" field descriptor -
++t_fmt "<U0025><U0054>"
++% "%T" (24-hour clock time in format HH:MM:SS)
++
++% Define representation of ante meridiem and post meridiem strings -
++am_pm "";""
++% The "" mean 'default to "AM" and "PM".
++
++% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
++t_fmt_ampm ""
++% The "" means that this format is not supported.
++
++% Date representation not described in ISO/IEC 14652. Comes out as -
++% "%a %b %e %H:%M:%S %Z %Y" which is default "date" command output
++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
++<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
++<U0025><U005A><U0020><U0025><U0059>"
++%
++% %a - abbreviated weekday name,
++% %b - abreviated month name,
++% %e - day of month as a decimal number with leading space (1 to 31),
++% %H - hour (24-hour clock) as a decimal number (00 to 23),
++% %M - minute as a decimal number (00 to 59),
++% %S - seconds as a decimal number (00 to 59),
++% %Z - time-zone name,
++% %Y - year with century as a decimal number,e.g. 2001.
++
++END LC_TIME
++
++LC_MESSAGES
++% FIXME: Check both of these
++% The affirmative response -
++% "^[yY].*"
++yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
++
++% The negative response -
++% "^[nN].*"
++noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
++END LC_MESSAGES
++
++LC_PAPER
++copy "en_ZA"
++END LC_PAPER
++
++LC_TELEPHONE
++copy "en_ZA"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++copy "en_ZA"
++END LC_MEASUREMENT
++
++LC_NAME
++% Format for addressing a person.
++name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
++<U0025><U006D><U0025><U0074><U0025><U0066>"
++% "%d%t%g%t%m%t%f"
++% "Salutation",
++% "Empty string, or <Space>",
++% "First given name",
++% "Empty string, or <Space>",
++% "Middle names",
++% "Empty string, or <Space>",
++% "Clan names"
++
++% FIXME - define all the following name_*
++% General salutation for any sex
++% name_gen ""
++
++% Salutation for unmarried females - ""
++% name_miss ""
++
++% Salutation for males - ""
++% name_mr ""
++
++% Salutation for married females - ""
++% name_mrs ""
++
++% Salutation valid for all females - "" (no term)
++% name_ms ""
++
++END LC_NAME
++
++LC_ADDRESS
++% Country name in Sotho - "Afrika Borwa"
++country_name "<U0041><U0066><U0072><U0069><U006B><U0061><U0020><U0042><U006F><U0072><U0077><U0061>"
++
++% Abbreviated country postal name - "ZA"
++country_post "<U005A><U0041>"
++
++% ISO 3166 two letter country abbreviation - "ZA"
++country_ab2 "<U005A><U0041>"
++
++% FIXME define the following correctly
++% country_ab3 ""
++% country_car ""
++% country_isbn ""
++% country_num
++
++% Language name in Sotho - "Sesotho"
++lang_name "<U0053><U0065><U0073><U006F><U0074><U0068><U006F>"
++
++% FIXME define the following correctly
++% lang_ab ""
++% lang_term ""
++
++% Representation of postal addresses (minus the addressee's name) in South
++% Africa. (Ignored for now)
++postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
++<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
++<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
++<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
++<U004E><U0025><U0063><U0025><U004E>"
++% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
++% "firm name",
++% "end of line",
++% "C/O address",
++% "end of line",
++% "department name",
++% "Building name",
++% "end of line",
++% "street or block name",
++% "space",
++% "house number or designation",
++% "space",
++% "floor number",
++% "space",
++% "room number, door designation",
++% "end of line",
++% "postal code",
++% "space",
++% "town, city",
++% "end of line",
++% "country designation for the <country_post> keyword",
++% "end of line
++%
++END LC_ADDRESS
++
+--- glibc-2.3.2/localedata/locales/uk_UA 2001-08-03 04:17:35.000000000 -0400
++++ glibc-2.3.2/localedata/locales/uk_UA 2003-06-03 09:36:24.000000000 -0400
+@@ -4,7 +4,7 @@
+ % Ukrainian Language Locale for Ukraine
+ % Source: RFC 2319
+ % Contact: Denis V. Dmitrienko
+-% Email: denis@null.net
++% Email: denis@denix.org
+ % Language: uk
+ % Territory: UA
+ % Revision: 1.2
+@@ -14,6 +14,8 @@
+ % Charset: KOI8-U
+ % Distribution and use is free, also
+ % for commercial purposes.
++%
++% Some collate fixes by Valentyn Solomko vesna@slovnyk.org
+
+ LC_IDENTIFICATION
+ title "Ukrainian locale for Ukraine"
+@@ -25,8 +27,8 @@
+ fax ""
+ language "Ukrainian"
+ territory "Ukraine"
+-revision "1.0"
+-date "2000-06-29"
++revision "1.3"
++date "2003-01-31"
+ %
+ category "uk_UA:2000";LC_IDENTIFICATION
+ category "uk_UA:2000";LC_CTYPE
+@@ -47,19 +49,30 @@
+ END LC_CTYPE
+
+ LC_COLLATE
++
+ copy "iso14651_t1"
+
+ % iso14651_t1 is missing Ukrainian ghe
+ collating-symbol <UKR-GHE>
+
+-reorder-after <CYR-GZHE>
++reorder-after <CYR-GHE>
+ <UKR-GHE>
+
+-reorder-after <U0453>
+-<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
+-
+-reorder-after <U0403>
+-<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
++reorder-after <U0433>
++% <U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
++<U0491> <CYR-GHE>;<UKR-GHE>;<MIN>;IGNORE
++
++reorder-after <U0438>
++% <U0456> <UKR-I>;<BAS>;<MIN>;IGNORE
++<U0456> <CYR-I>;<UKR-I>;<MIN>;IGNORE
++
++reorder-after <U0413>
++% <U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
++<U0490> <CYR-GHE>;<UKR-GHE>;<CAP>;IGNORE
++
++reorder-after <U0418>
++% <U0406> <UKR-I>;<BAS>;<CAP>;IGNORE
++<U0406> <CYR-I>;<UKR-I>;<CAP>;IGNORE
+
+ reorder-end
+ END LC_COLLATE
+--- glibc-2.3.2/localedata/locales/wa_BE 2002-02-23 14:15:47.000000000 -0500
++++ glibc-2.3.2/localedata/locales/wa_BE 2003-09-19 22:37:05.000000000 -0400
+@@ -11,8 +11,8 @@
+ address ""
+ tel ""
+ fax ""
+-language "wa"
+-territory "BE"
++language "Walloon"
++territory "Belgium"
+ revision "0.7"
+ date "2002-02-11"
+
+--- glibc-2.3.2/localedata/locales/xh_ZA 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/locales/xh_ZA 2003-05-10 04:39:31.000000000 -0400
+@@ -0,0 +1,235 @@
++escape_char /
++comment_char %
++
++% ChangeLog
++% 0.1 (2003-05-08):
++% - Initial Xhosa locale by Zuza Software Foundation
++
++LC_IDENTIFICATION
++title "Xhosa locale for South Africa"
++source "Zuza Software Foundation"
++address "PO Box 13412, Mowbray, 7705, South Africa"
++contact "Dwayne Bailey"
++email "dwayne@translate.org.za"
++tel "+27 (0)21 448 9265"
++fax "+27 (0)21 448 9574"
++language "Xhosa"
++territory "South Africa"
++revision "0.1"
++date "2003-05-08"
++%
++category "xh_ZA:2003";LC_IDENTIFICATION
++category "xh_ZA:2003";LC_CTYPE
++category "xh_ZA:2003";LC_COLLATE
++category "xh_ZA:2003";LC_TIME
++category "xh_ZA:2003";LC_NUMERIC
++category "xh_ZA:2003";LC_MONETARY
++category "xh_ZA:2003";LC_MESSAGES
++category "xh_ZA:2003";LC_PAPER
++category "xh_ZA:2003";LC_NAME
++category "xh_ZA:2003";LC_ADDRESS
++category "xh_ZA:2003";LC_TELEPHONE
++category "xh_ZA:2003";LC_MEASUREMENT
++
++END LC_IDENTIFICATION
++
++LC_CTYPE
++% Use the characters described in the charmap file "i18n.tgz"
++copy "i18n"
++END LC_CTYPE
++
++LC_COLLATE
++% Copy the template from ISO/IEC 14651 i.e.
++% use the rules there when making ordered lists of words.
++copy "iso14651_t1"
++END LC_COLLATE
++
++LC_MONETARY
++copy "en_ZA"
++END LC_MONETARY
++
++LC_NUMERIC
++copy "en_ZA"
++END LC_NUMERIC
++
++LC_TIME
++% The abbreviations for the week days:
++% - Caw, Mvu, Bin, Tha, Sin, Hla, Mgq
++abday "<U0043><U0061><U0077>";/
++ "<U004D><U0076><U0075>";/
++ "<U0042><U0069><U006E>";/
++ "<U0054><U0068><U0061>";/
++ "<U0053><U0069><U006E>";/
++ "<U0048><U006C><U0061>";/
++ "<U004D><U0067><U0071>"
++%
++% The full names of the week days:
++% - Cawe, Mvulo, Lwesibini, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo
++day "<U0043><U0061><U0077><U0065>";/
++ "<U004D><U0076><U0075><U006C><U006F>";/
++ "<U004C><U0077><U0065><U0073><U0069><U0062><U0069><U006E><U0069>";/
++ "<U004C><U0077><U0065><U0073><U0069><U0074><U0068><U0061><U0074><U0068><U0075>";/
++ "<U004C><U0077><U0065><U0073><U0069><U006E><U0065>";/
++ "<U004C><U0077><U0065><U0073><U0069><U0068><U006C><U0061><U006E><U0075>";/
++ "<U004D><U0067><U0071><U0069><U0062><U0065><U006C><U006F>"
++%
++% The abbreviations for the months
++% - Jan, Feb, Mat, Epr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis
++abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
++ "<U004D><U0061><U0074>";"<U0045><U0070><U0072>";/
++ "<U004D><U0065><U0079>";"<U004A><U0075><U006E>";/
++ "<U004A><U0075><U006C>";"<U0041><U0067><U0061>";/
++ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
++ "<U004E><U006F><U0076>";"<U0044><U0069><U0073>"
++%
++% The full names of the months -
++% - Janyuwari, Februwari, Matshi, Epreli, Meyi, Juni, Julayi, Agasti, Septemba,
++% Okthoba, Novemba, Disemba
++mon "<U004A><U0061><U006E><U0079><U0075><U0077><U0061><U0072><U0069>";/
++ "<U0046><U0065><U0062><U0072><U0075><U0077><U0061><U0072><U0069>";/
++ "<U004D><U0061><U0074><U0073><U0068><U0069>";/
++ "<U0045><U0070><U0072><U0065><U006C><U0069>";/
++ "<U004D><U0065><U0079><U0069>";/
++ "<U004A><U0075><U006E><U0069>";/
++ "<U004A><U0075><U006C><U0061><U0079><U0069>";/
++ "<U0041><U0067><U0061><U0073><U0074><U0069>";/
++ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0061>";/
++ "<U004F><U006B><U0074><U0068><U006F><U0062><U0061>";/
++ "<U004E><U006F><U0076><U0065><U006D><U0062><U0061>";/
++ "<U0044><U0069><U0073><U0065><U006D><U0062><U0061>"
++%
++% Abreviated date and time representation to be referenced by the "%c" field descriptor -
++d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
++% "%a" (weekday name),
++% "%d" (day of month as a decimal number),
++% "%b" (month name),
++% "%Y" (year with century as a decimal number),
++% "%T" (24-hour clock time in format HH:MM:SS),
++% "%Z" (Time zone name)
++%
++% Date representation to be referenced by the "%x" field % descriptor -
++% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
++d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
++%
++% Time representation to be referenced by the "%X" field descriptor -
++% "%T" (24-hour clock time in format HH:MM:SS)
++t_fmt "<U0025><U0054>"
++%
++% Define representation of ante meridiem and post meridiem strings -
++% The ""s means default to "AM" and "PM".
++am_pm "";""
++%
++% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
++% field descriptor -
++% The "" means that this format is not supported.
++t_fmt_ampm ""
++%
++% Date representation not described in ISO/IEC 14652.
++% Comes out as - "%a %b %e %H:%M:%S %Z %Y"
++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
++<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
++<U0025><U005A><U0020><U0025><U0059>"
++% which is:
++% abbreviated weekday name,
++% day of month as a decimal number (01 to 31),
++% day of month as a decimal number with leading space (1 to 31),
++% hour (24-hour clock) as a decimal number (00 to 23),
++% minute as a decimal number (00 to 59),
++% seconds as a decimal number (00 to 59),
++% time-zone name,
++% year with century as a decimal number,e.g. 2001.
++%
++END LC_TIME
++
++LC_MESSAGES
++% The affirmative response -
++% "^[yYeE].*"
++yesexpr "<U005E><U005B><U0079><U0059><U0065><U0045><U005D><U002E><U002A>"
++%
++% The negative response -
++% "^[nNhH].*"
++noexpr "<U005E><U005B><U006E><U004E><U0068><U0048><U005D><U002E><U002A>"
++%
++END LC_MESSAGES
++
++LC_PAPER
++copy "en_ZA"
++END LC_PAPER
++
++LC_TELEPHONE
++copy "en_ZA"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++copy "en_ZA"
++END LC_MEASUREMENT
++
++LC_NAME
++% Format for addressing a person.
++name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
++<U0025><U006D><U0025><U0074><U0025><U0066>"
++% "%d%t%g%t%m%t%f"
++% "Salutation",
++% "Empty string, or <Space>",
++% "First given name",
++% "Empty string, or <Space>",
++% "Middle names",
++% "Empty string, or <Space>",
++% "Clan names"
++%
++% Salutation for unmarried females - "Nkosazana"
++name_miss "<U004E><U006B><U006F><U0073><U0061><U007A><U0061><U006E><U0061>"
++%
++% Salutation for males - "Mnumzana"
++name_mr "<U004D><U006E><U0075><U006D><U007A><U0061><U006E><U0061>"
++%
++% Salutation for married females - "Nkosikazi"
++name_mrs "<U004E><U006B><U006F><U0073><U0069><U006B><U0061><U007A><U0069>"
++%
++% Salutation valid for all females - "" (no term)
++name_ms ""
++END LC_NAME
++
++LC_ADDRESS
++% Country name in Xhosa - "Mzantsi Afrika"
++country_name "<U004D><U007A><U0061><U006E><U0074><U0073><U0069><U0020>/
++<U0041><U0066><U0072><U0069><U006B><U0061>"
++%
++% Abbreviated country postal name - "ZA"
++country_post "<U005A><U0041>"
++%
++% ISO 3166 two letter country abbreviation - "ZA"
++country_ab2 "<U005A><U0041>"
++%
++% Representation of postal addresses (minus the addressee's name) in South
++% Africa. (Ignored for now)
++postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
++<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
++<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
++<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
++<U004E><U0025><U0063><U0025><U004E>"
++% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
++% "firm name",
++% "end of line",
++% "C/O address",
++% "end of line",
++% "department name",
++% "Building name",
++% "end of line",
++% "street or block name",
++% "space",
++% "house number or designation",
++% "space",
++% "floor number",
++% "space",
++% "room number, door designation",
++% "end of line",
++% "postal code",
++% "space",
++% "town, city",
++% "end of line",
++% "country designation for the <country_post> keyword",
++% "end of line
++%
++END LC_ADDRESS
++
+--- glibc-2.3.2/localedata/locales/yi_US 2001-08-03 04:30:36.000000000 -0400
++++ glibc-2.3.2/localedata/locales/yi_US 2003-09-19 22:37:05.000000000 -0400
+@@ -11,8 +11,8 @@
+ email "pablo@mandrakesoft.com"
+ tel ""
+ fax ""
+-language "yi"
+-territory "US"
++language "Yiddish"
++territory "USA"
+ revision "0.3"
+ date "2001-01-28"
+
+--- glibc-2.3.2/localedata/locales/zu_ZA 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/locales/zu_ZA 2003-05-10 04:39:46.000000000 -0400
+@@ -0,0 +1,241 @@
++escape_char /
++comment_char %
++
++% ChangeLog
++% 0.1 (2003-04-19):
++% - Initial Zulu locale by Zuza Software Foundation
++
++LC_IDENTIFICATION
++title "Zulu locale for South Africa"
++source "Zuza Software Foundation"
++address "PO Box 13412, Mowbray, 7705, South Africa"
++contact "Dwayne Bailey"
++email "dwayne@translate.org.za"
++tel "+27 (0)21 448 9265"
++fax "+27 (0)21 448 9574"
++language "Zulu"
++territory "South Africa"
++revision "0.1"
++date "2003-04-19"
++%
++category "zu_ZA:2003";LC_IDENTIFICATION
++category "zu_ZA:2003";LC_CTYPE
++category "zu_ZA:2003";LC_COLLATE
++category "zu_ZA:2003";LC_TIME
++category "zu_ZA:2003";LC_NUMERIC
++category "zu_ZA:2003";LC_MONETARY
++category "zu_ZA:2003";LC_MESSAGES
++category "zu_ZA:2003";LC_PAPER
++category "zu_ZA:2003";LC_NAME
++category "zu_ZA:2003";LC_ADDRESS
++category "zu_ZA:2003";LC_TELEPHONE
++category "zu_ZA:2003";LC_MEASUREMENT
++
++END LC_IDENTIFICATION
++
++LC_CTYPE
++% Use the characters described in the charmap file "i18n.tgz"
++%
++copy "i18n"
++END LC_CTYPE
++
++LC_COLLATE
++% Copy the template from ISO/IEC 14651 i.e.
++% use the rules there when making ordered lists of words.
++%
++copy "iso14651_t1"
++END LC_COLLATE
++
++LC_MONETARY
++copy "en_ZA"
++END LC_MONETARY
++
++LC_NUMERIC
++copy "en_ZA"
++END LC_NUMERIC
++
++LC_TIME
++% abday - The abbreviations for the week days:
++% - Son, Mso, Bil, Tha, Sin, Hla, Mgq
++abday "<U0053><U006F><U006E>";/
++ "<U004D><U0073><U006F>";/
++ "<U0042><U0069><U006C>";/
++ "<U0054><U0068><U0061>";/
++ "<U0053><U0069><U006E>";/
++ "<U0048><U006C><U0061>";/
++ "<U004D><U0067><U0071>"
++
++% day - The full names of the week days:
++% - Sonto, Msombuluko, Lwesibili, Lwesithathu, Lwesine, Lwesihlanu, Mgqibelo
++day "<U0053><U006F><U006E><U0074><U006F>";/
++ "<U004D><U0073><U006F><U006D><U0062><U0075><U006C><U0075><U006B><U006F>";/
++ "<U004C><U0077><U0065><U0073><U0069><U0062><U0069><U006C><U0069>";/
++ "<U004C><U0077><U0065><U0073><U0069><U0074><U0068><U0061><U0074><U0068><U0075>";/
++ "<U004C><U0077><U0065><U0073><U0069><U006E><U0065>";/
++ "<U004C><U0077><U0065><U0073><U0069><U0068><U006C><U0061><U006E><U0075>";/
++ "<U004D><U0067><U0071><U0069><U0062><U0065><U006C><U006F>"
++
++% abmon - The abbreviations for the months
++% - Jan, Feb, Mas, Apr, Mey, Jun, Jul, Aga, Sep, Okt, Nov, Dis
++abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
++ "<U004D><U0061><U0073>";"<U0041><U0070><U0072>";/
++ "<U004D><U0065><U0079>";"<U004A><U0075><U006E>";/
++ "<U004A><U0075><U006C>";"<U0041><U0067><U0061>";/
++ "<U0053><U0065><U0070>";"<U004F><U006B><U0074>";/
++ "<U004E><U006F><U0076>";"<U0044><U0069><U0073>"
++
++% mon - The full names of the months -
++% - Januwari, Februwari, Mashi, Apreli, Meyi, Juni, Julayi, Agasti, Septemba,
++% Okthoba, Novemba, Disemba
++mon "<U004A><U0061><U006E><U0075><U0077><U0061><U0072><U0069>";/
++ "<U0046><U0065><U0062><U0072><U0075><U0077><U0061><U0072><U0069>";/
++ "<U004D><U0061><U0073><U0068><U0069>";/
++ "<U0041><U0070><U0072><U0065><U006C><U0069>";/
++ "<U004D><U0065><U0079><U0069>";/
++ "<U004A><U0075><U006E><U0069>";/
++ "<U004A><U0075><U006C><U0061><U0079><U0069>";/
++ "<U0041><U0067><U0061><U0073><U0074><U0069>";/
++ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0061>";/
++ "<U004F><U006B><U0074><U0068><U006F><U0062><U0061>";/
++ "<U004E><U006F><U0076><U0065><U006D><U0062><U0061>";/
++ "<U0044><U0069><U0073><U0065><U006D><U0062><U0061>"
++
++% Abreviated date and time representation to be referenced by the "%c" field descriptor -
++d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
++%
++% "%a" (short weekday name),
++% "%d" (day of month as a decimal number),
++% "%b" (short month name),
++% "%Y" (year with century as a decimal number),
++% "%T" (24-hour clock time in format HH:MM:SS),
++% "%Z" (Time zone name)
++
++% Date representation to be referenced by the "%x" field descriptor -
++% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
++d_fmt "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
++
++% Time representation to be referenced by the "%X" field descriptor -
++% "%T" (24-hour clock time in format HH:MM:SS)
++t_fmt "<U0025><U0054>"
++
++% Define representation of ante meridiem and post meridiem strings -
++% The ""s mean default to "AM" and "PM".
++am_pm "";""
++
++% Define time representation in 12-hour format with "am_pm", to be referenced by the "%r"
++% field descriptor -
++% The "" means that this format is not supported.
++t_fmt_ampm ""
++
++% Date representation not described in ISO/IEC 14652. Comes out as -
++% "%a %b %e %H:%M:%S %Z %Y"
++date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
++<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
++<U0025><U005A><U0020><U0025><U0059>"
++% which is
++% %a - abbreviated weekday name,
++% %b - abreviated month name,
++% %e - day of month as a decimal number with leading space (1 to 31),
++% %H - hour (24-hour clock) as a decimal number (00 to 23),
++% %M - minute as a decimal number (00 to 59),
++% %S - seconds as a decimal number (00 to 59),
++% %Z - time-zone name,
++% %Y - year with century as a decimal number,e.g. 2001.
++
++END LC_TIME
++
++LC_MESSAGES
++yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
++% The affirmative response -
++% "^[yY].*"
++%
++noexpr "<U005E><U005B><U006E><U004E><U0063><U0043><U005D><U002E><U002A>"
++% The negative response -
++% "^[nNcC].*"
++%
++END LC_MESSAGES
++
++LC_PAPER
++copy "en_ZA"
++END LC_PAPER
++
++LC_TELEPHONE
++copy "en_ZA"
++END LC_TELEPHONE
++
++LC_MEASUREMENT
++copy "en_ZA"
++END LC_MEASUREMENT
++
++LC_NAME
++name_fmt "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
++<U0025><U006D><U0025><U0074><U0025><U0066>"
++% Format for addressing a person.
++% "%d%t%g%t%m%t%f"
++% "Salutation",
++% "Empty string, or <Space>",
++% "First given name",
++% "Empty string, or <Space>",
++% "Middle names",
++% "Empty string, or <Space>",
++% "Clan names"
++%
++name_miss "<U004E><U006B><U006F><U0073><U0061><U007A><U0061><U006E><U0065>"
++% Salutation for unmarried females - "Nkosazane"
++%
++name_mr "<U004D><U006E><U0075><U006D><U007A><U0061><U006E><U0065>"
++% Salutation for males - "Mnumzane"
++%
++name_mrs "<U004E><U006B><U006F><U0073><U0069><U006B><U0061><U007A><U0069>"
++% Salutation for married females - "Nkosikazi"
++%
++name_ms ""
++% Salutation valid for all females - "" (no term)
++END LC_NAME
++
++LC_ADDRESS
++country_name "<U004D><U007A><U0061><U006E><U0073><U0069><U0020>/
++<U0041><U0066><U0072><U0069><U006B><U0061>"
++% Country name in Zulu - "Mzansi Afrika"
++%
++country_post "<U005A><U0041>"
++% Abbreviated country postal name - "ZA"
++%
++country_ab2 "<U005A><U0041>"
++% ISO 3166 two letter country abbreviation - "ZA"
++%
++lang_name "<U0049><U0073><U0069><U007A><U0075><U006C><U0075>"
++% Language name in Zulu - "Isizulu"
++%
++postal_fmt "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
++<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
++<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
++<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
++<U004E><U0025><U0063><U0025><U004E>"
++% Representation of postal addresses (minus the addressee's name) in South
++% Africa. (Ignored for now)
++% "%f%N%a%N%d%N%b%N%s %h %e %r%N%%z %T%N%c%N", which gives -
++% "firm name",
++% "end of line",
++% "C/O address",
++% "end of line",
++% "department name",
++% "Building name",
++% "end of line",
++% "street or block name",
++% "space",
++% "house number or designation",
++% "space",
++% "floor number",
++% "space",
++% "room number, door designation",
++% "end of line",
++% "postal code",
++% "space",
++% "town, city",
++% "end of line",
++% "country designation for the <country_post> keyword",
++% "end of line
++%
++END LC_ADDRESS
++
+--- glibc-2.3.2/localedata/sort-test.sh 2000-08-22 03:52:13.000000000 -0400
++++ glibc-2.3.2/localedata/sort-test.sh 2003-05-12 12:13:05.000000000 -0400
+@@ -27,6 +27,7 @@
+ echo "$l OK"
+ else
+ echo "$l FAIL"
++ diff -u $cns.in ${common_objpfx}localedata/$cns.xout
+ status=1
+ fi
+ done
+--- glibc-2.3.2/localedata/tests-mbwc/tst_wcsxfrm.c 2000-06-27 11:53:19.000000000 -0400
++++ glibc-2.3.2/localedata/tests-mbwc/tst_wcsxfrm.c 2003-05-12 12:13:05.000000000 -0400
+@@ -47,7 +47,7 @@
+ if (debug_flg)
+ {
+ fprintf (stdout, "tst_wcsxfrm() : REC = %d\n", rec + 1);
+- fprintf (stdout, "tst_wcsxfrm() : 1st ret = %d\n", ret);
++ fprintf (stdout, "tst_wcsxfrm() : 1st ret = %zu\n", ret);
+ }
+
+ if (ret == -1 || ret >= n1 || errno_save != 0)
+@@ -78,7 +78,7 @@
+
+ if (debug_flg)
+ {
+- fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %d\n", ret);
++ fprintf (stdout, "tst_wcsxfrm() : 2nd ret = %zu\n", ret);
+ }
+
+ /* wcscoll() */
+--- glibc-2.3.2/localedata/tst-fmon.c 2001-07-07 15:21:05.000000000 -0400
++++ glibc-2.3.2/localedata/tst-fmon.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Testing the implementation of strfmon(3).
+- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
+
+@@ -42,15 +42,12 @@
+ main (int argc, char *argv[])
+ {
+ char *s = malloc (201);
+- double monval;
+
+ if (setlocale (LC_MONETARY, argv[1]) == NULL)
+ {
+- perror ("setlocale");
++ fprintf (stderr, "setlocale(LC_MONETARY, \"%s\"): %m\n", argv[1]);
+ exit (EXIT_SETLOCALE);
+ }
+- /* This is locale-dependent! see setlocale(3) for details */
+- monval = strtod (argv[3], NULL);
+
+ if (strfmon (s, 200, argv[2], (double) atof (argv[3])) == -1)
+ {
+--- glibc-2.3.2/localedata/tst-fmon.sh 2001-07-07 15:21:05.000000000 -0400
++++ glibc-2.3.2/localedata/tst-fmon.sh 2003-08-21 08:37:05.000000000 -0400
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Testing the implementation of strfmon(3).
+-# Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ # Contributed by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
+ #
+@@ -39,24 +39,26 @@
+ done
+
+ # Run the tests.
++errcode=0
+ # There's a TAB for IFS
+ while IFS=" " read locale format value expect; do
++ case "$locale" in '#'*) continue ;; esac
+ if [ -n "$format" ]; then
+- LOCPATH=${common_objpfx}localedata \
+- GCONV_PATH=${common_objpfx}/iconvdata \
+- ${run_program_prefix} ${common_objpfx}localedata/tst-fmon \
+- "$locale" "$format" "$value" "$expect"
+- if [ $? -eq 0 ]; then
++ if LOCPATH=${common_objpfx}localedata \
++ GCONV_PATH=${common_objpfx}/iconvdata \
++ ${run_program_prefix} ${common_objpfx}localedata/tst-fmon \
++ "$locale" "$format" "$value" "$expect" ; then
+ echo "Locale: \"${locale}\" Format: \"${format}\"" \
+ "Value: \"${value}\" Expect: \"${expect}\" passed"
+ else
++ errcode=$?
+ echo "Locale: \"${locale}\" Format: \"${format}\"" \
+ "Value: \"${value}\" Expect: \"${expect}\" failed"
+ fi
+ fi
+ done < $datafile
+
+-exit $?
++exit $errcode
+ # Local Variables:
+ # mode:shell-script
+ # End:
+--- glibc-2.3.2/localedata/tst-langinfo.sh 2001-07-07 15:21:05.000000000 -0400
++++ glibc-2.3.2/localedata/tst-langinfo.sh 2003-05-12 12:13:05.000000000 -0400
+@@ -1,6 +1,6 @@
+ #! /bin/sh
+ # Test nl_langinfo.
+-# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ #
+
+@@ -155,13 +155,13 @@
+ en_US.ISO-8859-1 THOUSEP ,
+ en_US.ISO-8859-1 YESEXPR ^[yY].*
+ en_US.ISO-8859-1 NOEXPR ^[nN].*
+-de_DE.ISO-8859-1 ABDAY_1 Son
+-de_DE.ISO-8859-1 ABDAY_2 Mon
+-de_DE.ISO-8859-1 ABDAY_3 Die
+-de_DE.ISO-8859-1 ABDAY_4 Mit
+-de_DE.ISO-8859-1 ABDAY_5 Don
+-de_DE.ISO-8859-1 ABDAY_6 Fre
+-de_DE.ISO-8859-1 ABDAY_7 Sam
++de_DE.ISO-8859-1 ABDAY_1 So
++de_DE.ISO-8859-1 ABDAY_2 Mo
++de_DE.ISO-8859-1 ABDAY_3 Di
++de_DE.ISO-8859-1 ABDAY_4 Mi
++de_DE.ISO-8859-1 ABDAY_5 Do
++de_DE.ISO-8859-1 ABDAY_6 Fr
++de_DE.ISO-8859-1 ABDAY_7 Sa
+ de_DE.ISO-8859-1 DAY_1 Sonntag
+ de_DE.ISO-8859-1 DAY_2 Montag
+ de_DE.ISO-8859-1 DAY_3 Dienstag
+@@ -200,13 +200,13 @@
+ de_DE.ISO-8859-1 THOUSEP .
+ de_DE.ISO-8859-1 YESEXPR ^[jJyY].*
+ de_DE.ISO-8859-1 NOEXPR ^[nN].*
+-de_DE.UTF-8 ABDAY_1 Son
+-de_DE.UTF-8 ABDAY_2 Mon
+-de_DE.UTF-8 ABDAY_3 Die
+-de_DE.UTF-8 ABDAY_4 Mit
+-de_DE.UTF-8 ABDAY_5 Don
+-de_DE.UTF-8 ABDAY_6 Fre
+-de_DE.UTF-8 ABDAY_7 Sam
++de_DE.UTF-8 ABDAY_1 So
++de_DE.UTF-8 ABDAY_2 Mo
++de_DE.UTF-8 ABDAY_3 Di
++de_DE.UTF-8 ABDAY_4 Mi
++de_DE.UTF-8 ABDAY_5 Do
++de_DE.UTF-8 ABDAY_6 Fr
++de_DE.UTF-8 ABDAY_7 Sa
+ de_DE.UTF-8 DAY_1 Sonntag
+ de_DE.UTF-8 DAY_2 Montag
+ de_DE.UTF-8 DAY_3 Dienstag
+--- glibc-2.3.2/localedata/tst-numeric.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/tst-numeric.c 2003-05-12 12:13:05.000000000 -0400
+@@ -0,0 +1,74 @@
++/* Testing the implementation of LC_NUMERIC and snprintf().
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Petter Reinholdtsen <pere@hungry.com>, 2003
++
++ Based on tst-fmon.c by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdio.h>
++#include <locale.h>
++#include <string.h>
++#include <stdlib.h>
++
++/*
++ test-numeric gets called with three parameters:
++ - the locale
++ - the format-string to be used
++ - the actual number to be formatted
++ - the expected string
++ If the test passes, test-numeric terminates with returncode 0,
++ otherwise with 1
++*/
++#define EXIT_SUCCESS 0
++#define EXIT_FAILURE 1
++#define EXIT_SETLOCALE 2
++#define EXIT_SNPRINTF 3
++
++int
++main (int argc, char *argv[])
++{
++ char *s = malloc (201);
++ double val;
++
++ /* Make sure to read the value before setting of the locale, as
++ strtod() is locale-dependent. */
++ val = strtod (argv[3], NULL);
++
++ if (setlocale (LC_ALL, argv[1]) == NULL)
++ {
++ fprintf (stderr, "setlocale(LC_ALL, \"%s\"): %m\n", argv[1]);
++ exit (EXIT_SETLOCALE);
++ }
++
++ if (snprintf (s, 200, argv[2], val) == -1)
++ {
++ perror ("snprintf");
++ exit (EXIT_SNPRINTF);
++ }
++
++ if (strcmp (s, argv[4]) != 0)
++ {
++ printf ("\
++locale: \"%s\", format: \"%s\", expected: \"%s\", got: \"%s\" => %s\n",
++ argv[1], argv[2], argv[4], s,
++ strcmp (s, argv[4]) != 0 ? "false" : "correct");
++ exit (EXIT_FAILURE);
++ }
++
++ return EXIT_SUCCESS;
++}
+--- glibc-2.3.2/localedata/tst-numeric.data 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/tst-numeric.data 2003-04-27 05:02:25.000000000 -0400
+@@ -0,0 +1,49 @@
++# Test data for tst-nomeric, which checks it's implementation in glibc
++# Copyright (C) 2003 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++# Contributed by Petter Reinholdtsen <pere@hungry.com>, 2003
++# Based on code by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
++#
++
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, write to the Free
++# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++# 02111-1307 USA.
++
++# The format of this file is pretty simple: Each line contains a test
++# for strfmon. Fields are separated by TABs. Lines that start with a
++# '#' are comments and are ignored.
++#
++# Field Description
++# #1 locale which is to be checked
++# #2 format string which is fed into snprintf
++# #3 double value that is used for formatting
++# #4 the expected result (may contain trailing spaces!)
++#
++# First the implementation without any locale-dependent data
++C %g 1.23 1.23
++C %g -1.23 -1.23
++C %g 0 0
++C %% 0 %
++C %'g 123.45 123.45
++C %'g -123.45 -123.45
++C *%g* 1.23 *1.23*
++C %9g 1.23 1.23
++C %9g -1.23 -1.23
++#
++# check both the norwegian locales and snprintf with that data
++#
++no_NO.ISO-8859-1 %'g 123.45 123,45
++no_NO.ISO-8859-1 %'g -123.45 -123,45
++nn_NO.ISO-8859-1 %'g 123.45 123,45
++nn_NO.ISO-8859-1 %'g -123.45 -123,45
+--- glibc-2.3.2/localedata/tst-numeric.sh 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/localedata/tst-numeric.sh 2003-08-21 08:37:05.000000000 -0400
+@@ -0,0 +1,51 @@
++#! /bin/sh
++# Testing the implementation of LC_NUMERIC and snprintf(3).
++# Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++# Contributed by Jochen Hein <jochen.hein@delphi.central.de>, 1997.
++#
++
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, write to the Free
++# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++# 02111-1307 USA.
++
++common_objpfx=$1
++run_program_prefix=$2
++datafile=$3
++
++# Run the tests.
++errcode=0
++# There's a TAB for IFS
++while IFS=" " read locale format value expect; do
++ case "$locale" in '#'*) continue ;; esac
++ if [ -n "$format" ]; then
++ if LOCPATH=${common_objpfx}localedata \
++ GCONV_PATH=${common_objpfx}/iconvdata \
++ ${run_program_prefix} ${common_objpfx}localedata/tst-numeric \
++ "$locale" "$format" "$value" "$expect"
++ then
++ echo "Locale: \"${locale}\" Format: \"${format}\"" \
++ "Value: \"${value}\" Expect: \"${expect}\" passed"
++ else
++ errcode=$?
++ echo "Locale: \"${locale}\" Format: \"${format}\"" \
++ "Value: \"${value}\" Expect: \"${expect}\" failed"
++ fi
++ fi
++done < $datafile
++
++exit $errcode
++# Local Variables:
++# mode:shell-script
++# End:
+--- glibc-2.3.2/localedata/xfrm-test.c 2001-07-07 15:21:05.000000000 -0400
++++ glibc-2.3.2/localedata/xfrm-test.c 2003-08-21 08:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test collation function via transformation using real data.
+- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -19,6 +19,7 @@
+ 02111-1307 USA. */
+
+ #include <ctype.h>
++#include <error.h>
+ #include <locale.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -27,8 +28,8 @@
+
+ struct lines
+ {
+- const char *xfrm;
+- const char *line;
++ char *xfrm;
++ char *line;
+ };
+
+ static int xstrcmp (const void *, const void *);
+@@ -43,6 +44,9 @@
+ size_t len = 0;
+ size_t n;
+
++ if (argc < 2)
++ error (1, 0, "usage: %s <random seed>", argv[0]);
++
+ setlocale (LC_ALL, "");
+
+ nstrings_max = 100;
+@@ -65,8 +69,8 @@
+ if (nstrings == nstrings_max)
+ {
+ strings = (struct lines *) realloc (strings,
+- (nstrings_max *= 2
+- * sizeof (*strings)));
++ (nstrings_max *= 2)
++ * sizeof (*strings));
+ if (strings == NULL)
+ {
+ perror (argv[0]);
+@@ -87,6 +91,7 @@
+ line[l] = saved;
+ ++nstrings;
+ }
++ free (line);
+
+ /* First shuffle. */
+ srandom (atoi (argv[1]));
+@@ -116,7 +121,12 @@
+
+ /* Print the result. */
+ for (n = 0; n < nstrings; ++n)
+- fputs (strings[n].line, stdout);
++ {
++ fputs (strings[n].line, stdout);
++ free (strings[n].line);
++ free (strings[n].xfrm);
++ }
++ free (strings);
+
+ return result;
+ }
+--- glibc-2.3.2/login/Makefile 2002-10-02 03:19:57.000000000 -0400
++++ glibc-2.3.2/login/Makefile 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
++# Copyright (C) 1996-1998,2000-2002,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -47,6 +47,8 @@
+
+ include ../Rules
+
++CFLAGS-getpt.c = -fexceptions
++
+ ifeq (yes,$(build-static-nss))
+ otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
+ $(resolvobjdir)/libresolv.a $(common-objpfx)libc.a
+--- glibc-2.3.2/login/programs/utmpdump.c 2002-10-02 16:39:00.000000000 -0400
++++ glibc-2.3.2/login/programs/utmpdump.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* utmpdump - dump utmp-like files.
+- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
+
+@@ -28,16 +28,16 @@
+ print_entry (struct utmp *up)
+ {
+ /* Mixed 32-/64-bit systems may have timeval structs of different sixe
+- but need struct utmp to be the same size. So in 64-bit up->ut_tv may
++ but need struct utmp to be the same size. So in 64-bit up->ut_tv may
+ not be a timeval but a struct of __int32_t's. This would cause a compile
+ time warning and a formating error when 32-bit int is passed where
+ a 64-bit long is expected. So copy up->up_tv to a temporary timeval.
+- This is 32-/64-bit agnostic and expands the timeval fields to the
++ This is 32-/64-bit agnostic and expands the timeval fields to the
+ expected size as needed. */
+ struct timeval temp_tv;
+ temp_tv.tv_sec = up->ut_tv.tv_sec;
+ temp_tv.tv_usec = up->ut_tv.tv_usec;
+-
++
+ (printf) (
+ /* The format string. */
+ #if _HAVE_UT_TYPE
+@@ -74,7 +74,7 @@
+ #endif
+ #if _HAVE_UT_TV
+ , 4 + ctime (&temp_tv.tv_sec)
+- , temp_tv.tv_usec
++ , (long int) temp_tv.tv_usec
+ #else
+ , 4 + ctime (&up->ut_time)
+ #endif
+--- glibc-2.3.2/mach/Makefile 2003-02-17 13:58:01.000000000 -0500
++++ glibc-2.3.2/mach/Makefile 2003-06-03 09:36:24.000000000 -0400
+@@ -79,12 +79,17 @@
+ $(make-target-directory)
+ # We must use $(CFLAGS) to get -O flags that affect #if's in header files.
+ echo '#include <mach/syscall_sw.h>' | \
+- DEPENDENCIES_OUTPUT='$@-dep $@' \
+- $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - \
++ $(CC) $(CFLAGS) $(CPPFLAGS) -E -MD -MP -MF $@-dep -MT $@ \
++ -x c-header - \
+ -D_MACH_`echo $(mach-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \
+ sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\
+ | $(AWK) -f $< > $@-new
+- cat $@-dep >> $@-new; rm -f $@-dep
++ifneq (,$(objpfx))
++ sed $(sed-remove-objpfx) $@-dep >> $@-new
++else
++ cat $@-dep >> $@-new
++endif
++ rm -f $@-dep
+ mv -f $@-new $@
+ generated += mach-syscalls.mk
+
+--- glibc-2.3.2/mach/err_boot.sub 1992-10-06 14:29:52.000000000 -0400
++++ glibc-2.3.2/mach/err_boot.sub 2002-11-16 08:55:47.000000000 -0500
+@@ -25,10 +25,7 @@
+ */
+ /*
+ * HISTORY
+- * $Log: err_boot.sub,v $
+- * Revision 1.1 1992/10/06 18:29:52 roland
+- * entered into RCS
+- *
++ * $Log: err_bootstrap.sub,v $
+ * Revision 2.2 92/04/01 19:37:59 rpd
+ * Created.
+ * [92/03/09 rpd]
+--- glibc-2.3.2/mach/err_ipc.sub 1992-10-06 14:29:52.000000000 -0400
++++ glibc-2.3.2/mach/err_ipc.sub 2002-11-16 08:55:47.000000000 -0500
+@@ -25,10 +25,7 @@
+ */
+ /*
+ * HISTORY
+- * $Log: err_ipc.sub,v $
+- * Revision 1.1 1992/10/06 18:29:52 roland
+- * entered into RCS
+- *
++ * $Log: err_ipc.sub,v $
+ * Revision 2.2 92/01/16 00:08:40 rpd
+ * Moved from user collection to mk collection.
+ *
+--- glibc-2.3.2/mach/err_kern.sub 1996-12-19 20:32:34.000000000 -0500
++++ glibc-2.3.2/mach/err_kern.sub 2002-11-16 08:55:47.000000000 -0500
+@@ -26,9 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: err_kern.sub,v $
+- * Revision 1.5 1996/12/20 01:32:34 drepper
+- * Update from main archive 961219
+- *
+ * Revision 1.5 1996/12/19 20:23:39 drepper
+ * Spelling corrections.
+ *
+--- glibc-2.3.2/mach/err_mach.sub 1992-10-06 14:29:52.000000000 -0400
++++ glibc-2.3.2/mach/err_mach.sub 2002-11-16 08:55:47.000000000 -0500
+@@ -25,10 +25,7 @@
+ */
+ /*
+ * HISTORY
+- * $Log: err_mach.sub,v $
+- * Revision 1.1 1992/10/06 18:29:52 roland
+- * entered into RCS
+- *
++ * $Log: err_mach_ipc.sub,v $
+ * Revision 2.3 92/04/01 19:38:05 rpd
+ * Added MIG_DESTROY_REQUEST.
+ * [92/03/09 rpd]
+--- glibc-2.3.2/mach/err_server.sub 1992-10-06 14:29:53.000000000 -0400
++++ glibc-2.3.2/mach/err_server.sub 2002-11-16 08:55:47.000000000 -0500
+@@ -25,10 +25,7 @@
+ */
+ /*
+ * HISTORY
+- * $Log: err_server.sub,v $
+- * Revision 1.1 1992/10/06 18:29:53 roland
+- * entered into RCS
+- *
++ * $Log: err_server.sub,v $
+ * Revision 2.2 92/01/16 00:10:29 rpd
+ * Moved from user collection to mk collection.
+ *
+--- glibc-2.3.2/mach/err_us.sub 1993-11-23 16:14:05.000000000 -0500
++++ glibc-2.3.2/mach/err_us.sub 2002-11-16 08:55:47.000000000 -0500
+@@ -25,10 +25,7 @@
+ */
+ /*
+ * HISTORY
+- * $Log: err_us.sub,v $
+- * Revision 1.2 1993/11/23 21:14:05 mib
+- * entered into RCS
+- *
++ * $Log: err_us.sub,v $
+ * Revision 2.2 92/01/16 00:10:45 rpd
+ * Moved from user collection to mk collection.
+ *
+--- glibc-2.3.2/mach/error_compat.c 1997-03-16 12:41:36.000000000 -0500
++++ glibc-2.3.2/mach/error_compat.c 2002-11-16 08:55:47.000000000 -0500
+@@ -26,9 +26,6 @@
+
+ /* This file was broken out from:
+ $Log: error_compat.c,v $
+- Revision 1.2 1997/03/16 17:41:36 drepper
+- (__mach_error_map_compat): Give full prototype.
+-
+ Revision 1.2 1997/03/14 15:26:28 thomas
+ Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+--- glibc-2.3.2/mach/errorlib.h 1995-03-10 18:57:44.000000000 -0500
++++ glibc-2.3.2/mach/errorlib.h 2002-11-16 08:55:47.000000000 -0500
+@@ -26,9 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: errorlib.h,v $
+- * Revision 1.5 1995/03/10 23:57:44 roland
+- * (errors): Use const for decl.
+- *
+ * Revision 1.4 1993/12/17 21:56:16 roland
+ * entered into RCS
+ *
+--- glibc-2.3.2/mach/errstring.c 1997-03-16 12:41:48.000000000 -0500
++++ glibc-2.3.2/mach/errstring.c 2002-11-16 08:55:47.000000000 -0500
+@@ -26,9 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: errstring.c,v $
+- * Revision 1.2 1997/03/16 17:41:48 drepper
+- * (mach_error_string_int): Give full prototype.
+- *
+ * Revision 1.2 1997/03/14 15:26:29 thomas
+ * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+ *
+--- glibc-2.3.2/mach/mach/error.h 1997-03-16 12:43:08.000000000 -0500
++++ glibc-2.3.2/mach/mach/error.h 2002-11-16 08:55:47.000000000 -0500
+@@ -27,10 +27,6 @@
+ /*
+ * HISTORY
+ * $Log: error.h,v $
+- * Revision 1.3 1997/03/16 17:43:08 drepper
+- * (mach_error_fn_t): Comment out declaration; it appears to be entirely
+- * unused dead code.
+- *
+ * Revision 1.3 1997/03/14 15:27:35 thomas
+ * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+ *
+--- glibc-2.3.2/mach/mach_error.c 1997-03-16 12:42:02.000000000 -0500
++++ glibc-2.3.2/mach/mach_error.c 2002-11-16 08:55:47.000000000 -0500
+@@ -26,9 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: mach_error.c,v $
+- * Revision 1.2 1997/03/16 17:42:02 drepper
+- * (mach_error_string_int): Give full prototype.
+- *
+ * Revision 1.2 1997/03/14 15:26:30 thomas
+ * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+ *
+--- glibc-2.3.2/mach/mach_error.h 2001-04-03 20:02:00.000000000 -0400
++++ glibc-2.3.2/mach/mach_error.h 2002-11-16 08:55:47.000000000 -0500
+@@ -26,12 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: mach_error.h,v $
+- * Revision 1.4 2001/04/01 05:03:14 roland
+- * 2001-03-11 Roland McGrath <roland@frob.com>
+- *
+- * * mach/mach_error.h: Fix ancient #endif syntax.
+- * * hurd/hurdmalloc.c: Likewise.
+- *
+ * Revision 1.3 1997/03/16 17:42:25 drepper
+ * (mach_error_string, mach_error, mach_error_type): Always provide
+ * prototypes.
+--- glibc-2.3.2/mach/msg-destroy.c 2002-02-19 02:34:36.000000000 -0500
++++ glibc-2.3.2/mach/msg-destroy.c 2002-11-16 08:55:47.000000000 -0500
+@@ -26,15 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: msg-destroy.c,v $
+- * Revision 1.6 2002/02/17 07:13:36 roland
+- * 2002-02-16 Roland McGrath <roland@frob.com>
+- *
+- * * mach/msg-destroy.c (__mach_msg_destroy) [MACH_MSG_PORT_DESCRIPTOR]:
+- * Grok the OSF flavor of message format.
+- * (mach_msg_destroy_port): For MAKE_SEND and
+- * MAKE_SEND_ONCE rights, create an destroy a right to ensure proper
+- * no-senders notification.
+- *
+ * Revision 1.5 1997/06/21 01:40:07 drepper
+ * More 64bit changes.
+ *
+--- glibc-2.3.2/mach/msgserver.c 2002-02-19 02:34:36.000000000 -0500
++++ glibc-2.3.2/mach/msgserver.c 2002-11-16 08:55:47.000000000 -0500
+@@ -49,12 +49,6 @@
+ /*
+ * HISTORY
+ * $Log: msgserver.c,v $
+- * Revision 1.9 2002/02/18 20:56:35 roland
+- * 2002-02-18 Roland McGrath <roland@frob.com>
+- *
+- * * mach/msgserver.c (__mach_msg_server_timeout) [! MACH_RCV_LARGE]:
+- * Double MAX_SIZE and don't retry on MACH_RCV_TOO_LARGE.
+- *
+ * Revision 1.8 2002/02/17 07:13:32 roland
+ * 2002-02-16 Roland McGrath <roland@frob.com>
+ *
+--- glibc-2.3.2/malloc/Makefile 2003-02-21 20:01:17.000000000 -0500
++++ glibc-2.3.2/malloc/Makefile 2003-04-24 20:05:58.000000000 -0400
+@@ -56,6 +56,7 @@
+
+ include ../Makeconfig
+
++CFLAGS-malloc.c += -DDEFAULT_TOP_PAD=131072
+ CPPFLAGS-memusagestat = -DNOT_IN_libc
+
+ # The Perl script to analyze the output of the mtrace functions.
+--- glibc-2.3.2/malloc/arena.c 2002-12-27 18:22:15.000000000 -0500
++++ glibc-2.3.2/malloc/arena.c 2003-08-21 08:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Malloc implementation for multiple threads without lock contention.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
+
+@@ -758,6 +758,7 @@
+ /* Add the new arena to the global list. */
+ (void)mutex_lock(&list_lock);
+ a->next = main_arena.next;
++ atomic_write_barrier ();
+ main_arena.next = a;
+ (void)mutex_unlock(&list_lock);
+
+--- glibc-2.3.2/malloc/hooks.c 2003-01-27 13:32:36.000000000 -0500
++++ glibc-2.3.2/malloc/hooks.c 2003-09-19 22:37:05.000000000 -0400
+@@ -106,7 +106,18 @@
+ __realloc_hook = realloc_check;
+ __memalign_hook = memalign_check;
+ if(check_action & 1)
+- fprintf(stderr, "malloc: using debugging hooks\n");
++ {
++#ifdef _LIBC
++ _IO_flockfile (stderr);
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++#endif
++ fprintf(stderr, "malloc: using debugging hooks\n");
++#ifdef _LIBC
++ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
++ _IO_funlockfile (stderr);
++#endif
++ }
+ }
+
+ /* A simple, standard set of debugging hooks. Overhead is `only' one
+@@ -224,7 +235,18 @@
+ t == initial_top(&main_arena)) return 0;
+
+ if(check_action & 1)
+- fprintf(stderr, "malloc: top chunk is corrupt\n");
++ {
++#ifdef _LIBC
++ _IO_flockfile (stderr);
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++#endif
++ fprintf(stderr, "malloc: top chunk is corrupt\n");
++#ifdef _LIBC
++ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
++ _IO_funlockfile (stderr);
++#endif
++ }
+ if(check_action & 2)
+ abort();
+
+@@ -278,7 +300,18 @@
+ if(!p) {
+ (void)mutex_unlock(&main_arena.mutex);
+ if(check_action & 1)
+- fprintf(stderr, "free(): invalid pointer %p!\n", mem);
++ {
++#ifdef _LIBC
++ _IO_flockfile (stderr);
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++#endif
++ fprintf(stderr, "free(): invalid pointer %p!\n", mem);
++#ifdef _LIBC
++ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
++ _IO_funlockfile (stderr);
++#endif
++ }
+ if(check_action & 2)
+ abort();
+ return;
+@@ -315,7 +348,18 @@
+ (void)mutex_unlock(&main_arena.mutex);
+ if(!oldp) {
+ if(check_action & 1)
+- fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem);
++ {
++#ifdef _LIBC
++ _IO_flockfile (stderr);
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++#endif
++ fprintf(stderr, "realloc(): invalid pointer %p!\n", oldmem);
++#ifdef _LIBC
++ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
++ _IO_funlockfile (stderr);
++#endif
++ }
+ if(check_action & 2)
+ abort();
+ return malloc_check(bytes, NULL);
+--- glibc-2.3.2/malloc/malloc.c 2003-01-30 13:36:54.000000000 -0500
++++ glibc-2.3.2/malloc/malloc.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+-/* Malloc implementation for multiple threads without lock contention.
+- Copyright (C) 1996,1997,1998,1999,2000,01,02 Free Software Foundation, Inc.
++ /* Malloc implementation for multiple threads without lock contention.
++ Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Wolfram Gloger <wg@malloc.de>
+ and Doug Lea <dl@cs.oswego.edu>, 2001.
+@@ -24,7 +24,7 @@
+ Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
+
+ * Version ptmalloc2-20011215
+- $Id: malloc.c,v 1.108 2003/01/30 18:36:54 drepper Exp $
++ $Id: malloc.c,v 1.114 2003/09/08 16:32:37 drepper Exp $
+ based on:
+ VERSION 2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee)
+
+@@ -2969,9 +2969,6 @@
+ */
+
+ else {
+- /* Count foreign sbrk as system_mem. */
+- if (old_size)
+- av->system_mem += brk - old_end;
+ front_misalign = 0;
+ end_misalign = 0;
+ correction = 0;
+@@ -2980,6 +2977,10 @@
+ /* handle contiguous cases */
+ if (contiguous(av)) {
+
++ /* Count foreign sbrk as system_mem. */
++ if (old_size)
++ av->system_mem += brk - old_end;
++
+ /* Guarantee alignment of first new chunk made from this space */
+
+ front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) & MALLOC_ALIGN_MASK;
+@@ -3474,6 +3475,7 @@
+ ar_ptr == arena_for_chunk(mem2chunk(p)));
+ return p;
+ }
++strong_alias (public_mEMALIGn, __memalign_internal)
+
+ Void_t*
+ public_vALLOc(size_t bytes)
+@@ -3707,6 +3709,8 @@
+ {
+ struct mallinfo m;
+
++ if(__malloc_initialized < 0)
++ ptmalloc_init ();
+ (void)mutex_lock(&main_arena.mutex);
+ m = mALLINFo(&main_arena);
+ (void)mutex_unlock(&main_arena.mutex);
+@@ -4128,6 +4132,30 @@
+ p = mem2chunk(mem);
+ size = chunksize(p);
+
++ /* Little security check which won't hurt performance: the
++ allocator never wrapps around at the end of the address space.
++ Therefore we can exclude some size values which might appear
++ here by accident or by "design" from some intruder. */
++ if (__builtin_expect ((uintptr_t) p > (uintptr_t) -size, 0))
++ {
++ if (check_action & 1)
++ {
++#ifdef _LIBC
++ _IO_flockfile (stderr);
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++#endif
++ fprintf (stderr, "free(): invalid pointer %p!\n", mem);
++#ifdef _LIBC
++ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
++ _IO_funlockfile (stderr);
++#endif
++ }
++ if (check_action & 2)
++ abort ();
++ return;
++ }
++
+ check_inuse_chunk(av, p);
+
+ /*
+@@ -5089,6 +5117,13 @@
+ long stat_lock_direct = 0, stat_lock_loop = 0, stat_lock_wait = 0;
+ #endif
+
++ if(__malloc_initialized < 0)
++ ptmalloc_init ();
++#ifdef _LIBC
++ _IO_flockfile (stderr);
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++#endif
+ for (i=0, ar_ptr = &main_arena;; i++) {
+ (void)mutex_lock(&ar_ptr->mutex);
+ mi = mALLINFo(ar_ptr);
+@@ -5133,6 +5168,10 @@
+ fprintf(stderr, "locked total = %10ld\n",
+ stat_lock_direct + stat_lock_loop + stat_lock_wait);
+ #endif
++#ifdef _LIBC
++ ((_IO_FILE *) stderr)->_flags2 |= old_flags2;
++ _IO_funlockfile (stderr);
++#endif
+ }
+
+
+@@ -5146,11 +5185,11 @@
+ int mALLOPt(param_number, value) int param_number; int value;
+ #endif
+ {
+- if(__malloc_initialized < 0)
+- ptmalloc_init ();
+ mstate av = &main_arena;
+ int res = 1;
+
++ if(__malloc_initialized < 0)
++ ptmalloc_init ();
+ (void)mutex_lock(&av->mutex);
+ /* Ensure initialization/consolidation */
+ malloc_consolidate(av);
+@@ -5353,7 +5392,7 @@
+ if (alignment % sizeof (void *) != 0 || !powerof2 (alignment) != 0)
+ return EINVAL;
+
+- mem = __libc_memalign (alignment, size);
++ mem = __memalign_internal (alignment, size);
+
+ if (mem != NULL) {
+ *memptr = mem;
+--- glibc-2.3.2/malloc/malloc.h 2003-01-12 22:58:02.000000000 -0500
++++ glibc-2.3.2/malloc/malloc.h 2003-08-21 08:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Prototypes and definition for malloc implementation.
+- Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,7 +25,7 @@
+ #endif
+
+ /*
+- $Id: malloc.h,v 1.23 2003/01/13 03:42:16 roland Exp $
++ $Id: malloc.h,v 1.24 2003/05/28 21:01:42 roland Exp $
+ `ptmalloc2', a malloc implementation for multiple threads without
+ lock contention, by Wolfram Gloger <wg@malloc.de>.
+
+@@ -85,11 +85,19 @@
+ # define __MALLOC_P(args) args
+ # define __MALLOC_PMT(args) args
+
++# ifndef __const
++# define __const const
++# endif
++
+ # else /* Not ANSI C or C++. */
+
+ # define __MALLOC_P(args) () /* No prototypes. */
+ # define __MALLOC_PMT(args) ()
+
++# ifndef __const
++# define __const
++# endif
++
+ # endif /* ANSI C or C++. */
+
+ #endif /* GCC. */
+@@ -226,7 +234,7 @@
+
+
+ #ifdef __cplusplus
+-}; /* end of extern "C" */
++} /* end of extern "C" */
+ #endif
+
+ #endif /* malloc.h */
+--- glibc-2.3.2/malloc/memusagestat.c 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/malloc/memusagestat.c 2003-04-12 11:39:43.000000000 -0400
+@@ -405,7 +405,7 @@
+ }
+
+
+- snprintf (buf, sizeof (buf), "%llu", total);
++ snprintf (buf, sizeof (buf), "%llu", (unsigned long long) total);
+ gdImageString (im_out, gdFontSmall, xsize - 50, ysize - 14, buf, blue);
+
+ if (!time_based)
+--- glibc-2.3.2/malloc/mtrace.c 2002-12-31 16:18:43.000000000 -0500
++++ glibc-2.3.2/malloc/mtrace.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* More debugging hooks for `malloc'.
+- Copyright (C) 1991-1994,1996-2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991-1994,1996-2001,2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written April 2, 1991 by John Gilmore of Cygnus Support.
+ Based on mcheck.c by Mike Haertel.
+@@ -103,7 +103,7 @@
+ {
+ #ifdef HAVE_ELF
+ Dl_info info;
+- if (_dl_addr (caller, &info))
++ if (_dl_addr (caller, &info, NULL, NULL))
+ {
+ char *buf = (char *) "";
+ if (info.dli_sname != NULL)
+@@ -280,7 +280,7 @@
+ if (mtb == NULL)
+ return;
+
+- mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "w");
++ mallstream = fopen (mallfile != NULL ? mallfile : "/dev/null", "wc");
+ if (mallstream != NULL)
+ {
+ /* Make sure we close the file descriptor on exec. */
+--- glibc-2.3.2/malloc/set-freeres.c 2002-11-01 21:15:52.000000000 -0500
++++ glibc-2.3.2/malloc/set-freeres.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -16,7 +16,7 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <atomicity.h>
++#include <atomic.h>
+ #include <stdlib.h>
+ #include <set-hooks.h>
+ #include <libc-internal.h>
+@@ -36,7 +36,7 @@
+ protect for multiple executions since these are fatal. */
+ static long int already_called;
+
+- if (compare_and_swap (&already_called, 0, 1))
++ if (! atomic_compare_and_exchange_bool_acq (&already_called, 1, 0))
+ {
+ void * const *p;
+
+--- glibc-2.3.2/malloc/thread-m.h 2002-12-31 17:12:17.000000000 -0500
++++ glibc-2.3.2/malloc/thread-m.h 2003-08-21 08:37:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Basic platform-independent macro definitions for mutexes and
+ thread-specific data.
+- Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
+
+@@ -19,7 +19,7 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-/* $Id: thread-m.h,v 1.20 2002/12/31 21:05:27 drepper Exp $
++/* $Id: thread-m.h,v 1.22 2003/05/09 03:15:50 drepper Exp $
+ One out of _LIBC, USE_PTHREADS, USE_THR or USE_SPROC should be
+ defined, otherwise the token NO_THREADS and dummy implementations
+ of the macros will be defined. */
+@@ -31,6 +31,7 @@
+
+ #if defined(_LIBC) /* The GNU C library, a special case of Posix threads */
+
++#include <atomic.h>
+ #include <bits/libc-lock.h>
+
+ #ifdef PTHREAD_MUTEX_INITIALIZER
+@@ -306,4 +307,16 @@
+
+ #endif /* defined(NO_THREADS) */
+
++#ifndef atomic_full_barrier
++# define atomic_full_barrier() __asm ("" ::: "memory")
++#endif
++
++#ifndef atomic_read_barrier
++# define atomic_read_barrier() atomic_full_barrier ()
++#endif
++
++#ifndef atomic_write_barrier
++# define atomic_write_barrier() atomic_full_barrier ()
++#endif
++
+ #endif /* !defined(_THREAD_M_H) */
+--- glibc-2.3.2/math/Makefile 2003-02-21 01:03:48.000000000 -0500
++++ glibc-2.3.2/math/Makefile 2003-08-21 08:37:07.000000000 -0400
+@@ -87,7 +87,7 @@
+
+ # Rules for the test suite.
+ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
+- test-misc test-fpucw tst-definitions test-tgmath
++ test-misc test-fpucw tst-definitions test-tgmath test-tgmath-ret
+ # We do the `long double' tests only if this data type is available and
+ # distinct from `double'.
+ test-longdouble-yes = test-ldouble test-ildoubl
+@@ -126,6 +126,7 @@
+ CFLAGS-test-double.c = -fno-inline -ffloat-store
+ CFLAGS-test-ldouble.c = -fno-inline -ffloat-store
+ CFLAGS-test-tgmath.c = -fno-builtin
++CFLAGS-test-tgmath-ret.c = -fno-builtin
+ CPPFLAGS-test-ifloat.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \
+ -DTEST_FAST_MATH
+ CPPFLAGS-test-idouble.c = -U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ \
+--- glibc-2.3.2/math/libm-test.inc 2003-02-15 01:55:23.000000000 -0500
++++ glibc-2.3.2/math/libm-test.inc 2003-04-12 11:39:43.000000000 -0400
+@@ -1537,7 +1537,7 @@
+ TEST_c_c (ccos, nan_value, nan_value, nan_value, nan_value);
+
+ TEST_c_c (ccos, 0.75L, 1.25L, 1.38173873063425888530729933139078645L, -1.09193013555397466170919531722024128L);
+- TEST_c_c (ccos, -2, -3, -4.1896256909688072301L, -9.1092278937553365979L);
++ TEST_c_c (ccos, -2, -3, -4.18962569096880723013255501961597373L, -9.10922789375533659797919726277886212L);
+
+ END (ccos, complex);
+ }
+@@ -1606,7 +1606,7 @@
+
+ TEST_c_c (ccosh, 0.75L, 1.25L, 0.408242591877968807788852146397499084L, 0.780365930845853240391326216300863152L);
+
+- TEST_c_c (ccosh, -2, -3, -3.7245455049153225654L, 0.5118225699873846088L);
++ TEST_c_c (ccosh, -2, -3, -3.72454550491532256547397070325597253L, 0.511822569987384608834463849801875634L);
+
+ END (ccosh, complex);
+ }
+@@ -1836,7 +1836,7 @@
+ TEST_c_c (clog10, nan_value, nan_value, nan_value, nan_value);
+
+ TEST_c_c (clog10, 0.75L, 1.25L, 0.163679467193165171449476605077428975L, 0.447486970040493067069984724340855636L);
+- TEST_c_c (clog10, -2, -3, 0.5569716761534183846L, -0.9375544629863747085L);
++ TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L);
+
+ END (clog10, complex);
+ }
+@@ -2072,7 +2072,7 @@
+ TEST_c_c (csin, nan_value, nan_value, nan_value, nan_value);
+
+ TEST_c_c (csin, 0.75L, 1.25L, 1.28722291002649188575873510790565441L, 1.17210635989270256101081285116138863L);
+- TEST_c_c (csin, -2, -3, -9.1544991469114295734L, 4.1689069599665643507L);
++ TEST_c_c (csin, -2, -3, -9.15449914691142957346729954460983256L, 4.16890695996656435075481305885375484L);
+
+ END (csin, complex);
+ }
+@@ -2140,7 +2140,7 @@
+ TEST_c_c (csinh, nan_value, nan_value, nan_value, nan_value);
+
+ TEST_c_c (csinh, 0.75L, 1.25L, 0.259294854551162779153349830618433028L, 1.22863452409509552219214606515777594L);
+- TEST_c_c (csinh, -2, -3, 3.5905645899857799520L, -0.5309210862485198052L);
++ TEST_c_c (csinh, -2, -3, 3.59056458998577995201256544779481679L, -0.530921086248519805267040090660676560L);
+
+ END (csinh, complex);
+ }
+@@ -2264,7 +2264,7 @@
+ TEST_c_c (ctan, nan_value, nan_value, nan_value, nan_value);
+
+ TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L);
+- TEST_c_c (ctan, -2, -3, 0.0037640256415042482L, -1.0032386273536098014L);
++ TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L);
+
+ END (ctan, complex);
+ }
+@@ -2323,7 +2323,7 @@
+ TEST_c_c (ctanh, 0, M_PI_4l, 0.0, 1.0);
+
+ TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L);
+- TEST_c_c (ctanh, -2, -3, -0.9653858790221331242L, 0.0098843750383224937L);
++ TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L);
+
+ END (ctanh, complex);
+ }
+@@ -3067,8 +3067,8 @@
+
+ TEST_f_f1 (lgamma, 0.5, M_LOG_SQRT_PIl, 1);
+ TEST_f_f1 (lgamma, -0.5, M_LOG_2_SQRT_PIl, -1);
+- TEST_f_f1 (lgamma, 0.7L, 0.26086724653166651439L, 1);
+- TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197e-1L, 1);
++ TEST_f_f1 (lgamma, 0.7L, 0.260867246531666514385732417016759578L, 1);
++ TEST_f_f1 (lgamma, 1.2L, -0.853740900033158497197028392998854470e-1L, 1);
+
+ END (lgamma);
+ }
+@@ -4078,8 +4078,8 @@
+ TEST_f_f (tgamma, 1, 1);
+ TEST_f_f (tgamma, 4, 6);
+
+- TEST_f_f (tgamma, 0.7L, 1.29805533264755778568L);
+- TEST_f_f (tgamma, 1.2L, 0.91816874239976061064L);
++ TEST_f_f (tgamma, 0.7L, 1.29805533264755778568117117915281162L);
++ TEST_f_f (tgamma, 1.2L, 0.918168742399760610640951655185830401L);
+
+ END (tgamma);
+ }
+--- glibc-2.3.2/math/math_private.h 2001-09-24 21:13:41.000000000 -0400
++++ glibc-2.3.2/math/math_private.h 2003-09-19 22:37:05.000000000 -0400
+@@ -232,6 +232,9 @@
+ extern float __kernel_tanf (float,float,int);
+ extern int __kernel_rem_pio2f (float*,float*,int,int,int, const int32_t*);
+
++/* internal functions. */
++extern float __copysignf (float x, float __y);
++
+
+ /* ieee style elementary long double functions */
+ extern long double __ieee754_sqrtl (long double);
+--- glibc-2.3.2/math/test-fenv.c 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/math/test-fenv.c 2003-05-24 14:06:22.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de> and
+ Ulrich Drepper <drepper@cygnus.com>, 1997.
+@@ -350,7 +350,8 @@
+ int status;
+ pid_t pid;
+
+- printf ("Test: after fedisable (%s) processes will abort\n", flag_name);
++ printf ("Test: after fedisableexcept (%s) processes will abort\n",
++ flag_name);
+ printf (" when feraiseexcept (%s) is called.\n", flag_name);
+ pid = fork ();
+ if (pid == 0)
+@@ -403,7 +404,8 @@
+ int exception;
+ pid_t pid;
+
+- printf ("Test: after fedisable (%s) processes will not abort\n", flag_name);
++ printf ("Test: after fedisableexcept (%s) processes will not abort\n",
++ flag_name);
+ printf (" when feraiseexcept (%s) is called.\n", flag_name);
+ pid = fork ();
+ if (pid == 0)
+--- glibc-2.3.2/math/test-tgmath-ret.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/math/test-tgmath-ret.c 2003-06-16 03:52:41.000000000 -0400
+@@ -0,0 +1,85 @@
++/* Test compilation of tgmath macros.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andreas Jaeger <aj@suse.de>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <math.h>
++#include <complex.h>
++#include <tgmath.h>
++#include <stdio.h>
++
++static float fx;
++static double dx;
++static long double lx;
++static int errors = 0;
++
++static void
++our_error (const char *c)
++{
++ puts (c);
++ ++errors;
++}
++
++/* First function where the return type is constant. */
++
++#define CHECK_RET_CONST_TYPE(func, rettype, arg, name) \
++ if (sizeof (func (arg)) != sizeof (rettype)) \
++ our_error ("Return size of " #func " is wrong with " #name " argument");
++
++#define CHECK_RET_CONST_FLOAT(func, rettype) \
++ CHECK_RET_CONST_TYPE (func, rettype, fx, float)
++#define CHECK_RET_CONST_DOUBLE(func, rettype) \
++ CHECK_RET_CONST_TYPE (func, rettype, dx, double)
++#ifdef NO_LONG_DOUBLE
++# define CHECK_RET_CONST_LDOUBLE(func, rettype)
++#else
++# define CHECK_RET_CONST_LDOUBLE(func, rettype) \
++ CHECK_RET_CONST_TYPE (func, rettype, lx, long double)
++#endif
++
++#define CHECK_RET_CONST(func, rettype) \
++static void \
++check_return_ ##func (void) \
++{ \
++ CHECK_RET_CONST_FLOAT (func, rettype) \
++ CHECK_RET_CONST_DOUBLE (func, rettype) \
++ CHECK_RET_CONST_LDOUBLE (func, rettype) \
++}
++
++CHECK_RET_CONST(ilogb, int)
++CHECK_RET_CONST(lrint, long)
++CHECK_RET_CONST(lround, long)
++CHECK_RET_CONST(llrint, long long)
++CHECK_RET_CONST(llround, long long)
++
++static int
++do_test (void)
++{
++ check_return_ilogb ();
++ check_return_lrint ();
++ check_return_lround ();
++ check_return_llrint ();
++ check_return_llround ();
++
++ printf ("%Zd\n", sizeof(carg (lx)));
++
++ return errors != 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/math/test-tgmath.c 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/math/test-tgmath.c 2003-04-12 11:39:43.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test compilation of tgmath macros.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com> and
+ Ulrich Drepper <drepper@redhat.com>, 2001.
+@@ -162,7 +162,7 @@
+ static void
+ F(compile_test) (void)
+ {
+- TYPE a, b, c;
++ TYPE a, b, c = 1.0;
+ int i;
+ long int j;
+ long long int k;
+--- glibc-2.3.2/math/tgmath.h 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/math/tgmath.h 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -70,7 +70,18 @@
+ __tgmres = Fct (Val); \
+ else if (sizeof (Val) == sizeof (float)) \
+ __tgmres = Fct##f (Val); \
+- else \
++ else \
++ __tgmres = __tgml(Fct) (Val); \
++ __tgmres; }))
++
++# define __TGMATH_UNARY_REAL_RET_ONLY(Val, RetType, Fct) \
++ (__extension__ ({ RetType __tgmres; \
++ if (sizeof (Val) == sizeof (double) \
++ || __builtin_classify_type (Val) != 8) \
++ __tgmres = Fct (Val); \
++ else if (sizeof (Val) == sizeof (float)) \
++ __tgmres = Fct##f (Val); \
++ else \
+ __tgmres = __tgml(Fct) (Val); \
+ __tgmres; }))
+
+@@ -81,7 +92,7 @@
+ __tgmres = Fct (Val1, Val2); \
+ else if (sizeof (Val1) == sizeof (float)) \
+ __tgmres = Fct##f (Val1, Val2); \
+- else \
++ else \
+ __tgmres = __tgml(Fct) (Val1, Val2); \
+ __tgmres; }))
+
+@@ -155,7 +166,7 @@
+ else \
+ __tgmres = Cfct (Val); \
+ } \
+- else \
++ else \
+ { \
+ if (sizeof (__real__ (Val)) == sizeof (Val)) \
+ __tgmres = Fct##f (Val); \
+@@ -166,19 +177,6 @@
+
+ /* XXX This definition has to be changed as soon as the compiler understands
+ the imaginary keyword. */
+-# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \
+- (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
+- if (sizeof (Val) == sizeof (__complex__ double) \
+- || __builtin_classify_type (__real__ (Val)) != 8) \
+- __tgmres = Fct (Val); \
+- else if (sizeof (Val) == sizeof (__complex__ float)) \
+- __tgmres = Fct##f (Val); \
+- else \
+- __tgmres = __tgml(Fct) (Val); \
+- __tgmres; }))
+-
+-/* XXX This definition has to be changed as soon as the compiler understands
+- the imaginary keyword. */
+ # define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \
+ (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
+ if ((sizeof (__real__ (Val1)) > sizeof (double) \
+@@ -345,13 +343,13 @@
+
+ /* Round X to nearest integral value according to current rounding
+ direction. */
+-#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint)
+-#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint)
++#define lrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lrint)
++#define llrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llrint)
+
+ /* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+-#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround)
+-#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround)
++#define lround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lround)
++#define llround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llround)
+
+
+ /* Return X with its signed changed to Y's. */
+@@ -389,7 +387,7 @@
+ __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbln)
+
+ /* Return the binary exponent of X, which must be nonzero. */
+-#define ilogb(Val) __TGMATH_UNARY_REAL_ONLY (Val, ilogb)
++#define ilogb(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, int, ilogb)
+
+
+ /* Return positive difference between X and Y. */
+@@ -410,21 +408,21 @@
+ /* Absolute value, conjugates, and projection. */
+
+ /* Argument value of Z. */
+-#define carg(Val) __TGMATH_UNARY_IMAG_ONLY (Val, carg)
++#define carg(Val) __TGMATH_UNARY_REAL_IMAG (Val, carg, carg)
+
+ /* Complex conjugate of Z. */
+-#define conj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, conj)
++#define conj(Val) __TGMATH_UNARY_REAL_IMAG (Val, conj, conj)
+
+ /* Projection of Z onto the Riemann sphere. */
+-#define cproj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cproj)
++#define cproj(Val) __TGMATH_UNARY_REAL_IMAG (Val, cproj, cproj)
+
+
+ /* Decomposing complex values. */
+
+ /* Imaginary part of Z. */
+-#define cimag(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cimag)
++#define cimag(Val) __TGMATH_UNARY_REAL_IMAG (Val, cimag, cimag)
+
+ /* Real part of Z. */
+-#define creal(Val) __TGMATH_UNARY_IMAG_ONLY (Val, creal)
++#define creal(Val) __TGMATH_UNARY_REAL_IMAG (Val, creal, creal)
+
+ #endif /* tgmath.h */
+--- glibc-2.3.2/misc/Makefile 2002-08-27 00:52:37.000000000 -0400
++++ glibc-2.3.2/misc/Makefile 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -52,7 +52,7 @@
+ chflags fchflags \
+ insremque getttyent getusershell getpass ttyslot \
+ syslog syscall daemon \
+- mmap mmap64 munmap mprotect msync madvise mincore \
++ mmap mmap64 munmap mprotect msync madvise mincore remap_file_pages\
+ mlock munlock mlockall munlockall \
+ efgcvt efgcvt_r qefgcvt qefgcvt_r \
+ hsearch hsearch_r tsearch lsearch \
+@@ -75,8 +75,21 @@
+
+ tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent tst-hsearch
+
+-CFLAGS-tsearch.c = $(exceptions)
+-CFLAGS-lsearch.c = $(exceptions)
++CFLAGS-tsearch.c = $(uses-callbacks)
++CFLAGS-lsearch.c = $(uses-callbacks)
++CFLAGS-pselect.c = -fexceptions
++CFLAGS-readv.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-usleep.c = -fexceptions
++CFLAGS-syslog.c = -fexceptions
++CFLAGS-error.c = -fexceptions
++CFLAGS-getpass.c = -fexceptions
++CFLAGS-mkstemp.c = -fexceptions
++CFLAGS-mkstemp64.c = -fexceptions
++CFLAGS-getsysstats.c = -fexceptions
++CFLAGS-getusershell.c = -fexceptions
++CFLAGS-err.c = -fexceptions
++CFLAGS-tst-tsearch.c = $(stack-align-test-flags)
+
+ include ../Rules
+
+--- glibc-2.3.2/misc/Versions 2002-12-18 17:49:52.000000000 -0500
++++ glibc-2.3.2/misc/Versions 2003-03-15 15:02:11.000000000 -0500
+@@ -127,6 +127,9 @@
+ # s*
+ setxattr;
+ }
++ GLIBC_2.3.3 {
++ remap_file_pages;
++ }
+ GLIBC_PRIVATE {
+ # functions which have an additional interface since they are
+ # cancelable.
+--- glibc-2.3.2/misc/daemon.c 2002-04-08 03:02:09.000000000 -0400
++++ glibc-2.3.2/misc/daemon.c 2003-04-24 20:05:58.000000000 -0400
+@@ -31,12 +31,14 @@
+ static char sccsid[] = "@(#)daemon.c 8.1 (Berkeley) 6/4/93";
+ #endif /* LIBC_SCCS and not lint */
+
++#include <errno.h>
+ #include <fcntl.h>
+ #include <paths.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
+
+ #include <device-nrs.h>
++#include <not-cancel.h>
+
+ int
+ daemon(nochdir, noclose)
+@@ -59,7 +61,8 @@
+ if (!nochdir)
+ (void)__chdir("/");
+
+- if (!noclose && (fd = __open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
++ if (!noclose
++ && (fd = open_not_cancel(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
+ struct stat64 st;
+
+ if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) == 0
+@@ -74,7 +77,7 @@
+ if (fd > 2)
+ (void)__close (fd);
+ } else {
+- (void)__close (fd);
++ close_not_cancel_no_status (fd);
+ return -1;
+ }
+ }
+--- glibc-2.3.2/misc/err.h 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/misc/err.h 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* 4.4BSD utility functions for error messages.
+- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,25 +33,25 @@
+ /* Print "program: ", FORMAT, ": ", the standard error string for errno,
+ and a newline, on stderr. */
+ extern void warn (__const char *__format, ...)
+- __THROW __attribute__ ((__format__ (__printf__, 1, 2)));
++ __attribute__ ((__format__ (__printf__, 1, 2)));
+ extern void vwarn (__const char *__format, __gnuc_va_list)
+- __THROW __attribute__ ((__format__ (__printf__, 1, 0)));
++ __attribute__ ((__format__ (__printf__, 1, 0)));
+
+ /* Likewise, but without ": " and the standard error string. */
+ extern void warnx (__const char *__format, ...)
+- __THROW __attribute__ ((__format__ (__printf__, 1, 2)));
++ __attribute__ ((__format__ (__printf__, 1, 2)));
+ extern void vwarnx (__const char *__format, __gnuc_va_list)
+- __THROW __attribute__ ((__format__ (__printf__, 1, 0)));
++ __attribute__ ((__format__ (__printf__, 1, 0)));
+
+ /* Likewise, and then exit with STATUS. */
+ extern void err (int __status, __const char *__format, ...)
+- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
++ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
+ extern void verr (int __status, __const char *__format, __gnuc_va_list)
+- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
++ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
+ extern void errx (int __status, __const char *__format, ...)
+- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
++ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
+ extern void verrx (int __status, __const char *, __gnuc_va_list)
+- __THROW __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
++ __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
+
+ __END_DECLS
+
+--- glibc-2.3.2/misc/error.c 2002-12-09 03:20:33.000000000 -0500
++++ glibc-2.3.2/misc/error.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Error handler for noninteractive utilities
+- Copyright (C) 1990-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1990-1998, 2000-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library. Its master source is NOT part of
+ the C library, however. The master source lives in /gd/gnu/lib.
+
+@@ -92,6 +92,8 @@
+ # undef putc
+ # define putc(c, fp) INTUSE(_IO_putc) (c, fp)
+
++# include <bits/libc-lock.h>
++
+ #else /* not _LIBC */
+
+ # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
+@@ -255,6 +257,14 @@
+ va_list args;
+ #endif
+
++#if defined _LIBC && defined __libc_ptf_call
++ /* We do not want this call to be cut short by a thread
++ cancellation. Therefore disable cancellation for now. */
++ int state = PTHREAD_CANCEL_ENABLE;
++ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
++ 0);
++#endif
++
+ fflush (stdout);
+ #ifdef _LIBC
+ _IO_flockfile (stderr);
+@@ -288,6 +298,9 @@
+
+ #ifdef _LIBC
+ _IO_funlockfile (stderr);
++# ifdef __libc_ptf_call
++ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
++# endif
+ #endif
+ }
+
+@@ -328,6 +341,14 @@
+ old_line_number = line_number;
+ }
+
++#if defined _LIBC && defined __libc_ptf_call
++ /* We do not want this call to be cut short by a thread
++ cancellation. Therefore disable cancellation for now. */
++ int state = PTHREAD_CANCEL_ENABLE;
++ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
++ 0);
++#endif
++
+ fflush (stdout);
+ #ifdef _LIBC
+ _IO_flockfile (stderr);
+@@ -371,6 +392,9 @@
+
+ #ifdef _LIBC
+ _IO_funlockfile (stderr);
++# ifdef __libc_ptf_call
++ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
++# endif
+ #endif
+ }
+
+--- glibc-2.3.2/misc/error.h 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/misc/error.h 2003-09-19 22:37:05.000000000 -0400
+@@ -1,7 +1,6 @@
+ /* Declaration for error-reporting function
+- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library. Its master source is NOT part of
+- the C library, however. The master source lives in /gd/gnu/lib.
++ Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -38,17 +37,17 @@
+ extern "C" {
+ #endif
+
+-#if defined (__STDC__) && __STDC__
++#if defined __STDC__ && __STDC__
+
+ /* Print a message with `fprintf (stderr, FORMAT, ...)';
+ if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+ If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
+
+-extern void error (int status, int errnum, const char *format, ...)
++extern void error (int __status, int __errnum, const char *__format, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+
+-extern void error_at_line (int status, int errnum, const char *fname,
+- unsigned int lineno, const char *format, ...)
++extern void error_at_line (int __status, int __errnum, const char *__fname,
++ unsigned int __lineno, const char *__format, ...)
+ __attribute__ ((__format__ (__printf__, 5, 6)));
+
+ /* If NULL, error will flush stdout, then print on stderr the program
+--- glibc-2.3.2/misc/getpass.c 2001-08-17 10:28:56.000000000 -0400
++++ glibc-2.3.2/misc/getpass.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1992,93,94,95,96,97,98,99,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1992-1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,11 +21,10 @@
+ #include <termios.h>
+ #include <unistd.h>
+
+-#ifdef USE_IN_LIBIO
+-# include <wchar.h>
+-# define flockfile(s) _IO_flockfile (s)
+-# define funlockfile(s) _IO_funlockfile (s)
+-#endif
++#include <wchar.h>
++#define flockfile(s) _IO_flockfile (s)
++#define funlockfile(s) _IO_funlockfile (s)
++#include <bits/libc-lock.h>
+
+ /* It is desirable to use this bit on systems that have it.
+ The only bit of terminal state we want to twiddle is echoing, which is
+@@ -36,6 +35,13 @@
+ #define TCSASOFT 0
+ #endif
+
++static void
++call_fclose (void *arg)
++{
++ if (arg != NULL)
++ fclose (arg);
++}
++
+ char *
+ getpass (prompt)
+ const char *prompt;
+@@ -50,7 +56,7 @@
+ /* Try to write to and read from the terminal if we can.
+ If we can't open the terminal, use stderr and stdin. */
+
+- in = fopen ("/dev/tty", "w+");
++ in = fopen ("/dev/tty", "w+c");
+ if (in == NULL)
+ {
+ in = stdin;
+@@ -64,6 +70,10 @@
+ out = in;
+ }
+
++ /* Make sure the stream we opened is closed even if the thread is
++ canceled. */
++ __libc_cleanup_push (call_fclose, in == out ? in : NULL);
++
+ flockfile (out);
+
+ /* Turn echoing off if it is on now. */
+@@ -117,6 +127,8 @@
+
+ funlockfile (out);
+
++ __libc_cleanup_pop (0);
++
+ if (in != stdin)
+ /* We opened the terminal; now close it. */
+ fclose (in);
+--- glibc-2.3.2/misc/getttyent.c 2002-08-03 22:19:58.000000000 -0400
++++ glibc-2.3.2/misc/getttyent.c 2003-09-19 22:37:05.000000000 -0400
+@@ -192,7 +192,7 @@
+ if (tf) {
+ (void)rewind(tf);
+ return (1);
+- } else if ((tf = fopen(_PATH_TTYS, "r"))) {
++ } else if ((tf = fopen(_PATH_TTYS, "rc"))) {
+ /* We do the locking ourselves. */
+ __fsetlocking (tf, FSETLOCKING_BYCALLER);
+ return (1);
+--- glibc-2.3.2/misc/getusershell.c 2001-07-17 04:05:26.000000000 -0400
++++ glibc-2.3.2/misc/getusershell.c 2003-09-19 22:37:05.000000000 -0400
+@@ -100,7 +100,7 @@
+ if (strings != NULL)
+ free(strings);
+ strings = NULL;
+- if ((fp = fopen(_PATH_SHELLS, "r")) == NULL)
++ if ((fp = fopen(_PATH_SHELLS, "rc")) == NULL)
+ return (char **) okshells;
+ if (fstat64(fileno(fp), &statb) == -1) {
+ (void)fclose(fp);
+--- glibc-2.3.2/misc/mntent_r.c 2002-04-09 03:16:43.000000000 -0400
++++ glibc-2.3.2/misc/mntent_r.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Utilities for reading/writing fstab, mtab, etc.
+- Copyright (C) 1995-2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,7 +38,12 @@
+ FILE *
+ __setmntent (const char *file, const char *mode)
+ {
+- FILE *result = fopen (file, mode);
++ /* Extend the mode parameter with "c" to disable cancellation in the
++ I/O functions. */
++ size_t modelen = strlen (mode);
++ char newmode[modelen + 2];
++ memcpy (mempcpy (newmode, mode, modelen), "c", 2);
++ FILE *result = fopen (file, newmode);
+
+ if (result != NULL)
+ /* We do the locking ourselves. */
+--- glibc-2.3.2/misc/sys/mman.h 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/misc/sys/mman.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Definitions for BSD-style memory management.
+- Copyright (C) 1994-1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994-1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -83,8 +83,11 @@
+
+ /* Synchronize the region starting at ADDR and extending LEN bytes with the
+ file it maps. Filesystem operations on a file being mapped are
+- unpredictable before this is done. Flags are from the MS_* set. */
+-extern int msync (void *__addr, size_t __len, int __flags) __THROW;
++ unpredictable before this is done. Flags are from the MS_* set.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int msync (void *__addr, size_t __len, int __flags);
+
+ #ifdef __USE_BSD
+ /* Advise the system about particular usage patterns the program follows
+@@ -124,7 +127,13 @@
+ The status is returned in a vector of bytes. The least significant
+ bit of each byte is 1 if the referenced page is in memory, otherwise
+ it is zero. */
+-extern int mincore (void *__start, size_t __len, unsigned char *__vec);
++extern int mincore (void *__start, size_t __len, unsigned char *__vec)
++ __THROW;
++
++/* Remap arbitrary pages of a shared backing store within an existing
++ VMA. */
++extern int remap_file_pages (void *__start, size_t __size, int __prot,
++ size_t __pgoff, int __flags) __THROW;
+ #endif
+
+
+--- glibc-2.3.2/misc/sys/select.h 2002-08-02 01:00:55.000000000 -0400
++++ glibc-2.3.2/misc/sys/select.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* `fd_set' type and related macros, and `select'/`pselect' declarations.
+- Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1996,97,98,99,2000,01,02,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -102,21 +102,27 @@
+ readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
+ (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
+ after waiting the interval specified therein. Returns the number of ready
+- descriptors, or -1 for errors. */
++ descriptors, or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+- struct timeval *__restrict __timeout) __THROW;
++ struct timeval *__restrict __timeout);
+
+ #ifdef __USE_XOPEN2K
+ /* Same as above only that the TIMEOUT value is given with higher
+ resolution and a sigmask which is been set temporarily. This version
+- should be used. */
++ should be used.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+- const __sigset_t *__restrict __sigmask) __THROW;
++ const __sigset_t *__restrict __sigmask);
+ #endif
+
+ __END_DECLS
+--- glibc-2.3.2/misc/sys/syslog.h 2000-12-08 12:05:25.000000000 -0500
++++ glibc-2.3.2/misc/sys/syslog.h 2003-09-19 22:37:05.000000000 -0400
+@@ -168,24 +168,37 @@
+
+ __BEGIN_DECLS
+
+-/* Close desriptor used to write to system logger. */
+-extern void closelog (void) __THROW;
++/* Close desriptor used to write to system logger.
+
+-/* Open connection to system logger. */
+-extern void openlog (__const char *__ident, int __option, int __facility)
+- __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void closelog (void);
++
++/* Open connection to system logger.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void openlog (__const char *__ident, int __option, int __facility);
+
+ /* Set the log mask level. */
+ extern int setlogmask (int __mask) __THROW;
+
+-/* Generate a log message using FMT string and option arguments. */
+-extern void syslog (int __pri, __const char *__fmt, ...) __THROW
++/* Generate a log message using FMT string and option arguments.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void syslog (int __pri, __const char *__fmt, ...)
+ __attribute__ ((__format__(__printf__, 2, 3)));
+
+ #ifdef __USE_BSD
+-/* Generate a log message using FMT and using arguments pointed to by AP. */
++/* Generate a log message using FMT and using arguments pointed to by AP.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap)
+- __THROW __attribute__ ((__format__(__printf__, 2, 0)));
++ __attribute__ ((__format__(__printf__, 2, 0)));
+ #endif
+
+ __END_DECLS
+--- glibc-2.3.2/misc/sys/uio.h 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/misc/sys/uio.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 92, 96, 97, 98, 99 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,17 +33,21 @@
+ buffers described by VECTOR, which is a vector of COUNT `struct iovec's.
+ The buffers are filled in the order specified.
+ Operates just like `read' (see <unistd.h>) except that data are
+- put in VECTOR instead of a contiguous buffer. */
+-extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count)
+- __THROW;
++ put in VECTOR instead of a contiguous buffer.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t readv (int __fd, __const struct iovec *__vector, int __count);
+
+ /* Write data pointed by the buffers described by VECTOR, which
+ is a vector of COUNT `struct iovec's, to file descriptor FD.
+ The data is written in the order specified.
+ Operates just like `write' (see <unistd.h>) except that the data
+- are taken from VECTOR instead of a contiguous buffer. */
+-extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count)
+- __THROW;
++ are taken from VECTOR instead of a contiguous buffer.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t writev (int __fd, __const struct iovec *__vector, int __count);
+
+ __END_DECLS
+
+--- glibc-2.3.2/misc/syslog.c 2002-12-11 21:00:24.000000000 -0500
++++ glibc-2.3.2/misc/syslog.c 2003-08-21 08:37:07.000000000 -0400
+@@ -41,6 +41,7 @@
+ #include <fcntl.h>
+ #include <paths.h>
+ #include <stdio.h>
++#include <stdio_ext.h>
+ #include <string.h>
+ #include <time.h>
+ #include <unistd.h>
+@@ -74,9 +75,27 @@
+ static void openlog_internal(const char *, int, int) internal_function;
+ static void closelog_internal(void);
+ static void sigpipe_handler (int);
+-#ifdef _LIBC_REENTRANT
+-static void cancel_handler (void *);
+-#endif
++
++
++struct cleanup_arg
++{
++ void *buf;
++ struct sigaction *oldaction;
++};
++
++static void
++cancel_handler (void *ptr)
++{
++ /* Restore the old signal handler. */
++ struct cleanup_arg *clarg = (struct cleanup_arg *) ptr;
++
++ if (clarg != NULL && clarg->oldaction != NULL)
++ __sigaction (SIGPIPE, clarg->oldaction, NULL);
++
++ /* Free the lock. */
++ __libc_lock_unlock (syslog_lock);
++}
++
+
+ /*
+ * syslog, vsyslog --
+@@ -118,7 +137,6 @@
+ size_t bufsize = 0;
+ size_t prioff, msgoff;
+ struct sigaction action, oldaction;
+- struct sigaction *oldaction_ptr = NULL;
+ int sigpipe;
+ int saved_errno = errno;
+ char failbuf[3 * sizeof (pid_t) + sizeof "out of memory []"];
+@@ -165,6 +183,7 @@
+ }
+ else
+ {
++ __fsetlocking (f, FSETLOCKING_BYCALLER);
+ prioff = fprintf (f, "<%d>", pri);
+ (void) time (&now);
+ #ifdef USE_IN_LIBIO
+@@ -182,9 +201,12 @@
+ if (LogTag != NULL)
+ fputs_unlocked (LogTag, f);
+ if (LogStat & LOG_PID)
+- fprintf (f, "[%d]", __getpid ());
++ fprintf (f, "[%d]", (int) __getpid ());
+ if (LogTag != NULL)
+- putc_unlocked (':', f), putc_unlocked (' ', f);
++ {
++ putc_unlocked (':', f);
++ putc_unlocked (' ', f);
++ }
+
+ /* Restore errno for %m format. */
+ __set_errno (saved_errno);
+@@ -212,16 +234,22 @@
+ v->iov_base = (char *) "\n";
+ v->iov_len = 1;
+ }
++
++ __libc_cleanup_push (free, buf);
++
++ /* writev is a cancellation point. */
+ (void)__writev(STDERR_FILENO, iov, v - iov + 1);
++
++ __libc_cleanup_pop (0);
+ }
+
+-#ifdef _LIBC_REENTRANT
+ /* Prepare for multiple users. We have to take care: open and
+ write are cancellation points. */
+- __libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler,
+- &oldaction_ptr);
++ struct cleanup_arg clarg;
++ clarg.buf = buf;
++ clarg.oldaction = NULL;
++ __libc_cleanup_push (cancel_handler, &clarg);
+ __libc_lock_lock (syslog_lock);
+-#endif
+
+ /* Prepare for a broken connection. */
+ memset (&action, 0, sizeof (action));
+@@ -229,7 +257,7 @@
+ sigemptyset (&action.sa_mask);
+ sigpipe = __sigaction (SIGPIPE, &action, &oldaction);
+ if (sigpipe == 0)
+- oldaction_ptr = &oldaction;
++ clarg.oldaction = &oldaction;
+
+ /* Get connected, output the message to the local logger. */
+ if (!connected)
+@@ -271,11 +299,9 @@
+ if (sigpipe == 0)
+ __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL);
+
+-#ifdef _LIBC_REENTRANT
+ /* End of critical section. */
+- __libc_cleanup_region_end (0);
++ __libc_cleanup_pop (0);
+ __libc_lock_unlock (syslog_lock);
+-#endif
+
+ free (buf);
+ }
+@@ -283,6 +309,7 @@
+
+ static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */
+
++
+ static void
+ internal_function
+ openlog_internal(const char *ident, int logstat, int logfac)
+@@ -312,8 +339,9 @@
+ == -1)
+ {
+ int saved_errno = errno;
+- (void)__close(LogFile);
++ int fd = LogFile;
+ LogFile = -1;
++ (void)__close(fd);
+ if (LogType == SOCK_DGRAM
+ && saved_errno == EPROTOTYPE)
+ {
+@@ -329,28 +357,16 @@
+ }
+ }
+
+-
+-static void
+-log_cleanup (void *arg)
+-{
+- __libc_lock_unlock (syslog_lock);
+-}
+-
+ void
+ openlog (const char *ident, int logstat, int logfac)
+ {
+-#ifdef _LIBC_REENTRANT
+- /* Protect against multiple users. */
+- __libc_cleanup_region_start (1, log_cleanup, NULL);
++ /* Protect against multiple users and cancellation. */
++ __libc_cleanup_push (cancel_handler, NULL);
+ __libc_lock_lock (syslog_lock);
+-#endif
+
+ openlog_internal (ident, logstat, logfac);
+
+-#ifdef _LIBC_REENTRANT
+- /* Free the lock. */
+- __libc_cleanup_region_end (1);
+-#endif
++ __libc_cleanup_pop (1);
+ }
+
+ static void
+@@ -373,36 +389,17 @@
+ void
+ closelog ()
+ {
+-#ifdef _LIBC_REENTRANT
+- /* Protect against multiple users. */
+- __libc_cleanup_region_start (1, log_cleanup, NULL);
++ /* Protect against multiple users and cancellation. */
++ __libc_cleanup_push (cancel_handler, NULL);
+ __libc_lock_lock (syslog_lock);
+-#endif
+
+ closelog_internal ();
+ LogTag = NULL;
+ LogType = SOCK_DGRAM; /* this is the default */
+
+-#ifdef _LIBC_REENTRANT
+- /* Free the lock. */
+- __libc_cleanup_region_end (1);
+-#endif
+-}
+-
+-#ifdef _LIBC_REENTRANT
+-static void
+-cancel_handler (void *ptr)
+-{
+- /* Restore the old signal handler. */
+- struct sigaction *oldaction = *((struct sigaction **) ptr);
+-
+- if (oldaction != (struct sigaction *) NULL)
+- __sigaction (SIGPIPE, oldaction, (struct sigaction *) NULL);
+-
+ /* Free the lock. */
+- __libc_lock_unlock (syslog_lock);
++ __libc_cleanup_pop (1);
+ }
+-#endif
+
+ /* setlogmask -- set the log mask level */
+ int
+--- glibc-2.3.2/misc/tst-tsearch.c 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/misc/tst-tsearch.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test program for tsearch et al.
+- Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,6 +25,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <search.h>
++#include <tst-stack-align.h>
+
+ #define SEED 0
+ #define BALANCED 1
+@@ -72,10 +73,14 @@
+ /* Maximum depth during a tree walk. */
+ static int max_depth;
+
++static int stack_align_check[2];
++
+ /* Compare two keys. */
+ static int
+ cmp_fn (const void *a, const void *b)
+ {
++ if (!stack_align_check[0])
++ stack_align_check[0] = TEST_STACK_ALIGN () ? -1 : 1;
+ return *(const int *) a - *(const int *) b;
+ }
+
+@@ -103,6 +108,9 @@
+ {
+ int key = **(int **) nodep;
+
++ if (!stack_align_check[1])
++ stack_align_check[1] = TEST_STACK_ALIGN () ? -1 : 1;
++
+ if (depth > max_depth)
+ max_depth = depth;
+ if (which == leaf || which == preorder)
+@@ -329,5 +337,17 @@
+ total_error |= error;
+ }
+
++ for (i = 0; i < 2; ++i)
++ if (stack_align_check[i] == 0)
++ {
++ printf ("stack alignment check %d not run\n", i);
++ total_error |= 1;
++ }
++ else if (stack_align_check[i] != 1)
++ {
++ printf ("stack insufficiently aligned in check %d\n", i);
++ total_error |= 1;
++ }
++
+ return total_error;
+ }
+--- glibc-2.3.2/nis/Makefile 2002-04-09 13:33:04.000000000 -0400
++++ glibc-2.3.2/nis/Makefile 2003-08-21 08:37:07.000000000 -0400
+@@ -54,8 +54,7 @@
+ nis_findserv nis_callback nis_clone_dir nis_clone_obj\
+ nis_clone_res
+
+-libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
+- nisplus-parser nss-nis nss-nisplus
++libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups)
+ libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
+
+ libnss_nis-routines := $(addprefix nis-,$(databases)) nis-initgroups \
+--- glibc-2.3.2/nis/nis_table.c 2001-07-07 15:21:06.000000000 -0400
++++ glibc-2.3.2/nis/nis_table.c 2003-03-18 16:46:07.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (c) 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (c) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
+
+@@ -30,7 +30,7 @@
+ struct ib_request *ibreq = calloc (1, sizeof (ib_request));
+ char buf[strlen (name) + 1];
+ nis_attr *search_val = NULL;
+- int search_len = 0;
++ size_t search_len = 0;
+ char *cptr;
+ size_t size = 0;
+
+--- glibc-2.3.2/nis/nss_compat/compat-grp.c 2002-08-26 01:04:55.000000000 -0400
++++ glibc-2.3.2/nis/nss_compat/compat-grp.c 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996,1997,1998,1999,2001,2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
+
+@@ -17,25 +17,28 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <ctype.h>
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <nss.h>
+ #include <grp.h>
+-#include <ctype.h>
+-#include <bits/libc-lock.h>
+-#include <string.h>
+-#include <rpcsvc/yp.h>
+-#include <rpcsvc/ypclnt.h>
+-#include <rpcsvc/nis.h>
++#include <nss.h>
+ #include <nsswitch.h>
+-
+-#include "nss-nisplus.h"
+-#include "nisplus-parser.h"
++#include <stdio_ext.h>
++#include <string.h>
++#include <rpc/types.h>
++#include <bits/libc-lock.h>
+
+ static service_user *ni;
+-static bool_t use_nisplus; /* default: group_compat: nis */
+-static nis_name grptable; /* Name of the group table */
+-static size_t grptablelen;
++static enum nss_status (*nss_setgrent) (int stayopen);
++static enum nss_status (*nss_getgrnam_r) (const char *name,
++ struct group * grp, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp,
++ char *buffer, size_t buflen,
++ int *errnop);
++static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_endgrent) (void);
+
+ /* Get the declaration of the parser function. */
+ #define ENTNAME grent
+@@ -47,25 +50,21 @@
+ #define BLACKLIST_INITIAL_SIZE 512
+ #define BLACKLIST_INCREMENT 256
+ struct blacklist_t
+- {
+- char *data;
+- int current;
+- int size;
+- };
++{
++ char *data;
++ int current;
++ int size;
++};
+
+ struct ent_t
+- {
+- bool_t nis;
+- bool_t nis_first;
+- char *oldkey;
+- int oldkeylen;
+- nis_result *result;
+- FILE *stream;
+- struct blacklist_t blacklist;
++{
++ bool_t files;
++ FILE *stream;
++ struct blacklist_t blacklist;
+ };
+ typedef struct ent_t ent_t;
+
+-static ent_t ext_ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
++static ent_t ext_ent = {TRUE, NULL, {NULL, 0, 0}};
+
+ /* Protect global state against multiple changers. */
+ __libc_lock_define_initialized (static, lock)
+@@ -74,56 +73,27 @@
+ static void blacklist_store_name (const char *, ent_t *);
+ static int in_blacklist (const char *, int, ent_t *);
+
+-static enum nss_status
+-_nss_first_init (void)
++/* Initialize the NSS interface/functions. The calling function must
++ hold the lock. */
++static void
++init_nss_interface (void)
+ {
+- if (ni == NULL)
+- {
+- __nss_database_lookup ("group_compat", NULL, "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
+-
+- if (grptable == NULL)
++ if (__nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0)
+ {
+- static const char key[] = "group.org_dir.";
+- const char *local_dir = nis_local_directory ();
+- size_t len_local_dir = strlen (local_dir);
+-
+- grptable = malloc (sizeof (key) + len_local_dir);
+- if (grptable == NULL)
+- return NSS_STATUS_TRYAGAIN;
+-
+- grptablelen = ((char *) mempcpy (mempcpy (grptable,
+- key, sizeof (key) - 1),
+- local_dir, len_local_dir + 1)
+- - grptable) - 1;
++ nss_setgrent = __nss_lookup_function (ni, "setgrent");
++ nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r");
++ nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r");
++ nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r");
++ nss_endgrent = __nss_lookup_function (ni, "endgrent");
+ }
+-
+- return NSS_STATUS_SUCCESS;
+ }
+
+ static enum nss_status
+-internal_setgrent (ent_t *ent)
++internal_setgrent (ent_t *ent, int stayopen)
+ {
+ enum nss_status status = NSS_STATUS_SUCCESS;
+
+- ent->nis = ent->nis_first = 0;
+-
+- if (_nss_first_init () != NSS_STATUS_SUCCESS)
+- return NSS_STATUS_UNAVAIL;
+-
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
++ ent->files = TRUE;
+
+ if (ent->blacklist.data != NULL)
+ {
+@@ -136,7 +106,7 @@
+
+ if (ent->stream == NULL)
+ {
+- ent->stream = fopen ("/etc/group", "r");
++ ent->stream = fopen ("/etc/group", "rm");
+
+ if (ent->stream == NULL)
+ status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+@@ -145,25 +115,31 @@
+ /* We have to make sure the file is `closed on exec'. */
+ int result, flags;
+
+- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
++ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
+ if (result >= 0)
+ {
+ flags |= FD_CLOEXEC;
+- result = fcntl (fileno (ent->stream), F_SETFD, flags);
++ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
+ }
+ if (result < 0)
+ {
+ /* Something went wrong. Close the stream and return a
+- failure. */
++ failure. */
+ fclose (ent->stream);
+ ent->stream = NULL;
+ status = NSS_STATUS_UNAVAIL;
+ }
++ else
++ /* We take care of locking ourself. */
++ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
+ }
+ }
+ else
+ rewind (ent->stream);
+
++ if (status == NSS_STATUS_SUCCESS && nss_setgrent)
++ return nss_setgrent (stayopen);
++
+ return status;
+ }
+
+@@ -175,7 +151,10 @@
+
+ __libc_lock_lock (lock);
+
+- result = internal_setgrent (&ext_ent);
++ if (ni == NULL)
++ init_nss_interface ();
++
++ result = internal_setgrent (&ext_ent, stayopen);
+
+ __libc_lock_unlock (lock);
+
+@@ -186,27 +165,15 @@
+ static enum nss_status
+ internal_endgrent (ent_t *ent)
+ {
++ if (nss_endgrent)
++ nss_endgrent ();
++
+ if (ent->stream != NULL)
+ {
+ fclose (ent->stream);
+ ent->stream = NULL;
+ }
+
+- ent->nis = ent->nis_first = 0;
+-
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
+-
+ if (ent->blacklist.data != NULL)
+ {
+ ent->blacklist.current = 1;
+@@ -233,239 +200,44 @@
+ return result;
+ }
+
++/* get the next group from NSS (+ entry) */
+ static enum nss_status
+-getgrent_next_nis (struct group *result, ent_t *ent, char *buffer,
++getgrent_next_nss (struct group *result, ent_t *ent, char *buffer,
+ size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+- char *domain;
+- char *outkey, *outval;
+- int outkeylen, outvallen, parse_res;
+- char *p;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- return NSS_STATUS_NOTFOUND;
+- }
++ if (!nss_getgrent_r)
++ return NSS_STATUS_UNAVAIL;
+
+ do
+ {
+- char *save_oldkey;
+- int save_oldlen;
+- bool_t save_nis_first;
++ enum nss_status status;
+
+- if (ent->nis_first)
+- {
+- if (yp_first (domain, "group.byname", &outkey, &outkeylen,
+- &outval, &outvallen) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- return NSS_STATUS_UNAVAIL;
+- }
+-
+- if ( buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- save_oldkey = ent->oldkey;
+- save_oldlen = ent->oldkeylen;
+- save_nis_first = TRUE;
+- ent->oldkey = outkey;
+- ent->oldkeylen = outkeylen;
+- ent->nis_first = FALSE;
+- }
+- else
+- {
+- if (yp_next (domain, "group.byname", ent->oldkey, ent->oldkeylen,
+- &outkey, &outkeylen, &outval, &outvallen)
+- != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- return NSS_STATUS_NOTFOUND;
+- }
+-
+- if ( buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- save_oldkey = ent->oldkey;
+- save_oldlen = ent->oldkeylen;
+- save_nis_first = FALSE;
+- ent->oldkey = outkey;
+- ent->oldkeylen = outkeylen;
+- }
+-
+- /* Copy the found data to our buffer... */
+- p = strncpy (buffer, outval, buflen);
+-
+- /* ...and free the data. */
+- free (outval);
+-
+- while (isspace (*p))
+- ++p;
+-
+- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- free (ent->oldkey);
+- ent->oldkey = save_oldkey;
+- ent->oldkeylen = save_oldlen;
+- ent->nis_first = save_nis_first;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!save_nis_first)
+- free (save_oldkey);
+- }
+-
+- if (parse_res &&
+- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
+- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
++ if ((status = nss_getgrent_r (result, buffer, buflen, errnop)) !=
++ NSS_STATUS_SUCCESS)
++ return status;
+ }
+- while (!parse_res);
+-
+- return NSS_STATUS_SUCCESS;
+-}
+-
+-static enum nss_status
+-getgrent_next_nisplus (struct group *result, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- int parse_res;
+-
+- do
+- {
+- nis_result *save_oldres;
+- bool_t save_nis_first;
+-
+- if (ent->nis_first)
+- {
+- save_oldres = ent->result;
+- save_nis_first = TRUE;
+- ent->result = nis_first_entry(grptable);
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- return niserr2nss (ent->result->status);
+- }
+- ent->nis_first = FALSE;
+- }
+- else
+- {
+- nis_result *res;
+-
+- save_oldres = ent->result;
+- save_nis_first = FALSE;
+- res = nis_next_entry(grptable, &ent->result->cookie);
+- ent->result = res;
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- return niserr2nss (ent->result->status);
+- }
+- }
+- parse_res = _nss_nisplus_parse_grent (ent->result, 0, result,
+- buffer, buflen, errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (ent->result);
+- ent->result = save_oldres;
+- ent->nis_first = save_nis_first;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!save_nis_first)
+- nis_freeresult (save_oldres);
+- }
+-
+- if (parse_res &&
+- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
+- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
+- }
+- while (!parse_res);
++ while (in_blacklist (result->gr_name, strlen (result->gr_name), ent));
+
+ return NSS_STATUS_SUCCESS;
+ }
+
+ /* This function handle the +group entrys in /etc/group */
+ static enum nss_status
+-getgrnam_plusgroup (const char *name, struct group *result, char *buffer,
+- size_t buflen, int *errnop)
++getgrnam_plusgroup (const char *name, struct group *result, ent_t *ent,
++ char *buffer, size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+- int parse_res;
+-
+- if (use_nisplus) /* Do the NIS+ query here */
+- {
+- nis_result *res;
+- char buf[strlen (name) + 24 + grptablelen];
+-
+- sprintf(buf, "[name=%s],%s", name, grptable);
+- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
+- {
+- enum nss_status status = niserr2nss (res->status);
+-
+- nis_freeresult (res);
+- return status;
+- }
+- parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, buflen,
+- errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (res);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (res);
+- }
+- else /* Use NIS */
+- {
+- char *domain, *outval, *p;
+- int outvallen;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (yp_match (domain, "group.byname", name, strlen (name),
+- &outval, &outvallen) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
++ if (!nss_getgrnam_r)
++ return NSS_STATUS_UNAVAIL;
+
+- /* Copy the found data to our buffer... */
+- p = strncpy (buffer, outval, buflen);
++ if (nss_getgrnam_r (name, result, buffer, buflen, errnop) !=
++ NSS_STATUS_SUCCESS)
++ return NSS_STATUS_NOTFOUND;
+
+- /* ... and free the data. */
+- free (outval);
+- while (isspace (*p))
+- ++p;
+- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- return NSS_STATUS_TRYAGAIN;
+- }
++ if (in_blacklist (result->gr_name, strlen (result->gr_name), ent))
++ return NSS_STATUS_NOTFOUND;
+
+- if (parse_res)
+- /* We found the entry. */
+- return NSS_STATUS_SUCCESS;
+- else
+- return NSS_STATUS_RETURN;
++ /* We found the entry. */
++ return NSS_STATUS_SUCCESS;
+ }
+
+ static enum nss_status
+@@ -483,8 +255,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+@@ -501,9 +273,9 @@
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
+ !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
+ errnop)));
+
+@@ -531,41 +303,39 @@
+ if (result->gr_name[0] == '+' && result->gr_name[1] != '\0'
+ && result->gr_name[1] != '@')
+ {
+- enum nss_status status;
++ size_t len = strlen (result->gr_name);
++ char buf[len];
++ enum nss_status status;
+
+ /* Store the group in the blacklist for the "+" at the end of
+ /etc/group */
+- blacklist_store_name (&result->gr_name[1], ent);
+- status = getgrnam_plusgroup (&result->gr_name[1], result, buffer,
+- buflen, errnop);
+- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
+- break;
+- else
+- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
+- || status == NSS_STATUS_NOTFOUND) /* No group in NIS */
+- continue;
+- else
+- {
+- if (status == NSS_STATUS_TRYAGAIN)
+- {
+- /* The parser ran out of space. */
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- }
+- return status;
+- }
++ memcpy (buf, &result->gr_name[1], len);
++ status = getgrnam_plusgroup (&result->gr_name[1], result, ent,
++ buffer, buflen, errnop);
++ blacklist_store_name (buf, ent);
++ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
++ break;
++ else if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
++ || status == NSS_STATUS_NOTFOUND) /* No group in NIS */
++ continue;
++ else
++ {
++ if (status == NSS_STATUS_TRYAGAIN)
++ {
++ /* The parser ran out of space. */
++ fsetpos (ent->stream, &pos);
++ *errnop = ERANGE;
++ }
++ return status;
++ }
+ }
+
+ /* +:... */
+ if (result->gr_name[0] == '+' && result->gr_name[1] == '\0')
+ {
+- ent->nis = TRUE;
+- ent->nis_first = TRUE;
++ ent->files = FALSE;
+
+- if (use_nisplus)
+- return getgrent_next_nisplus (result, ent, buffer, buflen, errnop);
+- else
+- return getgrent_next_nis (result, ent, buffer, buflen, errnop);
++ return getgrent_next_nss (result, ent, buffer, buflen, errnop);
+ }
+ }
+
+@@ -573,39 +343,31 @@
+ }
+
+
+-static enum nss_status
+-internal_getgrent_r (struct group *gr, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- if (ent->nis)
+- {
+- if (use_nisplus)
+- return getgrent_next_nisplus (gr, ent, buffer, buflen, errnop);
+- else
+- return getgrent_next_nis (gr, ent, buffer, buflen, errnop);
+- }
+- else
+- return getgrent_next_file (gr, ent, buffer, buflen, errnop);
+-}
+-
+ enum nss_status
+ _nss_compat_getgrent_r (struct group *grp, char *buffer, size_t buflen,
+ int *errnop)
+ {
+- enum nss_status status = NSS_STATUS_SUCCESS;
++ enum nss_status result = NSS_STATUS_SUCCESS;
+
+ __libc_lock_lock (lock);
+
+ /* Be prepared that the setgrent function was not called before. */
+- if (ext_ent.stream == NULL)
+- status = internal_setgrent (&ext_ent);
++ if (ni == NULL)
++ init_nss_interface ();
+
+- if (status == NSS_STATUS_SUCCESS)
+- status = internal_getgrent_r (grp, &ext_ent, buffer, buflen, errnop);
++ if (ext_ent.stream == NULL)
++ result = internal_setgrent (&ext_ent, 1);
+
++ if (result == NSS_STATUS_SUCCESS)
++ {
++ if (ext_ent.files)
++ result = getgrent_next_file (grp, &ext_ent, buffer, buflen, errnop);
++ else
++ result = getgrent_next_nss (grp, &ext_ent, buffer, buflen, errnop);
++ }
+ __libc_lock_unlock (lock);
+
+- return status;
++ return result;
+ }
+
+ /* Searches in /etc/group and the NIS/NIS+ map for a special group */
+@@ -624,9 +386,9 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
+- return NSS_STATUS_NOTFOUND;
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
++ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+ {
+@@ -642,9 +404,9 @@
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
+ !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
+ errnop)));
+
+@@ -681,8 +443,8 @@
+ {
+ enum nss_status status;
+
+- status = getgrnam_plusgroup (name, result, buffer, buflen,
+- errnop);
++ status = getgrnam_plusgroup (name, result, ent,
++ buffer, buflen, errnop);
+ if (status == NSS_STATUS_RETURN)
+ /* We couldn't parse the entry */
+ continue;
+@@ -695,7 +457,8 @@
+ {
+ enum nss_status status;
+
+- status = getgrnam_plusgroup (name, result, buffer, buflen, errnop);
++ status = getgrnam_plusgroup (name, result, ent,
++ buffer, buflen, errnop);
+ if (status == NSS_STATUS_RETURN)
+ /* We couldn't parse the entry */
+ continue;
+@@ -711,99 +474,27 @@
+ _nss_compat_getgrnam_r (const char *name, struct group *grp,
+ char *buffer, size_t buflen, int *errnop)
+ {
+- ent_t ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
+- enum nss_status status;
++ ent_t ent = {TRUE, NULL, {NULL, 0, 0}};
++ enum nss_status result;
+
+ if (name[0] == '-' || name[0] == '+')
+ return NSS_STATUS_NOTFOUND;
+
+ __libc_lock_lock (lock);
+
+- status = internal_setgrent (&ent);
++ if (ni == NULL)
++ init_nss_interface ();
+
+ __libc_lock_unlock (lock);
+
+- if (status != NSS_STATUS_SUCCESS)
+- return status;
++ result = internal_setgrent (&ent, 0);
+
+- status = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getgrnam_r (name, grp, &ent, buffer, buflen, errnop);
+
+ internal_endgrent (&ent);
+
+- return status;
+-}
+-
+-/* This function handle the + entry in /etc/group */
+-static enum nss_status
+-getgrgid_plusgroup (gid_t gid, struct group *result, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- struct parser_data *data = (void *) buffer;
+- int parse_res;
+-
+- if (use_nisplus) /* Do the NIS+ query here */
+- {
+- nis_result *res;
+- char buf[24 + grptablelen];
+-
+- sprintf(buf, "[gid=%lu],%s", (unsigned long int) gid, grptable);
+- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
+- {
+- enum nss_status status = niserr2nss (res->status);
+-
+- nis_freeresult (res);
+- return status;
+- }
+- if ((parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer,
+- buflen, errnop)) == -1)
+- {
+- nis_freeresult (res);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (res);
+- }
+- else /* Use NIS */
+- {
+- char buf[24];
+- char *domain, *outval, *p;
+- int outvallen;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- snprintf (buf, sizeof (buf), "%lu", (unsigned long int) gid);
+-
+- if (yp_match (domain, "group.bygid", buf, strlen (buf),
+- &outval, &outvallen) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- /* Copy the found data to our buffer... */
+- p = strncpy (buffer, outval, buflen);
+-
+- /* ... and free the data. */
+- free (outval);
+-
+- while (isspace (*p))
+- p++;
+- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (parse_res)
+- /* We found the entry. */
+- return NSS_STATUS_SUCCESS;
+- else
+- return NSS_STATUS_RETURN;
++ return result;
+ }
+
+ /* Searches in /etc/group and the NIS/NIS+ map for a special group id */
+@@ -822,8 +513,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+@@ -840,9 +531,9 @@
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
+ !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
+ errnop)));
+
+@@ -866,8 +557,8 @@
+ /* -group */
+ if (result->gr_name[0] == '-' && result->gr_name[1] != '\0')
+ {
+- blacklist_store_name (&result->gr_name[1], ent);
+- continue;
++ blacklist_store_name (&result->gr_name[1], ent);
++ continue;
+ }
+
+ /* +group */
+@@ -876,10 +567,10 @@
+ enum nss_status status;
+
+ /* Store the group in the blacklist for the "+" at the end of
+- /etc/group */
+- blacklist_store_name (&result->gr_name[1], ent);
+- status = getgrnam_plusgroup (&result->gr_name[1], result, buffer,
+- buflen, errnop);
++ /etc/group */
++ blacklist_store_name (&result->gr_name[1], ent);
++ status = getgrnam_plusgroup (&result->gr_name[1], result, ent,
++ buffer, buflen, errnop);
+ if (status == NSS_STATUS_SUCCESS && result->gr_gid == gid)
+ break;
+ else
+@@ -890,7 +581,7 @@
+ {
+ enum nss_status status;
+
+- status = getgrgid_plusgroup (gid, result, buffer, buflen, errnop);
++ status = nss_getgrgid_r (gid, result, buffer, buflen, errnop);
+ if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
+ return NSS_STATUS_NOTFOUND;
+ else
+@@ -905,23 +596,24 @@
+ _nss_compat_getgrgid_r (gid_t gid, struct group *grp,
+ char *buffer, size_t buflen, int *errnop)
+ {
+- ent_t ent = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
+- enum nss_status status;
++ ent_t ent = {TRUE, NULL, {NULL, 0, 0}};
++ enum nss_status result;
+
+ __libc_lock_lock (lock);
+
+- status = internal_setgrent (&ent);
++ if (ni == NULL)
++ init_nss_interface ();
+
+ __libc_lock_unlock (lock);
+
+- if (status != NSS_STATUS_SUCCESS)
+- return status;
++ result = internal_setgrent (&ent, 0);
+
+- status = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getgrgid_r (gid, grp, &ent, buffer, buflen, errnop);
+
+ internal_endgrent (&ent);
+
+- return status;
++ return result;
+ }
+
+
+@@ -983,7 +675,7 @@
+
+ buf[0] = '|';
+ cp = stpcpy (&buf[1], name);
+- *cp++= '|';
++ *cp++ = '|';
+ *cp = '\0';
+ return strstr (ent->blacklist.data, buf) != NULL;
+ }
+--- glibc-2.3.2/nis/nss_compat/compat-initgroups.c 2002-08-26 01:05:19.000000000 -0400
++++ glibc-2.3.2/nis/nss_compat/compat-initgroups.c 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
+
+@@ -17,27 +17,39 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <alloca.h>
++#include <ctype.h>
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <nss.h>
+ #include <grp.h>
+-#include <ctype.h>
++#include <nss.h>
++#include <stdio_ext.h>
+ #include <string.h>
+ #include <unistd.h>
+-#include <rpcsvc/yp.h>
+-#include <rpcsvc/ypclnt.h>
+-#include <rpcsvc/nis.h>
++#include <rpc/types.h>
+ #include <sys/param.h>
+ #include <nsswitch.h>
+-
+-#include "nss-nis.h"
+-#include "nss-nisplus.h"
+-#include "nisplus-parser.h"
++#include <bits/libc-lock.h>
+
+ static service_user *ni;
+-static bool_t use_nisplus; /* default: group_compat: nis */
+-static nis_name grptable; /* Name of the group table */
+-static size_t grptablelen;
++/* Type of the lookup function. */
++static enum nss_status (*nss_initgroups_dyn) (const char *, gid_t,
++ long int *, long int *,
++ gid_t **, long int, int *);
++static enum nss_status (*nss_setgrent) (int stayopen);
++static enum nss_status (*nss_getgrnam_r) (const char *name,
++ struct group * grp, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_getgrgid_r) (gid_t gid, struct group * grp,
++ char *buffer, size_t buflen,
++ int *errnop);
++static enum nss_status (*nss_getgrent_r) (struct group * grp, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_endgrent) (void);
++
++/* Protect global state against multiple changers. */
++__libc_lock_define_initialized (static, lock)
++
+
+ /* Get the declaration of the parser function. */
+ #define ENTNAME grent
+@@ -49,29 +61,17 @@
+ #define BLACKLIST_INITIAL_SIZE 512
+ #define BLACKLIST_INCREMENT 256
+ struct blacklist_t
+- {
+- char *data;
+- int current;
+- int size;
+- };
+-
+-struct response_t
+ {
+- char *val;
+- struct response_t *next;
++ char *data;
++ int current;
++ int size;
+ };
+
+ struct ent_t
+- {
+- bool_t nis;
+- bool_t nis_first;
+- char *oldkey;
+- int oldkeylen;
+- nis_result *result;
+- FILE *stream;
+- struct blacklist_t blacklist;
+- struct response_t *start;
+- struct response_t *next;
++{
++ bool_t files;
++ FILE *stream;
++ struct blacklist_t blacklist;
+ };
+ typedef struct ent_t ent_t;
+
+@@ -80,68 +80,26 @@
+ static void blacklist_store_name (const char *, ent_t *);
+ static int in_blacklist (const char *, int, ent_t *);
+
+-static int
+-saveit (int instatus, char *inkey, int inkeylen, char *inval,
+- int invallen, char *indata)
+-{
+- ent_t *intern = (ent_t *) indata;
+-
+- if (instatus != YP_TRUE)
+- return instatus;
+-
+- if (inkey && inkeylen > 0 && inval && invallen > 0)
+- {
+- if (intern->start == NULL)
+- {
+- intern->start = malloc (sizeof (struct response_t));
+- if (intern->start == NULL)
+- return YP_FALSE;
+- intern->next = intern->start;
+- }
+- else
+- {
+- intern->next->next = malloc (sizeof (struct response_t));
+- if (intern->next->next == NULL)
+- return YP_FALSE;
+- intern->next = intern->next->next;
+- }
+- intern->next->next = NULL;
+- intern->next->val = malloc (invallen + 1);
+- if (intern->next->val == NULL)
+- return YP_FALSE;
+- strncpy (intern->next->val, inval, invallen);
+- intern->next->val[invallen] = '\0';
+- }
+-
+- return 0;
+-}
+-
+-static enum nss_status
+-_nss_first_init (void)
++/* Initialize the NSS interface/functions. The calling function must
++ hold the lock. */
++static void
++init_nss_interface (void)
+ {
+- if (ni == NULL)
+- {
+- __nss_database_lookup ("group_compat", NULL, "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ __libc_lock_lock (lock);
+
+- if (grptable == NULL)
++ /* Retest. */
++ if (ni == NULL
++ && __nss_database_lookup ("group_compat", NULL, "nis", &ni) >= 0)
+ {
+- static const char key[] = "group.org_dir.";
+- const char *local_dir = nis_local_directory ();
+- size_t len_local_dir = strlen (local_dir);
+-
+- grptable = malloc (sizeof (key) + len_local_dir);
+- if (grptable == NULL)
+- return NSS_STATUS_TRYAGAIN;
+-
+- grptablelen = ((char *) mempcpy (mempcpy (grptable,
+- key, sizeof (key) - 1),
+- local_dir, len_local_dir + 1)
+- - grptable) - 1;
++ nss_initgroups_dyn = __nss_lookup_function (ni, "initgroups_dyn");
++ nss_setgrent = __nss_lookup_function (ni, "setgrent");
++ nss_getgrnam_r = __nss_lookup_function (ni, "getgrnam_r");
++ nss_getgrgid_r = __nss_lookup_function (ni, "getgrgid_r");
++ nss_getgrent_r = __nss_lookup_function (ni, "getgrent_r");
++ nss_endgrent = __nss_lookup_function (ni, "endgrent");
+ }
+
+- return NSS_STATUS_SUCCESS;
++ __libc_lock_unlock (lock);
+ }
+
+ static enum nss_status
+@@ -149,26 +107,10 @@
+ {
+ enum nss_status status = NSS_STATUS_SUCCESS;
+
+- ent->nis = ent->nis_first = 0;
+-
+- ent->start = NULL;
+- ent->next = NULL;
+-
+- if (_nss_first_init () != NSS_STATUS_SUCCESS)
+- return NSS_STATUS_UNAVAIL;
+-
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
++ ent->files = TRUE;
+
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
++ if (ni == NULL)
++ init_nss_interface ();
+
+ if (ent->blacklist.data != NULL)
+ {
+@@ -179,35 +121,33 @@
+ else
+ ent->blacklist.current = 0;
+
++ ent->stream = fopen ("/etc/group", "rm");
++
+ if (ent->stream == NULL)
++ status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
++ else
+ {
+- ent->stream = fopen ("/etc/group", "r");
++ /* We have to make sure the file is `closed on exec'. */
++ int result, flags;
+
+- if (ent->stream == NULL)
+- status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+- else
++ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
++ if (result >= 0)
+ {
+- /* We have to make sure the file is `closed on exec'. */
+- int result, flags;
+-
+- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
+- if (result >= 0)
+- {
+- flags |= FD_CLOEXEC;
+- result = fcntl (fileno (ent->stream), F_SETFD, flags);
+- }
+- if (result < 0)
+- {
+- /* Something went wrong. Close the stream and return a
+- failure. */
+- fclose (ent->stream);
+- ent->stream = NULL;
+- status = NSS_STATUS_UNAVAIL;
+- }
++ flags |= FD_CLOEXEC;
++ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
++ }
++ if (result < 0)
++ {
++ /* Something went wrong. Close the stream and return a
++ failure. */
++ fclose (ent->stream);
++ ent->stream = NULL;
++ status = NSS_STATUS_UNAVAIL;
+ }
++ else
++ /* We take care of locking ourself. */
++ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
+ }
+- else
+- rewind (ent->stream);
+
+ return status;
+ }
+@@ -222,21 +162,6 @@
+ ent->stream = NULL;
+ }
+
+- ent->nis = ent->nis_first = 0;
+-
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
+-
+ if (ent->blacklist.data != NULL)
+ {
+ ent->blacklist.current = 1;
+@@ -246,222 +171,145 @@
+ else
+ ent->blacklist.current = 0;
+
+- while (ent->start != NULL)
+- {
+- if (ent->start->val != NULL)
+- free (ent->start->val);
+- ent->next = ent->start;
+- ent->start = ent->start->next;
+- free (ent->next);
+- }
+-
+-
+ return NSS_STATUS_SUCCESS;
+ }
+
+-static enum nss_status
+-getgrent_next_nis (struct group *result, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
++/* This function checks, if the user is a member of this group and if
++ yes, add the group id to the list. */
++static void
++check_and_add_group (const char *user, gid_t group, long int *start,
++ long int *size, gid_t **groupsp, long int limit,
++ struct group *grp)
+ {
+- struct parser_data *data = (void *) buffer;
+- char *domain, *p;
+- int parse_res;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- return NSS_STATUS_NOTFOUND;
+- }
+-
+- if (ent->start == NULL)
+- {
+- struct ypall_callback ypcb;
+- enum nss_status status;
+-
+- ypcb.foreach = saveit;
+- ypcb.data = (char *) ent;
+- status = yperr2nss (yp_all (domain, "group.byname", &ypcb));
+- ent->next = ent->start;
++ gid_t *groups = *groupsp;
++ char **member;
+
+- if (ent->start == NULL || status != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- return NSS_STATUS_UNAVAIL;
+- }
+- }
++ /* Don't add main group to list of groups. */
++ if (grp->gr_gid == group)
++ return;
++
++ for (member = grp->gr_mem; *member != NULL; ++member)
++ if (strcmp (*member, user) == 0)
++ {
++ /* Matches user. Insert this group. */
++ if (*start == *size)
++ {
++ /* Need a bigger buffer. */
++ gid_t *newgroups;
++ long int newsize;
+
++ if (limit > 0 && *size == limit)
++ /* We reached the maximum. */
++ return;
+
+- do
+- {
+- if (ent->next == NULL)
+- {
+- ent->nis = 0;
+- return NSS_STATUS_NOTFOUND;
+- }
+-
+- /* Copy the found data to our buffer... */
+- p = strncpy (buffer, ent->next->val, buflen);
+- while (isspace (*p))
+- ++p;
++ if (limit <= 0)
++ newsize = 2 * *size;
++ else
++ newsize = MIN (limit, 2 * *size);
+
+- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
++ newgroups = realloc (groups, newsize * sizeof (*groups));
++ if (newgroups == NULL)
++ return;
++ *groupsp = groups = newgroups;
++ *size = newsize;
++ }
+
+- ent->next = ent->next->next;
++ groups[*start] = grp->gr_gid;
++ *start += 1;
+
+- if (parse_res &&
+- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
+- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
+- }
+- while (!parse_res);
+-
+- return NSS_STATUS_SUCCESS;
++ break;
++ }
+ }
+
++/* get the next group from NSS (+ entry). If the NSS module supports
++ initgroups_dyn, get all entries at once. */
+ static enum nss_status
+-getgrent_next_nisplus (struct group *result, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
++getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
++ gid_t group, long int *start, long int *size,
++ gid_t **groupsp, long int limit, int *errnop)
+ {
+- int parse_res;
++ enum nss_status status;
++ struct group grpbuf;
+
+- do
+- {
+- nis_result *save_oldres;
+- bool_t save_nis_first;
++ /* if this module does not support getgrent_r and initgroups_dyn,
++ abort. We cannot find the needed group entries. */
++ if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
++ return NSS_STATUS_UNAVAIL;
+
+- if (ent->nis_first)
+- {
+- save_oldres = ent->result;
+- save_nis_first = TRUE;
+- ent->result = nis_first_entry(grptable);
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- return niserr2nss (ent->result->status);
+- }
+- ent->nis_first = FALSE;
+- }
+- else
+- {
+- nis_result *res;
++ /* Try nss_initgroups_dyn if supported. We also need getgrgid_r.
++ If this function is not supported, step through the whole group
++ database with getgrent_r. */
++ if (nss_initgroups_dyn && nss_getgrgid_r)
++ {
++ long int mystart = 0, mysize = limit;
++ gid_t *mygroupsp = __alloca (limit * sizeof (gid_t));
++
++ /* For every gid in the list we get from the NSS module,
++ get the whole group entry. We need to do this, since we
++ need the group name to check if it is in the blacklist.
++ In worst case, this is as twice as slow as stepping with
++ getgrent_r through the whole group database. But for large
++ group databases this is faster, since the user can only be
++ in a limited number of groups. */
++ if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroupsp,
++ limit, errnop) == NSS_STATUS_SUCCESS)
++ {
++ /* A temporary buffer. We use the normal buffer, until we found
++ an entry, for which this buffer is to small. In this case, we
++ overwrite the pointer with one to a bigger buffer. */
++ char *tmpbuf = buffer;
++ size_t tmplen = buflen;
++ int i;
+
+- save_oldres = ent->result;
+- save_nis_first = FALSE;
+- res = nis_next_entry(grptable, &ent->result->cookie);
+- ent->result = res;
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- return niserr2nss (ent->result->status);
+- }
+- }
+- parse_res = _nss_nisplus_parse_grent (ent->result, 0, result,
+- buffer, buflen, errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (ent->result);
+- ent->result = save_oldres;
+- ent->nis_first = save_nis_first;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!save_nis_first)
+- nis_freeresult (save_oldres);
++ for (i = 0; i < mystart; i++)
++ {
++ while ((status = nss_getgrgid_r (mygroupsp[i], &grpbuf, tmpbuf,
++ tmplen,
++ errnop)) == NSS_STATUS_TRYAGAIN
++ && *errnop == ERANGE)
++ if (tmpbuf == buffer)
++ {
++ tmplen *= 2;
++ tmpbuf = __alloca (tmplen);
++ }
++ else
++ tmpbuf = extend_alloca (tmpbuf, tmplen, 2 * tmplen);
++
++ if (!in_blacklist (grpbuf.gr_name,
++ strlen (grpbuf.gr_name), ent))
++ check_and_add_group (user, group, start, size, groupsp,
++ limit, &grpbuf);
++ }
++ return NSS_STATUS_NOTFOUND;
+ }
++ }
+
+- if (parse_res &&
+- in_blacklist (result->gr_name, strlen (result->gr_name), ent))
+- parse_res = 0; /* if result->gr_name in blacklist,search next entry */
++ /* If we come here, the NSS module does not support initgroups_dyn
++ and we have to step through the whole list ourself. */
++ do
++ {
++ if ((status = nss_getgrent_r (&grpbuf, buffer, buflen, errnop)) !=
++ NSS_STATUS_SUCCESS)
++ return status;
+ }
+- while (!parse_res);
++ while (in_blacklist (grpbuf.gr_name, strlen (grpbuf.gr_name), ent));
+
++ check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
+ return NSS_STATUS_SUCCESS;
+ }
+
+-/* This function handle the +group entrys in /etc/group */
+ static enum nss_status
+-getgrnam_plusgroup (const char *name, struct group *result, char *buffer,
+- size_t buflen, int *errnop)
++internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user,
++ gid_t group, long int *start, long int *size,
++ gid_t **groupsp, long int limit, int *errnop)
+ {
+ struct parser_data *data = (void *) buffer;
+- int parse_res;
+-
+- if (use_nisplus) /* Do the NIS+ query here */
+- {
+- nis_result *res;
+- char buf[strlen (name) + 24 + grptablelen];
+-
+- sprintf(buf, "[name=%s],%s", name, grptable);
+- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
+- {
+- enum nss_status status = niserr2nss (res->status);
+-
+- nis_freeresult (res);
+- return status;
+- }
+- parse_res = _nss_nisplus_parse_grent (res, 0, result, buffer, buflen,
+- errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (res);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (res);
+- }
+- else /* Use NIS */
+- {
+- char *domain, *outval, *p;
+- int outvallen;
++ struct group grpbuf;
+
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
++ if (!ent->files)
++ return getgrent_next_nss (ent, buffer, buflen, user, group,
++ start, size, groupsp, limit, errnop);
+
+- if (yp_match (domain, "group.byname", name, strlen (name),
+- &outval, &outvallen) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- /* Copy the found data to our buffer... */
+- p = strncpy (buffer, outval, buflen);
+-
+- /* ... and free the data. */
+- free (outval);
+- while (isspace (*p))
+- ++p;
+- parse_res = _nss_files_parse_grent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- }
+-
+- if (parse_res)
+- /* We found the entry. */
+- return NSS_STATUS_SUCCESS;
+- else
+- return NSS_STATUS_RETURN;
+-}
+-
+-static enum nss_status
+-getgrent_next_file (struct group *result, ent_t *ent,
+- char *buffer, size_t buflen, int *errnop)
+-{
+- struct parser_data *data = (void *) buffer;
+ while (1)
+ {
+ fpos_t pos;
+@@ -472,8 +320,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+@@ -490,10 +338,10 @@
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
+- !(parse_res = _nss_files_parse_grent (p, result, data, buflen,
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
++ !(parse_res = _nss_files_parse_grent (p, &grpbuf, data, buflen,
+ errnop)));
+
+ if (parse_res == -1)
+@@ -504,90 +352,64 @@
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+- if (result->gr_name[0] != '+' && result->gr_name[0] != '-')
++ if (grpbuf.gr_name[0] != '+' && grpbuf.gr_name[0] != '-')
+ /* This is a real entry. */
+ break;
+
+ /* -group */
+- if (result->gr_name[0] == '-' && result->gr_name[1] != '\0'
+- && result->gr_name[1] != '@')
++ if (grpbuf.gr_name[0] == '-' && grpbuf.gr_name[1] != '\0'
++ && grpbuf.gr_name[1] != '@')
+ {
+- blacklist_store_name (&result->gr_name[1], ent);
++ blacklist_store_name (&grpbuf.gr_name[1], ent);
+ continue;
+ }
+
+ /* +group */
+- if (result->gr_name[0] == '+' && result->gr_name[1] != '\0'
+- && result->gr_name[1] != '@')
++ if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] != '\0'
++ && grpbuf.gr_name[1] != '@')
+ {
+- enum nss_status status;
+-
+- /* Store the group in the blacklist for the "+" at the end of
++ if (in_blacklist (&grpbuf.gr_name[1],
++ strlen (&grpbuf.gr_name[1]), ent))
++ continue;
++ /* Store the group in the blacklist for the "+" at the end of
+ /etc/group */
+- blacklist_store_name (&result->gr_name[1], ent);
+- status = getgrnam_plusgroup (&result->gr_name[1], result, buffer,
+- buflen, errnop);
+- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
+- break;
+- else
+- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
+- || status == NSS_STATUS_NOTFOUND) /* No group in NIS */
+- continue;
+- else
+- {
+- if (status == NSS_STATUS_TRYAGAIN)
+- {
+- /* The parser ran out of space. */
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- }
+- return status;
+- }
++ blacklist_store_name (&grpbuf.gr_name[1], ent);
++ if (nss_getgrnam_r == NULL)
++ return NSS_STATUS_UNAVAIL;
++ else if (nss_getgrnam_r (&grpbuf.gr_name[1], &grpbuf, buffer,
++ buflen, errnop) != NSS_STATUS_SUCCESS)
++ continue;
++
++ check_and_add_group (user, group, start, size, groupsp,
++ limit, &grpbuf);
++
++ return NSS_STATUS_SUCCESS;
+ }
+
+ /* +:... */
+- if (result->gr_name[0] == '+' && result->gr_name[1] == '\0')
++ if (grpbuf.gr_name[0] == '+' && grpbuf.gr_name[1] == '\0')
+ {
+- ent->nis = TRUE;
+- ent->nis_first = TRUE;
+-
+- if (use_nisplus)
+- return getgrent_next_nisplus (result, ent, buffer, buflen, errnop);
+- else
+- return getgrent_next_nis (result, ent, buffer, buflen, errnop);
++ ent->files = FALSE;
++ return getgrent_next_nss (ent, buffer, buflen, user, group,
++ start, size, groupsp, limit, errnop);
+ }
+ }
+
++ check_and_add_group (user, group, start, size, groupsp, limit, &grpbuf);
++
+ return NSS_STATUS_SUCCESS;
+ }
+
+
+-static enum nss_status
+-internal_getgrent_r (struct group *gr, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- if (ent->nis)
+- {
+- if (use_nisplus)
+- return getgrent_next_nisplus (gr, ent, buffer, buflen, errnop);
+- else
+- return getgrent_next_nis (gr, ent, buffer, buflen, errnop);
+- }
+- else
+- return getgrent_next_file (gr, ent, buffer, buflen, errnop);
+-}
+-
+ enum nss_status
+ _nss_compat_initgroups_dyn (const char *user, gid_t group, long int *start,
+ long int *size, gid_t **groupsp, long int limit,
+ int *errnop)
+ {
+- struct group grpbuf, *g;
+ size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);
+ char *tmpbuf;
+ enum nss_status status;
+- ent_t intern = {0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0}};
+- gid_t *groups = *groupsp;
++ ent_t intern = { TRUE, NULL, {NULL, 0, 0} };
+
+ status = internal_setgrent (&intern);
+ if (status != NSS_STATUS_SUCCESS)
+@@ -597,59 +419,14 @@
+
+ do
+ {
+- while ((status =
+- internal_getgrent_r (&grpbuf, &intern, tmpbuf, buflen,
+- errnop)) == NSS_STATUS_TRYAGAIN
+- && *errnop == ERANGE)
+- {
+- buflen *= 2;
+- tmpbuf = __alloca (buflen);
+- }
+-
+- if (status != NSS_STATUS_SUCCESS)
+- goto done;
+-
+- g = &grpbuf;
+- if (g->gr_gid != group)
+- {
+- char **m;
+-
+- for (m = g->gr_mem; *m != NULL; ++m)
+- if (strcmp (*m, user) == 0)
+- {
+- /* Matches user. Insert this group. */
+- if (*start == *size)
+- {
+- /* Need a bigger buffer. */
+- gid_t *newgroups;
+- long int newsize;
+-
+- if (limit > 0 && *size == limit)
+- /* We reached the maximum. */
+- goto done;
+-
+- if (limit <= 0)
+- newsize = 2 * *size;
+- else
+- newsize = MIN (limit, 2 * *size);
+-
+- newgroups = realloc (groups, newsize * sizeof (*groups));
+- if (newgroups == NULL)
+- goto done;
+- *groupsp = groups = newgroups;
+- *size = newsize;
+- }
+-
+- groups[*start] = g->gr_gid;
+- *start += 1;
+-
+- break;
+- }
+- }
++ while ((status = internal_getgrent_r (&intern, tmpbuf, buflen,
++ user, group, start, size,
++ groupsp, limit, errnop))
++ == NSS_STATUS_TRYAGAIN && *errnop == ERANGE)
++ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
+ }
+ while (status == NSS_STATUS_SUCCESS);
+
+-done:
+ internal_endgrent (&intern);
+
+ return NSS_STATUS_SUCCESS;
+@@ -664,7 +441,7 @@
+ int namelen = strlen (name);
+ char *tmp;
+
+- /* first call, setup cache */
++ /* First call, setup cache. */
+ if (ent->blacklist.size == 0)
+ {
+ ent->blacklist.size = MAX (BLACKLIST_INITIAL_SIZE, 2 * namelen);
+@@ -714,7 +491,7 @@
+
+ buf[0] = '|';
+ cp = stpcpy (&buf[1], name);
+- *cp++= '|';
++ *cp++ = '|';
+ *cp = '\0';
+ return strstr (ent->blacklist.data, buf) != NULL;
+ }
+--- glibc-2.3.2/nis/nss_compat/compat-pwd.c 2002-08-26 01:07:27.000000000 -0400
++++ glibc-2.3.2/nis/nss_compat/compat-pwd.c 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+
+@@ -17,27 +17,32 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <nss.h>
+-#include <pwd.h>
+-#include <errno.h>
+ #include <ctype.h>
++#include <errno.h>
+ #include <fcntl.h>
+ #include <netdb.h>
++#include <nss.h>
++#include <nsswitch.h>
++#include <pwd.h>
++#include <stdio_ext.h>
+ #include <string.h>
+-#include <bits/libc-lock.h>
+-#include <rpcsvc/yp.h>
++#include <rpc/types.h>
+ #include <rpcsvc/ypclnt.h>
+-#include <rpcsvc/nis.h>
+-#include <nsswitch.h>
++#include <bits/libc-lock.h>
+
+ #include "netgroup.h"
+-#include "nss-nisplus.h"
+-#include "nisplus-parser.h"
+
+ static service_user *ni;
+-static bool_t use_nisplus; /* default: passwd_compat: nis */
+-static nis_name pwdtable; /* Name of the pwd table */
+-static size_t pwdtablelen;
++static enum nss_status (*nss_setpwent) (int stayopen);
++static enum nss_status (*nss_getpwnam_r) (const char *name,
++ struct passwd * pwd, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_getpwuid_r) (uid_t uid, struct passwd * pwd,
++ char *buffer, size_t buflen,
++ int *errnop);
++static enum nss_status (*nss_getpwent_r) (struct passwd * pwd, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_endpwent) (void);
+
+ /* Get the declaration of the parser function. */
+ #define ENTNAME pwent
+@@ -49,29 +54,26 @@
+ #define BLACKLIST_INITIAL_SIZE 512
+ #define BLACKLIST_INCREMENT 256
+ struct blacklist_t
+- {
+- char *data;
+- int current;
+- int size;
+- };
++{
++ char *data;
++ int current;
++ int size;
++};
+
+ struct ent_t
+- {
+- bool_t netgroup;
+- bool_t nis;
+- bool_t first;
+- char *oldkey;
+- int oldkeylen;
+- nis_result *result;
+- FILE *stream;
+- struct blacklist_t blacklist;
+- struct passwd pwd;
+- struct __netgrent netgrdata;
+- };
++{
++ bool_t netgroup;
++ bool_t first;
++ bool_t files;
++ FILE *stream;
++ struct blacklist_t blacklist;
++ struct passwd pwd;
++ struct __netgrent netgrdata;
++};
+ typedef struct ent_t ent_t;
+
+-static ent_t ext_ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
+- {NULL, NULL, 0, 0, NULL, NULL, NULL}};
++static ent_t ext_ent = {0, 0, TRUE, NULL, {NULL, 0, 0},
++ {NULL, NULL, 0, 0, NULL, NULL, NULL}};
+
+ /* Protect global state against multiple changers. */
+ __libc_lock_define_initialized (static, lock)
+@@ -80,6 +82,21 @@
+ static void blacklist_store_name (const char *, ent_t *);
+ static int in_blacklist (const char *, int, ent_t *);
+
++/* Initialize the NSS interface/functions. The calling function must
++ hold the lock. */
++static void
++init_nss_interface (void)
++{
++ if (__nss_database_lookup ("passwd_compat", NULL, "nis", &ni) >= 0)
++ {
++ nss_setpwent = __nss_lookup_function (ni, "setpwent");
++ nss_getpwnam_r = __nss_lookup_function (ni, "getpwnam_r");
++ nss_getpwuid_r = __nss_lookup_function (ni, "getpwuid_r");
++ nss_getpwent_r = __nss_lookup_function (ni, "getpwent_r");
++ nss_endpwent = __nss_lookup_function (ni, "endpwent");
++ }
++}
++
+ static void
+ give_pwd_free (struct passwd *pwd)
+ {
+@@ -156,8 +173,7 @@
+ {
+ if (buffer == NULL)
+ dest->pw_dir = strdup (src->pw_dir);
+- else if (dest->pw_dir &&
+- strlen (dest->pw_dir) >= strlen (src->pw_dir))
++ else if (dest->pw_dir && strlen (dest->pw_dir) >= strlen (src->pw_dir))
+ strcpy (dest->pw_dir, src->pw_dir);
+ else
+ {
+@@ -186,100 +202,17 @@
+ }
+
+ static enum nss_status
+-insert_passwd_adjunct (char **result, int *len, char *domain, int *errnop)
+-{
+- char *p1, *p2, *result2, *res;
+- int len2;
+- size_t namelen;
+-
+- /* Check for adjunct style secret passwords. They can be
+- recognized by a password starting with "##". */
+- p1 = strchr (*result, ':');
+- if (p1 == NULL || p1[1] != '#' || p1[2] != '#')
+- return NSS_STATUS_SUCCESS;
+- p2 = strchr (p1 + 3, ':');
+-
+- namelen = p2 - p1 - 3;
+-
+- if (yp_match (domain, "passwd.adjunct.byname", &p1[3], namelen,
+- &result2, &len2) == YPERR_SUCCESS)
+- {
+- /* We found a passwd.adjunct entry. Merge encrypted
+- password therein into original result. */
+- char *encrypted = strchr (result2, ':');
+- char *endp;
+- size_t restlen;
+-
+- if (encrypted == NULL || (endp = strchr (++encrypted, ':')) == NULL)
+- {
+- /* Invalid format of the entry. This never should happen
+- unless the data from which the NIS table is generated is
+- wrong. We simply ignore it. */
+- free (result2);
+- return NSS_STATUS_SUCCESS;
+- }
+-
+- restlen = *len - (p2 - *result);
+- if ((res = malloc (namelen + restlen + (endp - encrypted) + 2)) == NULL)
+- {
+- free (result2);
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- __mempcpy (__mempcpy (__mempcpy (__mempcpy
+- (res, *result, (p1 - *result)),
+- ":", 1),
+- encrypted, endp - encrypted),
+- p2, restlen + 1);
+-
+- free (result2);
+- free (*result);
+- *result = res;
+- *len = strlen (res);
+- }
+- return NSS_STATUS_SUCCESS;
+-}
+-
+-static enum nss_status
+-internal_setpwent (ent_t *ent)
++internal_setpwent (ent_t *ent, int stayopen)
+ {
+ enum nss_status status = NSS_STATUS_SUCCESS;
+
+- ent->nis = ent->first = ent->netgroup = 0;
++ ent->first = ent->netgroup = FALSE;
++ ent->files = TRUE;
+
+ /* If something was left over free it. */
+ if (ent->netgroup)
+ __internal_endnetgrent (&ent->netgrdata);
+
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
+-
+- if (pwdtable == NULL)
+- {
+- static const char key[] = "passwd.org_dir.";
+- const char *local_dir = nis_local_directory ();
+- size_t len_local_dir = strlen (local_dir);
+-
+- pwdtable = malloc (sizeof (key) + len_local_dir);
+- if (pwdtable == NULL)
+- return NSS_STATUS_TRYAGAIN;
+-
+- pwdtablelen = ((char *) mempcpy (mempcpy (pwdtable,
+- key, sizeof (key) - 1),
+- local_dir, len_local_dir + 1)
+- - pwdtable) - 1;
+- }
+-
+ if (ent->blacklist.data != NULL)
+ {
+ ent->blacklist.current = 1;
+@@ -291,7 +224,7 @@
+
+ if (ent->stream == NULL)
+ {
+- ent->stream = fopen ("/etc/passwd", "r");
++ ent->stream = fopen ("/etc/passwd", "rm");
+
+ if (ent->stream == NULL)
+ status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+@@ -300,20 +233,23 @@
+ /* We have to make sure the file is `closed on exec'. */
+ int result, flags;
+
+- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
++ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
+ if (result >= 0)
+ {
+ flags |= FD_CLOEXEC;
+- result = fcntl (fileno (ent->stream), F_SETFD, flags);
++ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
+ }
+ if (result < 0)
+ {
+ /* Something went wrong. Close the stream and return a
+- failure. */
++ failure. */
+ fclose (ent->stream);
+ ent->stream = NULL;
+ status = NSS_STATUS_UNAVAIL;
+ }
++ else
++ /* We take care of locking ourself. */
++ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
+ }
+ }
+ else
+@@ -321,6 +257,9 @@
+
+ give_pwd_free (&ent->pwd);
+
++ if (status == NSS_STATUS_SUCCESS && nss_setpwent)
++ return nss_setpwent (stayopen);
++
+ return status;
+ }
+
+@@ -333,12 +272,9 @@
+ __libc_lock_lock (lock);
+
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+- result = internal_setpwent (&ext_ent);
++ result = internal_setpwent (&ext_ent, stayopen);
+
+ __libc_lock_unlock (lock);
+
+@@ -349,6 +285,9 @@
+ static enum nss_status
+ internal_endpwent (ent_t *ent)
+ {
++ if (nss_endpwent)
++ nss_endpwent ();
++
+ if (ent->stream != NULL)
+ {
+ fclose (ent->stream);
+@@ -358,26 +297,13 @@
+ if (ent->netgroup)
+ __internal_endnetgrent (&ent->netgrdata);
+
+- ent->nis = ent->first = ent->netgroup = 0;
+-
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
++ ent->first = ent->netgroup = FALSE;
+
+ if (ent->blacklist.data != NULL)
+ {
+ ent->blacklist.current = 1;
+ ent->blacklist.data[0] = '|';
+- ent->blacklist.data[1] = '\0';
++ ent->blacklist.data[1] = '\0';
+ }
+ else
+ ent->blacklist.current = 0;
+@@ -401,19 +327,25 @@
+ return result;
+ }
+
++
+ static enum nss_status
+-getpwent_next_nis_netgr (const char *name, struct passwd *result, ent_t *ent,
+- char *group, char *buffer, size_t buflen, int *errnop)
++getpwent_next_nss_netgr (const char *name, struct passwd *result, ent_t *ent,
++ char *group, char *buffer, size_t buflen,
++ int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+- char *ypdomain, *host, *user, *domain, *outval, *p, *p2;
+- int status, outvallen;
++ char *curdomain, *host, *user, *domain, *p2;
++ int status;
+ size_t p2len;
+
+- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
++ /* Leave function if NSS module does not support getpwnam_r,
++ we need this function here. */
++ if (!nss_getpwnam_r)
++ return NSS_STATUS_UNAVAIL;
++
++ if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
+ {
+- ent->netgroup = 0;
+- ent->first = 0;
++ ent->netgroup = FALSE;
++ ent->first = FALSE;
+ give_pwd_free (&ent->pwd);
+ return NSS_STATUS_UNAVAIL;
+ }
+@@ -428,7 +360,6 @@
+ while (1)
+ {
+ char *saved_cursor;
+- int parse_res;
+
+ saved_cursor = ent->netgrdata.cursor;
+ status = __internal_getnetgrent_r (&host, &user, &domain,
+@@ -445,7 +376,7 @@
+ if (user == NULL || user[0] == '-')
+ continue;
+
+- if (domain != NULL && strcmp (ypdomain, domain) != 0)
++ if (domain != NULL && strcmp (curdomain, domain) != 0)
+ continue;
+
+ /* If name != NULL, we are called from getpwnam. */
+@@ -453,148 +384,23 @@
+ if (strcmp (user, name) != 0)
+ continue;
+
+- if (yp_match (ypdomain, "passwd.byname", user,
+- strlen (user), &outval, &outvallen)
+- != YPERR_SUCCESS)
+- continue;
+-
+- if (insert_passwd_adjunct (&outval, &outvallen, ypdomain, errnop)
+- != NSS_STATUS_SUCCESS)
+- {
+- free (outval);
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+ p2len = pwd_need_buflen (&ent->pwd);
+ if (p2len > buflen)
+ {
+- free (outval);
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ p2 = buffer + (buflen - p2len);
+ buflen -= p2len;
+
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- p = strncpy (buffer, outval, buflen);
+-
+- while (isspace (*p))
+- p++;
+- free (outval);
+- parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- ent->netgrdata.cursor = saved_cursor;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (parse_res && !in_blacklist (result->pw_name,
+- strlen (result->pw_name), ent))
+- {
+- /* Store the User in the blacklist for the "+" at the end of
+- /etc/passwd */
+- blacklist_store_name (result->pw_name, ent);
+- copy_pwd_changes (result, &ent->pwd, p2, p2len);
+- break;
+- }
+- }
+-
+- return NSS_STATUS_SUCCESS;
+-}
+-
+-static enum nss_status
+-getpwent_next_nisplus_netgr (const char *name, struct passwd *result,
+- ent_t *ent, char *group, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- char *ypdomain, *host, *user, *domain, *p2;
+- int status, parse_res;
+- size_t p2len;
+- nis_result *nisres;
+-
+- /* Maybe we should use domainname here ? We need the current
+- domainname for the domain field in netgroups */
+- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
+- {
+- ent->netgroup = 0;
+- ent->first = 0;
+- give_pwd_free (&ent->pwd);
+- return NSS_STATUS_UNAVAIL;
+- }
+-
+- if (ent->first == TRUE)
+- {
+- bzero (&ent->netgrdata, sizeof (struct __netgrent));
+- __internal_setnetgrent (group, &ent->netgrdata);
+- ent->first = FALSE;
+- }
+-
+- while (1)
+- {
+- char *saved_cursor;
+-
+- saved_cursor = ent->netgrdata.cursor;
+- status = __internal_getnetgrent_r (&host, &user, &domain,
+- &ent->netgrdata, buffer, buflen,
+- errnop);
+- if (status != 1)
+- {
+- __internal_endnetgrent (&ent->netgrdata);
+- ent->netgroup = 0;
+- give_pwd_free (&ent->pwd);
+- return NSS_STATUS_RETURN;
+- }
+-
+- if (user == NULL || user[0] == '-')
++ if (nss_getpwnam_r (user, result, buffer, buflen, errnop) !=
++ NSS_STATUS_SUCCESS)
+ continue;
+
+- if (domain != NULL && strcmp (ypdomain, domain) != 0)
+- continue;
+-
+- /* If name != NULL, we are called from getpwnam */
+- if (name != NULL)
+- if (strcmp (user, name) != 0)
+- continue;
+-
+- p2len = pwd_need_buflen (&ent->pwd);
+- if (p2len > buflen)
++ if (!in_blacklist (result->pw_name, strlen (result->pw_name), ent))
+ {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- p2 = buffer + (buflen - p2len);
+- buflen -= p2len;
+- {
+- char buf[strlen (user) + 30 + pwdtablelen];
+- sprintf(buf, "[name=%s],%s", user, pwdtable);
+- nisres = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+- }
+- if (niserr2nss (nisres->status) != NSS_STATUS_SUCCESS)
+- {
+- nis_freeresult (nisres);
+- continue;
+- }
+- parse_res = _nss_nisplus_parse_pwent (nisres, result, buffer,
+- buflen, errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (nisres);
+- ent->netgrdata.cursor = saved_cursor;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (nisres);
+-
+- if (parse_res && !in_blacklist (result->pw_name,
+- strlen (result->pw_name), ent))
+- {
+- /* Store the User in the blacklist for the "+" at the end of
+- /etc/passwd */
++ /* Store the User in the blacklist for possible the "+" at the
++ end of /etc/passwd */
+ blacklist_store_name (result->pw_name, ent);
+ copy_pwd_changes (result, &ent->pwd, p2, p2len);
+ break;
+@@ -604,100 +410,18 @@
+ return NSS_STATUS_SUCCESS;
+ }
+
+-/* get the next user from NIS+ (+ entry) */
++/* get the next user from NSS (+ entry) */
+ static enum nss_status
+-getpwent_next_nisplus (struct passwd *result, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- int parse_res;
+- size_t p2len;
+- char *p2;
+-
+- p2len = pwd_need_buflen (&ent->pwd);
+- if (p2len > buflen)
+- {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- p2 = buffer + (buflen - p2len);
+- buflen -= p2len;
+- do
+- {
+- bool_t saved_first;
+- nis_result *saved_res;
+-
+- if (ent->first)
+- {
+- saved_first = TRUE;
+- saved_res = ent->result;
+-
+- ent->result = nis_first_entry (pwdtable);
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- give_pwd_free (&ent->pwd);
+- return niserr2nss (ent->result->status);
+- }
+- ent->first = FALSE;
+- }
+- else
+- {
+- nis_result *res;
+-
+- res = nis_next_entry (pwdtable, &ent->result->cookie);
+- saved_res = ent->result;
+- saved_first = FALSE;
+- ent->result = res;
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- nis_freeresult (saved_res);
+- give_pwd_free (&ent->pwd);
+- return niserr2nss (ent->result->status);
+- }
+- }
+- parse_res = _nss_nisplus_parse_pwent (ent->result, result, buffer,
+- buflen, errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (ent->result);
+- ent->result = saved_res;
+- ent->first = saved_first;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!saved_first)
+- nis_freeresult (saved_res);
+- }
+-
+- if (parse_res &&
+- in_blacklist (result->pw_name, strlen (result->pw_name), ent))
+- parse_res = 0; /* if result->pw_name in blacklist,search next entry */
+- }
+- while (!parse_res);
+-
+- copy_pwd_changes (result, &ent->pwd, p2, p2len);
+-
+- return NSS_STATUS_SUCCESS;
+-}
+-
+-static enum nss_status
+-getpwent_next_nis (struct passwd *result, ent_t *ent, char *buffer,
++getpwent_next_nss (struct passwd *result, ent_t *ent, char *buffer,
+ size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+- char *domain, *outkey, *outval, *p, *p2;
+- int outkeylen, outvallen, parse_res;
++ enum nss_status status;
++ char *p2;
+ size_t p2len;
+
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- give_pwd_free (&ent->pwd);
+- return NSS_STATUS_UNAVAIL;
+- }
++ /* Return if NSS module does not support getpwent_r. */
++ if (!nss_getpwent_r)
++ return NSS_STATUS_UNAVAIL;
+
+ p2len = pwd_need_buflen (&ent->pwd);
+ if (p2len > buflen)
+@@ -707,103 +431,17 @@
+ }
+ p2 = buffer + (buflen - p2len);
+ buflen -= p2len;
+- do
+- {
+- bool_t saved_first;
+- char *saved_oldkey;
+- int saved_oldlen;
+-
+- if (ent->first)
+- {
+- if (yp_first (domain, "passwd.byname", &outkey, &outkeylen,
+- &outval, &outvallen) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- give_pwd_free (&ent->pwd);
+- return NSS_STATUS_UNAVAIL;
+- }
+-
+- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop) !=
+- NSS_STATUS_SUCCESS)
+- {
+- free (outval);
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- saved_first = TRUE;
+- saved_oldkey = ent->oldkey;
+- saved_oldlen = ent->oldkeylen;
+- ent->oldkey = outkey;
+- ent->oldkeylen = outkeylen;
+- ent->first = FALSE;
+- }
+- else
+- {
+- if (yp_next (domain, "passwd.byname", ent->oldkey, ent->oldkeylen,
+- &outkey, &outkeylen, &outval, &outvallen)
+- != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- give_pwd_free (&ent->pwd);
+- return NSS_STATUS_NOTFOUND;
+- }
+-
+- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
+- != NSS_STATUS_SUCCESS)
+- {
+- free (outval);
+- return NSS_STATUS_TRYAGAIN;
+- }
+
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
++ if (ent->first)
++ ent->first = FALSE;
+
+- saved_first = FALSE;
+- saved_oldkey = ent->oldkey;
+- saved_oldlen = ent->oldkeylen;
+- ent->oldkey = outkey;
+- ent->oldkeylen = outkeylen;
+- }
+-
+- /* Copy the found data to our buffer */
+- p = strncpy (buffer, outval, buflen);
+-
+- /* ...and free the data. */
+- free (outval);
+-
+- while (isspace (*p))
+- ++p;
+- parse_res = _nss_files_parse_pwent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- free (ent->oldkey);
+- ent->oldkey = saved_oldkey;
+- ent->oldkeylen = saved_oldlen;
+- ent->first = saved_first;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!saved_first)
+- free (saved_oldkey);
+- }
+- if (parse_res
+- && in_blacklist (result->pw_name, strlen (result->pw_name), ent))
+- parse_res = 0;
++ do
++ {
++ if ((status = nss_getpwent_r (result, buffer, buflen, errnop)) !=
++ NSS_STATUS_SUCCESS)
++ return status;
+ }
+- while (!parse_res);
++ while (in_blacklist (result->pw_name, strlen (result->pw_name), ent));
+
+ copy_pwd_changes (result, &ent->pwd, p2, p2len);
+
+@@ -815,12 +453,13 @@
+ getpwnam_plususer (const char *name, struct passwd *result, ent_t *ent,
+ char *buffer, size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+ struct passwd pwd;
+- int parse_res;
+ char *p;
+ size_t plen;
+
++ if (!nss_getpwnam_r)
++ return NSS_STATUS_UNAVAIL;
++
+ memset (&pwd, '\0', sizeof (struct passwd));
+
+ copy_pwd_changes (&pwd, result, NULL, 0);
+@@ -834,88 +473,17 @@
+ p = buffer + (buflen - plen);
+ buflen -= plen;
+
+- if (use_nisplus) /* Do the NIS+ query here */
+- {
+- nis_result *res;
+- char buf[strlen (name) + 24 + pwdtablelen];
+-
+- sprintf(buf, "[name=%s],%s", name, pwdtable);
+- res = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
+- {
+- enum nss_status status = niserr2nss (res->status);
+-
+- nis_freeresult (res);
+- return status;
+- }
+- parse_res = _nss_nisplus_parse_pwent (res, result, buffer,
+- buflen, errnop);
+-
+- nis_freeresult (res);
+-
+- if (parse_res == -1)
+- {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (in_blacklist (result->pw_name, strlen (result->pw_name), ent))
+- return NSS_STATUS_NOTFOUND;
+- }
+- else /* Use NIS */
+- {
+- char *domain, *outval, *ptr;
+- int outvallen;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (yp_match (domain, "passwd.byname", name, strlen (name),
+- &outval, &outvallen) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
+- != NSS_STATUS_SUCCESS)
+- {
+- free (outval);
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- ptr = strncpy (buffer, outval, buflen);
+- free (outval);
+-
+- while (isspace (*ptr))
+- ptr++;
+-
+- parse_res = _nss_files_parse_pwent (ptr, result, data, buflen, errnop);
+- if (parse_res == -1)
+- return NSS_STATUS_TRYAGAIN;
++ if (nss_getpwnam_r (name, result, buffer, buflen, errnop) !=
++ NSS_STATUS_SUCCESS)
++ return NSS_STATUS_NOTFOUND;
+
+- if (in_blacklist (result->pw_name, strlen (result->pw_name), ent))
+- return NSS_STATUS_NOTFOUND;
+- }
++ if (in_blacklist (result->pw_name, strlen (result->pw_name), ent))
++ return NSS_STATUS_NOTFOUND;
+
+- if (parse_res > 0)
+- {
+- copy_pwd_changes (result, &pwd, p, plen);
+- give_pwd_free (&pwd);
+- /* We found the entry. */
+- return NSS_STATUS_SUCCESS;
+- }
+- else
+- {
+- /* Give buffer the old len back */
+- buflen += plen;
+- give_pwd_free (&pwd);
+- }
+- return NSS_STATUS_RETURN;
++ copy_pwd_changes (result, &pwd, p, plen);
++ give_pwd_free (&pwd);
++ /* We found the entry. */
++ return NSS_STATUS_SUCCESS;
+ }
+
+ static enum nss_status
+@@ -933,8 +501,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+@@ -951,9 +519,9 @@
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
+ !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
+ errnop)));
+
+@@ -1000,14 +568,9 @@
+ ent->first = TRUE;
+ copy_pwd_changes (&ent->pwd, result, NULL, 0);
+
+- if (use_nisplus)
+- status = getpwent_next_nisplus_netgr (NULL, result, ent,
+- &result->pw_name[2],
+- buffer, buflen, errnop);
+- else
+- status = getpwent_next_nis_netgr (NULL, result, ent,
+- &result->pw_name[2],
+- buffer, buflen, errnop);
++ status = getpwent_next_nss_netgr (NULL, result, ent,
++ &result->pw_name[2],
++ buffer, buflen, errnop);
+ if (status == NSS_STATUS_RETURN)
+ continue;
+ else
+@@ -1026,45 +589,42 @@
+ if (result->pw_name[0] == '+' && result->pw_name[1] != '\0'
+ && result->pw_name[1] != '@')
+ {
+- char buf[strlen (result->pw_name)];
++ size_t len = strlen (result->pw_name);
++ char buf[len];
+ enum nss_status status;
+
+ /* Store the User in the blacklist for the "+" at the end of
+ /etc/passwd */
+- strcpy (buf, &result->pw_name[1]);
++ memcpy (buf, &result->pw_name[1], len);
+ status = getpwnam_plususer (&result->pw_name[1], result, ent,
+ buffer, buflen, errnop);
+ blacklist_store_name (buf, ent);
+
+- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
++ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
+ break;
++ else if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
++ || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */
++ continue;
+ else
+- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
+- || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */
+- continue;
+- else
+- {
+- if (status == NSS_STATUS_TRYAGAIN)
+- {
+- /* The parser ran out of space */
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- }
+- return status;
+- }
++ {
++ if (status == NSS_STATUS_TRYAGAIN)
++ {
++ /* The parser ran out of space */
++ fsetpos (ent->stream, &pos);
++ *errnop = ERANGE;
++ }
++ return status;
++ }
+ }
+
+ /* +:... */
+ if (result->pw_name[0] == '+' && result->pw_name[1] == '\0')
+ {
+- ent->nis = TRUE;
++ ent->files = FALSE;
+ ent->first = TRUE;
+ copy_pwd_changes (&ent->pwd, result, NULL, 0);
+
+- if (use_nisplus)
+- return getpwent_next_nisplus (result, ent, buffer, buflen, errnop);
+- else
+- return getpwent_next_nis (result, ent, buffer, buflen, errnop);
++ return getpwent_next_nss (result, ent, buffer, buflen, errnop);
+ }
+ }
+
+@@ -1082,53 +642,41 @@
+
+ /* We are searching members in a netgroup */
+ /* Since this is not the first call, we don't need the group name */
+- if (use_nisplus)
+- status = getpwent_next_nisplus_netgr (NULL, pw, ent, NULL, buffer,
+- buflen, errnop);
+- else
+- status = getpwent_next_nis_netgr (NULL, pw, ent, NULL, buffer, buflen,
+- errnop);
++ status = getpwent_next_nss_netgr (NULL, pw, ent, NULL, buffer, buflen,
++ errnop);
+ if (status == NSS_STATUS_RETURN)
+ return getpwent_next_file (pw, ent, buffer, buflen, errnop);
+ else
+ return status;
+ }
++ else if (ent->files)
++ return getpwent_next_file (pw, ent, buffer, buflen, errnop);
+ else
+- if (ent->nis)
+- {
+- if (use_nisplus)
+- return getpwent_next_nisplus (pw, ent, buffer, buflen, errnop);
+- else
+- return getpwent_next_nis (pw, ent, buffer, buflen, errnop);
+- }
+- else
+- return getpwent_next_file (pw, ent, buffer, buflen, errnop);
++ return getpwent_next_nss (pw, ent, buffer, buflen, errnop);
++
+ }
+
+ enum nss_status
+ _nss_compat_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
+ int *errnop)
+ {
+- enum nss_status status = NSS_STATUS_SUCCESS;
++ enum nss_status result = NSS_STATUS_SUCCESS;
+
+ __libc_lock_lock (lock);
+
++ /* Be prepared that the setpwent function was not called before. */
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+- /* Be prepared that the setpwent function was not called before. */
+ if (ext_ent.stream == NULL)
+- status = internal_setpwent (&ext_ent);
++ result = internal_setpwent (&ext_ent, 1);
+
+- if (status == NSS_STATUS_SUCCESS)
+- status = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getpwent_r (pwd, &ext_ent, buffer, buflen, errnop);
+
+ __libc_lock_unlock (lock);
+
+- return status;
++ return result;
+ }
+
+ /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */
+@@ -1148,8 +696,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ {
+ return NSS_STATUS_NOTFOUND;
+ }
+@@ -1167,9 +715,9 @@
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+ /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ get the next line of the file to parse. */
+ !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
+ errnop)));
+
+@@ -1210,8 +758,8 @@
+ status = getpwnam_plususer (name, result, ent, buffer,
+ buflen, errnop);
+
+- if (status == NSS_STATUS_RETURN)
+- continue;
++ if (status == NSS_STATUS_RETURN)
++ continue;
+
+ return status;
+ }
+@@ -1253,13 +801,12 @@
+
+ status = getpwnam_plususer (name, result, ent,
+ buffer, buflen, errnop);
+- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
++ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
+ break;
++ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
++ return NSS_STATUS_NOTFOUND;
+ else
+- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
+- return NSS_STATUS_NOTFOUND;
+- else
+- return status;
++ return status;
+ }
+ }
+ return NSS_STATUS_SUCCESS;
+@@ -1269,9 +816,9 @@
+ _nss_compat_getpwnam_r (const char *name, struct passwd *pwd,
+ char *buffer, size_t buflen, int *errnop)
+ {
+- ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
+- {NULL, NULL, 0, 0, NULL, NULL, NULL}};
+- enum nss_status status;
++ enum nss_status result;
++ ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0},
++ {NULL, NULL, 0, 0, NULL, NULL, NULL}};
+
+ if (name[0] == '-' || name[0] == '+')
+ return NSS_STATUS_NOTFOUND;
+@@ -1279,35 +826,32 @@
+ __libc_lock_lock (lock);
+
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+ __libc_lock_unlock (lock);
+
+- status = internal_setpwent (&ent);
+- if (status != NSS_STATUS_SUCCESS)
+- return status;
++ result = internal_setpwent (&ent, 0);
+
+- status = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getpwnam_r (name, pwd, &ent, buffer, buflen, errnop);
+
+ internal_endpwent (&ent);
+
+- return status;
++ return result;
+ }
+
+ /* This function handle the + entry in /etc/passwd for getpwuid */
+ static enum nss_status
+ getpwuid_plususer (uid_t uid, struct passwd *result, char *buffer,
+- size_t buflen, int *errnop)
++ size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+ struct passwd pwd;
+- int parse_res;
+ char *p;
+ size_t plen;
+
++ if (!nss_getpwuid_r)
++ return NSS_STATUS_UNAVAIL;
++
+ memset (&pwd, '\0', sizeof (struct passwd));
+
+ copy_pwd_changes (&pwd, result, NULL, 0);
+@@ -1321,70 +865,8 @@
+ p = buffer + (buflen - plen);
+ buflen -= plen;
+
+- if (use_nisplus) /* Do the NIS+ query here */
+- {
+- nis_result *res;
+- char buf[1024 + pwdtablelen];
+-
+- snprintf (buf, sizeof (buf), "[uid=%lu],%s", (unsigned long int) uid,
+- pwdtable);
+- res = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
+- {
+- enum nss_status status = niserr2nss (res->status);
+-
+- nis_freeresult (res);
+- return status;
+- }
+- if ((parse_res = _nss_nisplus_parse_pwent (res, result, buffer,
+- buflen, errnop)) == -1)
+- {
+- nis_freeresult (res);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (res);
+- }
+- else /* Use NIS */
+- {
+- char buf[1024];
+- char *domain, *outval, *ptr;
+- int outvallen;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- sprintf (buf, "%lu", (unsigned long int) uid);
+- if (yp_match (domain, "passwd.byuid", buf, strlen (buf),
+- &outval, &outvallen)
+- != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (insert_passwd_adjunct (&outval, &outvallen, domain, errnop)
+- != NSS_STATUS_SUCCESS)
+- {
+- free (outval);
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- ptr = strncpy (buffer, outval, buflen);
+- free (outval);
+-
+- while (isspace (*ptr))
+- ptr++;
+- parse_res = _nss_files_parse_pwent (ptr, result, data, buflen, errnop);
+- if (parse_res == -1)
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (parse_res > 0)
++ if (nss_getpwuid_r (uid, result, buffer, buflen, errnop) ==
++ NSS_STATUS_SUCCESS)
+ {
+ copy_pwd_changes (result, &pwd, p, plen);
+ give_pwd_free (&pwd);
+@@ -1400,10 +882,10 @@
+ return NSS_STATUS_RETURN;
+ }
+
+-/* Searches in /etc/passwd and the NIS/NIS+ map for a special user id */
++/* Searches in /etc/passwd and the NSS subsystem for a special user id */
+ static enum nss_status
+ internal_getpwuid_r (uid_t uid, struct passwd *result, ent_t *ent,
+- char *buffer, size_t buflen, int *errnop)
++ char *buffer, size_t buflen, int *errnop)
+ {
+ struct parser_data *data = (void *) buffer;
+
+@@ -1414,75 +896,79 @@
+ int parse_res;
+
+ do
+- {
+- fgetpos (ent->stream, &pos);
+- buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ {
++ fgetpos (ent->stream, &pos);
++ buffer[buflen - 1] = '\xff';
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+- if (p == NULL || buffer[buflen - 1] != '\xff')
+- {
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- /* Terminate the line for any case. */
+- buffer[buflen - 1] = '\0';
+-
+- /* Skip leading blanks. */
+- while (isspace (*p))
+- ++p;
+- }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
+- !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
+- errnop)));
++ if (p == NULL || buffer[buflen - 1] != '\xff')
++ {
++ fsetpos (ent->stream, &pos);
++ *errnop = ERANGE;
++ return NSS_STATUS_TRYAGAIN;
++ }
++
++ /* Terminate the line for any case. */
++ buffer[buflen - 1] = '\0';
++
++ /* Skip leading blanks. */
++ while (isspace (*p))
++ ++p;
++ }
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
++ !(parse_res = _nss_files_parse_pwent (p, result, data, buflen,
++ errnop)));
+
+ if (parse_res == -1)
+- {
+- /* The parser ran out of space. */
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
++ {
++ /* The parser ran out of space. */
++ fsetpos (ent->stream, &pos);
++ *errnop = ERANGE;
++ return NSS_STATUS_TRYAGAIN;
++ }
+
+ /* This is a real entry. */
+ if (result->pw_name[0] != '+' && result->pw_name[0] != '-')
+- {
+- if (result->pw_uid == uid)
+- return NSS_STATUS_SUCCESS;
+- else
+- continue;
+- }
++ {
++ if (result->pw_uid == uid)
++ return NSS_STATUS_SUCCESS;
++ else
++ continue;
++ }
+
+ /* -@netgroup */
+ if (result->pw_name[0] == '-' && result->pw_name[1] == '@'
+- && result->pw_name[2] != '\0')
+- {
+- char buf[strlen (result->pw_name)];
++ && result->pw_name[2] != '\0')
++ {
++ /* -1, because we remove first two character of pw_name. */
++ size_t len = strlen (result->pw_name) - 1;
++ char buf[len];
+ enum nss_status status;
+
+- strcpy (buf, &result->pw_name[2]);
++ memcpy (buf, &result->pw_name[2], len);
+
+ status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
+ if (status == NSS_STATUS_SUCCESS &&
+ innetgr (buf, NULL, result->pw_name, NULL))
+ return NSS_STATUS_NOTFOUND;
+
+- continue;
+- }
++ continue;
++ }
+
+ /* +@netgroup */
+ if (result->pw_name[0] == '+' && result->pw_name[1] == '@'
+- && result->pw_name[2] != '\0')
+- {
+- char buf[strlen (result->pw_name)];
++ && result->pw_name[2] != '\0')
++ {
++ /* -1, because we remove first two characters of pw_name. */
++ size_t len = strlen (result->pw_name) - 1;
++ char buf[len];
+ enum nss_status status;
+
+- strcpy (buf, &result->pw_name[2]);
++ memcpy (buf, &result->pw_name[2], len);
+
+ status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
+
+@@ -1494,39 +980,40 @@
+ if (innetgr (buf, NULL, result->pw_name, NULL))
+ return NSS_STATUS_SUCCESS;
+ }
++ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
++ return NSS_STATUS_NOTFOUND;
+ else
+- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
+- return NSS_STATUS_NOTFOUND;
+- else
+- return status;
++ return status;
+
+- continue;
++ continue;
+ }
+
+ /* -user */
+ if (result->pw_name[0] == '-' && result->pw_name[1] != '\0'
+- && result->pw_name[1] != '@')
+- {
+- char buf[strlen (result->pw_name)];
++ && result->pw_name[1] != '@')
++ {
++ size_t len = strlen (result->pw_name);
++ char buf[len];
+ enum nss_status status;
+
+- strcpy (buf, &result->pw_name[1]);
++ memcpy (buf, &result->pw_name[1], len);
+
+ status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
+ if (status == NSS_STATUS_SUCCESS &&
+ innetgr (buf, NULL, result->pw_name, NULL))
+ return NSS_STATUS_NOTFOUND;
+- continue;
+- }
++ continue;
++ }
+
+ /* +user */
+ if (result->pw_name[0] == '+' && result->pw_name[1] != '\0'
+- && result->pw_name[1] != '@')
+- {
+- char buf[strlen (result->pw_name)];
++ && result->pw_name[1] != '@')
++ {
++ size_t len = strlen (result->pw_name);
++ char buf[len];
+ enum nss_status status;
+
+- strcpy (buf, &result->pw_name[1]);
++ memcpy (buf, &result->pw_name[1], len);
+
+ status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
+
+@@ -1538,60 +1025,54 @@
+ if (strcmp (buf, result->pw_name) == 0)
+ return NSS_STATUS_SUCCESS;
+ }
++ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
++ return NSS_STATUS_NOTFOUND;
+ else
+- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
+- return NSS_STATUS_NOTFOUND;
+- else
+- return status;
++ return status;
+
+- continue;
+- }
++ continue;
++ }
+
+ /* +:... */
+ if (result->pw_name[0] == '+' && result->pw_name[1] == '\0')
+- {
+- enum nss_status status;
++ {
++ enum nss_status status;
+
+- status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
+- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
+- break;
+- else
+- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
+- return NSS_STATUS_NOTFOUND;
+- else
+- return status;
+- }
++ status = getpwuid_plususer (uid, result, buffer, buflen, errnop);
++ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
++ break;
++ else if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
++ return NSS_STATUS_NOTFOUND;
++ else
++ return status;
++ }
+ }
+ return NSS_STATUS_SUCCESS;
+ }
+
+ enum nss_status
+ _nss_compat_getpwuid_r (uid_t uid, struct passwd *pwd,
+- char *buffer, size_t buflen, int *errnop)
++ char *buffer, size_t buflen, int *errnop)
+ {
+- ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
++ enum nss_status result;
++ ent_t ent = {0, 0, TRUE, NULL, {NULL, 0, 0},
+ {NULL, NULL, 0, 0, NULL, NULL, NULL}};
+- enum nss_status status;
+
+ __libc_lock_lock (lock);
+
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("passwd_compat", NULL, "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+ __libc_lock_unlock (lock);
+
+- status = internal_setpwent (&ent);
+- if (status != NSS_STATUS_SUCCESS)
+- return status;
++ result = internal_setpwent (&ent, 0);
+
+- status = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getpwuid_r (uid, pwd, &ent, buffer, buflen, errnop);
+
+ internal_endpwent (&ent);
+
+- return status;
++ return result;
+ }
+
+
+@@ -1653,7 +1134,7 @@
+
+ buf[0] = '|';
+ cp = stpcpy (&buf[1], name);
+- *cp++= '|';
++ *cp++ = '|';
+ *cp = '\0';
+ return strstr (ent->blacklist.data, buf) != NULL;
+ }
+--- glibc-2.3.2/nis/nss_compat/compat-spwd.c 2002-08-26 01:08:20.000000000 -0400
++++ glibc-2.3.2/nis/nss_compat/compat-spwd.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
+
+@@ -17,27 +17,29 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <nss.h>
+-#include <errno.h>
+ #include <ctype.h>
++#include <errno.h>
+ #include <fcntl.h>
+ #include <netdb.h>
++#include <nss.h>
++#include <nsswitch.h>
+ #include <shadow.h>
++#include <stdio_ext.h>
+ #include <string.h>
+-#include <bits/libc-lock.h>
+-#include <rpcsvc/yp.h>
++#include <rpc/types.h>
+ #include <rpcsvc/ypclnt.h>
+-#include <rpcsvc/nis.h>
+-#include <nsswitch.h>
++#include <bits/libc-lock.h>
+
+ #include "netgroup.h"
+-#include "nss-nisplus.h"
+-#include "nisplus-parser.h"
+
+ static service_user *ni;
+-static bool_t use_nisplus; /* default: passwd_compat: nis */
+-static nis_name pwdtable; /* Name of the password table */
+-static size_t pwdtablelen;
++static enum nss_status (*nss_setspent) (int stayopen);
++static enum nss_status (*nss_getspnam_r) (const char *name, struct spwd * sp,
++ char *buffer, size_t buflen,
++ int *errnop);
++static enum nss_status (*nss_getspent_r) (struct spwd * sp, char *buffer,
++ size_t buflen, int *errnop);
++static enum nss_status (*nss_endspent) (void);
+
+ /* Get the declaration of the parser function. */
+ #define ENTNAME spent
+@@ -49,28 +51,25 @@
+ #define BLACKLIST_INITIAL_SIZE 512
+ #define BLACKLIST_INCREMENT 256
+ struct blacklist_t
+- {
+- char *data;
+- int current;
+- int size;
+- };
++{
++ char *data;
++ int current;
++ int size;
++};
+
+ struct ent_t
+- {
+- bool_t netgroup;
+- bool_t nis;
+- bool_t first;
+- char *oldkey;
+- int oldkeylen;
+- nis_result *result;
+- FILE *stream;
+- struct blacklist_t blacklist;
+- struct spwd pwd;
+- struct __netgrent netgrdata;
+- };
++{
++ bool_t netgroup;
++ bool_t files;
++ bool_t first;
++ FILE *stream;
++ struct blacklist_t blacklist;
++ struct spwd pwd;
++ struct __netgrent netgrdata;
++};
+ typedef struct ent_t ent_t;
+
+-static ent_t ext_ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
++static ent_t ext_ent = {0, TRUE, 0, NULL, {NULL, 0, 0},
+ {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}};
+
+ /* Protect global state against multiple changers. */
+@@ -80,6 +79,21 @@
+ static void blacklist_store_name (const char *, ent_t *);
+ static int in_blacklist (const char *, int, ent_t *);
+
++/* Initialize the NSS interface/functions. The calling function must
++ hold the lock. */
++static void
++init_nss_interface (void)
++{
++ if (__nss_database_lookup ("shadow_compat", "passwd_compat",
++ "nis", &ni) >= 0)
++ {
++ nss_setspent = __nss_lookup_function (ni, "setspent");
++ nss_getspnam_r = __nss_lookup_function (ni, "getspnam_r");
++ nss_getspent_r = __nss_lookup_function (ni, "getspent_r");
++ nss_endspent = __nss_lookup_function (ni, "endspent");
++ }
++}
++
+ static void
+ give_spwd_free (struct spwd *pwd)
+ {
+@@ -142,45 +156,17 @@
+ }
+
+ static enum nss_status
+-internal_setspent (ent_t *ent)
++internal_setspent (ent_t *ent, int stayopen)
+ {
+ enum nss_status status = NSS_STATUS_SUCCESS;
+
+- ent->nis = ent->first = ent->netgroup = 0;
++ ent->first = ent->netgroup = 0;
++ ent->files = TRUE;
+
+ /* If something was left over free it. */
+ if (ent->netgroup)
+ __internal_endnetgrent (&ent->netgrdata);
+
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
+-
+- if (pwdtable == NULL)
+- {
+- static const char key[] = "passwd.org_dir.";
+- const char *local_dir = nis_local_directory ();
+- size_t len_local_dir = strlen (local_dir);
+-
+- pwdtable = malloc (sizeof (key) + len_local_dir);
+- if (pwdtable == NULL)
+- return NSS_STATUS_TRYAGAIN;
+-
+- pwdtablelen = ((char *) mempcpy (mempcpy (pwdtable,
+- key, sizeof (key) - 1),
+- local_dir, len_local_dir + 1)
+- - pwdtable) - 1;
+- }
+-
+ if (ent->blacklist.data != NULL)
+ {
+ ent->blacklist.current = 1;
+@@ -192,7 +178,7 @@
+
+ if (ent->stream == NULL)
+ {
+- ent->stream = fopen ("/etc/shadow", "r");
++ ent->stream = fopen ("/etc/shadow", "rm");
+
+ if (ent->stream == NULL)
+ status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
+@@ -201,20 +187,23 @@
+ /* We have to make sure the file is `closed on exec'. */
+ int result, flags;
+
+- result = flags = fcntl (fileno (ent->stream), F_GETFD, 0);
++ result = flags = fcntl (fileno_unlocked (ent->stream), F_GETFD, 0);
+ if (result >= 0)
+ {
+ flags |= FD_CLOEXEC;
+- result = fcntl (fileno (ent->stream), F_SETFD, flags);
++ result = fcntl (fileno_unlocked (ent->stream), F_SETFD, flags);
+ }
+ if (result < 0)
+ {
+ /* Something went wrong. Close the stream and return a
+- failure. */
++ failure. */
+ fclose (ent->stream);
+ ent->stream = NULL;
+ status = NSS_STATUS_UNAVAIL;
+ }
++ else
++ /* We take care of locking ourself. */
++ __fsetlocking (ent->stream, FSETLOCKING_BYCALLER);
+ }
+ }
+ else
+@@ -222,6 +211,9 @@
+
+ give_spwd_free (&ent->pwd);
+
++ if (status == NSS_STATUS_SUCCESS && nss_setspent)
++ return nss_setspent (stayopen);
++
+ return status;
+ }
+
+@@ -234,12 +226,9 @@
+ __libc_lock_lock (lock);
+
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+- result = internal_setspent (&ext_ent);
++ result = internal_setspent (&ext_ent, stayopen);
+
+ __libc_lock_unlock (lock);
+
+@@ -250,6 +239,9 @@
+ static enum nss_status
+ internal_endspent (ent_t *ent)
+ {
++ if (nss_endspent)
++ nss_endspent ();
++
+ if (ent->stream != NULL)
+ {
+ fclose (ent->stream);
+@@ -259,20 +251,8 @@
+ if (ent->netgroup)
+ __internal_endnetgrent (&ent->netgrdata);
+
+- ent->nis = ent->first = ent->netgroup = 0;
+-
+- if (ent->oldkey != NULL)
+- {
+- free (ent->oldkey);
+- ent->oldkey = NULL;
+- ent->oldkeylen = 0;
+- }
+-
+- if (ent->result != NULL)
+- {
+- nis_freeresult (ent->result);
+- ent->result = NULL;
+- }
++ ent->first = ent->netgroup = FALSE;
++ ent->files = TRUE;
+
+ if (ent->blacklist.data != NULL)
+ {
+@@ -304,25 +284,27 @@
+
+
+ static enum nss_status
+-getspent_next_nis_netgr (const char *name, struct spwd *result, ent_t *ent,
+- char *group, char *buffer, size_t buflen, int *errnop)
++getspent_next_nss_netgr (const char *name, struct spwd *result, ent_t *ent,
++ char *group, char *buffer, size_t buflen,
++ int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+- char *ypdomain, *host, *user, *domain, *outval, *p, *p2;
+- int status, outvallen;
++ char *curdomain, *host, *user, *domain, *p2;
+ size_t p2len;
+
+- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
++ if (!nss_getspnam_r)
++ return NSS_STATUS_UNAVAIL;
++
++ if (yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
+ {
+- ent->netgroup = 0;
+- ent->first = 0;
++ ent->netgroup = FALSE;
++ ent->first = FALSE;
+ give_spwd_free (&ent->pwd);
+ return NSS_STATUS_UNAVAIL;
+ }
+
+ if (ent->first == TRUE)
+ {
+- bzero (&ent->netgrdata, sizeof (struct __netgrent));
++ memset (&ent->netgrdata, 0, sizeof (struct __netgrent));
+ __internal_setnetgrent (group, &ent->netgrdata);
+ ent->first = FALSE;
+ }
+@@ -330,7 +312,7 @@
+ while (1)
+ {
+ char *saved_cursor;
+- int parse_res;
++ enum nss_status status;
+
+ saved_cursor = ent->netgrdata.cursor;
+ status = __internal_getnetgrent_r (&host, &user, &domain,
+@@ -339,7 +321,7 @@
+ if (status != 1)
+ {
+ __internal_endnetgrent (&ent->netgrdata);
+- ent->netgroup = 0;
++ ent->netgroup = FALSE;
+ give_spwd_free (&ent->pwd);
+ return NSS_STATUS_RETURN;
+ }
+@@ -347,7 +329,7 @@
+ if (user == NULL || user[0] == '-')
+ continue;
+
+- if (domain != NULL && strcmp (ypdomain, domain) != 0)
++ if (domain != NULL && strcmp (curdomain, domain) != 0)
+ continue;
+
+ /* If name != NULL, we are called from getpwnam */
+@@ -355,240 +337,43 @@
+ if (strcmp (user, name) != 0)
+ continue;
+
+- if (yp_match (ypdomain, "shadow.byname", user,
+- strlen (user), &outval, &outvallen)
+- != YPERR_SUCCESS)
+- continue;
+-
+ p2len = spwd_need_buflen (&ent->pwd);
+ if (p2len > buflen)
+ {
+- free (outval);
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ p2 = buffer + (buflen - p2len);
+ buflen -= p2len;
+- if (buflen < ((size_t) outval + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- p = strncpy (buffer, outval, buflen);
+- while (isspace (*p))
+- p++;
+- free (outval);
+- parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- ent->netgrdata.cursor = saved_cursor;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- if (parse_res)
+- {
+- /* Store the User in the blacklist for the "+" at the end of
+- /etc/passwd */
+- blacklist_store_name (result->sp_namp, ent);
+- copy_spwd_changes (result, &ent->pwd, p2, p2len);
+- break;
+- }
+- }
+-
+- return NSS_STATUS_SUCCESS;
+-}
+-
+-static enum nss_status
+-getspent_next_nisplus_netgr (const char *name, struct spwd *result,
+- ent_t *ent, char *group, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- char *ypdomain, *host, *user, *domain, *p2;
+- int status, parse_res;
+- size_t p2len;
+- nis_result *nisres;
+
+- /* Maybe we should use domainname here ? We need the current
+- domainname for the domain field in netgroups */
+- if (yp_get_default_domain (&ypdomain) != YPERR_SUCCESS)
+- {
+- ent->netgroup = 0;
+- ent->first = 0;
+- give_spwd_free (&ent->pwd);
+- return NSS_STATUS_UNAVAIL;
+- }
+-
+- if (ent->first == TRUE)
+- {
+- bzero (&ent->netgrdata, sizeof (struct __netgrent));
+- __internal_setnetgrent (group, &ent->netgrdata);
+- ent->first = FALSE;
+- }
+-
+- while (1)
+- {
+- char *saved_cursor;
+-
+- saved_cursor = ent->netgrdata.cursor;
+- status = __internal_getnetgrent_r (&host, &user, &domain,
+- &ent->netgrdata, buffer, buflen,
+- errnop);
+- if (status != 1)
+- {
+- __internal_endnetgrent (&ent->netgrdata);
+- ent->netgroup = 0;
+- give_spwd_free (&ent->pwd);
+- return NSS_STATUS_RETURN;
+- }
+-
+- if (user == NULL || user[0] == '-')
+- continue;
+-
+- if (domain != NULL && strcmp (ypdomain, domain) != 0)
+- continue;
+-
+- /* If name != NULL, we are called from getpwnam */
+- if (name != NULL)
+- if (strcmp (user, name) != 0)
+- continue;
++ if (nss_getspnam_r (user, result, buffer, buflen, errnop) !=
++ NSS_STATUS_SUCCESS)
++ continue;
+
+- p2len = spwd_need_buflen (&ent->pwd);
+- if (p2len > buflen)
+- {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- p2 = buffer + (buflen - p2len);
+- buflen -= p2len;
+- {
+- char buf[strlen (user) + 30 + pwdtablelen];
+- sprintf (buf, "[name=%s],%s", user, pwdtable);
+- nisres = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+- }
+- if (niserr2nss (nisres->status) != NSS_STATUS_SUCCESS)
+- {
+- nis_freeresult (nisres);
+- continue;
+- }
+- parse_res = _nss_nisplus_parse_spent (nisres, result, buffer,
+- buflen, errnop);
+- if (parse_res == -1)
++ if (!in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
+ {
+- nis_freeresult (nisres);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (nisres);
+-
+- if (parse_res)
+- {
+- /* Store the User in the blacklist for the "+" at the end of
+- /etc/passwd */
++ /* Store the User in the blacklist for possible the "+" at the
++ end of /etc/passwd */
+ blacklist_store_name (result->sp_namp, ent);
+ copy_spwd_changes (result, &ent->pwd, p2, p2len);
+- break;
+- }
+- }
+-
+- return NSS_STATUS_SUCCESS;
+-}
+-
+-static enum nss_status
+-getspent_next_nisplus (struct spwd *result, ent_t *ent, char *buffer,
+- size_t buflen, int *errnop)
+-{
+- int parse_res;
+- size_t p2len;
+- char *p2;
+-
+- p2len = spwd_need_buflen (&ent->pwd);
+- if (p2len > buflen)
+- {
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- p2 = buffer + (buflen - p2len);
+- buflen -= p2len;
+- do
+- {
+- bool_t saved_first;
+- nis_result *saved_res;
+-
+- if (ent->first)
+- {
+- saved_first = TRUE;
+- saved_res = ent->result;
+-
+- ent->result = nis_first_entry (pwdtable);
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- ent->nis = 0;
+- give_spwd_free (&ent->pwd);
+- return niserr2nss (ent->result->status);
+- }
+- ent->first = FALSE;
+- }
+- else
+- {
+- nis_result *res;
+-
+- saved_first = FALSE;
+- saved_res = ent->result;
+-
+- res = nis_next_entry (pwdtable, &ent->result->cookie);
+- ent->result = res;
+- if (niserr2nss (ent->result->status) != NSS_STATUS_SUCCESS)
+- {
+- nis_freeresult (saved_res);
+- ent->nis = 0;
+- give_spwd_free (&ent->pwd);
+- return niserr2nss (ent->result->status);
+- }
+- }
+- parse_res = _nss_nisplus_parse_spent (ent->result, result, buffer,
+- buflen, errnop);
+- if (parse_res == -1)
+- {
+- ent->first = saved_first;
+- nis_freeresult (ent->result);
+- ent->result = saved_res;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!saved_first)
+- nis_freeresult (saved_res);
++ break;
+ }
+- if (parse_res &&
+- in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
+- parse_res = 0; /* if result->pw_name in blacklist,search next entry */
+ }
+- while (!parse_res);
+-
+- copy_spwd_changes (result, &ent->pwd, p2, p2len);
+
+ return NSS_STATUS_SUCCESS;
+ }
+
+
+ static enum nss_status
+-getspent_next_nis (struct spwd *result, ent_t *ent,
++getspent_next_nss (struct spwd *result, ent_t *ent,
+ char *buffer, size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+- char *domain, *outkey, *outval, *p, *p2;
+- int outkeylen, outvallen, parse_res;
++ enum nss_status status;
++ char *p2;
+ size_t p2len;
+
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- give_spwd_free (&ent->pwd);
+- return NSS_STATUS_UNAVAIL;
+- }
++ if (!nss_getspent_r)
++ return NSS_STATUS_UNAVAIL;
+
+ p2len = spwd_need_buflen (&ent->pwd);
+ if (p2len > buflen)
+@@ -600,87 +385,11 @@
+ buflen -= p2len;
+ do
+ {
+- bool_t saved_first;
+- char *saved_oldkey;
+- int saved_oldlen;
+-
+- if (ent->first)
+- {
+- if (yp_first (domain, "shadow.byname", &outkey, &outkeylen,
+- &outval, &outvallen) != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- give_spwd_free (&ent->pwd);
+- return NSS_STATUS_UNAVAIL;
+- }
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- saved_first = TRUE;
+- saved_oldkey = ent->oldkey;
+- saved_oldlen = ent->oldkeylen;
+- ent->oldkey = outkey;
+- ent->oldkeylen = outkeylen;
+- ent->first = FALSE;
+- }
+- else
+- {
+- if (yp_next (domain, "shadow.byname", ent->oldkey, ent->oldkeylen,
+- &outkey, &outkeylen, &outval, &outvallen)
+- != YPERR_SUCCESS)
+- {
+- ent->nis = 0;
+- give_spwd_free (&ent->pwd);
+- return NSS_STATUS_NOTFOUND;
+- }
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- saved_first = FALSE;
+- saved_oldkey = ent->oldkey;
+- saved_oldlen = ent->oldkeylen;
+- ent->oldkey = outkey;
+- ent->oldkeylen = outkeylen;
+- }
+-
+- /* Copy the found data to our buffer */
+- p = strncpy (buffer, outval, buflen);
+-
+- /* ...and free the data. */
+- free (outval);
+-
+- while (isspace (*p))
+- ++p;
+- parse_res = _nss_files_parse_spent (p, result, data, buflen, errnop);
+- if (parse_res == -1)
+- {
+- free (ent->oldkey);
+- ent->oldkey = saved_oldkey;
+- ent->oldkeylen = saved_oldlen;
+- ent->first = saved_first;
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- else
+- {
+- if (!saved_first)
+- free (saved_oldkey);
+- }
+- if (parse_res &&
+- in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
+- parse_res = 0;
++ if ((status = nss_getspent_r (result, buffer, buflen, errnop)) !=
++ NSS_STATUS_SUCCESS)
++ return status;
+ }
+- while (!parse_res);
++ while (in_blacklist (result->sp_namp, strlen (result->sp_namp), ent));
+
+ copy_spwd_changes (result, &ent->pwd, p2, p2len);
+
+@@ -689,15 +398,16 @@
+
+ /* This function handle the +user entrys in /etc/shadow */
+ static enum nss_status
+-getspnam_plususer (const char *name, struct spwd *result, char *buffer,
+- size_t buflen, int *errnop)
++getspnam_plususer (const char *name, struct spwd *result, ent_t *ent,
++ char *buffer, size_t buflen, int *errnop)
+ {
+- struct parser_data *data = (void *) buffer;
+ struct spwd pwd;
+- int parse_res;
+ char *p;
+ size_t plen;
+
++ if (!nss_getspnam_r)
++ return NSS_STATUS_UNAVAIL;
++
+ memset (&pwd, '\0', sizeof (struct spwd));
+ pwd.sp_warn = -1;
+ pwd.sp_inact = -1;
+@@ -715,72 +425,17 @@
+ p = buffer + (buflen - plen);
+ buflen -= plen;
+
+- if (use_nisplus) /* Do the NIS+ query here */
+- {
+- nis_result *res;
+- char buf[strlen (name) + 24 + pwdtablelen];
+-
+- sprintf(buf, "[name=%s],%s", name, pwdtable);
+- res = nis_list(buf, 0, NULL, NULL);
+- if (niserr2nss (res->status) != NSS_STATUS_SUCCESS)
+- {
+- enum nss_status status = niserr2nss (res->status);
+-
+- nis_freeresult (res);
+- return status;
+- }
+- parse_res = _nss_nisplus_parse_spent (res, result, buffer,
+- buflen, errnop);
+- if (parse_res == -1)
+- {
+- nis_freeresult (res);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
+- nis_freeresult (res);
+- }
+- else /* Use NIS */
+- {
+- char *domain, *outval, *ptr;
+- int outvallen;
+-
+- if (yp_get_default_domain (&domain) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (yp_match (domain, "shadow.byname", name, strlen (name),
+- &outval, &outvallen) != YPERR_SUCCESS)
+- return NSS_STATUS_NOTFOUND;
+-
+- if (buflen < ((size_t) outvallen + 1))
+- {
+- free (outval);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
++ if (nss_getspnam_r (name, result, buffer, buflen, errnop) !=
++ NSS_STATUS_SUCCESS)
++ return NSS_STATUS_NOTFOUND;
+
+- ptr = strncpy (buffer, outval, buflen);
+- free (outval);
+- while (isspace (*ptr))
+- ptr++;
+- parse_res = _nss_files_parse_spent (ptr, result, data, buflen, errnop);
+- if (parse_res == -1)
+- return NSS_STATUS_TRYAGAIN;
+- }
++ if (in_blacklist (result->sp_namp, strlen (result->sp_namp), ent))
++ return NSS_STATUS_NOTFOUND;
+
+- if (parse_res)
+- {
+- copy_spwd_changes (result, &pwd, p, plen);
+- give_spwd_free (&pwd);
+- /* We found the entry. */
+- return NSS_STATUS_SUCCESS;
+- }
+- else
+- {
+- /* Give buffer the old len back */
+- buflen += plen;
+- give_spwd_free (&pwd);
+- }
+- return NSS_STATUS_RETURN;
++ copy_spwd_changes (result, &pwd, p, plen);
++ give_spwd_free (&pwd);
++ /* We found the entry. */
++ return NSS_STATUS_SUCCESS;
+ }
+
+ static enum nss_status
+@@ -798,8 +453,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+@@ -814,18 +469,18 @@
+ ++p;
+ }
+ while (*p == '\0' || *p == '#' /* Ignore empty and comment lines. */
+- /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ /* Parse the line. If it is invalid, loop to
++ get the next line of the file to parse. */
+ || !(parse_res = _nss_files_parse_spent (p, result, data,
+ buflen, errnop)));
+
+ if (parse_res == -1)
+- {
+- /* The parser ran out of space. */
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- return NSS_STATUS_TRYAGAIN;
+- }
++ {
++ /* The parser ran out of space. */
++ fsetpos (ent->stream, &pos);
++ *errnop = ERANGE;
++ return NSS_STATUS_TRYAGAIN;
++ }
+
+ if (result->sp_namp[0] != '+' && result->sp_namp[0] != '-')
+ /* This is a real entry. */
+@@ -836,12 +491,12 @@
+ && result->sp_namp[2] != '\0')
+ {
+ /* XXX Do not use fixed length buffers. */
+- char buf2[1024];
++ char buf2[1024];
+ char *user, *host, *domain;
+- struct __netgrent netgrdata;
++ struct __netgrent netgrdata;
+
+- bzero (&netgrdata, sizeof (struct __netgrent));
+- __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
++ bzero (&netgrdata, sizeof (struct __netgrent));
++ __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
+ while (__internal_getnetgrent_r (&host, &user, &domain,
+ &netgrdata, buf2, sizeof (buf2),
+ errnop))
+@@ -863,14 +518,9 @@
+ ent->first = TRUE;
+ copy_spwd_changes (&ent->pwd, result, NULL, 0);
+
+- if (use_nisplus)
+- status = getspent_next_nisplus_netgr (NULL, result, ent,
+- &result->sp_namp[2],
+- buffer, buflen, errnop);
+- else
+- status = getspent_next_nis_netgr (NULL, result, ent,
+- &result->sp_namp[2],
+- buffer, buflen, errnop);
++ status = getspent_next_nss_netgr (NULL, result, ent,
++ &result->sp_namp[2],
++ buffer, buflen, errnop);
+ if (status == NSS_STATUS_RETURN)
+ continue;
+ else
+@@ -889,41 +539,43 @@
+ if (result->sp_namp[0] == '+' && result->sp_namp[1] != '\0'
+ && result->sp_namp[1] != '@')
+ {
+- enum nss_status status;
++ size_t len = strlen (result->sp_namp);
++ char buf[len];
++ enum nss_status status;
+
+ /* Store the User in the blacklist for the "+" at the end of
+ /etc/passwd */
+- blacklist_store_name (&result->sp_namp[1], ent);
+- status = getspnam_plususer (&result->sp_namp[1], result, buffer,
+- buflen, errnop);
+- if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
+- break;
+- else
+- if (status == NSS_STATUS_RETURN /* We couldn't parse the entry */
+- || status == NSS_STATUS_NOTFOUND) /* entry doesn't exist */
+- continue;
+- else
+- {
+- if (status == NSS_STATUS_TRYAGAIN)
+- {
+- fsetpos (ent->stream, &pos);
+- *errnop = ERANGE;
+- }
+- return status;
+- }
++ memcpy (buf, &result->sp_namp[1], len);
++ status = getspnam_plususer (&result->sp_namp[1], result, ent,
++ buffer, buflen, errnop);
++ blacklist_store_name (buf, ent);
++
++ if (status == NSS_STATUS_SUCCESS) /* We found the entry. */
++ break;
++ /* We couldn't parse the entry */
++ else if (status == NSS_STATUS_RETURN
++ /* entry doesn't exist */
++ || status == NSS_STATUS_NOTFOUND)
++ continue;
++ else
++ {
++ if (status == NSS_STATUS_TRYAGAIN)
++ {
++ fsetpos (ent->stream, &pos);
++ *errnop = ERANGE;
++ }
++ return status;
++ }
+ }
+
+ /* +:... */
+ if (result->sp_namp[0] == '+' && result->sp_namp[1] == '\0')
+ {
+- ent->nis = TRUE;
++ ent->files = FALSE;
+ ent->first = TRUE;
+ copy_spwd_changes (&ent->pwd, result, NULL, 0);
+
+- if (use_nisplus)
+- return getspent_next_nisplus (result, ent, buffer, buflen, errnop);
+- else
+- return getspent_next_nis (result, ent, buffer, buflen, errnop);
++ return getspent_next_nss (result, ent, buffer, buflen, errnop);
+ }
+ }
+
+@@ -937,57 +589,45 @@
+ {
+ if (ent->netgroup)
+ {
+- int status;
++ enum nss_status status;
+
+ /* We are searching members in a netgroup */
+ /* Since this is not the first call, we don't need the group name */
+- if (use_nisplus)
+- status = getspent_next_nisplus_netgr (NULL, pw, ent, NULL, buffer,
+- buflen, errnop);
+- else
+- status = getspent_next_nis_netgr (NULL, pw, ent, NULL, buffer, buflen,
+- errnop);
++ status = getspent_next_nss_netgr (NULL, pw, ent, NULL, buffer,
++ buflen, errnop);
++
+ if (status == NSS_STATUS_RETURN)
+ return getspent_next_file (pw, ent, buffer, buflen, errnop);
+ else
+ return status;
+ }
++ else if (ent->files)
++ return getspent_next_file (pw, ent, buffer, buflen, errnop);
+ else
+- if (ent->nis)
+- {
+- if (use_nisplus)
+- return getspent_next_nisplus (pw, ent, buffer, buflen, errnop);
+- else
+- return getspent_next_nis (pw, ent, buffer, buflen, errnop);
+- }
+- else
+- return getspent_next_file (pw, ent, buffer, buflen, errnop);
++ return getspent_next_nss (pw, ent, buffer, buflen, errnop);
+ }
+
+ enum nss_status
+ _nss_compat_getspent_r (struct spwd *pwd, char *buffer, size_t buflen,
+ int *errnop)
+ {
+- enum nss_status status = NSS_STATUS_SUCCESS;
++ enum nss_status result = NSS_STATUS_SUCCESS;
+
+ __libc_lock_lock (lock);
+
++ /* Be prepared that the setpwent function was not called before. */
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+- /* Be prepared that the setspent function was not called before. */
+ if (ext_ent.stream == NULL)
+- status = internal_setspent (&ext_ent);
++ result = internal_setspent (&ext_ent, 1);
+
+- if (status == NSS_STATUS_SUCCESS)
+- status = internal_getspent_r (pwd, &ext_ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getspent_r (pwd, &ext_ent, buffer, buflen, errnop);
+
+ __libc_lock_unlock (lock);
+
+- return status;
++ return result;
+ }
+
+ /* Searches in /etc/passwd and the NIS/NIS+ map for a special user */
+@@ -1007,8 +647,8 @@
+ {
+ fgetpos (ent->stream, &pos);
+ buffer[buflen - 1] = '\xff';
+- p = fgets (buffer, buflen, ent->stream);
+- if (p == NULL && feof (ent->stream))
++ p = fgets_unlocked (buffer, buflen, ent->stream);
++ if (p == NULL && feof_unlocked (ent->stream))
+ return NSS_STATUS_NOTFOUND;
+
+ if (p == NULL || buffer[buflen - 1] != '\xff')
+@@ -1018,13 +658,16 @@
+ return NSS_STATUS_TRYAGAIN;
+ }
+
++ /* Terminate the line for any case. */
++ buffer[buflen - 1] = '\0';
++
+ /* Skip leading blanks. */
+ while (isspace (*p))
+ ++p;
+ }
+- while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
++ while (*p == '\0' || *p == '#' || /* Ignore empty and comment lines. */
+ /* Parse the line. If it is invalid, loop to
+- get the next line of the file to parse. */
++ get the next line of the file to parse. */
+ !(parse_res = _nss_files_parse_spent (p, result, data, buflen,
+ errnop)));
+
+@@ -1046,24 +689,13 @@
+ }
+
+ /* -@netgroup */
++ /* If the loaded NSS module does not support this service, add
++ all users from a +@netgroup entry to the blacklist, too. */
+ if (result->sp_namp[0] == '-' && result->sp_namp[1] == '@'
+ && result->sp_namp[2] != '\0')
+ {
+- /* XXX Do not use fixed length buffers. */
+- char buf2[1024];
+- char *user, *host, *domain;
+- struct __netgrent netgrdata;
+-
+- bzero (&netgrdata, sizeof (struct __netgrent));
+- __internal_setnetgrent (&result->sp_namp[2], &netgrdata);
+- while (__internal_getnetgrent_r (&host, &user, &domain, &netgrdata,
+- buf2, sizeof (buf2), errnop))
+- {
+- if (user != NULL && user[0] != '-')
+- if (strcmp (user, name) == 0)
+- return NSS_STATUS_NOTFOUND;
+- }
+- __internal_endnetgrent (&netgrdata);
++ if (innetgr (&result->sp_namp[2], NULL, name, NULL))
++ return NSS_STATUS_NOTFOUND;
+ continue;
+ }
+
+@@ -1071,28 +703,18 @@
+ if (result->sp_namp[0] == '+' && result->sp_namp[1] == '@'
+ && result->sp_namp[2] != '\0')
+ {
+- char *buf = strdupa (&result->sp_namp[2]);
+- int status;
+-
+- ent->netgroup = TRUE;
+- ent->first = TRUE;
+- copy_spwd_changes (&ent->pwd, result, NULL, 0);
++ enum nss_status status;
+
+- do
++ if (innetgr (&result->sp_namp[2], NULL, name, NULL))
+ {
+- if (use_nisplus)
+- status = getspent_next_nisplus_netgr (name, result, ent, buf,
+- buffer, buflen, errnop);
+- else
+- status = getspent_next_nis_netgr (name, result, ent, buf,
+- buffer, buflen, errnop);
++ status = getspnam_plususer (name, result, ent, buffer,
++ buflen, errnop);
++
+ if (status == NSS_STATUS_RETURN)
+ continue;
+
+- if (status == NSS_STATUS_SUCCESS
+- && strcmp (result->sp_namp, name) == 0)
+- return NSS_STATUS_SUCCESS;
+- } while (status == NSS_STATUS_SUCCESS);
++ return status;
++ }
+ continue;
+ }
+
+@@ -1114,8 +736,9 @@
+ {
+ enum nss_status status;
+
+- status = getspnam_plususer (name, result, buffer, buflen,
+- errnop);
++ status = getspnam_plususer (name, result, ent,
++ buffer, buflen, errnop);
++
+ if (status == NSS_STATUS_RETURN)
+ /* We couldn't parse the entry */
+ return NSS_STATUS_NOTFOUND;
+@@ -1129,9 +752,15 @@
+ {
+ enum nss_status status;
+
+- status = getspnam_plususer (name, result, buffer, buflen, errnop);
+- if (status == NSS_STATUS_RETURN) /* We couldn't parse the entry */
+- return NSS_STATUS_NOTFOUND;
++ status = getspnam_plususer (name, result, ent,
++ buffer, buflen, errnop);
++
++ if (status == NSS_STATUS_SUCCESS)
++ /* We found the entry. */
++ break;
++ else if (status == NSS_STATUS_RETURN)
++ /* We couldn't parse the entry */
++ return NSS_STATUS_NOTFOUND;
+ else
+ return status;
+ }
+@@ -1143,28 +772,28 @@
+ _nss_compat_getspnam_r (const char *name, struct spwd *pwd,
+ char *buffer, size_t buflen, int *errnop)
+ {
+- ent_t ent = {0, 0, 0, NULL, 0, NULL, NULL, {NULL, 0, 0},
++ enum nss_status result;
++ ent_t ent = {0, TRUE, 0, NULL, {NULL, 0, 0},
+ {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}};
+- enum nss_status status;
+
+ if (name[0] == '-' || name[0] == '+')
+ return NSS_STATUS_NOTFOUND;
+
++ __libc_lock_lock (lock);
++
+ if (ni == NULL)
+- {
+- __nss_database_lookup ("shadow_compat", "passwd_compat", "nis", &ni);
+- use_nisplus = (strcmp (ni->name, "nisplus") == 0);
+- }
++ init_nss_interface ();
+
+- status = internal_setspent (&ent);
+- if (status != NSS_STATUS_SUCCESS)
+- return status;
++ __libc_lock_unlock (lock);
++
++ result = internal_setspent (&ent, 0);
+
+- status = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop);
++ if (result == NSS_STATUS_SUCCESS)
++ result = internal_getspnam_r (name, pwd, &ent, buffer, buflen, errnop);
+
+ internal_endspent (&ent);
+
+- return status;
++ return result;
+ }
+
+ /* Support routines for remembering -@netgroup and -user entries.
+@@ -1225,7 +854,7 @@
+
+ buf[0] = '|';
+ cp = stpcpy (&buf[1], name);
+- *cp++= '|';
++ *cp++ = '|';
+ *cp = '\0';
+ return strstr (ent->blacklist.data, buf) != NULL;
+ }
+--- glibc-2.3.2/nis/nss_nis/nis-alias.c 2003-01-18 05:21:02.000000000 -0500
++++ glibc-2.3.2/nis/nss_nis/nis-alias.c 2003-03-18 16:46:07.000000000 -0500
+@@ -214,7 +214,7 @@
+ char *p;
+ size_t namlen = strlen (name);
+ char name2[namlen + 1];
+- int i;
++ size_t i;
+
+ if (name == NULL)
+ {
+--- glibc-2.3.2/nis/nss_nis/nis-hosts.c 2003-01-18 05:40:11.000000000 -0500
++++ glibc-2.3.2/nis/nss_nis/nis-hosts.c 2003-03-18 16:46:07.000000000 -0500
+@@ -261,7 +261,7 @@
+ /* Convert name to lowercase. */
+ size_t namlen = strlen (name);
+ char name2[namlen + 1];
+- int i;
++ size_t i;
+
+ for (i = 0; i < namlen; ++i)
+ name2[i] = tolower (name[i]);
+--- glibc-2.3.2/nis/nss_nis/nis-initgroups.c 2002-08-26 00:47:19.000000000 -0400
++++ glibc-2.3.2/nis/nss_nis/nis-initgroups.c 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
+
+@@ -17,10 +17,11 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <nss.h>
+-#include <grp.h>
++#include <alloca.h>
+ #include <ctype.h>
+ #include <errno.h>
++#include <grp.h>
++#include <nss.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <rpcsvc/yp.h>
+@@ -159,10 +160,7 @@
+ internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop,
+ &intern)) == NSS_STATUS_TRYAGAIN
+ && *errnop == ERANGE)
+- {
+- buflen *= 2;
+- tmpbuf = __alloca (buflen);
+- }
++ tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
+
+ if (status != NSS_STATUS_SUCCESS)
+ goto done;
+--- glibc-2.3.2/nis/nss_nis/nis-network.c 2003-01-19 14:06:27.000000000 -0500
++++ glibc-2.3.2/nis/nss_nis/nis-network.c 2003-03-18 16:46:07.000000000 -0500
+@@ -181,7 +181,7 @@
+ /* Convert name to lowercase. */
+ size_t namlen = strlen (name);
+ char name2[namlen + 1];
+- int i;
++ size_t i;
+
+ for (i = 0; i < namlen; ++i)
+ name2[i] = _tolower (name[i]);
+--- glibc-2.3.2/nis/ypclnt.c 2002-03-20 19:37:12.000000000 -0500
++++ glibc-2.3.2/nis/ypclnt.c 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
+
+@@ -66,15 +66,12 @@
+ if (domain == NULL || domain[0] == '\0')
+ return YPERR_BADARGS;
+
+- if (ypdb != NULL)
++ ysd = *ypdb;
++ while (ysd != NULL)
+ {
+- ysd = *ypdb;
+- while (ysd != NULL)
+- {
+- if (strcmp (domain, ysd->dom_domain) == 0)
+- break;
+- ysd = ysd->dom_pnext;
+- }
++ if (strcmp (domain, ysd->dom_domain) == 0)
++ break;
++ ysd = ysd->dom_pnext;
+ }
+
+ if (ysd == NULL)
+@@ -205,7 +202,7 @@
+ return YPERR_YPSERV;
+ }
+
+- if (is_new && ypdb != NULL)
++ if (is_new)
+ {
+ ysd->dom_pnext = *ypdb;
+ *ypdb = ysd;
+@@ -219,6 +216,7 @@
+ {
+ clnt_destroy (ydb->dom_client);
+ ydb->dom_client = NULL;
++ free (ydb);
+ }
+
+ int
+@@ -255,7 +253,6 @@
+ else
+ ydbptr2 = ydbptr->dom_pnext;
+ __yp_unbind (work);
+- free (work);
+ break;
+ }
+ ydbptr2 = ydbptr;
+@@ -335,10 +332,7 @@
+ use_ypbindlist = FALSE;
+ }
+ else
+- {
+- __yp_unbind (ydb);
+- free (ydb);
+- }
++ __yp_unbind (ydb);
+
+ ydb = NULL;
+ status = YPERR_RPC;
+@@ -355,11 +349,7 @@
+ }
+ else
+ if (ydb != NULL)
+- {
+- __yp_unbind (ydb);
+- free (ydb);
+- ydb = NULL;
+- }
++ __yp_unbind (ydb);
+
+ __set_errno (saved_errno);
+
+@@ -710,6 +700,7 @@
+
+ /* We don't need the UDP connection anymore. */
+ __yp_unbind (ydb);
++ ydb = NULL;
+
+ clnt = clnttcp_create (&clnt_sin, YPPROG, YPVERS, &clnt_sock, 0, 0);
+ if (clnt == NULL)
+--- glibc-2.3.2/nscd/Makefile 2002-10-17 13:05:53.000000000 -0400
++++ glibc-2.3.2/nscd/Makefile 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -30,7 +30,7 @@
+
+ nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \
+ getgrnam_r getgrgid_r hstcache gethstbyad_r gethstbynm2_r \
+- dbg_log nscd_conf nscd_stat cache xmalloc
++ dbg_log nscd_conf nscd_stat cache xmalloc xstrdup
+
+ ifeq ($(have-thread-library),yes)
+
+@@ -53,6 +53,10 @@
+
+ include ../Rules
+
++CFLAGS-nscd_getpw_r.c = -fexceptions
++CFLAGS-nscd_getgr_r.c = -fexceptions
++CFLAGS-nscd_gethst_r.c = -fexceptions
++
+ # This makes sure -DNOT_IN_libc is passed for all these modules.
+ cpp-srcs-left := $(nscd-modules:=.c)
+ lib := nonlib
+--- glibc-2.3.2/nscd/cache.c 2001-07-07 15:21:07.000000000 -0400
++++ glibc-2.3.2/nscd/cache.c 2003-04-28 08:20:36.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (c) 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -17,7 +17,7 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <atomicity.h>
++#include <atomic.h>
+ #include <errno.h>
+ #include <error.h>
+ #include <limits.h>
+@@ -39,16 +39,19 @@
+
+ This function must be called with the read-lock held. */
+ struct hashentry *
+-cache_search (int type, void *key, size_t len, struct database *table,
++cache_search (request_type type, void *key, size_t len, struct database *table,
+ uid_t owner)
+ {
+ unsigned long int hash = __nis_hash (key, len) % table->module;
+ struct hashentry *work;
++ unsigned long int nsearched = 0;
+
+ work = table->array[hash];
+
+ while (work != NULL)
+ {
++ ++nsearched;
++
+ if (type == work->type && len == work->len
+ && memcmp (key, work->key, len) == 0 && work->owner == owner)
+ {
+@@ -58,13 +61,16 @@
+ else
+ ++table->poshit;
+
+- return work;
++ break;
+ }
+
+ work = work->next;
+ }
+
+- return NULL;
++ if (nsearched > table->maxnsearched)
++ table->maxnsearched = nsearched;
++
++ return work;
+ }
+
+ /* Add a new entry to the cache. The return value is zero if the function
+@@ -101,14 +107,20 @@
+ /* Put the new entry in the first position. */
+ do
+ newp->next = table->array[hash];
+- while (! compare_and_swap ((volatile long int *) &table->array[hash],
+- (long int) newp->next, (long int) newp));
++ while (atomic_compare_and_exchange_bool_acq (&table->array[hash], newp,
++ newp->next));
+
+ /* Update the statistics. */
+ if (data == (void *) -1)
+ ++table->negmiss;
+ else if (last)
+ ++table->posmiss;
++
++ /* Instead of slowing down the normal process for statistics
++ collection we accept living with some incorrect data. */
++ unsigned long int nentries = ++table->nentries;
++ if (nentries > table->maxnentries)
++ table->maxnentries = nentries;
+ }
+
+ /* Walk through the table and remove all entries which lifetime ended.
+@@ -165,10 +177,10 @@
+
+ /* We run through the table and find values which are not valid anymore.
+
+- Note that for the initial step, finding the entries to be removed,
+- we don't need to get any lock. It is at all timed assured that the
+- linked lists are set up correctly and that no second thread prunes
+- the cache. */
++ Note that for the initial step, finding the entries to be removed,
++ we don't need to get any lock. It is at all timed assured that the
++ linked lists are set up correctly and that no second thread prunes
++ the cache. */
+ do
+ {
+ struct hashentry *runp = table->array[--cnt];
+@@ -195,7 +207,11 @@
+
+ /* Now we have to get the write lock since we are about to modify
+ the table. */
+- pthread_rwlock_wrlock (&table->lock);
++ if (__builtin_expect (pthread_rwlock_trywrlock (&table->lock) != 0, 0))
++ {
++ ++table->wrlockdelayed;
++ pthread_rwlock_wrlock (&table->lock);
++ }
+
+ while (first <= last)
+ {
+@@ -208,6 +224,7 @@
+ table->array[first]->dellist = head;
+ head = table->array[first];
+ table->array[first] = head->next;
++ --table->nentries;
+ if (--mark[first] == 0)
+ break;
+ }
+@@ -221,6 +238,7 @@
+ head = runp->next;
+ runp->next = head->next;
+ --mark[first];
++ --table->nentries;
+ }
+ else
+ runp = runp->next;
+@@ -232,29 +250,35 @@
+ /* It's all done. */
+ pthread_rwlock_unlock (&table->lock);
+
+- /* And another run to free the data. */
+- do
++ /* One extra pass if we do debugging. */
++ if (__builtin_expect (debug_level > 0, 0))
+ {
+- struct hashentry *old = head;
++ struct hashentry *runp = head;
+
+- if (debug_level > 0)
++ while (runp != NULL)
+ {
+ char buf[INET6_ADDRSTRLEN];
+ const char *str;
+
+- if ((old->type == GETHOSTBYADDR || old->type == GETHOSTBYADDRv6)
+- && (old->last || old->data == (void *) -1))
++ if (runp->type == GETHOSTBYADDR || runp->type == GETHOSTBYADDRv6)
+ {
+- inet_ntop (old->type == GETHOSTBYADDR ? AF_INET : AF_INET6,
+- old->key, buf, sizeof (buf));
++ inet_ntop (runp->type == GETHOSTBYADDR ? AF_INET : AF_INET6,
++ runp->key, buf, sizeof (buf));
+ str = buf;
+ }
+ else
+- str = old->last ? old->key : (old->data == (void *) -1
+- ? old->key : "???");
++ str = runp->key;
+
+- dbg_log ("remove %s entry \"%s\"", serv2str[old->type], str);
++ dbg_log ("remove %s entry \"%s\"", serv2str[runp->type], str);
++
++ runp = runp->next;
+ }
++ }
++
++ /* And another run to free the data. */
++ do
++ {
++ struct hashentry *old = head;
+
+ /* Free the data structures. */
+ if (old->data == (void *) -1)
+--- glibc-2.3.2/nscd/connections.c 2003-01-16 02:52:01.000000000 -0500
++++ glibc-2.3.2/nscd/connections.c 2003-05-12 12:13:06.000000000 -0400
+@@ -19,6 +19,7 @@
+ 02111-1307 USA. */
+
+ #include <assert.h>
++#include <atomic.h>
+ #include <error.h>
+ #include <errno.h>
+ #include <grp.h>
+@@ -47,6 +48,8 @@
+ const char *server_user;
+ static uid_t server_uid;
+ static gid_t server_gid;
++const char *stat_user;
++uid_t stat_uid;
+ static gid_t *server_groups;
+ #ifndef NGROUPS
+ # define NGROUPS 32
+@@ -87,7 +90,7 @@
+ };
+
+ /* The control data structures for the services. */
+-static struct database dbs[lastdb] =
++struct database dbs[lastdb] =
+ {
+ [pwddb] = {
+ .lock = PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
+@@ -130,23 +133,17 @@
+ /* Socket for incoming connections. */
+ static int sock;
+
++/* Number of times clients had to wait. */
++unsigned long int client_queued;
++
+
+ /* Initialize database information structures. */
+ void
+-nscd_init (const char *conffile)
++nscd_init (void)
+ {
+ struct sockaddr_un sock_addr;
+ size_t cnt;
+
+- /* Read the configuration file. */
+- if (nscd_parse_file (conffile, dbs) != 0)
+- {
+- /* We couldn't read the configuration file. Disable all services
+- by shutting down the srever. */
+- dbg_log (_("cannot read configuration file; this is fatal"));
+- exit (1);
+- }
+-
+ /* Secure mode and unprivileged mode are incompatible */
+ if (server_user != NULL && secure_in_use)
+ {
+@@ -233,6 +230,7 @@
+ close (sock);
+ }
+
++
+ static void
+ invalidate_cache (char *key)
+ {
+@@ -256,10 +254,6 @@
+ static void
+ handle_request (int fd, request_header *req, void *key, uid_t uid)
+ {
+- if (__builtin_expect (debug_level, 0) > 0)
+- dbg_log (_("handle_request: request received (Version = %d)"),
+- req->version);
+-
+ if (__builtin_expect (req->version, NSCD_VERSION) != NSCD_VERSION)
+ {
+ if (debug_level > 0)
+@@ -296,7 +290,7 @@
+ /* No, sent the prepared record. */
+ if (TEMP_FAILURE_RETRY (write (fd, db->disabled_iov->iov_base,
+ db->disabled_iov->iov_len))
+- != db->disabled_iov->iov_len
++ != (ssize_t) db->disabled_iov->iov_len
+ && __builtin_expect (debug_level, 0) > 0)
+ {
+ /* We have problems sending the result. */
+@@ -309,7 +303,11 @@
+ }
+
+ /* Be sure we can read the data. */
+- pthread_rwlock_rdlock (&db->lock);
++ if (__builtin_expect (pthread_rwlock_tryrdlock (&db->lock) != 0, 0))
++ {
++ ++db->rdlockdelayed;
++ pthread_rwlock_rdlock (&db->lock);
++ }
+
+ /* See whether we can handle it from the cache. */
+ cached = (struct hashentry *) cache_search (req->type, key, req->key_len,
+@@ -380,20 +378,9 @@
+ case GETSTAT:
+ case SHUTDOWN:
+ case INVALIDATE:
+- /* Accept shutdown, getstat and invalidate only from root */
+- if (secure_in_use && uid == 0)
++ if (! secure_in_use)
+ {
+- if (req->type == GETSTAT)
+- send_stats (fd, dbs);
+- else if (req->type == INVALIDATE)
+- invalidate_cache (key);
+- else
+- termination_handler (0);
+- }
+- else
+- {
+- /* Some systems have no SO_PEERCRED implementation. They don't
+- care about security so we don't as well. */
++ /* Get the callers credentials. */
+ #ifdef SO_PEERCRED
+ struct ucred caller;
+ socklen_t optlen = sizeof (caller);
+@@ -404,18 +391,30 @@
+
+ dbg_log (_("error getting callers id: %s"),
+ strerror_r (errno, buf, sizeof (buf)));
++ break;
+ }
+- else
+- if (caller.uid == 0)
++
++ uid = caller.uid;
++#else
++ /* Some systems have no SO_PEERCRED implementation. They don't
++ care about security so we don't as well. */
++ uid = 0;
+ #endif
+- {
+- if (req->type == GETSTAT)
+- send_stats (fd, dbs);
+- else if (req->type == INVALIDATE)
+- invalidate_cache (key);
+- else
+- termination_handler (0);
+- }
++ }
++
++ /* Accept shutdown, getstat and invalidate only from root. For
++ the stat call also allow the user specified in the config file. */
++ if (req->type == GETSTAT)
++ {
++ if (uid == 0 || uid == stat_uid)
++ send_stats (fd, dbs);
++ }
++ else if (uid == 0)
++ {
++ if (req->type == INVALIDATE)
++ invalidate_cache (key);
++ else
++ termination_handler (0);
+ }
+ break;
+
+@@ -435,118 +434,163 @@
+ long int my_number = (long int) p;
+ struct pollfd conn;
+ int run_prune = my_number < lastdb && dbs[my_number].enabled;
+- time_t now = time (NULL);
+- time_t next_prune = now + CACHE_PRUNE_INTERVAL;
+- int timeout = run_prune ? 1000 * (next_prune - now) : -1;
++ time_t next_prune = run_prune ? time (NULL) + CACHE_PRUNE_INTERVAL : 0;
++ static unsigned long int nready;
+
+ conn.fd = sock;
+ conn.events = POLLRDNORM;
+
+ while (1)
+ {
+- int nr = poll (&conn, 1, timeout);
++ int nr;
++
++ /* One more thread available. */
++ atomic_increment (&nready);
++
++ no_conn:
++ if (run_prune)
++ do
++ {
++ time_t now = time (NULL);
++ int timeout = now < next_prune ? 1000 * (next_prune - now) : 0;
++
++ nr = poll (&conn, 1, timeout);
++
++ if (nr == 0)
++ {
++ /* The `poll' call timed out. It's time to clean up the
++ cache. */
++ atomic_decrement (&nready);
++ assert (my_number < lastdb);
++ prune_cache (&dbs[my_number], time(NULL));
++ now = time (NULL);
++ next_prune = now + CACHE_PRUNE_INTERVAL;
++ goto try_get;
++ }
++ }
++ while ((conn.revents & POLLRDNORM) == 0);
++
++ got_data:;
++ /* We have a new incoming connection. Accept the connection. */
++ int fd = TEMP_FAILURE_RETRY (accept (conn.fd, NULL, NULL));
++ request_header req;
++ char buf[256];
++ uid_t uid = -1;
++#ifdef SO_PEERCRED
++ pid_t pid = 0;
++#endif
+
+- if (nr == 0)
++ if (__builtin_expect (fd, 0) < 0)
+ {
+- /* The `poll' call timed out. It's time to clean up the cache. */
+- assert (my_number < lastdb);
+- now = time (NULL);
+- prune_cache (&dbs[my_number], now);
+- next_prune = now + CACHE_PRUNE_INTERVAL;
+- timeout = 1000 * (next_prune - now);
++ dbg_log (_("while accepting connection: %s"),
++ strerror_r (errno, buf, sizeof (buf)));
++ goto no_conn;
++ }
++
++ /* This thread is busy. */
++ atomic_decrement (&nready);
++
++ /* Now read the request. */
++ if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, &req, sizeof (req)))
++ != sizeof (req), 0))
++ {
++ if (debug_level > 0)
++ dbg_log (_("short read while reading request: %s"),
++ strerror_r (errno, buf, sizeof (buf)));
++ close (fd);
+ continue;
+ }
+
+- /* We have a new incoming connection. */
+- if (conn.revents & (POLLRDNORM|POLLERR|POLLHUP|POLLNVAL))
++ /* Some systems have no SO_PEERCRED implementation. They don't
++ care about security so we don't as well. */
++#ifdef SO_PEERCRED
++ if (secure_in_use)
+ {
+- /* Accept the connection. */
+- int fd = TEMP_FAILURE_RETRY (accept (conn.fd, NULL, NULL));
+- request_header req;
+- char buf[256];
+- uid_t uid = 0;
++ struct ucred caller;
++ socklen_t optlen = sizeof (caller);
+
+- if (__builtin_expect (fd, 0) < 0)
++ if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) < 0)
+ {
+- dbg_log (_("while accepting connection: %s"),
++ dbg_log (_("error getting callers id: %s"),
+ strerror_r (errno, buf, sizeof (buf)));
+- continue;
+- }
+-
+- /* Now read the request. */
+- if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, &req,
+- sizeof (req)))
+- != sizeof (req), 0))
+- {
+- if (debug_level > 0)
+- dbg_log (_("short read while reading request: %s"),
+- strerror_r (errno, buf, sizeof (buf)));
+ close (fd);
+ continue;
+ }
+
+- /* Some systems have no SO_PEERCRED implementation. They don't
+- care about security so we don't as well. */
+-#ifdef SO_PEERCRED
+- if (secure_in_use)
+- {
+- struct ucred caller;
+- socklen_t optlen = sizeof (caller);
++ if (req.type < GETPWBYNAME || req.type > LASTDBREQ
++ || secure[serv2db[req.type]])
++ uid = caller.uid;
+
+- if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED,
+- &caller, &optlen) < 0)
+- {
+- dbg_log (_("error getting callers id: %s"),
+- strerror_r (errno, buf, sizeof (buf)));
+- close (fd);
+- continue;
+- }
+-
+- if (req.type < GETPWBYNAME || req.type > LASTDBREQ
+- || secure[serv2db[req.type]])
+- uid = caller.uid;
+- }
++ pid = caller.pid;
++ }
++ else if (__builtin_expect (debug_level > 0, 0))
++ {
++ struct ucred caller;
++ socklen_t optlen = sizeof (caller);
++
++ if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen) == 0)
++ pid = caller.pid;
++ }
+ #endif
+
+- /* It should not be possible to crash the nscd with a silly
+- request (i.e., a terribly large key). We limit the size
+- to 1kb. */
+- if (__builtin_expect (req.key_len, 1) < 0
+- || __builtin_expect (req.key_len, 1) > 1024)
++ /* It should not be possible to crash the nscd with a silly
++ request (i.e., a terribly large key). We limit the size to 1kb. */
++ if (__builtin_expect (req.key_len, 1) < 0
++ || __builtin_expect (req.key_len, 1) > 1024)
++ {
++ if (debug_level > 0)
++ dbg_log (_("key length in request too long: %d"), req.key_len);
++ close (fd);
++ continue;
++ }
++ else
++ {
++ /* Get the key. */
++ char keybuf[req.key_len];
++
++ if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf,
++ req.key_len))
++ != req.key_len, 0))
+ {
+ if (debug_level > 0)
+- dbg_log (_("key length in request too long: %d"), req.key_len);
++ dbg_log (_("short read while reading request key: %s"),
++ strerror_r (errno, buf, sizeof (buf)));
+ close (fd);
+ continue;
+ }
+- else
+- {
+- /* Get the key. */
+- char keybuf[req.key_len];
+
+- if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf,
+- req.key_len))
+- != req.key_len, 0))
+- {
+- if (debug_level > 0)
+- dbg_log (_("short read while reading request key: %s"),
+- strerror_r (errno, buf, sizeof (buf)));
+- close (fd);
+- continue;
+- }
++ if (__builtin_expect (debug_level, 0) > 0)
++ {
++#ifdef SO_PEERCRED
++ if (pid != 0)
++ dbg_log (_("\
++handle_request: request received (Version = %d) from PID %ld"),
++ req.version, (long int) pid);
++ else
++#endif
++ dbg_log (_("\
++handle_request: request received (Version = %d)"), req.version);
++ }
+
+- /* Phew, we got all the data, now process it. */
+- handle_request (fd, &req, keybuf, uid);
++ /* Phew, we got all the data, now process it. */
++ handle_request (fd, &req, keybuf, uid);
+
+- /* We are done. */
+- close (fd);
+- }
++ /* We are done. */
++ close (fd);
+ }
+
+- if (run_prune)
++ /* Just determine whether any data is present. We do this to
++ measure whether clients are queued up. */
++ try_get:
++ nr = poll (&conn, 1, 0);
++ if (nr != 0)
+ {
+- now = time (NULL);
+- timeout = now < next_prune ? 1000 * (next_prune - now) : 0;
++ if (nready == 0)
++ ++client_queued;
++
++ atomic_increment (&nready);
++
++ goto got_data;
+ }
+ }
+ }
+--- glibc-2.3.2/nscd/grpcache.c 2003-01-15 05:27:22.000000000 -0500
++++ glibc-2.3.2/nscd/grpcache.c 2003-04-28 08:20:36.000000000 -0400
+@@ -152,6 +152,7 @@
+ /* There is no reason to go on. */
+ error (EXIT_FAILURE, errno, _("while allocating cache entry"));
+
++ data->resp.version = NSCD_VERSION;
+ data->resp.found = 1;
+ data->resp.gr_name_len = gr_name_len;
+ data->resp.gr_passwd_len = gr_passwd_len;
+--- glibc-2.3.2/nscd/hstcache.c 2003-01-15 05:29:40.000000000 -0500
++++ glibc-2.3.2/nscd/hstcache.c 2003-04-28 08:20:36.000000000 -0400
+@@ -167,6 +167,7 @@
+ /* There is no reason to go on. */
+ error (EXIT_FAILURE, errno, _("while allocating cache entry"));
+
++ data->resp.version = NSCD_VERSION;
+ data->resp.found = 1;
+ data->resp.h_name_len = h_name_len;
+ data->resp.h_aliases_cnt = h_aliases_cnt;
+--- glibc-2.3.2/nscd/nscd-client.h 2001-07-07 15:21:07.000000000 -0400
++++ glibc-2.3.2/nscd/nscd-client.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (c) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
+
+@@ -110,4 +110,7 @@
+ } hst_response_header;
+
+
++/* Open socket connection to nscd server. */
++extern int __nscd_open_socket (void) attribute_hidden;
++
+ #endif /* nscd.h */
+--- glibc-2.3.2/nscd/nscd.c 2003-01-15 14:32:47.000000000 -0500
++++ glibc-2.3.2/nscd/nscd.c 2003-05-12 12:13:06.000000000 -0400
+@@ -30,6 +30,7 @@
+ #include <paths.h>
+ #include <pthread.h>
+ #include <signal.h>
++#include <stdbool.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -41,6 +42,7 @@
+
+ #include "dbg_log.h"
+ #include "nscd.h"
++#include "../nss/nsswitch.h"
+ #include <device-nrs.h>
+
+ /* Get libc version number. */
+@@ -71,6 +73,8 @@
+ int secure_in_use;
+ static const char *conffile = _PATH_NSCDCONF;
+
++time_t start_time;
++
+ static int check_pid (const char *file);
+ static int write_pid (const char *file);
+
+@@ -106,6 +110,9 @@
+ options, parse_opt, NULL, doc,
+ };
+
++/* True if only statistics are requested. */
++static bool get_stats;
++
+ int
+ main (int argc, char **argv)
+ {
+@@ -126,10 +133,27 @@
+ exit (EXIT_FAILURE);
+ }
+
++ /* Read the configuration file. */
++ if (nscd_parse_file (conffile, dbs) != 0)
++ {
++ /* We couldn't read the configuration file. We don't start the
++ server. */
++ dbg_log (_("cannot read configuration file; this is fatal"));
++ exit (1);
++ }
++
++ /* Do we only get statistics? */
++ if (get_stats)
++ /* Does not return. */
++ receive_print_stats ();
++
+ /* Check if we are already running. */
+ if (check_pid (_PATH_NSCDPID))
+ error (EXIT_FAILURE, 0, _("already running"));
+
++ /* Remember when we started. */
++ start_time = time (NULL);
++
+ /* Behave like a daemon. */
+ if (go_background)
+ {
+@@ -175,7 +199,7 @@
+ while ((dirent = readdir64 (d)) != NULL)
+ {
+ char *endp;
+- unsigned long int fdn = strtoul (dirent->d_name, &endp, 10);
++ long int fdn = strtol (dirent->d_name, &endp, 10);
+
+ if (*endp == '\0' && fdn != dfdn && fdn >= min_close_fd)
+ close ((int) fdn);
+@@ -213,8 +237,11 @@
+ /* Cleanup files created by a previous `bind'. */
+ unlink (_PATH_NSCDSOCKET);
+
++ /* Make sure we do not get recursive calls. */
++ __nss_disable_nscd ();
++
+ /* Init databases. */
+- nscd_init (conffile);
++ nscd_init ();
+
+ /* Handle incoming requests */
+ start_threads ();
+@@ -259,10 +286,8 @@
+ }
+
+ case 'g':
+- if (getuid () != 0)
+- error (EXIT_FAILURE, 0, _("Only root is allowed to use this option!"));
+- receive_print_stats ();
+- /* Does not return. */
++ get_stats = true;
++ break;
+
+ case 'i':
+ if (getuid () != 0)
+--- glibc-2.3.2/nscd/nscd.conf 2000-04-30 00:25:38.000000000 -0400
++++ glibc-2.3.2/nscd/nscd.conf 2003-05-12 12:13:06.000000000 -0400
+@@ -10,6 +10,7 @@
+ # threads <#threads to use>
+ # server-user <user to run server as instead of root>
+ # server-user is ignored if nscd is started with -S parameters
++# stat-user <user who is allowed to request statistics>
+ #
+ # enable-cache <service> <yes|no>
+ # positive-time-to-live <service> <time in seconds>
+@@ -24,6 +25,7 @@
+ # logfile /var/log/nscd.log
+ # threads 6
+ # server-user nobody
++# stat-user somebody
+ debug-level 0
+
+ enable-cache passwd yes
+--- glibc-2.3.2/nscd/nscd.h 2001-07-07 15:21:07.000000000 -0400
++++ glibc-2.3.2/nscd/nscd.h 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (c) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (c) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
+
+@@ -77,11 +77,19 @@
+ unsigned long int posmiss;
+ unsigned long int negmiss;
+
++ unsigned long int nentries;
++ unsigned long int maxnentries;
++ unsigned long int maxnsearched;
++
++ unsigned long int rdlockdelayed;
++ unsigned long int wrlockdelayed;
++
+ struct hashentry **array;
+ };
+
+
+ /* Global variables. */
++extern struct database dbs[lastdb];
+ extern const char *dbnames[lastdb];
+ extern const char *serv2str[LASTREQ];
+
+@@ -92,13 +100,23 @@
+ /* Number of threads to run. */
+ extern int nthreads;
+
+-/* Tables for which we cache data with uid */
++/* Tables for which we cache data with uid. */
+ extern int secure[lastdb];
+-extern int secure_in_use; /* Is one of the above 1 ? */
++extern int secure_in_use; /* Is one of the above 1? */
+
+-/* User name to run server processes as */
++/* User name to run server processes as. */
+ extern const char *server_user;
+
++/* Name and UID of user who is allowed to request statistics. */
++extern const char *stat_user;
++extern uid_t stat_uid;
++
++/* Time the server was started. */
++extern time_t start_time;
++
++/* Number of times clients had to wait. */
++extern unsigned long int client_queued;
++
+ /* Prototypes for global functions. */
+
+ /* nscd.c */
+@@ -106,7 +124,7 @@
+ extern int nscd_open_socket (void);
+
+ /* connections.c */
+-extern void nscd_init (const char *conffile);
++extern void nscd_init (void);
+ extern void close_sockets (void);
+ extern void start_threads (void) __attribute__ ((__noreturn__));
+
+@@ -118,7 +136,7 @@
+ extern int receive_print_stats (void) __attribute__ ((__noreturn__));
+
+ /* cache.c */
+-extern struct hashentry *cache_search (int type, void *key, size_t len,
++extern struct hashentry *cache_search (request_type, void *key, size_t len,
+ struct database *table, uid_t owner);
+ extern void cache_add (int type, void *key, size_t len,
+ const void *packet, size_t iovtotal, void *data,
+--- glibc-2.3.2/nscd/nscd_conf.c 2001-07-07 15:21:07.000000000 -0400
++++ glibc-2.3.2/nscd/nscd_conf.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (c) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (c) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
+
+@@ -19,6 +19,7 @@
+
+ #include <ctype.h>
+ #include <malloc.h>
++#include <pwd.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -29,6 +30,10 @@
+ #include "dbg_log.h"
+ #include "nscd.h"
+
++/* Wrapper functions with error checking for standard functions. */
++extern char *xstrdup (const char *s);
++
++
+ /* Names of the databases. */
+ const char *dbnames[lastdb] =
+ {
+@@ -181,7 +186,20 @@
+ if (!arg1)
+ dbg_log (_("Must specify user name for server-user option"));
+ else
+- server_user = strdup (arg1);
++ server_user = xstrdup (arg1);
++ }
++ else if (strcmp (entry, "stat-user") == 0)
++ {
++ if (!arg1)
++ dbg_log (_("Must specify user name for stat-user option"));
++ else
++ {
++ stat_user = xstrdup (arg1);
++
++ struct passwd *pw = getpwnam (stat_user);
++ if (pw != NULL)
++ stat_uid = pw->pw_uid;
++ }
+ }
+ else
+ dbg_log (_("Unknown option: %s %s %s"), entry, arg1, arg2);
+--- glibc-2.3.2/nscd/nscd_getgr_r.c 2003-01-15 05:42:36.000000000 -0500
++++ glibc-2.3.2/nscd/nscd_getgr_r.c 2003-04-28 08:20:36.000000000 -0400
+@@ -60,44 +60,17 @@
+ }
+
+
+-/* Create a socket connected to a name. */
+-static int
+-open_socket (void)
+-{
+- struct sockaddr_un addr;
+- int sock;
+- int saved_errno = errno;
+-
+- sock = __socket (PF_UNIX, SOCK_STREAM, 0);
+- if (sock < 0)
+- {
+- __set_errno (saved_errno);
+- return -1;
+- }
+-
+- addr.sun_family = AF_UNIX;
+- strcpy (addr.sun_path, _PATH_NSCDSOCKET);
+- if (__connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
+- {
+- __close (sock);
+- __set_errno (saved_errno);
+- return -1;
+- }
+-
+- return sock;
+-}
+-
+-
+ static int
+ internal_function
+ nscd_getgr_r (const char *key, size_t keylen, request_type type,
+ struct group *resultbuf, char *buffer, size_t buflen)
+ {
+- int sock = open_socket ();
++ int sock = __nscd_open_socket ();
+ request_header req;
+ gr_response_header gr_resp;
+ ssize_t nbytes;
+ struct iovec vec[2];
++ int result = -1;
+
+ if (sock == -1)
+ {
+@@ -114,27 +87,20 @@
+ vec[1].iov_base = (void *) key;
+ vec[1].iov_len = keylen;
+
+- nbytes = (size_t) TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
+- if (nbytes != sizeof (request_header) + keylen)
+- {
+- __close (sock);
+- return -1;
+- }
++ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
++ if (nbytes != (ssize_t) (sizeof (request_header) + keylen))
++ goto out;
+
+ nbytes = TEMP_FAILURE_RETRY (__read (sock, &gr_resp,
+ sizeof (gr_response_header)));
+- if (nbytes != sizeof (gr_response_header))
+- {
+- __close (sock);
+- return -1;
+- }
++ if (nbytes != (ssize_t) sizeof (gr_response_header))
++ goto out;
+
+ if (gr_resp.found == -1)
+ {
+ /* The daemon does not cache this database. */
+- __close (sock);
+ __nss_not_use_nscd_group = 1;
+- return -1;
++ goto out;
+ }
+
+ if (gr_resp.found == 1)
+@@ -143,7 +109,7 @@
+ char *p = buffer;
+ size_t total_len;
+ uintptr_t align;
+- size_t cnt;
++ nscd_ssize_t cnt;
+
+ /* Now allocate the buffer the array for the group members. We must
+ align the pointer. */
+@@ -151,12 +117,12 @@
+ & (__alignof__ (char *) - 1));
+ total_len = align + (1 + gr_resp.gr_mem_cnt) * sizeof (char *)
+ + gr_resp.gr_name_len + gr_resp.gr_passwd_len;
+- if (buflen < total_len)
++ if (__builtin_expect (buflen < total_len, 0))
+ {
+ no_room:
+ __set_errno (ERANGE);
+- __close (sock);
+- return ERANGE;
++ result = ERANGE;
++ goto out;
+ }
+ buflen -= total_len;
+
+@@ -184,11 +150,9 @@
+ total_len += gr_resp.gr_name_len + gr_resp.gr_passwd_len;
+
+ /* Get this data. */
+- if ((size_t) TEMP_FAILURE_RETRY (__readv (sock, vec, 2)) != total_len)
+- {
+- __close (sock);
+- return -1;
+- }
++ size_t n = TEMP_FAILURE_RETRY (__readv (sock, vec, 2));
++ if (__builtin_expect (n != total_len, 0))
++ goto out;
+
+ /* Clear the terminating entry. */
+ resultbuf->gr_mem[gr_resp.gr_mem_cnt] = NULL;
+@@ -202,26 +166,28 @@
+ p += len[cnt];
+ }
+
+- if (total_len > buflen)
++ if (__builtin_expect (total_len > buflen, 0))
+ goto no_room;
+
+- if ((size_t) TEMP_FAILURE_RETRY (__read (sock, resultbuf->gr_mem[0],
+- total_len)) != total_len)
++ result = 0;
++ n = TEMP_FAILURE_RETRY (__read (sock, resultbuf->gr_mem[0],
++ total_len));
++ if (__builtin_expect (n != total_len, 0))
+ {
+- __close (sock);
+ /* The `errno' to some value != ERANGE. */
+ __set_errno (ENOENT);
+- return ENOENT;
++ result = ENOENT;
+ }
+-
+- __close (sock);
+- return 0;
+ }
+ else
+ {
+- __close (sock);
+ /* The `errno' to some value != ERANGE. */
+ __set_errno (ENOENT);
+- return ENOENT;
++ result = ENOENT;
+ }
++
++ out:
++ __close (sock);
++
++ return result;
+ }
+--- glibc-2.3.2/nscd/nscd_gethst_r.c 2003-01-15 05:40:44.000000000 -0500
++++ glibc-2.3.2/nscd/nscd_gethst_r.c 2003-04-28 08:20:36.000000000 -0400
+@@ -86,8 +86,8 @@
+
+
+ /* Create a socket connected to a name. */
+-static int
+-open_socket (void)
++int
++__nscd_open_socket (void)
+ {
+ struct sockaddr_un addr;
+ int sock;
+@@ -119,11 +119,12 @@
+ struct hostent *resultbuf, char *buffer, size_t buflen,
+ int *h_errnop)
+ {
+- int sock = open_socket ();
++ int sock = __nscd_open_socket ();
+ hst_response_header hst_resp;
+ request_header req;
+ ssize_t nbytes;
+ struct iovec vec[4];
++ int result = -1;
+
+ if (sock == -1)
+ {
+@@ -142,25 +143,18 @@
+
+ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
+ if ((size_t) nbytes != sizeof (request_header) + req.key_len)
+- {
+- __close (sock);
+- return -1;
+- }
++ goto out;
+
+ nbytes = TEMP_FAILURE_RETRY (__read (sock, &hst_resp,
+ sizeof (hst_response_header)));
+- if (nbytes != sizeof (hst_response_header))
+- {
+- __close (sock);
+- return -1;
+- }
++ if (__builtin_expect (nbytes != sizeof (hst_response_header), 0))
++ goto out;
+
+ if (hst_resp.found == -1)
+ {
+ /* The daemon does not cache this database. */
+- __close (sock);
+ __nss_not_use_nscd_hosts = 1;
+- return -1;
++ goto out;
+ }
+
+ if (hst_resp.found == 1)
+@@ -190,8 +184,8 @@
+ {
+ no_room:
+ __set_errno (ERANGE);
+- __close (sock);
+- return ERANGE;
++ result = ERANGE;
++ goto out;
+ }
+ cp += align1;
+
+@@ -264,10 +258,7 @@
+ resultbuf->h_addr_list[cnt] = NULL;
+
+ if ((size_t) TEMP_FAILURE_RETRY (__readv (sock, vec, n)) != total_len)
+- {
+- __close (sock);
+- return -1;
+- }
++ goto out;
+
+ /* Now we also can read the aliases. */
+ total_len = 0;
+@@ -285,23 +276,21 @@
+
+ /* And finally read the aliases. */
+ if ((size_t) TEMP_FAILURE_RETRY (__read (sock, resultbuf->h_aliases[0],
+- total_len)) != total_len)
+- {
+- __close (sock);
+- return -1;
+- }
+-
+- __close (sock);
+- return 0;
++ total_len)) == total_len)
++ result = 0;
+ }
+ else
+ {
+ /* Store the error number. */
+ *h_errnop = hst_resp.error;
+
+- __close (sock);
+ /* The `errno' to some value != ERANGE. */
+ __set_errno (ENOENT);
+- return ENOENT;
++ result = ENOENT;
+ }
++
++ out:
++ __close (sock);
++
++ return result;
+ }
+--- glibc-2.3.2/nscd/nscd_getpw_r.c 2003-01-15 05:44:16.000000000 -0500
++++ glibc-2.3.2/nscd/nscd_getpw_r.c 2003-04-28 08:20:36.000000000 -0400
+@@ -60,43 +60,18 @@
+ return nscd_getpw_r (buf, n, GETPWBYUID, resultbuf, buffer, buflen);
+ }
+
+-/* Create a socket connected to a name. */
+-static int
+-open_socket (void)
+-{
+- struct sockaddr_un addr;
+- int sock;
+- int saved_errno = errno;
+-
+- sock = __socket (PF_UNIX, SOCK_STREAM, 0);
+- if (sock < 0)
+- {
+- __set_errno (saved_errno);
+- return -1;
+- }
+-
+- addr.sun_family = AF_UNIX;
+- strcpy (addr.sun_path, _PATH_NSCDSOCKET);
+- if (__connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
+- {
+- __close (sock);
+- __set_errno (saved_errno);
+- return -1;
+- }
+-
+- return sock;
+-}
+
+ static int
+ internal_function
+ nscd_getpw_r (const char *key, size_t keylen, request_type type,
+ struct passwd *resultbuf, char *buffer, size_t buflen)
+ {
+- int sock = open_socket ();
++ int sock = __nscd_open_socket ();
+ request_header req;
+ pw_response_header pw_resp;
+ ssize_t nbytes;
+ struct iovec vec[2];
++ int result = -1;
+
+ if (sock == -1)
+ {
+@@ -113,27 +88,20 @@
+ vec[1].iov_base = (void *) key;
+ vec[1].iov_len = keylen;
+
+- nbytes = (size_t) TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
+- if (nbytes != sizeof (request_header) + keylen)
+- {
+- __close (sock);
+- return -1;
+- }
++ nbytes = TEMP_FAILURE_RETRY (__writev (sock, vec, 2));
++ if (nbytes != (ssize_t) (sizeof (request_header) + keylen))
++ goto out;
+
+ nbytes = TEMP_FAILURE_RETRY (__read (sock, &pw_resp,
+ sizeof (pw_response_header)));
+- if (nbytes != sizeof (pw_response_header))
+- {
+- __close (sock);
+- return -1;
+- }
++ if (nbytes != (ssize_t) sizeof (pw_response_header))
++ goto out;
+
+- if (pw_resp.found == -1)
++ if (__builtin_expect (pw_resp.found == -1, 0))
+ {
+ /* The daemon does not cache this database. */
+- __close (sock);
+ __nss_not_use_nscd_passwd = 1;
+- return -1;
++ goto out;
+ }
+
+ if (pw_resp.found == 1)
+@@ -143,11 +111,11 @@
+ + pw_resp.pw_gecos_len + pw_resp.pw_dir_len
+ + pw_resp.pw_shell_len);
+
+- if (buflen < total)
++ if (__builtin_expect (buflen < total, 0))
+ {
+ __set_errno (ERANGE);
+- __close (sock);
+- return ERANGE;
++ result = ERANGE;
++ goto out;
+ }
+
+ /* Set the information we already have. */
+@@ -171,15 +139,18 @@
+
+ nbytes = TEMP_FAILURE_RETRY (__read (sock, buffer, total));
+
+- __close (sock);
+-
+- return nbytes == total ? 0 : -1;
++ if (nbytes == (ssize_t) total)
++ result = 0;
+ }
+ else
+ {
+- __close (sock);
+ /* The `errno' to some value != ERANGE. */
+ __set_errno (ENOENT);
+- return ENOENT;
++ result = ENOENT;
+ }
++
++ out:
++ __close (sock);
++
++ return result;
+ }
+--- glibc-2.3.2/nscd/nscd_stat.c 2001-07-07 15:21:07.000000000 -0400
++++ glibc-2.3.2/nscd/nscd_stat.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (c) 1998 Free Software Foundation, Inc.
++/* Copyright (c) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
+
+@@ -46,6 +46,13 @@
+ unsigned long int neghit;
+ unsigned long int posmiss;
+ unsigned long int negmiss;
++
++ unsigned long int nentries;
++ unsigned long int maxnentries;
++ unsigned long int maxnsearched;
++
++ unsigned long int rdlockdelayed;
++ unsigned long int wrlockdelayed;
+ };
+
+ /* Record for transmitting statistics. */
+@@ -53,6 +60,8 @@
+ {
+ char version[sizeof (compilation)];
+ int debug_level;
++ time_t runtime;
++ unsigned long int client_queued;
+ int ndbs;
+ struct dbstat dbs[lastdb];
+ };
+@@ -66,6 +75,8 @@
+
+ memcpy (data.version, compilation, sizeof (compilation));
+ data.debug_level = debug_level;
++ data.runtime = time (NULL) - start_time;
++ data.client_queued = client_queued;
+ data.ndbs = lastdb;
+
+ for (cnt = 0; cnt < lastdb; ++cnt)
+@@ -79,6 +90,11 @@
+ data.dbs[cnt].neghit = dbs[cnt].neghit;
+ data.dbs[cnt].posmiss = dbs[cnt].posmiss;
+ data.dbs[cnt].negmiss = dbs[cnt].negmiss;
++ data.dbs[cnt].nentries = dbs[cnt].nentries;
++ data.dbs[cnt].maxnentries = dbs[cnt].maxnentries;
++ data.dbs[cnt].maxnsearched = dbs[cnt].maxnsearched;
++ data.dbs[cnt].rdlockdelayed = dbs[cnt].rdlockdelayed;
++ data.dbs[cnt].wrlockdelayed = dbs[cnt].wrlockdelayed;
+ }
+
+ if (TEMP_FAILURE_RETRY (write (fd, &data, sizeof (data))) != sizeof (data))
+@@ -98,6 +114,24 @@
+ ssize_t nbytes;
+ int fd;
+ int i;
++ uid_t uid = getuid ();
++
++ /* Find out whether there is another user but root allowed to
++ request statistics. */
++ if (uid != 0)
++ {
++ /* User specified? */
++ if(stat_user == NULL || stat_uid != uid)
++ {
++ if (stat_user != NULL)
++ error (EXIT_FAILURE, 0,
++ _("Only root or %s is allowed to use this option!"),
++ stat_user);
++ else
++ error (EXIT_FAILURE, 0,
++ _("Only root is allowed to use this option!"));
++ }
++ }
+
+ /* Open a socket to the running nscd. */
+ fd = nscd_open_socket ();
+@@ -120,7 +154,7 @@
+ if (TEMP_FAILURE_RETRY (read (fd, &data, sizeof (data))) != sizeof (data)
+ || (memcmp (data.version, compilation, sizeof (compilation)) != 0
+ /* Yes, this is an assignment! */
+- && errno == EINVAL))
++ && (errno = EINVAL)))
+ {
+ /* Not the right version. */
+ int err = errno;
+@@ -131,6 +165,39 @@
+ printf (_("nscd configuration:\n\n%15d server debug level\n"),
+ data.debug_level);
+
++ /* We know that we can simply subtract time_t values. */
++ unsigned long int diff = data.runtime;
++ unsigned int ndays = 0;
++ unsigned int nhours = 0;
++ unsigned int nmins = 0;
++ if (diff > 24 * 60 * 60)
++ {
++ ndays = diff / (24 * 60 * 60);
++ diff %= 24 * 60 * 60;
++ }
++ if (diff > 60 * 60)
++ {
++ nhours = diff / (60 * 60);
++ diff %= 60 * 60;
++ }
++ if (diff > 60)
++ {
++ nmins = diff / 60;
++ diff %= 60;
++ }
++ if (ndays != 0)
++ printf (_("%3ud %2uh %2um %2lus server runtime\n"),
++ ndays, nhours, nmins, diff);
++ else if (nhours != 0)
++ printf (_(" %2uh %2um %2lus server runtime\n"), nhours, nmins, diff);
++ else if (nmins != 0)
++ printf (_(" %2um %2lus server runtime\n"), nmins, diff);
++ else
++ printf (_(" %2lus server runtime\n"), diff);
++
++ printf (_("%15lu number of times clients had to wait\n"),
++ data.client_queued);
++
+ for (i = 0; i < lastdb; ++i)
+ {
+ unsigned long int hit = data.dbs[i].poshit + data.dbs[i].neghit;
+@@ -153,14 +220,19 @@
+
+ printf (_("\n%s cache:\n\n"
+ "%15s cache is enabled\n"
+- "%15Zd suggested size\n"
+- "%15ld seconds time to live for positive entries\n"
+- "%15ld seconds time to live for negative entries\n"
+- "%15ld cache hits on positive entries\n"
+- "%15ld cache hits on negative entries\n"
+- "%15ld cache misses on positive entries\n"
+- "%15ld cache misses on negative entries\n"
+- "%15ld%% cache hit rate\n"
++ "%15Zu suggested size\n"
++ "%15lu seconds time to live for positive entries\n"
++ "%15lu seconds time to live for negative entries\n"
++ "%15lu cache hits on positive entries\n"
++ "%15lu cache hits on negative entries\n"
++ "%15lu cache misses on positive entries\n"
++ "%15lu cache misses on negative entries\n"
++ "%15lu%% cache hit rate\n"
++ "%15lu current number of cached values\n"
++ "%15lu maximum number of cached values\n"
++ "%15lu maximum chain length searched\n"
++ "%15lu number of delays on rdlock\n"
++ "%15lu number of delays on wrlock\n"
+ "%15s check /etc/%s for changes\n"),
+ dbnames[i], enabled,
+ data.dbs[i].module,
+@@ -168,7 +240,10 @@
+ data.dbs[i].poshit, data.dbs[i].neghit,
+ data.dbs[i].posmiss, data.dbs[i].negmiss,
+ (100 * hit) / all,
+- check_file, dbnames[i]);
++ data.dbs[i].nentries, data.dbs[i].maxnentries,
++ data.dbs[i].maxnsearched,
++ data.dbs[i].rdlockdelayed,
++ data.dbs[i].wrlockdelayed, check_file, dbnames[i]);
+ }
+
+ close (fd);
+--- glibc-2.3.2/nscd/pwdcache.c 2003-01-15 05:28:00.000000000 -0500
++++ glibc-2.3.2/nscd/pwdcache.c 2003-04-28 08:20:36.000000000 -0400
+@@ -145,6 +145,7 @@
+ /* There is no reason to go on. */
+ error (EXIT_FAILURE, errno, _("while allocating cache entry"));
+
++ data->resp.version = NSCD_VERSION;
+ data->resp.found = 1;
+ data->resp.pw_name_len = pw_name_len;
+ data->resp.pw_passwd_len = pw_passwd_len;
+--- glibc-2.3.2/nss/Versions 2002-02-01 16:16:41.000000000 -0500
++++ glibc-2.3.2/nss/Versions 2003-08-21 08:37:07.000000000 -0400
+@@ -9,6 +9,7 @@
+ }
+ GLIBC_PRIVATE {
+ _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
++ __nss_disable_nscd; __nss_lookup_function;
+ }
+ }
+
+--- glibc-2.3.2/nss/db-Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/db-Makefile 2002-11-16 08:56:02.000000000 -0500
+@@ -0,0 +1,139 @@
++# Makefile to (re-)generate db versions of system database files.
++# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
++#
++
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, write to the Free
++# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++# 02111-1307 USA.
++
++DATABASES = $(wildcard /etc/passwd /etc/group /etc/ethers /etc/protocols \
++ /etc/rpc /etc/services /etc/shadow /etc/netgroup)
++
++VAR_DB = /var/db
++
++AWK = awk
++MAKEDB = makedb --quiet
++
++all: $(patsubst %,$(VAR_DB)/%.db,$(notdir $(DATABASES)))
++
++
++$(VAR_DB)/passwd.db: /etc/passwd
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s ", $$1; print; \
++ printf "=%s ", $$3; print }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
++
++$(VAR_DB)/group.db: /etc/group
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s ", $$1; print; \
++ printf "=%s ", $$3; print }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
++
++$(VAR_DB)/ethers.db: /etc/ethers
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s ", $$1; print; \
++ printf "=%s ", $$2; print }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
++
++$(VAR_DB)/protocols.db: /etc/protocols
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s ", $$1; print; \
++ printf "=%s ", $$2; print; \
++ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
++ { printf ".%s ", $$i; print } }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
++
++$(VAR_DB)/rpc.db: /etc/rpc
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s ", $$1; print; \
++ printf "=%s ", $$2; print; \
++ for (i = 3; i <= NF && !($$i ~ /^#/); ++i) \
++ { printf ".%s ", $$i; print } }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
++
++$(VAR_DB)/services.db: /etc/services
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { FS="[ \t/]+"; cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s/%s ", $$1, $$3; print; \
++ printf ".%s/ ", $$1; print; \
++ printf "=%s/%s ", $$2, $$3; print; \
++ printf "=%s/ ", $$2; print; \
++ for (i = 4; i <= NF && !($$i ~ /^#/); ++i) \
++ { printf ".%s/%s ", $$i, $$3; print; \
++ printf ".%s/ ", $$i; print } }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
++
++$(VAR_DB)/shadow.db: /etc/shadow
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { FS=":"; OFS=":"; cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { printf ".%s ", $$1; print }' $^ | \
++ (umask 077 && $(MAKEDB) -o $@ -)
++ @echo "done."
++ @if chgrp shadow $@ 2>/dev/null; then \
++ chmod g+r $@; \
++ else \
++ chown 0 $@; chgrp 0 $@; chmod 600 $@; \
++ echo; \
++ echo "Warning: The shadow password database $@"; \
++ echo "has been set to be readable only by root. You may want"; \
++ echo "to make it readable by the \`shadow' group depending"; \
++ echo "on your configuration."; \
++ echo; \
++ fi
++
++$(VAR_DB)/netgroup.db: /etc/netgroup
++ @echo -n "$(patsubst %.db,%,$(@F))... "
++ @$(AWK) 'BEGIN { cnt=0 } \
++ /^[ \t]*$$/ { next } \
++ /^[ \t]*#/ { next } \
++ { printf "0%u ", cnt++; print } \
++ /^[^#]/ { end=sub(/\\/, " "); \
++ gsub(/[ \t]+/, " "); \
++ if(end == 1) printf "%s", $$0; else print }' $^ | \
++ $(MAKEDB) -o $@ -
++ @echo "done."
+--- glibc-2.3.2/nss/getXXbyYY.c 2002-11-01 21:15:52.000000000 -0500
++++ glibc-2.3.2/nss/getXXbyYY.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -95,7 +95,6 @@
+ static size_t buffer_size;
+ static LOOKUP_TYPE resbuf;
+ LOOKUP_TYPE *result;
+- int save;
+ #ifdef NEED_H_ERRNO
+ int h_errno_tmp = 0;
+ #endif
+@@ -106,7 +105,7 @@
+ if (buffer == NULL)
+ {
+ buffer_size = BUFLEN;
+- buffer = malloc (buffer_size);
++ buffer = (char *) malloc (buffer_size);
+ }
+
+ #ifdef HANDLE_DIGITS_DOTS
+@@ -132,14 +131,13 @@
+ {
+ char *new_buf;
+ buffer_size += BUFLEN;
+- new_buf = realloc (buffer, buffer_size);
++ new_buf = (char *) realloc (buffer, buffer_size);
+ if (new_buf == NULL)
+ {
+ /* We are out of memory. Free the current buffer so that the
+ process gets a chance for a normal termination. */
+- save = errno;
+ free (buffer);
+- __set_errno (save);
++ __set_errno (ENOMEM);
+ }
+ buffer = new_buf;
+ }
+@@ -150,10 +148,8 @@
+ #ifdef HANDLE_DIGITS_DOTS
+ done:
+ #endif
+- /* Release lock. Preserve error value. */
+- save = errno;
++ /* Release lock. */
+ __libc_lock_unlock (lock);
+- __set_errno (save);
+
+ #ifdef NEED_H_ERRNO
+ if (h_errno_tmp != 0)
+@@ -162,3 +158,5 @@
+
+ return result;
+ }
++
++static_link_warning (FUNCTION_NAME)
+--- glibc-2.3.2/nss/getXXbyYY_r.c 2003-02-17 22:59:12.000000000 -0500
++++ glibc-2.3.2/nss/getXXbyYY_r.c 2003-09-19 22:37:05.000000000 -0400
+@@ -163,7 +163,7 @@
+ #endif
+
+ #ifdef USE_NSCD
+- if (NOT_USENSCD_NAME && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY)
++ if (NOT_USENSCD_NAME > 0 && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY)
+ NOT_USENSCD_NAME = 0;
+
+ if (!NOT_USENSCD_NAME)
+@@ -247,12 +247,23 @@
+ #ifdef POSTPROCESS
+ POSTPROCESS;
+ #endif
+- return (status != NSS_STATUS_TRYAGAIN ? 0
++
++ int res;
++ if (status == NSS_STATUS_SUCCESS)
++ res = 0;
++ /* Don't pass back ERANGE if this is not for a too-small buffer. */
++ else if (errno == ERANGE && status != NSS_STATUS_TRYAGAIN)
++ res = EINVAL;
+ #ifdef NEED_H_ERRNO
+- /* These functions only set errno if h_errno is NETDB_INTERNAL. */
+- : *h_errnop != NETDB_INTERNAL ? EAGAIN
++ /* These functions only set errno if h_errno is NETDB_INTERNAL. */
++ else if (status == NSS_STATUS_TRYAGAIN && *h_errnop != NETDB_INTERNAL)
++ res = EAGAIN;
+ #endif
+- : errno);
++ else
++ return errno;
++
++ __set_errno (res);
++ return res;
+ }
+
+
+@@ -288,3 +299,5 @@
+ versioned_symbol (libc, real, name, version)
+ do_default_symbol_version (NEW (REENTRANT_NAME),
+ REENTRANT_NAME, GLIBC_2_1_2);
++
++static_link_warning (REENTRANT_NAME)
+--- glibc-2.3.2/nss/getXXent.c 2002-11-11 20:55:18.000000000 -0500
++++ glibc-2.3.2/nss/getXXent.c 2003-08-21 08:37:07.000000000 -0400
+@@ -91,3 +91,5 @@
+ __set_errno (save);
+ return result;
+ }
++
++static_link_warning (GETFUNC_NAME)
+--- glibc-2.3.2/nss/getXXent_r.c 2002-11-04 05:15:12.000000000 -0500
++++ glibc-2.3.2/nss/getXXent_r.c 2003-08-21 08:37:07.000000000 -0400
+@@ -201,3 +201,7 @@
+ versioned_symbol (libc, real, name, version)
+ do_default_symbol_version (NEW (REENTRANT_GETNAME),
+ REENTRANT_GETNAME, GLIBC_2_1_2);
++
++static_link_warning (SETFUNC_NAME)
++static_link_warning (ENDFUNC_NAME)
++static_link_warning (REENTRANT_GETNAME)
+--- glibc-2.3.2/nss/getent.c 2003-02-16 14:38:13.000000000 -0500
++++ glibc-2.3.2/nss/getent.c 2003-08-21 08:37:07.000000000 -0400
+@@ -229,7 +229,7 @@
+ }
+
+ /* This is for hosts */
+-static inline void
++static void
+ print_hosts (struct hostent *host)
+ {
+ unsigned int cnt;
+@@ -296,6 +296,73 @@
+ return result;
+ }
+
++/* This is for hosts, but using getaddrinfo */
++static int
++ahosts_keys (int number, char *key[])
++{
++ int result = 0;
++ int i;
++ struct hostent *host;
++
++ if (number == 0)
++ {
++ sethostent (0);
++ while ((host = gethostent ()) != NULL)
++ print_hosts (host);
++ endhostent ();
++ return result;
++ }
++
++ struct addrinfo hint;
++ memset (&hint, '\0', sizeof (hint));
++ hint.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG | AI_CANONNAME;
++ hint.ai_family = AF_UNSPEC;
++
++ for (i = 0; i < number; ++i)
++ {
++ struct addrinfo *res;
++
++ if (getaddrinfo (key[i], NULL, &hint, &res) != 0)
++ result = 2;
++ else
++ {
++ struct addrinfo *runp = res;
++
++ while (runp != NULL)
++ {
++ char sockbuf[20];
++ const char *sockstr;
++ if (runp->ai_socktype == SOCK_STREAM)
++ sockstr = "STREAM";
++ else if (runp->ai_socktype == SOCK_DGRAM)
++ sockstr = "DGRAM";
++ else if (runp->ai_socktype == SOCK_RAW)
++ sockstr = "RAW";
++ else
++ {
++ snprintf (sockbuf, sizeof (sockbuf), "%d",
++ runp->ai_socktype);
++ sockstr = sockbuf;
++ }
++
++ char buf[INET6_ADDRSTRLEN];
++ printf ("%-15s %-6s %s\n",
++ inet_ntop (runp->ai_family,
++ &((struct sockaddr_in *) runp->ai_addr)->sin_addr,
++ buf, sizeof (buf)),
++ sockstr,
++ runp->ai_canonname);
++
++ runp = runp->ai_next;
++ }
++
++ freeaddrinfo (res);
++ }
++ }
++
++ return result;
++}
++
+ /* This is for netgroup */
+ static int
+ netgroup_keys (int number, char *key[])
+@@ -329,7 +396,7 @@
+ }
+
+ /* This is for networks */
+-static inline void
++static void
+ print_networks (struct netent *net)
+ {
+ unsigned int i;
+@@ -624,7 +691,7 @@
+ }
+
+ /* This is for shadow */
+-static inline void
++static void
+ print_shadow (struct spwd *sp)
+ {
+ printf ("%s:%s:",
+@@ -688,6 +755,7 @@
+ } databases[] =
+ {
+ #define D(name) { #name, name ## _keys },
++D(ahosts)
+ D(aliases)
+ D(ethers)
+ D(group)
+@@ -723,7 +791,7 @@
+ }
+
+ /* build doc */
+-static inline void
++static void
+ build_doc (void)
+ {
+ int i, j, len;
+--- glibc-2.3.2/nss/makedb.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/makedb.c 2002-11-16 08:56:02.000000000 -0500
+@@ -0,0 +1,389 @@
++/* Create simple DB database from textual input.
++ Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <argp.h>
++#include <ctype.h>
++#include <dlfcn.h>
++#include <errno.h>
++#include <error.h>
++#include <fcntl.h>
++#include <libintl.h>
++#include <locale.h>
++#include <stdio.h>
++#include <stdint.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/stat.h>
++#include "nss_db/dummy-db.h"
++
++/* Get libc version number. */
++#include "../version.h"
++
++#define PACKAGE _libc_intl_domainname
++
++/* If non-zero convert key to lower case. */
++static int to_lowercase;
++
++/* If non-zero print content of input file, one entry per line. */
++static int do_undo;
++
++/* If non-zero do not print informational messages. */
++static int be_quiet;
++
++/* Name of output file. */
++static const char *output_name;
++
++/* Name and version of program. */
++static void print_version (FILE *stream, struct argp_state *state);
++void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
++
++/* Definitions of arguments for argp functions. */
++static const struct argp_option options[] =
++{
++ { "fold-case", 'f', NULL, 0, N_("Convert key to lower case") },
++ { "output", 'o', N_("NAME"), 0, N_("Write output to file NAME") },
++ { "quiet", 'q', NULL, 0,
++ N_("Do not print messages while building database") },
++ { "undo", 'u', NULL, 0,
++ N_("Print content of database file, one entry a line") },
++ { NULL, 0, NULL, 0, NULL }
++};
++
++/* Short description of program. */
++static const char doc[] = N_("Create simple DB database from textual input.");
++
++/* Strings for arguments in help texts. */
++static const char args_doc[] = N_("\
++INPUT-FILE OUTPUT-FILE\n-o OUTPUT-FILE INPUT-FILE\n-u INPUT-FILE");
++
++/* Prototype for option handler. */
++static error_t parse_opt (int key, char *arg, struct argp_state *state);
++
++/* Function to print some extra text in the help message. */
++static char *more_help (int key, const char *text, void *input);
++
++/* Data structure to communicate with argp functions. */
++static struct argp argp =
++{
++ options, parse_opt, args_doc, doc, NULL, more_help
++};
++
++
++/* Prototypes for local functions. */
++static int process_input (FILE *input, const char *inname, NSS_DB *output,
++ int to_lowercase, int be_quiet);
++static int print_database (NSS_DB *db);
++
++
++int
++main (int argc, char *argv[])
++{
++ const char *input_name;
++ FILE *input_file;
++ NSS_DB *db_file;
++ int status;
++ int remaining;
++ int mode = 0666;
++
++ /* Set locale via LC_ALL. */
++ setlocale (LC_ALL, "");
++
++ /* Set the text message domain. */
++ textdomain (_libc_intl_domainname);
++
++ /* Initialize local variables. */
++ input_name = NULL;
++
++ /* Parse and process arguments. */
++ argp_parse (&argp, argc, argv, 0, &remaining, NULL);
++
++ /* Determine file names. */
++ if (do_undo || output_name != NULL)
++ {
++ if (remaining + 1 != argc)
++ {
++ wrong_arguments:
++ error (0, 0, gettext ("wrong number of arguments"));
++ argp_help (&argp, stdout, ARGP_HELP_SEE,
++ program_invocation_short_name);
++ exit (1);
++ }
++ input_name = argv[remaining];
++ }
++ else
++ {
++ if (remaining + 2 != argc)
++ goto wrong_arguments;
++
++ input_name = argv[remaining++];
++ output_name = argv[remaining];
++ }
++
++ /* First load the shared object to initialize version dependend
++ variables. */
++ if (load_db () != NSS_STATUS_SUCCESS)
++ error (EXIT_FAILURE, 0, gettext ("No usable database library found."));
++
++ /* Special handling if we are asked to print the database. */
++ if (do_undo)
++ {
++ dbopen (input_name, db_rdonly, 0666, &db_file);
++ if (db_file == NULL)
++ error (EXIT_FAILURE, 0, gettext ("cannot open database file `%s': %s"),
++ input_name,
++ (errno == EINVAL ? gettext ("incorrectly formatted file")
++ : strerror (errno)));
++
++ status = print_database (db_file);
++
++ db_file->close (db_file->db, 0);
++
++ return status;
++ }
++
++ /* Open input file. */
++ if (strcmp (input_name, "-") == 0 || strcmp (input_name, "/dev/stdin") == 0)
++ input_file = stdin;
++ else
++ {
++ struct stat st;
++
++ input_file = fopen (input_name, "r");
++ if (input_file == NULL)
++ error (EXIT_FAILURE, errno, gettext ("cannot open input file `%s'"),
++ input_name);
++
++ /* Get the access rights from the source file. The output file should
++ have the same. */
++ if (fstat (fileno (input_file), &st) >= 0)
++ mode = st.st_mode & ACCESSPERMS;
++ }
++
++ /* Open output file. This must not be standard output so we don't
++ handle "-" and "/dev/stdout" special. */
++ dbopen (output_name, DB_CREATE | db_truncate, mode, &db_file);
++ if (db_file == NULL)
++ error (EXIT_FAILURE, errno, gettext ("cannot open output file `%s'"),
++ output_name);
++
++ /* Start the real work. */
++ status = process_input (input_file, input_name, db_file, to_lowercase,
++ be_quiet);
++
++ /* Close files. */
++ if (input_file != stdin)
++ fclose (input_file);
++ db_file->close (db_file->db, 0);
++
++ return status;
++}
++
++
++/* Handle program arguments. */
++static error_t
++parse_opt (int key, char *arg, struct argp_state *state)
++{
++ switch (key)
++ {
++ case 'f':
++ to_lowercase = 1;
++ break;
++ case 'o':
++ output_name = arg;
++ break;
++ case 'q':
++ be_quiet = 1;
++ break;
++ case 'u':
++ do_undo = 1;
++ break;
++ default:
++ return ARGP_ERR_UNKNOWN;
++ }
++ return 0;
++}
++
++
++static char *
++more_help (int key, const char *text, void *input)
++{
++ switch (key)
++ {
++ case ARGP_KEY_HELP_EXTRA:
++ /* We print some extra information. */
++ return strdup (gettext ("\
++Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
++ default:
++ break;
++ }
++ return (char *) text;
++}
++
++/* Print the version information. */
++static void
++print_version (FILE *stream, struct argp_state *state)
++{
++ fprintf (stream, "makedb (GNU %s) %s\n", PACKAGE, VERSION);
++ fprintf (stream, gettext ("\
++Copyright (C) %s Free Software Foundation, Inc.\n\
++This is free software; see the source for copying conditions. There is NO\n\
++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
++"), "2000");
++ fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper");
++}
++
++
++static int
++process_input (input, inname, output, to_lowercase, be_quiet)
++ FILE *input;
++ const char *inname;
++ NSS_DB *output;
++ int to_lowercase;
++ int be_quiet;
++{
++ char *line;
++ size_t linelen;
++ int status;
++ size_t linenr;
++
++ line = NULL;
++ linelen = 0;
++ status = EXIT_SUCCESS;
++ linenr = 0;
++
++ while (!feof (input))
++ {
++ DBT key;
++ DBT val;
++ char *cp;
++ int n;
++
++ n = getline (&line, &linelen, input);
++ if (n < 0)
++ /* This means end of file or some bug. */
++ break;
++ if (n == 0)
++ /* Short read. Probably interrupted system call. */
++ continue;
++
++ ++linenr;
++
++ if (line[n - 1] == '\n')
++ /* Remove trailing newline. */
++ line[--n] = '\0';
++
++ cp = line;
++ while (isspace (*cp))
++ ++cp;
++
++ if (*cp == '#')
++ /* First non-space character in line '#': it's a comment. */
++ continue;
++
++ key.data = cp;
++ while (*cp != '\0' && !isspace (*cp))
++ {
++ if (to_lowercase)
++ *cp = tolower (*cp);
++ ++cp;
++ }
++
++ if (key.data == cp)
++ /* It's an empty line. */
++ continue;
++
++ key.size = cp - (char *) key.data;
++ key.flags = 0;
++
++ while (isspace (*cp))
++ ++cp;
++
++ val.data = cp;
++ val.size = (&line[n] - cp) + 1;
++ val.flags = 0;
++
++ /* Store the value. */
++ status = output->put (output->db, NULL, &key, &val, db_nooverwrite);
++ if (status != 0)
++ {
++ if (status == db_keyexist)
++ {
++ if (!be_quiet)
++ error_at_line (0, 0, inname, linenr,
++ gettext ("duplicate key"));
++ /* This is no real error. Just give a warning. */
++ status = 0;
++ continue;
++ }
++ else
++ error (0, status, gettext ("while writing database file"));
++
++ status = EXIT_FAILURE;
++
++ clearerr (input);
++ break;
++ }
++ }
++
++ if (ferror (input))
++ {
++ error (0, 0, gettext ("problems while reading `%s'"), inname);
++ status = EXIT_FAILURE;
++ }
++
++ return status;
++}
++
++
++static int
++print_database (db)
++ NSS_DB *db;
++{
++ DBT key;
++ DBT val;
++ NSS_DBC *cursor;
++ int status;
++
++ status = db->cursor (db->db, NULL, &cursor);
++ if (status != 0)
++ {
++ error (0, status, gettext ("while reading database"));
++ return EXIT_FAILURE;
++ }
++
++ key.flags = 0;
++ val.flags = 0;
++ status = cursor->c_get (cursor->cursor, &key, &val, db_first);
++ while (status == 0)
++ {
++ printf ("%.*s %s\n", (int) key.size, (char *) key.data,
++ (char *) val.data);
++
++ status = cursor->c_get (cursor->cursor, &key, &val, db_next);
++ }
++
++ if (status != db_notfound)
++ {
++ error (0, status, gettext ("while reading database"));
++ return EXIT_FAILURE;
++ }
++
++ return EXIT_SUCCESS;
++}
+--- glibc-2.3.2/nss/nss_db/db-XXX.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/nss_db/db-XXX.c 2002-11-16 08:56:03.000000000 -0500
+@@ -0,0 +1,261 @@
++/* Common code for DB-based databases in nss_db module.
++ Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <fcntl.h>
++#include <bits/libc-lock.h>
++#include "nsswitch.h"
++#include "nss_db.h"
++
++/* These symbols are defined by the including source file:
++
++ ENTNAME -- database name of the structure and functions (hostent, pwent).
++ STRUCTURE -- struct name, define only if not ENTNAME (passwd, group).
++ DATABASE -- database file name, ("hosts", "passwd")
++
++ NEED_H_ERRNO - defined iff an arg `int *herrnop' is used.
++*/
++
++#define ENTNAME_r CONCAT(ENTNAME,_r)
++
++#include <paths.h>
++#define DBFILE _PATH_VARDB DATABASE ".db"
++
++#ifdef NEED_H_ERRNO
++#define H_ERRNO_PROTO , int *herrnop
++#define H_ERRNO_ARG , herrnop
++#define H_ERRNO_SET(val) (*herrnop = (val))
++#else
++#define H_ERRNO_PROTO
++#define H_ERRNO_ARG
++#define H_ERRNO_SET(val) ((void) 0)
++#endif
++
++/* Locks the static variables in this file. */
++__libc_lock_define_initialized (static, lock)
++
++/* Maintenance of the shared handle open on the database. */
++
++static NSS_DB *db;
++static int keep_db;
++static int entidx;
++
++
++/* Open the database. */
++enum nss_status
++CONCAT(_nss_db_set,ENTNAME) (int stayopen)
++{
++ enum nss_status status;
++
++ __libc_lock_lock (lock);
++
++ status = internal_setent (DBFILE, &db);
++
++ /* Remember STAYOPEN flag. */
++ if (db != NULL)
++ keep_db |= stayopen;
++ /* Reset the sequential index. */
++ entidx = 0;
++
++ __libc_lock_unlock (lock);
++
++ return status;
++}
++
++
++/* Close it again. */
++enum nss_status
++CONCAT(_nss_db_end,ENTNAME) (void)
++{
++ __libc_lock_lock (lock);
++
++ internal_endent (&db);
++
++ /* Reset STAYOPEN flag. */
++ keep_db = 0;
++
++ __libc_lock_unlock (lock);
++
++ return NSS_STATUS_SUCCESS;
++}
++
++/* Do a database lookup for KEY. */
++static enum nss_status
++lookup (DBT *key, struct STRUCTURE *result,
++ void *buffer, size_t buflen, int *errnop H_ERRNO_PROTO EXTRA_ARGS_DECL)
++{
++ char *p;
++ enum nss_status status;
++ int err;
++ DBT value;
++
++ /* Open the database. */
++ if (db == NULL)
++ {
++ status = internal_setent (DBFILE, &db);
++ if (status != NSS_STATUS_SUCCESS)
++ {
++ *errnop = errno;
++ H_ERRNO_SET (NETDB_INTERNAL);
++ return status;
++ }
++ }
++
++ /* Succeed iff it matches a value that parses correctly. */
++ value.flags = 0;
++ err = DL_CALL_FCT (db->get, (db->db, NULL, key, &value, 0));
++ if (err != 0)
++ {
++ if (err == db_notfound)
++ {
++ H_ERRNO_SET (HOST_NOT_FOUND);
++ status = NSS_STATUS_NOTFOUND;
++ }
++ else
++ {
++ *errnop = err;
++ H_ERRNO_SET (NETDB_INTERNAL);
++ status = NSS_STATUS_UNAVAIL;
++ }
++ }
++ else if (buflen < value.size)
++ {
++ /* No room to copy the data to. */
++ *errnop = ERANGE;
++ H_ERRNO_SET (NETDB_INTERNAL);
++ status = NSS_STATUS_TRYAGAIN;
++ }
++ else
++ {
++ /* Copy the result to a safe place. */
++ p = (char *) memcpy (buffer, value.data, value.size);
++
++ /* Skip leading blanks. */
++ while (isspace (*p))
++ ++p;
++
++ err = parse_line (p, result, buffer, buflen, errnop EXTRA_ARGS);
++
++ if (err == 0)
++ {
++ /* If the key begins with '0' we are trying to get the next
++ entry. We want to ignore unparsable lines in this case. */
++ if (((char *) key->data)[0] == '0')
++ {
++ /* Super magical return value. We need to tell our caller
++ that it should continue looping. This value cannot
++ happen in other cases. */
++ status = NSS_STATUS_RETURN;
++ }
++ else
++ {
++ H_ERRNO_SET (HOST_NOT_FOUND);
++ status = NSS_STATUS_NOTFOUND;
++ }
++ }
++ else if (err < 0)
++ {
++ H_ERRNO_SET (NETDB_INTERNAL);
++ status = NSS_STATUS_TRYAGAIN;
++ }
++ else
++ status = NSS_STATUS_SUCCESS;
++ }
++
++ if (! keep_db)
++ internal_endent (&db);
++
++ return status;
++}
++
++
++/* Macro for defining lookup functions for this DB-based database.
++
++ NAME is the name of the lookup; e.g. `pwnam'.
++
++ KEYPATTERN gives `printf' args to construct a key string;
++ e.g. `(".%s", name)'.
++
++ KEYSIZE gives the allocation size of a buffer to construct it in;
++ e.g. `1 + strlen (name)'.
++
++ PROTO describes the arguments for the lookup key;
++ e.g. `const char *name'.
++
++ BREAK_IF_MATCH is ignored, but used by ../nss_files/files-XXX.c. */
++
++#define DB_LOOKUP(name, keysize, keypattern, break_if_match, proto...) \
++enum nss_status \
++_nss_db_get##name##_r (proto, \
++ struct STRUCTURE *result, \
++ char *buffer, size_t buflen, int *errnop H_ERRNO_PROTO)\
++{ \
++ DBT key; \
++ enum nss_status status; \
++ const size_t size = (keysize) + 1; \
++ key.data = __alloca (size); \
++ key.size = KEYPRINTF keypattern; \
++ key.flags = 0; \
++ __libc_lock_lock (lock); \
++ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG \
++ EXTRA_ARGS_VALUE); \
++ __libc_lock_unlock (lock); \
++ return status; \
++}
++
++#define KEYPRINTF(pattern, args...) snprintf (key.data, size, pattern ,##args)
++
++
++
++
++/* Return the next entry from the database file, doing locking. */
++enum nss_status
++CONCAT(_nss_db_get,ENTNAME_r) (struct STRUCTURE *result, char *buffer,
++ size_t buflen, int *errnop H_ERRNO_PROTO)
++{
++ /* Return next entry in host file. */
++ enum nss_status status;
++ char buf[20];
++ DBT key;
++
++ __libc_lock_lock (lock);
++
++ /* Loop until we find a valid entry or hit EOF. See above for the
++ special meaning of the status value. */
++ do
++ {
++ key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
++ key.flags = 0;
++ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG
++ EXTRA_ARGS_VALUE);
++ if (status == NSS_STATUS_TRYAGAIN
++#ifdef NEED_H_ERRNO
++ && *herrnop == NETDB_INTERNAL
++#endif
++ && *errnop == ERANGE)
++ /* Give the user a chance to get the same entry with a larger
++ buffer. */
++ --entidx;
++ }
++ while (status == NSS_STATUS_RETURN);
++
++ __libc_lock_unlock (lock);
++
++ return status;
++}
+--- glibc-2.3.2/nss/nss_db/db-alias.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/nss_db/db-alias.c 2002-11-16 08:56:03.000000000 -0500
+@@ -0,0 +1,215 @@
++/* Mail alias file parser in nss_db module.
++ Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <aliases.h>
++#include <alloca.h>
++#include <ctype.h>
++#include <dlfcn.h>
++#include <errno.h>
++#include <bits/libc-lock.h>
++#include <paths.h>
++#include <string.h>
++
++#include "nsswitch.h"
++#include "nss_db.h"
++
++/* Locks the static variables in this file. */
++__libc_lock_define_initialized (static, lock)
++
++/* Maintenance of the shared handle open on the database. */
++
++static NSS_DB *db;
++static int keep_db;
++static unsigned int entidx; /* Index for `getaliasent_r'. */
++
++
++/* Open database. */
++enum nss_status
++_nss_db_setaliasent (int stayopen)
++{
++ enum nss_status status;
++
++ __libc_lock_lock (lock);
++
++ status = internal_setent (_PATH_VARDB "aliases.db", &db);
++
++ /* Remember STAYOPEN flag. */
++ if (db != NULL)
++ keep_db |= stayopen;
++
++ /* Reset the sequential index. */
++ entidx = 0;
++
++ __libc_lock_unlock (lock);
++
++ return status;
++}
++
++
++/* Close it again. */
++enum nss_status
++_nss_db_endaliasent (void)
++{
++ __libc_lock_lock (lock);
++
++ internal_endent (&db);
++
++ /* Reset STAYOPEN flag. */
++ keep_db = 0;
++
++ __libc_lock_unlock (lock);
++
++ return NSS_STATUS_SUCCESS;
++}
++
++/* We provide the parse function here. The parser in libnss_files
++ cannot be used. The generation of the db file already resolved all
++ :include: statements so we simply have to parse the list and store
++ the result. */
++static enum nss_status
++lookup (DBT *key, struct aliasent *result, char *buffer,
++ size_t buflen, int *errnop)
++{
++ enum nss_status status;
++ DBT value;
++
++ /* Open the database. */
++ if (db == NULL)
++ {
++ status = internal_setent (_PATH_VARDB "aliases.db", &db);
++ if (status != NSS_STATUS_SUCCESS)
++ {
++ *errnop = errno;
++ return status;
++ }
++ }
++
++ value.flags = 0;
++ if (DL_CALL_FCT (db->get, (db->db, NULL, key, &value, 0)) == 0)
++ {
++ const char *src = value.data;
++ char *cp;
++ size_t cnt;
++
++ result->alias_members_len = 0;
++
++ /* We now have to fill the BUFFER with all the information. */
++ if (buflen < key->size + 1)
++ {
++ no_more_room:
++ *errnop = ERANGE;
++ return NSS_STATUS_TRYAGAIN;
++ }
++
++ buffer = stpncpy (buffer, key->data, key->size) + 1;
++ buflen -= key->size + 1;
++
++ while (*src != '\0')
++ {
++ const char *end, *upto;
++ while (isspace (*src))
++ ++src;
++
++ end = strchr (src, ',');
++ if (end == NULL)
++ end = strchr (src, '\0');
++ for (upto = end; upto > src && isspace (upto[-1]); --upto);
++
++ if (upto != src)
++ {
++ if ((upto - src) + __alignof__ (char *) > buflen)
++ goto no_more_room;
++ buffer = stpncpy (buffer, src, upto - src) + 1;
++ buflen -= (upto - src) + __alignof (char *);
++ ++result->alias_members_len;
++ }
++ src = end + (*end != '\0');
++ }
++
++ /* Now prepare the return. Provide string pointers for the
++ currently selected aliases. */
++
++ /* Adjust the pointer so it is aligned for storing pointers. */
++ buffer += __alignof__ (char *) - 1;
++ buffer -= ((buffer - (char *) 0) % __alignof__ (char *));
++ result->alias_members = (char **) buffer;
++
++ /* Compute addresses of alias entry strings. */
++ cp = result->alias_name;
++ for (cnt = 0; cnt < result->alias_members_len; ++cnt)
++ {
++ cp = strchr (cp, '\0') + 1;
++ result->alias_members[cnt] = cp;
++ }
++
++ status = (result->alias_members_len == 0
++ ? NSS_STATUS_RETURN : NSS_STATUS_SUCCESS);
++ }
++ else
++ status = NSS_STATUS_NOTFOUND;
++
++ if (! keep_db)
++ internal_endent (&db);
++
++ return status;
++}
++
++enum nss_status
++_nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
++ int *errnop)
++{
++ /* Return next entry in alias file. */
++ enum nss_status status;
++ char buf[20];
++ DBT key;
++
++ __libc_lock_lock (lock);
++ key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
++ key.flags = 0;
++ status = lookup (&key, result, buffer, buflen, errnop);
++ if (status == NSS_STATUS_TRYAGAIN && *errnop == ERANGE)
++ /* Give the user a chance to get the same entry with a larger buffer. */
++ --entidx;
++ __libc_lock_unlock (lock);
++
++ return status;
++}
++
++
++enum nss_status
++_nss_db_getaliasbyname_r (const char *name, struct aliasent *result,
++ char *buffer, size_t buflen, int *errnop)
++{
++ DBT key;
++ enum nss_status status;
++
++ key.size = 1 + strlen (name);
++
++ key.data = __alloca (key.size);
++ ((char *) key.data)[0] = '.';
++ memcpy (&((char *) key.data)[1], name, key.size - 1);
++ key.flags = 0;
++
++ __libc_lock_lock (lock);
++ status = lookup (&key, result, buffer, buflen, errnop);
++ __libc_lock_unlock (lock);
++
++ return status;
++}
+--- glibc-2.3.2/nss/nss_db/db-netgrp.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/nss_db/db-netgrp.c 2002-11-16 08:56:03.000000000 -0500
+@@ -0,0 +1,103 @@
++/* Netgroup file parser in nss_db modules.
++ Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <dlfcn.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <netgroup.h>
++#include <string.h>
++#include <bits/libc-lock.h>
++#include <paths.h>
++
++#include "nsswitch.h"
++#include "nss_db.h"
++
++
++#define DBFILE _PATH_VARDB "netgroup.db"
++
++
++/* Locks the static variables in this file. */
++__libc_lock_define_initialized (static, lock)
++
++/* Maintenance of the shared handle open on the database. */
++static NSS_DB *db;
++static char *entry;
++static char *cursor;
++
++enum nss_status
++_nss_db_setnetgrent (const char *group)
++{
++ enum nss_status status;
++
++ __libc_lock_lock (lock);
++
++ status = internal_setent (DBFILE, &db);
++
++ if (status == NSS_STATUS_SUCCESS)
++ {
++ DBT key = { data: (void *) group, size: strlen (group), flags: 0 };
++ DBT value;
++
++ value.flags = 0;
++ if (DL_CALL_FCT (db->get, (db->db, NULL, &key, &value, 0)) != 0)
++ status = NSS_STATUS_NOTFOUND;
++ else
++ cursor = entry = value.data;
++ }
++
++ __libc_lock_unlock (lock);
++
++ return status;
++
++}
++
++
++enum nss_status
++_nss_db_endnetgrent (void)
++{
++ __libc_lock_lock (lock);
++
++ internal_endent (&db);
++
++ __libc_lock_unlock (lock);
++
++ return NSS_STATUS_SUCCESS;
++}
++
++
++extern enum nss_status _nss_netgroup_parseline (char **cursor,
++ struct __netgrent *result,
++ char *buffer, size_t buflen,
++ int *errnop);
++
++enum nss_status
++_nss_db_getnetgrent_r (struct __netgrent *result, char *buffer, size_t buflen,
++ int *errnop)
++{
++ int status;
++
++ __libc_lock_lock (lock);
++
++ status = _nss_netgroup_parseline (&cursor, result, buffer, buflen, errnop);
++
++ __libc_lock_unlock (lock);
++
++ return status;
++}
+--- glibc-2.3.2/nss/nss_db/db-open.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/nss_db/db-open.c 2002-11-16 08:56:03.000000000 -0500
+@@ -0,0 +1,389 @@
++/* Common database routines for nss_db.
++ Copyright (C) 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <fcntl.h>
++#include <dlfcn.h>
++#include <stdlib.h>
++#include <string.h>
++#include <bits/libc-lock.h>
++
++#include "dummy-db.h"
++#include "nss_db.h"
++
++/* This file contains the functions used to open and close the databases
++ read by the rest of libnss_db. Not all of them are thread safe;
++ make sure the caller does the appropriate locking.
++
++ We dynamically load the database library, so that it does not have
++ to be present when glibc is compiled. Once loaded, the database
++ library is never never unloaded again until the libnss_db module is
++ unloaded (from the free_mem routine in nsswitch.c) -- we catch the
++ unload by providing a shlib destructor. (XXX Does that actually
++ work?) */
++
++/* Handle for the shared Berkeley DB library. If non-null, the
++ database library is completely loaded and ready to be used by
++ multithreaded code. */
++static void *libdb_handle;
++
++/* The version of the Berkeley DB library we are using. */
++enum {
++ nodb,
++ db24,
++ db27,
++ db30
++} libdb_version;
++
++/* Pointer to the db_open function. For use with DB 2.x. */
++static int (*libdb_db_open) (const char *, int,
++ uint32_t, int, void *, void *, void **);
++
++/* Pointer to the db_create function. For use with DB 3.x. */
++static int (*libdb_db_create) (void *, void *, uint32_t);
++
++/* Constants which vary from version to version are actually variables
++ here. */
++int db_first;
++int db_next;
++int db_nooverwrite;
++int db_truncate;
++int db_rdonly;
++/* Variables which keep track of the error values. */
++int db_keyexist;
++int db_notfound;
++
++/* Locks the static variables in this file. */
++__libc_lock_define_initialized (static, lock)
++
++/* Dynamically load the database library. Return zero if successful,
++ non-zero if no suitable version of the library could be loaded.
++ Must be called with the above lock held if it might run in a
++ multithreaded context.
++
++ We try currently:
++ - libdb.so.3: the name used by glibc 2.1
++ - libdb-3.0.so: the name used by db-3.0.x
++ and maybe others in the future. */
++
++enum nss_status
++load_db (void)
++{
++ static const char *libnames[] = { "libdb.so.3", "libdb-3.0.so" };
++ int x;
++
++ for (x = 0; x < sizeof (libnames) / sizeof (libnames[0]); ++x)
++ {
++ libdb_handle = dlopen (libnames[x], RTLD_LAZY);
++ if (libdb_handle == NULL)
++ continue;
++
++ /* DB 3.0 has db_create instead of db_open. */
++ libdb_db_create = dlsym (libdb_handle, "db_create");
++
++ if (libdb_db_create == NULL)
++ /* DB 2.x uses db_open. */
++ libdb_db_open = dlsym (libdb_handle, "db_open");
++
++ if (libdb_db_open != NULL || libdb_db_create != NULL)
++ {
++ /* Alright, we got a library. Now find out which version it is. */
++ const char *(*db_version) (int *, int *, int *);
++
++ db_version = dlsym (libdb_handle, "db_version");
++ if (db_version != NULL)
++ {
++ /* Call the function and get the information. */
++ int major, minor, subminor;
++
++ DL_CALL_FCT (db_version, (&major, &minor, &subminor));
++ switch (major)
++ {
++ case 2:
++ /* Sanity check: Do we have db_open? */
++ if (libdb_db_open != NULL)
++ {
++ if (minor < 6 || (minor == 6 && subminor < 4))
++ {
++ libdb_version = db24;
++ db_first = DB24_FIRST;
++ db_next = DB24_NEXT;
++ db_nooverwrite = DB24_NOOVERWRITE;
++ db_truncate = DB24_TRUNCATE;
++ }
++ else
++ {
++ libdb_version = db27;
++ db_first = DB27_FIRST;
++ db_next = DB27_NEXT;
++ db_nooverwrite = DB27_NOOVERWRITE;
++ db_truncate = DB27_TRUNCATE;
++ }
++ db_keyexist = DB2x_KEYEXIST;
++ db_notfound = DB2x_NOTFOUND;
++ db_rdonly = DB2x_RDONLY;
++ }
++ break;
++
++ case 3:
++ /* Sanity check: Do we have db_create? */
++ if (libdb_db_create != NULL)
++ {
++ libdb_version = db30;
++ db_first = DB30_FIRST;
++ db_next = DB30_NEXT;
++ db_keyexist = DB30_KEYEXIST;
++ db_notfound = DB30_NOTFOUND;
++ db_rdonly = DB30_RDONLY;
++ }
++ break;
++
++ default:
++ break;
++ }
++ }
++
++ if (libdb_version != nodb)
++ return NSS_STATUS_SUCCESS;
++
++ /* Clear variables. */
++ libdb_db_open = NULL;
++ libdb_db_create = NULL;
++ }
++
++ dlclose (libdb_handle);
++ }
++
++ (void) dlerror ();
++ return NSS_STATUS_UNAVAIL;
++}
++
++/* Set the `FD_CLOEXEC' flag of FD. Return 0 on success, or -1 on
++ error with `errno' set. */
++static int
++set_cloexec_flag (int fd)
++{
++ int oldflags = fcntl (fd, F_GETFD, 0);
++
++ if (oldflags < 0)
++ return oldflags;
++
++ oldflags |= FD_CLOEXEC;
++
++ return fcntl (fd, F_SETFD, oldflags);
++}
++
++/* Make sure we don't use the library anymore once we are shutting down. */
++static void __attribute__ ((destructor))
++unload_db (void)
++{
++ if (libdb_handle != NULL)
++ {
++ libdb_db_open = NULL;
++ libdb_db_create = NULL;
++ libdb_version = nodb;
++ dlclose (libdb_handle);
++ }
++}
++
++/* Open the database stored in FILE. If succesful, store the database
++ handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return
++ the appropriate lookup status. */
++enum nss_status
++internal_setent (const char *file, NSS_DB **dbp)
++{
++ enum nss_status status = NSS_STATUS_SUCCESS;
++
++ if (*dbp == NULL)
++ {
++ if (libdb_db_open == NULL && libdb_db_create == NULL)
++ {
++ __libc_lock_lock (lock);
++
++ if (libdb_db_open == NULL && libdb_db_create == NULL)
++ status = load_db ();
++
++ __libc_lock_unlock (lock);
++ }
++
++ if (status == NSS_STATUS_SUCCESS)
++ status = dbopen (file, db_rdonly, 0, dbp);
++ }
++
++ return status;
++}
++
++
++/* Close the database *DBP. */
++void
++internal_endent (NSS_DB **dbp)
++{
++ NSS_DB *db = *dbp;
++
++ if (db != NULL)
++ {
++ DL_CALL_FCT (db->close, (db->db, 0));
++ *dbp = NULL;
++ }
++}
++
++/* Allocate a cursor for database DB and transaction TXN. On success,
++ store the cursor in *DBCP and return zero. Otherwise return an
++ error value. */
++int
++db_cursor (void *db, void *txn, NSS_DBC **dbcp)
++{
++ NSS_DBC *dbc;
++ int ret;
++
++ dbc = (NSS_DBC *) malloc (sizeof (NSS_DBC));
++ if (dbc == NULL)
++ return ENOMEM;
++
++ switch (libdb_version)
++ {
++ case db24:
++ ret = ((struct db24 *) db)->cursor (db, txn, &dbc->cursor);
++
++ if (ret == 0)
++ dbc->c_get = ((struct dbc24 *) dbc->cursor)->c_get;
++ break;
++
++ case db27:
++ ret = ((struct db27 *) db)->cursor (db, txn, &dbc->cursor, 0);
++
++ if (ret == 0)
++ dbc->c_get = ((struct dbc27 *) dbc->cursor)->c_get;
++ break;
++
++ case db30:
++ ret = ((struct db30 *) db)->cursor (db, txn, &dbc->cursor, 0);
++
++ if (ret == 0)
++ dbc->c_get = ((struct dbc30 *) dbc->cursor)->c_get;
++ break;
++
++ default:
++ abort ();
++ }
++
++ if (ret != 0)
++ {
++ free (dbc);
++ return ret;
++ }
++
++ *dbcp = dbc;
++
++ return 0;
++}
++
++
++/* Open the database in FNAME, for access specified by FLAGS. If
++ opening the database causes the file FNAME to be created, it is
++ created with MODE. If succesful, store the database handle in *DBP
++ and return NSS_STATUS_SUCCESS. On failure, return the appropriate
++ lookup status. */
++int
++dbopen (const char *fname, int oper, int mode, NSS_DB **dbp)
++{
++ int err;
++ int fd;
++ NSS_DB *db;
++
++ /* Construct the object we pass up. */
++ db = (NSS_DB *) calloc (1, sizeof (NSS_DB));
++ if (db == NULL)
++ return NSS_STATUS_UNAVAIL;
++
++ /* Initialize the object. */
++ db->cursor = db_cursor;
++
++ /* Actually open the database. */
++ switch (libdb_version)
++ {
++ case db24:
++ case db27:
++ err = DL_CALL_FCT (libdb_db_open,
++ (fname, DB_BTREE, oper, mode, NULL, NULL, &db->db));
++ if (err != 0)
++ goto fail;
++
++ if (libdb_version)
++ {
++ db->close = ((struct db24 *) db->db)->close;
++ db->fd = ((struct db24 *) db->db)->fd;
++ db->get = ((struct db24 *) db->db)->get;
++ db->put = ((struct db24 *) db->db)->put;
++ }
++ else
++ {
++ db->close = ((struct db27 *) db->db)->close;
++ db->fd = ((struct db27 *) db->db)->fd;
++ db->get = ((struct db27 *) db->db)->get;
++ db->put = ((struct db27 *) db->db)->put;
++ }
++ break;
++
++ case db30:
++ err = DL_CALL_FCT (libdb_db_create, (db->db, NULL, 0));
++ if (err != 0)
++ goto fail;
++
++ db->close = ((struct db30 *) db->db)->close;
++ db->fd = ((struct db30 *) db->db)->fd;
++ db->get = ((struct db30 *) db->db)->get;
++ db->put = ((struct db30 *) db->db)->put;
++
++ err = ((struct db30 *) db->db)->open (db->db, fname, NULL, DB_BTREE,
++ oper, mode);
++ if (err != 0)
++ goto fail;
++ break;
++
++ default:
++ abort ();
++ }
++
++ /* We have to make sure the file is `closed on exec'. */
++ err = DL_CALL_FCT (db->fd, (db->db, &fd));
++ if (err != 0)
++ goto fail;
++ if (set_cloexec_flag (fd) < 0)
++ goto fail;
++
++ *dbp = db;
++
++ return NSS_STATUS_UNAVAIL;
++
++ fail:
++ /* Something went wrong. Close the database if necessary. */
++ if (db)
++ {
++ if (db->db && db->close)
++ DL_CALL_FCT (db->close, (db->db, 0));
++ free (db);
++ }
++
++ /* Make sure `errno' is set. */
++ if (err)
++ __set_errno (err);
++
++ return err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
++}
+--- glibc-2.3.2/nss/nss_db/dummy-db.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/nss_db/dummy-db.h 2002-11-16 08:56:03.000000000 -0500
+@@ -0,0 +1,333 @@
++/* Constants and structures from the various Berkeley DB releases.
++ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++#include "nss_db.h"
++
++/* This file contains dummy definitions for various constants and
++ structures from the Berkeley release. We only provide those
++ definitions that are actually needed. In case of the structures,
++ we're only interested in the function pointers, since that's the
++ interface to the database. Unfortunately the structures have been
++ changed several times. */
++
++/* The value for the btree database type has not been changed (yet?). */
++#define DB_BTREE (1)
++
++/* Permission flags for all 2.x releases. */
++#define DB2x_RDONLY 0x010000
++
++/* The error values for all 2.x releases. */
++#define DB2x_KEYEXIST ( -3)
++#define DB2x_NOTFOUND ( -7)
++
++/* For all 2.x releases up to 2.6.3 we can use the same definitions.
++ We'll refer to them as 2.4 since that's the version distributed
++ with glibc 2.1. */
++
++/* Access methods from version 2.4. */
++#define DB24_FIRST 0x000020
++#define DB24_NEXT 0x000800
++#define DB24_NOOVERWRITE 0x001000
++
++/* Permission flags from version 2.4. */
++#define DB24_TRUNCATE 0x080000
++
++/* The DB structure from version 2.4. */
++struct db24
++{
++ void *mutexp;
++ enum { dummy24 } type;
++ void *dbenv;
++ void *mp_dbenv;
++ void *master;
++ void *internal;
++ void *mp;
++ void *mpf;
++ struct
++ {
++ void *tqh_first;
++ void **tqh_last;
++ } curs_queue;
++ struct {
++ void *lh_first;
++ } handleq;
++ struct {
++ void *le_next;
++ void **le_prev;
++ } links;
++ uint32_t log_fileid;
++ void *txn;
++ uint32_t locker;
++ struct db24_dbt {
++ void *data;
++ uint32_t size;
++ uint32_t ulen;
++ uint32_t dlen;
++ uint32_t doff;
++ uint32_t flags;
++ } lock_dbt;
++ struct{
++ uint32_t pgno;
++ uint8_t fileid[20];
++ } lock;
++ size_t pgsize;
++ void *db_malloc;
++ /* Functions. */
++ int (*close) (void *, uint32_t);
++ int (*cursor) (void *, void *, void **);
++ int (*del) (void *, void *, DBT *, uint32_t);
++ int (*fd) (void *, int *);
++ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
++ int (*sync) (void *, uint32_t);
++ uint32_t flags;
++};
++
++/* The DBC structure for the 2.4 release. */
++struct dbc24
++{
++ void *dbp;
++ void *txn;
++ struct
++ {
++ void *tqe_next;
++ void **tqe_prev;
++ } links;
++ void *internal;
++ void *c_close;
++ void *c_del;
++ int (*c_get) (void *, DBT *, DBT *, uint32_t);
++ void *c_put;
++};
++
++/* The 2.7 release is slighty different. */
++
++/* Access methods from version 2.7. */
++#define DB27_FIRST 7
++#define DB27_NEXT 15
++#define DB27_NOOVERWRITE 17
++
++/* Permission flags from version 2.7. */
++#define DB27_TRUNCATE 0x020000
++
++/* The DB structure from version 2.7. */
++struct db27
++{
++ void *mutexp;
++ enum { dummy27 } type;
++ int byteswapped;
++ int saved_open_fd;
++ void *dbenv;
++ void *mp_dbenv;
++ void *internal;
++ void *mp;
++ void *mpf;
++ struct
++ {
++ void *tqh_first;
++ void **tqh_last;
++ } free_queue;
++ struct
++ {
++ void *tqh_first;
++ void **tqh_last;
++ } active_queue;
++ uint8_t fileid[20];
++ uint32_t log_fileid;
++ size_t pgsize;
++ void *db_malloc;
++ void *dup_compare;
++ void *h_hash;
++ /* Functions. */
++ int (*am_close) (void *);
++ int (*close) (void *, uint32_t);
++ int (*cursor) (void *, void *, void **, uint32_t);
++ int (*del) (void *, void *, DBT *, uint32_t);
++ int (*fd) (void *, int *);
++ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*join) (void *, void **, uint32_t, void **);
++ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
++ int (*sync) (void *, uint32_t);
++ uint32_t flags;
++};
++
++/* The DBC structure for version 2.7. */
++struct dbc27
++{
++ void *dbp;
++ void *txn;
++ struct
++ {
++ void *tqe_next;
++ void **tqe_prev;
++ } links;
++ uint32_t lid;
++ uint32_t locker;
++ DBT lock_dbt;
++ struct{
++ uint32_t pgno;
++ uint8_t fileid[20];
++ } lock;
++ size_t mylock;
++ DBT rkey;
++ DBT rdata;
++ void *c_am_close;
++ void *c_am_destroy;
++ void *c_close;
++ void *c_del;
++ int (*c_get) (void *, DBT *, DBT *, uint32_t);
++ void *c_put;
++ void *internal;
++ uint32_t flags;
++};
++
++/* Version 3.0 is mostly incompatible with 2.x. */
++
++/* Access methods from version 3.0. */
++#define DB30_FIRST 9
++#define DB30_NEXT 17
++#define DB30_NOOVERWRITE 20
++
++/* Error values from version 3.0. */
++#define DB30_KEYEXIST (-30997)
++#define DB30_NOTFOUND (-30994)
++
++/* Permission flags from version 3.0. */
++#define DB30_RDONLY 0x000010
++#define DB30_TRUNCATE 0x020000
++
++/* The DB structure from version 3.0. */
++struct db30
++{
++ size_t pgsize;
++ void (*db_feedback) (void *, int, int);
++ void *(*db_malloc) (size_t);
++ void *(*db_realloc) (void *, size_t);
++ int (*dup_compare) (const DBT *, const DBT *);
++ void *dbenv;
++ enum { dummy30 } type;
++ void *mpf;
++ void *mutexp;
++ u_int8_t fileid[20];
++ int32_t log_fileid;
++ void *open_txn;
++ void *saved_open_fhp;
++ struct
++ {
++ void *tqh_first;
++ void **tqh_last;
++ } free_queue;
++ struct
++ {
++ void *tqh_first;
++ void **tqh_last;
++ } active_queue;
++ void *bt_internal;
++ void *cj_internal;
++ void *h_internal;
++ void *q_internal;
++ void *xa_internal;
++ /* Functions. */
++ int (*close) (void *, uint32_t);
++ int (*cursor) (void *, void *, void **, uint32_t);
++ int (*del) (void *, void *, DBT *, uint32_t);
++ void (*err) (void *, int, const char *, ...);
++ void (*errx) (void *, const char *, ...);
++ int (*fd) (void *, int *);
++ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*get_byteswapped) (void *);
++ int (*get_type) (void *);
++ int (*join) (void *, void **, void **, uint32_t);
++ int (*open) (void *, const char *, const char *, int, uint32_t, int);
++ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*remove) (void *, const char *, const char *, uint32_t);
++ int (*set_cachesize) (void *, uint32_t, uint32_t, int);
++ int (*set_dup_compare) (void *, int (*)(const DBT *, const DBT *));
++ void (*set_errcall) (void *, void (*)(const char *, char *));
++ void (*set_errfile) (void *, void *);
++ void (*set_errpfx) (void *, const char *);
++ void (*set_feedback) (void *, void (*)(void *, int, int));
++ int (*set_flags) (void *, uint32_t);
++ int (*set_lorder) (void *, int);
++ int (*set_malloc) (void *, void *(*)(size_t));
++ int (*set_pagesize) (void *, uint32_t);
++ void (*set_paniccall) (void *, void (*)(void *, int));
++ int (*set_realloc) (void *, void *(*)(void *, size_t));
++ int (*stat) (void *, void *, void *(*)(size_t), uint32_t);
++ int (*sync) (void *, uint32_t);
++ int (*upgrade) (void *, const char *, uint32_t);
++
++ int (*set_bt_compare) (void *, int (*)(const DBT *, const DBT *));
++ int (*set_bt_maxkey) (void *, uint32_t);
++ int (*set_bt_minkey) (void *, uint32_t);
++ int (*set_bt_prefix) (void *, size_t (*)(const DBT *, const DBT *));
++
++ int (*set_h_ffactor) (void *, uint32_t);
++ int (*set_h_hash) (void *, uint32_t (*)(const void *, uint32_t));
++ int (*set_h_nelem) (void *, uint32_t);
++
++ int (*set_re_delim) (void *, int);
++ int (*set_re_len) (void *, uint32_t);
++ int (*set_re_pad) (void *, int);
++ int (*set_re_source) (void *, const char *);
++
++ uint32_t am_ok;
++ uint32_t flags;
++};
++
++/* The DBC structure from version 3.0. */
++struct dbc30
++{
++ void *dbp;
++ void *txn;
++ struct
++ {
++ void *tqe_next;
++ void **tqe_prev;
++ } links;
++ uint32_t lid; /* Default process' locker id. */
++ uint32_t locker; /* Locker for this operation. */
++ DBT lock_dbt; /* DBT referencing lock. */
++ struct
++ {
++ uint32_t pgno;
++ uint8_t fileid[20];
++ } lock;
++ struct
++ {
++ size_t off;
++ uint32_t ndx;
++ uint32_t gen;
++ } mylock;
++ DBT rkey;
++ DBT rdata;
++ int (*c_close) (void *);
++ int (*c_del) (void *, uint32_t);
++ int (*c_dup) (void *, void **, uint32_t);
++ int (*c_get) (void *, DBT *, DBT *, uint32_t);
++ int (*c_put) (void *, DBT *, DBT *, uint32_t);
++ int (*c_am_close) (void *);
++ int (*c_am_destroy) (void *);
++ void *internal;
++ uint32_t flags;
++};
+--- glibc-2.3.2/nss/nss_db/nss_db.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/nss/nss_db/nss_db.h 2002-11-16 08:56:03.000000000 -0500
+@@ -0,0 +1,94 @@
++/* Common database open/close routines for nss_db.
++ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _NSS_DB_H
++#define _NSS_DB_H 1
++
++#include <nss.h>
++#include <stdint.h>
++
++/* Variables which keep track of the error values. */
++extern int db_keyexist;
++extern int db_notfound;
++
++/* This flag is the same for all versions of the Berkeley DB library. */
++#define DB_CREATE 0x000001
++
++/* But constants which vary from version to version are actually
++ variables here. */
++extern int db_first;
++extern int db_next;
++extern int db_nooverwrite;
++extern int db_truncate;
++extern int db_rdonly;
++
++/* The `DBT' type is the same in all versions we support. */
++typedef struct
++{
++ void *data;
++ uint32_t size;
++ uint32_t ulen;
++ uint32_t dlen;
++ uint32_t doff;
++ uint32_t flags;
++} DBT;
++
++/* But the cursor object is very different from version to version. */
++typedef struct
++{
++ void *cursor;
++ int (*c_get) (void *, DBT *, DBT *, uint32_t);
++} NSS_DBC;
++
++/* We need a helper function for it. */
++extern int db_cursor (void *db, void *txn, NSS_DBC **dbcp);
++
++/* This is the wrapper we put around the `DB' structures to provide a
++ uniform interface to the higher-level functions. */
++typedef struct
++{
++ void *db;
++ int (*close) (void *, uint32_t);
++ int (*cursor) (void *, void *, NSS_DBC **);
++ int (*fd) (void *, int *);
++ int (*get) (void *, void *, DBT *, DBT *, uint32_t);
++ int (*put) (void *, void *, DBT *, DBT *, uint32_t);
++} NSS_DB;
++
++/* Open the database stored in FILE. If succesful, store the database
++ handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return
++ the appropriate lookup status. */
++extern enum nss_status internal_setent (const char *file, NSS_DB **dbp);
++
++/* Close the database *DBP. */
++extern void internal_endent (NSS_DB **dbp);
++
++/* Dynamically load the Berkeley DB library. Return zero if
++ successful, non-zero if no suitable version of the library could be
++ loaded. */
++extern enum nss_status load_db (void);
++
++/* Open the database in FNAME, for access specified by FLAGS. If
++ opening the database causes the file FNAME to be created, it is
++ created with MODE. If succesful, store the database handle in *DBP
++ and return NSS_STATUS_SUCCESS. On failure, return the appropriate
++ lookup status. */
++extern int dbopen (const char *fname, int oper, int mode, NSS_DB **dbp);
++
++#endif /* nss_db.h */
+--- glibc-2.3.2/nss/nss_files/files-hosts.c 2003-02-12 02:37:22.000000000 -0500
++++ glibc-2.3.2/nss/nss_files/files-hosts.c 2003-03-18 16:46:08.000000000 -0500
+@@ -280,7 +280,7 @@
+
+ DB_LOOKUP (hostbyaddr, ,,
+ {
+- if (result->h_length == len
++ if (result->h_length == (int) len
+ && ! memcmp (addr, result->h_addr_list[0], len))
+ break;
+ }, const void *addr, socklen_t len, int af)
+--- glibc-2.3.2/nss/nss_files/files-parse.c 2002-08-10 14:09:07.000000000 -0400
++++ glibc-2.3.2/nss/nss_files/files-parse.c 2003-08-21 08:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Common code for file-based database parsers in nss_files module.
+- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996-2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -67,7 +67,7 @@
+ #ifdef ENTDATA
+ /* The function can't be exported, because the entdata structure
+ is defined only in files-foo.c. */
+-# define parser_stclass static inline
++# define parser_stclass static
+ # define nss_files_parse_hidden_def(name)
+ #else
+ /* Export the line parser function so it can be used in nss_db. */
+@@ -171,6 +171,7 @@
+ }
+
+ static inline char **
++__attribute ((always_inline))
+ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop)
+ {
+ char *eol, **list, **p;
+--- glibc-2.3.2/nss/nsswitch.c 2002-11-01 21:15:52.000000000 -0500
++++ glibc-2.3.2/nss/nsswitch.c 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -39,6 +39,7 @@
+ #endif
+
+ #include "nsswitch.h"
++#include "../nscd/nscd_proto.h"
+
+ /* Prototypes for the local functions. */
+ static name_database *nss_parse_file (const char *fname) internal_function;
+@@ -413,6 +414,7 @@
+
+ return result;
+ }
++libc_hidden_def (__nss_lookup_function)
+
+
+ static name_database *
+@@ -426,7 +428,7 @@
+ size_t len;
+
+ /* Open the configuration file. */
+- fp = fopen (fname, "r");
++ fp = fopen (fname, "rc");
+ if (fp == NULL)
+ return NULL;
+
+@@ -696,6 +698,17 @@
+ }
+
+
++/* Called by nscd and nscd alone. */
++void
++__nss_disable_nscd (void)
++{
++ /* Disable all uses of NSCD. */
++ __nss_not_use_nscd_passwd = -1;
++ __nss_not_use_nscd_group = -1;
++ __nss_not_use_nscd_hosts = -1;
++}
++
++
+ /* Free all resources if necessary. */
+ libc_freeres_fn (free_mem)
+ {
+--- glibc-2.3.2/nss/nsswitch.h 2002-08-10 14:08:37.000000000 -0400
++++ glibc-2.3.2/nss/nsswitch.h 2003-09-19 22:37:05.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -101,14 +101,15 @@
+ If there is no configuration for this database in the file,
+ parse a service list from DEFCONFIG and use that. More
+ than one function can use the database. */
+-int __nss_database_lookup (const char *database, const char *alternative_name,
+- const char *defconfig, service_user **ni);
++extern int __nss_database_lookup (const char *database,
++ const char *alternative_name,
++ const char *defconfig, service_user **ni);
+ libc_hidden_proto (__nss_database_lookup)
+
+ /* Put first function with name FCT_NAME for SERVICE in FCTP. The
+ position is remembered in NI. The function returns a value < 0 if
+ an error occurred or no such function exists. */
+-int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
++extern int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
+
+ /* Determine the next step in the lookup process according to the
+ result STATUS of the call to the last function returned by
+@@ -123,13 +124,18 @@
+ services. In other words, only if all four lookup results have
+ the action RETURN associated the lookup process stops before the
+ natural end. */
+-int __nss_next (service_user **ni, const char *fct_name, void **fctp,
+- int status, int all_values);
++extern int __nss_next (service_user **ni, const char *fct_name, void **fctp,
++ int status, int all_values);
+ libc_hidden_proto (__nss_next)
+
+ /* Search for the service described in NI for a function named FCT_NAME
+ and return a pointer to this function if successful. */
+-void *__nss_lookup_function (service_user *ni, const char *fct_name);
++extern void *__nss_lookup_function (service_user *ni, const char *fct_name);
++libc_hidden_proto (__nss_lookup_function)
++
++
++/* Called by NSCD to disable recursive calls. */
++extern void __nss_disable_nscd (void);
+
+
+ typedef int (*db_lookup_function) (service_user **, const char *, void **)
+--- glibc-2.3.2/po/ca.po 2002-11-04 01:56:29.000000000 -0500
++++ glibc-2.3.2/po/ca.po 2003-03-15 15:02:12.000000000 -0500
+@@ -1,12 +1,12 @@
+ # Catalan messages for GNU libc.
+ # Copyright (C) 2002 Free Software Foundation, Inc.
+-# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002.
++# Ivan Vilata i Balaguer <ivan@selidor.net>, 1998, 1999, 2000, 2001, 2002, 2003.
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-10-29 18:59+0100\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-09 23:39+0100\n"
+ "Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n"
+ "Language-Team: Catalan <ca@dodds.net>\n"
+ "MIME-Version: 1.0\n"
+@@ -267,8 +267,8 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
+-msgstr "les conversions des de «%s» i cap a «%s» no són suportades"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "la conversió des de «%s» cap a «%s» no és suportada"
+
+ #: iconv/iconv_prog.c:246
+ #, c-format
+@@ -293,15 +293,15 @@
+ msgid "error while closing output file"
+ msgstr "error en tancar el fitxer d'eixida"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+ msgstr "Informeu dels errors amb el guió «glibcbug» a <bugs@gnu.org>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -314,9 +314,9 @@
+ "de còpia. No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n"
+ "ADEQUACIÓ A UN PROPÒSIT PARTICULAR.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -370,15 +370,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Prefix a usar en tots els accessos a fitxer"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "no hi ha fitxer d'eixida perquè s'han produït avisos"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "en inserir en l'arbre de recerca"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "no s'ha pogut generar el fitxer d'eixida"
+
+@@ -1295,7 +1295,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "el nom simbòlic no és terminat"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "la seqüència d'escapada no és vàlida"
+
+@@ -1325,41 +1325,41 @@
+ msgid "trailing garbage at end of line"
+ msgstr "fem al final de la línia"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Informació del sistema:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Mostra els noms dels locales disponibles"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Mostra els noms dels mapes de caràcters disponibles"
+
+ # ivb (2001/10/30)
+ # ivb Aquesta línia dóna pas a un conjunt d'opcions que modif. l'eixida.
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Modificadors del format de l'eixida:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Mostra els noms de les categories seleccionades"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Mostra els noms de les paraules clau seleccionades"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Mostra més informació"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Obté la informació específica d'un locale."
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1367,7 +1367,7 @@
+ "NOM\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "en preparar l'eixida"
+
+@@ -1504,16 +1504,16 @@
+ msgid "cannot create temporary file"
+ msgstr "no s'ha pogut crear un fitxer temporal"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "no s'ha pogut iniciar el fitxer arxiu"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "no s'ha pogut redimensionar el fitxer arxiu"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "no s'ha pogut mapar la capçalera de l'arxiu"
+
+@@ -1531,92 +1531,92 @@
+ msgid "cannot map locale archive file"
+ msgstr "no s'ha pogut mapar el fitxer arxiu de locales"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "no s'ha pogut blocar el nou arxiu"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "no s'ha pogut estendre el fitxer arxiu de locales"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "no s'ha pogut canviar el mode de l'arxiu de locales redimensionat"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "no s'ha pogut reanomenar el nou arxiu"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "no s'ha pogut obrir l'arxiu «%s» de locales"
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "ha fallat stat() sobre l'arxiu «%s» de locales"
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "no s'ha pogut blocar l'arxiu «%s» de locales"
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "no s'ha pogut llegir la capçalera de l'arxiu"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "el locale «%s» ja existeix"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "no s'ha pogut afegir a l'arxiu de locales"
+
+ # ivb (2002/10/21)
+ # ivb El fitxer conté àlies de diversos locales (locale.alias).
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "no s'ha trobat el fitxer «%s» d'àlies de locales"
+
+ # ivb (2002/10/21)
+ # ivb És un missatge, no un error.
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "S'està afegint «%s»\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "ha fallat stat() sobre «%s»: %s: es descarta"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "«%s» no és un directori: es descarta"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "no s'ha pogut obrir el directori «%s»: %s: es descarta"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "el joc de fitxers de locale en «%s» no és complet"
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "no s'han pogut llegir tots els fitxers de «%s»: es descarta"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "el locale «%s» no es troba en l'arxiu"
+@@ -1687,8 +1687,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "el límit superior del rang no és menor que l'inferior"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "la memòria s'ha exhaurit"
+
+@@ -1714,7 +1714,7 @@
+ msgid "Another string for testing."
+ msgstr "Altra cadena de prova."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NOM"
+
+@@ -1758,7 +1758,7 @@
+ msgid "duplicate set definition"
+ msgstr "la definició del joc de missatges és duplicada"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "aquesta és la primera definició"
+
+@@ -1776,44 +1776,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "la directiva «%s» no és coneguda: es descarta la línia"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "el número de missatge és duplicat"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "l'identificador de missatge és duplicat"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "el caràcter no és vàlid: es descarta el missatge"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "la línia no és vàlida"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "es descarta la línia malmesa"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "no s'ha pogut obrir el fitxer d'eixida «%s»"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "el missatge no és terminat"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "en obrir el fitxer antic de catàleg"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "els mòduls de conversió no es troben disponibles"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "no s'ha pogut determinar el caràcter d'escapada"
+
+@@ -1821,7 +1821,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: no es poden tractar més de 8 arguments\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Èxit"
+@@ -3024,23 +3024,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sSenyal desconegut %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "la memòria és consistent; la biblioteca té errors\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "s'ha sobreescrit la memòria d'abans del bloc reservat\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "s'ha sobreescrit la memòria de després del bloc reservat\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "s'ha alliberat el bloc dues voltes\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "el valor d'«mcheck_status» és estrany; la biblioteca té errors\n"
+
+@@ -3076,6 +3076,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "FITXERDADES [FITXEREIXIDA]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Error desconegut"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3102,7 +3106,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: La memòria s'ha exhaurit: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Error desconegut del sistema"
+
+@@ -3507,27 +3511,23 @@
+ msgid "Interrupted by a signal"
+ msgstr "Interromput per un senyal"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Error desconegut"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Forma d'ús: %s [-v especificació] nom_de_la_variable [camí]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "l'especificació «%s» no és coneguda"
+
+ # ivb (2001/11/01)
+ # ivb Es refereix a variables de configuració -> femení.
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "indefinida"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "La variable «%s» no és reconeguda"
+@@ -3589,71 +3589,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: l'opció «-W %s» no admet arguments\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "No hi ha cap coincidència"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "L'expressió regular no és vàlida"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "El caràcter d'ordenació no és vàlid"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "El nom de la classe de caràcters no és vàlid"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Hi ha una barra invertida sobrant al final"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "La referència cap enrere no és vàlida"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "[ o [^ desaparellat"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "( o \\( desaparellat"
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "\\{ desaparellat"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "El contingut de \\{\\} no és vàlid"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "El final del rang no és vàlid"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "La memòria s'ha exhaurit"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "L'expressió regular precedent és incorrecta"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "Fí prematur de l'expressió regular"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "L'expressió regular és massa llarga"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr ") o \\) desaparellat"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "No hi ha expressió regular prèvia"
+
+@@ -3812,24 +3812,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Configuració a usar del servei"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "No es suporta l'enumeració sobre «%s»\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - obté les entrades de les bases de dades d'administració."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Bases de dades suportades:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "el nombre d'arguments és incorrecte"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "La base de dades no és coneguda: %s\n"
+@@ -3866,70 +3866,74 @@
+ msgid "invalid pointer size"
+ msgstr "el tamany del punter no és vàlid"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: No s'ha pogut reservar memòria\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: socket: Tots els ports estan sent usats\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "connexió amb l'adreça «%s»: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "S'està provant amb «%s»...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write (en preparar l'eixida estàndard d'errors): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (en preparar l'exida estàndard d'errors): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: fallada del protocol en configurar el circuit\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "socket: fallada del protocol en configurar el circuit\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: lectura incompleta"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "ha fallat lstat()"
+
+ # ivb (2001/10/31)
+ # ivb Cal tenir en compte que «ordinary» a l'anglés és cosa pler diferent ;)
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "no és un fitxer ordinari"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "no s'ha pogut obrir"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "ha fallat fstat()"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "el propietari no és vàlid"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "és modificable per altres que no en són el propietari"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "té un enllaç fort en altre lloc"
+
+@@ -4146,109 +4150,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "No s'ha pogut rebre una resposta a la difusió"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: l'eixida sobreescriuria «%s»\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: no s'ha pogut obrir «%s»: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: en escriure en l'eixida «%s»: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "no s'ha pogut trobar el preprocessador de C: %s\n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "no s'ha pogut trobar cap preprocessador de C (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: el preprocessador de C ha fallat amb el senyal %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: el preprocessador de C ha fallat amb el codi d'eixida %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "el tipus de xarxa no és permés: «%s»\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: hi ha massa definicions\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: error en codificar els arguments\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "el fitxer «%s» ja existeix i podria ser sobreescrit\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "No es pot especificar més d'un fitxer d'entrada!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Aquesta implementació no suporta l'estil nou ni el codi compatible amb MT!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "No es pot usar l'opció idxarxa (-n) amb l'opció inetd (-I)!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "No es pot usar l'opció idxarxa (-n) sense TIRPC!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "No es pot usar opcions de taula amb l'estil nou (-N)!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "cal «fitxerentrada» pels senyaladors de generació de plantilles.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "No es pot tenir més d'un senyalador de generació de fitxers!\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "Forma d'ús: %s fitxerentrada\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dnom[=valor]] [-i tamany] [-I [-K segons]] [-Y camí] fitxerentrada\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fitxereixida] [fitxerentrada]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s tipusdexarxa]* [-o fitxereixida] [fitxerentrada]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n idxarxa]* [-o fitxereixida] [fitxerentrada]\n"
+@@ -5126,7 +5130,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "en reservar una entrada en la taula de dispersió"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "ha fallat stat() sobre el fitxer «%s»: %s"
+@@ -5139,27 +5143,32 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "no es pot executar «nscd» en mode segur com a usuari sense privilegis"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "en reservar la memòria cau: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "no s'ha pogut obrir el connector: %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "no s'ha pogut habilitar el connector per acceptar connexions: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: s'ha rebut una petició (Versió = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "no s'ha pogut atendre la petició amb versió antiga %d; la versió actual és %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "no s'ha pogut escriure el resultat: %s"
+@@ -5169,130 +5178,130 @@
+ # ivb dimoni «nscd» per consultar la memòria cau o invalidar-la. Per
+ # ivb això faig servir «programa de control» (com «ndc» amb «named» o
+ # ivb «chronyc» amb «chronyd»).
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "error en obtenir l'identificador del programa de control: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "en acceptar la connexió: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "lectura incompleta en llegir la petició: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "la longitud de la clau de la petició és massa gran: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "lectura incompleta en llegir la clau de la petició: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "No s'ha pogut executar «nscd» com a l'usuari «%s»"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "ha fallat getgrouplist()"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "ha fallat setgroups()"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "en reservar una còpia de la clau"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "en reservar una entrada en la memòria cau"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "escriptura incompleta en «%s»: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "No s'ha trobat «%s» en la memòria cau de grups!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "«%s» no és un gid numèric vàlid!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "No s'ha trobat «%d» en la memòria cau de grups!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "No s'ha trobat «%s» en la memòria cau d'estacions!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Llig les dades de configuració de NOM"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "No fa fork() i mostra els missatges en el terminal actual"
+
+ # ivb (2001/10/30)
+ # ivb Es refereix al _nombre_ de fils a llançar.
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "NOMBRE"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Llança NOMBRE fils d'exeució"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Termina el servidor"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Mostra estadístiques de la configuració actual"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TAULA"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Invalida la memòria cau especificada"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TAULA,yes"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Usa una memòria cau diferent per cada usuari"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Dimoni de memòria cau del servei de noms."
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "ja es troba en marxa"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Només root pot usar aquesta opció!"
+
+@@ -5382,22 +5391,22 @@
+ "%15ld%% ràtio d'encerts de memòria cau\n"
+ "%15s comprovar /etc/%s per si hi ha hagut canvis?\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "No s'ha trobat «%s» en la memòria cau d'usuaris!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "«%s» no és un uid numèric vàlid!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "No s'ha trobat «%d» en la memòria cau d'usuaris!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "no s'ha pogut crear la llista de capacitats"
+
+@@ -5454,7 +5463,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", ABI del SO: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "No s'ha pogut obrir el fitxer «%s» de memòria cau\n"
+@@ -5500,19 +5509,19 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "No s'ha pogut reanomenar «%s» a «%s»"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "l'objecte compartit no és obert"
+
+ # ivb (2002/10/29)
+ # ivb TLS = Thread Local Storage
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr "El comptador de generació de TLS s'ha esgotat! Per favor, envieu un informe amb el guió «glibcbug»."
+
+ # ivb (2001/11/05)
+ # ivb DST = Dynamic String Token (component cadena dinàmica)
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "no es permeten components cadena dinàmica (DST) en programes SUID/SGID"
+
+@@ -5531,183 +5540,195 @@
+ msgid "cannot allocate dependency list"
+ msgstr "no s'ha pogut reservar la llista de dependències"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "no s'ha pogut reservar la llista de recerca de símbols"
+
+ # ivb (2002/10/21)
+ # ivb LD_TRACE_PRELINKING és una variable d'entorn, no és part del filtre.
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Amb LD_TRACE_PRELINKING no es suporten els filtres"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "ERROR EN L'ENLLAÇADOR DINÀMIC!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "error en carregar les biblioteques dinàmiques"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "no s'ha pogut reservar el registre de nom"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "no s'ha pogut crear la memòria cau dels camins de recerca"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "no s'ha pogut crear una còpia de RUNPATH/RPATH"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "no s'ha pogut crear el vector de camins de recerca"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "ha fallat stat() sobre l'objecte compartit"
+
+ # ivb (2001/10/28)
+ # ivb Es refereix a /dev/zero .
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "no s'ha pogut obrir el dispositiu de zeros"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "no s'ha pogut crear el descriptor d'objecte compartit"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "no s'han pogut llegir les dades del fitxer"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "L'alineament de l'ordre ELF de càrrega no està alineada amb la pàgina"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "L'adreça/desplaçament de l'ordre ELF de càrrega no està correctament alineada"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "no s'han pogut reservar les estructures de dades TLS pel fil inicial"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "no es pot tractar amb dades TLS"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "no s'ha pogut mapar un segment de l'objecte compartit"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "no s'ha pogut carregar dinàmicament l'executable"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "no s'han pogut canviar les proteccions de memòria"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "no s'han pogut mapar les pàgines plenes de zeros"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "no s'ha pogut reservar memòria per la capçalera del programa"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "el fitxer objecte no té secció dinàmica"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "ha fallat dlopen() sobre l'objecte compartit"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "no s'ha pogut crear la llista de recerca"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "el fitxer és massa curt"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "la capçalera ELF no és vàlida"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "La codificació de les dades del fitxer ELF no és big-endian"
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "La codificació de les dades del fitxer ELF no és little-endian"
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "La identificació de la versió del fitxer ELF no concorda amb l'actual"
+
+ # ivb (2001/11(06)
+ # ivb ABI = Application Binary Interface (interfície binària d'aplicació)
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "L'ABI de sistema operatiu del fitxer ELF no és vàlida"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "La versió de l'ABI del fitxer ELF no és vàlida"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "error intern"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "La versió del fitxer ELF no concorda amb l'actual"
+
+ # ivb (2001/11/01)
+ # ivb La traducció completa de «phentsize» vindria a ser: tamany d'entrada
+ # ivb de taula de la capçalera de programa.
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "El valor de «phentsize» del fitxer ELF no és l'esperat"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "només es poden carregar els tipus ET_DYN i ET_EXEC"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "no s'ha pogut obrir el fitxer objecte compartit"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "error de reubicació"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "no s'ha pogut estendre l'àmbit global"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "la substitució del component cadena dinàmica és buida"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "no s'ha pogut crear la llista d'àmbits"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "no s'han pogut crear les estructures de dades TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "el mode de dlopen() no és vàlid"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "ha fallat dlopen() sobre l'objecte compartit: la memòria TLS estàtica és massa menuda"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "no s'ha pogut fer escrivible el segment per reubicar-lo"
+
+ # ivb (2002/10/21)
+ # ivb PLT = Procedure Linkage Table, Taula d'Enllaçat de Procediments
+ # ivb PLTREL = tipus de reubicació usada per la PLT
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: el perfilador no ha trobat el PLTREL de l'objecte «%s»\n"
+@@ -5715,12 +5736,12 @@
+ # ivb (2002/10/29)
+ # ivb Açò és un cacau, però pense que ací hauria de posar PLT i no PLTREL.
+ # ivb Total, qui ho va a llegir?
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: el perfilador ha exhaurit la memòria en calcular el PLTREL de «%s»\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "no s'ha pogut restaurar la protecció del segment després de reubicar-lo"
+
+@@ -5776,123 +5797,123 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Configura els vincles en temps d'execució de l'enllaçador dinàmic."
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "S'ha especificat el camí «%s» més d'una volta"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "«%s» no és un tipus conegut de biblioteca"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Ha fallat stat() sobre «%s»"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Ha fallat stat() sobre «%s»\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "«%s» no és un enllaç simbòlic\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "No s'ha pogut desenllaçar «%s»"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "No s'ha pogut crear un enllaç des de «%s» cap a «%s»"
+
+ # ivb (2001/10/28)
+ # ivb Es refereix a un enllaç -> masculí.
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (canviat)\n"
+
+ # ivb (2001/10/28)
+ # ivb Es refereix a fer o no l'enllaç, no importa el gènere.
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (SALTAT)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "No s'ha pogut trobar «%s»"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Ha fallat lstat() sobre «%s»"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Es descarta el fitxer «%s» que no és un fitxer ordinari."
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "No s'ha creat l'enllaç perquè no s'ha trobat el nom d'objecte compartit de «%s»"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "No s'ha pogut obrir el directori «%s»"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Ha fallat lstat() sobre «%s»"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Ha fallat stat() sobre «%s»"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "No s'ha trobat el fitxer d'entrada «%s».\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "la bibliotexa «%s» per libc5 es troba en un directori incorrecte"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "la biblioteca «%s» per libc6 es troba en un directori incorrecte"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "la biblioteca «%s» per libc4 es troba en un directori incorrecte"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "les biblioteques «%s» i «%s» del directori «%s» tenen el mateix nom d'objecte compartit però diferent tipus."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "No s'ha pogut obrir el fitxer «%s» de configuració"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "No s'ha pogut canviar al directori /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "No s'ha pogut obrir el directori «%s» de fitxers de memòria cau\n"
+@@ -6005,12 +6026,3 @@
+ #: elf/sprof.c:936 elf/sprof.c:988
+ msgid "cannot allocate symbol data"
+ msgstr "no s'han pogut reservar les dades de símbols"
+-
+-#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
+-#~ msgstr "\t\t\t\t\t\t\t %s: el valor del camp «%s» ha d'estar en el rang %d...%d"
+-
+-#~ msgid "Failed to look up user '%s' to run server as"
+-#~ msgstr "Ha fallat la recerca de l'usuari «%s», com a qui executar el servidor"
+-
+-#~ msgid "no filename for profiling data given and shared object `%s' has no soname"
+-#~ msgstr "no s'ha especificat un fitxer de dades de perfilat i «%s» no té nom d'objecte compartit"
+--- glibc-2.3.2/po/da.po 2002-11-10 18:14:07.000000000 -0500
++++ glibc-2.3.2/po/da.po 2003-03-15 15:02:12.000000000 -0500
+@@ -4,9 +4,9 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-11-09 20:18+01:00\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-08 20:18+01:00\n"
+ "Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
+ "Language-Team: Danish <dansk@klid.dk>\n"
+ "MIME-Version: 1.0\n"
+@@ -259,8 +259,8 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
+-msgstr "konverteringer fra '%s' og til '%s' er ikke understøttet"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "konvertering fra '%s' og til '%s' er ikke understøttet"
+
+ #: iconv/iconv_prog.c:246
+ #, c-format
+@@ -285,15 +285,15 @@
+ msgid "error while closing output file"
+ msgstr "fejl ved lukning af udfil"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+ msgstr "Rapportér fejl ved at bruge skriptet 'glibcbug' til <bugs@gnu.org>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -306,9 +306,9 @@
+ "Programmellet har ingen garanti, ikke en gang for SALGBARHED eller EGNETHED\n"
+ "TIL NOGEN SPECIEL OPGAVE.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -360,15 +360,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Præfiks brugt for alle filadgange"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "på grund af advarsler blev ingen udfil oprettet"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "fejl ved indsætning i søgetræ"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "kan ikke generere udfil"
+
+@@ -1280,7 +1280,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "uafsluttet symbolsk navn"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "ugyldig undtagelsessekvens"
+
+@@ -1310,39 +1310,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "efterfølgende snavs på slutningen af linien"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Systeminformation:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Skriv navnene til tilgængelige lokaler"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Skriv navnene til tilgængelige tegntabel"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Ændre format for uddata:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Skriv navnene til valgte kategorier"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Skriv navnene til valgte nøgleord"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Skriv mere information"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Hent information specifik for lokalet."
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1350,7 +1350,7 @@
+ "NAVN\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "da uddata blev forberedt"
+
+@@ -1481,16 +1481,16 @@
+ msgid "cannot create temporary file"
+ msgstr "Kan ikke oprette midlertidig fil"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "kan ikke initiere arkivfil"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "kan ikke skifte størrelse på arkivfil"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "kan ikke læse arkivhoved med mmap"
+
+@@ -1506,88 +1506,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "kan ikke åbne lokalearkivfil med mmap"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "kan ikke låse nyt arkiv"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "kan ikke udvide lokalearkivfil"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "kan ikke ændre adgangtilstand på størrelsesændret lokalearkiv"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "kan ikke omdøbe nyt arkiv"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "kan ikke åbne lokalearkiv \"%s\""
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "kan ikke udføre 'stat' på lokalearkiv '%s'"
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "kan ikke låse lokalearkiv '%s'"
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "kan ikke læse arkivhoved"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "lokale '%s' eksisterer allerede"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "kan ikke tilføje til lokalearkiv"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "fil \"%s\" for lokalealias findes ikke"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Tilføjer %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "status på \"%s\" mislykkedes: %s: ignoreret"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" er ikke et katalog, ignoreret"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "kan ikke åbne katalog \"%s\": %s: ignoreret"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "ufuldstændig opsætning af lokalefiler i \"%s\""
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "kan ikke læse alle filer i \"%s\": ignoreret"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "lokale \"%s\" findes ikke i arkivet"
+@@ -1656,8 +1656,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "øvre grænse i område er ikke mindre end nedre grænse"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "lageret opbrugt"
+
+@@ -1683,7 +1683,7 @@
+ msgid "Another string for testing."
+ msgstr "En ny streng til afprøvning."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NAVN"
+
+@@ -1727,7 +1727,7 @@
+ msgid "duplicate set definition"
+ msgstr "duplikeret definition af sæt"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "dette er den første definition"
+
+@@ -1745,44 +1745,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "ukendt nøgleord '%s': linie ignoreret"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "duplikeret meddelelsesnummer"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "duplikeret meddelelsesidentifikator"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "Ugyldigt tegn: besked ignoreret"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "ugyldig linje"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "fejlagtig linie ignoreret"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "kan ikke åbne udfil '%s'"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "uafsluttet meddelelse"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "da den gamle katalogfil blev åbnet"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "konverteringsmoduler ikke tilgængelige"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "kan ikke bestemme undvigetegn"
+
+@@ -1790,7 +1790,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: véd ikke hvordan mere end 8 argumenter skal behandles\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Succes"
+@@ -2979,23 +2979,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sUkendt signal %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "lageret er konsistent, biblioteket er fejlbehæftet\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "området foran tildelt lagerblok snavset til\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "området efter tildelt lagerblok snavset til\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "blok frigjort to gange\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "fejlagtig mcheck_status, biblioteket er fejlbehæftet\n"
+
+@@ -3031,6 +3031,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "DATAFIL [UDFIL]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Ukendt fejl"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3055,7 +3059,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Lageret opbrugt: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Ukendt systemfejl"
+
+@@ -3448,25 +3452,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Afbrudt af et signal"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Ukendt fejl"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Brug: %s [-v specifikation] variabelnavn [søgesti]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "ukendt specifikation '%s'"
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "udefineret"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Ukendt variabel '%s'"
+@@ -3528,71 +3528,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: flaget '-W %s' tager ikke argumenter\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "Ingen træf"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Ugyldigt regulært udtryk"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Ugyldigt sammenligningstegn"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Ugyldigt tegnklassenavn"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Efterfølgende backslash"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Ugyldig tilbage-reference"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "Ubalanceret [ eller [^"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "Ubalanceret ( eller \\("
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "Ubalanceret \\{"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Ugyldig brug af \\{\\}"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Ugyldigt intervalslut"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Lageret opbrugt"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Ugyldigt foregående regulært udtryk"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "For tidlig afslutning på regulært udtryk"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Regulært udtryk for stort"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr "Ubalanceret ) eller \\)"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Intet foregående regulært udtryk"
+
+@@ -3746,24 +3746,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Tjenestekonfiguration som skal bruges"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "Enumeration er ikke understøttet på %s\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - hent indtastninger fra administrativ database."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Understøttede databaser:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "galt antal argumenter"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Ukendt database: %s\n"
+@@ -3792,68 +3792,72 @@
+ msgid "invalid pointer size"
+ msgstr "ugyldig størrelse for pegere"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: Kan ikke tildele lager\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: sokkel: Alle porte i brug\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "koble til adresse %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "Prøver %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write: (opsætter standard error): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (opsætter stderr): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: protokolfejl i opsætning af forbindelse\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "sokkel: protokolfejl i opsætning af forbindelse\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: kort indlæsning"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "lstat fejlede"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "ikke en almindelig fil"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "kan ikke åbne"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "fstat fejlede"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "forkert ejer"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "skrivbar af andre end ejer"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "hårdlænket et eller andet sted"
+
+@@ -4064,109 +4068,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "Kan ikke tage imod svar på rundsending"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: udskrift ville overskrive %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: kan ikke åbne %s: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: under skrivning af uddata %s: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "kan ikke finde C-præprocessor: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "kan ikke finde nogen C-præprocessor (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: C-præprocessoren fejlede med signal %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: C-præprocessoren fejlede med slutkode %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "ulovlig nettype: '%s'\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: for mange definitioner\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: arglist kode-fejl\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "filen '%s' eksisterer allerede og kan blive overskrevet\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "Kan ikke specificere mere end én indfil!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Denne implementation understøtter ikke nystil eller MT-sikker kode!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "Kan ikke bruge netid-flag med inetd-flag!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "Kan ikke bruge netid-flag uden TIRPC!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "Kan ikke bruge tabelflag med ny stil!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "'indfil' er nødvendig for flag til at generere skabelon.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Kan ikke have mere end et fil-genereringsflag!\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "brug: %s indfil\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM] [-Dnavn[=værdi]] [-i størrelse] [-I [-K sekunder]] [-Y søgesti] indfil\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o udfil] [indfil]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s nettype]* [-o udfil] [indfil]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n netid]* [-o udfil] [indfil]\n"
+@@ -5024,7 +5028,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "under allokering af hashtabel-indtastninger"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "kan ikke udføre stat() på fil '%s': %s"
+@@ -5037,153 +5041,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "Kan ikke køre nscd i sikker tilstand som upriviligieret bruger"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "under allokering af buffer: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "kan ikke åbne sokkel: %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "kan ikke få sokkel til at acceptere forbindelser: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: forespørgsel modtaget (version = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "kan ikke håndtere gammel forespørgsel af version %d. Nuværende version er %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "kan ikke udskrive resultat: '%s'"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "fejl ved forespørgsel på opkaldets id: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "under accept af forbindelse: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "afkortet læsning ved læsning af forespørgsel: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "nøglelængde i forespørgsel for lang: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "afkortet læsning ved læsning af forespørgsels-nøgle: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Kunne ikke køre nscd som bruger \"%s\""
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "getgrouplist mislykkedes"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "setgroups mislykkedes"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "under allokering af nøglekopi"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "under allokering af nærbuffer-indtastninger"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "afkortet skrivning i %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "Har ikke fundet '%s' i gruppe-nærbuffer!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "Ugyldigt numerisk gruppe-id (gid) \"%s\"!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "Har ikke fundet '%d' i gruppe-nærbuffer!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "Har ikke fundet '%s' i værts-nærbuffer!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Læs konfigurationsdata fra NAVN"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Udspalt ikke ny proces og vis meddelelser på nuværende tty"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "NUMMER"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Start ANTAL tråde"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Afbryd tjeneren"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Skriv nuværende konfigurationsstatistik ud"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TABEL"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Ugyldiggør den opgivne hurtigbuffer"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TABEL,ja"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Brug separat buffer for hver bruger"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Dæmon for bufring af navnetjeneste"
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "kører allerede"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Kun 'root' har lov til at bruge dette flag!"
+
+@@ -5273,22 +5282,22 @@
+ "%15ld%% træfrate for hurtigbuffer\n"
+ "%15s tjek /etc/%s for ændringer\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "Har ikke fundet '%s' i adgangskode-nærbuffer!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "Ugyldig numerisk bruger-id (uid) \"%s\"!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "Har ikke fundet '%d' i adgangskode-nærbuffer!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "kan ikke oprette egenskabsliste"
+
+@@ -5339,7 +5348,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", OS ABI: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Kan ikke åbne hurtigbufferfil %s\n"
+@@ -5385,17 +5394,17 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "Omdøbning af %s til %s fejlede"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "delt objekt er ikke åbent"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr ""
+ "Generationstæller for TLS tilbagestillet! Vær sød at indsende fejlrapport med\n"
+ "\"glibcbug\"-skriptet"
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "DST er ikke tilladt i SUIT/SGID-programmer"
+
+@@ -5414,181 +5423,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "kan ikke allokere afhængighedsliste"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "kan ikke allokere symbolsøgningsliste"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Filter understøttes ej med LD_TRACE_PRELINKING"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "FEJL I DYNAMISK LÆNKER!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "fejl da delte biblioteker indlæstes"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "Kan ikke allokere navnepost"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "Kan ikke oprette buffer for søgesti"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "kan ikke oprette RUNPATH/RPATH kopi"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "kan ikke oprette tabel over søgestier"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "kan ikke tage status på delt objekt"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "kan ikke åbne nulstil-enhed"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "kan ikke oprette delt objektbeskriver"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "kan ikke indlæse fildata"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "ELF-indlæsningskommandos tilpasning er ikke tilpasset siden"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "ELF-indlæsningskommandos adresse/tillæg er ikke tilpasset ordentligt"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "kan ikke oprette TLS-datastrukturer for første tråd"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "kan ikke behandle TLS-data"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "klarede ikke at afbilde fra delt objekt'"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "kan ikke indlæse udførbare dynamisk"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "kan ikke ændre lagerbeskyttelser"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "kan ikke mappe nulstil-sider"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "Kan ikke allokere lager til programhoved"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "objektfil har ingen dynamisk sektion"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "delt objekt kan ikke åbnes med dlopen()"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "kan ikke læse søgningsliste"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "For kort fil"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "ugyldigt ELF-hoved"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "Kodning for ELF-fildata er ikke \"big-endian\""
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "Kodning for ELF-fildata er ikke \"little-endian\""
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "ELF-filens version-identitet passer ikke med den aktuelle"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "ELF-filens OS ABI er ugyldig"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "ELF-filens ABI-version er ugyldig"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "Intern fejl"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "ELF-filens version passer ikke med den aktuelle"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "ELF-filens 'phentsize' er ikke den forventede størrelse"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "kun ET_DYN og ET_EXEC kan indlæses"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "kan ikke åbne delt objektfil"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "fejl ved relokering"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "Kan ikke udvide globalt defineringområde"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "tom dynamisk strengelement-erstatning"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "kan ikke oprette omfangsliste"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "kan ikke oprette datastrukturer for TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "ugyldig modus for dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "delt objekt kan ikke åbnes med dlopen(): statisk TLS-hukommelse for lille"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "Kan ikke gøre segment skrivbart for omflytning"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: profilereren fandt ingen PLTREL i objekt %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: profilereren fik slut på hukommelse for kopiering af PLTREL i %s\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "kan ikke genskabe segmentbeskyttelse efter omflytning"
+
+@@ -5644,119 +5665,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Konfigurerer værdier til Dynamisk Lænker"
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Stien '%s' givet mere end én gang"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s er ikke en kendt bibliotekstype"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Kan ikke stat() %s"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Kan ikke stat() %s\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s er ikke en symbolsk lænke\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "Kan ikke aflænke %s"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "Kan ikke lænke %s til %s"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (ændret)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (UDELADT)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "Kan ikke finde %s"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Kan ikke lstat %s"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Ignorerede filen %s da den ikke er en almindelig fil."
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "Ingen lænke oprettet da .so-navn ikke kunne findes for %s"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "Kan ikke åbne katalog %s"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Kan ikke lstat %s"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Kan ikke stat() %s"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Indputfilen %s ikke fundet\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "libc5-bibliotek %s i forkert katalog"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "libc6-bibliotek %s i forkert katalog"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "libc4-bibliotek %s i forkert katalog"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "bibliotekerne %s og %s i kataloget %s har samme .so-navn, men forskellig type"
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Kan ikke åbne konfigurationsfil %s"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "Kan ikke chdir til /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Kan ikke åbne hurtigbufferkatalog %s\n"
+--- glibc-2.3.2/po/es.po 2002-11-04 01:56:19.000000000 -0500
++++ glibc-2.3.2/po/es.po 2003-03-15 15:02:12.000000000 -0500
+@@ -1,13 +1,13 @@
+ # Mensajes en español para GNU libc.
+-# Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+ # Enrique Melero Gómez <melero@eurolands.com>, 1996, 1997.
+-# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 2001, 2002.
++# Santiago Vila Doncel <sanvila@unex.es>, 1997, 1998, 2001, 2002, 2003.
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: GNU libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-11-02 16:52+0100\n"
++"Project-Id-Version: GNU libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-03 17:20+0100\n"
+ "Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n"
+ "Language-Team: Spanish <es@li.org>\n"
+ "MIME-Version: 1.0\n"
+@@ -301,8 +301,8 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
+-msgstr "no se admiten conversiones de `%s' a `%s'"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "no se admite la conversión de `%s' a `%s'"
+
+ #: iconv/iconv_prog.c:246
+ #, c-format
+@@ -327,15 +327,15 @@
+ msgid "error while closing output file"
+ msgstr "error al cerrar el fichero de salida"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+ msgstr "Comunicar bichos usando el programa `glibcbug' a <bugs@gnu.org>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -348,9 +348,9 @@
+ "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n"
+ "FIN DETERMINADO.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -409,15 +409,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Prefijo utilizado para todos los accesos a ficheros"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "no se ha producido ningún fichero de salida debido a la existencia de avisos"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "al insertar en el árbol de búsqueda"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "no se puede generar el fichero de salida"
+
+@@ -1368,7 +1368,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "nombre simbólico sin terminar"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "secuencia de escape inválida"
+
+@@ -1398,39 +1398,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "hay inconsistencias al final de la línea"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Información del sistema:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Escribe los nombres de los locales disponibles"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Escribe los nombres de las asignaciones de caracteres disponibles"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Modifica el formato de salida:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Escribe los nombres de las categorías seleccionadas"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Escribe los nombres de las palabras clave seleccionadas"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Muestra más información"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Obtiene la información específica del locale."
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1438,7 +1438,7 @@
+ "NOMBRE\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "al preparar la salida"
+
+@@ -1571,16 +1571,16 @@
+ msgid "cannot create temporary file"
+ msgstr "no se puede crear un fichero temporal"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "no se puede inicializar el archivo"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "no se puede cambiar el tamaño del archivo"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "no se puede leer la cabecera del archivo"
+
+@@ -1596,88 +1596,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "no se puede leer el fichero de locales"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "no se puede bloquear el archivo nuevo"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "no se puede extender el archivo de locales"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "no se puede cambiar el modo de un archivo de locales redimensionado"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "no se puede renombrar el nuevo archivo"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "no se puede abrir el archivo de locales \"%s\""
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "no se puede efectuar `stat' sobre el archivo de locales \"%s\""
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "no se puede bloquear el archivo de locales \"%s\""
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "no se puede leer la cabecera del archivo"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "el local `%s' ya existe"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "no se puede añadir al archivo de locales"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "no se encontró el fichero de alias de locales `%s'"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Añadiendo %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "falló la llamada a `stat' sobre \"%s\": %s: descartado"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" no es un directorio; descarrtado"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "no se puede abrir el directorio \"%s\": %s: descartado"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "conjunto incompleto de ficheros de locales en \"%s\""
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "no se pueden leer todos los ficheros de \"%s\": descartado"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "el local \"%s\" no está en el archivo"
+@@ -1749,8 +1749,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "el límite superior del rango no es menor que el límite inferior"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "memoria agotada"
+
+@@ -1793,7 +1793,7 @@
+ msgid "Another string for testing."
+ msgstr "Otra cadena para hacer pruebas."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NOMBRE"
+
+@@ -1839,7 +1839,7 @@
+ msgid "duplicate set definition"
+ msgstr "definición de conjunto duplicada"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "esta es la primera vez que aparece la definición"
+
+@@ -1860,44 +1860,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "directiva desconocida `%s': línea pasada por alto"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "número de mensaje duplicado"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "identificador de mensaje duplicado"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "carácter inválido: mensaje descartado"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "línea inválida"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "una línea incorrecta no se tendrá en cuenta"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "no se puede abrir el fichero de salida `%s'"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "mensaje sin terminar"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "al abrir el fichero de catálogo antiguo"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "no están disponibles los módulos de conversión"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "no se puede determinar el carácter de escape"
+
+@@ -1909,7 +1909,7 @@
+ # me gustaría que hubiera otra palabra mejor. SV
+ # Siempre me han gustado F&C ;-)
+ # A mí también :-) sv
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Conseguido"
+@@ -3316,24 +3316,24 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sSeñal desconocida %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "la memoria es consistente, la biblioteca tiene un bicho\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "memoria alterada antes del bloque de memoria asignado\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "memoria alterada pasado el final del bloque de memoria asignado\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "bloque liberado dos veces\n"
+
+ # Revisar lo de bogus. creo que es eso.
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "valor de mcheck_status incorrecto, la biblioteca tiene un bicho\n"
+
+@@ -3372,6 +3372,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "FICHERODEDATOS [FICHERODESALIDA]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Error desconocido"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3396,7 +3400,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Memoria agotada: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Error del sistema desconocido"
+
+@@ -3855,25 +3859,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Interrumpido por una señal"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Error desconocido"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Modo de empleo: %s [-v especificación] nombre_de_variable [ruta]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "especificación \"%s\" desconocida"
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "sin definir"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Variable no reconocida `%s'"
+@@ -3949,71 +3949,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "No hay ninguna coincidencia"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "La expresión regular es errónea"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Carácter de unión inválido"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Nombre de clase de carácter inválido"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Barra invertida extra al final `\\'"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Referencia hacia atrás inválida"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "[ ó ^[ desemparejados"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "( ó \\( desemparejados"
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "\\{ desemparejado"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Contenido de \\{\\} inválido"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Final de rango inválido"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Memoria agotada"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "La expresión regular precedente es inválida"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "Fin no esperado de la expresión regular"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "La expresión regular es demasiado grande"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr ") ó \\) desemparejados"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "No existe ninguna expresión regular anterior"
+
+@@ -4174,24 +4174,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Configuración del servicio"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "La enumeración no está soportada sobre %s\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - obtiene entradas de la base de datos administrativa."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Bases de datos admitidas:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "número incorrecto de argumentos"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Base de datos desconocida: %s\n"
+@@ -4221,77 +4221,81 @@
+ msgid "invalid pointer size"
+ msgstr "tamaño de puntero inválido"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: No se puede asignar memoria\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: socket: Se están usando todos los puertos\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "conexión a la dirección %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "Intentando %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write (activando la salida de error estándar): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (activando la salida de error estándar): %m\n"
+
+ # ¿en la configuración del servicio?, ¿del circuito?, ¿o dejarlo así?
+ # Es de locos, estuve viendo las/los fuentes, preferí dejarlo así. em
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: fallo de protocolo al configurar el circuito\n"
+
+ # ??? lo mismo que arriba
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "socket: fallo de protocolo al configurar el circuito\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: lectura insuficiente"
+
+ # ## Lo mismo con lstat. sv
+ # Antes decía: No se pudo obtener información (lstat) del fichero .rhosts
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "lstat ha fallado"
+
+ # Antes decía: .rhosts no es un fichero regular
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "no es un fichero regular"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "no se puede abrir"
+
+ # ## Sugerencia: Añadir (fstat) después de información. sv
+ # Antes decía: No se pudo obtener información (fstat) del fichero .rhosts
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "fstat ha fallado"
+
+ # Antes decía: El propietario del fichero .rhosts no es válido
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "propietario incorrecto"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "puede ser modificado por otros además del propietario"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "hay un enlace duro en alguna parte"
+
+@@ -4539,115 +4543,115 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "No se puede recibir la respuesta al `broadcast'"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: la salida sobreescribiría %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: no se pudo abrir %s: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: al escribir el resultado %s: %m:"
+
+ # FIXME: El espacio final.
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "no se puede encontrar el preprocesador de C: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "no se puede encontrar ningún preprocesador de C (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: El preprocesador de C falló con la señal %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: El preprocesador de C falló con un código de retorno %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "tipodered ilegal :`%s'\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: demasiados defines\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: error de codificación de la lista de argumentos\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "el fichero `%s' ya existe y podría ser sobreescrito\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "No se puede especificar más de un fichero de entrada\n"
+
+ # Se admiten sugerencias para MT-safe. sv
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "¡Esta implementación no admite código de nuevo estilo o `MT-safe'!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "No se puede usar la opción netid con la opción inetd\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "No se puede usar la opción netid sin TIRPC\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "No se pueden usar las opciones de la tabla con el nuevo estilo\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr ""
+ "se necesita un \"fichero_de_entrada\" para las opciones de generación\n"
+ "de plantillas\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "No se puede tener más de una opción de generación de fichero\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "modo de empleo: %s fichero_de_entrada\n"
+
+ # Este mensaje tal vez habría que cortarlo por algún lado. sv
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dnombre[=valor]] [-i tamaño] [-I [-K segundos]] [-Y camino] fichero_de_entrada\n"
+
+ # Y este también. sv
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichero_de_salida] [fichero_de_entrada]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s tipored]* [-o fichero_de_salida] [fichero_de_entrada]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n netid]* [-o fichero_de_salida] [fichero_de_entrada]\n"
+@@ -5549,7 +5553,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "al asignar espacio para la entrada en la tabla `hash'"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "no se puede ejecutar stat() sobre el fichero `%s': %s"
+@@ -5562,155 +5566,160 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "No se puede ejecutar nscd en modo seguro como usuario no privilegiado"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "al asignar espacio para el caché: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "no se puede abrir el `socket': %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "no se puede activar el `socket' para aceptar conexiones: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: petición recibida (Versión = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr ""
+ "no se pueden manejar peticiones de la versión %d, la versión\n"
+ "actual es %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "no se puede escribir el resultado: %s"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "error al obtener el id de los llamantes: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "al aceptar la conexión: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "lectura insuficiente mientras se leía la petición: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "la longitud de la clave en la petición es demasiado larga: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "se acabaron los datos mientras se leía la clave de petición: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Fallo al ejecutar nscd como usuario `%s'"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "falló `getgrouplist'"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "falló `setgroups'"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "al asignar espacio para la copia de la clave"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "al asignar espacio para la entrada en el caché"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "escritura insuficiente en %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "No se ha encontrado \"%s\" en el caché de grupos"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "¡gid numérico inválido \"%s\"!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "No se ha encontrado \"%d\" en el caché de grupo"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "No se ha encontrado \"%s\" en el caché de `hosts'"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Lee datos de configuración de NOMBRE"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "No se divide y muestra los mensajes en la terminal actual"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "NÚMERO"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Comienza NÚMERO hilos"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Apagar el servidor"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Muestra una estadística sobre la configuración actual"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TABLA"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Invalida la caché especificada"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TABLA,sí"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Utiliza una caché separada para cada usuario"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Daemon de Caché del Servicio de Nombres."
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "ya está funcionando"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Solamente root puede usar esta opción"
+
+@@ -5800,22 +5809,22 @@
+ "%15ld%% tasa de aciertos de caché\n"
+ "%15s compruebe /etc/%s para cambios\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "No se ha encontrado \"%s\" en el caché de contraseñas"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "¡uid numérico inválido \"%s\"!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "No se ha encontrado \"%d\" en el caché de contraseñas"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "no se puede crear la lista de capacidades"
+
+@@ -5867,7 +5876,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", ABI del SO: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "No se puede abrir el fichero de caché %s\n"
+@@ -5914,17 +5923,17 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "Falló el renombramiento de %s a %s"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "el objeto compartido no está abierto"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr ""
+ "¡El contador de generaciones TLS ha vuelto a cero! Por favor envíe un informe\n"
+ "con el script 'glibcbug'"
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "No se permite DST en programas SUID/SGID"
+
+@@ -5946,185 +5955,199 @@
+ msgid "cannot allocate dependency list"
+ msgstr "no se pudo asignar espacio para la lista de dependencias"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "no se puede asignar espacio para la lista de búsqueda de los símbolos"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "No se admiten filtros con LD_TRACE_PRELINKING"
+
+ # Véase "A bug's life".
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "¡¡¡HAY UN BICHO EN EL ENLAZADOR DINÁMICO!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "error al cargar las bibliotecas compartidas"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "no se puede asignar el registro del nombre"
+
+ # He intentado mejorarlo un poco ...
+ #
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "no se puede crear un caché para la ruta de búsqueda"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "no se puede crear una copia RUNPATH/RPATH"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "no se puede crear la matriz de la ruta de búsqueda"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "no se puede efectuar `stat' sobre el objeto compartido"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "no se puede abrir el dispositivo de `zero fill'"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "no se puede crear el descriptor del objeto compartido"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "no se pueden leer los datos del fichero"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "El alineamiento de la orden de carga ELF no está alineada a la página"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "La dirección/desplazamiento de la orden de carga ELF no está bien alineada"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "no se pueden crear las estructuras de datos TLS para el hilo inicial"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "no se pueden manejar los datos de TLS"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "fallo al asignar un segmento del objeto compartido"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "no se puede cargar el ejecutable dinámicamente"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "no se pueden cambiar las protecciones de memoria"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "no se pueden asignar páginas de tipo `zero-fill'"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "no se puede asignar memoria para la cabecera del programa"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "el fichero objeto no tiene sección dinámica"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "no se puede efectuar dlopen() sobre el objeto compartido"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "no se puede crear la lista de búsqueda"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "fichero demasiado corto"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "cabecera ELF inválida"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "La codificación de los datos del fichero ELF no es `big-endian'"
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "La codificación de los datos del fichero ELF no es `little-endian'"
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "La identificación de versión del fichero ELF no encaja con la actual"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "ABI del OS del fichero ELF inválida"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "Versión de ABI del fichero ELF inválida"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "error interno"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "La versión del fichero ELF no coincide con la actual"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "El `phentsize' del fichero ELF no es el tamaño esperado"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "solamente pueden cargarse ET_DYN y ET_EXEC"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "no se puede abrir el fichero del objeto compartido"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "error de relocalización"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "no se puede extender el ámbito global"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "sustitución dinámica de un elemento por una cadena vacía"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "no se puede crear la lista de ámbito"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "no se pueden crear las estructuras de datos TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "modo inválido para dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr ""
++"no se puede efectuar dlopen() sobre el objeto compartido: memoria estática TLS\n"
++"demasiado pequeña"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "no se puede hacer el segmento escribible para su relocalización"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s el `profiler' no encontró ningún PLTREL en el objeto %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: el `profiler' se quedó sin memoria al ocultar el PLTREL de %s\n"
+
+ # Se admiten sugerencias. sv
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "no se puede restaurar el `prot' del segmento después de la relocalización"
+
+@@ -6183,119 +6206,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Configura las asociaciones de tiempo de ejecución del enlazador dinámico"
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Se ha dado la ruta `%s' más de una vez"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s no es un tipo de biblioteca conocido"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "No se puede efectuar `stat' sobre %s"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "No se puede efectuar `stat' sobre %s\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s no es un enlace simbólico\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "No se puede efectuar `unlink' sobre %s"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "No se puede crear un enlace de %s a %s"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (cambiado)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (SALTADO)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "No se encuentra %s"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "No se puede efectuar `lstat' sobre %s"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Descartado el fichero %s dado que no es un fichero regular."
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "No se creó el enlace ya que no se encontró el soname para %s"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "No se puede abrir el directorio %s"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "No se puede efectuar `lstat' sobre %s"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "No se puede efectuar `stat' sobre %s"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "No se encontró el fichero de entrada %s.\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "biblioteca libc5 %s en un directorio equivocado"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "biblioteca libc6 %s en un directorio equivocado"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "biblioteca libc4 %s en un directorio equivocado"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "las bibliotecas %s y %s en el directorio %s tienen el mismo soname pero distinto tipo."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "No se puede abrir el fichero de configuración `%s'"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "No se puede cambiar al directorio /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "No se puede leer el directorio de ficheros de caché %s\n"
+--- glibc-2.3.2/po/fi.po 2002-12-02 13:11:53.000000000 -0500
++++ glibc-2.3.2/po/fi.po 2003-03-15 15:02:12.000000000 -0500
+@@ -1,11 +1,16 @@
+ # Finnish messages for GNU libc.
+-# Copyright © 2002 Free Software Foundation, Inc.
+-# Lauri Nurmi <lanurmi@iki.fi>, 2002.
++# Copyright © 2003 Free Software Foundation, Inc.
++# Lauri Nurmi <lanurmi@iki.fi>, 2002, 2003.
+ # Thanks to:
+ # * Timo Laine <tila at surfeu.fi> for suggestions
+ #
+ # "locale" on suomennettu uudella sanalla "maa-asetusto".
+ #
++# Pitäisikö signaalien nimien olla aktiivissa vai passiivissa?
++# esim. Terminated = Päättynyt vai Päätetty?
++# Aborted = Keskeytynyt vai Keskeytetty?
++#
++#
+ # (parempia) suomennosehdotuksia kaivataan sanoille:
+ # exchange -- vaihto? (mitä ihmettä?)
+ # ellipsis -- sanankatkaisu? ATK-sanakirja sanoo näin.
+@@ -13,9 +18,9 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-12-02 05:20+0300\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-08 21:53+0200\n"
+ "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
+ "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+ "MIME-Version: 1.0\n"
+@@ -79,7 +84,7 @@
+
+ #: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
+ msgid "Terminated"
+-msgstr "Päättynyt"
++msgstr "Päätetty"
+
+ #: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
+ msgid "Urgent I/O condition"
+@@ -87,11 +92,11 @@
+
+ #: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
+ msgid "Stopped (signal)"
+-msgstr "Pysähtynyt (signaali)"
++msgstr "Pysäytetty (signaali)"
+
+ #: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
+ msgid "Stopped"
+-msgstr "Pysähtynyt"
++msgstr "Pysäytetty"
+
+ #: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
+ msgid "Continued"
+@@ -103,11 +108,11 @@
+
+ #: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
+ msgid "Stopped (tty input)"
+-msgstr "Pysähtynyt (päätteen syöte)"
++msgstr "Pysäytetty (päätteen syöte)"
+
+ #: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
+ msgid "Stopped (tty output)"
+-msgstr "Pysähtynyt (päätteen tuloste)"
++msgstr "Pysäytetty (päätteen tuloste)"
+
+ #: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
+ msgid "I/O possible"
+@@ -268,7 +273,7 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
++msgid "conversion from `%s' and to `%s' are not supported"
+ msgstr "muunnos \"%s\" <-> \"%s\" ei ole tuettu"
+
+ #: iconv/iconv_prog.c:246
+@@ -294,7 +299,7 @@
+ msgid "error while closing output file"
+ msgstr "virhe suljettaessa tulostiedostoa"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+@@ -302,9 +307,9 @@
+ "Ilmoita ohjelmistovirheistä \"glibcbug\"-skriptillä (englanniksi) osoitteeseen <bugs@gnu.org>.\n"
+ "Suomennoksen virheistä voit ilmoittaa listalle <translation-team-fi@lists.sourceforge.net>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -316,9 +321,9 @@
+ "Tämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista. Takuuta EI\n"
+ "ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -370,15 +375,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Jokaisen tiedoston käsittelyssä käytettävä etuliite"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "tulostiedostoa ei tuotettu varoituksen takia"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "lisättäessä hakupuuhun"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "tulostiedostoa ei voi luoda"
+
+@@ -1288,7 +1293,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "päättämätön symbolinen nimi"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "virheellinen ohjaussarja"
+
+@@ -1318,39 +1323,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "roskaa rivin lopussa"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Tietoa järjestelmästä:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Näytä käytettävissä olevien maa-asetustojen nimet"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Näytä käytettävissä olevien merkistökarttojen nimet"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Muuta tulostemuotoa:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Näytä valittujen kategorioiden nimet"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Näytä valittujen avainsanojen nimet"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Näytä lisää tietoa"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Hae maa-asetustokohtaiset tiedot."
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1358,7 +1363,7 @@
+ "NIMI\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "valmisteltaessa tulostetta"
+
+@@ -1489,16 +1494,16 @@
+ msgid "cannot create temporary file"
+ msgstr "tilapäistä tiedostoa ei voi luoda"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "arkistotiedostoa ei voi alustaa"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "arkistotiedoston kokoa ei voi muuttaa"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "arkiston otsaketta ei voi kartoittaa"
+
+@@ -1514,88 +1519,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "maa-asetustoarkistoa \"%s\" ei voi kartoittaa"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "uutta arkistoa ei voi lukita"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "maa-asetustoarkistoa ei voi laajentaa"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "maa-asetustoarkiston tilaa ei voi muuttaa"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "uutta arkistoa ei voi nimetä uudelleen"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "maa-asetustoarkistoa \"%s\" ei voi avata"
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "maa-asetustoarkiston \"%s\" tilaa ei voi lukea"
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "maa-asetustoarkistoa \"%s\" ei voi lukita"
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "arkiston otsaketta ei voi lukea"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "maa-asetusto \"%s\" on jo olemassa"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "ei voi lisätä maa-asetustoarkistoon"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "maa-asetustojen aliastiedostoa \"%s\" ei löydy"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Listätään %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "tiedoston \"%s\" tilan lukeminen epäonnistui: %s: ei huomioida"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" ei ole hakemisto: ei huomioida"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "hakemistoa \"%s\" ei voi avata: %s: ei huomioida"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "epätäydellinen valikoima maa-asetustotiedostoja hakemistossa \"%s\""
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "kaikkia tiedostoja hakemistossa \"%s\" ei voi lukea: ei huomioida"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "maa-asetusto \"%s\" ei ole arkistossa"
+@@ -1664,8 +1669,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "välin yläraja ei ole pienempi kuin alaraja"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "muisti lopussa"
+
+@@ -1692,7 +1697,7 @@
+ msgid "Another string for testing."
+ msgstr "Toinen merkkijono testausta varten"
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NIMI"
+
+@@ -1736,7 +1741,7 @@
+ msgid "duplicate set definition"
+ msgstr "kaksinkertainen joukon määrittely"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "tämä on ensimmäinen määrittely"
+
+@@ -1754,44 +1759,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "tuntematon direktiivi \"%s\": riviä ei huomioida"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "kaksinkertainen viestinumero"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "kaksinkertainen viestitunniste"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "virheellinen merkki: viestiä ei huomioida"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "virheellinen rivi"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "väärän muotoinen rivi jätetty huomioimatta"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "tulostiedostoa \"%s\" ei voi avata"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "päättämätön viesti"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "avattaessa vanhaa katalogitiedostoa"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "muunnosmoduulit eivät ole käytettävissä"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "ohjausmerkkiä ei voi määrittää"
+
+@@ -1799,7 +1804,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: ei osaa käsitellä yli kahdeksaa argumenttia\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Onnistui"
+@@ -2988,23 +2993,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sTuntematon signaali %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "muisti on yhtenäinen, kirjastossa on ohjelmistovirheitä\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "muisti kärsinyt ennen varattuja lohkoja\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "muisti kärsinyt varattujen lohkojen jälkeen\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "lohko vapautettu kahdesti\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "väärä mcheck_status, kirjastossa on ohjelmavirhe\n"
+
+@@ -3040,6 +3045,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "DATATIEDOSTO [TULOSTIEDOSTO]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Tuntematon virhe"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3064,7 +3073,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Muisti lopussa: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Tuntematon järjestelmävirhe"
+
+@@ -3457,25 +3466,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Signaalin keskeyttämä"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Tuntematon virhe"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "tuntematon määrittely \"%s\""
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "määrittelemätön"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Tunnistamaton muuttuja \"%s\""
+@@ -3537,71 +3542,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "Ei vastaavuutta"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Virheellinen säännöllinen ilmaus"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Virheellinen vertailumerkki"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Virheellinen merkkiluokan nimi"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Kenoviiva lopussa"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Virheellinen takaisinviittaus"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "Pariton [ tai [^"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "Pariton ( tai \\("
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "Pariton \\{"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Virheellinen \\{\\}:n sisältö"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Virheellinen välin loppu"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Muisti lopussa"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Virheellinen edeltävä säännöllinen ilmaus"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "Ennenaikainen säännöllisen ilmauksen loppu"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Liian suuri säännöllinen ilmaus"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr "Pariton ) tai \\)"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Ei edeltävää säännöllistä lauseketta"
+
+@@ -3622,7 +3627,7 @@
+
+ #: argp/argp-help.c:1189
+ msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+-msgstr "Pakolliset tai valinnaiset argumentit pitkille optioille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille optioille."
++msgstr "Pakolliset tai valinnaiset argumentit pitkille valitsimille ovat pakollisia tai valinnaisia kaikille vastaaville lyhyille valitsimille."
+
+ #: argp/argp-help.c:1572
+ msgid "Usage:"
+@@ -3755,24 +3760,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Käytettävät palveluasetukset"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "%s ei tue luettelemista\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - hae merkintöjä hallinnollisesta tietokannasta."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Tuetut tietokannat:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "väärä määrä argumentteja"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Tuntematon tietokanta: %s\n"
+@@ -3801,68 +3806,72 @@
+ msgid "invalid pointer size"
+ msgstr "virheellinen osoittimen koko"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: Muistin varaaminen ei onnistu\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: socket: Kaikki portit käytössä\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "yhdistä osoitteeseen %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "Yritetään %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write (alustetaan vakiovirhetuloste): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (alustetaan vakiovirhetuloste): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: protokollavirhe piiriasetuksissa\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "socket: protokollavirhe piiriasetuksissa\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: vajaa luku"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "tiedoston tilan luku epäonnistui"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "ei ole tavallinen tiedosto"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "ei voi avata"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "tiedoston tilan luku epäonnistui"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "virheellinen omistaja"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "kirjoitusoikeus muulla kuin omistajalla"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "kovalinkitetty johonkin"
+
+@@ -4035,7 +4044,7 @@
+
+ #: sunrpc/pm_getmaps.c:74
+ msgid "pmap_getmaps rpc problem"
+-msgstr "pmap_getmaps rpc-ongelma"
++msgstr "pmap_getmaps-rpc-ongelma"
+
+ #: sunrpc/pmap_clnt.c:72
+ msgid "__get_myaddress: ioctl (get interface configuration)"
+@@ -4073,109 +4082,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "Vastausta yleislähetykseen ei pystytä vastaanottamaan"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: tuloste ylikirjoittaisi tiedoston %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: tiedostoa %s ei voi avata: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: kirjoitettaessa tulostetta %s: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "C-esikääntäjää ei löydy: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "mitään C-esikääntäjää (cpp) ei löydy\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: C-esikääntäjä epäonnistui signaalilla %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: C-esikääntäjä epäonnistui paluuarvolla %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "virheellinen verkkotyyppi :\"%s\"\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: liian monta määrittelyä\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: argumenttillistan koodausvirhe\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "tiedosto \"%s\" on olemassa ja saatetaan ylikirjoittaa\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "Voidaan antaa vain yksi syötetiedosto!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Tämä toteutus ei tue uudentyyppistä MT-turvallista koodia!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "Netid-lippua ei voi käyttää inetd-lipun kanssa!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "Lippua netid ei voi käyttää ilman TIRPC:tä!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "Table-lippuja ei voi käyttää \"newstyle\":n kanssa!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "\"syötetiedosto\" vaaditaan mallin luontilippuja varten.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Tiedostonluontilippuja voi olla vain yksi!\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "käyttö: %s syötetiedosto\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dnimi[=arvo]] [-i koko] [-I [-K sekuntit]] [-Y polku] syötetiedosto\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o tulostiedosto] [syötetiedosto]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s verkkotyyppi]* [-o tulostiedosto] [syötetiedosto]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n verkkoid]* [-o tulostiedosto] [syötetiedosto]\n"
+@@ -5032,7 +5041,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "varattaessa tilaa tiivistetaulukkomerkinnälle"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "tiedoston \"%s\" tilaa ei voi lukea: %s"
+@@ -5045,153 +5054,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "Ohjelmaa nscd ei voi ajaa turvallisessa tilassa normaalin käyttäjän oikeuksilla"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "varattaessa välimuistia: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "pistoketta ei voi avata: %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "pistoketta ei voi asettaa vastaanottamaan yhteyksiä: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: pyyntö vastaanotettu (Versio = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "vanhaa pyyntöversiota %d ei voi käsitellä; nykyinen versio on %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "tulosta ei voi kirjoittaa: %s"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "virhe kutsujan tunnisteen hakemisessa: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "hyväksyttäessä yhteyksiä: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "vajaa luku luettaessa pyyntöä: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "avaimen pituus pyynnössä liian pitkä: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "vajaa luku luettaessa pyyntöavainta: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Ohjelman nscd ajaminen käyttäjän \"%s\" oikeuksilla epäonnistui"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "getgrouplist epäonnistui"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "setgroups epäonnistui"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "varattaessa tilaa avainkopiolle"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "varattaessa tilaa välimuistimerkinnälle"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "vajaa kirjoitus tiedostossa %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "\"%s\" ei löytynyt ryhmävälimuistista!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "Virheellinen numeerinen gid \"%s\"!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "\"%d\" ei löytynyt ryhmävälimuistista!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "\"%s\" ei löytynyt isäntävälimuistista!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Lue asetukset tiedostosta NIMI"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Älä haaraudu ja näytä viestit nykyisessä tty:ssä"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "MÄÄRÄ"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Käynnistä MÄÄRÄ säiettä"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Sammuta palvelin"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Näytä nykyiset asetustilastot"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TAULUKKO"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Poista käytöstä määritelty välimuisti"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TAULUKKO,kyllä"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Käytä erillistä välimuistia jokaiselle käyttäjälle"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Nimipalvelun välimuistidemoni."
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "on jo käynnissä"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Vain root voi käyttää tätä valitsinta!"
+
+@@ -5281,22 +5295,22 @@
+ "%15ld%% välimuistiosuma-aste\n"
+ "%15s tarkista muutokset tiedostosta /etc/%s\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "\"%s\" ei löytynyt salasanavälimuistista!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "Virheellinen numeerinen uid \"%s\"!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "\"%d\" ei löytynyt salasanavälimuistista!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "kykylistaa ei voi luoda"
+
+@@ -5347,7 +5361,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", OS ABI: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Välimuistitiedostoa %s ei voi avata\n"
+@@ -5393,15 +5407,15 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "Uudelleennimeäminen %s -> %s epäonnistui"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "jaettu objekti ei ole avoin"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr "TLS-luontilaskurin ylivuoto! Lähetä raportti \"glibcbug\"-skriptillä."
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "DST ei ole sallittu SUID/SGID-ohjelmissa"
+
+@@ -5418,181 +5432,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "riippuvuuslistalle ei voi varata muistia"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "symbolihakulistalle ei voi varata muistia"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Suodattimet eivät ole tuettuja LD_TRACE_RPELINKING:in kanssa"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "DYNAAMISEN LINKITTÄJÄN OHJELMISTOVIRHE!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "virhe ladattaessa jaettuja kirjastoja"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "nimitietueelle ei voi varata muistia"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "hakupolulle ei voi luoda välimuistia"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "RUNPATH/RPATH-kopiota ei voi luoda"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "hakupolkutaulukkoa ei voi luoda"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "jaetun objektin tilaa ei voi lukea"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "nollatäyttölaitetta ei voi avata"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "jaettua objektikahvaa ei voi luoda"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "tiedoston dataa ei voi lukea"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "ELF-latauskomennon tasaus ei ole sivutasattu"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "ELF-latauskomennon osoite/siirtymä ei ole tasattu oikein"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "alkusäikeelle ei voi varata TLS-tietorakenteita"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "TLS-dataa ei voi käsitellä"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "segmentin kartoitus jaetusta objektista epäonnistui"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "käynnistettävää tiedostoa ei voi ladata dynaamisesti"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "muistin suojausta ei voi muuttaa"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "nollatäytteisiä sivuja ei voi kartoittaa"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "ohjelman otsakkeelle ei voi varata muistia"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "objektitiedostossa ei ole dynaamista osaa"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "jaettua objektia ei voi avata funktiolla dlopen()"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "hakulistaa ei voi luoda"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "tiedosto on liian lyhyt"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "virheellinen ELF-otsikko"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "ELF-tiedoston tavujärjestys ei ole \"big-endian\""
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "ELF-tiedoston tavujärjestys ei ole \"little-endian\""
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "ELF-tiedoston versiotunnus ei vastaa nykyistä"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "ELF-tiedoston OS ABI on virheellinen"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "ELF-tiedoston ABI-versio virheellinen"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "sisäinen virhe"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "ELF-tiedoston versio ei vastaa nykyistä"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "ELF-tiedoston phent-koko ei ole odotetun kokoinen"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "vain ET_DYN ja ET_EXEC voidaan ladata"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "jaettua objektitiedostoa ei voi avata"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "uudelleensijoitusvirhe"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "globaalia aluetta ei voi laajentaa"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "tyhjän dynaamisen merkkijonon osan korvaus"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "aluelistaa ei voi luoda"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "TLS-tietorakenteita ei voi luoda"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "virheellinen tila funktiolle dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "jaettua objektia ei voi avata funktiolla dlopen(): staattinen TLS-muisti on liian pieni"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "segmenttiä ei voi muuttaa kirjoitettavaksi uudelleensijoitusta varten"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: profiloija ei löytänyt PLTREL-kenttää objektista %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: profiloijan muisti loppui varjostettaessa objektin %s PLTREL-kenttää\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "segmentin suojausta ei voi palauttaa uudelleensijoituksen jälkeen"
+
+@@ -5648,119 +5674,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Säädä dynaamisen linkittäjän ajonaikaiset sidonnat."
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Polku \"%s\" on annettu useammin kuin kerran"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s ei ole tunnettu kirjastotyyppi"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Tiedoston %s tilaa ei voi lukea"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Tiedoston %s tilaa ei voi lukea\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s ei ole symbolinen linkki\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "Tiedoston %s linkitystä ei voi poistaa"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "Linkitys %s -> %s ei onnistu"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (muutettu)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (OHITETTU)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "%s ei löydy"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Tiedoston %s tilaa ei voi lukea"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Tiedostoa %s ei huomioitu, koska se ei ole tavallinen tiedosto."
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "Linkkiä ei luotu, koska tiedostolle %s ei löytynyt so-nimeä"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "Hakemistoa %s ei voi avata"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Tiedoston %s tilaa ei voi lukea"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Tiedoston %s tilaa ei voi lukea"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Syötetiedostoa %s ei löydy.\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "libc5-kirjasto %s on väärässä hakemistossa"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "libc6-kirjasto %s on väärässä hakemistossa"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "libc4-kirjasto %s on väärässä hakemistossa"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "kirjastoilla %s ja %s hakemistossa %s on sama so-nimi, mutta eri tyypit."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Asetustiedostoa %s ei voi avata"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "Juurihakemistoon / siirtyminen ei onnistu"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Välimuistihakemistoa %s ei voi avata\n"
+--- glibc-2.3.2/po/fr.po 2002-10-12 22:01:44.000000000 -0400
++++ glibc-2.3.2/po/fr.po 2003-03-15 15:02:12.000000000 -0500
+@@ -4,9 +4,9 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: GNU libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-10-12 12:00-0500\n"
++"Project-Id-Version: GNU libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-03 08:00-0500\n"
+ "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
+ "Language-Team: French <traduc@traduc.org>\n"
+ "MIME-Version: 1.0\n"
+@@ -259,8 +259,8 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
+-msgstr "conversions de « %s » vers « %s » ne sont pas supportées"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "conversions de « %s » et de , vers « %s » ne sont pas supportées"
+
+ #: iconv/iconv_prog.c:246
+ #, c-format
+@@ -285,15 +285,15 @@
+ msgid "error while closing output file"
+ msgstr "Erreur lors de la fermeture du fichier de sortie"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+ msgstr "Rapporter toutes anomalies via le script « glibcbug » à <bugs@gnu.org>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -306,9 +306,9 @@
+ "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
+ "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -360,15 +360,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Préfixe utilisé pour tous les accès fichiers"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "Aucun fichier de sortie généré en raison d'un avertissement déjà émis"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "lors d'une insertion dans un arbre de recherche"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "Ne peut générer le fichier de sortie"
+
+@@ -1288,7 +1288,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "Nom symbolique incomplet"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "Séquence d'échappement invalide"
+
+@@ -1318,39 +1318,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "rebut en suffixe à la fin de la ligne"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Information système:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Écriture des noms disponibles des localisations"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Écriture des noms disponibles des tables de caractères"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Format de sortie de modification:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Écriture des noms sélectionnés des catégories"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Écriture des noms sélectionnés des mots clés"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Afficher plus informations"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Trouver l'information locale spécifique"
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1358,7 +1358,7 @@
+ "NOM\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "lors de la préparation de la sortie"
+
+@@ -1489,16 +1489,16 @@
+ msgid "cannot create temporary file"
+ msgstr "ne peut créer un fichier temporaire"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "ne peut initialiser le fichier d'archive"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "ne peut modifier la taille du fichier d'archive"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "ne peut mapper l'en-tête de l'archive"
+
+@@ -1514,88 +1514,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "ne peut mapper l'archive de localisation"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "ne peut verrouiller la nouvelle archive"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "ne peut augmenter la taille du fichier de l'archive de localisation"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "ne peut modifier les protections de l'archive des localisations dont la taille a changé"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "ne peut changer le nom de la nouvelle archive"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "ne peut ouvrir l'archive des localisations « %s »"
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "ne peut évaluer par `stat' l'archive des localisations « %s »"
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "ne peut verrouiller l'archive des localisations « %s »"
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "ne peut lire l'en-tête de l'archive"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "localisation « %s » existe déjà"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "ne peut l'ajouter à l'archive des localisations"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "alias du fichier des localisations « %s » non trouvé"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Ajout de %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "échec d'évaluation par stat() de « %s »: %s: ignoré"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "« %s » n'est pas un répertoire; ignoré"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "ne peut ouvrir le répertoire « %s »: %s: ignoré"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "jeu incomplet de fichiers dea localisations dans « %s »"
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "ne peut lire tous les fichiers dans « %s »: ignoré"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "localisation « %s » n'est pas dans l'archive"
+@@ -1666,8 +1666,8 @@
+ "La limite supérieure de l'intervalle n'est pas plus petite\n"
+ "que la limite inférieure."
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "Mémoire épuisée"
+
+@@ -1693,7 +1693,7 @@
+ msgid "Another string for testing."
+ msgstr "Une autre chaîne pour fins de test."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NOM"
+
+@@ -1737,7 +1737,7 @@
+ msgid "duplicate set definition"
+ msgstr "Double définitions de jeux"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "Ceci est la première définition."
+
+@@ -1755,44 +1755,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "Directive inconnue « %s »: ligne ignorée"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "Double messages du numéro"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "Double identificateurs de message"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "Caractères invalide: message ignoré"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "Ligne invalide"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "Ligne incorrecte ignorée"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "Ne peut ouvrir le fichier de sortie « %s »"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "Message incomplet"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "lors de l'ouverture du vieux fichier du catalogue"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "Module de conversion 'est pas disponible"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "Ne peut déterminer une séquence de caractère"
+
+@@ -1800,7 +1800,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: ne sait pas comment traiter plus de 8 arguments\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Succès"
+@@ -2989,23 +2989,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%ssignal inconnu %d.\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "La mémoire est consistente, la librairie est fautive.\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "Mémoire écrasée avant le bloc alloué\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "Mémoire écrasée après la fin du bloc alloué\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "Bloc libéré deux fois\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "Statut de « mcheck_status » erroné, la librarie est erronée.\n"
+
+@@ -3041,6 +3041,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "DATAFILE [FICHIER_DE_SORTIE]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Erreur inconnue"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3065,7 +3069,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: mémoire épuisée: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Erreur système inconnue"
+
+@@ -3465,25 +3469,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Interrompu par un signal"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Erreur inconnue"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Usage: %s [-v spécification] nom_de_variable [chemin_d_accès]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "spécification inconnu « %s »"
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "indéfini"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Variable non reconnue « %s »"
+@@ -3545,71 +3545,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: l'option « -W %s » ne permet pas d'argument\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "Pas de concordance"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Expression régulière invalide"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Caractère de fusionnement invalide"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Nom de classe de caractères invalide"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Barre oblique inverse en suffixe"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Référence arrière invalide"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "Échec du pairage de [ ou de [^"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "Échec du pairage de ( ou de \\("
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "Échec du pairage de \\{"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Contenu invalide de \\{\\}"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Fin d'intervalle invalide"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Mémoire épuisée"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Expression régulière précédente invalide"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "Fin prématurée de l'expression régulière"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Expression régulière trop grosse"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr "Échec du pairage de ) ou de \\)"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Aucune expression régulière précédente"
+
+@@ -3765,24 +3765,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Configuration de service à être utilisée"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "Énumération non supportée sur %s\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent() - obtenir les entrées de la base de données administratives"
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Base de données supportées:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "Mauvais nombre d'arguments"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Base de données inconnue: « %s »\n"
+@@ -3811,68 +3811,72 @@
+ msgid "invalid pointer size"
+ msgstr "Taille de pointeur invalide"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: ne peut allouer de la mémoire\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: socket: tous les ports sont occupés\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "Connexion établie à l'adresse %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "On tente %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: écriture (configuration de stderr): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (configuration de stderr): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: échec du protocole dans la configuration du circuit\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "socket: échec de protocole dans la configuration du circuit.\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: lecture écourtée"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "Échec d'évaluation lstat()"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "N'est pas un fichier régulier"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "Ne peut ouvrir"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "Échec d'évaluation fstat()"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "Mauvais propriétaire"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "accessible en écriture par d'autres que le propriétaire"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "lien direct rencontré"
+
+@@ -4083,109 +4087,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "Ne peut recevoir l'accusé réception à la requête faite par diffusion"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: la sortie écraserait %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: incapable d'ouvrir %s: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: lors de l'écriture sur la sortie %s: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "Ne peut trouver le préprocesseur C: %s\n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "Ne peut trouver un préprocesseur C (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: échec du préprocesseur C -- code de terminaison: %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: échec du préprocesseur C -- code de terminaison: %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "« nettype » illégal :« %s »\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: trop de définitions\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: erreur dans la liste d'arguments de codage\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "Le fichier « %s » existe déjà et peut avoir été écrasé.\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "Ne peut spécifier plus d'un fichier d'entrée!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Cette implantation ne supporte pas le nouveau style ou le code MT-safe!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "Ne utiliser le sémaphore « netid » avec le sémaphore « inetd »!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "Ne peut utiliser le sémaphore « netid » sans « TIRPC »!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "Ne peut utiliser la table des sémaphores avec « newstyle »!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "\"fichier_d_entrée\" est requis pour la génération du gabarit des indicateurs.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Ne peut avoir plus d'un fichier de génération de sémaphores!\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "usage: %s fichier_d_entrée\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dname[=valeur]] [-i taille] [-I [-K secondes]] [-Y chemin] fichier\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o fichier_de_sortie] [fichier_d_entrée]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s type_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n id_réseau]* [-o fichier_de_sortie] [fichier_d_entrée]\n"
+@@ -5042,7 +5046,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "lors de l'allocation d'entrées dans la table de hachage"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "Ne peut évaluer par stat() le fichier « %s »: %s"
+@@ -5055,153 +5059,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "Ne peut exécuter nscd en mode sécuritaire en tant qu'usager sans privilège"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "lors de l'allocation de la cache: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "Ne peut ouvrir le socket: « %s »"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "Ne peut activer le socket pour accepter des connexions: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: requête reçue (Version = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "Ne peut traiter une requête d'une vieille version %d; la version courante est %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "Ne peut écrire les résultats: « %s »"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "erreur lors de la recherche de l'identificateur de l'appelant: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "lors de l'acceptation de connexion: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "Lecture écourtée lors de la lecture de la requête: « %s »"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "La longueur de la clé de la requête est trop longue: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "Lecture écourtée lors de la lecture de la clé de requête: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Échec d'exécution de nscd en tant qu'usager « %s »"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "échec de getgrouplist"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "échec de setgroups"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "lors de l'allocation d'une copie de clé"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "lors de l'allocation d'entrée dans la cache"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "Écriture écourtée dans %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "N'a pas trouvé « %s » dans la cache du groupe!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "gid numérique invalide « %s »!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "N'a pas trouvé « %d » dans la cache du groupe!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "N'a pas trouvé « %s » dans la cache de la liste des hôtes!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Lire les données de configuration du NOM"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Ne pas cloner le processus par fork() et ne pas afficher de message sur le tty courant"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "NUMÉRO"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Démarrage du NOMBRE de « threads »"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Arrêter le serveur"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Afficher les statistiques de la configuration courante"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TABLE"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Invalide la cache spécifiée"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TABLE,oui"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Utiliser une cache séparée pour chaque usager"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "« Daemon » de la cache du service de noms"
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "déjà en exécution"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Seul ROOT est autorisé à utiliser cette option!"
+
+@@ -5291,22 +5300,22 @@
+ "%15ld%% taux de repérage\n"
+ "%15s vérifier /etc/%s pour les changements\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "N'a pas trouvé « %s » dans la cache des mots de passe!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "uid numérique invalide « %s »!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "N'a pas trouvé « %d » dans la cache des mots de passe!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "Ne peut créer une liste des possibilités"
+
+@@ -5357,7 +5366,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", ABI Système d'exploitation: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Ne peut ouvrir le fichier de la cache %s\n"
+@@ -5403,15 +5412,15 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "ÉCHEC du changement de nom de %s vers %s"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "Objet partagé non ouvert"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr "Compteut de génération TLS a bouclé! SVP expédier un rapport avec le script 'glibcbug'"
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "DST non permis dans un programme SUID/SGID"
+
+@@ -5428,181 +5437,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "Ne peut allouer une liste de dépendances"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "Ne peut allouer la liste des symboles recherchées"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Filtres non supportés avec LD_TRACE_PRELINKING"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "PROBLÈME DANS LE CHARGEUR DE LIENS DYNAMIQUES"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "erreur lors du chargement des librairies partagées"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "Ne peut allouer une nom d'enregistrement"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "Ne peut créer une cache pour le chemin de recherche"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "Ne peut créer une copie RUNPATH/RPATH"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "Ne peut créer un tableau des chemins de recherche"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "Échec évaluer par stat() l'objet partagé"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "Ne peut ouvrir le fichier de périphérique rempli de zéros"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "Ne peut créer un objet descripteur partagé"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "Ne peut lire le fichier de données"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "Commande de chargement sur une page ELF qui n'est pas alignée"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "Commande de chargement sur une adresse ELF incorrectement alignée"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "ne peut allouer une structure de données TLS pour un thread initial"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "ne peut traiter les données TLS"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "Échec d'adressage (mapping) du segement de l'objet partagé"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "Ne peut dynamiquement charger un exécutable"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "Ne peut modifier les protections de mémoire"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "Ne peut adresser des pages rempliez de zéros"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "Ne peut allouer de la mémoire pour une en-tête de programme"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "Le fichier objet n'a pas de section dynamique"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "L'objet partagé ne peut pas être ouvert via dlopen()"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "Ne peut créer une liste de recherche"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "Fichier trop court"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "En-tête ELF invalide"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "Données d'encodage du fichier ELF n'est pas big-endian"
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "Données d'encodage du fichier ELF n'est pas little-endian"
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "Identificateur de version du fichier ELF ne concorde pas avec la version courante"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "Système d'exploitation du fichier ELF ABI invalide"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "Version du fichier ELF ABI invalide"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "Erreur interne"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "Version du fichier ELF ne concorde pas avec la version courante"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "« Phentize » du fichier ELF ne concorde pas avec la taille prévue"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "Seuls ET_DYN et ET_EXEC peuvent être chargés"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "Ne peut ouvrir le fichier d'objet partagé"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "erreur de relocalisation"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "Ne peut augmenter l'étendue de la plage"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "La chaîne dynamique d'un jeton de substition est vide."
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "ne peut créer une liste d'étendue"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "ne peut créer les structures de données TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "mode invalide pour dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "l'objet partagé ne peut pas être ouvert via dlopen(): mémoire statiques TLS trop petite"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "Ne peut rendre le segment inscritible lors d'une relocalisation"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: profileur n'a repéré aucun PLTREL dans l'objet %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: profileur mémoire épuisée par l'ombrage PLTREL de %s\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "ne peut restaurer le segment prot après reloc"
+
+@@ -5658,119 +5679,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Configuration dynamique des éditions de liens lors de l'exécution"
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Chemin « %s » donné plus d'une fois"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s n'est pas un type de librairie connue"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Ne peut évaluer par stat %s"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Ne peut évaluer par stat %s\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s n,est pas un lien symbolique\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "Ne peut enlever le lien (unlink) %s"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "Ne peut établir un lien entre %s et %s"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (a été modifié)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (ESCAMOTÉ)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "Ne peut repérer %s"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Ne peut évaluer par lstat %s"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Ignorer le fichier %s étant donné que ce n'est pas un fichier régulier"
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "Aucun lien créé étant donné qu'il n'a pas été repéré pour %s"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "Ne peut ouvrir le répertoire %s"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Ne peut évaluer par lstat %s"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Ne peut évaluer par stat %s"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Fichier d'entrée %s non repéré\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "librairie libc5 %s est dans le mauvais répertoire"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "librairie libc6 %s est dans el mauvais répertoire"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "librairie libc4 %s est dans le mauvais répertoire"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "Les librairies %s et %s du répertoire %s ont le même nom mais sont de types différents"
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Ne peut ouvrir le fichier de configuration %s"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "Ne peut se positionner (chdir) dans /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Ne peut ouvrir le fichier de la cache des répertoires %s\n"
+--- glibc-2.3.2/po/gl.po 2002-10-05 14:15:44.000000000 -0400
++++ glibc-2.3.2/po/gl.po 2003-03-15 15:02:12.000000000 -0500
+@@ -4,9 +4,9 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-10-05 15:13+0200\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-03 20:13+0100\n"
+ "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
+ "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
+ "MIME-Version: 1.0\n"
+@@ -259,8 +259,8 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
+-msgstr "as conversións de `%s' a `%s' non están soportadas"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "as conversións de `%s' e a `%s' non están soportadas"
+
+ #: iconv/iconv_prog.c:246
+ #, c-format
+@@ -285,15 +285,15 @@
+ msgid "error while closing output file"
+ msgstr "erro ao pecha-lo ficheiro de saída"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+ msgstr "Informe dos erros usando o script `glibcbug' a <bugs@gnu.org>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -305,9 +305,9 @@
+ "Isto é software libre; vexa o código fonte polas condicións de copia. NON hai\n"
+ "garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -359,15 +359,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Prefixo a empregar para tódolos accesos a ficheiro"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "non se producíu un ficheiro de saída porque se deron avisos"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "ao inserir na árbore de busca"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "non se pode xera-lo ficheiro de saída"
+
+@@ -1277,7 +1277,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "nome simbólico non rematado"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "secuencia de escape non válida"
+
+@@ -1307,39 +1307,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "lixo na fin da liña"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Información do sistema:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Escribi-los nomes dos `locales' dispoñibles"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Escribi-los nomes dos mapas de caracteres dispoñibles"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Modifica-lo formato de saída:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Escribi-los nomes das categorías seleccionadas"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Escribi-los nomes das claves seleccionadas"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Amosar máis información"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Obter información específica do `locale'."
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1347,7 +1347,7 @@
+ "NOME\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "ao prepara-la saída"
+
+@@ -1478,16 +1478,16 @@
+ msgid "cannot create temporary file"
+ msgstr "non se pode crea-lo ficheiro temporal"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "non se pode inicializa-lo ficheiro de arquivo"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "non se pode cambia-lo tamaño do ficheiro de arquivo"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "non se pode mapea-la cabeceira do arquivo"
+
+@@ -1503,88 +1503,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "non se pode mapea-lo ficheiro de arquivo de locales"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "non se pode bloquea-lo novo arquivo"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "non se pode extende-lo ficheiro de arquivo de locales"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "non se pode cambia-lo modo do arquivo de locales co novo tamaño"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "non se pode renomea-lo novo arquivo"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "non se pode abri-lo arquivo de locales \"%s\""
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "non se pode facer stat do arquivo de locales \"%s\""
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "non se pode bloquea-lo arquivo de locales \"%s\""
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "non se pode le-la cabeceira do arquivo"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "o locale '%s' xa existe"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "non se pode engadir no arquivo de locales"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "non se atopou o ficheiro de alias de locales `%s'"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Engadindo %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "a chamada a stat de \"%s\" fallou: %s: ignórase"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" non é un directorio; ignórase"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "non se pode abr-lo directorio \"%s\": %s: ignorado"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "conxunto de ficheiros de locale incompleto en \"%s\""
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "non se poden ler tódolos ficheiros de \"%s\": ignorado"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "o locale \"%s\" non está no arquivo"
+@@ -1653,8 +1653,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "o límite superior do rango non é menor có límite inferior"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "memoria esgotada"
+
+@@ -1680,7 +1680,7 @@
+ msgid "Another string for testing."
+ msgstr "Outra cadea para facer probas."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NOME"
+
+@@ -1725,7 +1725,7 @@
+ msgid "duplicate set definition"
+ msgstr "definición de conxunto duplicada"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "esta é a primeira definición"
+
+@@ -1743,44 +1743,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "directiva `%s' descoñecida: liña ignorada"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "número de mensaxe duplicado"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "identificador de mensaxes duplicado"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "carácter non válido: mensaxe ignorada"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "liña non válida"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "ignórase unha liña mal formada"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "non se pode abri-lo ficheiro de saída `%s'"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "mensaxe non rematada"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "ao abrir un antigo ficheiro de catálogo"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "os módulos de conversión non están dispoñibles"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "non se pode determina-lo carácter de escape"
+
+@@ -1788,7 +1788,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: non se sabe como manexar máis de 8 argumentos\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Éxito"
+@@ -2977,23 +2977,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sSinal descoñecido %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "a memoria é consistente, a biblioteca ten erros\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "memoria alterada antes do bloque reservado\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "memoria alterada despois do bloque reservado\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "bloque liberado dúas veces\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "mcheck_status falso, a biblioteca ten erros\n"
+
+@@ -3029,6 +3029,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "FICHEIRO_DATOS [FICHEIRO_SAÍDA]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Erro descoñecido"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3053,7 +3057,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Memoria esgotada: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Erro de sistema descoñecido"
+
+@@ -3446,25 +3450,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Interrompido por un sinal"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Erro descoñecido"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Uso: %s [-v especificación] nome_variable [nome]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "especificación `%s' descoñecida"
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "non definido"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Variable `%s' non recoñecida"
+@@ -3526,71 +3526,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: a opción `-W %s' non acepta parámetros\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "Nada coincide"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Expresión regular incorrecta"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Carácter de ordenación incorrecto"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Nome da clase de caracteres incorrecto"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Barra invertida extra ó final"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Referencia cara a atrás incorrecta"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "[ ou [^ sen parella"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "( ou \\( sen parella"
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "\\{ sen parella"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Contido de \\{\\} incorrecto"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Final do rango incorrecto"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Memoria esgotada"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Expresión regular precedente incorrecta"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "Final prematura da expresión regular"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Expresión regular demasiado grande"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr ") ou \\) sen parella"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Non hai unha expresión regular precedente"
+
+@@ -3744,24 +3744,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Configuración do servicio a empregar"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "A enumeración non está soportada en %s\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - obte-las entradas da base de datos administrativa."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Bases de datos soportadas:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "número de parámetros incorrecto"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Base de datos descoñecida: %s\n"
+@@ -3790,68 +3790,72 @@
+ msgid "invalid pointer size"
+ msgstr "tamaño de punteiro non válido"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: Non se pode reservar memoria\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmp: socket: Tódolos portos están sendo utilizados\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "conectarse ao enderezo %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "Probando %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write (configurando stderr): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (configurando stderr): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: fallo de protocolo no establecemento do circuito\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "socket: fallo do protocolo no establecemento do circuito\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: lectura curta"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "fallou a chamada a lstat"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "non é un ficheiro normal"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "non se pode abrir"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "fallou a chamada a fstat"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "propietario incorrecto"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "escribible por alguén distinto do propietario"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "ten un enlace duro nalgún sitio"
+
+@@ -4062,109 +4066,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "Non se pode recibi-la resposta á multidifusión"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: a saída sobreescribiría %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: non se pode abrir %s: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: ao escribir á saída %s: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "non podo atopa-lo preprocesador de C: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "non podo atopar un preprocesador de C (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: O preprocesador de C fallou co sinal %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: O preprocesador de C fallou co código de saída %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "tipo de rede ilegal :`%s'\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: demasiadas definicións\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: erro de codificación da lista de parámetros\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "o ficheiro `%s' xa existe e pode ser sobreescrito\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "¡Non se pode indicar máis dun ficheiro de entrada!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "¡Esta implementación non soporta código de novo estilo ou seguro para MT!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "¡Non se pode utiliza-la opción netid coa opción inetd!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "¡Non se pode utiliza-la opción netid sen TIRPC!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "¡Non se poden utiliza-las opcións de táboa con newstyle!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "Precísase dun ficheiro de \"entrada\" para as opcións de xeración de patróns.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Non se pode ter máis dunha opción de xeración de ficheiros\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "uso: %s ficheiro-de-entrada\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dnome[=valor]] [-i tamaño] [-I [-K segundos]] [-Y rota] entrada\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o saída] [entrada]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s tiporede]* [-o saída] [entrada]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n idrede]* [-o saída] [entrada]\n"
+@@ -5021,7 +5025,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "ao reservar espacio para a entrada da táboa hash"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "non se pode facer stat() sobre o ficheiro `%s': %s"
+@@ -5034,153 +5038,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "Non se pode executar nscd en modo seguro coma usuario non privilexiado"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "ao reservar espacio para a caché: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "non se pode abrir un socket: %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "non se pode facer que o socket acepte conexións: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: petición recibida (Version = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "non se pode manexa-la antiga petición versión %d; a versión actual é %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "non se pode escribi-lo resultado: %s"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "erro ao obte-lo identificador do chamante: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "ao aceptar unha conexión: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "lectura demasiado curta ao le-la petición: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "lonxitude da clave da petición demasiado grande: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "lectura demasiado curta ao le-la clave de petición: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Non se puido executar nscd coma o usuario '%s'"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "fallou a chamada a getgrouplist"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "fallou a chamada a setgroups"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "ao reservar espacio para a copia da clave"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "ao reservar espacio para a entrada de caché"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "escritura demasiado curta en %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "¡Non atopei \"%s\" na caché de grupos!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "¡Identificación numérica de grupo \"%s\" non válida!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "¡Non atopei \"%d\" na caché de grupos!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "¡Non atopei \"%s\" na caché de servidores!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Le-los datos de configuración de NOME"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Non bifurcar e visualiza-las mensaxes no terminal actual"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "NÚMERO"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Comezar NÚMERO fíos"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Apaga-lo servidor"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Visualiza-la estatística da configuración actual"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TÁBOA"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Invalida-la caché especificada"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TÁBOA,si"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Usar unha caché separada para cada usuario"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Demo de Cache de Servicio de Nomes."
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "xa en execución"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "¡Só root pode usar esa opción!"
+
+@@ -5270,22 +5279,22 @@
+ "%15ld%% tasa de acertos de caché\n"
+ "%15s comprobe /etc/%s para ve-los cambios\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "¡Non atopei \"%s\" na caché de contrasinais!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "¡Identificación numérica de usuario \"%s\" non válida!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "¡Non atopei \"%d\" na caché de contrasinais!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "non se pode crea-la lista de capacidades"
+
+@@ -5336,7 +5345,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", OS ABI: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Non se puido abri-lo ficheiro de caché %s\n"
+@@ -5382,15 +5391,15 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "Fallou o renomeado de %s a %s"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "o obxecto compartido non está aberto"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr "O xerador de TLS deu unha volta completa. Informe co script 'glibcbug'."
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "Non se admite DST en programas SUID/SGID"
+
+@@ -5407,181 +5416,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "non se pode localiza-la lista de dependencias"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "non se pode localiza-la lista de busca de símbolos"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Non se soportan os filtros con LD_TRACE_PRELINKING"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "¡¡¡ERRO NO LIGADOR DINÁMICO!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "erro ao carga-las bibliotecas compartidas"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "non se pode localiza-lo rexistro de nome"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "non se pode crea-la caché para a ruta de busca"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "non se pode crear unha copia de RUNPATH/RPATH"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "non se pode crea-lo vector de rutas de busca"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "non se puido facer stat sobre o obxecto compartido"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "non se pode abrir un dispositivo de recheo de ceros"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "non se pode crear un descriptor de obxecto compartido"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "non se pode le-los datos do ficheiro"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "O comando de carga ELF non está aliñado coa páxina"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "O enderezo/desprazamento do comando de carga ELF non está ben aliñado"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "non se poden crea-las estructuras de datos TLS para o fío inicial"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "non se poden manexa-los datos TLS"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "non se puido mapear un segmento dun obxecto compartido"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "non se pode cargar dinamicamente o executable"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "non se poden cambia-las proteccións de memoria"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "non se poden mapear páxinas de recheo de ceros"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "Non se pode reservar memoria para a cabeceira do programa"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "o ficheiro obxecto non ten unha sección dinámica"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "non se pode facer dlopen() sobre o obxecto compartido"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "non se pode crea-la lista de busca"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "ficheiro pequeno de máis"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "cabeceira ELF non válida"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "A codificación dos datos do ficheiro ELF non é \"big-endian\""
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "A codificación dos datos do ficheiro ELF non é \"little-endian\""
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "O identificador da versión do ficheiro ELF non coincide co actual"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "ABI do SO do ficheiro ELF non válida"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "Versión do ABI do ficheiro ELF non válida"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "erro interno"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "A versión do ficheiro ELF non coincide coa actual"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "O phentsize do ficheiro ELF non é o tamaño esperado"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "só se pode cargar ET_DYN e ET_EXEC"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "non se pode abrir un ficheiro de obxecto compartido"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "erro de cambio de reserva"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "non se pode extende-lo alcance global"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "substitución de elementos da cadea dinámica baleira"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "non se pode crea-la lista de alcance"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "non se poden crea-las estructuras de datos TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "modo incorrecto para dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "non se pode facer dlopen() sobre o obxecto compartido: a memoria TLS estática é pequena de máis"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "non se pode face-lo segmento gravable para o movemento"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: o perfilador non atopou PLTREL no obxecto %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: o perfilador esgotou a memoria sombreando o PLTREL de %s\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "non se pode restaura-la protección do segmento despois de movelo"
+
+@@ -5637,119 +5658,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Configura-las Asignacións de Tempo de Execución do Ligador Dinámico"
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Proporcionouse a ruta `%s' máis dunha vez"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s non é un tipo de biblioteca coñecido"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Non se puido executar `stat' sobre %s"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Non se puido executar `stat' sobre %s\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s non é unha ligazón simbólica\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "Non se puido borrar %s"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "Non se puido ligar %s a %s"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (cambiou)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (OMITIDO)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "Non se pode atopar %s"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Non se pode facer lstat sobre %s"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Ignorouse o ficheiro %s porque non é un ficheiro normal"
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "Non se creou unha ligazón porque non se atopou o soname para %s"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "Non se puido abri-lo directorio %s"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Non se pode facer lstat sobre %s"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Non se pode executar `stat' sobre %s"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Non se atopou o ficheiro de entrada %s.\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "biblioteca libc5 %s nun directorio incorrecto"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "biblioteca libc6 %s nun directorio incorrecto"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "biblioteca libc4 %s nun directorio incorrecto"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "as bibliotecas %s e %s do directorio %s teñen o mesmo soname pero diferente tipo."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Non se puido abri-lo ficheiro de configuración %s"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "Non se pode cambiar ao directorio /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Non se puido abri-lo directorio de ficheiros caché %s\n"
+--- glibc-2.3.2/po/sk.po 2002-10-14 04:29:01.000000000 -0400
++++ glibc-2.3.2/po/sk.po 2003-03-15 15:02:13.000000000 -0500
+@@ -1,13 +1,13 @@
+ # Slovak translation of the GNU-libc-messages.
+-# Copyright (C) 1998-2001, 2002 Free Software Foundation, Inc.
+-# Marcel Telka <marcel@telka.sk>, 2002.
++# Copyright (C) 1998-2001, 2002, 2003 Free Software Foundation, Inc.
++# Marcel Telka <marcel@telka.sk>, 2002, 2003.
+ # Stanislav Meduna <stano@meduna.org>, 1998-2001.
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-10-14 09:46+0200\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-03 08:31+0200\n"
+ "Last-Translator: Marcel Telka <marcel@telka.sk>\n"
+ "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+ "MIME-Version: 1.0\n"
+@@ -260,7 +260,7 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
++msgid "conversion from `%s' and to `%s' are not supported"
+ msgstr "konverzie z `%s' a do `%s' nie sú podporované"
+
+ #: iconv/iconv_prog.c:246
+@@ -286,15 +286,15 @@
+ msgid "error while closing output file"
+ msgstr "chyba poÄas zatvárania výstupného súboru"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+ msgstr "Chyby hláste na adrese <bugs@gnu.org> - použite skript `glibcbug'.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -302,14 +302,14 @@
+ "This is free software; see the source for copying conditions. There is NO\n"
+ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+ msgstr ""
+-"Autorské práva (C) %s Free Software Foundation, Inc.\n"
++"Autorské práva © %s Free Software Foundation, Inc.\n"
+ "Toto je voľne šíriteľný softvér; pre podmienky kopírovania pozri zdrojový kód.\n"
+ "Neposkytuje sa ŽIADNA záruka; ani Äo sa týka OBCHODOVATEĽNOSTI alebo VHODNOSTI\n"
+ "NA KONKRÉTNY ÚČEL.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -360,15 +360,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Predpona použitá pre všetky prístupy k súborom"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "výstupný súbor nebol vytvorený kvôli výskytu varovaní"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "poÄas vkladania do vyhľadávacieho stromu"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "nie je možné vygenerovať výstupný súbor"
+
+@@ -1278,7 +1278,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "neukonÄené symbolické meno"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "neprípustná escape-sekvencia"
+
+@@ -1308,39 +1308,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "smetie na konci riadku"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Systémové informácie:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Vypísať názvy dostupných národných prostredí"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Vypísať názvy dostupných znakových sád"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Modifikovať výstupný formát:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Vypísať názvy vybraných kategórií"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "VypísaÅ¥ názvy vybraných kľúÄových slov"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Vypisovať viac informácií"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Získať informáciu špecifickú pre národné prostredie."
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1348,7 +1348,7 @@
+ "NÃZOV\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "poÄas prípravy výstupu"
+
+@@ -1479,16 +1479,16 @@
+ msgid "cannot create temporary file"
+ msgstr "nie je možné vytvoriÅ¥ doÄasný súbor"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "nie je možné inicializovať archívny súbor"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "nie je možné zmeniť veľkosť archívneho súboru"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "nie je možné namapovaÅ¥ hlaviÄku archívu"
+
+@@ -1504,88 +1504,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "nie je možné namapovať súbor archívu národného prostredia"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "nie je možné uzamknúť nový archív"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "nie je možné rozšíriť súbor archívu národného prostredia"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "nie je možné zmeniť mód archívu národného prostredia s upravenou veľkosťou"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "nie je možné premenovať nový archív"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "nie je možné otvoriť archív národného prostredia \"%s\""
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "nie je možné zistiť stav archívu národného prostredia \"%s\""
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "nie je možné uzamknúť archív národného prostredia \"%s\""
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "nie je možné preÄítaÅ¥ hlaviÄku archívu"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "národné prostredie `%s' už existuje"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "nie je možné pridať do archívu národného prostredia"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "súbor aliasu národného prostredia `%s' nebol nájdený"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Pridávam %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "zistenie stavu \"%s\" zlyhalo: %s: ignorované"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" nie je adresár; ignorované"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "nie je možné otvoriť adresár \"%s\": %s: ignorované"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "nekompletná skupina súborov národných prostredí v \"%s\""
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "nie je možné naÄítaÅ¥ vÅ¡etky súbory v \"%s\": ignorované"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "národné prostredie \"%s\" nie je v archíve"
+@@ -1654,8 +1654,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "horný limit rozsahu je menší ako dolný"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "nedostatok pamäti"
+
+@@ -1681,7 +1681,7 @@
+ msgid "Another string for testing."
+ msgstr "Iný reťazec pre testovanie."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NÃZOV"
+
+@@ -1725,7 +1725,7 @@
+ msgid "duplicate set definition"
+ msgstr "duplicitná definícia sady"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "toto je prvá definícia"
+
+@@ -1743,44 +1743,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "neznáma direktíva `%s' - riadok ignorovaný"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "duplicitné Äíslo správy"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "duplicitný identifikátor správy"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "neprípustný znak: správa ignorovaná"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "neprípustný riadok"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "nesprávny riadok ignorovaný"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "nie je možné otvoriť výstupný súbor `%s'"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "neukonÄená správa"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "poÄas otvárania starého katalógu"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "moduly konverzie nie sú dostupné"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "nie je možné urÄiÅ¥ znak escape"
+
+@@ -1788,7 +1788,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: nevie ako má spracovať viac ako 8 argumentov\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Úspech"
+@@ -2977,23 +2977,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sNeznámy signál %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "pamäť je konzistentná, knižnica je chybná\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "pamäť pred prideleným blokom prepísaná\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "pamäť za koncom prideleného bloku prepísaná\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "blok uvoľnený dvakrát\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "pochybný mcheck_status, knižnica má chyby\n"
+
+@@ -3029,6 +3029,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "DÃTOVÃ_SÚBOR [VÃSTUPNÃ_SÚBOR]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Neznáma chyba"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3053,7 +3057,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Nedostatok pamäti: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Neznáma chyba systému"
+
+@@ -3446,25 +3450,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Prerušené signálom"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Neznáma chyba"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Použitie: %s [-v špecifikácia] meno_premennej [cesta]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "neznáma špecifikácia \"%s\""
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "nedefinované"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Nerozpoznaná premenná `%s'"
+@@ -3526,71 +3526,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: voľba `-W %s' nedovoľuje pouťiť argument\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "Žiadna zhoda"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Neprípustný regulérny výraz"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Neprípustný znak triedenia"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Neprípustný názov triedy znakov"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Koncové spätné lomítko"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Neprípustný spätný odkaz"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "Nepárová [ or [^"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "Nepárová ( or \\("
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "Nepárová \\{"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Neprípustný obsah \\{\\}"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Neprípustný koniec rozsahu"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Pamäť vyÄerpaná"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Neprípustný predchádzajúci regulérny výraz"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "PredÄasný koniec regulérneho výrazu"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Regulérny výraz príliš veľký"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr "Nepárová ) or \\)"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Žiadny predchádzajúci regulérny výraz"
+
+@@ -3744,24 +3744,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Konfigurácia služby, ktorá má byť použitá"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "Enumerácia %s nie je podporované\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - získať záznamy z administratívnej databázy."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Podporované databázy:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "chybný poÄet argumentov"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Neznáma databáza %s\n"
+@@ -3790,68 +3790,72 @@
+ msgid "invalid pointer size"
+ msgstr "neprípustná veľkostť ukazovateľa"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: Nie je možné prideliť pamäť\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: socket: Všetky porty sú použité\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "spojiť sa s adresou %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "Skúšam %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write (nastavenie stderr): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (nastavenie stderr): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: chyba protokolu poÄas prípravy okruhu\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "socket: chyba protokolu pri príprave okruhu\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: krátke Äítanie"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "lstat zlyhal"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "nie je regulérny súbor"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "nie je možné otvoriť"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "fstat sa nepodaril"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "chybný vlastník"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "zapisovateľný nielen pre vlastníka"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "niekde existuje pevný odkaz"
+
+@@ -4062,109 +4066,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "Nie je možné prijaÅ¥ odpoveÄ na broadcast"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: výstup by prepísal %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: nie je možné otvoriť %s: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: poÄas zápisu výstupu %s: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "nie je možné nájsť preprocesor: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "nie je možné nájsť žiadny C preprocesor (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: C preprocesor zlyhal so signálom %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: C preprocesor zlyhal s výstupným kódom %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "chybný nettype :`%s'\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: priveľa defines\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: chyba kódovania zoznamu argumentov\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "súbor `%s' už existuje a môže byť prepísaný\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "Nie je možné zadať viac ako jeden vstupný súbor!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Táto implementácia nepodporuje nový Å¡týl alebo MT-bezpeÄný kód!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "Príznaky netid a inetd nie je možné použiÅ¥ súÄasne!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "Nie je možné použiť príznak netid bez TIRPC!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "Pri použití nového štýlu nie je možné použiť príznaky tabuľky!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "\"vst_súbor\" je vyžadovaný pri použití príznakov tvorby vzoru.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Nie je možné použiť viac ako jeden príznak tvorby súboru!\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "použitie: %s vstupný_súbor\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dnázov[=hodnota]] [-i veľkosť] [-I [-K sekundy]] [-Y cesta] vst_súbor\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o výst_súbor] [vst_súbor]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s nettype]* [-o výst_súbor] [vst_súbor]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n netid]* [-o výst_súbor] [vst_súbor]\n"
+@@ -5027,7 +5031,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "poÄas pridelenia záznamu hash-tabuľky"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "nie je možné vykonať stat() súboru `%s': %s"
+@@ -5040,153 +5044,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "Nie je možné spustiÅ¥ nscd v bezpeÄnom režime ako neprivilegovaný používateľ"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "poÄas pridelenia cache: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "nie je možné otvoriť socket `%s'"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "nie je možné povoliť socketu prijímať spojenia: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: žiadosť prijatá (verzia = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "nie je možné spracovať starú verziu žiadosti %d; aktuálna verzia je %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "nie je možné zapísať výsledok: %s"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "chyba pri získaní id volajúceho: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "poÄas prijatia spojenia: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "neúplné Äítanie žiadosti: `%s'"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "dĺžka kľúÄa v žiadosti príliÅ¡ dlhá: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "neúplné Äítanie kľúÄa žiadosti: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Zlyhalo spustenie nscd ako používateľ '%s'"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "getgrouplist zlyhalo"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "setgroups zlyhalo"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "poÄas pridelenia kópie kľúÄa"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "poÄas pridelenia záznamu cache"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "neúplný zápis v %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "Nenájdené \"%s\" v cache skupín!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "Neplatné Äíselné gid \"%s\"!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "Nenájdené \"%d\" v cache skupín!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "Nenájdené \"%s\" v cache poÄítaÄov!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "NaÄítaÅ¥ údaje o konfigurácii z NÃZOV"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Nespúšťať samostatný proces a zobrazovať správy na aktuálnom termináli"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "POÄŒET"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Spustiť POČET vlákien"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Zastaviť server"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Vypísať štatistiku aktuálnej konfigurácie"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TABUĽKA"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Zneplatniť zadanú cache"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TABUĽKA,áno"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Použiť samostatnú cache pre každého používateľa"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Démon cache služby názvov."
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "už beží"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Táto voľba je dostupná iba superužívateľovi!"
+
+@@ -5276,22 +5285,22 @@
+ "%15ld%% úspešnosť cache\n"
+ "%15s skontrolujte /etc/%s na zmeny\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "Nenájdené \"%s\" v cache hesiel!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "Neplatné Äíselné uid \"%s\"!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "Nenájdené \"%d\" v cache hesiel!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "nie je možné vytvoriÅ¥ zoznam zluÄiteľnosti"
+
+@@ -5342,7 +5351,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", OS ABI: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Nie je možné otvoriť cache súbor %s\n"
+@@ -5388,15 +5397,15 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "Premenovanie %s na %s zlyhalo"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "zdieľaný objekt nie je otvorený"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr "PoÄítadlo generovania TLS pretieklo! Prosím poÅ¡lite správu pomocou skriptu 'glibcbug'."
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "DST nie je pre SUID/SGID programy povolené"
+
+@@ -5413,181 +5422,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "nie je možné prideliť pamäť pre zoznam závislostí"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "nie je možné prideliť pamäť pre vyhľadávací zoznam symbolov"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Filtre nie sú podporované s LD_TRACE_PRELINKING"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "CHYBA V DYNAMICKOM LINKERI!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "chyba poÄas naÄítavania zdieľaných knižníc"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "nie je možné prideliť pamäť pre záznam názvu"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "Nie je možné vytvoriť cache pre hľadanie v ceste"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "nie je možné vytvoriť kópiu RUNPATH/RPATH"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "nie je možné vytvoriť pole ciest"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "nepodarilo sa zistiť stav zdieľaného objektu"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "nie je možné otvoriť zariadenie pre naplnenie nulami"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "nie je možné vytvoriť deskriptor zdieľaného objektu"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "nie je možné naÄítaÅ¥ údaje súboru"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "ELF zarovnanie príkazu nie je zarovnané na stránku"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "ELF zavádzacia adresa/posunutie nie je správne zarovnaná"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "nie je možné prideliÅ¥ dátové Å¡truktúry TLS pre poÄiatoÄné vlákno"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "nie je možné spracovať TLS dáta"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "nepodarilo sa namapovať segment zo zdieľaného objektu"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "nie je možné dynamicky naÄítaÅ¥ spustiteľný súbor"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "nie je možné zmeniť ochranu pamäti"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "nie je možné namapovať stránky vyplnené nulami"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "nie je možné prideliÅ¥ pamäť pre hlaviÄku programu"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "objektový súbor neobsahuje žiadnu dynamickú sekciu"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "zdieľaný objekt nemôže byť otvorený pomocou dlopen()"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "nie je možné vytvoriť vyhľadávací zoznam"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "súbor je príliš krátky"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "neprípustná ELF hlaviÄka"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "Kódovanie dát v ELF súbore nie je big-endian"
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "Kódovanie dát v ELF súbore nie je little-endian"
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "Identifikácia verzie ELF súboru sa nezhoduje s aktuálnou"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "Neplatný OS ABI ELF súboru"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "Neplatná verzia ABI ELF súboru"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "interná chyba"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "Verzia súboru ELF sa nezhoduje s aktuálnou"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "phentsize ELF súboru nie je oÄakávaná"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "iba ET_DYN a ET_EXEC môžu byÅ¥ naÄítané"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "nie je možné otvoriť súbor zdieľaného objektu"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "chyba relokácie"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "nie je možné rozšíriť globálny rozsah"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "prázdna substitúcia tokenu dynamického reťazca"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "nie je možné vytvoriť zoznam pôsobnosti"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "nie je možné dátové štruktúry TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "neprípustný mód pre dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "zdieľaný objekt nemôže byť otvorený pomocou dlopen(): statická pamäť TLS je príliš malá"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "nie je možné zmeniť segment na zapisovateľný pre relokáciu"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: profiler nenašiel PLTREL v objekte %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: profiler vyÄerpal pamäť pri vytváraní kópie PLTREL z %s\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "nie je možné obnoviť segment prot po reloc"
+
+@@ -5643,119 +5664,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Konfigurácia runtime väzieb dynamického linkera."
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Cesta `%s' bola zadaná viac ako raz"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s nie je známy typ knižnice"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Zlyhal stat %s"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Zlyhal stat %s\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s nie je symbolický odkaz\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "Nie je možné odstrániť %s"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "Nie je možné vytvoriť odkaz %s na %s"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (zmenené)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (VYNECHANÉ)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "Nie je možné nájsť %s"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Zlyhal lstat %s"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Súbor %s ignorovaný, keÄže nie je regulérnym súborom."
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "Odkaz nebol vytvorený, keÄže pre %s nebolo možné nájsÅ¥ soname"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "Nie je možné otvoriť adresár %s"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Zlyhal lstat %s"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Zlyhal stat %s"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Vstupný súbor %s nebol nájdený.\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "libc5 knižnica %s je v nesprávnom adresári"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "libc6 knižnica %s je v nesprávnom adresári"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "libc4 knižnica %s je v nesprávnom adresári"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "knižnice %s a %s v adresári %s majú rovnaké soname, ale odlišný typ."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Nie je možné otvoriÅ¥ konfiguraÄný súbor %s"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "Nie je možné zmeniť adresár na /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Nie je možné otvoriť adresár cache súboru %s\n"
+--- glibc-2.3.2/po/sv.po 2002-10-14 16:03:36.000000000 -0400
++++ glibc-2.3.2/po/sv.po 2003-03-15 15:02:13.000000000 -0500
+@@ -1,13 +1,13 @@
+ # GNU libc message catalog for swedish
+-# Copyright © 1996, 1998, 2001, 2002 Free Software Foundation, Inc.
+-# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002.
+-# Revision: 1.43
++# Copyright © 1996, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
++# Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003.
++# Revision: 1.46
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3.1\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-10-14 21:09+0200\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-04 18:46+0100\n"
+ "Last-Translator: Jan Djärv <jan.h.d@swipnet.se>\n"
+ "Language-Team: Swedish <sv@li.org>\n"
+ "MIME-Version: 1.0\n"
+@@ -260,7 +260,7 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
++msgid "conversion from `%s' and to `%s' are not supported"
+ msgstr "konvertering från \"%s\" och till \"%s\" stöds ej"
+
+ #: iconv/iconv_prog.c:246
+@@ -286,7 +286,7 @@
+ msgid "error while closing output file"
+ msgstr "fel vid stängning av utfilen"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+@@ -294,9 +294,9 @@
+ "Rapportera fel med programmet \"glibcbug\" till <bugs@gnu.org>.\n"
+ "Rapportera fel på översättningen till <sv@li.org>.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -309,9 +309,9 @@
+ "INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT\n"
+ "ÄNDAMÅL.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -363,15 +363,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Prefix att använda för alla filåtkomster"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "ingen utfil skapad på grund av varningar"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "vid insättning i sökträd"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "kan inte generera utfil"
+
+@@ -1283,7 +1283,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "oavslutat symboliskt namn"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "ogiltig kontrollsekvens"
+
+@@ -1313,39 +1313,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "avslutande skräp vid radslutet"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Systeminformation:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Skriv namn på tillgängliga lokaler"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Skriv namn på tillgängliga teckenuppsättningar"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Ändra utdataformat:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Skriv namn på valda kategorier"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Skriv namn på valda nyckelord"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Skriv mer information"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Hämta lokal-specifik information"
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1353,7 +1353,7 @@
+ "NAMN\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "när utdata förbereddes"
+
+@@ -1484,16 +1484,16 @@
+ msgid "cannot create temporary file"
+ msgstr "kan inte skapa temporärfil"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "kan inte initiera arkivfil"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "kan inte byta storlek på arkivfil"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "kan inte läsa arkivhuvud med mmap"
+
+@@ -1509,88 +1509,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "kan inte öppna lokalarkivfil med mmap"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "kan inte låsa nytt arkiv"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "kan inte utöka lokalarkivfil"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "kan inte ändra åtkomstläge på storleksändrat lokalarkiv"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "kan inte byta namn på nytt arkiv"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "kan inte öppna lokalarkiv \"%s\""
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "kan inte ta status på lokalarkiv \"%s\""
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "kan inte låsa lokalarkiv \"%s\""
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "kan inte läsa arkivhuvud"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "lokal \"%s\" finns redan"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "kan inte lägga till till lokalarkiv"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "fil \"%s\" för lokalalias hittas inte"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "Lägger till %s\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "ta status på \"%s\" misslyckades: %s: ignorerad"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" är inte en katalog, ignorerad"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "kan inte öppna katalog \"%s\": %s: ignorerad"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "ofullständig uppsättning av lokalfiler i \"%s\""
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "kan inte läsa alla filer i \"%s\": ignorerad"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "lokal \"%s\" finns inte i arkivet"
+@@ -1659,8 +1659,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "övre gräns i intervall är inte mindre än undre gräns"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "minne slut"
+
+@@ -1686,7 +1686,7 @@
+ msgid "Another string for testing."
+ msgstr "En till sträng för test."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "NAMN"
+
+@@ -1730,7 +1730,7 @@
+ msgid "duplicate set definition"
+ msgstr "dubblerad definition av mängd"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "detta är den första definitionen"
+
+@@ -1748,44 +1748,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "okänt direktiv \"%s\": rad ignorerad"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "dubblerat meddelandenummer"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "dubblerad meddelandeidentifierare"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "ogiltigt tecken: meddelandet ignorerat"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "ogiltig rad"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "felaktig rad ignorerad"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "kan inte öppna utfil \"%s\""
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "oavslutat meddelande"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "när gammal katalogfil öppnades"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "konverteringsmoduler inte tillgängliga"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "kan inte avgöra kontrolltecken"
+
+@@ -1793,7 +1793,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: kan inte hantera mer än 8 argument\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Lyckat"
+@@ -2982,23 +2982,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sOkänd signal %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "minnet är konsistent, biblioteket är felaktigt\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "minnet förstört före allokerat block\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "minnet förstört efter slutet på allokerat block\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "block frigjort två gånger\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "felaktig mcheck_status, biblioteket är felaktigt\n"
+
+@@ -3034,6 +3034,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "DATAFIL [UTFIL]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Okänt fel"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3058,7 +3062,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Minnet slut: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Okänt systemfel"
+
+@@ -3451,25 +3455,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Avbruten av en signal"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Okänt fel"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Användning: %s [-v specifikation] variabelnamn [sökväg]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "okänd specifikation \"%s\""
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "odefinierad"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Okänd variabel \"%s\""
+@@ -3531,71 +3531,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "Ingen träff"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Ogiltigt reguljärt uttryck"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Ogiltigt kollationeringstecken"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Ogiltigt teckenklassnamn"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "Avslutande omvänt snedstreck"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Ogiltig bakåtreferens"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "Obalanserade [ eller [^"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "Obalanserade ( eller \\("
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "Obalanserad \\{"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "Ogiltigt innehåll i \\{\\}"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Ogiltigt intervallslut"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Minnet slut"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Ogiltigt föregående reguljärt uttryck"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "För tidigt slut på reguljärt uttryck"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Reguljärt uttryck för stort"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr "Obalanserade ) eller \\)"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Inget föregående reguljärt uttryck"
+
+@@ -3749,24 +3749,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Tjänstekonfiguration som ska användas"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "Uppräkning stöds inte på %s\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - hämta poster från administrativ databas"
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Databaser som stöds:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "fel antal argument"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Okänd databas: %s\n"
+@@ -3795,68 +3795,72 @@
+ msgid "invalid pointer size"
+ msgstr "ogiltig pekarstorlek"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: Kan inte allokera minne\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: uttag (socket): Alla portar används\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "anslut till adress %s: "
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "Provar %s...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write: (sätter upp standard fel): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (sätter upp standard fel): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: protokollfel i förbindelseuppsättning\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "uttag (socket): protokollfel i förbindelseuppsättning\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: läsning gav för lite data"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "misslyckades ta status (lstat)"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "inte en normal fil"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "kan inte öppna"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "misslyckades ta status (fstat)"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "olämplig ägare"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "skrivbar för andra än ägaren"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "hårdlänkad någonstans"
+
+@@ -4067,109 +4071,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "Kan inte ta emot svar på utsändning"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: utdata skulle skriva över %s\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: kan inte öppna %s: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: när resultatet %s skrevs: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "kan inte hitta C preprocessor: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "kan inte hitta någon C preprocessor (cpp)\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: C preprocessorn avslutades med signal %d\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: C preprocessorn avslutades med kod %d\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "otillåten nättyp: \"%s\"\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: för många \"define\"\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: arglist kodningsfel\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "fil \"%s\" finns redan och kan bli överskriven\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "Kan inte ange mer än en infil!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Denna implementation stödjer inte \"newstyle\" eller trådsäker kod!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "Kan inte ange netid-flaggan tillsammans med inetd-flaggan!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "Kan inte ange netid-flaggan utan TIRPC!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "Kan inte ange tabellflaggor med ny stil\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "\"infil\" är obligatorisk för mallgenereringsflaggor.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Kan inte ha mer än en filgenereringsflagga!\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "användning: %s infil\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Dnamn[=värde]] [-i storlek] [-I [-K sekunder]] [-Y sökväg] infil\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o utfil] [infil]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s nättyp]* [-o utfil] [infil]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n nätid]* [-o utfil] [infil]\n"
+@@ -4698,7 +4702,7 @@
+
+ #: nis/nis_print.c:239
+ msgid "\tAccess rights: "
+-msgstr "\tÅtkomsträttigheter: "
++msgstr "\tRättigheter : "
+
+ #: nis/nis_print.c:252
+ msgid "Group Flags :"
+@@ -4710,7 +4714,7 @@
+ "Group Members :\n"
+ msgstr ""
+ "\n"
+-"Guppmedlemmar:\n"
++"Gruppmedlemmar:\n"
+
+ #: nis/nis_print.c:266
+ #, c-format
+@@ -4725,7 +4729,7 @@
+ #: nis/nis_print.c:268
+ #, c-format
+ msgid "Character Separator : %c\n"
+-msgstr "Teckenseparator: %c\n"
++msgstr "Teckenseparator : %c\n"
+
+ #: nis/nis_print.c:269
+ #, c-format
+@@ -4747,7 +4751,7 @@
+
+ #: nis/nis_print.c:277
+ msgid "\t\tAccess Rights : "
+-msgstr "\t\tÅtkomsträttigheter: "
++msgstr "\t\tRättigheter : "
+
+ #: nis/nis_print.c:286
+ msgid "Linked Object Type : "
+@@ -4798,7 +4802,7 @@
+
+ #: nis/nis_print.c:324
+ msgid "Access Rights : "
+-msgstr "Åtkomsträttigheter: "
++msgstr "Rättigheter : "
+
+ #: nis/nis_print.c:326
+ msgid ""
+@@ -4811,7 +4815,7 @@
+ #: nis/nis_print.c:329
+ #, c-format
+ msgid "Creation Time : %s"
+-msgstr "Skapad: %s"
++msgstr "Skapad : %s"
+
+ #: nis/nis_print.c:331
+ #, c-format
+@@ -5026,7 +5030,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "när hashtabellspost allokerades"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "kan inte ta status på fil \"%s\": %s"
+@@ -5039,153 +5043,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "Kan inte köra nscd i säkert läge som opriviligierad användare"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "när cache-post allokerades: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "kan inte öppna uttag (socket): %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: begäran mottagen (version = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "Kan inte hantera äldre förfrågansversion %d, nuvarande version är %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "kan inte skriva resultat: %s"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "kunde inte hämta anropandes identitet: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "när förbindelse accepterades: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "fattas data vid läsning av begäran: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "nyckellängd i begäran för lång: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "fattas data vid läsning av begäransnyckel: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "Misslyckades att köra nscd som användare \"%s\""
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "getgrouplist misslyckades"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "setgroups misslyckades"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "när nyckelkopia allokerades"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "när cache-post allokerades"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "ofullständig skrivning i %s: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "Hittar inte \"%s\" i gruppcache!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "Ogiltigt numeriskt gruppid (gid) \"%s\"!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "Hittar inte \"%d\" i gruppcache!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "Hittar inte \"%s\" i värdcache!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Läs konfigurationsdata från NAMN"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Skapa inte barnprocess, visa meddelanden på nuvarande tty"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "ANTAL"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "Starta ANTAL trådar"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Avsluta servern"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Skriv ut nuvarande konfigurationsstatistik"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TABELL"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Invalidera den angivna cachen"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TABELL,yes"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Använd separat cache för varje användare"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Namntjänst cache-demon"
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "kör redan"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Bara root har tillåtelse att använda denna operation!"
+
+@@ -5275,22 +5284,22 @@
+ "%15ld%% cache träffprocent\n"
+ "%15s kontrollera /etc/%s för ändringar\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "Hittar inte \"%s\" i lösenordscache!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "Ogiltigt numeriskt användarid (uid) \"%s\"!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "Hittar inte \"%d\" i lösenordscache!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "kan inte skapa egenskapslista"
+
+@@ -5341,7 +5350,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", OS ABI: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Kan inte öppna cache-fil \"%s\"\n"
+@@ -5387,17 +5396,17 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "Namnbyte på %s till %s misslyckades"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "delat objekt är inte öppnat"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr ""
+ "Generationsräknare för TLS slog runt! Var snäll och skicka felrapport med\n"
+ "\"glibcbug\"-skriptet"
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "DST inte tillåten i SUID/SGID-program"
+
+@@ -5416,181 +5425,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "kan inte allokera beroendelista"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "kan inte allokera söklista för symboler"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "Filter stöds ej med LD_TRACE_PRELINKING"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "FEL I DYNAMISK LÄNKARE!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "fel när delade bibliotek laddades"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "kan inte allokera namnpost"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "kan inte skapa cache för sökväg"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "kan inte skapa kopia av RUNPATH/RPATH"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "kan inte skapa säkvägslista"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "kan inte ta status på delat objekt"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "kan inte öppna nollfyllnadsenhet"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "kan inte skapa delad objektdeskriptor"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "kan inte läsa fildata"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "ELF-laddkommando är inte på sidgräns"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "Address/position för ELF-laddkommando är inte på rätt bytegräns"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "kan inte skapa TLS-datastrukturer för första tråden"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "kan inte hantera TLS-data"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "misslyckades att mappa segment från delat objekt"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "kan inte ladda exekverbar fil dynamiskt"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "kan inte ändra minnesskydd"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "kan inte mappa nollfyllda sidor"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "Kan inte allokera minne för programhuvud"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "objektfilen har ingen dynamisk sektion"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "delat objekt kan inte göras dlopen() på"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "kan inte skapa söklista"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "fil för kort"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "ogiltigt ELF-huvud"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "Kodning för ELF-fildata är inte \"big-endian\""
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "Kodning för ELF-fildata är inte \"little-endian\""
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "ELF-filens versionsidentitet stämmer inte med nuvarande"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "ELF-fil har felaktig version på OS-ABI"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "ELF-fil har felaktig version på ABI"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "internt fel"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "ELF-filens version stämmer inte med nuvarande"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "ELF-filens värde på \"phentsize\" är inte den förväntade"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "bara ET_DYN och ET_EXEC kan laddas"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "kan inte öppna delad objektfil"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "fel vid relokering"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "kan inte utöka globalt område"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "substitution av \"dynamic string token\" är tom"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "kan inte skapa omfångslista"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "kan inte skapa datastrukturer för TLS"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "ogiltiga flaggor för dlopen()"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "delat objekt kan inte göras dlopen() på: statiskt TLS-minne är för litet"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "kan inte göra segment skrivbart för relokering"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: profileraren hittade inga PLTREL i objekt %s\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: profileraren fick slut minne för kopiering av PLTREL i %s\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "kan inte återställa segmenträttigheter efter relokering"
+
+@@ -5646,119 +5667,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Konfigurera bindningar för den dynamiska länkaren."
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "Sökväg \"%s\" given mer än en gång"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s är inte en känd bibliotekstyp"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "Kan inte ta status på %s"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "Kan inte ta status på %s\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s är inte en symbolisk länk\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "Kan inte ta bort (unlink) %s"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "Kan inte länka %s till %s"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (ändrad)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (HOPPAR ÖVER)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "Kan inte hitta %s"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "Kan inte ta länkstatus på %s"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil"
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "Ingen länk skapad eftersom \"soname\" inte hittades för %s"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "Kan inte öppna katalog %s"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "Kan inte ta status (lstat) på %s"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "Kan inte ta status på %s"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Hittar inte infil %s.\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "libc5-bibliotek %s i fel katalog"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "libc6-bibliotek %s i fel katalog"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "libc4-bibliotek %s i fel katalog"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "bibliotek %s och %s i katalog %s har samma \"soname\" men olika typ."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Kan inte öppna konfigurationsfil \"%s\""
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "Kan inte byta katalog till /"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Kan inte läsa cache-filkatalog \"%s\"\n"
+--- glibc-2.3.2/po/tr.po 2002-10-05 14:15:39.000000000 -0400
++++ glibc-2.3.2/po/tr.po 2003-03-15 15:02:13.000000000 -0500
+@@ -1,13 +1,13 @@
+ # Turkish translations for GNU libc messages.
+-# Copyright (C) 2002 Free Software Foundation, Inc.
+-# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, 2002.
++# Copyright (C) 2003 Free Software Foundation, Inc.
++# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, ..., 2003.
+ # Onur Tolga ÅžehitoÄŸlu <onur@lcsl.metu.edu.tr>, 1998.
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.3\n"
+-"POT-Creation-Date: 2002-10-02 17:22-0700\n"
+-"PO-Revision-Date: 2002-10-05 17:08+0300\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-03-04 05:51+0200\n"
+ "Last-Translator: Nilgün Belma Bugüner <nilgun@superonline.com>\n"
+ "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+ "MIME-Version: 1.0\n"
+@@ -261,8 +261,8 @@
+
+ #: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "conversions from `%s' and to `%s' are not supported"
+-msgstr "`%s'e ve ondan `%s'e dönüşüm desteklenmiyor"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "`%s'den ve `%s'e dönüşüm desteklenmiyor"
+
+ #: iconv/iconv_prog.c:246
+ #, c-format
+@@ -287,7 +287,7 @@
+ msgid "error while closing output file"
+ msgstr "çıktı dosyası kapatılırken hata"
+
+-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:355 locale/programs/locale.c:268
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+ #: locale/programs/localedef.c:372 catgets/gencat.c:233
+ #: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
+ msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+@@ -296,9 +296,9 @@
+ "ise `glibcbug' betiğini kullanarak oluşturacağınız hata raporuyla\n"
+ "<bugs@gnu.org> adresine bildiriniz.\n"
+
+-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:369 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:904
+-#: nss/getent.c:74 nscd/nscd.c:279 nscd/nscd_nischeck.c:90 elf/ldconfig.c:259
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
+ #: elf/sprof.c:349
+ #, c-format
+ msgid ""
+@@ -311,9 +311,9 @@
+ "HİÇBİR garanti yoktur; hatta SATILABİLİRLİĞİ veya ŞAHSİ KULLANIMINIZA\n"
+ "UYGUNLUĞU için bile garanti verilmez.\n"
+
+-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:374 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:909
+-#: nss/getent.c:79 nscd/nscd.c:284 nscd/nscd_nischeck.c:95 elf/ldconfig.c:264
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
+ #: elf/sprof.c:355
+ #, c-format
+ msgid "Written by %s.\n"
+@@ -365,15 +365,15 @@
+ msgid "Prefix used for all file accesses"
+ msgstr "Tüm dosya erişimlerinde kullanılan önek"
+
+-#: iconv/iconvconfig.c:325 locale/programs/localedef.c:292
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+ msgid "no output file produced because warning were issued"
+ msgstr "uyarı yayınlandığından üretilen bir çıktı dosyası yok"
+
+-#: iconv/iconvconfig.c:403
++#: iconv/iconvconfig.c:405
+ msgid "while inserting in search tree"
+ msgstr "arama ağacına eklenirken"
+
+-#: iconv/iconvconfig.c:1202
++#: iconv/iconvconfig.c:1204
+ msgid "cannot generate output file"
+ msgstr "çıktı dosyası üretilemiyor"
+
+@@ -1283,7 +1283,7 @@
+ msgid "unterminated symbolic name"
+ msgstr "sonlandırılmamış sembolik isim"
+
+-#: locale/programs/linereader.c:537 catgets/gencat.c:1166
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+ msgid "invalid escape sequence"
+ msgstr "geçersiz escape dizisi"
+
+@@ -1313,39 +1313,39 @@
+ msgid "trailing garbage at end of line"
+ msgstr "satır sonu bozuk"
+
+-#: locale/programs/locale.c:73
++#: locale/programs/locale.c:75
+ msgid "System information:"
+ msgstr "Sistem bilgileri:"
+
+-#: locale/programs/locale.c:75
++#: locale/programs/locale.c:77
+ msgid "Write names of available locales"
+ msgstr "Mevcut yerellerin isimlerini yazar"
+
+-#: locale/programs/locale.c:77
++#: locale/programs/locale.c:79
+ msgid "Write names of available charmaps"
+ msgstr "Mevcut karakter eÅŸlemlerin isimlerini yazar"
+
+-#: locale/programs/locale.c:78
++#: locale/programs/locale.c:80
+ msgid "Modify output format:"
+ msgstr "Değiştirme çıktı biçemi:"
+
+-#: locale/programs/locale.c:79
++#: locale/programs/locale.c:81
+ msgid "Write names of selected categories"
+ msgstr "Seçilmiş kategorilerin isimlerini yazar"
+
+-#: locale/programs/locale.c:80
++#: locale/programs/locale.c:82
+ msgid "Write names of selected keywords"
+ msgstr "Seçilmiş anahtar kelimelerin isimlerini yazar"
+
+-#: locale/programs/locale.c:81
++#: locale/programs/locale.c:83
+ msgid "Print more information"
+ msgstr "Daha fazla ileti basar"
+
+-#: locale/programs/locale.c:86
++#: locale/programs/locale.c:88
+ msgid "Get locale-specific information."
+ msgstr "Dile özel bilgiler alınır"
+
+-#: locale/programs/locale.c:89
++#: locale/programs/locale.c:91
+ msgid ""
+ "NAME\n"
+ "[-a|-m]"
+@@ -1353,7 +1353,7 @@
+ "Ä°SÄ°M\n"
+ "[-a|-m]"
+
+-#: locale/programs/locale.c:488
++#: locale/programs/locale.c:512
+ msgid "while preparing output"
+ msgstr "çıktıyı hazırlarken"
+
+@@ -1484,16 +1484,16 @@
+ msgid "cannot create temporary file"
+ msgstr "geçici dosya oluşturulamıyor"
+
+-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:302
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+ msgid "cannot initialize archive file"
+ msgstr "arşiv dosyası ilklendirilemiyor"
+
+-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:309
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+ msgid "cannot resize archive file"
+ msgstr "arşiv dosyasının boyutu değiştirilemiyor"
+
+-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:318
+-#: locale/programs/locarchive.c:508
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
+ msgid "cannot map archive header"
+ msgstr "arşiv başlığı eşlenemiyor"
+
+@@ -1509,88 +1509,88 @@
+ msgid "cannot map locale archive file"
+ msgstr "yerel arşiv dosyası eşlenemiyor"
+
+-#: locale/programs/locarchive.c:326
++#: locale/programs/locarchive.c:329
+ msgid "cannot lock new archive"
+ msgstr "yeni arÅŸiv kilitlenemiyor"
+
+-#: locale/programs/locarchive.c:377
++#: locale/programs/locarchive.c:380
+ msgid "cannot extend locale archive file"
+ msgstr "yerel arşiv dosyası genişletilemiyor"
+
+-#: locale/programs/locarchive.c:386
++#: locale/programs/locarchive.c:389
+ msgid "cannot change mode of resized locale archive"
+ msgstr "boyutu deÄŸiÅŸtirilen yerel arÅŸivin kipi deÄŸiÅŸtirilemiyor"
+
+-#: locale/programs/locarchive.c:394
++#: locale/programs/locarchive.c:397
+ msgid "cannot rename new archive"
+ msgstr "yeni arÅŸivin ismi deÄŸiÅŸtirilemiyor"
+
+-#: locale/programs/locarchive.c:447
++#: locale/programs/locarchive.c:450
+ #, c-format
+ msgid "cannot open locale archive \"%s\""
+ msgstr "yerel arşiv `%s' açılamıyor"
+
+-#: locale/programs/locarchive.c:452
++#: locale/programs/locarchive.c:455
+ #, c-format
+ msgid "cannot stat locale archive \"%s\""
+ msgstr "\"%s\" yerel arşivi durumlanamıyor"
+
+-#: locale/programs/locarchive.c:471
++#: locale/programs/locarchive.c:474
+ #, c-format
+ msgid "cannot lock locale archive \"%s\""
+ msgstr "\"%s\" yerel arÅŸivi kilitlenemiyor"
+
+-#: locale/programs/locarchive.c:494
++#: locale/programs/locarchive.c:497
+ msgid "cannot read archive header"
+ msgstr "arşiv başlığı okunamıyor"
+
+-#: locale/programs/locarchive.c:554
++#: locale/programs/locarchive.c:557
+ #, c-format
+ msgid "locale '%s' already exists"
+ msgstr "`%s' yereli zaten var"
+
+-#: locale/programs/locarchive.c:784 locale/programs/locarchive.c:799
+-#: locale/programs/locarchive.c:811 locale/programs/locarchive.c:823
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
+ #: locale/programs/locfile.c:343
+ msgid "cannot add to locale archive"
+ msgstr "yerel arşive ekleme yapılamıyor"
+
+-#: locale/programs/locarchive.c:976
++#: locale/programs/locarchive.c:982
+ #, c-format
+ msgid "locale alias file `%s' not found"
+ msgstr "`%s' yerel isim dosyası bulunamadı"
+
+-#: locale/programs/locarchive.c:1118
++#: locale/programs/locarchive.c:1126
+ #, c-format
+ msgid "Adding %s\n"
+ msgstr "%s ekleniyor\n"
+
+-#: locale/programs/locarchive.c:1124
++#: locale/programs/locarchive.c:1132
+ #, c-format
+ msgid "stat of \"%s\" failed: %s: ignored"
+ msgstr "\"%s\" durumlaması başarısız: %s: yoksayıldı"
+
+-#: locale/programs/locarchive.c:1130
++#: locale/programs/locarchive.c:1138
+ #, c-format
+ msgid "\"%s\" is no directory; ignored"
+ msgstr "\"%s\" dizinsiz; yoksayıldı"
+
+-#: locale/programs/locarchive.c:1137
++#: locale/programs/locarchive.c:1145
+ #, c-format
+ msgid "cannot open directory \"%s\": %s: ignored"
+ msgstr "\"%s\" dizini açılamıyor: %s: yoksayıldı"
+
+-#: locale/programs/locarchive.c:1209
++#: locale/programs/locarchive.c:1217
+ #, c-format
+ msgid "incomplete set of locale files in \"%s\""
+ msgstr "\"%s\" içindeki yerel dosyaları kümesi tamamlanmamış"
+
+-#: locale/programs/locarchive.c:1273
++#: locale/programs/locarchive.c:1281
+ #, c-format
+ msgid "cannot read all files in \"%s\": ignored"
+ msgstr "\"%s\" içindeki hiçbir dosya okunamıyor: yoksayıldı"
+
+-#: locale/programs/locarchive.c:1343
++#: locale/programs/locarchive.c:1351
+ #, c-format
+ msgid "locale \"%s\" not in archive"
+ msgstr "\"%s\" yeri arÅŸivde deÄŸil"
+@@ -1659,8 +1659,8 @@
+ msgid "upper limit in range is not smaller then lower limit"
+ msgstr "kapsamdaki üst sınır alt sınırdan küçük değil"
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:500 malloc/obstack.c:503
+-#: posix/getconf.c:996
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
+ msgid "memory exhausted"
+ msgstr "bellek tükendi"
+
+@@ -1686,7 +1686,7 @@
+ msgid "Another string for testing."
+ msgstr "Test edilecek diÄŸer dizge."
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:79
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+ msgid "NAME"
+ msgstr "Ä°SÄ°M"
+
+@@ -1708,7 +1708,7 @@
+ "Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+ "is -, output is written to standard output.\n"
+ msgstr ""
+-"İleti kataloğu üretilir.GİRDİ-DOSYASI - verilirse standart girdi okunur.\n"
++"İleti kataloğu üretilir. GİRDİ-DOSYASI - verilirse standart girdi okunur.\n"
+ "ÇIKTI-DOSYASI - verilirse standart çıktıya yazılır.\n"
+
+ #: catgets/gencat.c:125
+@@ -1731,7 +1731,7 @@
+ msgid "duplicate set definition"
+ msgstr "küme ataması tekrarlanmış"
+
+-#: catgets/gencat.c:446 catgets/gencat.c:619 catgets/gencat.c:648
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+ msgid "this is the first definition"
+ msgstr "bu ilk tanım"
+
+@@ -1749,44 +1749,44 @@
+ msgid "unknown directive `%s': line ignored"
+ msgstr "bilinmeyen `%s' yönergesi: satır yoksayıldı"
+
+-#: catgets/gencat.c:617
++#: catgets/gencat.c:621
+ msgid "duplicated message number"
+ msgstr "tekrarlanmış ileti numarası"
+
+-#: catgets/gencat.c:645
++#: catgets/gencat.c:674
+ msgid "duplicated message identifier"
+ msgstr "ileti tanıtıcı tekrarlanmış"
+
+-#: catgets/gencat.c:702
++#: catgets/gencat.c:731
+ msgid "invalid character: message ignored"
+ msgstr "geçersiz karakter: ileti yoksayıldı"
+
+-#: catgets/gencat.c:745
++#: catgets/gencat.c:774
+ msgid "invalid line"
+ msgstr "satır geçersiz"
+
+-#: catgets/gencat.c:799
++#: catgets/gencat.c:828
+ msgid "malformed line ignored"
+ msgstr "hatalı satır yoksayıldı"
+
+-#: catgets/gencat.c:963 catgets/gencat.c:1004
++#: catgets/gencat.c:992 catgets/gencat.c:1033
+ #, c-format
+ msgid "cannot open output file `%s'"
+ msgstr "`%s' çıktı dosyası açılamıyor"
+
+-#: catgets/gencat.c:1188
++#: catgets/gencat.c:1217
+ msgid "unterminated message"
+ msgstr "sonlandırılmamış ileti"
+
+-#: catgets/gencat.c:1212
++#: catgets/gencat.c:1241
+ msgid "while opening old catalog file"
+ msgstr "eski katalog dosyası açılırken"
+
+-#: catgets/gencat.c:1303
++#: catgets/gencat.c:1332
+ msgid "conversion modules not available"
+ msgstr "dönüşüm modülleri yok"
+
+-#: catgets/gencat.c:1329
++#: catgets/gencat.c:1358
+ msgid "cannot determine escape character"
+ msgstr "öncelem karakteri saptanamıyor"
+
+@@ -1794,7 +1794,7 @@
+ msgid "makecontext: does not know how to handle more than 8 arguments\n"
+ msgstr "makecontext: 8 argümandan fazlasının nasıl elde edileceği bilinmiyor\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:178
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
+ #: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+ msgid "Success"
+ msgstr "Başarılı"
+@@ -2983,23 +2983,23 @@
+ msgid "%s%sUnknown signal %d\n"
+ msgstr "%s%sBilinmeyen sinyal %d\n"
+
+-#: malloc/mcheck.c:296
++#: malloc/mcheck.c:346
+ msgid "memory is consistent, library is buggy\n"
+ msgstr "bellek tutarlı, kitaplık hatalı\n"
+
+-#: malloc/mcheck.c:299
++#: malloc/mcheck.c:349
+ msgid "memory clobbered before allocated block\n"
+ msgstr "bellek ayrılmış bloğun öncesine taştı\n"
+
+-#: malloc/mcheck.c:302
++#: malloc/mcheck.c:352
+ msgid "memory clobbered past end of allocated block\n"
+ msgstr "bellek ayrılmış bloğun sonrasına taştı\n"
+
+-#: malloc/mcheck.c:305
++#: malloc/mcheck.c:355
+ msgid "block freed twice\n"
+ msgstr "blok iki kere serbest bırakıldı\n"
+
+-#: malloc/mcheck.c:308
++#: malloc/mcheck.c:358
+ msgid "bogus mcheck_status, library is buggy\n"
+ msgstr "mcheck_status sahte, kitaplık hatalı\n"
+
+@@ -3037,6 +3037,10 @@
+ msgid "DATAFILE [OUTFILE]"
+ msgstr "VERİDOSYASI [ÇIKTIDOSYASI]"
+
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "Bilinmeyen hata"
++
+ #: string/strsignal.c:69
+ #, c-format
+ msgid "Real-time signal %d"
+@@ -3061,7 +3065,7 @@
+ msgid "%s: Memory exhausted: %s\n"
+ msgstr "%s: Bellek tükendi: %s\n"
+
+-#: timezone/zic.c:390 misc/error.c:120
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+ msgid "Unknown system error"
+ msgstr "Bilinmeyen sistem hatası"
+
+@@ -3454,25 +3458,21 @@
+ msgid "Interrupted by a signal"
+ msgstr "Bir sinyal ile engellendi"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "Bilinmeyen hata"
+-
+-#: posix/getconf.c:883
++#: posix/getconf.c:889
+ #, c-format
+ msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+ msgstr "Kullanımı: %s [-v özellik] değişken_ismi [dosyayolu_ismi]\n"
+
+-#: posix/getconf.c:941
++#: posix/getconf.c:947
+ #, c-format
+ msgid "unknown specification \"%s\""
+ msgstr "Özellik \"%s\" bilinmiyor"
+
+-#: posix/getconf.c:968 posix/getconf.c:984
++#: posix/getconf.c:974 posix/getconf.c:990
+ msgid "undefined"
+ msgstr "atanmamış"
+
+-#: posix/getconf.c:1006
++#: posix/getconf.c:1012
+ #, c-format
+ msgid "Unrecognized variable `%s'"
+ msgstr "Tanınmayan değişken `%s'"
+@@ -3534,71 +3534,71 @@
+ msgid "%s: option `-W %s' doesn't allow an argument\n"
+ msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
+
+-#: posix/regcomp.c:181
++#: posix/regcomp.c:136
+ msgid "No match"
+ msgstr "EÅŸleÅŸme yok"
+
+-#: posix/regcomp.c:184
++#: posix/regcomp.c:139
+ msgid "Invalid regular expression"
+ msgstr "Düzenli ifade geçersiz"
+
+-#: posix/regcomp.c:187
++#: posix/regcomp.c:142
+ msgid "Invalid collation character"
+ msgstr "Karşılaştırma karakteri geçersiz"
+
+-#: posix/regcomp.c:190
++#: posix/regcomp.c:145
+ msgid "Invalid character class name"
+ msgstr "Geçersiz karakter sınıfı ismi"
+
+-#: posix/regcomp.c:193
++#: posix/regcomp.c:148
+ msgid "Trailing backslash"
+ msgstr "İzleyen tersbölü"
+
+-#: posix/regcomp.c:196
++#: posix/regcomp.c:151
+ msgid "Invalid back reference"
+ msgstr "Geriye başvuru geçersiz"
+
+-#: posix/regcomp.c:199
++#: posix/regcomp.c:154
+ msgid "Unmatched [ or [^"
+ msgstr "[ ya da [^ eÅŸleÅŸmiyor"
+
+-#: posix/regcomp.c:202
++#: posix/regcomp.c:157
+ msgid "Unmatched ( or \\("
+ msgstr "( ya da \\( eÅŸleÅŸmiyor"
+
+-#: posix/regcomp.c:205
++#: posix/regcomp.c:160
+ msgid "Unmatched \\{"
+ msgstr "\\{ eÅŸleÅŸmiyor"
+
+-#: posix/regcomp.c:208
++#: posix/regcomp.c:163
+ msgid "Invalid content of \\{\\}"
+ msgstr "\\{\\} içeriği geçersiz"
+
+-#: posix/regcomp.c:211
++#: posix/regcomp.c:166
+ msgid "Invalid range end"
+ msgstr "Geçersiz kapsam sonu"
+
+-#: posix/regcomp.c:214
++#: posix/regcomp.c:169
+ msgid "Memory exhausted"
+ msgstr "Bellek tükendi"
+
+-#: posix/regcomp.c:217
++#: posix/regcomp.c:172
+ msgid "Invalid preceding regular expression"
+ msgstr "Önceleme düzenli ifadesi geçersiz"
+
+-#: posix/regcomp.c:220
++#: posix/regcomp.c:175
+ msgid "Premature end of regular expression"
+ msgstr "Düzenli ifadenin sonu eksik"
+
+-#: posix/regcomp.c:223
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "Düzenli ifade çok büyük"
+
+-#: posix/regcomp.c:226
++#: posix/regcomp.c:181
+ msgid "Unmatched ) or \\)"
+ msgstr ") ya da \\) eÅŸleÅŸmiyor"
+
+-#: posix/regcomp.c:673
++#: posix/regcomp.c:615
+ msgid "No previous regular expression"
+ msgstr "Önceki düzenli ifade yok"
+
+@@ -3754,24 +3754,24 @@
+ msgid "Service configuration to be used"
+ msgstr "Kullanılacak yapılandırmayı hizmete alır"
+
+-#: nss/getent.c:136 nss/getent.c:305
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+ msgid "Enumeration not supported on %s\n"
+ msgstr "Numaralama %s ile desteklenmiyor\n"
+
+-#: nss/getent.c:729
++#: nss/getent.c:732
+ msgid "getent - get entries from administrative database."
+ msgstr "getent - yönetim veritabanından girdiler alınıyor."
+
+-#: nss/getent.c:730
++#: nss/getent.c:733
+ msgid "Supported databases:"
+ msgstr "Desteklenen veritabanları:"
+
+-#: nss/getent.c:787 nscd/nscd.c:119 nscd/nscd_nischeck.c:64
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+ msgid "wrong number of arguments"
+ msgstr "argüman sayısı hatalı"
+
+-#: nss/getent.c:797
++#: nss/getent.c:800
+ #, c-format
+ msgid "Unknown database: %s\n"
+ msgstr "Bilinmeyen veritabanı: %s\n"
+@@ -3800,68 +3800,72 @@
+ msgid "invalid pointer size"
+ msgstr "imleyici uzunluğu geçersiz"
+
+-#: inet/rcmd.c:174 inet/rcmd.c:177
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd: Bellek ayrılamadı\n"
++
++#: inet/rcmd.c:185 inet/rcmd.c:188
+ msgid "rcmd: socket: All ports in use\n"
+ msgstr "rcmd: soket: Tüm portlar kullanımda\n"
+
+-#: inet/rcmd.c:211
++#: inet/rcmd.c:222
+ #, c-format
+ msgid "connect to address %s: "
+ msgstr "%s adresine bağlantı:"
+
+-#: inet/rcmd.c:229
++#: inet/rcmd.c:240
+ #, c-format
+ msgid "Trying %s...\n"
+ msgstr "%s deneniyor...\n"
+
+-#: inet/rcmd.c:278
++#: inet/rcmd.c:289
+ #, c-format
+ msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr "rcmd: write (stderr ayarlaması): %m\n"
+
+-#: inet/rcmd.c:299
++#: inet/rcmd.c:310
+ #, c-format
+ msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr "rcmd: poll (stderr ayarlaması): %m\n"
+
+-#: inet/rcmd.c:302
++#: inet/rcmd.c:313
+ msgid "poll: protocol failure in circuit setup\n"
+ msgstr "poll: devre ayarında protokol hatası\n"
+
+-#: inet/rcmd.c:346
++#: inet/rcmd.c:358
+ msgid "socket: protocol failure in circuit setup\n"
+ msgstr "soket: devre ayarında protokol hatası\n"
+
+-#: inet/rcmd.c:368
++#: inet/rcmd.c:387
+ #, c-format
+ msgid "rcmd: %s: short read"
+ msgstr "rcmd: %s: kısa okuma"
+
+-#: inet/rcmd.c:524
++#: inet/rcmd.c:549
+ msgid "lstat failed"
+ msgstr "lstat başarısız"
+
+-#: inet/rcmd.c:526
++#: inet/rcmd.c:551
+ msgid "not regular file"
+ msgstr "düzenli dosya değil"
+
+-#: inet/rcmd.c:531
++#: inet/rcmd.c:556
+ msgid "cannot open"
+ msgstr "açılamıyor"
+
+-#: inet/rcmd.c:533
++#: inet/rcmd.c:558
+ msgid "fstat failed"
+ msgstr "fstat başarısız"
+
+-#: inet/rcmd.c:535
++#: inet/rcmd.c:560
+ msgid "bad owner"
+ msgstr "Sahip hatalı"
+
+-#: inet/rcmd.c:537
++#: inet/rcmd.c:562
+ msgid "writeable by other than owner"
+ msgstr "sahibinden başkası yazabilir"
+
+-#: inet/rcmd.c:539
++#: inet/rcmd.c:564
+ msgid "hard linked somewhere"
+ msgstr "bir yere sabit bağlı"
+
+@@ -4072,109 +4076,109 @@
+ msgid "Cannot receive reply to broadcast"
+ msgstr "yayından yanıt alınamıyor"
+
+-#: sunrpc/rpc_main.c:289
++#: sunrpc/rpc_main.c:288
+ #, c-format
+ msgid "%s: output would overwrite %s\n"
+ msgstr "%s: çıktı %s üzerine yazacak\n"
+
+-#: sunrpc/rpc_main.c:296
++#: sunrpc/rpc_main.c:295
+ #, c-format
+ msgid "%s: unable to open %s: %m\n"
+ msgstr "%s: %s dosyasını açmak mümkün değil: %m\n"
+
+-#: sunrpc/rpc_main.c:308
++#: sunrpc/rpc_main.c:307
+ #, c-format
+ msgid "%s: while writing output %s: %m"
+ msgstr "%s: %s çıktısını yazarken: %m"
+
+-#: sunrpc/rpc_main.c:343
++#: sunrpc/rpc_main.c:342
+ #, c-format
+ msgid "cannot find C preprocessor: %s \n"
+ msgstr "C ön işlemci bulunamıyor: %s \n"
+
+-#: sunrpc/rpc_main.c:351
++#: sunrpc/rpc_main.c:350
+ msgid "cannot find any C preprocessor (cpp)\n"
+ msgstr "hiç C ön işlemci (cpp) bulunamadı\n"
+
+-#: sunrpc/rpc_main.c:420
++#: sunrpc/rpc_main.c:419
+ #, c-format
+ msgid "%s: C preprocessor failed with signal %d\n"
+ msgstr "%s: C önişlemcisi %d sinyali vererek başarısız oldu\n"
+
+-#: sunrpc/rpc_main.c:423
++#: sunrpc/rpc_main.c:422
+ #, c-format
+ msgid "%s: C preprocessor failed with exit code %d\n"
+ msgstr "%s: C önişlemcisi %d çıkış kodu vererek başarısız oldu\n"
+
+-#: sunrpc/rpc_main.c:463
++#: sunrpc/rpc_main.c:462
+ #, c-format
+ msgid "illegal nettype :`%s'\n"
+ msgstr "kuraldışı ağ türü: `%s'\n"
+
+-#: sunrpc/rpc_main.c:1105
++#: sunrpc/rpc_main.c:1104
+ msgid "rpcgen: too many defines\n"
+ msgstr "rpcgen: çok fazla atama\n"
+
+-#: sunrpc/rpc_main.c:1117
++#: sunrpc/rpc_main.c:1116
+ msgid "rpcgen: arglist coding error\n"
+ msgstr "rpcgen: argüman listesi kodlama hatası\n"
+
+ #. TRANS: the file will not be removed; this is an
+ #. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: sunrpc/rpc_main.c:1149
+ #, c-format
+ msgid "file `%s' already exists and may be overwritten\n"
+ msgstr "`%s' dosyası zaten var ve üzerine yazılabilir\n"
+
+-#: sunrpc/rpc_main.c:1195
++#: sunrpc/rpc_main.c:1194
+ msgid "Cannot specify more than one input file!\n"
+ msgstr "Bir girdi dosyasından fazlası belirtilemez!\n"
+
+-#: sunrpc/rpc_main.c:1365
++#: sunrpc/rpc_main.c:1364
+ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr "Bu tamamlama yenibiçimi ya da MT-safe kodu desteklemez!\n"
+
+-#: sunrpc/rpc_main.c:1374
++#: sunrpc/rpc_main.c:1373
+ msgid "Cannot use netid flag with inetd flag!\n"
+ msgstr "AğKimlik flaması inetd flaması ile kullanılamaz!\n"
+
+-#: sunrpc/rpc_main.c:1386
++#: sunrpc/rpc_main.c:1385
+ msgid "Cannot use netid flag without TIRPC!\n"
+ msgstr "AğKimlik flaması TIRPC olmaksızın kullanılamaz!\n"
+
+-#: sunrpc/rpc_main.c:1393
++#: sunrpc/rpc_main.c:1392
+ msgid "Cannot use table flags with newstyle!\n"
+ msgstr "Tablo flamaları yenibiçimle kullanılamaz!\n"
+
+-#: sunrpc/rpc_main.c:1412
++#: sunrpc/rpc_main.c:1411
+ msgid "\"infile\" is required for template generation flags.\n"
+ msgstr "\"girdiDosyası\" şablon üretim flamaları için gerekli.\n"
+
+-#: sunrpc/rpc_main.c:1417
++#: sunrpc/rpc_main.c:1416
+ msgid "Cannot have more than one file generation flag!\n"
+ msgstr "Birden fazla dosya üretim flaması olamaz!?\n"
+
+-#: sunrpc/rpc_main.c:1426
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+ msgid "usage: %s infile\n"
+ msgstr "kullanımı: %s girdi-dosyası\n"
+
+-#: sunrpc/rpc_main.c:1427
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+ msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+ msgstr "\t%s [-abkCLNTM][-Disim[=değer]] [-i boyut] [-I [-K saniye]] [-Y dosyaYolu] girdiDosyası\n"
+
+-#: sunrpc/rpc_main.c:1429
++#: sunrpc/rpc_main.c:1428
+ #, c-format
+ msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+ msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o çıktıDosyası] [girdiDosyası]\n"
+
+-#: sunrpc/rpc_main.c:1431
++#: sunrpc/rpc_main.c:1430
+ #, c-format
+ msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-s ağTürü]* [-o çıktıDosyası] [girdiDosyası]\n"
+
+-#: sunrpc/rpc_main.c:1432
++#: sunrpc/rpc_main.c:1431
+ #, c-format
+ msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+ msgstr "\t%s [-n ağKimlik]* [-o çıktıDosyası] [girdiDosyası]\n"
+@@ -5031,7 +5035,7 @@
+ msgid "while allocating hash table entry"
+ msgstr "arama (hash) tablosu girdisi ayrılırken"
+
+-#: nscd/cache.c:150 nscd/connections.c:185
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+ msgid "cannot stat() file `%s': %s"
+ msgstr "`%s' dosyası stat() olamıyor: %s"
+@@ -5044,153 +5048,158 @@
+ msgid "Cannot run nscd in secure mode as unprivileged user"
+ msgstr "nscd güvenli kipte yetkisiz kullanıcı olarak çalıştırılamaz"
+
+-#: nscd/connections.c:199
++#: nscd/connections.c:175
++#, c-format
++msgid "while allocating cache: %s"
++msgstr "arabellek girdisi ayrılırken: %s"
++
++#: nscd/connections.c:200
+ #, c-format
+ msgid "cannot open socket: %s"
+ msgstr "soket açılamıyor: %s"
+
+-#: nscd/connections.c:217
++#: nscd/connections.c:218
+ #, c-format
+ msgid "cannot enable socket to accept connections: %s"
+ msgstr "bağlantıları kabul etmek üzere soket etkinleştirilemiyor: %s"
+
+-#: nscd/connections.c:259
++#: nscd/connections.c:260
+ #, c-format
+ msgid "handle_request: request received (Version = %d)"
+ msgstr "handle_request: istek alındı (Sürüm = %d)"
+
+-#: nscd/connections.c:265
++#: nscd/connections.c:266
+ #, c-format
+ msgid "cannot handle old request version %d; current version is %d"
+ msgstr "eski istem sürümü %d elde edilemedi; mevcut sürüm %d"
+
+-#: nscd/connections.c:303 nscd/connections.c:325
++#: nscd/connections.c:304 nscd/connections.c:326
+ #, c-format
+ msgid "cannot write result: %s"
+ msgstr "sonuç yazılamıyor: %s"
+
+-#: nscd/connections.c:404 nscd/connections.c:498
++#: nscd/connections.c:405 nscd/connections.c:499
+ #, c-format
+ msgid "error getting callers id: %s"
+ msgstr "çağrıcı kimliği alınırken hata: %s"
+
+-#: nscd/connections.c:470
++#: nscd/connections.c:471
+ #, c-format
+ msgid "while accepting connection: %s"
+ msgstr "bağlantı kabul edilirken: %s"
+
+-#: nscd/connections.c:481
++#: nscd/connections.c:482
+ #, c-format
+ msgid "short read while reading request: %s"
+ msgstr "istenen okuma kısa: %s"
+
+-#: nscd/connections.c:517
++#: nscd/connections.c:518
+ #, c-format
+ msgid "key length in request too long: %d"
+ msgstr "istenen anahtar uzunluÄŸu fazla: %d"
+
+-#: nscd/connections.c:531
++#: nscd/connections.c:532
+ #, c-format
+ msgid "short read while reading request key: %s"
+ msgstr "istenen tuş okunurken kısa okuma: %s"
+
+-#: nscd/connections.c:590 nscd/connections.c:591 nscd/connections.c:610
+-#: nscd/connections.c:623 nscd/connections.c:629 nscd/connections.c:636
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+ #, c-format
+ msgid "Failed to run nscd as user '%s'"
+ msgstr "nscd '%s' kullanıcısı olarak çalıştırılamadı"
+
+-#: nscd/connections.c:611
++#: nscd/connections.c:612
+ msgid "getgrouplist failed"
+ msgstr "getgrouplist başarısız"
+
+-#: nscd/connections.c:624
++#: nscd/connections.c:625
+ msgid "setgroups failed"
+ msgstr "setgroups başarısız"
+
+-#: nscd/grpcache.c:102 nscd/hstcache.c:110 nscd/pwdcache.c:108
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
+ msgid "while allocating key copy"
+ msgstr "tuş kopyası ayrılırken"
+
+-#: nscd/grpcache.c:152 nscd/hstcache.c:167 nscd/pwdcache.c:145
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
+ msgid "while allocating cache entry"
+ msgstr "arabellek girdisi ayrılırken"
+
+-#: nscd/grpcache.c:195 nscd/hstcache.c:281 nscd/pwdcache.c:191
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+ msgid "short write in %s: %s"
+ msgstr "%s içinde kısa yazma: %s"
+
+-#: nscd/grpcache.c:217
++#: nscd/grpcache.c:218
+ #, c-format
+ msgid "Haven't found \"%s\" in group cache!"
+ msgstr "\"%s\" grup arabelleÄŸinde yok!"
+
+-#: nscd/grpcache.c:292
++#: nscd/grpcache.c:284
+ #, c-format
+ msgid "Invalid numeric gid \"%s\"!"
+ msgstr "\"%s\" grup numarası geçersiz!"
+
+-#: nscd/grpcache.c:299
++#: nscd/grpcache.c:291
+ #, c-format
+ msgid "Haven't found \"%d\" in group cache!"
+ msgstr "\"%d\" grup arabelleÄŸinde yok!"
+
+-#: nscd/hstcache.c:303 nscd/hstcache.c:378 nscd/hstcache.c:456
+-#: nscd/hstcache.c:533
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+ msgid "Haven't found \"%s\" in hosts cache!"
+ msgstr "\"%s\" makinalar arabelleÄŸinde yok!"
+
+-#: nscd/nscd.c:80
++#: nscd/nscd.c:85
+ msgid "Read configuration data from NAME"
+ msgstr "Yapılandırma verisini İSİM den okur"
+
+-#: nscd/nscd.c:82
++#: nscd/nscd.c:87
+ msgid "Do not fork and display messages on the current tty"
+ msgstr "Üzerinde çalışılan tty de iletiler ayrılmaz ve gösterilir"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "NUMBER"
+ msgstr "SAYI"
+
+-#: nscd/nscd.c:83
++#: nscd/nscd.c:88
+ msgid "Start NUMBER threads"
+ msgstr "SAYIlı başlıkları başlatır"
+
+-#: nscd/nscd.c:84
++#: nscd/nscd.c:89
+ msgid "Shut the server down"
+ msgstr "Sunucuyu indirir"
+
+-#: nscd/nscd.c:85
++#: nscd/nscd.c:90
+ msgid "Print current configuration statistic"
+ msgstr "Şu anki yapılandırma istatistiklerini basar"
+
+-#: nscd/nscd.c:86
++#: nscd/nscd.c:91
+ msgid "TABLE"
+ msgstr "TABLO"
+
+-#: nscd/nscd.c:87
++#: nscd/nscd.c:92
+ msgid "Invalidate the specified cache"
+ msgstr "Belirtilen arabellek geçersiz kılındı"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "TABLE,yes"
+ msgstr "TABLO,evet"
+
+-#: nscd/nscd.c:88
++#: nscd/nscd.c:93
+ msgid "Use separate cache for each user"
+ msgstr "Her kullanıcı için ayrı arabellek kullanılır"
+
+-#: nscd/nscd.c:93
++#: nscd/nscd.c:98
+ msgid "Name Service Cache Daemon."
+ msgstr "Name Service Cache Daemon."
+
+-#: nscd/nscd.c:126
++#: nscd/nscd.c:131
+ msgid "already running"
+ msgstr "Zaten çalışıyor"
+
+-#: nscd/nscd.c:192 nscd/nscd.c:212 nscd/nscd.c:218
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+ msgid "Only root is allowed to use this option!"
+ msgstr "Bu seçenek sadece root tarafından kullanılabilir!"
+
+@@ -5280,22 +5289,22 @@
+ "%15ld%% arabellekleme oranı\n"
+ " /etc/%s'deki değişiklikler için %15s kontrol uygulandı\n"
+
+-#: nscd/pwdcache.c:213
++#: nscd/pwdcache.c:214
+ #, c-format
+ msgid "Haven't found \"%s\" in password cache!"
+ msgstr "\"%s\" parola arabelleÄŸinde yok!"
+
+-#: nscd/pwdcache.c:288
++#: nscd/pwdcache.c:280
+ #, c-format
+ msgid "Invalid numeric uid \"%s\"!"
+ msgstr "\"%s\" kullanıcı numarası geçersiz!"
+
+-#: nscd/pwdcache.c:295
++#: nscd/pwdcache.c:287
+ #, c-format
+ msgid "Haven't found \"%d\" in password cache!"
+ msgstr "\"%d\" parola arabelleÄŸinde yok!"
+
+-#: elf/../sysdeps/generic/dl-sysdep.c:297
++#: elf/../sysdeps/generic/dl-sysdep.c:357
+ msgid "cannot create capability list"
+ msgstr "yetenek listesi oluşturulamıyor"
+
+@@ -5346,7 +5355,7 @@
+ msgid ", OS ABI: %s %d.%d.%d"
+ msgstr ", OS ABI: %s %d.%d.%d"
+
+-#: elf/cache.c:136 elf/ldconfig.c:1033
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+ msgid "Can't open cache file %s\n"
+ msgstr "Arabellek dosyası %s açılamıyor\n"
+@@ -5392,15 +5401,15 @@
+ msgid "Renaming of %s to %s failed"
+ msgstr "%s'in ismi %s olarak deÄŸiÅŸtirilemedi"
+
+-#: elf/dl-close.c:113
++#: elf/dl-close.c:128
+ msgid "shared object not open"
+ msgstr "paylaşımlı nesne açık değil"
+
+-#: elf/dl-close.c:357 elf/dl-open.c:436
++#: elf/dl-close.c:486 elf/dl-open.c:444
+ msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr "TLS üretecinin sayacı başa döndü! Lütfen 'glibcbug' betiğini kullanarak bir hata raporu gönderin."
+
+-#: elf/dl-deps.c:111 elf/dl-open.c:177
++#: elf/dl-deps.c:111 elf/dl-open.c:183
+ msgid "DST not allowed in SUID/SGID programs"
+ msgstr "SUID/SGID programlarda DST'ye izin verilmez"
+
+@@ -5417,181 +5426,193 @@
+ msgid "cannot allocate dependency list"
+ msgstr "bağımlılık listesi ayrılamadı"
+
+-#: elf/dl-deps.c:492 elf/dl-deps.c:547
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
+ msgid "cannot allocate symbol search list"
+ msgstr "sembol arama listesi ayrılamadı"
+
+-#: elf/dl-deps.c:532
++#: elf/dl-deps.c:534
+ msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr "LD_TRACE_PRELINKING'li süzgeçler destenlenmez"
+
+-#: elf/dl-error.c:73
++#: elf/dl-error.c:75
+ msgid "DYNAMIC LINKER BUG!!!"
+ msgstr "DÄ°NAMÄ°K BAÄžLAYICI HATASI!!!"
+
+-#: elf/dl-error.c:106
++#: elf/dl-error.c:108
+ msgid "error while loading shared libraries"
+ msgstr "paylaşımlı kitaplıklar yüklenirken hata oluştu"
+
+-#: elf/dl-load.c:338
++#: elf/dl-load.c:339
+ msgid "cannot allocate name record"
+ msgstr "isim kaydı ayrılamadı"
+
+-#: elf/dl-load.c:440 elf/dl-load.c:520 elf/dl-load.c:614 elf/dl-load.c:709
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+ msgid "cannot create cache for search path"
+ msgstr "dosya arama yolu için arabellek oluşturulamıyor"
+
+-#: elf/dl-load.c:545
++#: elf/dl-load.c:543
+ msgid "cannot create RUNPATH/RPATH copy"
+ msgstr "RUNPATH/RPATH kopyası oluşturulamıyor"
+
+-#: elf/dl-load.c:600
++#: elf/dl-load.c:598
+ msgid "cannot create search path array"
+ msgstr "dosya arama yolu dizisi oluşturulamıyor"
+
+-#: elf/dl-load.c:796
++#: elf/dl-load.c:794
+ msgid "cannot stat shared object"
+ msgstr "paylaşımlı nesne durumlanamıyor"
+
+-#: elf/dl-load.c:840
++#: elf/dl-load.c:838
+ msgid "cannot open zero fill device"
+ msgstr "sıfırlar içeren aygıt açılamaz"
+
+-#: elf/dl-load.c:849 elf/dl-load.c:1855
++#: elf/dl-load.c:847 elf/dl-load.c:1902
+ msgid "cannot create shared object descriptor"
+ msgstr "paylaşımlı nesne tanımlayıcı oluşturulamıyor"
+
+-#: elf/dl-load.c:868 elf/dl-load.c:1351 elf/dl-load.c:1434
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+ msgid "cannot read file data"
+ msgstr "dosya verisi okunamıyor"
+
+-#: elf/dl-load.c:908
++#: elf/dl-load.c:906
+ msgid "ELF load command alignment not page-aligned"
+ msgstr "ELF yükleme komutu hizalaması sayfa-hizalamalı değil"
+
+-#: elf/dl-load.c:915
++#: elf/dl-load.c:913
+ msgid "ELF load command address/offset not properly aligned"
+ msgstr "ELF yükleme komutu adresi/başvurusu gereği gibi hizalanamıyor"
+
+-#: elf/dl-load.c:996
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
++msgstr "ilk kanak için TLS veri yapıları oluşturulamıyor"
++
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "TLS verisi alınamıyor"
++
++#: elf/dl-load.c:1047
+ msgid "failed to map segment from shared object"
+ msgstr "parça paylaşımlı nesneden eşleştirilemedi"
+
+-#: elf/dl-load.c:1020
++#: elf/dl-load.c:1071
+ msgid "cannot dynamically load executable"
+ msgstr "çalıştırılabilir dosya dinamik olarak yüklenemiyor"
+
+-#: elf/dl-load.c:1081
++#: elf/dl-load.c:1132
+ msgid "cannot change memory protections"
+ msgstr "bellek korumaları değiştirilemiyor"
+
+-#: elf/dl-load.c:1100
++#: elf/dl-load.c:1151
+ msgid "cannot map zero-fill pages"
+ msgstr "sıfırlar içeren sayfalar eşleştirilemez"
+
+-#: elf/dl-load.c:1118
++#: elf/dl-load.c:1169
+ msgid "cannot allocate memory for program header"
+ msgstr "uygulama başlığı için bellek ayrılamadı"
+
+-#: elf/dl-load.c:1149
++#: elf/dl-load.c:1200
+ msgid "object file has no dynamic section"
+ msgstr "nesne dosyasının dinamik bölümü yok"
+
+-#: elf/dl-load.c:1193
++#: elf/dl-load.c:1240
+ msgid "shared object cannot be dlopen()ed"
+ msgstr "paylaşımlı nesne dlopen()'lanamıyor"
+
+-#: elf/dl-load.c:1216
++#: elf/dl-load.c:1263
+ msgid "cannot create searchlist"
+ msgstr "arama listesi oluşturulamıyor"
+
+-#: elf/dl-load.c:1351
++#: elf/dl-load.c:1398
+ msgid "file too short"
+ msgstr "dosya çok küçük"
+
+-#: elf/dl-load.c:1374
++#: elf/dl-load.c:1421
+ msgid "invalid ELF header"
+ msgstr "ELF başlığı geçersiz"
+
+-#: elf/dl-load.c:1383
++#: elf/dl-load.c:1430
+ msgid "ELF file data encoding not big-endian"
+ msgstr "ELF dosyası verisinin kodlaması en-kıymetli-bayt-ilk (big-endian) değil"
+
+-#: elf/dl-load.c:1385
++#: elf/dl-load.c:1432
+ msgid "ELF file data encoding not little-endian"
+ msgstr "ELF dosyası verisinin kodlaması en-kıymetli-bayt-son (little-endian) değil"
+
+-#: elf/dl-load.c:1389
++#: elf/dl-load.c:1436
+ msgid "ELF file version ident does not match current one"
+ msgstr "ELF dosyası sürüm kimliği mevcut biriyle eşleşmiyor"
+
+-#: elf/dl-load.c:1393
++#: elf/dl-load.c:1440
+ msgid "ELF file OS ABI invalid"
+ msgstr "ELF dosyası OS ABI geçersiz"
+
+-#: elf/dl-load.c:1395
++#: elf/dl-load.c:1442
+ msgid "ELF file ABI version invalid"
+ msgstr "ELF dosyası ABI sürümü geçersiz"
+
+-#: elf/dl-load.c:1398
++#: elf/dl-load.c:1445
+ msgid "internal error"
+ msgstr "iç hata"
+
+-#: elf/dl-load.c:1405
++#: elf/dl-load.c:1452
+ msgid "ELF file version does not match current one"
+ msgstr "ELF dosyası sürümü mevcut biriyle eşleşmiyor"
+
+-#: elf/dl-load.c:1413
++#: elf/dl-load.c:1460
+ msgid "ELF file's phentsize not the expected size"
+ msgstr "ELF dosyasının phent uzunluğu beklenen uzunlukta değil"
+
+-#: elf/dl-load.c:1419
++#: elf/dl-load.c:1466
+ msgid "only ET_DYN and ET_EXEC can be loaded"
+ msgstr "sadece ET_DYN ve ET_EXEC yüklü olabilir"
+
+-#: elf/dl-load.c:1870
++#: elf/dl-load.c:1917
+ msgid "cannot open shared object file"
+ msgstr "paylaşımlı nesne dosyası açılamıyor"
+
+-#: elf/dl-lookup.c:248 elf/dl-lookup.c:413
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+ msgid "relocation error"
+ msgstr "yeniden konumlama hatası"
+
+-#: elf/dl-open.c:105
++#: elf/dl-open.c:111
+ msgid "cannot extend global scope"
+ msgstr "genel kapsam geniÅŸletilemiyor"
+
+-#: elf/dl-open.c:208
++#: elf/dl-open.c:214
+ msgid "empty dynamic string token substitution"
+ msgstr "boÅŸ dinamik dizge simge ikamesi"
+
+-#: elf/dl-open.c:345 elf/dl-open.c:356
++#: elf/dl-open.c:351 elf/dl-open.c:362
+ msgid "cannot create scope list"
+ msgstr "etki alanı listesi oluşturulamıyor"
+
+-#: elf/dl-open.c:416
++#: elf/dl-open.c:424
+ msgid "cannot create TLS data structures"
+ msgstr "TLS veri yapıları oluşturulamıyor"
+
+-#: elf/dl-open.c:478
++#: elf/dl-open.c:486
+ msgid "invalid mode for dlopen()"
+ msgstr "dlopen() için kip geçersiz"
+
+-#: elf/dl-reloc.c:88
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "paylaşımlı nesne dlopen()'lanamıyor: statik TLS belleği çok küçük"
++
++#: elf/dl-reloc.c:118
+ msgid "cannot make segment writable for relocation"
+ msgstr "yeniden konumlama için parça yazılabilir yapılamıyor"
+
+-#: elf/dl-reloc.c:174
++#: elf/dl-reloc.c:219
+ #, c-format
+ msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr "%s: profiler %s nesnesinde PLTREL bulamadı\n"
+
+-#: elf/dl-reloc.c:186
++#: elf/dl-reloc.c:231
+ #, c-format
+ msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr "%s: %s PLTREL gölgelenirken profiler bellekdışı\n"
+
+-#: elf/dl-reloc.c:201
++#: elf/dl-reloc.c:246
+ msgid "cannot restore segment prot after reloc"
+ msgstr "reloc işleminden sonra prot segmanı eski haline getirilemedi"
+
+@@ -5647,119 +5668,119 @@
+ msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr "Dinamik Bağlayıcının İcra Zamanı Bağıntılarını Yapılandırır."
+
+-#: elf/ldconfig.c:282
++#: elf/ldconfig.c:294
+ #, c-format
+ msgid "Path `%s' given more than once"
+ msgstr "`%s' dosya yolu birden fazla verilmiÅŸ"
+
+-#: elf/ldconfig.c:326
++#: elf/ldconfig.c:338
+ #, c-format
+ msgid "%s is not a known library type"
+ msgstr "%s bilinen bir kitaplık türü değil"
+
+-#: elf/ldconfig.c:344
++#: elf/ldconfig.c:356
+ #, c-format
+ msgid "Can't stat %s"
+ msgstr "stat %s yapılamıyor"
+
+-#: elf/ldconfig.c:414
++#: elf/ldconfig.c:426
+ #, c-format
+ msgid "Can't stat %s\n"
+ msgstr "stat %s yapılamıyor\n"
+
+-#: elf/ldconfig.c:424
++#: elf/ldconfig.c:436
+ #, c-format
+ msgid "%s is not a symbolic link\n"
+ msgstr "%s bir sembolik baÄŸ deÄŸil\n"
+
+-#: elf/ldconfig.c:443
++#: elf/ldconfig.c:455
+ #, c-format
+ msgid "Can't unlink %s"
+ msgstr "%s bağı kaldırılamadı"
+
+-#: elf/ldconfig.c:449
++#: elf/ldconfig.c:461
+ #, c-format
+ msgid "Can't link %s to %s"
+ msgstr "%s den %s'e bağ yapılamıyor"
+
+-#: elf/ldconfig.c:455
++#: elf/ldconfig.c:467
+ msgid " (changed)\n"
+ msgstr " (deÄŸiÅŸti)\n"
+
+-#: elf/ldconfig.c:457
++#: elf/ldconfig.c:469
+ msgid " (SKIPPED)\n"
+ msgstr " (ATLANDI)\n"
+
+-#: elf/ldconfig.c:512
++#: elf/ldconfig.c:524
+ #, c-format
+ msgid "Can't find %s"
+ msgstr "%s bulunamıyor"
+
+-#: elf/ldconfig.c:528
++#: elf/ldconfig.c:540
+ #, c-format
+ msgid "Can't lstat %s"
+ msgstr "lstat %s yapılamıyor"
+
+-#: elf/ldconfig.c:535
++#: elf/ldconfig.c:547
+ #, c-format
+ msgid "Ignored file %s since it is not a regular file."
+ msgstr "Normal bir dosya olmadığından %s dosyası yoksayıldı"
+
+-#: elf/ldconfig.c:543
++#: elf/ldconfig.c:555
+ #, c-format
+ msgid "No link created since soname could not be found for %s"
+ msgstr "%s için kitaplık ismi bulunamadığından bağ oluşturulmadı"
+
+-#: elf/ldconfig.c:634
++#: elf/ldconfig.c:646
+ #, c-format
+ msgid "Can't open directory %s"
+ msgstr "%s dizini açılamıyor"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:736
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
+ #, c-format
+ msgid "Cannot lstat %s"
+ msgstr "lstat %s yapılamıyor"
+
+-#: elf/ldconfig.c:701
++#: elf/ldconfig.c:713
+ #, c-format
+ msgid "Cannot stat %s"
+ msgstr "stat %s yapılamıyor"
+
+-#: elf/ldconfig.c:758 elf/readlib.c:93
++#: elf/ldconfig.c:770 elf/readlib.c:93
+ #, c-format
+ msgid "Input file %s not found.\n"
+ msgstr "Girdi dosyası %s bulunamadı.\n"
+
+-#: elf/ldconfig.c:792
++#: elf/ldconfig.c:804
+ #, c-format
+ msgid "libc5 library %s in wrong directory"
+ msgstr "libc5 kitaplığı %s yanlış dizinde"
+
+-#: elf/ldconfig.c:795
++#: elf/ldconfig.c:807
+ #, c-format
+ msgid "libc6 library %s in wrong directory"
+ msgstr "libc6 kitaplığı %s yanlış dizinde"
+
+-#: elf/ldconfig.c:798
++#: elf/ldconfig.c:810
+ #, c-format
+ msgid "libc4 library %s in wrong directory"
+ msgstr "libc4 kitaplığı %s yanlış dizinde"
+
+-#: elf/ldconfig.c:825
++#: elf/ldconfig.c:837
+ #, c-format
+ msgid "libraries %s and %s in directory %s have same soname but different type."
+ msgstr "%s ve %s kitaplıkları %s dizininde ve aynı isme sahip oldukları halde farklı türde."
+
+-#: elf/ldconfig.c:928
++#: elf/ldconfig.c:940
+ #, c-format
+ msgid "Can't open configuration file %s"
+ msgstr "Yapılandırma dosyası %s açılamıyor"
+
+-#: elf/ldconfig.c:1012
++#: elf/ldconfig.c:1024
+ msgid "Can't chdir to /"
+ msgstr "/ dizinine geçilemiyor"
+
+-#: elf/ldconfig.c:1054
++#: elf/ldconfig.c:1066
+ #, c-format
+ msgid "Can't open cache file directory %s\n"
+ msgstr "Arabellek dosyasının dizini %s açılamıyor\n"
+--- glibc-2.3.2/po/zh_CN.po 2002-09-24 01:38:27.000000000 -0400
++++ glibc-2.3.2/po/zh_CN.po 2003-08-21 08:37:07.000000000 -0400
+@@ -4,4985 +4,5214 @@
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: libc 2.2.5\n"
+-"POT-Creation-Date: 2001-08-17 13:03-0700\n"
+-"PO-Revision-Date: 2002-09-24 13:13+0800\n"
++"Project-Id-Version: libc 2.3.2\n"
++"POT-Creation-Date: 2003-02-22 15:34-0800\n"
++"PO-Revision-Date: 2003-06-06 15:10+0800\n"
+ "Last-Translator: Wang Li <charles@linux.net.cn>\n"
+ "Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=gb2312\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+-#: locale/programs/ld-monetary.c:278
+-#, c-format
+-msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
+-msgstr "\t\t\t\t\t\t\t %s£ºÓò¡°%s¡±µÄÖµ±ØÐë´¦ÓÚ·¶Î§ %d...%d Ö®ÄÚ"
+-
+-#: nis/nis_print.c:277
+-msgid "\t\tAccess Rights : "
+-msgstr "\t\t·ÃÎÊȨÏÞ £º"
+-
+-#: nis/nis_print.c:275
+-msgid "\t\tAttributes : "
+-msgstr "\t\tÊôÐÔ £º"
+-
+-#: sunrpc/rpc_main.c:1427
+-#, c-format
+-msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+-msgstr "\t%s [-abkCLNTM][-DÃû×Ö[=Öµ]] [-i ´óС] [-I [-K ÃëÊý]] [-Y ·¾¶] ÊäÈëÎļþ\n"
+-
+-#: sunrpc/rpc_main.c:1429
+-#, c-format
+-msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+-msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
++#: sysdeps/generic/siglist.h:29 stdio-common/../sysdeps/unix/siglist.c:27
++msgid "Hangup"
++msgstr "¹ÒÆð"
+
+-#: sunrpc/rpc_main.c:1432
+-#, c-format
+-msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+-msgstr "\t%s [-n ÍøÂç id]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
++#: sysdeps/generic/siglist.h:30 stdio-common/../sysdeps/unix/siglist.c:28
++msgid "Interrupt"
++msgstr "ÖжÏ"
+
+-#: sunrpc/rpc_main.c:1431
+-#, c-format
+-msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+-msgstr "\t%s [-s ÍøÂçÀàÐÍ]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
++#: sysdeps/generic/siglist.h:31 stdio-common/../sysdeps/unix/siglist.c:29
++msgid "Quit"
++msgstr "Í˳ö"
+
+-#: nis/nis_print.c:239
+-msgid "\tAccess rights: "
+-msgstr "\t·ÃÎÊȨÏÞ £º"
++#: sysdeps/generic/siglist.h:32 stdio-common/../sysdeps/unix/siglist.c:30
++msgid "Illegal instruction"
++msgstr "·Ç·¨Ö¸Áî"
+
+-#: nis/nis_print.c:297
+-#, c-format
+-msgid "\tEntry data of type %s\n"
++#: sysdeps/generic/siglist.h:33 stdio-common/../sysdeps/unix/siglist.c:31
++msgid "Trace/breakpoint trap"
+ msgstr ""
+
+-#: nis/nis_print.c:175
+-#, c-format
+-msgid "\tName : %s\n"
+-msgstr "\tÃû³Æ £º%s\n"
++#: sysdeps/generic/siglist.h:34
++msgid "Aborted"
++msgstr "ÒÑ·ÅÆú"
+
+-#: nis/nis_print.c:176
+-msgid "\tPublic Key : "
+-msgstr "\t¹«Ô¿ £º"
++#: sysdeps/generic/siglist.h:35 stdio-common/../sysdeps/unix/siglist.c:34
++msgid "Floating point exception"
++msgstr "¸¡µãÊýÀýÍâ"
+
+-#: nis/nis_print.c:238
+-#, c-format
+-msgid "\tType : %s\n"
+-msgstr "\tÀàÐÍ £º%s\n"
++#: sysdeps/generic/siglist.h:36 stdio-common/../sysdeps/unix/siglist.c:35
++msgid "Killed"
++msgstr "ÒÑɱËÀ"
+
+-#: nis/nis_print.c:205
+-#, c-format
+-msgid "\tUniversal addresses (%u)\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:37 stdio-common/../sysdeps/unix/siglist.c:36
++msgid "Bus error"
++msgstr "×ÜÏß´íÎó"
+
+-#: nis/nis_print.c:273
+-#, c-format
+-msgid "\t[%d]\tName : %s\n"
+-msgstr "\t[%d]\tÃû³Æ £º%s\n"
++#: sysdeps/generic/siglist.h:38 stdio-common/../sysdeps/unix/siglist.c:37
++msgid "Segmentation fault"
++msgstr "¶Î´íÎó"
+
+-#: nis/nis_print.c:300
+-#, c-format
+-msgid "\t[%u] - [%u bytes] "
+-msgstr "\t[%u] - [%u ×Ö½Ú] "
++#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
++#. TRANS Every library function that returns this error code also generates a
++#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
++#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
++#. TRANS unless it has handled or blocked @code{SIGPIPE}.
++#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:351
++#: stdio-common/../sysdeps/unix/siglist.c:39
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
++msgid "Broken pipe"
++msgstr "¶Ï¿ªµÄ¹ÜµÀ"
+
+-#: nscd/nscd_stat.c:154
+-#, c-format
+-msgid ""
+-"\n"
+-"%s cache:\n"
+-"\n"
+-"%15s cache is enabled\n"
+-"%15Zd suggested size\n"
+-"%15ld seconds time to live for positive entries\n"
+-"%15ld seconds time to live for negative entries\n"
+-"%15ld cache hits on positive entries\n"
+-"%15ld cache hits on negative entries\n"
+-"%15ld cache misses on positive entries\n"
+-"%15ld cache misses on negative entries\n"
+-"%15ld%% cache hit rate\n"
+-"%15s check /etc/%s for changes\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:40 stdio-common/../sysdeps/unix/siglist.c:40
++msgid "Alarm clock"
++msgstr "ÄÖÖÓ"
+
+-#: nis/nis_print.c:255
+-msgid ""
+-"\n"
+-"Group Members :\n"
+-msgstr ""
+-"\n"
+-"×é³ÉÔ± £º\n"
++#: sysdeps/generic/siglist.h:41 stdio-common/../sysdeps/unix/siglist.c:41
++msgid "Terminated"
++msgstr "ÒÑÖÕÖ¹"
+
+-#: nis/nis_print.c:326
+-msgid ""
+-"\n"
+-"Time to Live : "
++#: sysdeps/generic/siglist.h:42 stdio-common/../sysdeps/unix/siglist.c:42
++msgid "Urgent I/O condition"
+ msgstr ""
+-"\n"
+-"´æÔÚµÄʱ¼ä £º"
+-
+-#: sunrpc/rpcinfo.c:679
+-msgid " rpcinfo -b prognum versnum\n"
+-msgstr " rpcinfo -b ³ÌÐòºÅ °æ±¾ºÅ\n"
+-
+-#: sunrpc/rpcinfo.c:680
+-msgid " rpcinfo -d prognum versnum\n"
+-msgstr " rpcinfo -d ³ÌÐòºÅ °æ±¾ºÅ\n"
+
+-#: sunrpc/rpcinfo.c:678
+-msgid " rpcinfo -p [ host ]\n"
+-msgstr " rpcinfo -p [ Ö÷»ú ]\n"
++#: sysdeps/generic/siglist.h:43 stdio-common/../sysdeps/unix/siglist.c:43
++msgid "Stopped (signal)"
++msgstr "Í£Ö¹ (ÐźÅ)"
+
+-#: sunrpc/rpcinfo.c:676
+-msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
+-msgstr " rpcinfo [ -n ¶Ë¿ÚºÅ ] -t Ö÷»ú ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
++#: sysdeps/generic/siglist.h:44 stdio-common/../sysdeps/unix/siglist.c:44
++msgid "Stopped"
++msgstr "Í£Ö¹"
+
+-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
+-msgid " no"
+-msgstr " ·ñ"
++#: sysdeps/generic/siglist.h:45 stdio-common/../sysdeps/unix/siglist.c:45
++msgid "Continued"
++msgstr "¼ÌÐø"
+
+-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
+-msgid " yes"
+-msgstr " ÊÇ"
++#: sysdeps/generic/siglist.h:46 stdio-common/../sysdeps/unix/siglist.c:46
++msgid "Child exited"
++msgstr "×Ó½ø³ÌÒÑÍ˳ö"
+
+-#: nis/nis_print.c:352
+-#, c-format
+-msgid " Data Length = %u\n"
+-msgstr " Êý¾Ý³¤¶È = %u\n"
++#: sysdeps/generic/siglist.h:47 stdio-common/../sysdeps/unix/siglist.c:47
++msgid "Stopped (tty input)"
++msgstr "Í£Ö¹ (tty ÊäÈë)"
+
+-#: nis/nis_print_group_entry.c:123
+-msgid " Explicit members:\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:48 stdio-common/../sysdeps/unix/siglist.c:48
++msgid "Stopped (tty output)"
++msgstr "Í£Ö¹ (tty Êä³ö)"
+
+-#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
+-msgid " Explicit nonmembers:\n"
++#: sysdeps/generic/siglist.h:49 stdio-common/../sysdeps/unix/siglist.c:49
++msgid "I/O possible"
+ msgstr ""
+
+-#: nis/nis_print_group_entry.c:131
+-msgid " Implicit members:\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:50 stdio-common/../sysdeps/unix/siglist.c:50
++msgid "CPU time limit exceeded"
++msgstr "³¬³ö CPU ʱÏÞ"
+
+-#: nis/nis_print_group_entry.c:155
+-msgid " Implicit nonmembers:\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:51 stdio-common/../sysdeps/unix/siglist.c:51
++msgid "File size limit exceeded"
++msgstr "Îļþ´óС³¬³öÏÞÖÆ"
+
+-#: nis/nis_print_group_entry.c:128
+-msgid " No explicit members\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:52 stdio-common/../sysdeps/unix/siglist.c:52
++msgid "Virtual timer expired"
++msgstr "ÐéÄâ¼ÆʱÆ÷³¬Ê±"
+
+-#: nis/nis_print_group_entry.c:152
+-msgid " No explicit nonmembers\n"
++#: sysdeps/generic/siglist.h:53 stdio-common/../sysdeps/unix/siglist.c:53
++msgid "Profiling timer expired"
+ msgstr ""
+
+-#: nis/nis_print_group_entry.c:136
+-msgid " No implicit members\n"
++#: sysdeps/generic/siglist.h:54 stdio-common/../sysdeps/unix/siglist.c:54
++msgid "Window changed"
+ msgstr ""
+
+-#: nis/nis_print_group_entry.c:160
+-msgid " No implicit nonmembers\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:55 stdio-common/../sysdeps/unix/siglist.c:56
++msgid "User defined signal 1"
++msgstr "Óû§¶¨ÒåÐźŠ1"
+
+-#: nis/nis_print_group_entry.c:144
+-msgid " No recursive members\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:56 stdio-common/../sysdeps/unix/siglist.c:57
++msgid "User defined signal 2"
++msgstr "Óû§¶¨ÒåÐźŠ2"
+
+-#: nis/nis_print_group_entry.c:168
+-msgid " No recursive nonmembers\n"
++#: sysdeps/generic/siglist.h:60 stdio-common/../sysdeps/unix/siglist.c:33
++msgid "EMT trap"
+ msgstr ""
+
+-#: nis/nis_print_group_entry.c:139
+-msgid " Recursive members:\n"
+-msgstr ""
++#: sysdeps/generic/siglist.h:63 stdio-common/../sysdeps/unix/siglist.c:38
++msgid "Bad system call"
++msgstr "´íÎóµÄϵͳµ÷ÓÃ"
+
+-#: sunrpc/rpcinfo.c:574
+-msgid " program vers proto port\n"
+-msgstr " ³ÌÐò °æ±¾ ЭÒé ¶Ë¿Ú\n"
++#: sysdeps/generic/siglist.h:66
++msgid "Stack fault"
++msgstr "ջʧЧ"
+
+-#: argp/argp-help.c:1572
+-msgid " or: "
+-msgstr " »ò£º"
++#: sysdeps/generic/siglist.h:69
++msgid "Information request"
++msgstr "ÐÅÏ¢ÇëÇó"
+
+-#: elf/ldconfig.c:457
+-msgid " (SKIPPED)\n"
+-msgstr " (Ìø¹ý)\n"
++#: sysdeps/generic/siglist.h:71
++msgid "Power failure"
++msgstr "µçԴʧЧ"
+
+-#: elf/ldconfig.c:455
+-msgid " (changed)\n"
+-msgstr " (¸Ä±ä)\n"
++#: sysdeps/generic/siglist.h:74 stdio-common/../sysdeps/unix/siglist.c:55
++msgid "Resource lost"
++msgstr "×ÊÔ´¶ªÊ§"
+
+-#: timezone/zic.c:427
+-#, c-format
+-msgid " (rule from \"%s\", line %d)"
+-msgstr ""
++#: sysdeps/mach/hurd/mips/dl-machine.c:68
++#: string/../sysdeps/mach/_strerror.c:57
++msgid "Error in unknown error system: "
++msgstr "δ֪µÄ´íÎóϵͳÖгö´í£º"
+
+-#: argp/argp-help.c:1584
+-msgid " [OPTION...]"
+-msgstr " [Ñ¡Ïî...]"
++#: sysdeps/mach/hurd/mips/dl-machine.c:83
++#: string/../sysdeps/generic/_strerror.c:44
++#: string/../sysdeps/mach/_strerror.c:87
++msgid "Unknown error "
++msgstr "δ֪µÄ´íÎó "
+
+-#: timezone/zic.c:424
++#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+ #, c-format
+-msgid "\"%s\", line %d: %s"
+-msgstr "¡°%s¡±£¬ÐÐ %d£º%s"
++msgid "cannot open `%s'"
++msgstr "ÎÞ·¨´ò¿ª¡°%s¡±"
+
+-#: timezone/zic.c:989
++#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+ #, c-format
+-msgid "\"Zone %s\" line and -l option are mutually exclusive"
+-msgstr ""
++msgid "cannot read header from `%s'"
++msgstr "ÎÞ·¨´Ó¡°%s¡±ÖжÁÈëÍ·"
+
+-#: timezone/zic.c:997
++#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:293 catgets/gencat.c:288
+ #, c-format
+-msgid "\"Zone %s\" line and -p option are mutually exclusive"
+-msgstr ""
+-
+-#: sunrpc/rpc_main.c:1412
+-msgid "\"infile\" is required for template generation flags.\n"
+-msgstr "¡°ÊäÈëÎļþ¡±¶ÔÄ£°åÉú³É±êÖ¾À´ËµÊDZØÐëµÄ¡£\n"
++msgid "cannot open input file `%s'"
++msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ¡°%s¡±"
+
+-#: argp/argp-help.c:209
++#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:311
+ #, c-format
+-msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+-msgstr "%.*s£º²ÎÊý ARGP_HELP_FMT ÐèÒªÒ»¸öÖµ"
++msgid "error while closing input `%s'"
++msgstr "¹Ø±ÕÊäÈë¡°%s¡±Ê±³ö´í"
+
+-#: argp/argp-help.c:218
++#: iconv/iconv_charmap.c:443
+ #, c-format
+-msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+-msgstr "%.*s£ºÎ´ÖªµÄ ARGP_HELP_FMT ²ÎÊý"
++msgid "illegal input sequence at position %Zd"
++msgstr "λÓÚ %Zd µÄ·Ç·¨ÊäÈëÐòÁÐ"
+
+-#: locale/programs/ld-address.c:581 locale/programs/ld-collate.c:2612
+-#: locale/programs/ld-collate.c:3740 locale/programs/ld-ctype.c:2112
+-#: locale/programs/ld-ctype.c:2849 locale/programs/ld-identification.c:448
+-#: locale/programs/ld-measurement.c:237 locale/programs/ld-messages.c:331
+-#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:305
+-#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:238
+-#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1199
+-#, c-format
+-msgid "%1$s: definition does not end with `END %1$s'"
+-msgstr "%1$s£º¶¨Òå²»ÒÔ¡°END %1$s¡±½áβ"
++#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:503
++msgid "incomplete character or shift sequence at end of buffer"
++msgstr "λÓÚ»º³åÇøĩβµÄ²»ÍêÕû×Ö·û»òתÒåÐòÁÐ"
+
+-#: elf/cache.c:190 elf/cache.c:200
+-#, c-format
+-msgid "%d libs found in cache `%s'\n"
+-msgstr "ÔÚ»º³åÇø¡°%2$s¡±ÖÐÕÒµ½ %1$d ¸ö¿â\n"
++#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:546
++#: iconv/iconv_prog.c:582
++msgid "error while reading the input"
++msgstr "¶ÁÈ¡ÊäÈëʱ³ö´í"
+
+-#: timezone/zic.c:799
+-#, c-format
+-msgid "%s in ruleless zone"
+-msgstr ""
++#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:564
++msgid "unable to allocate buffer for input"
++msgstr "ÎÞ·¨ÎªÊäÈë·ÖÅ仺³åÇø"
+
+-#: elf/../sysdeps/generic/readelflib.c:67
+-#, c-format
+-msgid "%s is a 32 bit ELF file.\n"
+-msgstr "%s ÊÇÒ»¸ö 32 λ ELF Îļþ¡£\n"
++#: iconv/iconv_prog.c:61
++msgid "Input/Output format specification:"
++msgstr "ÊäÈë/Êä³ö¸ñʽ¹æ·¶£º"
+
+-#: elf/../sysdeps/generic/readelflib.c:69
+-#, c-format
+-msgid "%s is a 64 bit ELF file.\n"
+-msgstr "%s ÊÇÒ»¸ö 64 λ ELF Îļþ¡£\n"
++#: iconv/iconv_prog.c:62
++msgid "encoding of original text"
++msgstr "ԭʼÎı¾±àÂë"
+
+-#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
+-#, c-format
+-msgid "%s is for unknown machine %d.\n"
+-msgstr "%s ÓÃÓÚδ֪µÄ»úÆ÷ %d¡£\n"
++#: iconv/iconv_prog.c:63
++msgid "encoding for output"
++msgstr "Êä³ö±àÂë"
+
+-#: elf/ldconfig.c:326
+-#, c-format
+-msgid "%s is not a known library type"
+-msgstr "%s ²»ÊÇÒÑÖªÀàÐ͵Ŀâ"
++#: iconv/iconv_prog.c:64
++msgid "Information:"
++msgstr "ÐÅÏ¢£º"
+
+-#: elf/../sysdeps/generic/readelflib.c:78
+-#, c-format
+-msgid "%s is not a shared object file (Type: %d).\n"
+-msgstr "%s ²»Êǹ²ÏíÄ¿±êÎļþ (ÀàÐÍ£º%d)¡£\n"
++#: iconv/iconv_prog.c:65
++msgid "list all known coded character sets"
++msgstr "ÁоÙËùÓÐÒÑÖªµÄ×Ö·û¼¯"
+
+-#: elf/ldconfig.c:424
+-#, c-format
+-msgid "%s is not a symbolic link\n"
+-msgstr "%s ²»ÊÇ·ûºÅÁ¬½Ó\n"
++#: iconv/iconv_prog.c:66 locale/programs/localedef.c:128
++msgid "Output control:"
++msgstr "Êä³ö¿ØÖÆ£º"
++
++#: iconv/iconv_prog.c:67
++msgid "omit invalid characters from output"
++msgstr "´ÓÊä³öÖкöÂÔÎÞЧµÄ×Ö·û"
++
++#: iconv/iconv_prog.c:68
++msgid "output file"
++msgstr "Êä³öÎļþ"
++
++#: iconv/iconv_prog.c:69
++msgid "suppress warnings"
++msgstr "¹Ø±Õ¾¯¸æ"
++
++#: iconv/iconv_prog.c:70
++msgid "print progress information"
++msgstr "´òÓ¡½ø¶ÈÐÅÏ¢"
++
++#: iconv/iconv_prog.c:75
++msgid "Convert encoding of given files from one encoding to another."
++msgstr "ת»»¸ø¶¨ÎļþµÄ±àÂë¡£"
++
++#: iconv/iconv_prog.c:79
++msgid "[FILE...]"
++msgstr "[Îļþ...]"
++
++#: iconv/iconv_prog.c:199
++msgid "cannot open output file"
++msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ"
+
+-#: elf/readlib.c:155
++#: iconv/iconv_prog.c:241
+ #, c-format
+-msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+-msgstr "%s ²»ÊÇ ELF Îļþ - ËüÆðʼµÄħÊý´íÎó¡£\n"
++msgid "conversion from `%s' and to `%s' are not supported"
++msgstr "²»Ö§³Ö´Ó¡°%s¡±µ½¡°%s¡±µÄת»»"
+
+-#: assert/assert.c:54
++#: iconv/iconv_prog.c:246
+ #, c-format
+-msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+-msgstr "%s%s%s£º%u£º%s%s¶ÏÑÔ¡°%s¡±Ê§°Ü¡£\n"
++msgid "conversion from `%s' is not supported"
++msgstr "²»Ö§³ÖÒÔ¡°%s¡±ÎªÔ´Í·µÄת»»"
+
+-#: assert/assert-perr.c:56
++#: iconv/iconv_prog.c:253
+ #, c-format
+-msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+-msgstr "%s%s%s£º%u£º%s%sÒâÍâµÄ´íÎó£º%s¡£\n"
++msgid "conversion to `%s' is not supported"
++msgstr "²»Ö§³ÖÒÔ¡°%s¡±ÎªÄ¿±êµÄת»»"
+
+-#: stdio-common/psignal.c:62
++#: iconv/iconv_prog.c:257
+ #, c-format
+-msgid "%s%sUnknown signal %d\n"
+-msgstr "%s%sδ֪µÄÐźŠ%d\n"
++msgid "conversion from `%s' to `%s' is not supported"
++msgstr "²»Ö§³Ö´Ó¡°%s¡±µ½¡°%s¡±µÄת»»"
++
++#: iconv/iconv_prog.c:263
++msgid "failed to start conversion processing"
++msgstr "Æô¶¯×ª»»´¦Àíʧ°Ü"
++
++#: iconv/iconv_prog.c:358
++msgid "error while closing output file"
++msgstr "¹Ø±ÕÊä³öÎļþʱ³ö´í"
+
+-#: timezone/zic.c:2234
++#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
++#: locale/programs/localedef.c:372 catgets/gencat.c:233
++#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
++msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
++msgstr "Óá°glibcbug¡±½Å±¾½«´íÎ󱨸æ¸ø <bugs@gnu.org>¡£\n"
++
++#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
++#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
++#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
++#: elf/sprof.c:349
+ #, c-format
+-msgid "%s: %d did not sign extend correctly\n"
++msgid ""
++"Copyright (C) %s Free Software Foundation, Inc.\n"
++"This is free software; see the source for copying conditions. There is NO\n"
++"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+ msgstr ""
+
+-#: locale/programs/charmap.c:331
++#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
++#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
++#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
++#: elf/sprof.c:355
+ #, c-format
+-msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
+-msgstr "%s£º<mb_cur_max> ±ØÐë´óÓÚ <mb_cur_min>\n"
++msgid "Written by %s.\n"
++msgstr "ÓÉ %s ±àд¡£\n"
+
+-#: sunrpc/rpc_main.c:423
+-#, c-format
+-msgid "%s: C preprocessor failed with exit code %d\n"
+-msgstr "%s£ºC Ô¤´¦ÀíÆ÷ʧ°Ü£¬·µ»Ø %d\n"
++#: iconv/iconv_prog.c:456 iconv/iconv_prog.c:482
++msgid "conversion stopped due to problem in writing the output"
++msgstr "ÓÉÓÚдÈëÊä³öʱ³öÏÖµÄÎÊÌâת»»Í£Ö¹"
+
+-#: sunrpc/rpc_main.c:420
++#: iconv/iconv_prog.c:499
+ #, c-format
+-msgid "%s: C preprocessor failed with signal %d\n"
+-msgstr "%s£ºC Ô¤´¦ÀíÆ÷ÒòÐźŠ%d ¶øʧ°Ü\n"
++msgid "illegal input sequence at position %ld"
++msgstr "δ֪ %ld ´¦µÄ·Ç·¨ÊäÈëÐòÁÐ"
+
+-#: timezone/zic.c:1500
+-#, c-format
+-msgid "%s: Can't create %s: %s\n"
+-msgstr "%s£ºÎÞ·¨´´½¨ %s£º%s\n"
++#: iconv/iconv_prog.c:507
++msgid "internal error (illegal descriptor)"
++msgstr "ÄÚ²¿´íÎó (·Ç·¨µÄÃèÊö·û)"
+
+-#: timezone/zic.c:2212
++#: iconv/iconv_prog.c:510
+ #, c-format
+-msgid "%s: Can't create directory %s: %s\n"
+-msgstr "%s£ºÎÞ·¨´´½¨Ä¿Â¼ %s£º%s\n"
++msgid "unknown iconv() error %d"
++msgstr "δ֪µÄ iconv() ´íÎó %d"
+
+-#: timezone/zic.c:651
+-#, c-format
+-msgid "%s: Can't link from %s to %s: %s\n"
+-msgstr "%s£ºÎÞ·¨´Ó %s Á¬½Óµ½ %s£º%s\n"
++#: iconv/iconv_prog.c:753
++msgid ""
++"The following list contain all the coded character sets known. This does\n"
++"not necessarily mean that all combinations of these names can be used for\n"
++"the FROM and TO command line parameters. One coded character set can be\n"
++"listed with several different names (aliases).\n"
++"\n"
++" "
++msgstr ""
+
+-#: timezone/zic.c:825
+-#, c-format
+-msgid "%s: Can't open %s: %s\n"
+-msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%s\n"
++#: iconv/iconvconfig.c:110
++msgid "Create fastloading iconv module configuration file."
++msgstr "´´½¨¿ìËÙ×°Èë iconv Ä£¿éÅäÖÃÎļþ¡£"
+
+-#: timezone/zic.c:1490
+-#, c-format
+-msgid "%s: Can't remove %s: %s\n"
+-msgstr "%s£ºÎÞ·¨É¾³ý %s£º%s\n"
++#: iconv/iconvconfig.c:114
++msgid "[DIR...]"
++msgstr "[Ŀ¼...]"
+
+-#: timezone/zic.c:636
+-#, c-format
+-msgid "%s: Can't unlink %s: %s\n"
+-msgstr "%s£ºÎÞ·¨½â³ýÁ¬½Ó %s£º%s\n"
++#: iconv/iconvconfig.c:126
++msgid "Prefix used for all file accesses"
++msgstr "ÓÃÓÚËùÓÐÎļþ·ÃÎʵÄǰ׺"
++
++#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
++msgid "no output file produced because warning were issued"
++msgstr "ÓÉÓÚ³öÏÖ¾¯¸æ¶øδÉú³ÉÊä³öÎļþ"
++
++#: iconv/iconvconfig.c:405
++msgid "while inserting in search tree"
++msgstr "²åÈëËÑË÷Ê÷ʱ"
++
++#: iconv/iconvconfig.c:1204
++msgid "cannot generate output file"
++msgstr "ÎÞ·¨Éú³ÉÊä³öÎļþ"
+
+-#: timezone/zic.c:894
++#: locale/programs/charmap-dir.c:59
+ #, c-format
+-msgid "%s: Error closing %s: %s\n"
+-msgstr "%s£º¹Ø±Õ %s ´íÎó£º%s\n"
++msgid "cannot read character map directory `%s'"
++msgstr "ÎÞ·¨¶ÁÈë×ÖĸӳÉäĿ¼¡°%s¡±"
+
+-#: timezone/zic.c:887
++#: locale/programs/charmap.c:135
+ #, c-format
+-msgid "%s: Error reading %s\n"
+-msgstr "%s£º¶Á %s ´íÎó\n"
++msgid "character map file `%s' not found"
++msgstr "ÕÒ²»µ½×Ö·ûÓ³ÉäÎļþ¡°%s¡±"
+
+-#: timezone/zic.c:1566
++#: locale/programs/charmap.c:193
+ #, c-format
+-msgid "%s: Error writing %s\n"
+-msgstr "%s£ºÐ´ %s ´íÎó\n"
++msgid "default character map file `%s' not found"
++msgstr "ÕÒ²»µ½Ä¬ÈÏ×Ö·ûÓ³ÉäÎļþ¡°%s¡±"
+
+-#: timezone/zic.c:872
++#: locale/programs/charmap.c:255
+ #, c-format
+-msgid "%s: Leap line in non leap seconds file %s\n"
++msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
+ msgstr ""
+
+-#: timezone/zic.c:365
++#: locale/programs/charmap.c:332
+ #, c-format
+-msgid "%s: Memory exhausted: %s\n"
+-msgstr "%s£ºÄÚ´æºÄ¾¡£º%s\n"
++msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
++msgstr "%s£º<mb_cur_max> ±ØÐë´óÓÚ <mb_cur_min>\n"
+
+-#: timezone/zic.c:531
++#: locale/programs/charmap.c:352 locale/programs/charmap.c:369
++#: locale/programs/repertoire.c:175
+ #, c-format
+-msgid "%s: More than one -L option specified\n"
+-msgstr "%s£º¸ø³öÁ˶à¸ö -L Ñ¡Ïî\n"
++msgid "syntax error in prolog: %s"
++msgstr "ÐòÑÔÖÐÓï·¨´íÎó£º%s"
+
+-#: timezone/zic.c:491
+-#, c-format
+-msgid "%s: More than one -d option specified\n"
+-msgstr "%s£º¸ø³öÁ˶à¸ö -d Ñ¡Ïî\n"
++#: locale/programs/charmap.c:353
++msgid "invalid definition"
++msgstr "ÎÞЧµÄ¶¨Òå"
+
+-#: timezone/zic.c:501
+-#, c-format
+-msgid "%s: More than one -l option specified\n"
+-msgstr "%s£º¸ø³öÁ˶à¸ö -l Ñ¡Ïî\n"
++#: locale/programs/charmap.c:370 locale/programs/locfile.c:126
++#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
++msgid "bad argument"
++msgstr "´íÎóµÄ²ÎÊý"
+
+-#: timezone/zic.c:511
++#: locale/programs/charmap.c:398
+ #, c-format
+-msgid "%s: More than one -p option specified\n"
+-msgstr "%s£º¸ø³öÁ˶à¸ö -p Ñ¡Ïî\n"
++msgid "duplicate definition of <%s>"
++msgstr "Öظ´¶¨Òå <%s>"
+
+-#: timezone/zic.c:521
++#: locale/programs/charmap.c:405
+ #, c-format
+-msgid "%s: More than one -y option specified\n"
+-msgstr "%s£º¸ø³öÁ˶à¸ö -y Ñ¡Ïî\n"
++msgid "value for <%s> must be 1 or greater"
++msgstr "<%s>µÄÖµ±ØÐëÊÇ 1 »ò¸ü´ó"
+
+-#: argp/argp-parse.c:646
++#: locale/programs/charmap.c:417
+ #, c-format
+-msgid "%s: Too many arguments\n"
+-msgstr "%s£º¹ý¶àµÄÑ¡Ïî\n"
++msgid "value of <%s> must be greater or equal than the value of <%s>"
++msgstr "<%s> µÄÖµ±ØÐë´óÓÚµÈÓÚ <%s> µÄÖµ"
+
+-#: locale/programs/ld-collate.c:457 locale/programs/ld-collate.c:483
+-#: locale/programs/ld-collate.c:499
++#: locale/programs/charmap.c:440 locale/programs/repertoire.c:184
+ #, c-format
+-msgid "%s: `%s' mentioned more than once in definition of weight %d"
+-msgstr ""
++msgid "argument to <%s> must be a single character"
++msgstr "<%s>µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
+
+-#: locale/programs/ld-collate.c:1336
+-#, c-format
+-msgid "%s: `%s' must be a character"
+-msgstr "%s£º¡°%s¡±±ØÐëÊÇÒ»¸ö×Ö·û"
++#: locale/programs/charmap.c:466
++msgid "character sets with locking states are not supported"
++msgstr "²»Ö§³Ö´øÓÐËø¶¨×´Ì¬µÄ×Ö·û¼¯"
+
+-#: locale/programs/ld-address.c:248 locale/programs/ld-address.c:276
+-#: locale/programs/ld-address.c:309 locale/programs/ld-address.c:321
++#: locale/programs/charmap.c:493 locale/programs/charmap.c:547
++#: locale/programs/charmap.c:579 locale/programs/charmap.c:673
++#: locale/programs/charmap.c:728 locale/programs/charmap.c:769
++#: locale/programs/charmap.c:810
+ #, c-format
+-msgid "%s: `%s' value does not match `%s' value"
+-msgstr "%s£º¡°%s¡±µÄÖµ²»ÄÜÆ¥Åä¡°%s¡±µÄÖµ"
++msgid "syntax error in %s definition: %s"
++msgstr "%s µÄ¶¨ÒåÖеÄÓï·¨´íÎó£º%s"
+
+-#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:318
+-#, c-format
+-msgid "%s: `-1' must be last entry in `%s' field"
+-msgstr "%s£º¡°-1¡±±ØÐëÊÇ¡°%s¡±ÓòÖеÄ×îºóÒ»¸öÌõÄ¿"
++#: locale/programs/charmap.c:494 locale/programs/charmap.c:674
++#: locale/programs/charmap.c:770 locale/programs/repertoire.c:231
++msgid "no symbolic name given"
++msgstr "ûÓиø³ö·ûºÅÃû"
++
++#: locale/programs/charmap.c:548
++msgid "invalid encoding given"
++msgstr "¸ø³öÎÞЧµÄ±àÂë"
++
++#: locale/programs/charmap.c:557
++msgid "too few bytes in character encoding"
++msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ýÉÙ"
++
++#: locale/programs/charmap.c:559
++msgid "too many bytes in character encoding"
++msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ý¶à"
++
++#: locale/programs/charmap.c:581 locale/programs/charmap.c:729
++#: locale/programs/charmap.c:812 locale/programs/repertoire.c:297
++msgid "no symbolic name given for end of range"
++msgstr "ûÓÐΪ·¶Î§µÄ½áÊø¸ø³ö·ûºÅ»¯µÄÃû³Æ"
+
+-#: locale/programs/ld-collate.c:447 locale/programs/ld-collate.c:473
++#: locale/programs/charmap.c:605 locale/programs/locfile.h:96
++#: locale/programs/repertoire.c:314
+ #, c-format
+-msgid "%s: `forward' and `backward' are mutually excluding each other"
++msgid "`%1$s' definition does not end with `END %1$s'"
++msgstr "¶Ô¡°%1$s¡±µÄ¶¨Òå²¢²»ÒÔ¡°END %1%s¡±½áÊø"
++
++#: locale/programs/charmap.c:638
++msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:1528
++#: locale/programs/charmap.c:646 locale/programs/charmap.c:709
+ #, c-format
+-msgid "%s: `position' must be used for a specific level in all sections or none"
+-msgstr ""
++msgid "value for %s must be an integer"
++msgstr "%s µÄÖµ±ØÐëΪÕûÊý"
+
+-#: locale/programs/ld-ctype.c:2637 locale/programs/ld-ctype.c:2777
++#: locale/programs/charmap.c:837
+ #, c-format
+-msgid "%s: `translit_start' section does not end with `translit_end'"
+-msgstr "%s£º¡°translit_start¡±½Ú²»ÒÔ¡°translit_end¡±½áÊø"
++msgid "%s: error in state machine"
++msgstr "%s£º×´Ì¬»ú³ö´í"
+
+-#: locale/programs/ld-collate.c:1136
++#: locale/programs/charmap.c:845 locale/programs/ld-address.c:605
++#: locale/programs/ld-collate.c:2635 locale/programs/ld-collate.c:3793
++#: locale/programs/ld-ctype.c:2216 locale/programs/ld-ctype.c:2977
++#: locale/programs/ld-identification.c:469
++#: locale/programs/ld-measurement.c:255 locale/programs/ld-messages.c:349
++#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:324
++#: locale/programs/ld-numeric.c:392 locale/programs/ld-paper.c:258
++#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1217
++#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
+ #, c-format
+-msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
+-msgstr ""
++msgid "%s: premature end of file"
++msgstr "%s£ºÎļþ²»ÍêÕû"
+
+-#: locale/programs/ld-collate.c:1094
++#: locale/programs/charmap.c:864 locale/programs/charmap.c:875
+ #, c-format
+-msgid "%s: byte sequences of first and last character must have the same length"
+-msgstr "%s£º×Ö½ÚÐòÁеĵÚÒ»¸öºÍ×îºóÒ»¸ö×Ö·ûµÄ³Ì¶È±ØÐëÏàͬ"
++msgid "unknown character `%s'"
++msgstr "δ֪µÄ×Ö·û¡°%s¡±"
+
+-#: locale/programs/ld-collate.c:3663
++#: locale/programs/charmap.c:883
+ #, c-format
+-msgid "%s: cannot have `%s' as end of ellipsis range"
++msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:3327
+-#, c-format
+-msgid "%s: cannot reorder after %.*s: symbol not known"
++#: locale/programs/charmap.c:987 locale/programs/ld-collate.c:2915
++#: locale/programs/repertoire.c:420
++msgid "invalid names for character range"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:2912 locale/programs/ld-ctype.c:2996
+-#: locale/programs/ld-ctype.c:3016 locale/programs/ld-ctype.c:3037
+-#: locale/programs/ld-ctype.c:3058 locale/programs/ld-ctype.c:3079
+-#: locale/programs/ld-ctype.c:3100 locale/programs/ld-ctype.c:3140
+-#: locale/programs/ld-ctype.c:3161 locale/programs/ld-ctype.c:3228
+-#, c-format
+-msgid "%s: character `%s' in charmap not representable with one byte"
++#: locale/programs/charmap.c:999 locale/programs/repertoire.c:432
++msgid "hexadecimal range format should use only capital characters"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:3272 locale/programs/ld-ctype.c:3297
++#: locale/programs/charmap.c:1017
+ #, c-format
+-msgid "%s: character `%s' needed as default value not representable with one byte"
+-msgstr "%s£ºÐèÒª×÷ΪĬÈÏÖµµÄ×Ö·û¡°%s¡±ÎÞ·¨ÒÔµ¥¸ö×Ö½ÚÀ´±íʾ"
++msgid "<%s> and <%s> are illegal names for range"
++msgstr "<%s> ºÍ <%s> ÊÇ·Ç·¨µÄ·¶Î§Ãû"
+
+-#: locale/programs/ld-ctype.c:2907
+-#, c-format
+-msgid "%s: character `%s' not defined in charmap while needed as default value"
+-msgstr ""
++#: locale/programs/charmap.c:1023
++msgid "upper limit in range is not higher then lower limit"
++msgstr "·¶Î§µÄÉÏÏÞ²¢²»¸ßÓÚÏÂÏÞ"
+
+-#: locale/programs/ld-ctype.c:2991 locale/programs/ld-ctype.c:3011
+-#: locale/programs/ld-ctype.c:3053 locale/programs/ld-ctype.c:3074
+-#: locale/programs/ld-ctype.c:3095 locale/programs/ld-ctype.c:3135
+-#: locale/programs/ld-ctype.c:3156 locale/programs/ld-ctype.c:3223
+-#: locale/programs/ld-ctype.c:3265 locale/programs/ld-ctype.c:3290
+-#, c-format
+-msgid "%s: character `%s' not defined while needed as default value"
++#: locale/programs/charmap.c:1081
++msgid "resulting bytes for range not representable."
+ msgstr ""
+
+-#: timezone/zic.c:1933
++#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1519
++#: locale/programs/ld-ctype.c:416 locale/programs/ld-identification.c:134
++#: locale/programs/ld-measurement.c:95 locale/programs/ld-messages.c:98
++#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:95
++#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:92
++#: locale/programs/ld-telephone.c:95 locale/programs/ld-time.c:160
+ #, c-format
+-msgid "%s: command was '%s', result was %d\n"
+-msgstr "%s£ºÃüÁîΪ¡°%s¡±£¬½á¹ûΪ %d\n"
++msgid "No definition for %s category found"
++msgstr ""
+
+-#: locale/programs/ld-time.c:246
++#: locale/programs/ld-address.c:145 locale/programs/ld-address.c:183
++#: locale/programs/ld-address.c:201 locale/programs/ld-address.c:228
++#: locale/programs/ld-address.c:290 locale/programs/ld-address.c:309
++#: locale/programs/ld-address.c:322 locale/programs/ld-identification.c:147
++#: locale/programs/ld-measurement.c:106 locale/programs/ld-monetary.c:206
++#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
++#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:106
++#: locale/programs/ld-name.c:143 locale/programs/ld-numeric.c:113
++#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:103
++#: locale/programs/ld-paper.c:112 locale/programs/ld-telephone.c:106
++#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:176
++#: locale/programs/ld-time.c:197
+ #, c-format
+-msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
+-msgstr ""
++msgid "%s: field `%s' not defined"
++msgstr "%s£ºÓò¡°%s¡±Î´¶¨Òå"
+
+-#: locale/programs/ld-time.c:258
++#: locale/programs/ld-address.c:157 locale/programs/ld-address.c:209
++#: locale/programs/ld-address.c:235 locale/programs/ld-address.c:265
++#: locale/programs/ld-name.c:118 locale/programs/ld-telephone.c:118
+ #, c-format
+-msgid "%s: direction flag in string %Zd in `era' field is not a single character"
+-msgstr ""
++msgid "%s: field `%s' must not be empty"
++msgstr "%s£ºÓò¡°%s¡±²»ÄÜΪ¿Õ"
+
+-#: locale/programs/ld-ctype.c:2729
++#: locale/programs/ld-address.c:169
+ #, c-format
+-msgid "%s: duplicate `default_missing' definition"
+-msgstr "%s£ºÖظ´¶¨Òå¡°default_missing¡±"
++msgid "%s: invalid escape `%%%c' sequence in field `%s'"
++msgstr "%1$s£ºÓò¡°%3$s¡±ÖÐÎÞЧµÄתÒå¡°%%%2$c¡±ÐòÁÐ"
+
+-#: locale/programs/ld-identification.c:431
++#: locale/programs/ld-address.c:220
+ #, c-format
+-msgid "%s: duplicate category version definition"
++msgid "%s: terminology language code `%s' not defined"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:2730
++#: locale/programs/ld-address.c:247 locale/programs/ld-address.c:276
+ #, c-format
+-msgid "%s: duplicate declaration of section `%s'"
+-msgstr "%s£ºÖظ´ÉùÃ÷½Ú¡°%s¡±"
++msgid "%s: language abbreviation `%s' not defined"
++msgstr "%s£ºÎ´¶¨ÒåµÄÓïÑÔËõд¡°%s¡±"
+
+-#: locale/programs/ld-collate.c:2694
++#: locale/programs/ld-address.c:254 locale/programs/ld-address.c:282
++#: locale/programs/ld-address.c:316 locale/programs/ld-address.c:328
+ #, c-format
+-msgid "%s: duplicate definition of `%s'"
+-msgstr "%s£ºÖظ´¶¨Òå¡°%s¡±"
++msgid "%s: `%s' value does not match `%s' value"
++msgstr "%s£º¡°%s¡±µÄÖµ²»ÄÜÆ¥Åä¡°%s¡±µÄÖµ"
+
+-#: locale/programs/ld-collate.c:3712
++#: locale/programs/ld-address.c:301
+ #, c-format
+-msgid "%s: empty category description not allowed"
+-msgstr "%s£º²»ÔÊÐí¿Õ·¶³ëÃèÊö"
++msgid "%s: numeric country code `%d' not valid"
++msgstr "%s£ºÊýÖµ¹ú¼Ò±àÂë¡°%d¡±ÎÞЧ"
+
+-#: locale/programs/ld-collate.c:755
++#: locale/programs/ld-address.c:497 locale/programs/ld-address.c:534
++#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2592
++#: locale/programs/ld-identification.c:365
++#: locale/programs/ld-measurement.c:222 locale/programs/ld-messages.c:302
++#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
++#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:281
++#: locale/programs/ld-numeric.c:264 locale/programs/ld-paper.c:225
++#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1106
++#: locale/programs/ld-time.c:1148
+ #, c-format
+-msgid "%s: empty weight string not allowed"
+-msgstr "%s£º²»ÔÊÐí¿ÕȨ×Ö·û´®"
++msgid "%s: field `%s' declared more than once"
++msgstr "%s£º¶à´ÎÉùÃ÷Óò¡°%s¡±"
+
+-#: locale/programs/charmap.c:836
++#: locale/programs/ld-address.c:501 locale/programs/ld-address.c:539
++#: locale/programs/ld-identification.c:369 locale/programs/ld-messages.c:312
++#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
++#: locale/programs/ld-name.c:285 locale/programs/ld-numeric.c:268
++#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1000
++#: locale/programs/ld-time.c:1069 locale/programs/ld-time.c:1111
+ #, c-format
+-msgid "%s: error in state machine"
+-msgstr "%s£º×´Ì¬»ú³ö´í"
++msgid "%s: unknown character in field `%s'"
++msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐδ֪×Ö·û"
+
+-#: locale/programs/ld-address.c:489 locale/programs/ld-address.c:526
+-#: locale/programs/ld-address.c:564 locale/programs/ld-ctype.c:2485
+-#: locale/programs/ld-identification.c:360
+-#: locale/programs/ld-measurement.c:220 locale/programs/ld-messages.c:300
+-#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
+-#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:278
+-#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:221
+-#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1104
+-#: locale/programs/ld-time.c:1146
++#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3775
++#: locale/programs/ld-ctype.c:2957 locale/programs/ld-identification.c:450
++#: locale/programs/ld-measurement.c:236 locale/programs/ld-messages.c:331
++#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:306
++#: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:240
++#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1199
+ #, c-format
+-msgid "%s: field `%s' declared more than once"
+-msgstr "%s£º¶à´ÎÉùÃ÷Óò¡°%s¡±"
++msgid "%s: incomplete `END' line"
++msgstr "%s£º²»ÍêÕûµÄ¡°END¡±ÐÐ"
+
+-#: locale/programs/ld-ctype.c:1526 locale/programs/ld-ctype.c:1651
+-#: locale/programs/ld-ctype.c:1757 locale/programs/ld-ctype.c:2348
+-#: locale/programs/ld-ctype.c:3331
++#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2638
++#: locale/programs/ld-collate.c:3777 locale/programs/ld-ctype.c:2219
++#: locale/programs/ld-ctype.c:2960 locale/programs/ld-identification.c:453
++#: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333
++#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:308
++#: locale/programs/ld-numeric.c:376 locale/programs/ld-paper.c:242
++#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1201
+ #, c-format
+-msgid "%s: field `%s' does not contain exactly ten entries"
+-msgstr "%s£ºÓò¡°%s¡±º¬ÓÐÌõÄ¿µÄ¸öÊý²»ÊÇÊ®¸ö"
++msgid "%1$s: definition does not end with `END %1$s'"
++msgstr "%1$s£º¶¨Òå²»ÒÔ¡°END %1$s¡±½áβ"
+
+-#: locale/programs/ld-address.c:154 locale/programs/ld-address.c:205
+-#: locale/programs/ld-address.c:230 locale/programs/ld-address.c:259
+-#: locale/programs/ld-name.c:115 locale/programs/ld-telephone.c:117
++#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:520
++#: locale/programs/ld-collate.c:572 locale/programs/ld-collate.c:869
++#: locale/programs/ld-collate.c:882 locale/programs/ld-collate.c:2625
++#: locale/programs/ld-collate.c:3784 locale/programs/ld-ctype.c:1947
++#: locale/programs/ld-ctype.c:2206 locale/programs/ld-ctype.c:2782
++#: locale/programs/ld-ctype.c:2968 locale/programs/ld-identification.c:460
++#: locale/programs/ld-measurement.c:246 locale/programs/ld-messages.c:340
++#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:315
++#: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:249
++#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1208
+ #, c-format
+-msgid "%s: field `%s' must not be empty"
+-msgstr "%s£ºÓò¡°%s¡±²»ÄÜΪ¿Õ"
++msgid "%s: syntax error"
++msgstr "%s£ºÓï·¨´íÎó"
+
+-#: locale/programs/ld-address.c:142 locale/programs/ld-address.c:180
+-#: locale/programs/ld-address.c:197 locale/programs/ld-address.c:224
+-#: locale/programs/ld-address.c:284 locale/programs/ld-address.c:303
+-#: locale/programs/ld-address.c:315 locale/programs/ld-identification.c:145
+-#: locale/programs/ld-measurement.c:104 locale/programs/ld-monetary.c:206
+-#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
+-#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:104
+-#: locale/programs/ld-name.c:141 locale/programs/ld-numeric.c:113
+-#: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:101
+-#: locale/programs/ld-paper.c:109 locale/programs/ld-telephone.c:105
+-#: locale/programs/ld-telephone.c:163 locale/programs/ld-time.c:175
+-#: locale/programs/ld-time.c:195
++#: locale/programs/ld-collate.c:395
+ #, c-format
+-msgid "%s: field `%s' not defined"
+-msgstr "%s£ºÓò¡°%s¡±Î´¶¨Òå"
++msgid "`%.*s' already defined in charmap"
++msgstr "ÒѾ­ÔÚ×Ö·ûÓ³Éä±íÖж¨ÒåÁË¡°%.*s¡±"
+
+-#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:148
++#: locale/programs/ld-collate.c:404
+ #, c-format
+-msgid "%s: field `%s' undefined"
+-msgstr "%s£º½â³ýÓò¡°%s¡±µÄ¶¨Òå"
++msgid "`%.*s' already defined in repertoire"
++msgstr "ÒѾ­ÔÚÖ¸Áî±íÖж¨ÒåÁË¡°%.*s¡±"
+
+-#: locale/programs/ld-time.c:279
++#: locale/programs/ld-collate.c:411
+ #, c-format
+-msgid "%s: garbage at end of offset value in string %Zd in `era' field"
++msgid "`%.*s' already defined as collating symbol"
+ msgstr ""
+
+-#: locale/programs/ld-time.c:339
++#: locale/programs/ld-collate.c:418
+ #, c-format
+-msgid "%s: garbage at end of starting date in string %Zd in `era' field "
++msgid "`%.*s' already defined as collating element"
+ msgstr ""
+
+-#: locale/programs/ld-time.c:416
++#: locale/programs/ld-collate.c:449 locale/programs/ld-collate.c:475
+ #, c-format
+-msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
++msgid "%s: `forward' and `backward' are mutually excluding each other"
++msgstr "%s£º¡°forward¡±ºÍ¡°backward¡±ÊÇ»¥³âµÄ"
++
++#: locale/programs/ld-collate.c:459 locale/programs/ld-collate.c:485
++#: locale/programs/ld-collate.c:501
++#, c-format
++msgid "%s: `%s' mentioned more than once in definition of weight %d"
+ msgstr ""
+
+-#: posix/getopt.c:887 posix/getopt.c:890
++#: locale/programs/ld-collate.c:557
+ #, c-format
+-msgid "%s: illegal option -- %c\n"
+-msgstr "%s£ºÎÞЧѡÏî -- %c\n"
++msgid "%s: too many rules; first entry only had %d"
++msgstr "%s£º¹æÔò¹ý¶à£»µÚÒ»¸öÌõÄ¿Ö»º¬ÓÐ %d"
+
+-#: locale/programs/ld-address.c:578 locale/programs/ld-collate.c:3738
+-#: locale/programs/ld-ctype.c:2846 locale/programs/ld-identification.c:445
+-#: locale/programs/ld-measurement.c:234 locale/programs/ld-messages.c:329
+-#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:303
+-#: locale/programs/ld-numeric.c:373 locale/programs/ld-paper.c:236
+-#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1197
++#: locale/programs/ld-collate.c:593
+ #, c-format
+-msgid "%s: incomplete `END' line"
+-msgstr "%s£º²»ÍêÕûµÄ¡°END¡±ÐÐ"
++msgid "%s: not enough sorting rules"
++msgstr "%s£ºÅÅÐò¹æÔò²»×ã"
+
+-#: locale/programs/ld-address.c:166
++#: locale/programs/ld-collate.c:759
+ #, c-format
+-msgid "%s: invalid escape `%%%c' sequence in field `%s'"
+-msgstr "%1$s£ºÓò¡°%3$s¡±ÖÐÎÞЧµÄתÒå¡°%%%2$c¡±ÐòÁÐ"
++msgid "%s: empty weight string not allowed"
++msgstr "%s£º²»ÔÊÐí¿ÕȨ×Ö·û´®"
+
+-#: locale/programs/ld-name.c:127 locale/programs/ld-telephone.c:126
+-#: locale/programs/ld-telephone.c:150
++#: locale/programs/ld-collate.c:854
+ #, c-format
+-msgid "%s: invalid escape sequence in field `%s'"
+-msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐÎÞЧתÒåÐòÁÐ"
++msgid "%s: weights must use the same ellipsis symbol as the name"
++msgstr ""
+
+-#: locale/programs/ld-time.c:271
++#: locale/programs/ld-collate.c:910
+ #, c-format
+-msgid "%s: invalid number for offset in string %Zd in `era' field"
++msgid "%s: too many values"
++msgstr "%s£ºÖµ¹ý¶à"
++
++#: locale/programs/ld-collate.c:1023 locale/programs/ld-collate.c:1194
++#, c-format
++msgid "order for `%.*s' already defined at %s:%Zu"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:3162
++#: locale/programs/ld-collate.c:1073
+ #, c-format
+-msgid "%s: invalid number of sorting rules"
++msgid "%s: the start and the end symbol of a range must stand for characters"
+ msgstr ""
+
+-#: posix/getopt.c:896 posix/getopt.c:899
++#: locale/programs/ld-collate.c:1100
+ #, c-format
+-msgid "%s: invalid option -- %c\n"
+-msgstr "%s£ºÎÞЧѡÏî -- %c\n"
++msgid "%s: byte sequences of first and last character must have the same length"
++msgstr "%s£º×Ö½ÚÐòÁеĵÚÒ»¸öºÍ×îºóÒ»¸ö×Ö·ûµÄ³Ì¶È±ØÐëÏàͬ"
+
+-#: locale/programs/ld-time.c:330
++#: locale/programs/ld-collate.c:1142
+ #, c-format
+-msgid "%s: invalid starting date in string %Zd in `era' field"
++msgid "%s: byte sequence of first character of sequence is not lower than that of the last character"
+ msgstr ""
+
+-#: locale/programs/ld-time.c:407
++#: locale/programs/ld-collate.c:1263
+ #, c-format
+-msgid "%s: invalid stopping date in string %Zd in `era' field"
++msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
+ msgstr ""
+
+-#: locale/programs/ld-measurement.c:112
++#: locale/programs/ld-collate.c:1267
+ #, c-format
+-msgid "%s: invalid value for field `%s'"
+-msgstr "%s£ºÓò¡°%s¡±ÖеÄÖµÎÞЧ"
++msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
++msgstr ""
+
+-#: locale/programs/ld-address.c:242 locale/programs/ld-address.c:270
++#: locale/programs/ld-collate.c:1287 locale/programs/ld-ctype.c:1467
+ #, c-format
+-msgid "%s: language abbreviation `%s' not defined"
+-msgstr "%s£ºÎ´¶¨ÒåµÄÓïÑÔËõд¡°%s¡±"
++msgid "`%s' and `%.*s' are no valid names for symbolic range"
++msgstr ""
+
+-#: resolv/res_hconf.c:366
++#: locale/programs/ld-collate.c:1333 locale/programs/ld-collate.c:3712
+ #, c-format
+-msgid "%s: line %d: bad command `%s'\n"
+-msgstr "%s£ºÐÐ %d£º´íÎóÃüÁî¡°%s¡±\n"
++msgid "%s: order for `%.*s' already defined at %s:%Zu"
++msgstr ""
+
+-#: resolv/res_hconf.c:165
++#: locale/programs/ld-collate.c:1342
+ #, c-format
+-msgid "%s: line %d: cannot specify more than %d services"
+-msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö·þÎñ"
++msgid "%s: `%s' must be a character"
++msgstr "%s£º¡°%s¡±±ØÐëÊÇÒ»¸ö×Ö·û"
+
+-#: resolv/res_hconf.c:231
++#: locale/programs/ld-collate.c:1535
+ #, c-format
+-msgid "%s: line %d: cannot specify more than %d trim domains"
+-msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö¹æÕûÓò"
++msgid "%s: `position' must be used for a specific level in all sections or none"
++msgstr ""
+
+-#: resolv/res_hconf.c:319
++#: locale/programs/ld-collate.c:1560
+ #, c-format
+-msgid "%s: line %d: expected `on' or `off', found `%s'\n"
+-msgstr "%s£ºÐÐ %d£ºÓ¦Îª¡°on¡±»ò¡°off¡±£¬µÃµ½¡°%s¡±\n"
++msgid "symbol `%s' not defined"
++msgstr "·ûºÅ¡°%s¡±Î´¶¨Òå"
+
+-#: resolv/res_hconf.c:147
++#: locale/programs/ld-collate.c:1636 locale/programs/ld-collate.c:1742
+ #, c-format
+-msgid "%s: line %d: expected service, found `%s'\n"
+-msgstr "%s£ºÐÐ %d£ºÓ¦Îª service£¬µÃµ½¡°%s¡±\n"
++msgid "symbol `%s' has the same encoding as"
++msgstr ""
+
+-#: resolv/res_hconf.c:395
++#: locale/programs/ld-collate.c:1640 locale/programs/ld-collate.c:1746
+ #, c-format
+-msgid "%s: line %d: ignoring trailing garbage `%s'\n"
+-msgstr ""
++msgid "symbol `%s'"
++msgstr "·ûºÅ¡°%s¡±"
+
+-#: resolv/res_hconf.c:256
++#: locale/programs/ld-collate.c:1788
++msgid "no definition of `UNDEFINED'"
++msgstr "ûÓйØÓÚ¡°UNDEFINIED¡±µÄ¶¨Òå"
++
++#: locale/programs/ld-collate.c:1817
++msgid "too many errors; giving up"
++msgstr "´íÎó¹ý¶à£»·ÅÆú"
++
++#: locale/programs/ld-collate.c:2720
+ #, c-format
+-msgid "%s: line %d: list delimiter not followed by domain"
+-msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔÚÓòÖ®ºó"
++msgid "%s: duplicate definition of `%s'"
++msgstr "%s£ºÖظ´¶¨Òå¡°%s¡±"
+
+-#: resolv/res_hconf.c:191
++#: locale/programs/ld-collate.c:2756
+ #, c-format
+-msgid "%s: line %d: list delimiter not followed by keyword"
+-msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔڹؼü×ÖÖ®ºó"
++msgid "%s: duplicate declaration of section `%s'"
++msgstr "%s£ºÖظ´ÉùÃ÷½Ú¡°%s¡±"
+
+-#: locale/programs/ld-collate.c:3242 locale/programs/ld-collate.c:3365
+-#: locale/programs/ld-collate.c:3716
++#: locale/programs/ld-collate.c:2895
+ #, c-format
+-msgid "%s: missing `order_end' keyword"
+-msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°order_end¡±"
++msgid "%s: unknown character in collating symbol name"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:3379 locale/programs/ld-collate.c:3728
++#: locale/programs/ld-collate.c:3027
+ #, c-format
+-msgid "%s: missing `reorder-end' keyword"
+-msgstr "%s£ºÒÔºó¹Ø¼ü×Ö¡°reorder-end¡±"
++msgid "%s: unknown character in equivalent definition name"
++msgstr "%s£ºµÈ¼Û¶¨ÒåÃûÖÐδ֪µÄ×Ö·û"
+
+-#: locale/programs/ld-collate.c:3731
++#: locale/programs/ld-collate.c:3040
+ #, c-format
+-msgid "%s: missing `reorder-sections-end' keyword"
+-msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°reorder-sections-end¡±"
++msgid "%s: unknown character in equivalent definition value"
++msgstr "%s£ºµÈ¼Û¶¨ÒåÖµÖÐδ֪µÄ×Ö·û"
+
+-#: locale/programs/ld-time.c:456
++#: locale/programs/ld-collate.c:3050
+ #, c-format
+-msgid "%s: missing era format in string %Zd in `era' field"
++msgid "%s: unknown symbol `%s' in equivalent definition"
++msgstr "%s£ºµÈ¼Û¶¨ÒåÖÐδ֪µÄ·ûºÅ¡°%s¡±"
++
++#: locale/programs/ld-collate.c:3059
++msgid "error while adding equivalent collating symbol"
+ msgstr ""
+
+-#: locale/programs/ld-time.c:444
++#: locale/programs/ld-collate.c:3089
+ #, c-format
+-msgid "%s: missing era name in string %Zd in `era' field"
+-msgstr ""
++msgid "duplicate definition of script `%s'"
++msgstr "Öظ´¶¨Òå½Å±¾¡°%s¡±"
++
++#: locale/programs/ld-collate.c:3137
++#, c-format
++msgid "%s: unknown section name `%s'"
++msgstr "%s£ºÎ´ÖªµÄ½ÚÃû¡°%s¡±"
+
+-#: locale/programs/ld-collate.c:3138
++#: locale/programs/ld-collate.c:3165
+ #, c-format
+ msgid "%s: multiple order definitions for section `%s'"
+ msgstr "%s£º¹ØÓÚ¡°%s¡±½Ú³öÏÖ¶à¸ö˳Ðò¶¨Òå"
+
+-#: locale/programs/ld-collate.c:3188
++#: locale/programs/ld-collate.c:3190
++#, c-format
++msgid "%s: invalid number of sorting rules"
++msgstr "%s£ºÅÅÐò¹æÔòµÄÊýÁ¿ÎÞЧ"
++
++#: locale/programs/ld-collate.c:3217
+ #, c-format
+ msgid "%s: multiple order definitions for unnamed section"
+ msgstr "%s£º¹ØÓÚδÃüÃû½Ú³öÏÖ¶à¸ö˳Ðò¶¨Òå"
+
+-#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:170
++#: locale/programs/ld-collate.c:3271 locale/programs/ld-collate.c:3394
++#: locale/programs/ld-collate.c:3753
+ #, c-format
+-msgid "%s: no correct regular expression for field `%s': %s"
+-msgstr "%s£ºÓò¡°%s¡±ÖÐûÓÐÕýÈ·µÄ³£¹æ±í´ïʽ£º%s"
++msgid "%s: missing `order_end' keyword"
++msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°order_end¡±"
+
+-#: locale/programs/ld-identification.c:169
++#: locale/programs/ld-collate.c:3329
+ #, c-format
+-msgid "%s: no identification for category `%s'"
++msgid "%s: order for collating symbol %.*s not yet defined"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:2755
++#: locale/programs/ld-collate.c:3345
+ #, c-format
+-msgid "%s: no representable `default_missing' definition found"
++msgid "%s: order for collating element %.*s not yet defined"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:591
++#: locale/programs/ld-collate.c:3356
+ #, c-format
+-msgid "%s: not enough sorting rules"
++msgid "%s: cannot reorder after %.*s: symbol not known"
+ msgstr ""
+
+-#: locale/programs/ld-address.c:295
++#: locale/programs/ld-collate.c:3408 locale/programs/ld-collate.c:3765
+ #, c-format
+-msgid "%s: numeric country code `%d' not valid"
+-msgstr "%s£ºÊýÖµ¹ú¼Ò±àÂë¡°%d¡±ÎÞЧ"
++msgid "%s: missing `reorder-end' keyword"
++msgstr "%s£ºÒÔºó¹Ø¼ü×Ö¡°reorder-end¡±"
+
+-#: posix/getopt.c:743 posix/getopt.c:748
++#: locale/programs/ld-collate.c:3442 locale/programs/ld-collate.c:3637
+ #, c-format
+-msgid "%s: option `%c%s' doesn't allow an argument\n"
+-msgstr "%s£ºÑ¡Ïî¡°%c%s¡±²»½ÓÊܲÎÊý\n"
++msgid "%s: section `%.*s' not known"
++msgstr "%s£ºÎ´ÖªµÄ½Ú¡°%.*s¡±"
+
+-#: posix/getopt.c:688 posix/getopt.c:698
++#: locale/programs/ld-collate.c:3507
+ #, c-format
+-msgid "%s: option `%s' is ambiguous\n"
+-msgstr "%s£ºÑ¡Ïî¡°%s¡±¾ßÓжþÒåÐÔ\n"
++msgid "%s: bad symbol <%.*s>"
++msgstr ""
+
+-#: posix/getopt.c:782 posix/getopt.c:793 posix/getopt.c:1070
+-#: posix/getopt.c:1082
++#: locale/programs/ld-collate.c:3700
+ #, c-format
+-msgid "%s: option `%s' requires an argument\n"
+-msgstr "%s£ºÑ¡Ïî¡°%s¡±ÐèÒªÒ»¸ö²ÎÊý\n"
++msgid "%s: cannot have `%s' as end of ellipsis range"
++msgstr ""
+
+-#: posix/getopt.c:730 posix/getopt.c:734
++#: locale/programs/ld-collate.c:3749
+ #, c-format
+-msgid "%s: option `--%s' doesn't allow an argument\n"
+-msgstr "%s£ºÑ¡Ïî¡°--%s¡±²»½ÓÊÜÈκβÎÊý\n"
++msgid "%s: empty category description not allowed"
++msgstr "%s£º²»ÔÊÐí¿Õ·¶³ëÃèÊö"
+
+-#: posix/getopt.c:1038 posix/getopt.c:1049
++#: locale/programs/ld-collate.c:3768
+ #, c-format
+-msgid "%s: option `-W %s' doesn't allow an argument\n"
+-msgstr "%s£ºÑ¡Ïî¡°-W %s¡±²»½ÓÊܲÎÊý\n"
++msgid "%s: missing `reorder-sections-end' keyword"
++msgstr "%s£ºÒÅ©¹Ø¼ü×Ö¡°reorder-sections-end¡±"
+
+-#: posix/getopt.c:1004 posix/getopt.c:1014
+-#, c-format
+-msgid "%s: option `-W %s' is ambiguous\n"
+-msgstr "%s£ºÑ¡Ïî¡°-W %s¡±¾ßÓжþÒåÐÔ\n"
++#: locale/programs/ld-ctype.c:435
++msgid "No character set name specified in charmap"
++msgstr "×Ö·ûÓ³Éä±íÖÐδ¸ø³ö×Ö·û¼¯Ãû³Æ"
+
+-#: posix/getopt.c:942 posix/getopt.c:952 posix/getopt.c:1136
+-#: posix/getopt.c:1147
++#: locale/programs/ld-ctype.c:464
+ #, c-format
+-msgid "%s: option requires an argument -- %c\n"
+-msgstr "%s£ºÑ¡ÏîÐèÒªÒ»¸ö²ÎÊý -- %c\n"
++msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:1327 locale/programs/ld-collate.c:3675
++# msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û L'\\u%0*x' ±ØÐëÊôÓÚÀà¡°%3$s¡±"
++#: locale/programs/ld-ctype.c:479
+ #, c-format
+-msgid "%s: order for `%.*s' already defined at %s:%Zu"
++msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:3316
++#: locale/programs/ld-ctype.c:493 locale/programs/ld-ctype.c:551
+ #, c-format
+-msgid "%s: order for collating element %.*s not yet defined"
+-msgstr ""
++msgid "internal error in %s, line %u"
++msgstr "ÔÚ %s µÄµÚ %u ÐгöÏÖÄÚ²¿´íÎó"
+
+-#: locale/programs/ld-collate.c:3300
++#: locale/programs/ld-ctype.c:522
+ #, c-format
+-msgid "%s: order for collating symbol %.*s not yet defined"
+-msgstr ""
++msgid "character '%s' in class `%s' must be in class `%s'"
++msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±±ØÐëÊôÓÚÀà¡°%3$s¡±"
+
+-#: sunrpc/rpc_main.c:289
++#: locale/programs/ld-ctype.c:538
+ #, c-format
+-msgid "%s: output would overwrite %s\n"
+-msgstr "%s£ºÊä³ö½«¸²¸Ç %s\n"
++msgid "character '%s' in class `%s' must not be in class `%s'"
++msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±²»µÃÊôÓÚÀà¡°%3$s¡±"
+
+-#: timezone/zic.c:879 timezone/zic.c:1293 timezone/zic.c:1318
++#: locale/programs/ld-ctype.c:568 locale/programs/ld-ctype.c:606
+ #, c-format
+-msgid "%s: panic: Invalid l_value %d\n"
+-msgstr ""
++msgid "<SP> character not in class `%s'"
++msgstr "×Ö·û <SP> ²»ÔÚÀà¡°%s¡±ÖÐ"
+
+-#: locale/programs/charmap.c:843 locale/programs/ld-address.c:597
+-#: locale/programs/ld-collate.c:2609 locale/programs/ld-collate.c:3756
+-#: locale/programs/ld-ctype.c:2109 locale/programs/ld-ctype.c:2866
+-#: locale/programs/ld-identification.c:464
+-#: locale/programs/ld-measurement.c:253 locale/programs/ld-messages.c:347
+-#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:321
+-#: locale/programs/ld-numeric.c:391 locale/programs/ld-paper.c:254
+-#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1215
+-#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
++#: locale/programs/ld-ctype.c:580 locale/programs/ld-ctype.c:617
+ #, c-format
+-msgid "%s: premature end of file"
+-msgstr "%s£ºÎļþ²»ÍêÕû"
++msgid "<SP> character must not be in class `%s'"
++msgstr "×Ö·û <SP> ²»ÄÜÊôÓÚÀà¡°%s¡±"
++
++#: locale/programs/ld-ctype.c:595
++msgid "character <SP> not defined in character map"
++msgstr "×Ö·ûÓ³ÉäÖÐ䶨Òå×Ö·û <SP>"
++
++#: locale/programs/ld-ctype.c:709
++msgid "`digit' category has not entries in groups of ten"
++msgstr ""
++
++#: locale/programs/ld-ctype.c:758
++msgid "no input digits defined and none of the standard names in the charmap"
++msgstr ""
++
++#: locale/programs/ld-ctype.c:823
++msgid "not all characters used in `outdigit' are available in the charmap"
++msgstr ""
++
++#: locale/programs/ld-ctype.c:840
++msgid "not all characters used in `outdigit' are available in the repertoire"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:3413 locale/programs/ld-collate.c:3601
++#: locale/programs/ld-ctype.c:1235
+ #, c-format
+-msgid "%s: section `%.*s' not known"
+-msgstr "%s£ºÎ´ÖªµÄ½Ú¡°%.*s¡±"
++msgid "character class `%s' already defined"
++msgstr "×Ö·ûÀà¡°%s¡±ÒѶ¨Òå"
+
+-#: locale/programs/ld-time.c:358
++#: locale/programs/ld-ctype.c:1241
+ #, c-format
+-msgid "%s: starting date is invalid in string %Zd in `era' field"
++msgid "implementation limit: no more than %Zd character classes allowed"
+ msgstr ""
+
+-#: locale/programs/ld-time.c:435
++#: locale/programs/ld-ctype.c:1267
+ #, c-format
+-msgid "%s: stopping date is invalid in string %Zd in `era' field"
++msgid "character map `%s' already defined"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:1261
++#: locale/programs/ld-ctype.c:1273
+ #, c-format
+-msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
+-msgstr ""
++msgid "implementation limit: no more than %d character maps allowed"
++msgstr "ʵÏÖÏÞÖÆ£º²»µÃ¶àÓÚ %d ¸ö×Ö·ûÓ³Éä±í"
+
+-#: locale/programs/ld-collate.c:1257
++#: locale/programs/ld-ctype.c:1538 locale/programs/ld-ctype.c:1663
++#: locale/programs/ld-ctype.c:1769 locale/programs/ld-ctype.c:2455
++#: locale/programs/ld-ctype.c:3443
+ #, c-format
+-msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
+-msgstr ""
++msgid "%s: field `%s' does not contain exactly ten entries"
++msgstr "%s£ºÓò¡°%s¡±º¬ÓÐÌõÄ¿µÄ¸öÊý²»ÊÇÊ®¸ö"
+
+-#: locale/programs/ld-address.c:588 locale/programs/ld-collate.c:518
+-#: locale/programs/ld-collate.c:570 locale/programs/ld-collate.c:865
+-#: locale/programs/ld-collate.c:878 locale/programs/ld-collate.c:2599
+-#: locale/programs/ld-collate.c:3747 locale/programs/ld-ctype.c:1841
+-#: locale/programs/ld-ctype.c:2099 locale/programs/ld-ctype.c:2675
+-#: locale/programs/ld-ctype.c:2857 locale/programs/ld-identification.c:455
+-#: locale/programs/ld-measurement.c:244 locale/programs/ld-messages.c:338
+-#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:312
+-#: locale/programs/ld-numeric.c:382 locale/programs/ld-paper.c:245
+-#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1206
++#: locale/programs/ld-ctype.c:1566 locale/programs/ld-ctype.c:2137
+ #, c-format
+-msgid "%s: syntax error"
+-msgstr "%s£ºÓï·¨´íÎó"
++msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
++msgstr ""
++
++#: locale/programs/ld-ctype.c:1693
++msgid "start and end character sequence of range must have the same length"
++msgstr "·¶Î§µÄÆðʼºÍÖÕÖ¹×Ö·ûÐòÁбØÐë¾ßÓÐÏàͬµÄ³¤¶È"
++
++#: locale/programs/ld-ctype.c:1700
++msgid "to-value character sequence is smaller than from-value sequence"
++msgstr ""
++
++#: locale/programs/ld-ctype.c:2057 locale/programs/ld-ctype.c:2108
++msgid "premature end of `translit_ignore' definition"
++msgstr ""
++
++#: locale/programs/ld-ctype.c:2063 locale/programs/ld-ctype.c:2114
++#: locale/programs/ld-ctype.c:2156
++msgid "syntax error"
++msgstr "Óï·¨´íÎó"
+
+-#: locale/programs/ld-ctype.c:2180
++#: locale/programs/ld-ctype.c:2287
+ #, c-format
+ msgid "%s: syntax error in definition of new character class"
+ msgstr "%s£ºÔÚ¶¨ÒåÐÂ×Ö·û¼¯ºÏÖгöÏÖÓï·¨´íÎó"
+
+-#: locale/programs/ld-ctype.c:2195
++#: locale/programs/ld-ctype.c:2302
+ #, c-format
+ msgid "%s: syntax error in definition of new character map"
+ msgstr "%s£ºÔÚÐÂ×Ö·ûÓ³ÉäÖгöÏÖÓï·¨´íÎó"
+
+-#: locale/programs/ld-ctype.c:3737
+-#, c-format
+-msgid "%s: table for class \"%s\": %lu bytes\n"
++#: locale/programs/ld-ctype.c:2477
++msgid "ellipsis range must be marked by two operands of same type"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:3805
+-#, c-format
+-msgid "%s: table for map \"%s\": %lu bytes\n"
++#: locale/programs/ld-ctype.c:2486
++msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:3937
+-#, c-format
+-msgid "%s: table for width: %lu bytes\n"
++#: locale/programs/ld-ctype.c:2501
++msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
+ msgstr ""
+
+-#: locale/programs/ld-address.c:216
+-#, c-format
+-msgid "%s: terminology language code `%s' not defined"
++#: locale/programs/ld-ctype.c:2515
++msgid "with character code range values one must use the absolute ellipsis `...'"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:1067
++#: locale/programs/ld-ctype.c:2666
+ #, c-format
+-msgid "%s: the start and the end symbol of a range must stand for characters"
+-msgstr ""
++msgid "duplicated definition for mapping `%s'"
++msgstr "Öظ´¶¨ÒåÓ³Éä¡°%s¡±"
+
+-#: locale/programs/ld-time.c:485
++#: locale/programs/ld-ctype.c:2744 locale/programs/ld-ctype.c:2888
+ #, c-format
+-msgid "%s: third operand for value of field `%s' must not be larger than %d"
+-msgstr ""
++msgid "%s: `translit_start' section does not end with `translit_end'"
++msgstr "%s£º¡°translit_start¡±½Ú²»ÒÔ¡°translit_end¡±½áÊø"
+
+-#: locale/programs/ld-time.c:983
++#: locale/programs/ld-ctype.c:2839
+ #, c-format
+-msgid "%s: too few values for field `%s'"
+-msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ýÉÙ"
++msgid "%s: duplicate `default_missing' definition"
++msgstr "%s£ºÖظ´¶¨Òå¡°default_missing¡±"
+
+-#: locale/programs/ld-collate.c:555
++#: locale/programs/ld-ctype.c:2844
++msgid "previous definition was here"
++msgstr "Ç°Ò»¸ö¶¨ÒåÔÚÕâÀï"
++
++#: locale/programs/ld-ctype.c:2866
+ #, c-format
+-msgid "%s: too many rules; first entry only had %d"
+-msgstr "%s£º¹æÔò¹ý¶à£»µÚÒ»¸öÌõÄ¿Ö»º¬ÓÐ %d"
++msgid "%s: no representable `default_missing' definition found"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:906
++#: locale/programs/ld-ctype.c:3019
+ #, c-format
+-msgid "%s: too many values"
+-msgstr "%s£ºÖµ¹ý¶à"
++msgid "%s: character `%s' not defined in charmap while needed as default value"
++msgstr ""
+
+-#: locale/programs/ld-time.c:1030
++#: locale/programs/ld-ctype.c:3024 locale/programs/ld-ctype.c:3108
++#: locale/programs/ld-ctype.c:3128 locale/programs/ld-ctype.c:3149
++#: locale/programs/ld-ctype.c:3170 locale/programs/ld-ctype.c:3191
++#: locale/programs/ld-ctype.c:3212 locale/programs/ld-ctype.c:3252
++#: locale/programs/ld-ctype.c:3273 locale/programs/ld-ctype.c:3340
+ #, c-format
+-msgid "%s: too many values for field `%s'"
+-msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ý¶à"
++msgid "%s: character `%s' in charmap not representable with one byte"
++msgstr ""
+
+-#: locale/programs/ld-ctype.c:3641
++#: locale/programs/ld-ctype.c:3103 locale/programs/ld-ctype.c:3123
++#: locale/programs/ld-ctype.c:3165 locale/programs/ld-ctype.c:3186
++#: locale/programs/ld-ctype.c:3207 locale/programs/ld-ctype.c:3247
++#: locale/programs/ld-ctype.c:3268 locale/programs/ld-ctype.c:3335
++#: locale/programs/ld-ctype.c:3377 locale/programs/ld-ctype.c:3402
+ #, c-format
+-msgid "%s: transliteration data from locale `%s' not available"
++msgid "%s: character `%s' not defined while needed as default value"
+ msgstr ""
+
+-#: sunrpc/rpc_main.c:296
++# msgstr "Àà¡°%s¡±ÖеÄ×Ö·û L'\\u%0*x' ²»µÃÊôÓÚÀà¡°%s¡±"
++#: locale/programs/ld-ctype.c:3144
+ #, c-format
+-msgid "%s: unable to open %s: %m\n"
+-msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%m\n"
++msgid "character `%s' not defined while needed as default value"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:2868
++#: locale/programs/ld-ctype.c:3384 locale/programs/ld-ctype.c:3409
+ #, c-format
+-msgid "%s: unknown character in collating symbol name"
++msgid "%s: character `%s' needed as default value not representable with one byte"
++msgstr "%s£ºÐèÒª×÷ΪĬÈÏÖµµÄ×Ö·û¡°%s¡±ÎÞ·¨ÒÔµ¥¸ö×Ö½ÚÀ´±íʾ"
++
++#: locale/programs/ld-ctype.c:3464
++msgid "no output digits defined and none of the standard names in the charmap"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:3000
++#: locale/programs/ld-ctype.c:3755
+ #, c-format
+-msgid "%s: unknown character in equivalent definition name"
+-msgstr "%s£ºµÈ¼Û¶¨ÒåÃûÖÐδ֪µÄ×Ö·û"
++msgid "%s: transliteration data from locale `%s' not available"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:3013
++#: locale/programs/ld-ctype.c:3851
+ #, c-format
+-msgid "%s: unknown character in equivalent definition value"
+-msgstr "%s£ºµÈ¼Û¶¨ÒåÖµÖÐδ֪µÄ×Ö·û"
++msgid "%s: table for class \"%s\": %lu bytes\n"
++msgstr ""
+
+-#: locale/programs/ld-address.c:493 locale/programs/ld-address.c:531
+-#: locale/programs/ld-identification.c:364 locale/programs/ld-messages.c:310
+-#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
+-#: locale/programs/ld-name.c:282 locale/programs/ld-numeric.c:267
+-#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:999
+-#: locale/programs/ld-time.c:1067 locale/programs/ld-time.c:1109
++#: locale/programs/ld-ctype.c:3920
+ #, c-format
+-msgid "%s: unknown character in field `%s'"
+-msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐδ֪×Ö·û"
++msgid "%s: table for map \"%s\": %lu bytes\n"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:3110
++#: locale/programs/ld-ctype.c:4053
+ #, c-format
+-msgid "%s: unknown section name `%s'"
+-msgstr "%s£ºÎ´ÖªµÄ½ÚÃû¡°%s¡±"
++msgid "%s: table for width: %lu bytes\n"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:3023
++#: locale/programs/ld-identification.c:171
+ #, c-format
+-msgid "%s: unknown symbol `%s' in equivalent definition"
+-msgstr "%s£ºµÈ¼Û¶¨ÒåÖÐδ֪µÄ·ûºÅ¡°%s¡±"
++msgid "%s: no identification for category `%s'"
++msgstr ""
+
+-#: posix/getopt.c:841 posix/getopt.c:844
++#: locale/programs/ld-identification.c:436
+ #, c-format
+-msgid "%s: unrecognized option `%c%s'\n"
+-msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°%c%s¡±\n"
++msgid "%s: duplicate category version definition"
++msgstr ""
+
+-#: posix/getopt.c:830 posix/getopt.c:833
++#: locale/programs/ld-measurement.c:114
+ #, c-format
+-msgid "%s: unrecognized option `--%s'\n"
+-msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°--%s¡±\n"
++msgid "%s: invalid value for field `%s'"
++msgstr "%s£ºÓò¡°%s¡±ÖеÄÖµÎÞЧ"
+
+-#: timezone/zic.c:449
++#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:149
+ #, c-format
+-msgid ""
+-"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+-"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+-msgstr ""
+-"%s£ºÓ÷¨Îª %s [ -s ] [ -v ] [ -l ±¾µØʱ¼ä ] [ -p posix ¹æÔò ] \\\n"
+-"\t[ -d Ŀ¼ ] [ -L leapseconds ] [ -y yearistype ] [ ÎļþÃû ... ]\n"
++msgid "%s: field `%s' undefined"
++msgstr "%s£º½â³ýÓò¡°%s¡±µÄ¶¨Òå"
+
+-#: timezone/zdump.c:175
++#: locale/programs/ld-messages.c:122 locale/programs/ld-messages.c:156
+ #, c-format
+-msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
+-msgstr "%s£ºÓ÷¨Îª %s [ -v ] [ -c cutoff ] ÇøÓòÃû ...\n"
++msgid "%s: value for field `%s' must not be an empty string"
++msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜÊÇ¿Õ×Ö·û´®"
+
+-#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:274
++#: locale/programs/ld-messages.c:138 locale/programs/ld-messages.c:172
+ #, c-format
+-msgid "%s: value for field `%s' must be a single character"
+-msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÊǵ¥¸ö×Ö·û"
++msgid "%s: no correct regular expression for field `%s': %s"
++msgstr "%s£ºÓò¡°%s¡±ÖÐûÓÐÕýÈ·µÄ³£¹æ±í´ïʽ£º%s"
+
+-#: locale/programs/ld-monetary.c:308
++#: locale/programs/ld-monetary.c:224
+ #, c-format
+-msgid "%s: value for field `%s' must be in range %d...%d"
+-msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÔÚ %d...%d µÄ·¶Î§ÄÚ"
++msgid "%s: value of field `int_curr_symbol' has wrong length"
++msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµµÄ³¤¶È´íÎó"
+
+-#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:154
++#: locale/programs/ld-monetary.c:232
+ #, c-format
+-msgid "%s: value for field `%s' must not be an empty string"
+-msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜÊÇ¿Õ×Ö·û´®"
++msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
++msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµÓÚ ISO 4217 ÖÐÈκÎÒ»¸öºÏ·¨µÄÃû³Æ¶¼²»¶ÔÓ¦"
+
+ #: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119
+ #, c-format
+ msgid "%s: value for field `%s' must not be the empty string"
+ msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜÊÇ¿Õ×Ö·û´®"
+
+-#: locale/programs/ld-monetary.c:232
++#: locale/programs/ld-monetary.c:278 locale/programs/ld-monetary.c:308
+ #, c-format
+-msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
+-msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµÓÚ ISO 4217 ÖÐÈκÎÒ»¸öºÏ·¨µÄÃû³Æ¶¼²»¶ÔÓ¦"
++msgid "%s: value for field `%s' must be in range %d...%d"
++msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÔÚ %d...%d µÄ·¶Î§ÄÚ"
+
+-#: locale/programs/ld-monetary.c:224
++#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:275
+ #, c-format
+-msgid "%s: value of field `int_curr_symbol' has wrong length"
+-msgstr "%s£ºÓò¡°int_curr_symbol¡±µÄÖµµÄ³¤¶È´íÎó"
++msgid "%s: value for field `%s' must be a single character"
++msgstr "%s£º¡°%s¡±ÓòµÄÖµ±ØÐëÊǵ¥¸ö×Ö·û"
++
++#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:319
++#, c-format
++msgid "%s: `-1' must be last entry in `%s' field"
++msgstr "%s£º¡°-1¡±±ØÐëÊÇ¡°%s¡±ÓòÖеÄ×îºóÒ»¸öÌõÄ¿"
+
+-#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:339
++#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:340
+ #, c-format
+ msgid "%s: values for field `%s' must be smaller than 127"
+ msgstr "%s£ºÓò¡°%s¡±µÄÖµ±ØÐëСÓÚ 127"
+
+-#: locale/programs/ld-time.c:509
+-#, c-format
+-msgid "%s: values for field `%s' must not be larger than %d"
+-msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
++#: locale/programs/ld-monetary.c:902
++msgid "conversion rate value cannot be zero"
++msgstr "ת»»ÂʵÄÖµ²»ÄÜΪ 0"
+
+-#: locale/programs/ld-time.c:493 locale/programs/ld-time.c:501
++#: locale/programs/ld-name.c:130 locale/programs/ld-telephone.c:127
++#: locale/programs/ld-telephone.c:150
+ #, c-format
+-msgid "%s: values of field `%s' must not be larger than %d"
+-msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
++msgid "%s: invalid escape sequence in field `%s'"
++msgstr "%s£ºÓò¡°%s¡±Öк¬ÓÐÎÞЧתÒåÐòÁÐ"
+
+-#: locale/programs/ld-collate.c:850
++#: locale/programs/ld-time.c:248
+ #, c-format
+-msgid "%s: weights must use the same ellipsis symbol as the name"
++msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
+ msgstr ""
+
+-#: sunrpc/rpc_main.c:308
++#: locale/programs/ld-time.c:259
+ #, c-format
+-msgid "%s: while writing output %s: %m"
+-msgstr "%s£ºÐ´ÈëÊä³ö %s ʱ£º%m"
+-
+-#: argp/argp-parse.c:170
+-msgid "(PROGRAM ERROR) No version known!?"
+-msgstr "(³ÌÐò´íÎó) ²»ÖªµÀ°æ±¾ºÅ£¡£¿"
+-
+-#: argp/argp-parse.c:787
+-msgid "(PROGRAM ERROR) Option should have been recognized!?"
+-msgstr "(³ÌÐò´íÎó) Ñ¡ÏîÓ¦¸Ã¿Éʶ±ð£¡£¿"
+-
+-#: nis/nis_print.c:133
+-msgid "(Unknown object)\n"
+-msgstr "(δ֪¶ÔÏó)\n"
++msgid "%s: direction flag in string %Zd in `era' field is not a single character"
++msgstr ""
+
+-#: sunrpc/clnt_perr.c:133
++#: locale/programs/ld-time.c:272
+ #, c-format
+-msgid "(unknown authentication error - %d)"
+-msgstr "(δ֪µÄÈÏÖ¤´íÎó - %d)"
++msgid "%s: invalid number for offset in string %Zd in `era' field"
++msgstr ""
+
+-#: sunrpc/rpcinfo.c:613
+-msgid "(unknown)"
+-msgstr "(δ֪)"
++#: locale/programs/ld-time.c:280
++#, c-format
++msgid "%s: garbage at end of offset value in string %Zd in `era' field"
++msgstr ""
+
+-#: elf/sprof.c:570
++#: locale/programs/ld-time.c:331
+ #, c-format
+-msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+-msgstr "*** Îļþ¡°%s¡±ÒÑ°þÀ룺²»¿ÉÄܽøÐÐϸ½Ú·ÖÎö\n"
++msgid "%s: invalid starting date in string %Zd in `era' field"
++msgstr ""
+
+-#: catgets/gencat.c:282
+-msgid "*standard input*"
+-msgstr "*±ê×¼ÊäÈë*"
++#: locale/programs/ld-time.c:340
++#, c-format
++msgid "%s: garbage at end of starting date in string %Zd in `era' field "
++msgstr ""
+
+-#: elf/cache.c:105
++#: locale/programs/ld-time.c:359
+ #, c-format
+-msgid ", OS ABI: %s %d.%d.%d"
++msgid "%s: starting date is invalid in string %Zd in `era' field"
+ msgstr ""
+
+-#: catgets/gencat.c:125
+-msgid ""
+-"-o OUTPUT-FILE [INPUT-FILE]...\n"
+-"[OUTPUT-FILE [INPUT-FILE]...]"
++#: locale/programs/ld-time.c:408
++#, c-format
++msgid "%s: invalid stopping date in string %Zd in `era' field"
+ msgstr ""
+-"-o Êä³öÎļþ [ÊäÈëÎļþ]...\n"
+-"[Êä³öÎļþ [ÊäÈëÎļþ]...]"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:797
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
+-msgid ".lib section in a.out corrupted"
+-msgstr "a.out ÖÐµÄ .lib ½ÚÒѻٻµ"
++#: locale/programs/ld-time.c:417
++#, c-format
++msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
++msgstr ""
+
+-#: sunrpc/clnt_perr.c:119 sunrpc/clnt_perr.c:140
++#: locale/programs/ld-time.c:436
+ #, c-format
+-msgid "; low version = %lu, high version = %lu"
++msgid "%s: stopping date is invalid in string %Zd in `era' field"
+ msgstr ""
+
+-#: sunrpc/clnt_perr.c:126
+-msgid "; why = "
++#: locale/programs/ld-time.c:445
++#, c-format
++msgid "%s: missing era name in string %Zd in `era' field"
+ msgstr ""
+
+-#: locale/programs/charmap.c:1004
++#: locale/programs/ld-time.c:457
+ #, c-format
+-msgid "<%s> and <%s> are illegal names for range"
+-msgstr "<%s> ºÍ <%s> ÊÇ·Ç·¨µÄ·¶Î§Ãû"
++msgid "%s: missing era format in string %Zd in `era' field"
++msgstr ""
+
+-#: locale/programs/repertoire.c:448
++#: locale/programs/ld-time.c:486
+ #, c-format
+-msgid "<%s> and <%s> are invalid names for range"
+-msgstr "<%s> ºÍ <%s> ÊÇÎÞЧµÄ·¶Î§Ãû"
++msgid "%s: third operand for value of field `%s' must not be larger than %d"
++msgstr ""
+
+-#: locale/programs/ld-ctype.c:573 locale/programs/ld-ctype.c:608
++#: locale/programs/ld-time.c:494 locale/programs/ld-time.c:502
+ #, c-format
+-msgid "<SP> character must not be in class `%s'"
+-msgstr "×Ö·û <SP> ²»ÄÜÊôÓÚÀà¡°%s¡±"
++msgid "%s: values of field `%s' must not be larger than %d"
++msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
+
+-#: locale/programs/ld-ctype.c:561 locale/programs/ld-ctype.c:597
++#: locale/programs/ld-time.c:510
+ #, c-format
+-msgid "<SP> character not in class `%s'"
+-msgstr "×Ö·û <SP> ²»ÔÚÀà¡°%s¡±ÖÐ"
++msgid "%s: values for field `%s' must not be larger than %d"
++msgstr "%s£ºÓò¡°%s¡±µÄÖµ²»ÄÜ´óÓÚ %d"
+
+-#. TRANS The experienced user will know what is wrong.
+-#. TRANS @c This error code is a joke. Its perror text is part of the joke.
+-#. TRANS @c Don't change it.
+-#: stdio-common/../sysdeps/gnu/errlist.c:622
+-msgid "?"
+-msgstr "£¿"
++#: locale/programs/ld-time.c:984
++#, c-format
++msgid "%s: too few values for field `%s'"
++msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ýÉÙ"
+
+-#: sysdeps/generic/siglist.h:34
+-msgid "Aborted"
+-msgstr "ÒÑ·ÅÆú"
++#: locale/programs/ld-time.c:1029
++msgid "extra trailing semicolon"
++msgstr "¶àÓàµÄÖÕÖ¹·ÖºÅ"
+
+-#: nis/nis_print.c:324
+-msgid "Access Rights : "
+-msgstr "·ÃÎÊȨÏÞ£º"
++#: locale/programs/ld-time.c:1032
++#, c-format
++msgid "%s: too many values for field `%s'"
++msgstr "%s£ºÓò¡°%s¡±µÄÖµ¹ý¶à"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:793
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
+-msgid "Accessing a corrupted shared library"
+-msgstr "ÕýÔÚ·ÃÎÊÒ»¸öÒѻٻµµÄ¹²Ïí¿â"
++#: locale/programs/linereader.c:275
++msgid "garbage at end of number"
++msgstr "Êý×ÖĩβÓÐÀ¬»ø"
+
+-#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:367
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
+-msgid "Address already in use"
+-msgstr "µØÖ·ÒÑÔÚʹÓÃ"
++#: locale/programs/linereader.c:387
++msgid "garbage at end of character code specification"
++msgstr ""
+
+-#: posix/../sysdeps/posix/gai_strerror.c:31
+-msgid "Address family for hostname not supported"
+-msgstr "²»Ö§³ÖµÄÖ÷»úÃûµØÖ·×å"
++#: locale/programs/linereader.c:473
++msgid "unterminated symbolic name"
++msgstr "δÖÕÖ¹µÄ·ûºÅÃû"
+
+-#. TRANS The address family specified for a socket is not supported; it is
+-#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:362
+-msgid "Address family not supported by protocol"
+-msgstr "ЭÒé²»Ö§³ÖµÄµØÖ·×å"
++#: locale/programs/linereader.c:537 catgets/gencat.c:1195
++msgid "invalid escape sequence"
++msgstr "ÎÞЧµÄתÒåÐòÁÐ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
+-msgid "Address family not supported by protocol family"
+-msgstr "ЭÒé×å²»Ö§³ÖµÄµØÖ·×å"
++#: locale/programs/linereader.c:600
++msgid "illegal escape sequence at end of string"
++msgstr "×Ö·û´®Ä©Î²µÄ·Ç·¨×ªÒåÐòÁÐ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:761
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
+-msgid "Advertise error"
+-msgstr ""
++#: locale/programs/linereader.c:604 locale/programs/linereader.c:832
++msgid "unterminated string"
++msgstr "δÖÕÖ¹µÄ×Ö·û´®"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:40 sysdeps/generic/siglist.h:40
+-msgid "Alarm clock"
+-msgstr "ÄÖÖÓ"
++#: locale/programs/linereader.c:646
++msgid "non-symbolic character value should not be used"
++msgstr "²»Ó¦¸ÃʹÓ÷ǷûºÅ×Ö·ûµÄÖµ"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:45
+-msgid "All requests done"
+-msgstr "Íê³ÉËùÓÐÇëÇó"
++#: locale/programs/linereader.c:793
++#, c-format
++msgid "symbol `%.*s' not in charmap"
++msgstr ""
+
+-#: malloc/memusagestat.c:57
+-msgid "Also draw graph for total memory consumption"
++#: locale/programs/linereader.c:814
++#, c-format
++msgid "symbol `%.*s' not in repertoire map"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
+-msgid "Anode table overflow"
++#: locale/programs/linereader.h:162
++msgid "trailing garbage at end of line"
+ msgstr ""
+
+-#: intl/tst-gettext2.c:38
+-msgid "Another string for testing."
+-msgstr "ÁíÒ»¸ö²âÊÔ×Ö·û´®¡£"
++#: locale/programs/locale.c:75
++msgid "System information:"
++msgstr "ϵͳÐÅÏ¢£º"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
+-msgid "Arg list too long"
+-msgstr "²ÎÊýÁбí¹ý³¤"
++#: locale/programs/locale.c:77
++msgid "Write names of available locales"
++msgstr "д³ö¿ÉÓÃÇøÓòµÄÃû³Æ"
+
+-#. TRANS Argument list too long; used when the arguments passed to a new program
+-#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
+-#. TRANS File}) occupy too much memory space. This condition never arises in the
+-#. TRANS GNU system.
+-#: stdio-common/../sysdeps/gnu/errlist.c:70
+-msgid "Argument list too long"
+-msgstr "²ÎÊýÁбí¹ý³¤"
++#: locale/programs/locale.c:79
++msgid "Write names of available charmaps"
++msgstr "д³ö¿ÉÓÃ×Ö·ûÓ³ÉäµÄÃû³Æ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
+-msgid "Argument out of domain"
+-msgstr ""
++#: locale/programs/locale.c:80
++msgid "Modify output format:"
++msgstr "ÐÞ¸ÄÊä³ö¸ñʽ£º"
+
+-#: nis/nis_error.c:66
+-msgid "Attempt to remove a non-empty table"
+-msgstr "ÊÔͼɾ³ý·Ç¿ÕµÄ±í"
++#: locale/programs/locale.c:81
++msgid "Write names of selected categories"
++msgstr "д³öÑ¡Öз¶³ëµÄÃû³Æ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
+-msgid "Attempting to link in more shared libraries than system limit"
+-msgstr "ÊÔͼÁ¬½ÓµÄ¹²Ïí¿â¸öÊý³¬³öϵͳÏÞÖÆ"
++#: locale/programs/locale.c:82
++msgid "Write names of selected keywords"
++msgstr "д³öÑ¡Öйؼü×ÖµÄÃû³Æ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:801
+-msgid "Attempting to link in too many shared libraries"
+-msgstr "ÊÔͼÓÚ¹ý¶àµÄ¹²Ïí¿âÏàÁ¬½Ó"
++#: locale/programs/locale.c:83
++msgid "Print more information"
++msgstr "´òÓ¡¸ü¶àÐÅÏ¢"
+
+-#: sunrpc/clnt_perr.c:354
+-msgid "Authentication OK"
+-msgstr "ÈÏÖ¤³É¹¦"
++#: locale/programs/locale.c:88
++msgid "Get locale-specific information."
++msgstr "¸ø³öÇøÓòÌض¨µÄÐÅÏ¢¡£"
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:562
+-msgid "Authentication error"
+-msgstr "ÈÏÖ¤´íÎó"
++#: locale/programs/locale.c:91
++msgid ""
++"NAME\n"
++"[-a|-m]"
++msgstr ""
+
+-#: nis/nis_print.c:109
+-msgid "BOGUS OBJECT\n"
++#: locale/programs/locale.c:512
++msgid "while preparing output"
++msgstr "×¼±¸Êä³öʱ"
++
++#: locale/programs/localedef.c:121
++msgid "Input Files:"
++msgstr "ÊäÈëÎļþ£º"
++
++#: locale/programs/localedef.c:123
++msgid "Symbolic character names defined in FILE"
+ msgstr ""
+
+-#. TRANS Bad address; an invalid pointer was detected.
+-#. TRANS In the GNU system, this error never happens; you get a signal instead.
+-#: stdio-common/../sysdeps/gnu/errlist.c:115
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
+-msgid "Bad address"
+-msgstr "´íÎóµÄµØÖ·"
++#: locale/programs/localedef.c:124
++msgid "Source definitions are found in FILE"
++msgstr "ÔÚ FILE ÖÐÕÒµ½Ô´¶¨Òå"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
+-msgid "Bad exchange descriptor"
+-msgstr "´íÎóµÄ½»»»ÃèÊö·û"
++#: locale/programs/localedef.c:126
++msgid "FILE contains mapping from symbolic names to UCS4 values"
++msgstr ""
+
+-#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+-#. TRANS closed or reading from a descriptor open only for writing (or vice
+-#. TRANS versa).
+-#: stdio-common/../sysdeps/gnu/errlist.c:83
+-msgid "Bad file descriptor"
+-msgstr "´íÎóµÄÎļþÃèÊö·û"
++#: locale/programs/localedef.c:130
++msgid "Create output even if warning messages were issued"
++msgstr "¼´Ê¹³öÏÖ¾¯¸æÏûÏ¢Ò²´´½¨Êä³ö"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
+-msgid "Bad file number"
+-msgstr "´íÎóµÄÎļþ±àºÅ"
++#: locale/programs/localedef.c:131
++msgid "Create old-style tables"
++msgstr "´´½¨¾É·ç¸ñ±í¸ñ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:749
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
+-msgid "Bad font file format"
+-msgstr "´íÎóµÄ×ÖÌåÎļþ¸ñʽ"
++#: locale/programs/localedef.c:132
++msgid "Optional output file prefix"
++msgstr "¿ÉÑ¡µÄÊä³öÎļþǰ׺"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:641
+-msgid "Bad message"
+-msgstr "´íÎóµÄÏûÏ¢"
++#: locale/programs/localedef.c:133
++msgid "Be strictly POSIX conform"
++msgstr "Ñϸñ×ñÑ­ POSIX"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
+-msgid "Bad request code"
+-msgstr "´íÎóµÄÇëÇóÂë"
++#: locale/programs/localedef.c:135
++msgid "Suppress warnings and information messages"
++msgstr "¹Ø±Õ¾¯¸æºÍÐÅÏ¢ÏûÏ¢"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
+-msgid "Bad request descriptor"
+-msgstr "´íÎóµÄÇëÇóÃèÊö·û"
++#: locale/programs/localedef.c:136
++msgid "Print more messages"
++msgstr "´òÓ¡¸ü¶àÏûÏ¢"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:38 sysdeps/generic/siglist.h:63
+-msgid "Bad system call"
+-msgstr "´íÎóµÄϵͳµ÷ÓÃ"
++#: locale/programs/localedef.c:137
++msgid "Archive control:"
++msgstr "¹éµµ¿ØÖÆ£º"
++
++#: locale/programs/localedef.c:139
++msgid "Don't add new data to archive"
++msgstr "²»Òª½«ÐÂÊý¾ÝÌí¼Óµ½¹éµµÎļþÖÐ"
++
++#: locale/programs/localedef.c:141
++msgid "Add locales named by parameters to archive"
++msgstr "½«ÓɲÎÊýÃüÃûµÄÇøÓòÌí¼Óµ½¹éµµÎļþÖÐ"
++
++#: locale/programs/localedef.c:142
++msgid "Replace existing archive content"
++msgstr "Ìæ»»ÏÖÓеĹ鵵ÎļþÄÚÈÝ"
++
++#: locale/programs/localedef.c:144
++msgid "Remove locales named by parameters from archive"
++msgstr "´Ó¹éµµÎļþÖÐɾ³ýÓɲÎÊýÃüÃûµÄÇøÓò"
++
++#: locale/programs/localedef.c:145
++msgid "List content of archive"
++msgstr "Áгö¹éµµÎļþµÄÄÚÈÝ"
++
++#: locale/programs/localedef.c:147
++msgid "locale.alias file to consult when making archive"
++msgstr "ÔÚÖÆ×÷¹éµµÎļþʱ²Î¿¼ locale.alias Îļþ"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:33
+-msgid "Bad value for ai_flags"
+-msgstr "´íÎóµÄ ai_flags µÄÖµ"
++#: locale/programs/localedef.c:152
++msgid "Compile locale specification"
++msgstr "±àÒëÇøÓò¹æ·¶"
+
+-#: locale/programs/localedef.c:104
+-msgid "Be strictly POSIX conform"
+-msgstr "Ñϸñ×ñÑ­ POSIX"
++#: locale/programs/localedef.c:155
++msgid ""
++"NAME\n"
++"[--add-to-archive|--delete-from-archive] FILE...\n"
++"--list-archive [FILE]"
++msgstr ""
++"Ãû³Æ\n"
++"[--add-to-archive|--delete-from-archive] Îļþ...\n"
++"--list-archive [Îļþ]"
++
++#: locale/programs/localedef.c:233
++msgid "cannot create directory for output files"
++msgstr "ÎÞ·¨ÎªÊä³öÎļþ´´½¨Ä¿Â¼"
+
+-#: nis/nis_print.c:305
+-msgid "Binary data\n"
+-msgstr "¶þ½øÖÆÊý¾Ý\n"
++#: locale/programs/localedef.c:244
++msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
++msgstr "ÖÂÃü´íÎó£ºÏµÍ³Î´¶¨Òå¡°_POSIX2_LOCALEDEF¡±"
+
+-#. TRANS A file that isn't a block special file was given in a situation that
+-#. TRANS requires one. For example, trying to mount an ordinary file as a file
+-#. TRANS system in Unix gives this error.
+-#: stdio-common/../sysdeps/gnu/errlist.c:122
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
+-msgid "Block device required"
+-msgstr "ÐèÒª¿éÉ豸"
++#: locale/programs/localedef.c:258 locale/programs/localedef.c:274
++#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
++#, c-format
++msgid "cannot open locale definition file `%s'"
++msgstr "ÎÞ·¨´ò¿ªÇøÓò¶¨ÒåÎļþ¡°%s¡±"
+
+-#: sunrpc/pmap_rmt.c:348
+-msgid "Broadcast poll problem"
++#: locale/programs/localedef.c:286
++#, c-format
++msgid "cannot write output files to `%s'"
++msgstr "ÎÞ·¨½«Êä³öÎļþдÈë¡°%s¡±"
++
++#: locale/programs/localedef.c:367
++#, c-format
++msgid ""
++"System's directory for character maps : %s\n"
++" repertoire maps: %s\n"
++" locale path : %s\n"
++"%s"
+ msgstr ""
+
+-#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+-#. TRANS Every library function that returns this error code also generates a
+-#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
+-#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
+-#. TRANS unless it has handled or blocked @code{SIGPIPE}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:235
+-#: stdio-common/../sysdeps/unix/siglist.c:39
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
+-#: sysdeps/generic/siglist.h:39
+-msgid "Broken pipe"
+-msgstr "¶Ï¿ªµÄ¹ÜµÀ"
++#: locale/programs/localedef.c:567
++msgid "circular dependencies between locale definitions"
++msgstr "ÇøÓò¶¨ÒåÖеÄÑ­»·ÒÐÀµ"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:36 sysdeps/generic/siglist.h:37
+-msgid "Bus error"
+-msgstr "×ÜÏß´íÎó"
++#: locale/programs/localedef.c:573
++#, c-format
++msgid "cannot add already read locale `%s' a second time"
++msgstr "ÎÞ·¨ÔÙ´ÎÌí¼ÓÒѾ­¶ÁÈëµÄ¡°%s¡±"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:50 sysdeps/generic/siglist.h:50
+-msgid "CPU time limit exceeded"
+-msgstr "³¬³ö CPU ʱÏÞ"
++#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:259
++msgid "cannot create temporary file"
++msgstr "ÎÞ·¨´´½¨ÁÙʱÎļþ"
+
+-#: nis/nis_error.c:33
+-msgid "Cache expired"
+-msgstr "»º³åÆ÷¹ýÆÚ"
++#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
++msgid "cannot initialize archive file"
++msgstr "ÎÞ·¨³õʼ»¯¹éµµÎļþ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:789
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
+-msgid "Can not access a needed shared library"
+-msgstr "ÎÞ·¨·ÃÎʱØÐëµÄ¹²Ïí¿â"
++#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
++msgid "cannot resize archive file"
++msgstr "ÎÞ·¨¸Ä±ä¹éµµÎļþµÄ´óС"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
+-msgid "Can not exec a shared library directly"
+-msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
++#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
++#: locale/programs/locarchive.c:511
++msgid "cannot map archive header"
++msgstr "ÎÞ·¨Ó³Éä¹éµµÎļþÍ·"
+
+-#: nis/ypclnt.c:794
+-msgid "Can't bind to server which serves this domain"
+-msgstr "ÎÞ·¨ÓÚΪ´ËÓò·þÎñµÄ·þÎñÆ÷°ó¶¨"
++#: locale/programs/locarchive.c:156
++msgid "failed to create new locale archive"
++msgstr "ÎÞ·¨´´½¨ÐÂÇøÓò¹éµµÎļþ"
+
+-#: elf/ldconfig.c:1008
+-msgid "Can't chdir to /"
+-msgstr ""
++#: locale/programs/locarchive.c:168
++msgid "cannot change mode of new locale archive"
++msgstr "ÎÞ·¨¸Ä±äй鵵ÎļþµÄģʽ"
+
+-#: nis/ypclnt.c:806
+-msgid "Can't communicate with portmapper"
+-msgstr "ÎÞ·¨Óë portmapper ͨѶ"
++#: locale/programs/locarchive.c:253
++msgid "cannot map locale archive file"
++msgstr "ÎÞ·¨Ó³ÉäÇøÓò¹éµµÎļþ"
+
+-#: nis/ypclnt.c:808
+-msgid "Can't communicate with ypbind"
+-msgstr "ÎÞ·¨Óë ypbind ͨѶ"
++#: locale/programs/locarchive.c:329
++msgid "cannot lock new archive"
++msgstr "ÎÞ·¨Ëø¶¨Ð¹鵵Îļþ"
+
+-#: nis/ypclnt.c:810
+-msgid "Can't communicate with ypserv"
+-msgstr "ÎÞ·¨Óë ypserv ͨѶ"
++#: locale/programs/locarchive.c:380
++msgid "cannot extend locale archive file"
++msgstr "ÎÞ·¨À©Õ¹ÇøÓò¹éµµÎļþ"
++
++#: locale/programs/locarchive.c:389
++msgid "cannot change mode of resized locale archive"
++msgstr "ÎÞ·¨¸Ä±ä¹ý´óСµÄÇøÓò¹éµµÎļþµÄģʽ"
++
++#: locale/programs/locarchive.c:397
++msgid "cannot rename new archive"
++msgstr "ÎÞ·¨¸Ä±äй鵵ÎļþµÄÃû³Æ"
+
+-#: elf/cache.c:394
++#: locale/programs/locarchive.c:450
+ #, c-format
+-msgid "Can't create temporary cache file %s"
+-msgstr "ÎÞ·¨´´½¨ÁÙʱ»º³åÎļþ %s"
++msgid "cannot open locale archive \"%s\""
++msgstr "ÎÞ·¨´ò¿ªÇøÓò¹éµµÎļþ¡°%s¡±"
+
+-#: elf/ldconfig.c:512
++#: locale/programs/locarchive.c:455
+ #, c-format
+-msgid "Can't find %s"
+-msgstr "ÎÞ·¨ÕÒµ½ %s"
++msgid "cannot stat locale archive \"%s\""
++msgstr "ÎÞ·¨¶ÔÇøÓò¹éµµÎļþ¡°%s¡±½øÐÐ stat() ²Ù×÷"
+
+-#: elf/ldconfig.c:449
++#: locale/programs/locarchive.c:474
+ #, c-format
+-msgid "Can't link %s to %s"
+-msgstr "ÎÞ·¨½« %s Á¬½Óµ½ %s"
++msgid "cannot lock locale archive \"%s\""
++msgstr "ÎÞ·¨Ëø¶¨ÇøÓò¹éµµÎļþ¡°%s¡±"
+
+-#: elf/ldconfig.c:528
++#: locale/programs/locarchive.c:497
++msgid "cannot read archive header"
++msgstr "ÎÞ·¨¶ÁÈë¹éµµÎļþÍ·"
++
++#: locale/programs/locarchive.c:557
+ #, c-format
+-msgid "Can't lstat %s"
+-msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
++msgid "locale '%s' already exists"
++msgstr "ÇøÓò¡°%s¡±ÒÑ´æÔÚ"
++
++#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
++#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
++#: locale/programs/locfile.c:343
++msgid "cannot add to locale archive"
++msgstr "ÎÞ·¨Ìí¼Óµ½ÇøÓò¹éµµÎļþ"
+
+-#: elf/cache.c:131 elf/ldconfig.c:1029
++#: locale/programs/locarchive.c:982
+ #, c-format
+-msgid "Can't open cache file %s\n"
+-msgstr "ÎÞ·¨´ò¿ª»º³åÎļþ %s\n"
++msgid "locale alias file `%s' not found"
++msgstr "ÕÒ²»µ½ÇøÓò±ðÃûÎļþ¡°%s¡±"
+
+-#: elf/ldconfig.c:1050
++#: locale/programs/locarchive.c:1126
+ #, c-format
+-msgid "Can't open cache file directory %s\n"
+-msgstr "ÎÞ·¨´ò¿ª»º³åÎļþĿ¼ %s\n"
++msgid "Adding %s\n"
++msgstr "ÕýÔÚÌí¼Ó %s\n"
+
+-#: elf/ldconfig.c:924
++#: locale/programs/locarchive.c:1132
+ #, c-format
+-msgid "Can't open configuration file %s"
+-msgstr "ÎÞ·¨´ò¿ªÅäÖÃÎļþ %s"
++msgid "stat of \"%s\" failed: %s: ignored"
++msgstr "ÎÞ·¨¶Ô¡°%s¡±ÔËÐÐ stat£º%s£ººöÂÔ"
+
+-#: elf/ldconfig.c:634
++#: locale/programs/locarchive.c:1138
+ #, c-format
+-msgid "Can't open directory %s"
+-msgstr "ÎÞ·¨´ò¿ªÄ¿Â¼ %s"
++msgid "\"%s\" is no directory; ignored"
++msgstr "¡°%s¡±²»ÊÇĿ¼£»ºöÂÔ"
+
+-#: elf/cache.c:387
++#: locale/programs/locarchive.c:1145
+ #, c-format
+-msgid "Can't remove old temporary cache file %s"
+-msgstr "ÎÞ·¨É¾³ý¾ÉÁÙʱ»º³åÎļþ %s"
++msgid "cannot open directory \"%s\": %s: ignored"
++msgstr "ÎÞ·¨´ò¿ªÄ¿Â¼¡°%s¡±£º%s£ººöÂÔ"
+
+-#: elf/ldconfig.c:344
++#: locale/programs/locarchive.c:1217
+ #, c-format
+-msgid "Can't stat %s"
+-msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
++msgid "incomplete set of locale files in \"%s\""
++msgstr "¡°%s¡±ÖеÄÇøÓòÎļþ²»ÍêÕû"
+
+-#: elf/ldconfig.c:414
++#: locale/programs/locarchive.c:1281
+ #, c-format
+-msgid "Can't stat %s\n"
+-msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷\n"
++msgid "cannot read all files in \"%s\": ignored"
++msgstr "ÎÞ·¨¶ÁÈë¡°%s¡±ÖеÄËùÓÐÎļþ£ººöÂÔ"
+
+-#: elf/ldconfig.c:443
++#: locale/programs/locarchive.c:1351
+ #, c-format
+-msgid "Can't unlink %s"
+-msgstr ""
+-
+-#. TRANS No memory available. The system cannot allocate more virtual memory
+-#. TRANS because its capacity is full.
+-#: stdio-common/../sysdeps/gnu/errlist.c:104
+-msgid "Cannot allocate memory"
+-msgstr "ÎÞ·¨·ÖÅäÄÚ´æ"
+-
+-#. TRANS The requested socket address is not available; for example, you tried
+-#. TRANS to give a socket a name that doesn't match the local host name.
+-#. TRANS @xref{Socket Addresses}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:374
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
+-msgid "Cannot assign requested address"
+-msgstr "ÎÞ·¨Ö¸¶¨±»ÇëÇóµÄµØÖ·"
+-
+-#: sunrpc/pmap_rmt.c:265
+-msgid "Cannot create socket for broadcast rpc"
+-msgstr "ÎÞ·¨Îª¹ã²¥ rpc ´´½¨Ì×½Ó×Ö"
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:805
+-msgid "Cannot exec a shared library directly"
+-msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
++msgid "locale \"%s\" not in archive"
++msgstr "ÇøÓò¡°%s¡±Ôڹ鵵ÎļþÖÐ"
+
+-#: elf/readlib.c:99
++#: locale/programs/locfile.c:132
+ #, c-format
+-msgid "Cannot fstat file %s.\n"
+-msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ fstat ²Ù×÷¡£\n"
++msgid "argument to `%s' must be a single character"
++msgstr "¡°%s¡±µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
+
+-#: sunrpc/rpc_main.c:1417
+-msgid "Cannot have more than one file generation flag!\n"
+-msgstr "ÎÞ·¨Ê¹ÓöàÓÚÒ»¸öµÄÎļþÉú³É±êÖ¾£¡\n"
++#: locale/programs/locfile.c:251
++msgid "syntax error: not inside a locale definition section"
++msgstr "Óï·¨´íÎ󣺲»ÔÚÇøÓò¶¨Òå½ÚÖ®ÖÐ"
+
+-#: elf/ldconfig.c:689 elf/ldconfig.c:732
++#: locale/programs/locfile.c:625
+ #, c-format
+-msgid "Cannot lstat %s"
+-msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
++msgid "cannot open output file `%s' for category `%s'"
++msgstr "ÎÞ·¨Îª·¶³ë¡°%2$s¡±´ò¿ªÊä³öÎļþ¡°%1$s¡±"
+
+-#: elf/readlib.c:118
++#: locale/programs/locfile.c:649
+ #, c-format
+-msgid "Cannot mmap file %s.\n"
+-msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ mmap ²Ù×÷¡£\n"
+-
+-#: sunrpc/pmap_rmt.c:361
+-msgid "Cannot receive reply to broadcast"
+-msgstr "ÎÞ·¨½ÓÊնԹ㲥µÄÓ¦´ð"
+-
+-#: sunrpc/pmap_clnt.c:136
+-msgid "Cannot register service"
+-msgstr "ÎÞ·¨×¢²á·þÎñ"
+-
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
+-msgid "Cannot send after socket shutdown"
+-msgstr "ÎÞ·¨ÔÚÌ×½Ó×ֹرպó·¢ËÍ"
++msgid "failure while writing data for category `%s'"
++msgstr "Ϊ·¶³ë¡°%s¡±Ð´ÈëÊý¾Ýʧ°Ü"
+
+-#. TRANS The socket has already been shut down.
+-#: stdio-common/../sysdeps/gnu/errlist.c:435
+-msgid "Cannot send after transport endpoint shutdown"
+-msgstr "ÎÞ·¨ÔÚ´«Êä¶Ëµã¹Ø±ÕÒÔºó·¢ËÍ"
++#: locale/programs/locfile.c:745
++#, c-format
++msgid "cannot create output file `%s' for category `%s'"
++msgstr "ÎÞ·¨Îª·¶³ë¡°%2$s¡±´´½¨Êä³öÎļþ¡°%1$s¡±"
+
+-#: sunrpc/pmap_rmt.c:323
+-msgid "Cannot send broadcast packet"
+-msgstr "ÎÞ·¨·¢Ë͹㲥°ü"
++#: locale/programs/locfile.h:59
++msgid "expect string argument for `copy'"
++msgstr "¡°copy¡±ÐèÒª×Ö·û´®²ÎÊý"
+
+-#: sunrpc/pmap_rmt.c:272
+-msgid "Cannot set socket option SO_BROADCAST"
+-msgstr "ÎÞ·¨ÉèÖÃÌ×½Ó×ÖÑ¡Ïî SO_BROADCAST"
++#: locale/programs/locfile.h:63
++msgid "locale name should consist only of portable characters"
++msgstr "ÇøÓòÃû³ÆÓ¦¸Ã½öÓÉ¿ÉÒÆÖ²µÄ×Ö·û×é³É"
+
+-#: sunrpc/rpc_main.c:1195
+-msgid "Cannot specify more than one input file!\n"
+-msgstr "ÎÞ·¨Ö¸¶¨¶à¸öÊäÈëÎļþ£¡\n"
++#: locale/programs/locfile.h:82
++msgid "no other keyword shall be specified when `copy' is used"
++msgstr "ʹÓá°copy¡±Ê±²»Ó¦ÔÙʹÓÃÆäËü¹Ø¼ü×Ö"
+
+-#: elf/ldconfig.c:701
++#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
++#: locale/programs/repertoire.c:296
+ #, c-format
+-msgid "Cannot stat %s"
+-msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
+-
+-#: sunrpc/rpc_main.c:1374
+-msgid "Cannot use netid flag with inetd flag!\n"
+-msgstr "ÎÞ·¨ÔÚʹÓà inetd ±êÖ¾µÄͬʱʹÓà netid ±êÖ¾£¡\n"
+-
+-#: sunrpc/rpc_main.c:1386
+-msgid "Cannot use netid flag without TIRPC!\n"
+-msgstr "ÎÞ·¨ÔÚδʹÓà TIRPC µÄʱºòʹÓà netid ±êÖ¾£¡\n"
++msgid "syntax error in repertoire map definition: %s"
++msgstr ""
+
+-#: sunrpc/rpc_main.c:1393
+-msgid "Cannot use table flags with newstyle!\n"
+-msgstr "ÎÞ·¨ÒÔзç¸ñʹÓñí¸ñ±êÖ¾£¡\n"
++#: locale/programs/repertoire.c:272
++msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
++msgstr "¼´Î´¸ø³ö <Uxxxx> Ҳδ¸ø³ö <Uxxxxxxxx>"
+
+-#: elf/ldconfig.c:126
+-msgid "Change to and use ROOT as root directory"
+-msgstr "½øÈë ROOT Ŀ¼²¢½«Æä×÷Ϊ¸ùĿ¼"
++#: locale/programs/repertoire.c:332
++msgid "cannot safe new repertoire map"
++msgstr ""
+
+-#: elf/cache.c:426
++#: locale/programs/repertoire.c:343
+ #, c-format
+-msgid "Changing access rights of %s to %#o failed"
+-msgstr "½« %s µÄ·ÃÎÊȨÏ޸ıäΪ %#o ʧ°Ü"
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:689
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
+-msgid "Channel number out of range"
++msgid "repertoire map file `%s' not found"
+ msgstr ""
+
+-#: nis/nis_print.c:268
++#: locale/programs/repertoire.c:450
+ #, c-format
+-msgid "Character Separator : %c\n"
+-msgstr "×Ö·û·Ö¸ô·û£º%c\n"
++msgid "<%s> and <%s> are invalid names for range"
++msgstr "<%s> ºÍ <%s> ÊÇÎÞЧµÄ·¶Î§Ãû"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:46 sysdeps/generic/siglist.h:46
+-msgid "Child exited"
+-msgstr "×Ó½ø³ÌÒÑÍ˳ö"
++#: locale/programs/repertoire.c:457
++msgid "upper limit in range is not smaller then lower limit"
++msgstr "·¶Î§µÄÉÏÏÞ²¢²»Ð¡ÓÚÏÂÏÞ"
+
+-#: sunrpc/clnt_perr.c:373
+-msgid "Client credential too weak"
+-msgstr ""
++#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
++#: posix/getconf.c:1002
++msgid "memory exhausted"
++msgstr "ÄÚ´æºÄ¾¡"
+
+-#: nis/nis_print.c:270
+-msgid "Columns :\n"
+-msgstr ""
++#: assert/assert-perr.c:57
++#, c-format
++msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
++msgstr "%s%s%s£º%u£º%s%sÒâÍâµÄ´íÎó£º%s¡£\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:769
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
+-msgid "Communication error on send"
+-msgstr "·¢ËÍʱ³öÏÖͨѶ´íÎó"
++#: assert/assert.c:56
++#, c-format
++msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
++msgstr "%s%s%s£º%u£º%s%s¶ÏÑÔ¡°%s¡±Ê§°Ü¡£\n"
+
+-#: locale/programs/localedef.c:112
+-msgid "Compile locale specification"
+-msgstr "±àÒëÇøÓò¹æ·¶"
++#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
++msgid "cheese"
++msgstr "ÄÌÀÒ"
+
+-#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+-#: stdio-common/../sysdeps/gnu/errlist.c:632
+-msgid "Computer bought the farm"
+-msgstr ""
++#: intl/tst-gettext2.c:37
++msgid "First string for testing."
++msgstr "µÚÒ»¸öÓÃÓÚ²âÊÔµÄ×Ö·û´®¡£"
+
+-#: elf/ldconfig.c:136
+-msgid "Configure Dynamic Linker Run Time Bindings."
+-msgstr ""
++#: intl/tst-gettext2.c:38
++msgid "Another string for testing."
++msgstr "ÁíÒ»¸ö²âÊÔ×Ö·û´®¡£"
+
+-#. TRANS A remote host refused to allow the network connection (typically because
+-#. TRANS it is not running the requested service).
+-#: stdio-common/../sysdeps/gnu/errlist.c:452
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
+-msgid "Connection refused"
+-msgstr "¾Ü¾øÁ¬½Ó"
++#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
++msgid "NAME"
++msgstr "Ãû³Æ"
+
+-#. TRANS A network connection was closed for reasons outside the control of the
+-#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
+-#. TRANS protocol violation.
+-#: stdio-common/../sysdeps/gnu/errlist.c:402
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
+-msgid "Connection reset by peer"
+-msgstr ""
++#: catgets/gencat.c:112
++msgid "Create C header file NAME containing symbol definitions"
++msgstr "´´½¨º¬ÓзûºÅ¶¨ÒåµÄ¸ø¶¨Ãû³ÆµÄ C Í·Îļþ"
+
+-#. TRANS A socket operation with a specified timeout received no response during
+-#. TRANS the timeout period.
+-#: stdio-common/../sysdeps/gnu/errlist.c:446
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
+-msgid "Connection timed out"
+-msgstr "Á¬½Ó³¬Ê±"
++#: catgets/gencat.c:114
++msgid "Do not use existing catalog, force new output file"
++msgstr "²»Ê¹ÓÃÏÖÓеķÖÀ࣬ǿÖÆ´´½¨ÐÂÊä³öÎļþ"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:45 sysdeps/generic/siglist.h:45
+-msgid "Continued"
+-msgstr ""
++#: catgets/gencat.c:115
++msgid "Write output to file NAME"
++msgstr "½«Êä³öдÈëµ½Ö¸¶¨ÎļþÖÐ"
+
+-#: iconv/iconv_prog.c:73
+-msgid "Convert encoding of given files from one encoding to another."
++#: catgets/gencat.c:120
++msgid ""
++"Generate message catalog. If INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
++"is -, output is written to standard output.\n"
+ msgstr ""
+
+-#: catgets/gencat.c:246 elf/ldconfig.c:259 elf/sprof.c:355
+-#: iconv/iconv_prog.c:393 iconv/iconvconfig.c:335 locale/programs/locale.c:281
+-#: locale/programs/localedef.c:311 nscd/nscd.c:287 nscd/nscd_nischeck.c:90
+-#: nss/getent.c:63 posix/getconf.c:904
+-#, c-format
++#: catgets/gencat.c:125
+ msgid ""
+-"Copyright (C) %s Free Software Foundation, Inc.\n"
+-"This is free software; see the source for copying conditions. There is NO\n"
+-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
++"-o OUTPUT-FILE [INPUT-FILE]...\n"
++"[OUTPUT-FILE [INPUT-FILE]...]"
+ msgstr ""
++"-o Êä³öÎļþ [ÊäÈëÎļþ]...\n"
++"[Êä³öÎļþ [ÊäÈëÎļþ]...]"
+
+-#: nscd/nscd_conf.c:166
+-#, c-format
+-msgid "Could not create log file \"%s\""
+-msgstr "ÎÞ·¨´´½¨ÈÕÖ¾Îļþ¡°%s¡±"
++#: catgets/gencat.c:282
++msgid "*standard input*"
++msgstr "*±ê×¼ÊäÈë*"
+
+-#: catgets/gencat.c:112
+-msgid "Create C header file NAME containing symbol definitions"
+-msgstr ""
++#: catgets/gencat.c:417 catgets/gencat.c:494
++msgid "illegal set number"
++msgstr "·Ç·¨µÄ¼¯ºÏ±àºÅ"
+
+-#: iconv/iconvconfig.c:110
+-msgid "Create fastloading iconv module configuration file."
+-msgstr "´´½¨¿ìËÙ×°Èë iconv Ä£¿éÅäÖÃÎļþ¡£"
++#: catgets/gencat.c:444
++msgid "duplicate set definition"
++msgstr "Öظ´µÄ¼¯ºÏ¶¨Òå"
+
+-#: locale/programs/localedef.c:102
+-msgid "Create old-style tables"
+-msgstr "´´½¨¾É·ç¸ñ±í¸ñ"
++#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
++msgid "this is the first definition"
++msgstr "ÕâÊǵÚÒ»¸ö¶¨Òå"
+
+-#: locale/programs/localedef.c:101
+-msgid "Create output even if warning messages were issued"
+-msgstr "¼´Ê¹³öÏÖ¾¯¸æÏûÏ¢Ò²´´½¨Êä³ö"
++#: catgets/gencat.c:522
++#, c-format
++msgid "unknown set `%s'"
++msgstr "δ֪¼¯ºÏ¡°%s¡±"
+
+-#: nis/nis_print.c:329
++#: catgets/gencat.c:563
++msgid "invalid quote character"
++msgstr "ÎÞЧµÄÒýÓÃ×Ö·û"
++
++#: catgets/gencat.c:576
+ #, c-format
+-msgid "Creation Time : %s"
+-msgstr "´´½¨Ê±¼ä£º%s"
++msgid "unknown directive `%s': line ignored"
++msgstr "δ֪µÄÖ¸Áî¡°%s¡±£ººöÂÔ´ËÐÐ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
+-msgid "Cross-device link"
+-msgstr "¿çÉ豸Á¬½Ó"
++#: catgets/gencat.c:621
++msgid "duplicated message number"
++msgstr "Öظ´µÄÏûÏ¢±àºÅ"
+
+-#: malloc/memusagestat.c:67
+-msgid "DATAFILE [OUTFILE]"
+-msgstr "Êý¾ÝÎļþ [Êä³öÎļþ]"
++#: catgets/gencat.c:674
++msgid "duplicated message identifier"
++msgstr "Öظ´µÄÏûÏ¢±êʶ·û"
+
+-#: nis/nss_nisplus/nisplus-publickey.c:96
+-#: nis/nss_nisplus/nisplus-publickey.c:172
+-#, c-format
+-msgid "DES entry for netname %s not unique\n"
+-msgstr ""
++#: catgets/gencat.c:731
++msgid "invalid character: message ignored"
++msgstr "ÎÞЧµÄ×Ö·û£ººöÂÔÏûÏ¢"
+
+-#: nis/nis_print.c:115
+-msgid "DIRECTORY\n"
+-msgstr "Ŀ¼\n"
++#: catgets/gencat.c:774
++msgid "invalid line"
++msgstr "ÎÞЧµÄÐÐ"
+
+-#: elf/dl-deps.c:101 elf/dl-open.c:188
+-msgid "DST not allowed in SUID/SGID programs"
++#: catgets/gencat.c:828
++msgid "malformed line ignored"
+ msgstr ""
+
+-#: elf/dl-error.c:71
+-msgid "DYNAMIC LINKER BUG!!!"
+-msgstr ""
++#: catgets/gencat.c:992 catgets/gencat.c:1033
++#, c-format
++msgid "cannot open output file `%s'"
++msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ¡°%s¡±"
+
+-#: nis/nis_error.c:52
+-msgid "Database for table does not exist"
+-msgstr "±í¸ñÊý¾Ý¿â²»´æÔÚ"
++#: catgets/gencat.c:1217
++msgid "unterminated message"
++msgstr "δÖÕÖ¹µÄÏûÏ¢"
+
+-#: nis/ypclnt.c:820
+-msgid "Database is busy"
+-msgstr "Êý¾Ý¿âæ"
++#: catgets/gencat.c:1241
++msgid "while opening old catalog file"
++msgstr "ÔÚ´ò¿ª¾É·ÖÀàÎļþʱ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
+-msgid "Deadlock situation detected/avoided"
+-msgstr ""
+-
+-#: nis/nis_print.c:229
+-msgid "Default Access rights :\n"
+-msgstr "ĬÈÏ·ÃÎÊȨÏÞ £º\n"
+-
+-#. TRANS No default destination address was set for the socket. You get this
+-#. TRANS error when you try to transmit data over a connectionless socket,
+-#. TRANS without first specifying a destination for the data with @code{connect}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:430
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
+-msgid "Destination address required"
+-msgstr "ÐèҪĿ±êµØÖ·"
+-
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
+-msgid "Device busy"
+-msgstr "É豸æ"
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:669
+-msgid "Device not a stream"
+-msgstr "É豸²»ÊÇÁ÷"
+-
+-#. TRANS Resource busy; a system resource that can't be shared is already in use.
+-#. TRANS For example, if you try to delete a file that is the root of a currently
+-#. TRANS mounted filesystem, you get this error.
+-#: stdio-common/../sysdeps/gnu/errlist.c:129
+-msgid "Device or resource busy"
+-msgstr "É豸»ò×ÊԴæ"
+-
+-#: nis/nis_print.c:183
+-#, c-format
+-msgid "Diffie-Hellmann (%d bits)\n"
+-msgstr ""
+-
+-#: nis/nis_print.c:321
+-#, c-format
+-msgid "Directory : %s\n"
+-msgstr "Ŀ¼ £º%s\n"
+-
+-#. TRANS Directory not empty, where an empty directory was expected. Typically,
+-#. TRANS this error occurs when you are trying to delete a directory.
+-#: stdio-common/../sysdeps/gnu/errlist.c:481
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
+-msgid "Directory not empty"
+-msgstr "Ŀ¼·Ç¿Õ"
+-
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
+-msgid "Disc quota exceeded"
+-msgstr "³¬³ö´ÅÅÌÏÞ¶î"
+-
+-#. TRANS The user's disk quota was exceeded.
+-#: stdio-common/../sysdeps/gnu/errlist.c:499
+-msgid "Disk quota exceeded"
+-msgstr "³¬³ö´ÅÅÌÏÞ¶î"
+-
+-#: nscd/nscd.c:86
+-msgid "Do not fork and display messages on the current tty"
+-msgstr ""
+-
+-#: catgets/gencat.c:114
+-msgid "Do not use existing catalog, force new output file"
+-msgstr ""
+-
+-#: nis/ypclnt.c:866
+-msgid "Domain not bound"
+-msgstr "δ°ó¶¨Óò"
++#: catgets/gencat.c:1332
++msgid "conversion modules not available"
++msgstr "ת»»Ä£¿é²»¿ÉÓÃ"
+
+-#: elf/ldconfig.c:124
+-msgid "Don't build cache"
+-msgstr "²»Òª´´½¨»º³åÇø"
++#: catgets/gencat.c:1358
++msgid "cannot determine escape character"
++msgstr "ÎÞ·¨È·¶¨×ªÒå×Ö·û"
+
+-#: elf/ldconfig.c:125
+-msgid "Don't generate links"
+-msgstr "²»ÒªÉú³ÉÁ¬½Ó"
++#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
++msgid "makecontext: does not know how to handle more than 8 arguments\n"
++msgstr "makecontext£º²»ÖªµÀ¸ÃÈçºÎ´¦Àí¶àÓÚ 8 ¸ö²ÎÊýµÄÇé¿ö\n"
+
+-#: debug/pcprofiledump.c:56
+-msgid "Dump information generated by PC profiling."
+-msgstr ""
++#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
++#: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
++msgid "Success"
++msgstr "³É¹¦"
+
+-#: elf/dl-load.c:1293
+-msgid "ELF file ABI version invalid"
+-msgstr ""
++#. TRANS Operation not permitted; only the owner of the file (or other resource)
++#. TRANS or processes with special privileges can perform the operation.
++#: stdio-common/../sysdeps/gnu/errlist.c:17
++msgid "Operation not permitted"
++msgstr "²»ÔÊÐíµÄ²Ù×÷"
+
+-#: elf/dl-load.c:1290
+-msgid "ELF file OS ABI invalid"
+-msgstr ""
++#. TRANS No such file or directory. This is a ``file doesn't exist'' error
++#. TRANS for ordinary files that are referenced in contexts where they are
++#. TRANS expected to already exist.
++#: stdio-common/../sysdeps/gnu/errlist.c:28
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
++msgid "No such file or directory"
++msgstr "ûÓÐÄǸöÎļþ»òĿ¼"
+
+-#: elf/dl-load.c:1299
+-msgid "ELF file version does not match current one"
+-msgstr "ELF Îļþ°æ±¾Ó뵱ǰ°æ±¾²»Æ¥Åä"
++#. TRANS No process matches the specified process ID.
++#: stdio-common/../sysdeps/gnu/errlist.c:37
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
++msgid "No such process"
++msgstr "ûÓÐÄǸö½ø³Ì"
+
+-#: elf/dl-load.c:1286
+-msgid "ELF file version ident does not match current one"
+-msgstr ""
++#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
++#. TRANS completion of the call. When this happens, you should try the call
++#. TRANS again.
++#. TRANS
++#. TRANS You can choose to have functions resume after a signal that is handled,
++#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
++#. TRANS Primitives}.
++#: stdio-common/../sysdeps/gnu/errlist.c:52
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
++msgid "Interrupted system call"
++msgstr "±»ÖжϵÄϵͳµ÷ÓÃ"
+
+-#: elf/dl-load.c:1305
+-msgid "ELF file's phentsize not the expected size"
+-msgstr ""
++#. TRANS Input/output error; usually used for physical read or write errors.
++#: stdio-common/../sysdeps/gnu/errlist.c:61
++msgid "Input/output error"
++msgstr "ÊäÈë/Êä³ö´íÎó"
+
+-#: elf/dl-load.c:884
+-msgid "ELF load command address/offset not properly aligned"
+-msgstr "ELF ×°ÈëÃüÁîµÄµØÖ·/Æ«ÒÆÁ¿Ã»ÓÐÕýÈ·µØ¶ÔÆë"
++#. TRANS No such device or address. The system tried to use the device
++#. TRANS represented by a file you specified, and it couldn't find the device.
++#. TRANS This can mean that the device file was installed incorrectly, or that
++#. TRANS the physical device is missing or not correctly attached to the
++#. TRANS computer.
++#: stdio-common/../sysdeps/gnu/errlist.c:74
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
++msgid "No such device or address"
++msgstr "ûÓÐÄǸöÉ豸»òµØÖ·"
+
+-#: elf/dl-load.c:881
+-msgid "ELF load command alignment not page-aligned"
+-msgstr ""
++#. TRANS Argument list too long; used when the arguments passed to a new program
++#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
++#. TRANS File}) occupy too much memory space. This condition never arises in the
++#. TRANS GNU system.
++#: stdio-common/../sysdeps/gnu/errlist.c:86
++msgid "Argument list too long"
++msgstr "²ÎÊýÁбí¹ý³¤"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:33 sysdeps/generic/siglist.h:60
+-msgid "EMT trap"
+-msgstr ""
++#. TRANS Invalid executable file format. This condition is detected by the
++#. TRANS @code{exec} functions; see @ref{Executing a File}.
++#: stdio-common/../sysdeps/gnu/errlist.c:96
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
++msgid "Exec format error"
++msgstr "¿ÉÖ´ÐÐÎļþ¸ñʽ´íÎó"
+
+-#: nis/nis_print.c:124
+-msgid "ENTRY\n"
+-msgstr ""
++#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
++#. TRANS closed or reading from a descriptor open only for writing (or vice
++#. TRANS versa).
++#: stdio-common/../sysdeps/gnu/errlist.c:107
++msgid "Bad file descriptor"
++msgstr "´íÎóµÄÎļþÃèÊö·û"
+
+-#: nis/nis_print.c:303
+-msgid "Encrypted data\n"
+-msgstr "ÒѼÓÃܵÄÊý¾Ý\n"
++#. TRANS There are no child processes. This error happens on operations that are
++#. TRANS supposed to manipulate child processes, when there aren't any processes
++#. TRANS to manipulate.
++#: stdio-common/../sysdeps/gnu/errlist.c:118
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
++msgid "No child processes"
++msgstr "ûÓÐ×Ó½ø³Ì"
+
+-#: nis/nis_error.c:53
+-msgid "Entry/table type mismatch"
+-msgstr "ÌõÄ¿/±í¸ñÀàÐͲ»Æ¥Åä"
++#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
++#. TRANS deadlock situation. The system does not guarantee that it will notice
++#. TRANS all such situations. This error means you got lucky and the system
++#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
++#: stdio-common/../sysdeps/gnu/errlist.c:130
++msgid "Resource deadlock avoided"
++msgstr "ÒѱÜÃâ×ÊÔ´ËÀËø"
+
+-#: nss/getent.c:127 nss/getent.c:292
+-#, c-format
+-msgid "Enumeration not supported on %s\n"
+-msgstr ""
++#. TRANS No memory available. The system cannot allocate more virtual memory
++#. TRANS because its capacity is full.
++#: stdio-common/../sysdeps/gnu/errlist.c:140
++msgid "Cannot allocate memory"
++msgstr "ÎÞ·¨·ÖÅäÄÚ´æ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
+-msgid "Error 0"
+-msgstr "´íÎó 0"
++#. TRANS Permission denied; the file permissions do not allow the attempted operation.
++#: stdio-common/../sysdeps/gnu/errlist.c:149
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
++#: nis/nis_error.c:39 nis/ypclnt.c:817
++msgid "Permission denied"
++msgstr "ȨÏÞ²»¹»"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
+-msgid "Error 100"
+-msgstr "´íÎó 100"
++#. TRANS Bad address; an invalid pointer was detected.
++#. TRANS In the GNU system, this error never happens; you get a signal instead.
++#: stdio-common/../sysdeps/gnu/errlist.c:159
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
++msgid "Bad address"
++msgstr "´íÎóµÄµØÖ·"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
+-msgid "Error 101"
+-msgstr "´íÎó 101"
++#. TRANS A file that isn't a block special file was given in a situation that
++#. TRANS requires one. For example, trying to mount an ordinary file as a file
++#. TRANS system in Unix gives this error.
++#: stdio-common/../sysdeps/gnu/errlist.c:170
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
++msgid "Block device required"
++msgstr "ÐèÒª¿éÉ豸"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
+-msgid "Error 102"
+-msgstr "´íÎó 102"
++#. TRANS Resource busy; a system resource that can't be shared is already in use.
++#. TRANS For example, if you try to delete a file that is the root of a currently
++#. TRANS mounted filesystem, you get this error.
++#: stdio-common/../sysdeps/gnu/errlist.c:181
++msgid "Device or resource busy"
++msgstr "É豸»ò×ÊԴæ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
+-msgid "Error 103"
+-msgstr "´íÎó 103"
++#. TRANS File exists; an existing file was specified in a context where it only
++#. TRANS makes sense to specify a new file.
++#: stdio-common/../sysdeps/gnu/errlist.c:191
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
++msgid "File exists"
++msgstr "ÎļþÒÑ´æÔÚ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
+-msgid "Error 104"
+-msgstr "´íÎó 104"
++#. TRANS An attempt to make an improper link across file systems was detected.
++#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
++#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
++#: stdio-common/../sysdeps/gnu/errlist.c:202
++msgid "Invalid cross-device link"
++msgstr "ÎÞЧµÄ¿çÉ豸Á¬½Ó"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
+-msgid "Error 105"
+-msgstr "´íÎó 105"
++#. TRANS The wrong type of device was given to a function that expects a
++#. TRANS particular sort of device.
++#: stdio-common/../sysdeps/gnu/errlist.c:212
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
++msgid "No such device"
++msgstr "ûÓÐÄǸöÉ豸"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
+-msgid "Error 106"
+-msgstr "´íÎó 106"
++#. TRANS A file that isn't a directory was specified when a directory is required.
++#: stdio-common/../sysdeps/gnu/errlist.c:221
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
++msgid "Not a directory"
++msgstr "²»ÊÇĿ¼"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
+-msgid "Error 107"
+-msgstr "´íÎó 107"
++#. TRANS File is a directory; you cannot open a directory for writing,
++#. TRANS or create or remove hard links to it.
++#: stdio-common/../sysdeps/gnu/errlist.c:231
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
++msgid "Is a directory"
++msgstr "ÊÇÒ»¸öĿ¼"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
+-msgid "Error 108"
+-msgstr "´íÎó 108"
++#. TRANS Invalid argument. This is used to indicate various kinds of problems
++#. TRANS with passing the wrong argument to a library function.
++#: stdio-common/../sysdeps/gnu/errlist.c:241
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
++msgid "Invalid argument"
++msgstr "ÎÞЧµÄ²ÎÊý"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
+-msgid "Error 109"
+-msgstr "´íÎó 109"
++#. TRANS The current process has too many files open and can't open any more.
++#. TRANS Duplicate descriptors do count toward this limit.
++#. TRANS
++#. TRANS In BSD and GNU, the number of open files is controlled by a resource
++#. TRANS limit that can usually be increased. If you get this error, you might
++#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
++#. TRANS @pxref{Limits on Resources}.
++#: stdio-common/../sysdeps/gnu/errlist.c:256
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
++msgid "Too many open files"
++msgstr "´ò¿ªµÄÎļþ¹ý¶à"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
+-msgid "Error 110"
+-msgstr "´íÎó 110"
++#. TRANS There are too many distinct file openings in the entire system. Note
++#. TRANS that any number of linked channels count as just one file opening; see
++#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
++#: stdio-common/../sysdeps/gnu/errlist.c:267
++msgid "Too many open files in system"
++msgstr "ϵͳÖдò¿ªµÄÎļþ¹ý¶à"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
+-msgid "Error 111"
+-msgstr "´íÎó 111"
++#. TRANS Inappropriate I/O control operation, such as trying to set terminal
++#. TRANS modes on an ordinary file.
++#: stdio-common/../sysdeps/gnu/errlist.c:277
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
++msgid "Inappropriate ioctl for device"
++msgstr "¶ÔÉ豸²»Êʵ±µÄ ioctl ²Ù×÷"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
+-msgid "Error 112"
+-msgstr "´íÎó 112"
++#. TRANS An attempt to execute a file that is currently open for writing, or
++#. TRANS write to a file that is currently being executed. Often using a
++#. TRANS debugger to run a program is considered having it open for writing and
++#. TRANS will cause this error. (The name stands for ``text file busy''.) This
++#. TRANS is not an error in the GNU system; the text is copied as necessary.
++#: stdio-common/../sysdeps/gnu/errlist.c:290
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
++msgid "Text file busy"
++msgstr "Îı¾Îļþæ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
+-msgid "Error 113"
+-msgstr "´íÎó 113"
++#. TRANS File too big; the size of a file would be larger than allowed by the system.
++#: stdio-common/../sysdeps/gnu/errlist.c:299
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
++msgid "File too large"
++msgstr "Îļþ¹ý´ó"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
+-msgid "Error 114"
+-msgstr "´íÎó 114"
++#. TRANS No space left on device; write operation on a file failed because the
++#. TRANS disk is full.
++#: stdio-common/../sysdeps/gnu/errlist.c:309
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
++msgid "No space left on device"
++msgstr "É豸ÉÏûÓпռä"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
+-msgid "Error 115"
+-msgstr "´íÎó 115"
++#. TRANS Invalid seek operation (such as on a pipe).
++#: stdio-common/../sysdeps/gnu/errlist.c:318
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
++msgid "Illegal seek"
++msgstr "·Ç·¨ seek ²Ù×÷"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
+-msgid "Error 116"
+-msgstr "´íÎó 116"
++#. TRANS An attempt was made to modify something on a read-only file system.
++#: stdio-common/../sysdeps/gnu/errlist.c:327
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
++msgid "Read-only file system"
++msgstr "Ö»¶ÁÎļþϵͳ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
+-msgid "Error 117"
+-msgstr "´íÎó 117"
++#. TRANS Too many links; the link count of a single file would become too large.
++#. TRANS @code{rename} can cause this error if the file being renamed already has
++#. TRANS as many links as it can take (@pxref{Renaming Files}).
++#: stdio-common/../sysdeps/gnu/errlist.c:338
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
++msgid "Too many links"
++msgstr "¹ý¶àµÄÁ¬½Ó"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
+-msgid "Error 118"
+-msgstr "´íÎó 118"
++#. TRANS Domain error; used by mathematical functions when an argument value does
++#. TRANS not fall into the domain over which the function is defined.
++#: stdio-common/../sysdeps/gnu/errlist.c:361
++msgid "Numerical argument out of domain"
++msgstr "ÊýÖµ²ÎÊý³¬³öÓò"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
+-msgid "Error 119"
+-msgstr "´íÎó 119"
++#. TRANS Range error; used by mathematical functions when the result value is
++#. TRANS not representable because of overflow or underflow.
++#: stdio-common/../sysdeps/gnu/errlist.c:371
++msgid "Numerical result out of range"
++msgstr "ÊýÖµ½á¹û³¬³ö·¶Î§"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
+-msgid "Error 136"
+-msgstr "´íÎó 136"
++#. TRANS Resource temporarily unavailable; the call might work if you try again
++#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
++#. TRANS they are always the same in the GNU C library.
++#. TRANS
++#. TRANS This error can happen in a few different situations:
++#. TRANS
++#. TRANS @itemize @bullet
++#. TRANS @item
++#. TRANS An operation that would block was attempted on an object that has
++#. TRANS non-blocking mode selected. Trying the same operation again will block
++#. TRANS until some external condition makes it possible to read, write, or
++#. TRANS connect (whatever the operation). You can use @code{select} to find out
++#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
++#. TRANS
++#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
++#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
++#. TRANS different from @code{EAGAIN}. To make your program portable, you should
++#. TRANS check for both codes and treat them the same.
++#. TRANS
++#. TRANS @item
++#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
++#. TRANS can return this error. It indicates that the shortage is expected to
++#. TRANS pass, so your program can try the call again later and it may succeed.
++#. TRANS It is probably a good idea to delay for a few seconds before trying it
++#. TRANS again, to allow time for other processes to release scarce resources.
++#. TRANS Such shortages are usually fairly serious and affect the whole system,
++#. TRANS so usually an interactive program should report the error to the user
++#. TRANS and return to its command loop.
++#. TRANS @end itemize
++#: stdio-common/../sysdeps/gnu/errlist.c:408
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
++msgid "Resource temporarily unavailable"
++msgstr "×ÊÔ´ÔÝʱ²»¿ÉÓÃ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
+-msgid "Error 142"
+-msgstr "´íÎó 142"
++#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
++#. TRANS The values are always the same, on every operating system.
++#. TRANS
++#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
++#. TRANS separate error code.
++#: stdio-common/../sysdeps/gnu/errlist.c:421
++msgid "Operation would block"
++msgstr "²Ù×÷½«×èÈû"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
+-msgid "Error 58"
+-msgstr "´íÎó 58"
++#. TRANS An operation that cannot complete immediately was initiated on an object
++#. TRANS that has non-blocking mode selected. Some functions that must always
++#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
++#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
++#. TRANS the operation has begun and will take some time. Attempts to manipulate
++#. TRANS the object before the call completes return @code{EALREADY}. You can
++#. TRANS use the @code{select} function to find out when the pending operation
++#. TRANS has completed; @pxref{Waiting for I/O}.
++#: stdio-common/../sysdeps/gnu/errlist.c:437
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
++msgid "Operation now in progress"
++msgstr "²Ù×÷ÏÖÔÚÕýÔÚ½øÐÐ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
+-msgid "Error 59"
+-msgstr "´íÎó 59"
++#. TRANS An operation is already in progress on an object that has non-blocking
++#. TRANS mode selected.
++#: stdio-common/../sysdeps/gnu/errlist.c:447
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
++msgid "Operation already in progress"
++msgstr "²Ù×÷ÒѾ­ÔÚ½øÐÐ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
+-msgid "Error 72"
+-msgstr "´íÎó 72"
++#. TRANS A file that isn't a socket was specified when a socket is required.
++#: stdio-common/../sysdeps/gnu/errlist.c:456
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
++msgid "Socket operation on non-socket"
++msgstr "¶Ô·ÇÌ×½Ó×Ö½øÐÐÌ×½Ó×Ö²Ù×÷"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
+-msgid "Error 73"
+-msgstr "´íÎó 73"
++#. TRANS The size of a message sent on a socket was larger than the supported
++#. TRANS maximum size.
++#: stdio-common/../sysdeps/gnu/errlist.c:466
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
++msgid "Message too long"
++msgstr "ÏûÏ¢¹ý³¤"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
+-msgid "Error 75"
+-msgstr "´íÎó 75"
++#. TRANS The socket type does not support the requested communications protocol.
++#: stdio-common/../sysdeps/gnu/errlist.c:475
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
++msgid "Protocol wrong type for socket"
++msgstr "´íÎóµÄ socket ЭÒéÀàÐÍ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
+-msgid "Error 76"
+-msgstr "´íÎó 76"
++#. TRANS You specified a socket option that doesn't make sense for the
++#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
++#: stdio-common/../sysdeps/gnu/errlist.c:485
++msgid "Protocol not available"
++msgstr "²»¿ÉÓõÄЭÒé"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
+-msgid "Error 91"
+-msgstr "´íÎó 91"
++#. TRANS The socket domain does not support the requested communications protocol
++#. TRANS (perhaps because the requested protocol is completely invalid).
++#. TRANS @xref{Creating a Socket}.
++#: stdio-common/../sysdeps/gnu/errlist.c:496
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
++msgid "Protocol not supported"
++msgstr "²»Ö§³ÖµÄЭÒé"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
+-msgid "Error 92"
+-msgstr "´íÎó 92"
++#. TRANS The socket type is not supported.
++#: stdio-common/../sysdeps/gnu/errlist.c:505
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
++msgid "Socket type not supported"
++msgstr "²»Ö§³ÖµÄÌ×½Ó×ÖÀàÐÍ"
+
+-#: nis/nis_error.c:57
+-msgid "Error in RPC subsystem"
+-msgstr "RPC ×ÓϵͳÖгö´í"
++#. TRANS The operation you requested is not supported. Some socket functions
++#. TRANS don't make sense for all types of sockets, and others may not be
++#. TRANS implemented for all communications protocols. In the GNU system, this
++#. TRANS error can happen for many calls when the object does not support the
++#. TRANS particular operation; it is a generic indication that the server knows
++#. TRANS nothing to do for that call.
++#: stdio-common/../sysdeps/gnu/errlist.c:519
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
++msgid "Operation not supported"
++msgstr "²»Ö§³ÖµÄ²Ù×÷"
+
+-#: nis/nis_error.c:67
+-msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
+-msgstr "·ÃÎÊ NIS+ ÀäÆô¶¯Îļþ³ö´í¡£NIS+ °²×°ÁËÂð£¿"
++#. TRANS The socket communications protocol family you requested is not supported.
++#: stdio-common/../sysdeps/gnu/errlist.c:528
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
++msgid "Protocol family not supported"
++msgstr "²»Ö§³ÖµÄЭÒé×å"
+
+-#: string/../sysdeps/mach/_strerror.c:58
+-#: sysdeps/mach/hurd/mips/dl-machine.c:68
+-msgid "Error in unknown error system: "
+-msgstr "δ֪µÄ´íÎóϵͳÖгö´í£º"
++#. TRANS The address family specified for a socket is not supported; it is
++#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
++#: stdio-common/../sysdeps/gnu/errlist.c:538
++msgid "Address family not supported by protocol"
++msgstr "ЭÒé²»Ö§³ÖµÄµØÖ·×å"
+
+-#: nis/nis_error.c:60
+-msgid "Error while talking to callback proc"
+-msgstr "Óë»Øµ÷º¯Êý½»»¥Ê±³ö´í"
++#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
++#: stdio-common/../sysdeps/gnu/errlist.c:547
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
++msgid "Address already in use"
++msgstr "µØÖ·ÒÑÔÚʹÓÃ"
+
+-#: timezone/zdump.c:268
+-msgid "Error writing standard output"
+-msgstr "дÈë±ê×¼Êä³ö³ö´í"
++#. TRANS The requested socket address is not available; for example, you tried
++#. TRANS to give a socket a name that doesn't match the local host name.
++#. TRANS @xref{Socket Addresses}.
++#: stdio-common/../sysdeps/gnu/errlist.c:558
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
++msgid "Cannot assign requested address"
++msgstr "ÎÞ·¨Ö¸¶¨±»ÇëÇóµÄµØÖ·"
+
+-#: inet/ruserpass.c:184
+-msgid "Error: .netrc file is readable by others."
+-msgstr "´íÎó£º.netrc ¶ÔÆäËüÈËÊǿɶÁµÄ¡£"
++#. TRANS A socket operation failed because the network was down.
++#: stdio-common/../sysdeps/gnu/errlist.c:567
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
++msgid "Network is down"
++msgstr "ÍøÂçÒѹرÕ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:729
+-msgid "Exchange full"
+-msgstr ""
++#. TRANS A socket operation failed because the subnet containing the remote host
++#. TRANS was unreachable.
++#: stdio-common/../sysdeps/gnu/errlist.c:577
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
++msgid "Network is unreachable"
++msgstr "ÍøÂç²»¿É´ï"
+
+-#. TRANS Invalid executable file format. This condition is detected by the
+-#. TRANS @code{exec} functions; see @ref{Executing a File}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:76
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
+-msgid "Exec format error"
+-msgstr "¿ÉÖ´ÐÐÎļþ¸ñʽ´íÎó"
++#. TRANS A network connection was reset because the remote host crashed.
++#: stdio-common/../sysdeps/gnu/errlist.c:586
++msgid "Network dropped connection on reset"
++msgstr "ÖØÖÃʱ¶Ï¿ªÍøÂçÁ¬½Ó"
+
+-#: locale/programs/localedef.c:190
+-msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
+-msgstr "ÖÂÃü´íÎó£ºÏµÍ³Î´¶¨Òå¡°_POSIX2_LOCALEDEF¡±"
++#. TRANS A network connection was aborted locally.
++#: stdio-common/../sysdeps/gnu/errlist.c:595
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
++msgid "Software caused connection abort"
++msgstr "ÓÉÈí¼þµ¼ÖµÄÁ¬½Ó¶Ï¿ª"
+
+-#: locale/programs/localedef.c:97
+-msgid "FILE contains mapping from symbolic names to UCS4 values"
++#. TRANS A network connection was closed for reasons outside the control of the
++#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
++#. TRANS protocol violation.
++#: stdio-common/../sysdeps/gnu/errlist.c:606
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
++msgid "Connection reset by peer"
+ msgstr ""
+
+-#: sunrpc/clnt_perr.c:381
+-msgid "Failed (unspecified error)"
+-msgstr "ʧ°Ü (δָÃ÷µÄ´íÎó)"
++#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
++#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
++#. TRANS other from network operations.
++#: stdio-common/../sysdeps/gnu/errlist.c:617
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
++msgid "No buffer space available"
++msgstr "ûÓпÉÓõĻº³åÇø¿Õ¼ä"
+
+-#: nscd/nscd.c:400
+-#, c-format
+-msgid "Failed to look up user '%s' to run server as"
+-msgstr ""
++#. TRANS You tried to connect a socket that is already connected.
++#. TRANS @xref{Connecting}.
++#: stdio-common/../sysdeps/gnu/errlist.c:627
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
++msgid "Transport endpoint is already connected"
++msgstr "´«Êä¶ËµãÒÑÁ¬½Ó"
+
+-#: elf/readlib.c:109
+-#, c-format
+-msgid "File %s is too small, not checked."
+-msgstr "Îļþ %s ¹ýС£¬Î´¼ì²é¡£"
++#. TRANS The socket is not connected to anything. You get this error when you
++#. TRANS try to transmit data over a socket, without first specifying a
++#. TRANS destination for the data. For a connectionless socket (for datagram
++#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
++#: stdio-common/../sysdeps/gnu/errlist.c:639
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
++msgid "Transport endpoint is not connected"
++msgstr "´«Êä¶ËµãÉÐδÁ¬½Ó"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:781
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
+-msgid "File descriptor in bad state"
+-msgstr "ÎļþÃèÊö·û´¦ÓÚ´íÎó״̬"
++#. TRANS No default destination address was set for the socket. You get this
++#. TRANS error when you try to transmit data over a connectionless socket,
++#. TRANS without first specifying a destination for the data with @code{connect}.
++#: stdio-common/../sysdeps/gnu/errlist.c:650
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
++msgid "Destination address required"
++msgstr "ÐèҪĿ±êµØÖ·"
+
+-#. TRANS File exists; an existing file was specified in a context where it only
+-#. TRANS makes sense to specify a new file.
+-#: stdio-common/../sysdeps/gnu/errlist.c:135
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
+-msgid "File exists"
+-msgstr "ÎļþÒÑ´æÔÚ"
++#. TRANS The socket has already been shut down.
++#: stdio-common/../sysdeps/gnu/errlist.c:659
++msgid "Cannot send after transport endpoint shutdown"
++msgstr "ÎÞ·¨ÔÚ´«Êä¶Ëµã¹Ø±ÕÒÔºó·¢ËÍ"
+
+-#: elf/cache.c:147 elf/cache.c:157
+-msgid "File is not a cache file.\n"
+-msgstr "Îļþ²»ÊÇ»º³åÇøÎļþ¡£\n"
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:668
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
++msgid "Too many references: cannot splice"
++msgstr "¹ý¶àµÄÒýÓãºÎÞ·¨½ÓºÏ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
+-msgid "File locking deadlock"
+-msgstr "ÎļþËøËÀËø"
++#. TRANS A socket operation with a specified timeout received no response during
++#. TRANS the timeout period.
++#: stdio-common/../sysdeps/gnu/errlist.c:678
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
++msgid "Connection timed out"
++msgstr "Á¬½Ó³¬Ê±"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:745
+-msgid "File locking deadlock error"
+-msgstr "ÎļþËøËÀËø´íÎó"
++#. TRANS A remote host refused to allow the network connection (typically because
++#. TRANS it is not running the requested service).
++#: stdio-common/../sysdeps/gnu/errlist.c:688
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
++msgid "Connection refused"
++msgstr "¾Ü¾øÁ¬½Ó"
++
++#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
++#. TRANS This often indicates a cycle of symbolic links.
++#: stdio-common/../sysdeps/gnu/errlist.c:698
++msgid "Too many levels of symbolic links"
++msgstr "·ûºÅÁ¬½ÓµÄ²ãÊý¹ý¶à"
+
+ #. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
+ #. TRANS Files}) or host name too long (in @code{gethostname} or
+ #. TRANS @code{sethostname}; @pxref{Host Identification}).
+-#: stdio-common/../sysdeps/gnu/errlist.c:465
++#: stdio-common/../sysdeps/gnu/errlist.c:709
+ #: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
+ msgid "File name too long"
+ msgstr "ÎļþÃû¹ý³¤"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:51 sysdeps/generic/siglist.h:51
+-msgid "File size limit exceeded"
+-msgstr "Îļþ´óС³¬³öÏÞÖÆ"
++#. TRANS The remote host for a requested network connection is down.
++#: stdio-common/../sysdeps/gnu/errlist.c:718
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
++msgid "Host is down"
++msgstr "Ö÷»ú¹Ø±Õ"
++
++#. TRANS The remote host for a requested network connection is not reachable.
++#: stdio-common/../sysdeps/gnu/errlist.c:727
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
++msgid "No route to host"
++msgstr "ûÓе½Ö÷»úµÄ·ÓÉ"
++
++#. TRANS Directory not empty, where an empty directory was expected. Typically,
++#. TRANS this error occurs when you are trying to delete a directory.
++#: stdio-common/../sysdeps/gnu/errlist.c:737
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
++msgid "Directory not empty"
++msgstr "Ŀ¼·Ç¿Õ"
++
++#. TRANS This means that the per-user limit on new process would be exceeded by
++#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
++#. TRANS the @code{RLIMIT_NPROC} limit.
++#: stdio-common/../sysdeps/gnu/errlist.c:748
++msgid "Too many processes"
++msgstr "½ø³Ì¹ý¶à"
++
++#. TRANS The file quota system is confused because there are too many users.
++#. TRANS @c This can probably happen in a GNU system when using NFS.
++#: stdio-common/../sysdeps/gnu/errlist.c:758
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
++msgid "Too many users"
++msgstr "Óû§¹ý¶à"
++
++#. TRANS The user's disk quota was exceeded.
++#: stdio-common/../sysdeps/gnu/errlist.c:767
++msgid "Disk quota exceeded"
++msgstr "³¬³ö´ÅÅÌÏÞ¶î"
++
++#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
++#. TRANS system which is due to file system rearrangements on the server host.
++#. TRANS Repairing this condition usually requires unmounting and remounting
++#. TRANS the NFS file system on the local host.
++#: stdio-common/../sysdeps/gnu/errlist.c:779
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
++msgid "Stale NFS file handle"
++msgstr ""
++
++#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
++#. TRANS already specifies an NFS-mounted file.
++#. TRANS (This is an error on some operating systems, but we expect it to work
++#. TRANS properly on the GNU system, making this error code impossible.)
++#: stdio-common/../sysdeps/gnu/errlist.c:791
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
++msgid "Object is remote"
++msgstr "¶ÔÏóÊÇÔ¶³ÌµÄ"
++
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:800
++msgid "RPC struct is bad"
++msgstr "RPC ½á¹¹´íÎó"
++
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:809
++msgid "RPC version wrong"
++msgstr "RPC °æ±¾´íÎó"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
+-msgid "File table overflow"
+-msgstr "Îļþ±íÒç³ö"
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:818
++msgid "RPC program not available"
++msgstr "RPC ³ÌÐò²»¿ÉÓÃ"
+
+-#. TRANS File too big; the size of a file would be larger than allowed by the system.
+-#: stdio-common/../sysdeps/gnu/errlist.c:203
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
+-msgid "File too large"
+-msgstr "Îļþ¹ý´ó"
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:827
++msgid "RPC program version wrong"
++msgstr "RPC ³ÌÐò°æ±¾´íÎó"
+
+-#: intl/tst-gettext2.c:37
+-msgid "First string for testing."
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:836
++msgid "RPC bad procedure for program"
+ msgstr ""
+
+-#: nis/nis_error.c:38
+-msgid "First/next chain broken"
+-msgstr ""
++#. TRANS No locks available. This is used by the file locking facilities; see
++#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
++#. TRANS it can result from an operation to an NFS server running another
++#. TRANS operating system.
++#: stdio-common/../sysdeps/gnu/errlist.c:848
++msgid "No locks available"
++msgstr "ûÓпÉÓõÄËø"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:34 sysdeps/generic/siglist.h:35
+-msgid "Floating point exception"
+-msgstr "¸¡µãÊýÀýÍâ"
++#. TRANS Inappropriate file type or format. The file was the wrong type for the
++#. TRANS operation, or a data file had the wrong format.
++#. TRANS
++#. TRANS On some systems @code{chmod} returns this error if you try to set the
++#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
++#: stdio-common/../sysdeps/gnu/errlist.c:861
++msgid "Inappropriate file type or format"
++msgstr "²»Êʵ±µÄÎļþÀàÐÍ»ò¸ñʽ"
+
+-#: elf/ldconfig.c:131
+-msgid "Format to use: new, old or compat (default)"
+-msgstr "²ÉÓõĸñʽ£ºÐ¡¢¾É»ò¼æÈÝ(ĬÈÏ)"
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:870
++msgid "Authentication error"
++msgstr "ÈÏÖ¤´íÎó"
+
+-#: nis/nis_error.c:68
+-msgid "Full resync required for directory"
+-msgstr ""
++#. TRANS ???
++#: stdio-common/../sysdeps/gnu/errlist.c:879
++msgid "Need authenticator"
++msgstr "ÐèÒªÈÏÖ¤Æ÷"
+
+ #. TRANS Function not implemented. This indicates that the function called is
+ #. TRANS not implemented at all, either in the C library itself or in the
+ #. TRANS operating system. When you get this error, you can be sure that this
+ #. TRANS particular function will always fail with @code{ENOSYS} unless you
+ #. TRANS install a new version of the C library or the operating system.
+-#: stdio-common/../sysdeps/gnu/errlist.c:576
++#: stdio-common/../sysdeps/gnu/errlist.c:892
+ msgid "Function not implemented"
+ msgstr "º¯ÊýδʵÏÖ"
+
+-#: nis/nis_print.c:118
+-msgid "GROUP\n"
+-msgstr "×é\n"
++#. TRANS Not supported. A function returns this error when certain parameter
++#. TRANS values are valid, but the functionality they request is not available.
++#. TRANS This can mean that the function does not implement a particular command
++#. TRANS or option value or flag bit at all. For functions that operate on some
++#. TRANS object given in a parameter, such as a file descriptor or a port, it
++#. TRANS might instead mean that only @emph{that specific object} (file
++#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
++#. TRANS different file descriptors might support different ranges of parameter
++#. TRANS values.
++#. TRANS
++#. TRANS If the entire function is not available at all in the implementation,
++#. TRANS it returns @code{ENOSYS} instead.
++#: stdio-common/../sysdeps/gnu/errlist.c:912
++msgid "Not supported"
++msgstr "²»Ö§³Ö"
+
+-#: argp/argp-help.c:230
+-#, c-format
+-msgid "Garbage in ARGP_HELP_FMT: %s"
++#. TRANS While decoding a multibyte character the function came along an invalid
++#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
++#: stdio-common/../sysdeps/gnu/errlist.c:922
++msgid "Invalid or incomplete multibyte or wide character"
++msgstr "ÎÞЧ»ò²»ÍêÕûµÄ¶à×Ö½Ú×Ö·û»ò¿í×Ö·û"
++
++#. TRANS In the GNU system, servers supporting the @code{term} protocol return
++#. TRANS this error for certain operations when the caller is not in the
++#. TRANS foreground process group of the terminal. Users do not usually see this
++#. TRANS error because functions such as @code{read} and @code{write} translate
++#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
++#. TRANS for information on process groups and these signals.
++#: stdio-common/../sysdeps/gnu/errlist.c:936
++msgid "Inappropriate operation for background process"
++msgstr "¶Ôºǫ́½ø³ÌµÄ²»Êʵ±²Ù×÷"
++
++#. TRANS In the GNU system, opening a file returns this error when the file is
++#. TRANS translated by a program and the translator program dies while starting
++#. TRANS up, before it has connected to the file.
++#: stdio-common/../sysdeps/gnu/errlist.c:947
++msgid "Translator died"
+ msgstr ""
+
+-#: malloc/memusagestat.c:64
+-msgid "Generate graphic from memory profiling data"
++#. TRANS The experienced user will know what is wrong.
++#. TRANS @c This error code is a joke. Its perror text is part of the joke.
++#. TRANS @c Don't change it.
++#: stdio-common/../sysdeps/gnu/errlist.c:958
++msgid "?"
++msgstr "£¿"
++
++#. TRANS You did @strong{what}?
++#: stdio-common/../sysdeps/gnu/errlist.c:967
++msgid "You really blew it this time"
+ msgstr ""
+
+-#: catgets/gencat.c:120
+-msgid ""
+-"Generate message catalog.\\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+-"is -, output is written to standard output.\n"
++#. TRANS Go home and have a glass of warm, dairy-fresh milk.
++#: stdio-common/../sysdeps/gnu/errlist.c:976
++msgid "Computer bought the farm"
+ msgstr ""
+
+-#: malloc/memusagestat.c:55
+-msgid "Generate output linear to time (default is linear to number of function calls)"
++#. TRANS This error code has no purpose.
++#: stdio-common/../sysdeps/gnu/errlist.c:985
++msgid "Gratuitous error"
+ msgstr ""
+
+-#: elf/ldconfig.c:123
+-msgid "Generate verbose messages"
+-msgstr "Éú³ÉÏêϸÏûÏ¢"
++#: stdio-common/../sysdeps/gnu/errlist.c:993
++msgid "Bad message"
++msgstr "´íÎóµÄÏûÏ¢"
+
+-#: nis/nis_error.c:37
+-msgid "Generic system error"
+-msgstr "ͨÓÃϵͳ´íÎó"
++#: stdio-common/../sysdeps/gnu/errlist.c:1001
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
++msgid "Identifier removed"
++msgstr "±êʶ·ûÒÑɾ³ý"
+
+-#: locale/programs/locale.c:86
+-msgid "Get locale-specific information."
+-msgstr "¸ø³öÇøÓòÌض¨µÄÐÅÏ¢¡£"
++#: stdio-common/../sysdeps/gnu/errlist.c:1009
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
++msgid "Multihop attempted"
++msgstr ""
+
+-#: argp/argp-parse.c:94
+-msgid "Give a short usage message"
+-msgstr "¸ø³ö¼òÒªµÄÓ÷¨ÐÅÏ¢"
++#: stdio-common/../sysdeps/gnu/errlist.c:1017
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
++msgid "No data available"
++msgstr "ûÓпÉÓõÄÊý¾Ý"
+
+-#: argp/argp-parse.c:93
+-msgid "Give this help list"
+-msgstr "¸ø³ö¸ÃϵͳÇóÖúÁбí"
++#: stdio-common/../sysdeps/gnu/errlist.c:1025
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
++msgid "Link has been severed"
++msgstr ""
+
+-#. TRANS This error code has no purpose.
+-#: stdio-common/../sysdeps/gnu/errlist.c:637
+-msgid "Gratuitous error"
++#: stdio-common/../sysdeps/gnu/errlist.c:1033
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
++msgid "No message of desired type"
+ msgstr ""
+
+-#: nis/nis_print.c:323
+-#, c-format
+-msgid "Group : %s\n"
+-msgstr "×é £º%s\n"
++#: stdio-common/../sysdeps/gnu/errlist.c:1041
++msgid "Out of streams resources"
++msgstr "Á÷×ÊÔ´²»×ã"
+
+-#: nis/nis_print.c:252
+-msgid "Group Flags :"
+-msgstr "×é±êÖ¾ £º"
++#: stdio-common/../sysdeps/gnu/errlist.c:1049
++msgid "Device not a stream"
++msgstr "É豸²»ÊÇÁ÷"
+
+-#: nis/nis_print_group_entry.c:115
+-#, c-format
+-msgid "Group entry for \"%s.%s\" group:\n"
+-msgstr ""
++#: stdio-common/../sysdeps/gnu/errlist.c:1057
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
++msgid "Value too large for defined data type"
++msgstr "¶ÔÒѶ¨ÒåµÄÊý¾ÝÀàÐÍÀ´ËµÖµ¹ý´ó"
+
+-#: argp/argp-parse.c:97
+-msgid "Hang for SECS seconds (default 3600)"
+-msgstr "¹ÒÆð SECS Ãë (ĬÈÏ 3600)"
++#: stdio-common/../sysdeps/gnu/errlist.c:1065
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
++msgid "Protocol error"
++msgstr "ЭÒé´íÎó"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:27 sysdeps/generic/siglist.h:29
+-msgid "Hangup"
+-msgstr "¹ÒÆð"
++#: stdio-common/../sysdeps/gnu/errlist.c:1073
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
++msgid "Timer expired"
++msgstr "¼ÆʱÆ÷³¬Ê±"
+
+-#: nscd/grpcache.c:253
+-#, c-format
+-msgid "Haven't found \"%d\" in group cache!"
+-msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%d¡±£¡"
++#. TRANS Operation canceled; an asynchronous operation was canceled before it
++#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
++#. TRANS the normal result is for the operations affected to complete with this
++#. TRANS error; @pxref{Cancel AIO Operations}.
++#: stdio-common/../sysdeps/gnu/errlist.c:1085
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
++msgid "Operation canceled"
++msgstr "²Ù×÷ÒÑÈ¡Ïû"
+
+-#: nscd/pwdcache.c:249
+-#, c-format
+-msgid "Haven't found \"%d\" in password cache!"
+-msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%d¡±£¡"
++#: stdio-common/../sysdeps/gnu/errlist.c:1093
++msgid "Interrupted system call should be restarted"
++msgstr "±»ÖжϵÄϵͳµ÷ÓÃÓ¦¸ÃÖØÐÂÆô¶¯"
+
+-#: nscd/grpcache.c:214
+-#, c-format
+-msgid "Haven't found \"%s\" in group cache!"
+-msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%s¡±£¡"
++#: stdio-common/../sysdeps/gnu/errlist.c:1101
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
++msgid "Channel number out of range"
++msgstr "ͨµÀ±àºÅ³¬³ö·¶Î§"
+
+-#: nscd/hstcache.c:299 nscd/hstcache.c:341 nscd/hstcache.c:386
+-#: nscd/hstcache.c:430
+-#, c-format
+-msgid "Haven't found \"%s\" in hosts cache!"
+-msgstr "ÎÞ·¨ÔÚÖ÷»ú»º³åÇøÖÐÕÒµ½¡°%s¡±£¡"
++#: stdio-common/../sysdeps/gnu/errlist.c:1109
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
++msgid "Level 2 not synchronized"
++msgstr "¼¶±ð 2 ÉÐδͬ²½"
+
+-#: nscd/pwdcache.c:210
+-#, c-format
+-msgid "Haven't found \"%s\" in password cache!"
+-msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%s¡±£¡"
++#: stdio-common/../sysdeps/gnu/errlist.c:1117
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
++msgid "Level 3 halted"
++msgstr "¼¶±ð 3 ÒѹرÕ"
+
+-#. TRANS The remote host for a requested network connection is down.
+-#: stdio-common/../sysdeps/gnu/errlist.c:470
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
+-msgid "Host is down"
+-msgstr "Ö÷»ú¹Ø±Õ"
++#: stdio-common/../sysdeps/gnu/errlist.c:1125
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
++msgid "Level 3 reset"
++msgstr "¼¶±ð 3 ÒÑÖØÖÃ"
+
+-#: resolv/herror.c:69
+-msgid "Host name lookup failure"
+-msgstr "Ö÷»úÃûËÑË÷ʧ°Ü"
++#: stdio-common/../sysdeps/gnu/errlist.c:1133
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
++msgid "Link number out of range"
++msgstr "Á¬½ÓÊý³¬³ö·¶Î§"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
+-msgid "I/O error"
+-msgstr "I/O ´íÎó"
++#: stdio-common/../sysdeps/gnu/errlist.c:1141
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
++msgid "Protocol driver not attached"
++msgstr "δ¼ÓÔØЭÒéÇý¶¯³ÌÐò"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:49 sysdeps/generic/siglist.h:49
+-msgid "I/O possible"
++#: stdio-common/../sysdeps/gnu/errlist.c:1149
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
++msgid "No CSI structure available"
++msgstr "ûÓпÉÓÃµÄ CSI ½á¹¹"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1157
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
++msgid "Level 2 halted"
++msgstr "¼¶±ð 2 ¼º¹Ø±Õ"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1165
++msgid "Invalid exchange"
++msgstr "ÎÞЧµÄ½»»»"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1173
++msgid "Invalid request descriptor"
++msgstr "ÎÞЧµÄÇëÇóÃèÊö·û"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1181
++msgid "Exchange full"
++msgstr "½»»»Âú"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1189
++msgid "No anode"
++msgstr "ûÓÐ anode"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1197
++msgid "Invalid request code"
++msgstr "ÎÞЧµÄÇëÇóÂë"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1205
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
++msgid "Invalid slot"
++msgstr ""
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1213
++msgid "File locking deadlock error"
++msgstr "ÎļþËøËÀËø´íÎó"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1221
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
++msgid "Bad font file format"
++msgstr "´íÎóµÄ×ÖÌåÎļþ¸ñʽ"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1229
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
++msgid "Machine is not on the network"
++msgstr "»úÆ÷²»ÔÚÍøÂçÖÐ"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1237
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
++msgid "Package not installed"
++msgstr "°üδ°²×°"
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1245
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
++msgid "Advertise error"
++msgstr ""
++
++#: stdio-common/../sysdeps/gnu/errlist.c:1253
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
++msgid "Srmount error"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/unix/siglist.c:32
+-msgid "IOT trap"
+-msgstr ""
++#: stdio-common/../sysdeps/gnu/errlist.c:1261
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
++msgid "Communication error on send"
++msgstr "·¢ËÍʱ³öÏÖͨѶ´íÎó"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:645
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
+-msgid "Identifier removed"
++#: stdio-common/../sysdeps/gnu/errlist.c:1269
++msgid "RFS specific error"
+ msgstr ""
+
+-#: elf/ldconfig.c:535
+-#, c-format
+-msgid "Ignored file %s since it is not a regular file."
++#: stdio-common/../sysdeps/gnu/errlist.c:1277
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
++msgid "Name not unique on network"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
+-msgid "Illegal byte sequence"
+-msgstr "·Ç·¨µÄ×Ö½ÚÐò"
++#: stdio-common/../sysdeps/gnu/errlist.c:1285
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
++msgid "File descriptor in bad state"
++msgstr "ÎļþÃèÊö·û´¦ÓÚ´íÎó״̬"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:30 sysdeps/generic/siglist.h:32
+-msgid "Illegal instruction"
+-msgstr "·Ç·¨Ö¸Áî"
++#: stdio-common/../sysdeps/gnu/errlist.c:1293
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
++msgid "Remote address changed"
++msgstr "Ô¶³ÌµØÖ·ÒѸıä"
+
+-#: nis/nis_error.c:62
+-msgid "Illegal object type for operation"
+-msgstr "²Ù×÷µÄ·Ç·¨¶ÔÏóÀàÐÍ"
++#: stdio-common/../sysdeps/gnu/errlist.c:1301
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
++msgid "Can not access a needed shared library"
++msgstr "ÎÞ·¨·ÃÎʱØÐëµÄ¹²Ïí¿â"
+
+-#. TRANS Invalid seek operation (such as on a pipe).
+-#: stdio-common/../sysdeps/gnu/errlist.c:214
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
+-msgid "Illegal seek"
+-msgstr "·Ç·¨ seek ²Ù×÷"
++#: stdio-common/../sysdeps/gnu/errlist.c:1309
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
++msgid "Accessing a corrupted shared library"
++msgstr "ÕýÔÚ·ÃÎÊÒ»¸öÒѻٻµµÄ¹²Ïí¿â"
+
+-#. TRANS Inappropriate file type or format. The file was the wrong type for the
+-#. TRANS operation, or a data file had the wrong format.
+-#. TRANS
+-#. TRANS On some systems @code{chmod} returns this error if you try to set the
+-#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:557
+-msgid "Inappropriate file type or format"
+-msgstr "²»Êʵ±µÄÎļþÀàÐÍ»ò¸ñʽ"
++#: stdio-common/../sysdeps/gnu/errlist.c:1317
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
++msgid ".lib section in a.out corrupted"
++msgstr "a.out ÖÐµÄ .lib ½ÚÒѻٻµ"
+
+-#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+-#. TRANS modes on an ordinary file.
+-#: stdio-common/../sysdeps/gnu/errlist.c:189
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
+-msgid "Inappropriate ioctl for device"
+-msgstr "¶ÔÉ豸²»Êʵ±µÄ ioctl ²Ù×÷"
++#: stdio-common/../sysdeps/gnu/errlist.c:1325
++msgid "Attempting to link in too many shared libraries"
++msgstr "ÊÔͼÓÚ¹ý¶àµÄ¹²Ïí¿âÏàÁ¬½Ó"
+
+-#. TRANS In the GNU system, servers supporting the @code{term} protocol return
+-#. TRANS this error for certain operations when the caller is not in the
+-#. TRANS foreground process group of the terminal. Users do not usually see this
+-#. TRANS error because functions such as @code{read} and @code{write} translate
+-#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
+-#. TRANS for information on process groups and these signals.
+-#: stdio-common/../sysdeps/gnu/errlist.c:608
+-msgid "Inappropriate operation for background process"
+-msgstr "¶Ôºǫ́½ø³ÌµÄ²»Êʵ±²Ù×÷"
++#: stdio-common/../sysdeps/gnu/errlist.c:1333
++msgid "Cannot exec a shared library directly"
++msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
+
+-#: sysdeps/generic/siglist.h:69
+-msgid "Information request"
+-msgstr "ÐÅÏ¢ÇëÇó"
++#: stdio-common/../sysdeps/gnu/errlist.c:1341
++msgid "Streams pipe error"
++msgstr "Á÷¹ÜµÀ´íÎó"
+
+-#: iconv/iconv_prog.c:62
+-msgid "Information:"
+-msgstr "ÐÅÏ¢£º"
++#: stdio-common/../sysdeps/gnu/errlist.c:1349
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
++msgid "Structure needs cleaning"
++msgstr "½á¹¹ÐèÒªÇåÀí"
+
+-#: locale/programs/localedef.c:92
+-msgid "Input Files:"
+-msgstr "ÊäÈëÎļþ£º"
++#: stdio-common/../sysdeps/gnu/errlist.c:1357
++msgid "Not a XENIX named type file"
++msgstr "²»ÊÇ XENIX ÃüÃûµÄÀàÐÍÎļþ"
+
+-#: elf/ldconfig.c:754 elf/readlib.c:93
+-#, c-format
+-msgid "Input file %s not found.\n"
+-msgstr "δÕÒµ½ÊäÈëÎļþ %s¡£\n"
++#: stdio-common/../sysdeps/gnu/errlist.c:1365
++msgid "No XENIX semaphores available"
++msgstr "ûÓпÉÓÃµÄ XENIX ÐźÅÁ¿"
+
+-#: iconv/iconv_prog.c:59
+-msgid "Input/Output format specification:"
+-msgstr "ÊäÈë/Êä³ö¸ñʽ¹æ·¶£º"
++#: stdio-common/../sysdeps/gnu/errlist.c:1373
++msgid "Is a named type file"
++msgstr "ÊÇÒ»¸öÓÐÃûÀàÐÍÎļþ"
+
+-#. TRANS Input/output error; usually used for physical read or write errors.
+-#: stdio-common/../sysdeps/gnu/errlist.c:53
+-msgid "Input/output error"
+-msgstr "ÊäÈë/Êä³ö´íÎó"
++#: stdio-common/../sysdeps/gnu/errlist.c:1381
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
++msgid "Remote I/O error"
++msgstr "Ô¶³Ì I/O ´íÎó"
+
+-#: nis/ypclnt.c:800
+-msgid "Internal NIS error"
+-msgstr "ÄÚ²¿ NIS ´íÎó"
++#: stdio-common/../sysdeps/gnu/errlist.c:1389
++msgid "No medium found"
++msgstr "ÕÒ²»µ½½éÖÊ"
+
+-#: nis/ypclnt.c:864
+-msgid "Internal ypbind error"
+-msgstr "ÄÚ²¿ ypbind ´íÎó"
++#: stdio-common/../sysdeps/gnu/errlist.c:1397
++msgid "Wrong medium type"
++msgstr "´íÎóµÄ½éÖÊÀàÐÍ"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:28 sysdeps/generic/siglist.h:30
+-msgid "Interrupt"
+-msgstr "ÖжÏ"
++#: stdio-common/../sysdeps/unix/siglist.c:26
++msgid "Signal 0"
++msgstr "ÐźŠ0"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:46
+-msgid "Interrupted by a signal"
+-msgstr "±»ÐźÅÖжÏ"
++#: stdio-common/../sysdeps/unix/siglist.c:32
++msgid "IOT trap"
++msgstr ""
+
+-#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+-#. TRANS completion of the call. When this happens, you should try the call
+-#. TRANS again.
+-#. TRANS
+-#. TRANS You can choose to have functions resume after a signal that is handled,
+-#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
+-#. TRANS Primitives}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:48
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
+-msgid "Interrupted system call"
+-msgstr "±»ÖжϵÄϵͳµ÷ÓÃ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
++msgid "Error 0"
++msgstr "´íÎó 0"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:685
+-msgid "Interrupted system call should be restarted"
+-msgstr "±»ÖжϵÄϵͳµ÷ÓÃÓ¦¸ÃÖØÐÂÆô¶¯"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
++#: nis/nis_error.c:40
++msgid "Not owner"
++msgstr "²»ÊÇËùÓÐÕß"
+
+-#. TRANS Invalid argument. This is used to indicate various kinds of problems
+-#. TRANS with passing the wrong argument to a library function.
+-#: stdio-common/../sysdeps/gnu/errlist.c:165
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
+-msgid "Invalid argument"
+-msgstr "ÎÞЧµÄ²ÎÊý"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
++msgid "I/O error"
++msgstr "I/O ´íÎó"
+
+-#: posix/regex.c:1384
+-msgid "Invalid back reference"
+-msgstr "ÎÞЧµÄÏòºóÒýÓÃ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
++msgid "Arg list too long"
++msgstr "²ÎÊýÁбí¹ý³¤"
+
+-#: posix/regex.c:1378
+-msgid "Invalid character class name"
+-msgstr "ÎÞЧµÄ×Ö·ûÀàÃû"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
++msgid "Bad file number"
++msgstr "´íÎóµÄÎļþ±àºÅ"
+
+-#: sunrpc/clnt_perr.c:357
+-msgid "Invalid client credential"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
++msgid "Not enough space"
++msgstr "¿Õ¼ä²»¹»"
+
+-#: sunrpc/clnt_perr.c:365
+-msgid "Invalid client verifier"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
++msgid "Device busy"
++msgstr "É豸æ"
+
+-#: posix/regex.c:1375
+-msgid "Invalid collation character"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
++msgid "Cross-device link"
++msgstr "¿çÉ豸Á¬½Ó"
++
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
++msgid "File table overflow"
++msgstr "Îļþ±íÒç³ö"
++
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
++msgid "Argument out of domain"
+ msgstr ""
+
+-#: posix/regex.c:1396
+-msgid "Invalid content of \\{\\}"
+-msgstr "ÎÞЧµÄ \\{\\} µÄÄÚÈÝ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
++msgid "Result too large"
++msgstr "½á¹ûÌ«´ó"
+
+-#. TRANS An attempt to make an improper link across file systems was detected.
+-#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
+-#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
+-#: stdio-common/../sysdeps/gnu/errlist.c:142
+-msgid "Invalid cross-device link"
+-msgstr "ÎÞЧµÄ¿çÉ豸Á¬½Ó"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
++msgid "Deadlock situation detected/avoided"
++msgstr "̽²âµ½/ÒѱÜÃâËÀËø"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:721
+-msgid "Invalid exchange"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
++msgid "No record locks available"
++msgstr "ûÓпÉÓõļǼËø"
+
+-#: nis/nis_error.c:45
+-msgid "Invalid object for operation"
+-msgstr "²Ù×÷ÎÞЧµÄ¶ÔÏó"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
++msgid "Disc quota exceeded"
++msgstr "³¬³ö´ÅÅÌÏÞ¶î"
+
+-#. TRANS While decoding a multibyte character the function came along an invalid
+-#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
+-#: stdio-common/../sysdeps/gnu/errlist.c:598
+-msgid "Invalid or incomplete multibyte or wide character"
+-msgstr "ÎÞЧ»ò²»ÍêÕûµÄ¶à×Ö½Ú×Ö·û»ò¿í×Ö·û"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
++msgid "Bad exchange descriptor"
++msgstr "´íÎóµÄ½»»»ÃèÊö·û"
+
+-#: posix/regex.c:1405
+-msgid "Invalid preceding regular expression"
+-msgstr "ÎÞЧµÄÇ°µ¼³£¹æ±í´ïʽ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
++msgid "Bad request descriptor"
++msgstr "´íÎóµÄÇëÇóÃèÊö·û"
+
+-#: posix/regex.c:1399
+-msgid "Invalid range end"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
++msgid "Message tables full"
++msgstr "ÄÚ´æ±íÒÑÂú"
+
+-#: posix/regex.c:1372
+-msgid "Invalid regular expression"
+-msgstr "ÎÞЧµÄ³£¹æ±í´ïʽ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
++msgid "Anode table overflow"
++msgstr "Anode ±íÒç³ö"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:737
+-msgid "Invalid request code"
+-msgstr "ÎÞЧµÄÇëÇóÂë"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
++msgid "Bad request code"
++msgstr "´íÎóµÄÇëÇóÂë"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:725
+-msgid "Invalid request descriptor"
+-msgstr "ÎÞЧµÄÇëÇóÃèÊö·û"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
++msgid "File locking deadlock"
++msgstr "ÎļþËøËÀËø"
+
+-#: sunrpc/clnt_perr.c:377
+-msgid "Invalid server verifier"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
++msgid "Error 58"
++msgstr "´íÎó 58"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:741
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
+-msgid "Invalid slot"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
++msgid "Error 59"
++msgstr "´íÎó 59"
+
+-#: nscd/nscd.c:91
+-msgid "Invalidate the specified cache"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
++msgid "Not a stream device"
++msgstr "²»ÊÇÁ÷É豸"
+
+-#. TRANS File is a directory; you cannot open a directory for writing,
+-#. TRANS or create or remove hard links to it.
+-#: stdio-common/../sysdeps/gnu/errlist.c:159
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
+-msgid "Is a directory"
+-msgstr "ÊÇÒ»¸öĿ¼"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
++msgid "Out of stream resources"
++msgstr "Á÷×ÊÔ´²»×ã"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
+-msgid "Is a name file"
+-msgstr "ÊÇÒ»¸öÓÐÃûÎļþ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
++msgid "Error 72"
++msgstr "´íÎó 72"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:825
+-msgid "Is a named type file"
+-msgstr "ÊÇÒ»¸öÓÐÃûÀàÐÍÎļþ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
++msgid "Error 73"
++msgstr "´íÎó 73"
+
+-#: nis/nis_print.c:191
+-msgid "Kerberos.\n"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
++msgid "Error 75"
++msgstr "´íÎó 75"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:35 sysdeps/generic/siglist.h:36
+-msgid "Killed"
+-msgstr "ÒÑɱËÀ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
++msgid "Error 76"
++msgstr "´íÎó 76"
+
+-#: nis/nis_print.c:127
+-msgid "LINK\n"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
++msgid "Not a data message"
++msgstr "²»ÊÇÊý¾ÝÏûÏ¢"
+
+-#: nis/nis_local_names.c:126
+-#, c-format
+-msgid "LOCAL entry for UID %d in directory %s not unique\n"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
++msgid "Attempting to link in more shared libraries than system limit"
++msgstr "ÊÔͼÁ¬½ÓµÄ¹²Ïí¿â¸öÊý³¬³öϵͳÏÞÖÆ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:717
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
+-msgid "Level 2 halted"
+-msgstr "¼¶±ð 2 ¼º¹Ø±Õ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
++msgid "Can not exec a shared library directly"
++msgstr "ÎÞ·¨Ö±½ÓÖ´Ðй²Ïí¿â"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:693
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
+-msgid "Level 2 not synchronized"
+-msgstr "¼¶±ð 2 ÉÐδͬ²½"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
++msgid "Illegal byte sequence"
++msgstr "·Ç·¨µÄ×Ö½ÚÐò"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:697
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
+-msgid "Level 3 halted"
+-msgstr "¼¶±ð 3 ÒѹرÕ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
++msgid "Operation not applicable"
++msgstr "²»¿ÉÓ¦ÓõIJÙ×÷"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:701
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
+-msgid "Level 3 reset"
+-msgstr "¼¶±ð 3 ÒÑÖØÖÃ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
++msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
++msgstr "·¾¶±éÀúÖÐÓöµ½µÄ·ûºÅÁ¬½ÓµÄÊýÁ¿³¬¹ýÁË MAXSYMLINKS"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:657
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
+-msgid "Link has been severed"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
++msgid "Error 91"
++msgstr "´íÎó 91"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:705
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
+-msgid "Link number out of range"
+-msgstr "Á¬½ÓÊý³¬³ö·¶Î§"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
++msgid "Error 92"
++msgstr "´íÎó 92"
+
+-#: nis/nis_error.c:54
+-msgid "Link points to illegal name"
+-msgstr "Á¬½ÓÖ¸Ïò·Ç·¨Ãû³Æ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
++msgid "Option not supported by protocol"
++msgstr "ЭÒé²»Ö§³ÖµÄÑ¡Ïî"
+
+-#: nis/nis_print.c:286
+-msgid "Linked Object Type : "
+-msgstr "Á¬½Óµ½¶ÔÏóÀàÐÍ £º"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
++msgid "Error 100"
++msgstr "´íÎó 100"
+
+-#: nis/nis_print.c:288
+-#, c-format
+-msgid "Linked to : %s\n"
+-msgstr "Á¬½Óµ½ £º%s\n"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
++msgid "Error 101"
++msgstr "´íÎó 101"
+
+-#: nis/ypclnt.c:812
+-msgid "Local domain name not set"
+-msgstr "δÉèÖñ¾µØÓòÃû"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
++msgid "Error 102"
++msgstr "´íÎó 102"
+
+-#: nis/ypclnt.c:802
+-msgid "Local resource allocation failure"
+-msgstr "±¾µØ×ÊÔ´·ÖÅäʧ°Ü"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
++msgid "Error 103"
++msgstr "´íÎó 103"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:753
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
+-msgid "Machine is not on the network"
+-msgstr "»úÆ÷²»ÔÚÍøÂçÖÐ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
++msgid "Error 104"
++msgstr "´íÎó 104"
+
+-#: nis/nis_error.c:46
+-msgid "Malformed name, or illegal name"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
++msgid "Error 105"
++msgstr "´íÎó 105"
+
+-#: argp/argp-help.c:1185
+-msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
++msgid "Error 106"
++msgstr "´íÎó 106"
+
+-#: elf/ldconfig.c:130
+-msgid "Manually link individual libraries."
+-msgstr "ÊÖ¹¤Á¬½Ó¶ÀÁ¢µÄ¿â¡£"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
++msgid "Error 107"
++msgstr "´íÎó 107"
+
+-#: nis/nis_print.c:172
+-msgid "Master Server :\n"
+-msgstr "Ö÷·þÎñÆ÷ £º\n"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
++msgid "Error 108"
++msgstr "´íÎó 108"
+
+-#: nis/nis_error.c:76
+-msgid "Master server busy, full dump rescheduled."
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
++msgid "Error 109"
++msgstr "´íÎó 109"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:36
+-msgid "Memory allocation failure"
+-msgstr "ÄÚ´æ·ÖÅäʧ°Ü"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
++msgid "Error 110"
++msgstr "´íÎó 110"
+
+-#: posix/regex.c:1402
+-msgid "Memory exhausted"
+-msgstr "ÄÚ´æºÄ¾¡"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
++msgid "Error 111"
++msgstr "´íÎó 111"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
+-msgid "Message tables full"
+-msgstr "ÄÚ´æ±íÒÑÂú"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
++msgid "Error 112"
++msgstr "´íÎó 112"
+
+-#. TRANS The size of a message sent on a socket was larger than the supported
+-#. TRANS maximum size.
+-#: stdio-common/../sysdeps/gnu/errlist.c:318
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
+-msgid "Message too long"
+-msgstr "ÏûÏ¢¹ý³¤"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
++msgid "Error 113"
++msgstr "´íÎó 113"
+
+-#: nis/nis_error.c:58
+-msgid "Missing or malformed attribute"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
++msgid "Error 114"
++msgstr "´íÎó 114"
+
+-#: nis/nis_print.c:331
+-#, c-format
+-msgid "Mod. Time : %s"
+-msgstr "ÐÞ¸Äʱ¼ä £º%s"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
++msgid "Error 115"
++msgstr "´íÎó 115"
+
+-#: nis/nis_error.c:51
+-msgid "Modification failed"
+-msgstr "ÐÞ¸Äʧ°Ü"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
++msgid "Error 116"
++msgstr "´íÎó 116"
+
+-#: nis/nis_error.c:64
+-msgid "Modify operation failed"
+-msgstr "Ð޸IJÙ×÷ʧ°Ü"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
++msgid "Error 117"
++msgstr "´íÎó 117"
+
+-#: locale/programs/locale.c:78
+-msgid "Modify output format:"
+-msgstr "ÐÞ¸ÄÊä³ö¸ñʽ£º"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
++msgid "Error 118"
++msgstr "´íÎó 118"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:649
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
+-msgid "Multihop attempted"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
++msgid "Error 119"
++msgstr "´íÎó 119"
+
+-#: nscd/nscd_conf.c:182
+-msgid "Must specify user name for server-user option"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
++msgid "Operation not supported on transport endpoint"
++msgstr "´«Êä¶Ëµã²»Ö§³ÖµÄ²Ù×÷"
+
+-#: catgets/gencat.c:111 catgets/gencat.c:115 locale/programs/localedef.c:115
+-#: nscd/nscd.c:83
+-msgid "NAME"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
++msgid "Address family not supported by protocol family"
++msgstr "ЭÒé×å²»Ö§³ÖµÄµØÖ·×å"
+
+-#: locale/programs/locale.c:89
+-msgid ""
+-"NAME\n"
+-"[-a|-m]"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
++msgid "Network dropped connection because of reset"
++msgstr "ÒòΪÖØÖöø¶Ï¿ªÍøÂçÁ¬½Ó"
+
+-#: nis/ypclnt.c:816
+-msgid "NIS client/server version mismatch - can't supply service"
+-msgstr "NIS ¿Í»§¶Ë/·þÎñÆ÷°æ±¾²»Æ¥Åä - ÎÞ·¨Ö§³Ö·þÎñ"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
++msgid "Error 136"
++msgstr "´íÎó 136"
+
+-#: nis/ypclnt.c:814
+-msgid "NIS map database is bad"
+-msgstr "NIS Ó³ÉäÊý¾Ý¿â´íÎó"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
++msgid "Not a name file"
++msgstr "²»ÊÇÓÐÃûÎļþ"
+
+-#: nis/nis_error.c:69
+-msgid "NIS+ operation failed"
+-msgstr "NIS+ ²Ù×÷ʧ°Ü"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
++msgid "Not available"
++msgstr "²»¿ÉÓÃ"
+
+-#: nis/nis_error.c:34
+-msgid "NIS+ servers unreachable"
+-msgstr "NIS+ ·þÎñÆ÷²»¿É´ï"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
++msgid "Is a name file"
++msgstr "ÊÇÒ»¸öÓÐÃûÎļþ"
+
+-#: nis/nis_error.c:70
+-msgid "NIS+ service is unavailable or not installed"
+-msgstr "NIS+ ·þÎñÆ÷²»¿ÉÓûòδ°²×°"
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
++msgid "Reserved for future use"
++msgstr "±£ÁôÓÃÓÚδÀ´"
+
+-#: nis/nis_print.c:112
+-msgid "NO OBJECT\n"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
++msgid "Error 142"
++msgstr "´íÎó 142"
+
+-#: nscd/nscd.c:87
+-msgid "NUMBER"
+-msgstr ""
++#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
++msgid "Cannot send after socket shutdown"
++msgstr "ÎÞ·¨ÔÚÌ×½Ó×ֹرպó·¢ËÍ"
+
+-#: nis/nis_print.c:166
++#: stdio-common/psignal.c:63
+ #, c-format
+-msgid "Name : `%s'\n"
+-msgstr ""
++msgid "%s%sUnknown signal %d\n"
++msgstr "%s%sδ֪µÄÐźŠ%d\n"
++
++#: malloc/mcheck.c:346
++msgid "memory is consistent, library is buggy\n"
++msgstr "ÄÚ´æ²»Ò»Ö£¬¿âÓдíÎó\n"
+
+-#: nscd/nscd.c:97
+-msgid "Name Service Cache Daemon."
++#: malloc/mcheck.c:349
++msgid "memory clobbered before allocated block\n"
+ msgstr ""
+
+-#: nis/nis_error.c:41
+-msgid "Name not served by this server"
++#: malloc/mcheck.c:352
++msgid "memory clobbered past end of allocated block\n"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:777
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
+-msgid "Name not unique on network"
+-msgstr ""
++#: malloc/mcheck.c:355
++msgid "block freed twice\n"
++msgstr "¿éÊÍ·ÅÁËÁ½´Î\n"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:38
+-msgid "Name or service not known"
++#: malloc/mcheck.c:358
++msgid "bogus mcheck_status, library is buggy\n"
+ msgstr ""
+
+ #: malloc/memusagestat.c:53
+ msgid "Name output file"
+ msgstr "ÃûÊä³öÎļþ"
+
+-#: nis/nis_error.c:50
+-msgid "Name/entry isn't unique"
+-msgstr "Ãû³Æ/ÌõÄ¿²»Î¨Ò»"
+-
+-#: nis/nis_error.c:59
+-msgid "Named object is not searchable"
+-msgstr "²»ÄÜËÑË÷ÃüÃû¶ÔÏó"
+-
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:567
+-msgid "Need authenticator"
+-msgstr "ÐèÒªÈÏÖ¤Æ÷"
+-
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
+-msgid "Network dropped connection because of reset"
+-msgstr "ÒòΪÖØÖöø¶Ï¿ªÍøÂçÁ¬½Ó"
+-
+-#. TRANS A network connection was reset because the remote host crashed.
+-#: stdio-common/../sysdeps/gnu/errlist.c:390
+-msgid "Network dropped connection on reset"
+-msgstr "ÖØÖÃʱ¶Ï¿ªÍøÂçÁ¬½Ó"
+-
+-#. TRANS A socket operation failed because the network was down.
+-#: stdio-common/../sysdeps/gnu/errlist.c:379
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
+-msgid "Network is down"
+-msgstr "ÍøÂçÒѹرÕ"
+-
+-#. TRANS A socket operation failed because the subnet containing the remote host
+-#. TRANS was unreachable.
+-#: stdio-common/../sysdeps/gnu/errlist.c:385
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
+-msgid "Network is unreachable"
+-msgstr "ÍøÂç²»¿É´ï"
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:713
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
+-msgid "No CSI structure available"
+-msgstr "ûÓпÉÓÃµÄ CSI ½á¹¹"
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:821
+-msgid "No XENIX semaphores available"
+-msgstr "ûÓпÉÓÃµÄ XENIX ÐźÅÁ¿"
++#: malloc/memusagestat.c:54
++msgid "Title string used in output graphic"
++msgstr "ÓÃÓÚÊä³öͼÐεıêÌâ×Ö·û´®"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:37
+-msgid "No address associated with hostname"
+-msgstr "ûÓÐÓëÖ÷»úÃû¹ØÁªµÄµØÖ·"
++#: malloc/memusagestat.c:55
++msgid "Generate output linear to time (default is linear to number of function calls)"
++msgstr ""
+
+-#: resolv/herror.c:71
+-msgid "No address associated with name"
+-msgstr "ûÓÐÓëÃû×Ö¹ØÁªµÄµØÖ·"
++#: malloc/memusagestat.c:57
++msgid "Also draw graph for total memory consumption"
++msgstr ""
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:733
+-msgid "No anode"
++#: malloc/memusagestat.c:58
++msgid "make output graphic VALUE pixel wide"
+ msgstr ""
+
+-#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
+-#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
+-#. TRANS other from network operations.
+-#: stdio-common/../sysdeps/gnu/errlist.c:409
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
+-msgid "No buffer space available"
+-msgstr "ûÓпÉÓõĻº³åÇø¿Õ¼ä"
++#: malloc/memusagestat.c:59
++msgid "make output graphic VALUE pixel high"
++msgstr ""
+
+-#: locale/programs/ld-ctype.c:433
+-msgid "No character set name specified in charmap"
++#: malloc/memusagestat.c:64
++msgid "Generate graphic from memory profiling data"
+ msgstr ""
+
+-#. TRANS There are no child processes. This error happens on operations that are
+-#. TRANS supposed to manipulate child processes, when there aren't any processes
+-#. TRANS to manipulate.
+-#: stdio-common/../sysdeps/gnu/errlist.c:90
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
+-msgid "No child processes"
+-msgstr "ûÓÐ×Ó½ø³Ì"
++#: malloc/memusagestat.c:67
++msgid "DATAFILE [OUTFILE]"
++msgstr "Êý¾ÝÎļþ [Êä³öÎļþ]"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:653
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
+-msgid "No data available"
+-msgstr "ûÓпÉÓõÄÊý¾Ý"
++#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
++msgid "Unknown error"
++msgstr "δ֪µÄ´íÎó"
+
+-#: locale/programs/ld-address.c:131 locale/programs/ld-collate.c:1513
+-#: locale/programs/ld-ctype.c:415 locale/programs/ld-identification.c:132
+-#: locale/programs/ld-measurement.c:93 locale/programs/ld-messages.c:98
+-#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
+-#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:91
+-#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:160
++#: string/strsignal.c:69
+ #, c-format
+-msgid "No definition for %s category found"
+-msgstr ""
++msgid "Real-time signal %d"
++msgstr "ʵʱÐźŠ%d"
+
+-#: nis/nis_error.c:74
+-msgid "No file space on server"
+-msgstr "·þÎñÆ÷ÉÏûÓÐÎļþ¿Õ¼ä"
++#: string/strsignal.c:73
++#, c-format
++msgid "Unknown signal %d"
++msgstr "δ֪ÐźŠ%d"
+
+-#: elf/ldconfig.c:543
++#: timezone/zdump.c:175
+ #, c-format
+-msgid "No link created since soname could not be found for %s"
+-msgstr ""
++msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
++msgstr "%s£ºÓ÷¨Îª %s [ -v ] [ -c cutoff ] ÇøÓòÃû ...\n"
+
+-#. TRANS No locks available. This is used by the file locking facilities; see
+-#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
+-#. TRANS it can result from an operation to an NFS server running another
+-#. TRANS operating system.
+-#: stdio-common/../sysdeps/gnu/errlist.c:548
+-msgid "No locks available"
+-msgstr "ûÓпÉÓõÄËø"
++#: timezone/zdump.c:268
++msgid "Error writing standard output"
++msgstr "дÈë±ê×¼Êä³ö³ö´í"
+
+-#: posix/regex.c:1369
+-msgid "No match"
+-msgstr "ûÓÐÆ¥Åä"
++#: timezone/zic.c:365
++#, c-format
++msgid "%s: Memory exhausted: %s\n"
++msgstr "%s£ºÄÚ´æºÄ¾¡£º%s\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:833
+-msgid "No medium found"
+-msgstr "ÕÒ²»µ½½éÖÊ"
++#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
++msgid "Unknown system error"
++msgstr "δ֪µÄϵͳ´íÎó"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:661
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
+-msgid "No message of desired type"
+-msgstr ""
++#: timezone/zic.c:424
++#, c-format
++msgid "\"%s\", line %d: %s"
++msgstr "¡°%s¡±£¬ÐÐ %d£º%s"
+
+-#: nis/ypclnt.c:804
+-msgid "No more records in map database"
++#: timezone/zic.c:427
++#, c-format
++msgid " (rule from \"%s\", line %d)"
+ msgstr ""
+
+-#: posix/regex.c:7956
+-msgid "No previous regular expression"
+-msgstr "ûÓÐÇ°Ò»¸ö³£¹æ±í´ïʽ"
++#: timezone/zic.c:439
++msgid "warning: "
++msgstr "¾¯¸æ£º"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
+-msgid "No record locks available"
+-msgstr "ûÓпÉÓõļǼËø"
++#: timezone/zic.c:449
++#, c-format
++msgid ""
++"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
++"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
++msgstr ""
++"%s£ºÓ÷¨Îª %s [ -s ] [ -v ] [ -l ±¾µØʱ¼ä ] [ -p posix ¹æÔò ] \\\n"
++"\t[ -d Ŀ¼ ] [ -L leapseconds ] [ -y yearistype ] [ ÎļþÃû ... ]\n"
+
+-#: sunrpc/rpcinfo.c:570
+-msgid "No remote programs registered.\n"
+-msgstr "ûÓÐ×¢²áµÄÔ¶³Ì³ÌÐò¡£\n"
++#: timezone/zic.c:491
++#, c-format
++msgid "%s: More than one -d option specified\n"
++msgstr "%s£º¸ø³öÁ˶à¸ö -d Ñ¡Ïî\n"
+
+-#. TRANS The remote host for a requested network connection is not reachable.
+-#: stdio-common/../sysdeps/gnu/errlist.c:475
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
+-msgid "No route to host"
+-msgstr "ûÓе½Ö÷»úµÄ·ÓÉ"
++#: timezone/zic.c:501
++#, c-format
++msgid "%s: More than one -l option specified\n"
++msgstr "%s£º¸ø³öÁ˶à¸ö -l Ñ¡Ïî\n"
+
+-#. TRANS No space left on device; write operation on a file failed because the
+-#. TRANS disk is full.
+-#: stdio-common/../sysdeps/gnu/errlist.c:209
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
+-msgid "No space left on device"
+-msgstr "É豸ÉÏûÓпռä"
++#: timezone/zic.c:511
++#, c-format
++msgid "%s: More than one -p option specified\n"
++msgstr "%s£º¸ø³öÁ˶à¸ö -p Ñ¡Ïî\n"
+
+-#. TRANS The wrong type of device was given to a function that expects a
+-#. TRANS particular sort of device.
+-#: stdio-common/../sysdeps/gnu/errlist.c:148
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
+-msgid "No such device"
+-msgstr "ûÓÐÄǸöÉ豸"
++#: timezone/zic.c:521
++#, c-format
++msgid "%s: More than one -y option specified\n"
++msgstr "%s£º¸ø³öÁ˶à¸ö -y Ñ¡Ïî\n"
+
+-#. TRANS No such device or address. The system tried to use the device
+-#. TRANS represented by a file you specified, and it couldn't find the device.
+-#. TRANS This can mean that the device file was installed incorrectly, or that
+-#. TRANS the physical device is missing or not correctly attached to the
+-#. TRANS computer.
+-#: stdio-common/../sysdeps/gnu/errlist.c:62
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
+-msgid "No such device or address"
+-msgstr "ûÓÐÄǸöÉ豸»òµØÖ·"
++#: timezone/zic.c:531
++#, c-format
++msgid "%s: More than one -L option specified\n"
++msgstr "%s£º¸ø³öÁ˶à¸ö -L Ñ¡Ïî\n"
+
+-#. TRANS No such file or directory. This is a ``file doesn't exist'' error
+-#. TRANS for ordinary files that are referenced in contexts where they are
+-#. TRANS expected to already exist.
+-#: stdio-common/../sysdeps/gnu/errlist.c:32
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
+-msgid "No such file or directory"
+-msgstr "ûÓÐÄǸöÎļþ»òĿ¼"
++#: timezone/zic.c:638
++#, c-format
++msgid "%s: Can't unlink %s: %s\n"
++msgstr "%s£ºÎÞ·¨½â³ýÁ¬½Ó %s£º%s\n"
+
+-#: nis/ypclnt.c:798
+-msgid "No such key in map"
+-msgstr ""
++#: timezone/zic.c:645
++msgid "hard link failed, symbolic link used"
++msgstr "Ó²Á¬½Óʧ°Ü£¬Ê¹Ó÷ûºÅÁ¬½Ó"
+
+-#: nis/ypclnt.c:796
+-msgid "No such map in server's domain"
+-msgstr ""
++#: timezone/zic.c:653
++#, c-format
++msgid "%s: Can't link from %s to %s: %s\n"
++msgstr "%s£ºÎÞ·¨´Ó %s Á¬½Óµ½ %s£º%s\n"
+
+-#. TRANS No process matches the specified process ID.
+-#: stdio-common/../sysdeps/gnu/errlist.c:37
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
+-msgid "No such process"
+-msgstr "ûÓÐÄǸö½ø³Ì"
++#: timezone/zic.c:751 timezone/zic.c:753
++msgid "same rule name in multiple files"
++msgstr "¶à¸öÎļþÖеÄÏàͬ¹æÔòÃû"
+
+-#: nis/nis_error.c:61
+-msgid "Non NIS+ namespace encountered"
++#: timezone/zic.c:794
++msgid "unruly zone"
+ msgstr ""
+
+-#: posix/../sysdeps/posix/gai_strerror.c:34
+-msgid "Non-recoverable failure in name resolution"
+-msgstr "ÓòÃû½âÎöÖгöÏÖ²»¿ÉÐÞ¸´µÄʧ°Ü"
+-
+-#: nis/nis_print.c:180
+-msgid "None.\n"
+-msgstr "ÎÞ¡£\n"
++#: timezone/zic.c:801
++#, c-format
++msgid "%s in ruleless zone"
++msgstr ""
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:817
+-msgid "Not a XENIX named type file"
+-msgstr "²»ÊÇ XENIX ÃüÃûµÄÀàÐÍÎļþ"
++#: timezone/zic.c:822
++msgid "standard input"
++msgstr "±ê×¼ÊäÈë"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
+-msgid "Not a data message"
+-msgstr "²»ÊÇÊý¾ÝÏûÏ¢"
++#: timezone/zic.c:827
++#, c-format
++msgid "%s: Can't open %s: %s\n"
++msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%s\n"
+
+-#. TRANS A file that isn't a directory was specified when a directory is required.
+-#: stdio-common/../sysdeps/gnu/errlist.c:153
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
+-msgid "Not a directory"
+-msgstr "²»ÊÇĿ¼"
++#: timezone/zic.c:838
++msgid "line too long"
++msgstr "Ðйý³¤"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
+-msgid "Not a name file"
+-msgstr "²»ÊÇÓÐÃûÎļþ"
++#: timezone/zic.c:858
++msgid "input line of unknown type"
++msgstr "δ֪ÀàÐ͵ÄÊäÈëÐÐ"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
+-msgid "Not a stream device"
+-msgstr "²»ÊÇÁ÷É豸"
++#: timezone/zic.c:874
++#, c-format
++msgid "%s: Leap line in non leap seconds file %s\n"
++msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
+-msgid "Not available"
+-msgstr "²»¿ÉÓÃ"
++#: timezone/zic.c:881 timezone/zic.c:1295 timezone/zic.c:1320
++#, c-format
++msgid "%s: panic: Invalid l_value %d\n"
++msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
+-msgid "Not enough space"
+-msgstr "¿Õ¼ä²»¹»"
++#: timezone/zic.c:889
++#, c-format
++msgid "%s: Error reading %s\n"
++msgstr "%s£º¶Á %s ´íÎó\n"
+
+-#: nis/nis_error.c:31
+-msgid "Not found"
+-msgstr "ÕÒ²»µ½"
++#: timezone/zic.c:896
++#, c-format
++msgid "%s: Error closing %s: %s\n"
++msgstr "%s£º¹Ø±Õ %s ´íÎó£º%s\n"
+
+-#: nis/nis_error.c:49
+-msgid "Not found, no such name"
+-msgstr "ÕÒ²»µ½£¬Ã»ÓÐÄǸöÃû×Ö"
++#: timezone/zic.c:901
++msgid "expected continuation line not found"
++msgstr "ÕÒ²»µ½Ó¦¸Ã³öÏÖµÄÐøÐÐ"
+
+-#: nis/nis_error.c:44
+-msgid "Not master server for this domain"
+-msgstr "¸ÃÓòûÓÐÖ÷·þÎñÆ÷"
++#: timezone/zic.c:957
++msgid "wrong number of fields on Rule line"
++msgstr "¹æÔòÐÐÖÐÓòµÄ¸öÊý´íÎó"
+
+-#: nis/nis_error.c:40
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
+-msgid "Not owner"
+-msgstr "²»ÊÇËùÓÐÕß"
++#: timezone/zic.c:961
++msgid "nameless rule"
++msgstr "ÎÞÃû¹æÔò"
+
+-#. TRANS Not supported. A function returns this error when certain parameter
+-#. TRANS values are valid, but the functionality they request is not available.
+-#. TRANS This can mean that the function does not implement a particular command
+-#. TRANS or option value or flag bit at all. For functions that operate on some
+-#. TRANS object given in a parameter, such as a file descriptor or a port, it
+-#. TRANS might instead mean that only @emph{that specific object} (file
+-#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
+-#. TRANS different file descriptors might support different ranges of parameter
+-#. TRANS values.
+-#. TRANS
+-#. TRANS If the entire function is not available at all in the implementation,
+-#. TRANS it returns @code{ENOSYS} instead.
+-#: stdio-common/../sysdeps/gnu/errlist.c:592
+-msgid "Not supported"
+-msgstr "²»Ö§³Ö"
++#: timezone/zic.c:966
++msgid "invalid saved time"
++msgstr ""
+
+-#: nis/nis_print.c:267
++#: timezone/zic.c:985
++msgid "wrong number of fields on Zone line"
++msgstr "ÇøÓòÐÐÖÐÓòµÄ¸öÊý´íÎó"
++
++#: timezone/zic.c:991
+ #, c-format
+-msgid "Number of Columns : %d\n"
+-msgstr "ÁеÄÊýÁ¿ £º%d\n"
++msgid "\"Zone %s\" line and -l option are mutually exclusive"
++msgstr ""
+
+-#: nis/nis_print.c:366
++#: timezone/zic.c:999
+ #, c-format
+-msgid "Number of objects : %u\n"
++msgid "\"Zone %s\" line and -p option are mutually exclusive"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
+-msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"
++#: timezone/zic.c:1011
++#, c-format
++msgid "duplicate zone name %s (file \"%s\", line %d)"
++msgstr "Öظ´µÄÇøÓòÃû %s (Îļþ¡°%s¡±£¬ÐÐ %d)"
++
++#: timezone/zic.c:1027
++msgid "wrong number of fields on Zone continuation line"
+ msgstr ""
+
+-#. TRANS Domain error; used by mathematical functions when an argument value does
+-#. TRANS not fall into the domain over which the function is defined.
+-#: stdio-common/../sysdeps/gnu/errlist.c:241
+-msgid "Numerical argument out of domain"
+-msgstr "ÊýÖµ²ÎÊý³¬³öÓò"
++#: timezone/zic.c:1067
++msgid "invalid UTC offset"
++msgstr "ÎÞЧµÄ UTC Æ«ÒÆÁ¿"
+
+-#. TRANS Range error; used by mathematical functions when the result value is
+-#. TRANS not representable because of overflow or underflow.
+-#: stdio-common/../sysdeps/gnu/errlist.c:247
+-msgid "Numerical result out of range"
+-msgstr "ÊýÖµ½á¹û³¬³ö·¶Î§"
++#: timezone/zic.c:1070
++msgid "invalid abbreviation format"
++msgstr "ÎÞЧµÄËõÂÔ¸ñʽ"
+
+-#: nis/nis_print.c:370
+-#, c-format
+-msgid "Object #%d:\n"
+-msgstr "¶ÔÏó #%d£º\n"
++#: timezone/zic.c:1096
++msgid "Zone continuation line end time is not after end time of previous line"
++msgstr ""
+
+-#: nis/nis_print.c:320
+-#, c-format
+-msgid "Object Name : %s\n"
+-msgstr "¶ÔÏóÃû³Æ £º%s\n"
++#: timezone/zic.c:1123
++msgid "wrong number of fields on Leap line"
++msgstr ""
+
+-#: nis/nis_print.c:332
+-msgid "Object Type : "
+-msgstr "¶ÔÏóÀàÐÍ £º%s"
++#: timezone/zic.c:1132
++msgid "invalid leaping year"
++msgstr "ÎÞЧµÄÈòÄê"
+
+-#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
+-#. TRANS already specifies an NFS-mounted file.
+-#. TRANS (This is an error on some operating systems, but we expect it to work
+-#. TRANS properly on the GNU system, making this error code impossible.)
+-#: stdio-common/../sysdeps/gnu/errlist.c:515
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
+-msgid "Object is remote"
+-msgstr "¶ÔÏóÊÇÔ¶³ÌµÄ"
++#: timezone/zic.c:1147 timezone/zic.c:1250
++msgid "invalid month name"
++msgstr "ÎÞЧµÄÔÂÃû³Æ"
+
+-#: nis/nis_error.c:43
+-msgid "Object with same name exists"
+-msgstr "ͬÃû¶ÔÏóÒÑ´æÔÚ"
++#: timezone/zic.c:1160 timezone/zic.c:1372 timezone/zic.c:1386
++msgid "invalid day of month"
++msgstr "ÎÞЧµÄÈÕ"
+
+-#: timezone/zic.c:2028
+-msgid "Odd number of quotation marks"
+-msgstr "ÆæÊý¸öÒýºÅ"
++#: timezone/zic.c:1165
++msgid "time before zero"
++msgstr ""
+
+-#: elf/ldconfig.c:129
+-msgid "Only process directories specified on the command line. Don't build cache."
+-msgstr "Ö»ÔÚÃüÁîÐÐÖиø³öÁ˽ø³ÌĿ¼¡£Î´´´½¨»º³åÇø¡£"
++#: timezone/zic.c:1173 timezone/zic.c:2049 timezone/zic.c:2068
++msgid "time overflow"
++msgstr "ʱ¼äÒç³ö"
+
+-#: nscd/nscd.c:200 nscd/nscd.c:220 nscd/nscd.c:226
+-msgid "Only root is allowed to use this option!"
+-msgstr "Ö»ÓиùÓû§ÔÊÐíʹÓñ¾Ñ¡Ï"
++#: timezone/zic.c:1176 timezone/zic.c:1279
++msgid "invalid time of day"
++msgstr "ÎÞЧµÄʱ¼ä"
+
+-#. TRANS An operation is already in progress on an object that has non-blocking
+-#. TRANS mode selected.
+-#: stdio-common/../sysdeps/gnu/errlist.c:307
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
+-msgid "Operation already in progress"
+-msgstr "²Ù×÷ÒѾ­ÔÚ½øÐÐ"
++#: timezone/zic.c:1195
++msgid "illegal CORRECTION field on Leap line"
++msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
+-msgid "Operation canceled"
+-msgstr "²Ù×÷ÒÑÈ¡Ïû"
++#: timezone/zic.c:1199
++msgid "illegal Rolling/Stationary field on Leap line"
++msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
+-msgid "Operation not applicable"
+-msgstr "²»¿ÉÓ¦ÓõIJÙ×÷"
++#: timezone/zic.c:1214
++msgid "wrong number of fields on Link line"
++msgstr "Á¬½ÓÐÐÖÐÓòµÄ¸öÊý´íÎó"
+
+-#. TRANS Operation not permitted; only the owner of the file (or other resource)
+-#. TRANS or processes with special privileges can perform the operation.
+-#: stdio-common/../sysdeps/gnu/errlist.c:25
+-msgid "Operation not permitted"
+-msgstr "²»ÔÊÐíµÄ²Ù×÷"
++#: timezone/zic.c:1218
++msgid "blank FROM field on Link line"
++msgstr "Link ÐÐÖÐ¿Õ°×µÄ FROM Óò"
+
+-#. TRANS The operation you requested is not supported. Some socket functions
+-#. TRANS don't make sense for all types of sockets, and others may not be
+-#. TRANS implemented for all communications protocols. In the GNU system, this
+-#. TRANS error can happen for many calls when the object does not support the
+-#. TRANS particular operation; it is a generic indication that the server knows
+-#. TRANS nothing to do for that call.
+-#: stdio-common/../sysdeps/gnu/errlist.c:351
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
+-msgid "Operation not supported"
+-msgstr "²»Ö§³ÖµÄ²Ù×÷"
++#: timezone/zic.c:1222
++msgid "blank TO field on Link line"
++msgstr "Link ÐÐÖÐ¿Õ°×µÄ TO Óò"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
+-msgid "Operation not supported on transport endpoint"
+-msgstr "´«Êä¶Ëµã²»Ö§³ÖµÄ²Ù×÷"
++#: timezone/zic.c:1299
++msgid "invalid starting year"
++msgstr "ÎÞЧµÄÆðʼÄê·Ý"
+
+-#. TRANS An operation that cannot complete immediately was initiated on an object
+-#. TRANS that has non-blocking mode selected. Some functions that must always
+-#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
+-#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
+-#. TRANS the operation has begun and will take some time. Attempts to manipulate
+-#. TRANS the object before the call completes return @code{EALREADY}. You can
+-#. TRANS use the @code{select} function to find out when the pending operation
+-#. TRANS has completed; @pxref{Waiting for I/O}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:301
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
+-msgid "Operation now in progress"
+-msgstr "²Ù×÷ÏÖÔÚÕýÔÚ½øÐÐ"
++#: timezone/zic.c:1303 timezone/zic.c:1328
++msgid "starting year too low to be represented"
++msgstr ""
+
+-#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
+-#. TRANS The values are always the same, on every operating system.
+-#. TRANS
+-#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
+-#. TRANS separate error code.
+-#: stdio-common/../sysdeps/gnu/errlist.c:289
+-msgid "Operation would block"
+-msgstr "²Ù×÷½«×èÈû"
++#: timezone/zic.c:1305 timezone/zic.c:1330
++msgid "starting year too high to be represented"
++msgstr ""
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
+-msgid "Option not supported by protocol"
+-msgstr "ЭÒé²»Ö§³ÖµÄÑ¡Ïî"
++#: timezone/zic.c:1324
++msgid "invalid ending year"
++msgstr "ÎÞЧµÄÖÕÖ¹Äê·Ý"
+
+-#: locale/programs/localedef.c:103
+-msgid "Optional output file prefix"
+-msgstr "¿ÉÑ¡µÄÊä³öÎļþǰ׺"
++#: timezone/zic.c:1333
++msgid "starting year greater than ending year"
++msgstr "ÆðʼÄê·Ý´óÓÚÖÕÖ¹Äê·Ý"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
+-msgid "Out of stream resources"
+-msgstr "Á÷×ÊÔ´²»×ã"
++#: timezone/zic.c:1340
++msgid "typed single year"
++msgstr ""
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:665
+-msgid "Out of streams resources"
+-msgstr "Á÷×ÊÔ´²»×ã"
++#: timezone/zic.c:1377
++msgid "invalid weekday name"
++msgstr "ÎÞЧµÄÐÇÆÚÃû"
+
+-#: iconv/iconv_prog.c:64 locale/programs/localedef.c:99
+-msgid "Output control:"
+-msgstr "Êä³ö¿ØÖÆ£º"
++#: timezone/zic.c:1492
++#, c-format
++msgid "%s: Can't remove %s: %s\n"
++msgstr "%s£ºÎÞ·¨É¾³ý %s£º%s\n"
+
+-#: elf/sprof.c:72
+-msgid "Output selection:"
+-msgstr "Êä³öÑ¡Ôñ£º"
++#: timezone/zic.c:1502
++#, c-format
++msgid "%s: Can't create %s: %s\n"
++msgstr "%s£ºÎÞ·¨´´½¨ %s£º%s\n"
+
+-#: nis/nis_print.c:322
++#: timezone/zic.c:1568
+ #, c-format
+-msgid "Owner : %s\n"
+-msgstr "ËùÓÐÕß £º%s\n"
++msgid "%s: Error writing %s\n"
++msgstr "%s£ºÐ´ %s ´íÎó\n"
+
+-#: nis/nis_print.c:130
+-msgid "PRIVATE\n"
++#: timezone/zic.c:1758
++msgid "can't determine time zone abbreviation to use just after until time"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:757
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
+-msgid "Package not installed"
+-msgstr "°üδ°²×°"
++#: timezone/zic.c:1801
++msgid "too many transitions?!"
++msgstr ""
+
+-#: nscd/nscd_conf.c:83
+-#, c-format
+-msgid "Parse error: %s"
+-msgstr "½âÎö´íÎó£º%s"
++#: timezone/zic.c:1820
++msgid "internal error - addtype called with bad isdst"
++msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ isdst µ÷Óà addtype"
++
++#: timezone/zic.c:1824
++msgid "internal error - addtype called with bad ttisstd"
++msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisstd µ÷Óà addtype"
++
++#: timezone/zic.c:1828
++msgid "internal error - addtype called with bad ttisgmt"
++msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisgmt µ÷Óà addtype"
++
++#: timezone/zic.c:1847
++msgid "too many local time types"
++msgstr "¹ý¶àµÄ±¾µØʱ¼äÀàÐÍ"
++
++#: timezone/zic.c:1875
++msgid "too many leap seconds"
++msgstr ""
+
+-#: nis/nis_error.c:55
+-msgid "Partial success"
++#: timezone/zic.c:1881
++msgid "repeated leap second moment"
+ msgstr ""
+
+-#: nis/nis_error.c:63
+-msgid "Passed object is not the same object on server"
++#: timezone/zic.c:1933
++msgid "Wild result from command execution"
+ msgstr ""
+
+-#: elf/ldconfig.c:282
++#: timezone/zic.c:1934
+ #, c-format
+-msgid "Path `%s' given more than once"
+-msgstr "¶à´Î¸ø³ö·¾¶¡°%s¡±"
+-
+-#. TRANS Permission denied; the file permissions do not allow the attempted operation.
+-#: nis/nis_error.c:39 nis/ypclnt.c:818
+-#: stdio-common/../sysdeps/gnu/errlist.c:109
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
+-msgid "Permission denied"
+-msgstr "ȨÏÞ²»¹»"
+-
+-#: sysdeps/generic/siglist.h:71
+-msgid "Power failure"
+-msgstr "µçԴʧЧ"
+-
+-#: posix/regex.c:1408
+-msgid "Premature end of regular expression"
+-msgstr "³£¹æ±í´ïʽ·ÇÕý³£½áÊø"
++msgid "%s: command was '%s', result was %d\n"
++msgstr "%s£ºÃüÁîΪ¡°%s¡±£¬½á¹ûΪ %d\n"
+
+-#: elf/ldconfig.c:122
+-msgid "Print cache"
+-msgstr "´òÓ¡»º³åÇø"
++#: timezone/zic.c:2029
++msgid "Odd number of quotation marks"
++msgstr "ÆæÊý¸öÒýºÅ"
+
+-#: nscd/nscd.c:89
+-msgid "Print current configuration statistic"
+-msgstr "´òÓ¡µ±Ç°ÅäÖÃͳ¼Æ"
++#: timezone/zic.c:2115
++msgid "use of 2/29 in non leap-year"
++msgstr ""
+
+-#: locale/programs/locale.c:81
+-msgid "Print more information"
+-msgstr "´òÓ¡¸ü¶àÐÅÏ¢"
++#: timezone/zic.c:2149
++msgid "no day in month matches rule"
++msgstr ""
+
+-#: locale/programs/localedef.c:107
+-msgid "Print more messages"
+-msgstr "´òÓ¡¸ü¶àÏûÏ¢"
++#: timezone/zic.c:2172
++msgid "too many, or too long, time zone abbreviations"
++msgstr "¹ý¶à»ò¹ý³¤µÄʱÇøËõд"
+
+-#: argp/argp-parse.c:154
+-msgid "Print program version"
+-msgstr "´òÓ¡³ÌÐò°æ±¾ºÅ"
++#: timezone/zic.c:2213
++#, c-format
++msgid "%s: Can't create directory %s: %s\n"
++msgstr "%s£ºÎÞ·¨´´½¨Ä¿Â¼ %s£º%s\n"
+
+-#: nis/nis_error.c:30
+-msgid "Probable success"
++#: timezone/zic.c:2235
++#, c-format
++msgid "%s: %d did not sign extend correctly\n"
+ msgstr ""
+
+-#: nis/nis_error.c:32
+-msgid "Probably not found"
+-msgstr ""
++#: posix/../sysdeps/generic/wordexp.c:1801
++msgid "parameter null or not set"
++msgstr "²ÎÊýΪ null »òδÉèÖÃ"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:42
+-msgid "Processing request in progress"
+-msgstr ""
++#: posix/../sysdeps/posix/gai_strerror.c:31
++msgid "Address family for hostname not supported"
++msgstr "²»Ö§³ÖµÄÖ÷»úÃûµØÖ·×å"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:53 sysdeps/generic/siglist.h:53
+-msgid "Profiling timer expired"
+-msgstr ""
++#: posix/../sysdeps/posix/gai_strerror.c:32
++msgid "Temporary failure in name resolution"
++msgstr "ÓòÃû½âÎöÔÝʱʧ°Ü"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:709
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
+-msgid "Protocol driver not attached"
+-msgstr ""
++#: posix/../sysdeps/posix/gai_strerror.c:33
++msgid "Bad value for ai_flags"
++msgstr "´íÎóµÄ ai_flags µÄÖµ"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:677
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
+-msgid "Protocol error"
+-msgstr "ЭÒé´íÎó"
++#: posix/../sysdeps/posix/gai_strerror.c:34
++msgid "Non-recoverable failure in name resolution"
++msgstr "ÓòÃû½âÎöÖгöÏÖ²»¿ÉÐÞ¸´µÄʧ°Ü"
+
+-#. TRANS The socket communications protocol family you requested is not supported.
+-#: stdio-common/../sysdeps/gnu/errlist.c:356
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
+-msgid "Protocol family not supported"
+-msgstr "²»Ö§³ÖµÄЭÒé×å"
++#: posix/../sysdeps/posix/gai_strerror.c:35
++msgid "ai_family not supported"
++msgstr "²»Ö§³Ö ai_family"
+
+-#. TRANS You specified a socket option that doesn't make sense for the
+-#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:329
+-msgid "Protocol not available"
+-msgstr "²»¿ÉÓõÄЭÒé"
++#: posix/../sysdeps/posix/gai_strerror.c:36
++msgid "Memory allocation failure"
++msgstr "ÄÚ´æ·ÖÅäʧ°Ü"
+
+-#. TRANS The socket domain does not support the requested communications protocol
+-#. TRANS (perhaps because the requested protocol is completely invalid).
+-#. TRANS @xref{Creating a Socket}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:336
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
+-msgid "Protocol not supported"
+-msgstr "²»Ö§³ÖµÄЭÒé"
++#: posix/../sysdeps/posix/gai_strerror.c:37
++msgid "No address associated with hostname"
++msgstr "ûÓÐÓëÖ÷»úÃû¹ØÁªµÄµØÖ·"
+
+-#. TRANS The socket type does not support the requested communications protocol.
+-#: stdio-common/../sysdeps/gnu/errlist.c:323
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
+-msgid "Protocol wrong type for socket"
+-msgstr ""
++#: posix/../sysdeps/posix/gai_strerror.c:38
++msgid "Name or service not known"
++msgstr "δ֪µÄÃû³Æ»ò·þÎñ"
+
+-#: nis/nis_error.c:65
+-msgid "Query illegal for named table"
++#: posix/../sysdeps/posix/gai_strerror.c:39
++msgid "Servname not supported for ai_socktype"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/unix/siglist.c:29 sysdeps/generic/siglist.h:31
+-msgid "Quit"
+-msgstr "Í˳ö"
++#: posix/../sysdeps/posix/gai_strerror.c:40
++msgid "ai_socktype not supported"
++msgstr "²»Ö§³Ö ai_socktype"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:773
+-msgid "RFS specific error"
+-msgstr ""
++#: posix/../sysdeps/posix/gai_strerror.c:41
++msgid "System error"
++msgstr "ϵͳ´íÎó"
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:540
+-msgid "RPC bad procedure for program"
++#: posix/../sysdeps/posix/gai_strerror.c:42
++msgid "Processing request in progress"
+ msgstr ""
+
+-#: nis/ypclnt.c:792
+-msgid "RPC failure on NIS operation"
+-msgstr ""
++#: posix/../sysdeps/posix/gai_strerror.c:43
++msgid "Request canceled"
++msgstr "ÇëÇóÒÑÈ¡Ïû"
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:530
+-msgid "RPC program not available"
+-msgstr "RPC ³ÌÐò²»¿ÉÓÃ"
++#: posix/../sysdeps/posix/gai_strerror.c:44
++msgid "Request not canceled"
++msgstr "ÇëÇóδȡÏû"
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:535
+-msgid "RPC program version wrong"
+-msgstr "RPC ³ÌÐò°æ±¾´íÎó"
++#: posix/../sysdeps/posix/gai_strerror.c:45
++msgid "All requests done"
++msgstr "Íê³ÉËùÓÐÇëÇó"
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:520
+-msgid "RPC struct is bad"
+-msgstr "RPC ½á¹¹´íÎó"
++#: posix/../sysdeps/posix/gai_strerror.c:46
++msgid "Interrupted by a signal"
++msgstr "±»ÐźÅÖжÏ"
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:525
+-msgid "RPC version wrong"
+-msgstr "RPC °æ±¾´íÎó"
++#: posix/getconf.c:889
++#, c-format
++msgid "Usage: %s [-v specification] variable_name [pathname]\n"
++msgstr "Ó÷¨£º%s [-v ¹æ·¶] ±äÁ¿Ãû [·¾¶Ãû]\n"
+
+-#: sunrpc/clnt_perr.c:284
+-msgid "RPC: (unknown error code)"
+-msgstr "RPC£º(δ֪µÄ´íÎóÂë)"
++#: posix/getconf.c:947
++#, c-format
++msgid "unknown specification \"%s\""
++msgstr "δ֪µÄ¹æ·¶¡°%s¡±"
+
+-#: sunrpc/clnt_perr.c:203
+-msgid "RPC: Authentication error"
+-msgstr "RPC£ºÈÏÖ¤´íÎó"
++#: posix/getconf.c:974 posix/getconf.c:990
++msgid "undefined"
++msgstr "䶨Òå"
+
+-#: sunrpc/clnt_perr.c:183
+-msgid "RPC: Can't decode result"
+-msgstr "RPC£ºÎÞ·¨¶Ô½á¹û½øÐнâÂë"
++#: posix/getconf.c:1012
++#, c-format
++msgid "Unrecognized variable `%s'"
++msgstr "²»¿Éʶ±ðµÄ±äÁ¿¡°%s¡±"
+
+-#: sunrpc/clnt_perr.c:179
+-msgid "RPC: Can't encode arguments"
+-msgstr "RPC£ºÎÞ·¨¶Ô²ÎÊý½øÐбàÂë"
++#: posix/getopt.c:692 posix/getopt.c:704
++#, c-format
++msgid "%s: option `%s' is ambiguous\n"
++msgstr "%s£ºÑ¡Ïî¡°%s¡±¾ßÓжþÒåÐÔ\n"
+
+-#: sunrpc/clnt_perr.c:243
+-msgid "RPC: Failed (unspecified error)"
+-msgstr "RPC£ºÊ§°Ü (δָÃ÷µÄ´íÎó)"
++#: posix/getopt.c:737 posix/getopt.c:741
++#, c-format
++msgid "%s: option `--%s' doesn't allow an argument\n"
++msgstr "%s£ºÑ¡Ïî¡°--%s¡±²»½ÓÊÜÈκβÎÊý\n"
+
+-#: sunrpc/clnt_perr.c:199
+-msgid "RPC: Incompatible versions of RPC"
+-msgstr "RPC£ºRPC °æ±¾²»¼æÈÝ"
++#: posix/getopt.c:750 posix/getopt.c:755
++#, c-format
++msgid "%s: option `%c%s' doesn't allow an argument\n"
++msgstr "%s£ºÑ¡Ïî¡°%c%s¡±²»½ÓÊܲÎÊý\n"
+
+-#: sunrpc/clnt_perr.c:235
+-msgid "RPC: Port mapper failure"
+-msgstr ""
++#: posix/getopt.c:791 posix/getopt.c:804 posix/getopt.c:1093
++#: posix/getopt.c:1106
++#, c-format
++msgid "%s: option `%s' requires an argument\n"
++msgstr "%s£ºÑ¡Ïî¡°%s¡±ÐèÒªÒ»¸ö²ÎÊý\n"
+
+-#: sunrpc/clnt_perr.c:215
+-msgid "RPC: Procedure unavailable"
+-msgstr ""
++#: posix/getopt.c:842 posix/getopt.c:845
++#, c-format
++msgid "%s: unrecognized option `--%s'\n"
++msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°--%s¡±\n"
+
+-#: sunrpc/clnt_perr.c:239
+-msgid "RPC: Program not registered"
+-msgstr "RPC£º³ÌÐòδע²á"
++#: posix/getopt.c:853 posix/getopt.c:856
++#, c-format
++msgid "%s: unrecognized option `%c%s'\n"
++msgstr "%s£ºÎÞ·¨Ê¶±ðµÄÑ¡Ïî¡°%c%s¡±\n"
+
+-#: sunrpc/clnt_perr.c:207
+-msgid "RPC: Program unavailable"
+-msgstr "RPC£º³ÌÐò²»¿ÉÓÃ"
++#: posix/getopt.c:903 posix/getopt.c:906
++#, c-format
++msgid "%s: illegal option -- %c\n"
++msgstr "%s£ºÎÞЧѡÏî -- %c\n"
+
+-#: sunrpc/clnt_perr.c:211
+-msgid "RPC: Program/version mismatch"
+-msgstr "RPC£º³ÌÐò/°æ±¾²»Æ¥Åä"
++#: posix/getopt.c:912 posix/getopt.c:915
++#, c-format
++msgid "%s: invalid option -- %c\n"
++msgstr "%s£ºÎÞЧѡÏî -- %c\n"
+
+-#: sunrpc/clnt_perr.c:223
+-msgid "RPC: Remote system error"
+-msgstr "RPC£ºÔ¶³Ìϵͳ´íÎó"
++#: posix/getopt.c:962 posix/getopt.c:973 posix/getopt.c:1159
++#: posix/getopt.c:1172
++#, c-format
++msgid "%s: option requires an argument -- %c\n"
++msgstr "%s£ºÑ¡ÏîÐèÒªÒ»¸ö²ÎÊý -- %c\n"
+
+-#: sunrpc/clnt_perr.c:219
+-msgid "RPC: Server can't decode arguments"
+-msgstr "RPC£º·þÎñÆ÷ÎÞ·¨¶Ô²ÎÊý½øÐнâÂë"
++#: posix/getopt.c:1025 posix/getopt.c:1036
++#, c-format
++msgid "%s: option `-W %s' is ambiguous\n"
++msgstr "%s£ºÑ¡Ïî¡°-W %s¡±¾ßÓжþÒåÐÔ\n"
+
+-#: sunrpc/clnt_perr.c:176
+-msgid "RPC: Success"
+-msgstr "RPC£º³É¹¦"
++#: posix/getopt.c:1060 posix/getopt.c:1072
++#, c-format
++msgid "%s: option `-W %s' doesn't allow an argument\n"
++msgstr "%s£ºÑ¡Ïî¡°-W %s¡±²»½ÓÊܲÎÊý\n"
+
+-#: sunrpc/clnt_perr.c:195
+-msgid "RPC: Timed out"
+-msgstr "RPC£º³¬Ê±"
++#: posix/regcomp.c:136
++msgid "No match"
++msgstr "ûÓÐÆ¥Åä"
+
+-#: sunrpc/clnt_perr.c:191
+-msgid "RPC: Unable to receive"
+-msgstr "RPC£ºÎÞ·¨½ÓÊÕ"
++#: posix/regcomp.c:139
++msgid "Invalid regular expression"
++msgstr "ÎÞЧµÄ³£¹æ±í´ïʽ"
+
+-#: sunrpc/clnt_perr.c:187
+-msgid "RPC: Unable to send"
+-msgstr "RPC£ºÎÞ·¨·¢ËÍ"
++#: posix/regcomp.c:142
++msgid "Invalid collation character"
++msgstr ""
+
+-#: sunrpc/clnt_perr.c:227
+-msgid "RPC: Unknown host"
+-msgstr "RPC£ºÎ´ÖªÖ÷»ú"
++#: posix/regcomp.c:145
++msgid "Invalid character class name"
++msgstr "ÎÞЧµÄ×Ö·ûÀàÃû"
+
+-#: sunrpc/clnt_perr.c:231
+-msgid "RPC: Unknown protocol"
+-msgstr "RPC£ºÎ´ÖªÐ­Òé"
++#: posix/regcomp.c:148
++msgid "Trailing backslash"
++msgstr ""
+
+-#: nis/nis_print.c:188
+-#, c-format
+-msgid "RSA (%d bits)\n"
+-msgstr "RSA (%d λ)\n"
++#: posix/regcomp.c:151
++msgid "Invalid back reference"
++msgstr "ÎÞЧµÄÏòºóÒýÓÃ"
++
++#: posix/regcomp.c:154
++msgid "Unmatched [ or [^"
++msgstr " ²»Æ¥ÅäµÄ [ »ò [^"
++
++#: posix/regcomp.c:157
++msgid "Unmatched ( or \\("
++msgstr "²»Æ¥ÅäµÄ ( »ò \\("
+
+-#: elf/dl-sym.c:72 elf/dl-sym.c:134
+-msgid "RTLD_NEXT used in code not dynamically loaded"
+-msgstr ""
++#: posix/regcomp.c:160
++msgid "Unmatched \\{"
++msgstr "²»Æ¥ÅäµÄ \\{"
+
+-#: elf/sprof.c:84
+-msgid "Read and display shared object profiling data"
++#: posix/regcomp.c:163
++msgid "Invalid content of \\{\\}"
++msgstr "ÎÞЧµÄ \\{\\} µÄÄÚÈÝ"
++
++#: posix/regcomp.c:166
++msgid "Invalid range end"
+ msgstr ""
+
+-#: nscd/nscd.c:84
+-msgid "Read configuration data from NAME"
+-msgstr "´Ó NAME ÖжÁÈ¡ÅäÖÃÊý¾Ý"
++#: posix/regcomp.c:169
++msgid "Memory exhausted"
++msgstr "ÄÚ´æºÄ¾¡"
+
+-#. TRANS An attempt was made to modify something on a read-only file system.
+-#: stdio-common/../sysdeps/gnu/errlist.c:219
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
+-msgid "Read-only file system"
+-msgstr "Ö»¶ÁÎļþϵͳ"
++#: posix/regcomp.c:172
++msgid "Invalid preceding regular expression"
++msgstr "ÎÞЧµÄÇ°µ¼³£¹æ±í´ïʽ"
+
+-#: string/strsignal.c:67
+-#, c-format
+-msgid "Real-time signal %d"
+-msgstr "ʵʱÐźŠ%d"
++#: posix/regcomp.c:175
++msgid "Premature end of regular expression"
++msgstr "³£¹æ±í´ïʽ·ÇÕý³£½áÊø"
+
+-#: posix/regex.c:1411
++#: posix/regcomp.c:178
+ msgid "Regular expression too big"
+ msgstr "³£¹æ±í´ïʽ¹ý´ó"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:829
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
+-msgid "Remote I/O error"
+-msgstr "Ô¶³Ì I/O ´íÎó"
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:785
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
+-msgid "Remote address changed"
+-msgstr "Ô¶³ÌµØÖ·ÒѸıä"
++#: posix/regcomp.c:181
++msgid "Unmatched ) or \\)"
++msgstr "²»Æ¥ÅäµÄ ) »ò \\)"
+
+-#: inet/ruserpass.c:185
+-msgid "Remove password or make file unreadable by others."
+-msgstr "ɾ³ý²»ÄÜÓÉÆäËüÈ˶ÁÈëµÄ¿ÚÁî»ò make Îļþ"
++#: posix/regcomp.c:615
++msgid "No previous regular expression"
++msgstr "ûÓÐÇ°Ò»¸ö³£¹æ±í´ïʽ"
+
+-#: elf/cache.c:431
++#: argp/argp-help.c:213
+ #, c-format
+-msgid "Renaming of %s to %s failed"
+-msgstr "½« %s ¸ÄÃûΪ %s ʧ°Ü"
++msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
++msgstr "%.*s£º²ÎÊý ARGP_HELP_FMT ÐèÒªÒ»¸öÖµ"
+
+-#: elf/sprof.c:532
++#: argp/argp-help.c:222
+ #, c-format
+-msgid "Reopening shared object `%s' failed"
+-msgstr "ÖØÏÖ´ò¿ª¹²Ïí¶ÔÏó¡°%s¡±Ê§°Ü"
+-
+-#: nis/nis_print.c:174
+-msgid "Replicate :\n"
+-msgstr ""
++msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
++msgstr "%.*s£ºÎ´ÖªµÄ ARGP_HELP_FMT ²ÎÊý"
+
+-#: argp/argp-help.c:1639
++#: argp/argp-help.c:234
+ #, c-format
+-msgid "Report bugs to %s.\n"
+-msgstr "½«´íÎ󱨸æ¸ø %s¡£\n"
+-
+-#: catgets/gencat.c:233 debug/pcprofiledump.c:181 iconv/iconv_prog.c:379
+-#: iconv/iconvconfig.c:321 locale/programs/locale.c:268
+-#: locale/programs/localedef.c:297 malloc/memusagestat.c:602
+-msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+-msgstr "Óá°glibcbug¡±½Å±¾½«´íÎ󱨸æ¸ø <bugs@gnu.org>¡£\n"
++msgid "Garbage in ARGP_HELP_FMT: %s"
++msgstr ""
+
+-#: nis/ypclnt.c:790
+-msgid "Request arguments bad"
+-msgstr "ÇëÇó²ÎÊý´íÎó"
++#: argp/argp-help.c:1189
++msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
++msgstr ""
+
+-#: posix/../sysdeps/posix/gai_strerror.c:43
+-msgid "Request canceled"
+-msgstr "ÇëÇóÒÑÈ¡Ïû"
++#: argp/argp-help.c:1572
++msgid "Usage:"
++msgstr "Ó÷¨£º"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:44
+-msgid "Request not canceled"
+-msgstr "ÇëÇóδȡÏû"
++#: argp/argp-help.c:1576
++msgid " or: "
++msgstr " »ò£º"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
+-msgid "Reserved for future use"
+-msgstr ""
++#: argp/argp-help.c:1588
++msgid " [OPTION...]"
++msgstr " [Ñ¡Ïî...]"
+
+-#: resolv/herror.c:67
+-msgid "Resolver Error 0 (no error)"
+-msgstr "½âÎöÆ÷´íÎó 0 (ÎÞ´íÎó)"
++#: argp/argp-help.c:1615
++#, c-format
++msgid "Try `%s --help' or `%s --usage' for more information.\n"
++msgstr "ÊÔÓá°%s --help¡±»ò¡°%s --usage¡±ÒÔ»ñÈ¡¸ü¶àÐÅÏ¢¡£\n"
+
+-#: resolv/herror.c:107
+-msgid "Resolver internal error"
+-msgstr "½âÎöÆ÷ÄÚ²¿´íÎó"
++#: argp/argp-help.c:1643
++#, c-format
++msgid "Report bugs to %s.\n"
++msgstr "½«´íÎ󱨸æ¸ø %s¡£\n"
+
+-#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+-#. TRANS deadlock situation. The system does not guarantee that it will notice
+-#. TRANS all such situations. This error means you got lucky and the system
+-#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
+-#: stdio-common/../sysdeps/gnu/errlist.c:98
+-msgid "Resource deadlock avoided"
+-msgstr "ÒѱÜÃâ×ÊÔ´ËÀËø"
++#: argp/argp-parse.c:100
++msgid "Give this help list"
++msgstr "¸ø³ö¸ÃϵͳÇóÖúÁбí"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:55 sysdeps/generic/siglist.h:74
+-msgid "Resource lost"
+-msgstr "×ÊÔ´¶ªÊ§"
++#: argp/argp-parse.c:101
++msgid "Give a short usage message"
++msgstr "¸ø³ö¼òÒªµÄÓ÷¨ÐÅÏ¢"
+
+-#. TRANS Resource temporarily unavailable; the call might work if you try again
+-#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
+-#. TRANS they are always the same in the GNU C library.
+-#. TRANS
+-#. TRANS This error can happen in a few different situations:
+-#. TRANS
+-#. TRANS @itemize @bullet
+-#. TRANS @item
+-#. TRANS An operation that would block was attempted on an object that has
+-#. TRANS non-blocking mode selected. Trying the same operation again will block
+-#. TRANS until some external condition makes it possible to read, write, or
+-#. TRANS connect (whatever the operation). You can use @code{select} to find out
+-#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
+-#. TRANS
+-#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
+-#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
+-#. TRANS different from @code{EAGAIN}. To make your program portable, you should
+-#. TRANS check for both codes and treat them the same.
+-#. TRANS
+-#. TRANS @item
+-#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
+-#. TRANS can return this error. It indicates that the shortage is expected to
+-#. TRANS pass, so your program can try the call again later and it may succeed.
+-#. TRANS It is probably a good idea to delay for a few seconds before trying it
+-#. TRANS again, to allow time for other processes to release scarce resources.
+-#. TRANS Such shortages are usually fairly serious and affect the whole system,
+-#. TRANS so usually an interactive program should report the error to the user
+-#. TRANS and return to its command loop.
+-#. TRANS @end itemize
+-#: stdio-common/../sysdeps/gnu/errlist.c:280
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
+-msgid "Resource temporarily unavailable"
+-msgstr "×ÊÔ´ÔÝʱ²»¿ÉÓÃ"
++#: argp/argp-parse.c:102
++msgid "Set the program name"
++msgstr "É趨³ÌÐòÃû"
+
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
+-msgid "Result too large"
+-msgstr "½á¹ûÌ«´ó"
++#: argp/argp-parse.c:104
++msgid "Hang for SECS seconds (default 3600)"
++msgstr "¹ÒÆð SECS Ãë (ĬÈÏ 3600)"
+
+-#: nis/nis_error.c:48
+-msgid "Results sent to callback proc"
+-msgstr ""
++#: argp/argp-parse.c:161
++msgid "Print program version"
++msgstr "´òÓ¡³ÌÐò°æ±¾ºÅ"
+
+-#: elf/sprof.c:87
+-msgid "SHOBJ [PROFDATA]"
+-msgstr ""
++#: argp/argp-parse.c:177
++msgid "(PROGRAM ERROR) No version known!?"
++msgstr "(³ÌÐò´íÎó) ²»ÖªµÀ°æ±¾ºÅ£¡£¿"
+
+-#: nis/nis_print.c:269
++#: argp/argp-parse.c:653
+ #, c-format
+-msgid "Search Path : %s\n"
+-msgstr "ËÑË÷·¾¶ £º%s\n"
+-
+-#: stdio-common/../sysdeps/unix/siglist.c:37 sysdeps/generic/siglist.h:38
+-msgid "Segmentation fault"
+-msgstr "¶Î´íÎó"
++msgid "%s: Too many arguments\n"
++msgstr "%s£º¹ý¶àµÄÑ¡Ïî\n"
+
+-#: nis/nis_error.c:36
+-msgid "Server busy, try again"
+-msgstr "·þÎñÆ÷棬ÖØÊÔ"
++#: argp/argp-parse.c:794
++msgid "(PROGRAM ERROR) Option should have been recognized!?"
++msgstr "(³ÌÐò´íÎó) Ñ¡ÏîÓ¦¸Ã¿Éʶ±ð£¡£¿"
+
+-#: nis/nis_error.c:42
+-msgid "Server out of memory"
+-msgstr "·þÎñÆ÷ÄÚ´æ²»×ã"
++#: resolv/herror.c:67
++msgid "Resolver Error 0 (no error)"
++msgstr "½âÎöÆ÷´íÎó 0 (ÎÞ´íÎó)"
+
+-#: sunrpc/clnt_perr.c:361
+-msgid "Server rejected credential"
+-msgstr ""
++#: resolv/herror.c:68
++msgid "Unknown host"
++msgstr "δ֪µÄÖ÷»ú"
+
+-#: sunrpc/clnt_perr.c:369
+-msgid "Server rejected verifier"
+-msgstr ""
++#: resolv/herror.c:69
++msgid "Host name lookup failure"
++msgstr "Ö÷»úÃûËÑË÷ʧ°Ü"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:39
+-msgid "Servname not supported for ai_socktype"
+-msgstr ""
++#: resolv/herror.c:70
++msgid "Unknown server error"
++msgstr "δ֪µÄ·þÎñÆ÷´íÎó"
+
+-#: argp/argp-parse.c:95
+-msgid "Set the program name"
+-msgstr "É趨³ÌÐòÃû"
++#: resolv/herror.c:71
++msgid "No address associated with name"
++msgstr "ûÓÐÓëÃû×Ö¹ØÁªµÄµØÖ·"
+
+-#: nscd/nscd.c:88
+-msgid "Shut the server down"
+-msgstr "¹Ø±Õ·þÎñÆ÷"
++#: resolv/herror.c:107
++msgid "Resolver internal error"
++msgstr "½âÎöÆ÷ÄÚ²¿´íÎó"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:26
+-msgid "Signal 0"
+-msgstr "ÐźŠ0"
++#: resolv/herror.c:110
++msgid "Unknown resolver error"
++msgstr "δ֪µÄ½âÎöÆ÷´íÎó"
+
+-#. TRANS A file that isn't a socket was specified when a socket is required.
+-#: stdio-common/../sysdeps/gnu/errlist.c:312
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
+-msgid "Socket operation on non-socket"
+-msgstr "¶Ô·ÇÌ×½Ó×Ö½øÐÐÌ×½Ó×Ö²Ù×÷"
++#: resolv/res_hconf.c:147
++#, c-format
++msgid "%s: line %d: expected service, found `%s'\n"
++msgstr "%s£ºÐÐ %d£ºÓ¦Îª service£¬µÃµ½¡°%s¡±\n"
+
+-#. TRANS The socket type is not supported.
+-#: stdio-common/../sysdeps/gnu/errlist.c:341
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
+-msgid "Socket type not supported"
+-msgstr "²»Ö§³ÖµÄÌ×½Ó×ÖÀàÐÍ"
++#: resolv/res_hconf.c:165
++#, c-format
++msgid "%s: line %d: cannot specify more than %d services"
++msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö·þÎñ"
+
+-#. TRANS A network connection was aborted locally.
+-#: stdio-common/../sysdeps/gnu/errlist.c:395
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
+-msgid "Software caused connection abort"
+-msgstr "ÓÉÈí¼þµ¼ÖµÄÁ¬½Ó¶Ï¿ª"
++#: resolv/res_hconf.c:191
++#, c-format
++msgid "%s: line %d: list delimiter not followed by keyword"
++msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔڹؼü×ÖÖ®ºó"
+
+-#: sunrpc/rpcinfo.c:658
+-msgid "Sorry. You are not root\n"
+-msgstr "±§Ç¸¡£Äú²»ÊǸùÓû§\n"
++#: resolv/res_hconf.c:231
++#, c-format
++msgid "%s: line %d: cannot specify more than %d trim domains"
++msgstr "%s£ºÐÐ %d£ºÎÞ·¨Ö¸¶¨¶àÓÚ %d ¸ö¹æÕûÓò"
+
+-#: locale/programs/localedef.c:95
+-msgid "Source definitions are found in FILE"
+-msgstr "ÔÚ FILE ÖÐÕÒµ½Ô´¶¨Òå"
++#: resolv/res_hconf.c:256
++#, c-format
++msgid "%s: line %d: list delimiter not followed by domain"
++msgstr "%s£ºÐÐ %d£ºÁбí·Ö¸ô·ûûÓгöÏÖÔÚÓòÖ®ºó"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:765
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
+-msgid "Srmount error"
+-msgstr ""
++#: resolv/res_hconf.c:319
++#, c-format
++msgid "%s: line %d: expected `on' or `off', found `%s'\n"
++msgstr "%s£ºÐÐ %d£ºÓ¦Îª¡°on¡±»ò¡°off¡±£¬µÃµ½¡°%s¡±\n"
+
+-#: sysdeps/generic/siglist.h:66
+-msgid "Stack fault"
+-msgstr ""
++#: resolv/res_hconf.c:366
++#, c-format
++msgid "%s: line %d: bad command `%s'\n"
++msgstr "%s£ºÐÐ %d£º´íÎóÃüÁî¡°%s¡±\n"
+
+-#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
+-#. TRANS system which is due to file system rearrangements on the server host.
+-#. TRANS Repairing this condition usually requires unmounting and remounting
+-#. TRANS the NFS file system on the local host.
+-#: stdio-common/../sysdeps/gnu/errlist.c:507
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
+-msgid "Stale NFS file handle"
++#: resolv/res_hconf.c:395
++#, c-format
++msgid "%s: line %d: ignoring trailing garbage `%s'\n"
+ msgstr ""
+
+-#: nscd/nscd.c:87
+-msgid "Start NUMBER threads"
+-msgstr "Æô¶¯ NUMBER ¸öÏß³Ì"
++#: nss/getent.c:51
++msgid "database [key ...]"
++msgstr "Êý¾Ý¿â [¼ü ...]"
+
+-#: nis/nis_print.c:365
++#: nss/getent.c:56
++msgid "Service configuration to be used"
++msgstr "ҪʹÓõķþÎñÅäÖÃ"
++
++#: nss/getent.c:136 nss/getent.c:308
+ #, c-format
+-msgid "Status : %s\n"
+-msgstr "״̬ £º%s\n"
++msgid "Enumeration not supported on %s\n"
++msgstr "%s ²»Ö§³Öö¾Ù\n"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:44 sysdeps/generic/siglist.h:44
+-msgid "Stopped"
+-msgstr "Í£Ö¹"
++#: nss/getent.c:732
++msgid "getent - get entries from administrative database."
++msgstr "getent - ÖعÜÀíÊý¾Ý¿â»ñÈ¡ÌõÄ¿¡£"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:43 sysdeps/generic/siglist.h:43
+-msgid "Stopped (signal)"
+-msgstr "Í£Ö¹ (ÐźÅ)"
++#: nss/getent.c:733
++msgid "Supported databases:"
++msgstr "Ö§³ÖµÄÊý¾Ý¿â£º"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:47 sysdeps/generic/siglist.h:47
+-msgid "Stopped (tty input)"
+-msgstr "Í£Ö¹ (tty ÊäÈë)"
++#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
++msgid "wrong number of arguments"
++msgstr "²ÎÊý¸öÊý´íÎó"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:48 sysdeps/generic/siglist.h:48
+-msgid "Stopped (tty output)"
+-msgstr "Í£Ö¹ (tty Êä³ö)"
++#: nss/getent.c:800
++#, c-format
++msgid "Unknown database: %s\n"
++msgstr "δ֪µÄÊý¾Ý¿â£º%s\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:809
+-msgid "Streams pipe error"
+-msgstr "Á÷¹ÜµÀ´íÎó"
++#: debug/pcprofiledump.c:52
++msgid "Don't buffer output"
++msgstr "²»Òª¶ÔÊä³ö½øÐлº³å"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:813
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
+-msgid "Structure needs cleaning"
+-msgstr "½á¹¹ÐèÒªÇåÀí"
++#: debug/pcprofiledump.c:57
++msgid "Dump information generated by PC profiling."
++msgstr ""
+
+-#: nis/nis_error.c:29 nis/ypclnt.c:788 nis/ypclnt.c:862 posix/regex.c:1366
+-#: stdio-common/../sysdeps/gnu/errlist.c:20
+-msgid "Success"
+-msgstr "³É¹¦"
++#: debug/pcprofiledump.c:60
++msgid "[FILE]"
++msgstr "[Îļþ]"
+
+-#: nss/getent.c:703
+-msgid "Supported databases:"
+-msgstr "Ö§³ÖµÄÊý¾Ý¿â£º"
++#: debug/pcprofiledump.c:100
++msgid "cannot open input file"
++msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ"
+
+-#: locale/programs/localedef.c:106
+-msgid "Suppress warnings and information messages"
+-msgstr ""
++#: debug/pcprofiledump.c:106
++msgid "cannot read header"
++msgstr "ÎÞ·¨¶ÁÈëÍ·"
+
+-#: locale/programs/localedef.c:94
+-msgid "Symbolic character names defined in FILE"
+-msgstr ""
++#: debug/pcprofiledump.c:170
++msgid "invalid pointer size"
++msgstr "ÎÞЧµÄÖ¸Õë´óС"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:41
+-msgid "System error"
+-msgstr "ϵͳ´íÎó"
++#: inet/rcmd.c:163 inet/rcmd.c:166
++msgid "rcmd: Cannot allocate memory\n"
++msgstr "rcmd£ºÎÞ·¨·ÖÅäÄÚ´æ\n"
+
+-#: locale/programs/locale.c:73
+-msgid "System information:"
+-msgstr "ϵͳÐÅÏ¢£º"
++#: inet/rcmd.c:185 inet/rcmd.c:188
++msgid "rcmd: socket: All ports in use\n"
++msgstr "rcmd£ºsocket£ºËùÓж˿ڶ¼ÒÑÔÚʹÓÃÁË\n"
+
+-#: nis/ypclnt.c:868
+-msgid "System resource allocation failure"
+-msgstr "ϵͳ×ÊÔ´·ÖÅäʧ°Ü"
++#: inet/rcmd.c:222
++#, c-format
++msgid "connect to address %s: "
++msgstr "Á¬½Óµ½µØÖ· %s£º"
+
+-#: locale/programs/localedef.c:292
++#: inet/rcmd.c:240
+ #, c-format
+-msgid ""
+-"System's directory for character maps : %s\n"
+-" repertoire maps: %s\n"
+-" locale path : %s\n"
+-"%s"
++msgid "Trying %s...\n"
++msgstr "ÕýÔÚ³¢ÊÔ %s...\n"
++
++#: inet/rcmd.c:289
++#, c-format
++msgid "rcmd: write (setting up stderr): %m\n"
+ msgstr ""
+
+-#: nscd/nscd.c:90
+-msgid "TABLE"
++#: inet/rcmd.c:310
++#, c-format
++msgid "rcmd: poll (setting up stderr): %m\n"
+ msgstr ""
+
+-#: nis/nis_print.c:121
+-msgid "TABLE\n"
++#: inet/rcmd.c:313
++msgid "poll: protocol failure in circuit setup\n"
+ msgstr ""
+
+-#: nscd/nscd.c:92
+-msgid "TABLE,yes"
++#: inet/rcmd.c:358
++msgid "socket: protocol failure in circuit setup\n"
+ msgstr ""
+
+-#: nis/nis_print.c:266
++#: inet/rcmd.c:387
+ #, c-format
+-msgid "Table Type : %s\n"
+-msgstr "±í¸ñÀàÐÍ £º%s\n"
++msgid "rcmd: %s: short read"
++msgstr ""
+
+-#: posix/../sysdeps/posix/gai_strerror.c:32
+-msgid "Temporary failure in name resolution"
+-msgstr "ÓòÃû½âÎöÔÝʱʧ°Ü"
++#: inet/rcmd.c:549
++msgid "lstat failed"
++msgstr "lstat ²Ù×÷ʧ°Ü"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:41 sysdeps/generic/siglist.h:41
+-msgid "Terminated"
+-msgstr "ÒÑÖÕÖ¹"
++#: inet/rcmd.c:551
++msgid "not regular file"
++msgstr "²»ÊÇÆÕͨÎļþ"
+
+-#. TRANS An attempt to execute a file that is currently open for writing, or
+-#. TRANS write to a file that is currently being executed. Often using a
+-#. TRANS debugger to run a program is considered having it open for writing and
+-#. TRANS will cause this error. (The name stands for ``text file busy''.) This
+-#. TRANS is not an error in the GNU system; the text is copied as necessary.
+-#: stdio-common/../sysdeps/gnu/errlist.c:198
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
+-msgid "Text file busy"
+-msgstr "Îı¾Îļþæ"
++#: inet/rcmd.c:556
++msgid "cannot open"
++msgstr "ÎÞ·¨´ò¿ª"
+
+-#: iconv/iconv_prog.c:680
+-msgid ""
+-"The following list contain all the coded character sets known. This does\n"
+-"not necessarily mean that all combinations of these names can be used for\n"
+-"the FROM and TO command line parameters. One coded character set can be\n"
+-"listed with several different names (aliases).\n"
+-"\n"
+-" "
+-msgstr ""
++#: inet/rcmd.c:558
++msgid "fstat failed"
++msgstr "fstat ʧ°Ü"
+
+-#: sunrpc/rpc_main.c:1365
+-msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+-msgstr ""
++#: inet/rcmd.c:560
++msgid "bad owner"
++msgstr "´íÎóµÄÓµÓÐÕß"
+
+-#: nis/nis_print.c:227
+-msgid "Time to live : "
+-msgstr "´æÔÚµÄʱ¼ä £º"
++#: inet/rcmd.c:562
++msgid "writeable by other than owner"
++msgstr "¿ÉÓɳýËùÓÐÕßÖ®ÍâµÄÈËдÈë"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:681
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
+-msgid "Timer expired"
+-msgstr "¼ÆʱÆ÷³¬Ê±"
++#: inet/rcmd.c:564
++msgid "hard linked somewhere"
++msgstr "ij´¦µÄÓ²Á¬½Ó"
+
+-#: malloc/memusagestat.c:54
+-msgid "Title string used in output graphic"
+-msgstr "ÓÃÓÚÊä³öͼÐεıêÌâ×Ö·û´®"
++#: inet/ruserpass.c:170 inet/ruserpass.c:193
++msgid "out of memory"
++msgstr "ÄÚ´æ²»×ã"
+
+-#: nis/nis_error.c:56
+-msgid "Too many attributes"
+-msgstr "ÊôÐÔ¹ý¶à"
++#: inet/ruserpass.c:184
++msgid "Error: .netrc file is readable by others."
++msgstr "´íÎó£º.netrc ¶ÔÆäËüÈËÊǿɶÁµÄ¡£"
+
+-#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
+-#. TRANS This often indicates a cycle of symbolic links.
+-#: stdio-common/../sysdeps/gnu/errlist.c:458
+-msgid "Too many levels of symbolic links"
+-msgstr "·ûºÅÁ¬½ÓµÄ²ãÊý¹ý¶à"
++#: inet/ruserpass.c:185
++msgid "Remove password or make file unreadable by others."
++msgstr "ɾ³ý²»ÄÜÓÉÆäËüÈ˶ÁÈëµÄ¿ÚÁî»ò make Îļþ"
+
+-#. TRANS Too many links; the link count of a single file would become too large.
+-#. TRANS @code{rename} can cause this error if the file being renamed already has
+-#. TRANS as many links as it can take (@pxref{Renaming Files}).
+-#: stdio-common/../sysdeps/gnu/errlist.c:226
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
+-msgid "Too many links"
+-msgstr "¹ý¶àµÄÁ¬½Ó"
++#: inet/ruserpass.c:277
++#, c-format
++msgid "Unknown .netrc keyword %s"
++msgstr "δ֪µÄ .netrc ¹Ø¼ü×Ö %s"
+
+-#. TRANS The current process has too many files open and can't open any more.
+-#. TRANS Duplicate descriptors do count toward this limit.
+-#. TRANS
+-#. TRANS In BSD and GNU, the number of open files is controlled by a resource
+-#. TRANS limit that can usually be increased. If you get this error, you might
+-#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
+-#. TRANS @pxref{Limits on Resources}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:176
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
+-msgid "Too many open files"
+-msgstr "´ò¿ªµÄÎļþ¹ý¶à"
++#: sunrpc/auth_unix.c:115 sunrpc/auth_unix.c:118
++msgid "authunix_create: out of memory\n"
++msgstr "authunix_create£ºÄÚ´æ²»×ã\n"
+
+-#. TRANS There are too many distinct file openings in the entire system. Note
+-#. TRANS that any number of linked channels count as just one file opening; see
+-#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
+-#: stdio-common/../sysdeps/gnu/errlist.c:183
+-msgid "Too many open files in system"
+-msgstr "ϵͳÖдò¿ªµÄÎļþ¹ý¶à"
++#: sunrpc/auth_unix.c:318
++msgid "auth_none.c - Fatal marshalling problem"
++msgstr ""
+
+-#. TRANS This means that the per-user limit on new process would be exceeded by
+-#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
+-#. TRANS the @code{RLIMIT_NPROC} limit.
+-#: stdio-common/../sysdeps/gnu/errlist.c:488
+-msgid "Too many processes"
+-msgstr "½ø³Ì¹ý¶à"
++#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
++#, c-format
++msgid "; low version = %lu, high version = %lu"
++msgstr ""
+
+-#. TRANS ???
+-#: stdio-common/../sysdeps/gnu/errlist.c:440
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
+-msgid "Too many references: cannot splice"
++#: sunrpc/clnt_perr.c:125
++msgid "; why = "
+ msgstr ""
+
+-#. TRANS The file quota system is confused because there are too many users.
+-#. TRANS @c This can probably happen in a GNU system when using NFS.
+-#: stdio-common/../sysdeps/gnu/errlist.c:494
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
+-msgid "Too many users"
+-msgstr "Óû§¹ý¶à"
++#: sunrpc/clnt_perr.c:132
++#, c-format
++msgid "(unknown authentication error - %d)"
++msgstr "(δ֪µÄÈÏÖ¤´íÎó - %d)"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:31 sysdeps/generic/siglist.h:33
+-msgid "Trace/breakpoint trap"
+-msgstr ""
++#: sunrpc/clnt_perr.c:177
++msgid "RPC: Success"
++msgstr "RPC£º³É¹¦"
+
+-#: posix/regex.c:1381
+-msgid "Trailing backslash"
+-msgstr ""
++#: sunrpc/clnt_perr.c:180
++msgid "RPC: Can't encode arguments"
++msgstr "RPC£ºÎÞ·¨¶Ô²ÎÊý½øÐбàÂë"
+
+-#. TRANS In the GNU system, opening a file returns this error when the file is
+-#. TRANS translated by a program and the translator program dies while starting
+-#. TRANS up, before it has connected to the file.
+-#: stdio-common/../sysdeps/gnu/errlist.c:615
+-msgid "Translator died"
+-msgstr ""
++#: sunrpc/clnt_perr.c:184
++msgid "RPC: Can't decode result"
++msgstr "RPC£ºÎÞ·¨¶Ô½á¹û½øÐнâÂë"
+
+-#. TRANS You tried to connect a socket that is already connected.
+-#. TRANS @xref{Connecting}.
+-#: stdio-common/../sysdeps/gnu/errlist.c:415
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
+-msgid "Transport endpoint is already connected"
+-msgstr "´«Êä¶ËµãÒÑÁ¬½Ó"
++#: sunrpc/clnt_perr.c:188
++msgid "RPC: Unable to send"
++msgstr "RPC£ºÎÞ·¨·¢ËÍ"
+
+-#. TRANS The socket is not connected to anything. You get this error when you
+-#. TRANS try to transmit data over a socket, without first specifying a
+-#. TRANS destination for the data. For a connectionless socket (for datagram
+-#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
+-#: stdio-common/../sysdeps/gnu/errlist.c:423
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
+-msgid "Transport endpoint is not connected"
+-msgstr "´«Êä¶ËµãÉÐδÁ¬½Ó"
++#: sunrpc/clnt_perr.c:192
++msgid "RPC: Unable to receive"
++msgstr "RPC£ºÎÞ·¨½ÓÊÕ"
++
++#: sunrpc/clnt_perr.c:196
++msgid "RPC: Timed out"
++msgstr "RPC£º³¬Ê±"
++
++#: sunrpc/clnt_perr.c:200
++msgid "RPC: Incompatible versions of RPC"
++msgstr "RPC£ºRPC °æ±¾²»¼æÈÝ"
++
++#: sunrpc/clnt_perr.c:204
++msgid "RPC: Authentication error"
++msgstr "RPC£ºÈÏÖ¤´íÎó"
++
++#: sunrpc/clnt_perr.c:208
++msgid "RPC: Program unavailable"
++msgstr "RPC£º³ÌÐò²»¿ÉÓÃ"
++
++#: sunrpc/clnt_perr.c:212
++msgid "RPC: Program/version mismatch"
++msgstr "RPC£º³ÌÐò/°æ±¾²»Æ¥Åä"
++
++#: sunrpc/clnt_perr.c:216
++msgid "RPC: Procedure unavailable"
++msgstr ""
+
+-#: argp/argp-help.c:1611
+-#, c-format
+-msgid "Try `%s --help' or `%s --usage' for more information.\n"
+-msgstr "ÊÔÓá°%s --help¡±»ò¡°%s --usage¡±ÒÔ»ñÈ¡¸ü¶àÐÅÏ¢¡£\n"
++#: sunrpc/clnt_perr.c:220
++msgid "RPC: Server can't decode arguments"
++msgstr "RPC£º·þÎñÆ÷ÎÞ·¨¶Ô²ÎÊý½øÐнâÂë"
+
+-#: inet/rcmd.c:223
+-#, c-format
+-msgid "Trying %s...\n"
+-msgstr "ÕýÔÚ³¢ÊÔ %s...\n"
++#: sunrpc/clnt_perr.c:224
++msgid "RPC: Remote system error"
++msgstr "RPC£ºÔ¶³Ìϵͳ´íÎó"
+
+-#: nis/nis_print.c:167
+-#, c-format
+-msgid "Type : %s\n"
+-msgstr "ÀàÐÍ £º %s\n"
++#: sunrpc/clnt_perr.c:228
++msgid "RPC: Unknown host"
++msgstr "RPC£ºÎ´ÖªÖ÷»ú"
+
+-#: nis/nis_print.c:51
+-msgid "UNKNOWN"
+-msgstr "δ֪"
++#: sunrpc/clnt_perr.c:232
++msgid "RPC: Unknown protocol"
++msgstr "RPC£ºÎ´ÖªÐ­Òé"
+
+-#: nis/nis_error.c:73
+-msgid "Unable to authenticate NIS+ client"
+-msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ¿Í»§¶Ë"
++#: sunrpc/clnt_perr.c:236
++msgid "RPC: Port mapper failure"
++msgstr ""
+
+-#: nis/nis_error.c:72
+-msgid "Unable to authenticate NIS+ server"
+-msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ·þÎñÆ÷"
++#: sunrpc/clnt_perr.c:240
++msgid "RPC: Program not registered"
++msgstr "RPC£º³ÌÐòδע²á"
+
+-#: nis/nis_error.c:47
+-msgid "Unable to create callback"
+-msgstr "ÎÞ·¨´´½¨»Øµ÷º¯Êý"
++#: sunrpc/clnt_perr.c:244
++msgid "RPC: Failed (unspecified error)"
++msgstr "RPC£ºÊ§°Ü (δָÃ÷µÄ´íÎó)"
+
+-#: nis/nis_error.c:75
+-msgid "Unable to create process on server"
+-msgstr "ÎÞ·¨ÔÚ·þÎñÆ÷ÉÏ´´½¨½ø³Ì"
++#: sunrpc/clnt_perr.c:285
++msgid "RPC: (unknown error code)"
++msgstr "RPC£º(δ֪µÄ´íÎóÂë)"
+
+-#: nis/nis_print.c:194
+-#, c-format
+-msgid "Unknown (type = %d, bits = %d)\n"
+-msgstr "δ֪ (ÀàÐÍ = %d£¬Î» = %d)\n"
++#: sunrpc/clnt_perr.c:357
++msgid "Authentication OK"
++msgstr "ÈÏÖ¤³É¹¦"
+
+-#: inet/ruserpass.c:277
+-#, c-format
+-msgid "Unknown .netrc keyword %s"
+-msgstr "δ֪µÄ .netrc ¹Ø¼ü×Ö %s"
++#: sunrpc/clnt_perr.c:360
++msgid "Invalid client credential"
++msgstr "ÎÞЧµÄ¿Í»§Ö¤Êé"
+
+-#: elf/../sysdeps/generic/readelflib.c:71
+-#, c-format
+-msgid "Unknown ELFCLASS in file %s.\n"
+-msgstr "Îļþ %s ÖÐδ֪µÄ ELFCLASS¡£\n"
++#: sunrpc/clnt_perr.c:364
++msgid "Server rejected credential"
++msgstr "·þÎñÆ÷¾Ü¾øÖ¤Êé"
+
+-#: nis/ypclnt.c:822
+-msgid "Unknown NIS error code"
+-msgstr "δ֪µÄ NIS ´íÎóÂë"
++#: sunrpc/clnt_perr.c:368
++msgid "Invalid client verifier"
++msgstr "ÎÞЧµÄ¿Í»§Ð£Ñé"
+
+-#: elf/cache.c:101
+-msgid "Unknown OS"
+-msgstr "δ֪µÄ²Ù×÷ϵͳ"
++#: sunrpc/clnt_perr.c:372
++msgid "Server rejected verifier"
++msgstr "·þÎñÆ÷¾Ü¾øУÑé"
+
+-#: nss/getent.c:771
+-#, c-format
+-msgid "Unknown database: %s\n"
+-msgstr "δ֪µÄÊý¾Ý¿â£º%s\n"
++#: sunrpc/clnt_perr.c:376
++msgid "Client credential too weak"
++msgstr "¿Í»§Ö¤ÊéÌ«Èõ"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:57
+-msgid "Unknown error"
+-msgstr "δ֪µÄ´íÎó"
++#: sunrpc/clnt_perr.c:380
++msgid "Invalid server verifier"
++msgstr "ÎÞЧµÄ·þÎñÆ÷УÑé"
+
+-#: string/../sysdeps/generic/_strerror.c:48
+-#: string/../sysdeps/mach/_strerror.c:88
+-#: sysdeps/mach/hurd/mips/dl-machine.c:83
+-msgid "Unknown error "
+-msgstr "δ֪µÄ´íÎó "
++#: sunrpc/clnt_perr.c:384
++msgid "Failed (unspecified error)"
++msgstr "ʧ°Ü (δָÃ÷µÄ´íÎó)"
+
+-#: resolv/herror.c:68
+-msgid "Unknown host"
+-msgstr "δ֪µÄÖ÷»ú"
++#: sunrpc/clnt_raw.c:117
++msgid "clnt_raw.c - Fatal header serialization error."
++msgstr "clnt_raw.c - ÖÂÃüµÄÍ·±àÐò´íÎó¡£"
+
+-#: nis/nis_error.c:35
+-msgid "Unknown object"
+-msgstr "δ֪µÄ¶ÔÏó"
++#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
++msgid "clnttcp_create: out of memory\n"
++msgstr "clnttcp_create£ºÄÚ´æ²»×ã\n"
+
+-#: nscd/nscd_conf.c:187
+-#, c-format
+-msgid "Unknown option: %s %s %s"
+-msgstr "δ֪µÄÑ¡Ï%s %s %s"
++#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
++msgid "clntudp_create: out of memory\n"
++msgstr "clntudp_create£ºÄÚ´æ²»×ã\n"
+
+-#: resolv/herror.c:110
+-msgid "Unknown resolver error"
+-msgstr "δ֪µÄ½âÎöÆ÷´íÎó"
++#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
++msgid "clntunix_create: out of memory\n"
++msgstr "clntunix_create£ºÄÚ´æ²»×ã\n"
+
+-#: resolv/herror.c:70
+-msgid "Unknown server error"
+-msgstr "δ֪µÄ·þÎñÆ÷´íÎó"
++#: sunrpc/get_myaddr.c:78
++msgid "get_myaddress: ioctl (get interface configuration)"
++msgstr "get_myaddress£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
+
+-#: string/strsignal.c:71
+-#, c-format
+-msgid "Unknown signal %d"
+-msgstr "δ֪ÐźŠ%d"
++#: sunrpc/pm_getmaps.c:74
++msgid "pmap_getmaps rpc problem"
++msgstr ""
+
+-#: misc/error.c:117 timezone/zic.c:390
+-msgid "Unknown system error"
+-msgstr "δ֪µÄϵͳ´íÎó"
++#: sunrpc/pmap_clnt.c:72
++msgid "__get_myaddress: ioctl (get interface configuration)"
++msgstr "__get_myaddress£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
+
+-#: nis/ypclnt.c:870
+-msgid "Unknown ypbind error"
+-msgstr "δ֪µÄ ypbind ´íÎó"
++#: sunrpc/pmap_clnt.c:137
++msgid "Cannot register service"
++msgstr "ÎÞ·¨×¢²á·þÎñ"
+
+-#: posix/regex.c:1390
+-msgid "Unmatched ( or \\("
+-msgstr "²»Æ¥ÅäµÄ ( »ò \\("
++#: sunrpc/pmap_rmt.c:190
++msgid "broadcast: ioctl (get interface configuration)"
++msgstr "broadcast£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
+
+-#: posix/regex.c:1414
+-msgid "Unmatched ) or \\)"
+-msgstr "²»Æ¥ÅäµÄ ) »ò \\)"
++#: sunrpc/pmap_rmt.c:199
++msgid "broadcast: ioctl (get interface flags)"
++msgstr "broadcast£ºioctl (»ñÈ¡½çÃæ±êÖ¾)"
+
+-#: posix/regex.c:1387
+-msgid "Unmatched [ or [^"
+-msgstr " ²»Æ¥ÅäµÄ [ »ò [^"
++#: sunrpc/pmap_rmt.c:269
++msgid "Cannot create socket for broadcast rpc"
++msgstr "ÎÞ·¨Îª¹ã²¥ rpc ´´½¨Ì×½Ó×Ö"
+
+-#: posix/regex.c:1393
+-msgid "Unmatched \\{"
+-msgstr "²»Æ¥ÅäµÄ \\{"
++#: sunrpc/pmap_rmt.c:276
++msgid "Cannot set socket option SO_BROADCAST"
++msgstr "ÎÞ·¨ÉèÖÃÌ×½Ó×ÖÑ¡Ïî SO_BROADCAST"
+
+-#: posix/getconf.c:1006
+-#, c-format
+-msgid "Unrecognized variable `%s'"
+-msgstr "²»¿Éʶ±ðµÄ±äÁ¿¡°%s¡±"
++#: sunrpc/pmap_rmt.c:328
++msgid "Cannot send broadcast packet"
++msgstr "ÎÞ·¨·¢Ë͹㲥°ü"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:42 sysdeps/generic/siglist.h:42
+-msgid "Urgent I/O condition"
++#: sunrpc/pmap_rmt.c:353
++msgid "Broadcast poll problem"
+ msgstr ""
+
+-#: argp/argp-help.c:1568
+-msgid "Usage:"
+-msgstr "Ó÷¨£º"
++#: sunrpc/pmap_rmt.c:366
++msgid "Cannot receive reply to broadcast"
++msgstr "ÎÞ·¨½ÓÊնԹ㲥µÄÓ¦´ð"
+
+-#: posix/getconf.c:883
++#: sunrpc/rpc_main.c:288
+ #, c-format
+-msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+-msgstr ""
++msgid "%s: output would overwrite %s\n"
++msgstr "%s£ºÊä³ö½«¸²¸Ç %s\n"
+
+-#: sunrpc/rpcinfo.c:674
+-msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
+-msgstr "Ó÷¨£ºrpcinfo [ -n ¶Ë¿ÚºÅ ] -u Ö÷»úÃû ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
++#: sunrpc/rpc_main.c:295
++#, c-format
++msgid "%s: unable to open %s: %m\n"
++msgstr "%s£ºÎÞ·¨´ò¿ª %s£º%m\n"
+
+-#: elf/ldconfig.c:127
+-msgid "Use CACHE as cache file"
+-msgstr "½« CACHE ÓÃ×÷»º³åÇøÎļþ"
++#: sunrpc/rpc_main.c:307
++#, c-format
++msgid "%s: while writing output %s: %m"
++msgstr "%s£ºÐ´ÈëÊä³ö %s ʱ£º%m"
+
+-#: elf/ldconfig.c:128
+-msgid "Use CONF as configuration file"
+-msgstr "½« CONF ÓÃ×÷ÅäÖÃÎļþ"
++#: sunrpc/rpc_main.c:342
++#, c-format
++msgid "cannot find C preprocessor: %s \n"
++msgstr "ÎÞ·¨ÕÒµ½ C Ô¤´¦ÀíÆ÷£º%s\n"
+
+-#: nscd/nscd.c:92
+-msgid "Use separate cache for each user"
+-msgstr "Ϊÿ¸öÓû§Ê¹Ó÷ÖÀëµÄ»º³åÇø"
++#: sunrpc/rpc_main.c:350
++msgid "cannot find any C preprocessor (cpp)\n"
++msgstr "ÎÞ·¨ÕÒµ½ÈκΠC Ô¤´¦ÀíÆ÷ (cpp)\n"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:56 sysdeps/generic/siglist.h:55
+-msgid "User defined signal 1"
+-msgstr "Óû§¶¨ÒåÐźŠ1"
++#: sunrpc/rpc_main.c:419
++#, c-format
++msgid "%s: C preprocessor failed with signal %d\n"
++msgstr "%s£ºC Ô¤´¦ÀíÆ÷ÒòÐźŠ%d ¶øʧ°Ü\n"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:57 sysdeps/generic/siglist.h:56
+-msgid "User defined signal 2"
+-msgstr "Óû§¶¨ÒåÐźŠ2"
++#: sunrpc/rpc_main.c:422
++#, c-format
++msgid "%s: C preprocessor failed with exit code %d\n"
++msgstr "%s£ºC Ô¤´¦ÀíÆ÷ʧ°Ü£¬·µ»Ø %d\n"
+
+-#: stdio-common/../sysdeps/gnu/errlist.c:673
+-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
+-msgid "Value too large for defined data type"
+-msgstr "¶ÔÒѶ¨ÒåµÄÊý¾ÝÀàÐÍÀ´ËµÖµ¹ý´ó"
++#: sunrpc/rpc_main.c:462
++#, c-format
++msgid "illegal nettype :`%s'\n"
++msgstr "·Ç·¨ÍøÂçÀàÐÍ£º¡°%s¡±\n"
+
+-#: stdio-common/../sysdeps/unix/siglist.c:52 sysdeps/generic/siglist.h:52
+-msgid "Virtual timer expired"
+-msgstr "ÐéÄâ¼ÆʱÆ÷³¬Ê±"
++#: sunrpc/rpc_main.c:1104
++msgid "rpcgen: too many defines\n"
++msgstr "rpcgen£º¶¨Òå¹ý¶à\n"
+
+-#: timezone/zic.c:1932
+-msgid "Wild result from command execution"
++#: sunrpc/rpc_main.c:1116
++msgid "rpcgen: arglist coding error\n"
+ msgstr ""
+
+-#: stdio-common/../sysdeps/unix/siglist.c:54 sysdeps/generic/siglist.h:54
+-msgid "Window changed"
+-msgstr ""
++#. TRANS: the file will not be removed; this is an
++#. TRANS: informative message.
++#: sunrpc/rpc_main.c:1149
++#, c-format
++msgid "file `%s' already exists and may be overwritten\n"
++msgstr "Îļþ¡°%s¡±ÒÑ´æÔÚ²¢¿ÉÄܱ»¸²¸Ç\n"
+
+-#: locale/programs/locale.c:77
+-msgid "Write names of available charmaps"
+-msgstr ""
++#: sunrpc/rpc_main.c:1194
++msgid "Cannot specify more than one input file!\n"
++msgstr "ÎÞ·¨Ö¸¶¨¶à¸öÊäÈëÎļþ£¡\n"
+
+-#: locale/programs/locale.c:75
+-msgid "Write names of available locales"
++#: sunrpc/rpc_main.c:1364
++msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+ msgstr ""
+
+-#: locale/programs/locale.c:79
+-msgid "Write names of selected categories"
+-msgstr ""
++#: sunrpc/rpc_main.c:1373
++msgid "Cannot use netid flag with inetd flag!\n"
++msgstr "ÎÞ·¨ÔÚʹÓà inetd ±êÖ¾µÄͬʱʹÓà netid ±êÖ¾£¡\n"
+
+-#: locale/programs/locale.c:80
+-msgid "Write names of selected keywords"
+-msgstr ""
++#: sunrpc/rpc_main.c:1385
++msgid "Cannot use netid flag without TIRPC!\n"
++msgstr "ÎÞ·¨ÔÚδʹÓà TIRPC µÄʱºòʹÓà netid ±êÖ¾£¡\n"
+
+-#: catgets/gencat.c:115
+-msgid "Write output to file NAME"
+-msgstr ""
++#: sunrpc/rpc_main.c:1392
++msgid "Cannot use table flags with newstyle!\n"
++msgstr "ÎÞ·¨ÒÔзç¸ñʹÓñí¸ñ±êÖ¾£¡\n"
+
+-#: elf/cache.c:402 elf/cache.c:411 elf/cache.c:415
+-msgid "Writing of cache data failed"
+-msgstr ""
++#: sunrpc/rpc_main.c:1411
++msgid "\"infile\" is required for template generation flags.\n"
++msgstr "¡°ÊäÈëÎļþ¡±¶ÔÄ£°åÉú³É±êÖ¾À´ËµÊDZØÐëµÄ¡£\n"
+
+-#: elf/cache.c:419
+-msgid "Writing of cache data failed."
+-msgstr ""
++#: sunrpc/rpc_main.c:1416
++msgid "Cannot have more than one file generation flag!\n"
++msgstr "ÎÞ·¨Ê¹ÓöàÓÚÒ»¸öµÄÎļþÉú³É±êÖ¾£¡\n"
+
+-#: catgets/gencat.c:251 elf/ldconfig.c:264 elf/sprof.c:361
+-#: iconv/iconv_prog.c:398 iconv/iconvconfig.c:340 locale/programs/locale.c:286
+-#: locale/programs/localedef.c:316 nscd/nscd.c:292 nscd/nscd_nischeck.c:95
+-#: nss/getent.c:68 posix/getconf.c:909
++#: sunrpc/rpc_main.c:1425
+ #, c-format
+-msgid "Written by %s.\n"
+-msgstr ""
+-
+-#: stdio-common/../sysdeps/gnu/errlist.c:837
+-msgid "Wrong medium type"
+-msgstr "´íÎóµÄ½éÖÊÀàÐÍ"
++msgid "usage: %s infile\n"
++msgstr "Ó÷¨£º%s ÊäÈëÎļþ\n"
+
+-#: nis/ypclnt.c:174
++#: sunrpc/rpc_main.c:1426
+ #, c-format
+-msgid "YPBINDPROC_DOMAIN: %s\n"
+-msgstr ""
++msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
++msgstr "\t%s [-abkCLNTM][-DÃû×Ö[=Öµ]] [-i ´óС] [-I [-K ÃëÊý]] [-Y ·¾¶] ÊäÈëÎļþ\n"
+
+-#: nis/nis_error.c:71
+-msgid "Yes, 42 is the meaning of life"
+-msgstr ""
++#: sunrpc/rpc_main.c:1428
++#, c-format
++msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
++msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
+
+-#. TRANS You did @strong{what}?
+-#: stdio-common/../sysdeps/gnu/errlist.c:627
+-msgid "You really blew it this time"
+-msgstr ""
++#: sunrpc/rpc_main.c:1430
++#, c-format
++msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
++msgstr "\t%s [-s ÍøÂçÀàÐÍ]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
+
+-#: timezone/zic.c:1094
+-msgid "Zone continuation line end time is not after end time of previous line"
+-msgstr ""
++#: sunrpc/rpc_main.c:1431
++#, c-format
++msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
++msgstr "\t%s [-n ÍøÂç id]* [-o Êä³öÎļþ] [ÊäÈëÎļþ]\n"
+
+-#: iconv/iconvconfig.c:114
+-msgid "[DIR...]"
+-msgstr "[Ŀ¼...]"
++#: sunrpc/rpc_scan.c:116
++msgid "constant or identifier expected"
++msgstr "ӦΪ³£Á¿»ò±êʶ·û"
+
+-#: iconv/iconv_prog.c:77
+-msgid "[FILE...]"
+-msgstr "[Îļþ...]"
++#: sunrpc/rpc_scan.c:312
++msgid "illegal character in file: "
++msgstr "ÎļþÖеķǷ¨×Ö·û£º"
+
+-#: debug/pcprofiledump.c:59
+-msgid "[FILE]"
+-msgstr "[Îļþ]"
++#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
++msgid "unterminated string constant"
++msgstr "δÖÕÖ¹µÄ×Ö·û´®³£Á¿"
+
+-#: sunrpc/pmap_clnt.c:72
+-msgid "__get_myaddress: ioctl (get interface configuration)"
++#: sunrpc/rpc_scan.c:383
++msgid "empty char string"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:417
+-#, c-format
+-msgid "`%.*s' already defined as collating element"
+-msgstr ""
++#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
++msgid "preprocessor error"
++msgstr "Ô¤´¦Àí´íÎó"
+
+-#: locale/programs/ld-collate.c:410
++#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+ #, c-format
+-msgid "`%.*s' already defined as collating symbol"
+-msgstr ""
++msgid "program %lu is not available\n"
++msgstr "³ÌÐò %lu ²»¿ÉÓÃ\n"
+
+-#: locale/programs/ld-collate.c:394
++#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
++#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
++#: sunrpc/rpcinfo.c:510
+ #, c-format
+-msgid "`%.*s' already defined in charmap"
+-msgstr ""
++msgid "program %lu version %lu is not available\n"
++msgstr "³ÌÐò %lu °æ±¾ %lu ²»¿ÉÓÃ\n"
+
+-#: locale/programs/ld-collate.c:403
++#: sunrpc/rpcinfo.c:515
+ #, c-format
+-msgid "`%.*s' already defined in repertoire"
+-msgstr ""
++msgid "program %lu version %lu ready and waiting\n"
++msgstr "³ÌÐò %lu °æ±¾ %lu ¾ÍÐ÷²¢µÈ´ý\n"
+
+-#: locale/programs/charmap.c:604 locale/programs/locfile.h:96
+-#: locale/programs/repertoire.c:314
+-#, c-format
+-msgid "`%1$s' definition does not end with `END %1$s'"
+-msgstr ""
++#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
++msgid "rpcinfo: can't contact portmapper"
++msgstr "rpcinfo£ºÎÞ·¨Í¬ portmapper ½»»¥"
++
++#: sunrpc/rpcinfo.c:570
++msgid "No remote programs registered.\n"
++msgstr "ûÓÐ×¢²áµÄÔ¶³Ì³ÌÐò¡£\n"
++
++#: sunrpc/rpcinfo.c:574
++msgid " program vers proto port\n"
++msgstr " ³ÌÐò °æ±¾ ЭÒé ¶Ë¿Ú\n"
++
++#: sunrpc/rpcinfo.c:613
++msgid "(unknown)"
++msgstr "(δ֪)"
+
+-#: locale/programs/ld-collate.c:1281 locale/programs/ld-ctype.c:1455
++#: sunrpc/rpcinfo.c:637
+ #, c-format
+-msgid "`%s' and `%.*s' are no valid names for symbolic range"
+-msgstr ""
++msgid "rpcinfo: broadcast failed: %s\n"
++msgstr "rpcinfo£º¹ã²¥Ê§°Ü£º%s\n"
++
++#: sunrpc/rpcinfo.c:658
++msgid "Sorry. You are not root\n"
++msgstr "±§Ç¸¡£Äú²»ÊǸùÓû§\n"
+
+-#: elf/sprof.c:762
++#: sunrpc/rpcinfo.c:665
+ #, c-format
+-msgid "`%s' is no correct profile data file for `%s'"
+-msgstr ""
++msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
++msgstr "rpcinfo£ºÎÞ·¨É¾³ý³ÌÐò %s °æ±¾ %s µÄ×¢²á\n"
+
+-#: locale/programs/ld-ctype.c:699
+-msgid "`digit' category has not entries in groups of ten"
+-msgstr ""
++#: sunrpc/rpcinfo.c:674
++msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
++msgstr "Ó÷¨£ºrpcinfo [ -n ¶Ë¿ÚºÅ ] -u Ö÷»úÃû ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:35
+-msgid "ai_family not supported"
+-msgstr "²»Ö§³Ö ai_family"
++#: sunrpc/rpcinfo.c:676
++msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
++msgstr " rpcinfo [ -n ¶Ë¿ÚºÅ ] -t Ö÷»ú ³ÌÐòºÅ [ °æ±¾ºÅ ]\n"
+
+-#: posix/../sysdeps/posix/gai_strerror.c:40
+-msgid "ai_socktype not supported"
+-msgstr "²»Ö§³Ö ai_socktype"
++#: sunrpc/rpcinfo.c:678
++msgid " rpcinfo -p [ host ]\n"
++msgstr " rpcinfo -p [ Ö÷»ú ]\n"
+
+-#: nscd/nscd.c:130
+-msgid "already running"
+-msgstr "ÒѾ­ÔÚÔËÐÐ"
++#: sunrpc/rpcinfo.c:679
++msgid " rpcinfo -b prognum versnum\n"
++msgstr " rpcinfo -b ³ÌÐòºÅ °æ±¾ºÅ\n"
++
++#: sunrpc/rpcinfo.c:680
++msgid " rpcinfo -d prognum versnum\n"
++msgstr " rpcinfo -d ³ÌÐòºÅ °æ±¾ºÅ\n"
+
+-#: locale/programs/charmap.c:439 locale/programs/repertoire.c:184
++#: sunrpc/rpcinfo.c:695
+ #, c-format
+-msgid "argument to <%s> must be a single character"
+-msgstr "<%s>µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
++msgid "rpcinfo: %s is unknown service\n"
++msgstr "rpcinfo£º%s ÊÇδ֪µÄ·þÎñ\n"
+
+-#: locale/programs/locfile.c:126
++#: sunrpc/rpcinfo.c:732
+ #, c-format
+-msgid "argument to `%s' must be a single character"
+-msgstr "¡°%s¡±µÄ²ÎÊý±ØÐëÊǵ¥¸ö×Ö·û"
++msgid "rpcinfo: %s is unknown host\n"
++msgstr "rpcinfo£º%s ÊÇδ֪µÄÖ÷»ú\n"
+
+-#: sunrpc/auth_unix.c:322
+-msgid "auth_none.c - Fatal marshalling problem"
++#: sunrpc/svc_run.c:76
++msgid "svc_run: - poll failed"
+ msgstr ""
+
+-#: sunrpc/auth_unix.c:114 sunrpc/auth_unix.c:117 sunrpc/auth_unix.c:150
+-#: sunrpc/auth_unix.c:153
+-msgid "authunix_create: out of memory\n"
+-msgstr "authunix_create£ºÄÚ´æ²»×ã\n"
++#: sunrpc/svc_simple.c:87
++#, c-format
++msgid "can't reassign procedure number %ld\n"
++msgstr "ÎÞ·¨ÖØÐÂÖ¸¶¨½ø³Ì±àºÅ %ld\n"
+
+-#: locale/programs/charmap.c:369 locale/programs/locfile.c:120
+-#: locale/programs/locfile.c:147 locale/programs/repertoire.c:176
+-msgid "bad argument"
+-msgstr "´íÎóµÄ²ÎÊý"
++#: sunrpc/svc_simple.c:96
++msgid "couldn't create an rpc server\n"
++msgstr "ÎÞ·¨´´½¨ rpc ·þÎñÆ÷\n"
+
+-#: inet/rcmd.c:514
+-msgid "bad owner"
+-msgstr "´íÎóµÄÓµÓÐÕß"
++#: sunrpc/svc_simple.c:104
++#, c-format
++msgid "couldn't register prog %ld vers %ld\n"
++msgstr "ÎÞ·¨×¢²á³ÌÐò %ld °æ±¾ %ld\n"
+
+-#: timezone/zic.c:1216
+-msgid "blank FROM field on Link line"
+-msgstr "Link ÐÐÖÐ¿Õ°×µÄ FROM Óò"
++#: sunrpc/svc_simple.c:111
++msgid "registerrpc: out of memory\n"
++msgstr "registerrpc£ºÄÚ´æ²»×ã\n"
+
+-#: timezone/zic.c:1220
+-msgid "blank TO field on Link line"
+-msgstr "Link ÐÐÖÐ¿Õ°×µÄ TO Óò"
++#: sunrpc/svc_simple.c:175
++#, c-format
++msgid "trouble replying to prog %d\n"
++msgstr ""
+
+-#: malloc/mcheck.c:302
+-msgid "block freed twice\n"
+-msgstr "¿éÊÍ·ÅÁËÁ½´Î\n"
++#: sunrpc/svc_simple.c:183
++#, c-format
++msgid "never registered prog %d\n"
++msgstr "´Óδע²áµÄ³ÌÐò %d\n"
+
+-#: malloc/mcheck.c:305
+-msgid "bogus mcheck_status, library is buggy\n"
+-msgstr ""
++#: sunrpc/svc_tcp.c:155
++msgid "svc_tcp.c - tcp socket creation problem"
++msgstr "svc_tcp.c - tcp Ì×½Ó×Ö´´½¨ÎÊÌâ"
+
+-#: sunrpc/pmap_rmt.c:186
+-msgid "broadcast: ioctl (get interface configuration)"
+-msgstr "broadcast£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
++#: sunrpc/svc_tcp.c:170
++msgid "svc_tcp.c - cannot getsockname or listen"
++msgstr "svc_tcp.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
+
+-#: sunrpc/pmap_rmt.c:195
+-msgid "broadcast: ioctl (get interface flags)"
+-msgstr "broadcast£ºioctl (»ñÈ¡½çÃæ±êÖ¾)"
++#: sunrpc/svc_tcp.c:181 sunrpc/svc_tcp.c:184
++msgid "svctcp_create: out of memory\n"
++msgstr "svctcp_create£ºÄÚ´æ²»×ã\n"
+
+-#: sunrpc/svc_udp.c:541
+-msgid "cache_set: could not allocate new rpc_buffer"
+-msgstr "cache_set£ºÎÞ·¨·ÖÅäÐ嵀 rpc_buffer"
++#: sunrpc/svc_tcp.c:225 sunrpc/svc_tcp.c:228
++msgid "svc_tcp: makefd_xprt: out of memory\n"
++msgstr "svc_tcp£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
+
+-#: sunrpc/svc_udp.c:535
+-msgid "cache_set: victim alloc failed"
+-msgstr ""
++#: sunrpc/svc_udp.c:128
++msgid "svcudp_create: socket creation problem"
++msgstr "svcudp_create: Ì×½Ó×Ö´´½¨ÎÊÌâ"
+
+-#: sunrpc/svc_udp.c:524
+-msgid "cache_set: victim not found"
+-msgstr ""
++#: sunrpc/svc_udp.c:142
++msgid "svcudp_create - cannot getsockname"
++msgstr "svcudp_create - ÎÞ·¨µ÷Óà getsockname"
+
+-#: timezone/zic.c:1757
+-msgid "can't determine time zone abbreviation to use just after until time"
+-msgstr ""
++#: sunrpc/svc_udp.c:154 sunrpc/svc_udp.c:157
++msgid "svcudp_create: out of memory\n"
++msgstr "svcudp_create£ºÄÚ´æ²»×ã\n"
+
+-#: sunrpc/svc_simple.c:88
+-#, c-format
+-msgid "can't reassign procedure number %ld\n"
+-msgstr ""
++#: sunrpc/svc_udp.c:182 sunrpc/svc_udp.c:185
++msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
++msgstr "svcudp_create£ºxp_pad ¶Ô IP_PKTINFO À´ËµÌ«Ð¡\n"
+
+-#: elf/dl-reloc.c:152
+-msgid "can't restore segment prot after reloc"
+-msgstr ""
++#: sunrpc/svc_udp.c:471
++msgid "enablecache: cache already enabled"
++msgstr "enablecache£º»º³åÇøÒѾ­ÆôÓÃ"
+
+-#: locale/programs/localedef.c:487
+-#, c-format
+-msgid "cannot add already read locale `%s' a second time"
+-msgstr "ÎÞ·¨ÔÙ´ÎÌí¼ÓÒѾ­¶ÁÈëµÄ¡°%s¡±"
++#: sunrpc/svc_udp.c:477
++msgid "enablecache: could not allocate cache"
++msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇø"
+
+-#: elf/dl-deps.c:454
+-msgid "cannot allocate dependency list"
+-msgstr "ÎÞ·¨·ÖÅäÒÐÀµÁбí"
++#: sunrpc/svc_udp.c:485
++msgid "enablecache: could not allocate cache data"
++msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇøÊý¾Ý"
+
+-#: elf/dl-load.c:1039
+-msgid "cannot allocate memory for program header"
+-msgstr "ÎÞ·¨Îª³ÌÐòÍ··ÖÅäÄÚ´æ"
++#: sunrpc/svc_udp.c:492
++msgid "enablecache: could not allocate cache fifo"
++msgstr ""
+
+-#: elf/dl-load.c:348
+-msgid "cannot allocate name record"
+-msgstr "ÎÞ·¨·ÖÅäÃû¼Ç¼"
++#: sunrpc/svc_udp.c:528
++msgid "cache_set: victim not found"
++msgstr "cache_set£ºÕÒ²»µ½ victim"
+
+-#: elf/sprof.c:930 elf/sprof.c:982
+-msgid "cannot allocate symbol data"
+-msgstr "ÎÞ·¨·ÖÅä·ûºÅÊý¾Ý"
++#: sunrpc/svc_udp.c:539
++msgid "cache_set: victim alloc failed"
++msgstr "cache_set£º·ÖÅä victim ʧ°Ü"
+
+-#: elf/dl-deps.c:484
+-msgid "cannot allocate symbol search list"
+-msgstr "ÎÞ·¨·ÖÅä·ûºÅËÑË÷Áбí"
++#: sunrpc/svc_udp.c:545
++msgid "cache_set: could not allocate new rpc_buffer"
++msgstr "cache_set£ºÎÞ·¨·ÖÅäÐ嵀 rpc_buffer"
+
+-#: elf/dl-version.c:292
+-msgid "cannot allocate version reference table"
+-msgstr "ÎÞ·¨·ÖÅä°æ±¾ÒýÓñí¸ñ"
++#: sunrpc/svc_unix.c:150
++msgid "svc_unix.c - AF_UNIX socket creation problem"
++msgstr "svc_unix.c - AF_UNIX Ì×½Ó×Ö´´½¨ÎÊÌâ"
+
+-#: elf/dl-load.c:1008
+-msgid "cannot change memory protections"
+-msgstr "ÎÞ·¨¸Ä±äÄÚ´æ±£»¤"
++#: sunrpc/svc_unix.c:166
++msgid "svc_unix.c - cannot getsockname or listen"
++msgstr "svc_unix.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
+
+-#: elf/dl-load.c:540
+-msgid "cannot create RUNPATH/RPATH copy"
+-msgstr "ÎÞ·¨´´½¨ RUNPATH/RPATH µÄ¸±±¾"
++#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
++msgid "svcunix_create: out of memory\n"
++msgstr "svcunix_create£ºÄÚ´æ²»×ã\n"
+
+-#: elf/dl-load.c:456 elf/dl-load.c:525 elf/dl-load.c:553 elf/dl-load.c:600
+-#: elf/dl-load.c:693
+-msgid "cannot create cache for search path"
+-msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶»º³åÆ÷"
++#: sunrpc/svc_unix.c:222 sunrpc/svc_unix.c:225
++msgid "svc_unix: makefd_xprt: out of memory\n"
++msgstr "svc_unix£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
+
+-#: elf/sprof.c:715 elf/sprof.c:773
+-msgid "cannot create internal descriptor"
+-msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
++#: sunrpc/xdr.c:570 sunrpc/xdr.c:573
++msgid "xdr_bytes: out of memory\n"
++msgstr "xdr_bytes£ºÄÚ´æ²»×ã\n"
+
+-#: elf/sprof.c:413
+-msgid "cannot create internal descriptors"
+-msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
++#: sunrpc/xdr.c:725 sunrpc/xdr.c:728
++msgid "xdr_string: out of memory\n"
++msgstr "xdr_string£ºÄÚ´æ²»×ã\n"
+
+-#: locale/programs/locfile.c:693
+-#, c-format
+-msgid "cannot create output file `%s' for category `%s'"
+-msgstr ""
++#: sunrpc/xdr_array.c:111 sunrpc/xdr_array.c:114
++msgid "xdr_array: out of memory\n"
++msgstr "xdr_array£ºÄÚ´æ²»×ã\n"
+
+-#: elf/dl-load.c:590
+-msgid "cannot create search path array"
+-msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶Êý×é"
++#: sunrpc/xdr_rec.c:158 sunrpc/xdr_rec.c:161
++msgid "xdrrec_create: out of memory\n"
++msgstr "xdrrec_create£ºÄÚ´æ²»×ã\n"
+
+-#: elf/dl-load.c:1125
+-msgid "cannot create searchlist"
+-msgstr "ÎÞ·¨´´½¨ËÑË÷Áбí"
++#: sunrpc/xdr_ref.c:88 sunrpc/xdr_ref.c:91
++msgid "xdr_reference: out of memory\n"
++msgstr "xdr_reference£ºÄÚ´æ²»×ã\n"
+
+-#: elf/dl-load.c:830 elf/dl-load.c:1724
+-msgid "cannot create shared object descriptor"
+-msgstr "ÎÞ·¨´´½¨¹²Ïí¶ÔÏóÃèÊö·û"
++#: nis/nis_callback.c:189
++msgid "unable to free arguments"
++msgstr "ÎÞ·¨ÊͷŲÎÊý"
+
+-#: catgets/gencat.c:1315
+-msgid "cannot determine escape character"
+-msgstr "ÎÞ·¨È·¶¨×ªÒå×Ö·û"
++#: nis/nis_error.c:30
++msgid "Probable success"
++msgstr ""
+
+-#: elf/dl-load.c:958
+-msgid "cannot dynamically load executable"
+-msgstr "ÎÞ·¨¶¯Ì¬×°Èë¿ÉÖ´ÐÐÎļþ"
++#: nis/nis_error.c:31
++msgid "Not found"
++msgstr "ÕÒ²»µ½"
+
+-#: nscd/connections.c:183
+-#, c-format
+-msgid "cannot enable socket to accept connections: %s"
+-msgstr "ÎÞ·¨ÆôÓÃÌ×½Ó×ÖÒÔ½ÓÊÜÁ¬½Ó£º%s"
++#: nis/nis_error.c:32
++msgid "Probably not found"
++msgstr ""
+
+-#: elf/dl-open.c:121
+-msgid "cannot extend global scope"
+-msgstr "ÎÞ·¨À©Õ¹È«¾Ö·¶Î§"
++#: nis/nis_error.c:33
++msgid "Cache expired"
++msgstr "»º³åÆ÷¹ýÆÚ"
+
+-#: sunrpc/rpc_main.c:343
+-#, c-format
+-msgid "cannot find C preprocessor: %s \n"
+-msgstr "ÎÞ·¨ÕÒµ½ C Ô¤´¦ÀíÆ÷£º%s\n"
++#: nis/nis_error.c:34
++msgid "NIS+ servers unreachable"
++msgstr "NIS+ ·þÎñÆ÷²»¿É´ï"
+
+-#: sunrpc/rpc_main.c:351
+-msgid "cannot find any C preprocessor (cpp)\n"
+-msgstr "ÎÞ·¨ÕÒµ½ÈκΠC Ô¤´¦ÀíÆ÷ (cpp)\n"
++#: nis/nis_error.c:35
++msgid "Unknown object"
++msgstr "δ֪µÄ¶ÔÏó"
+
+-#: iconv/iconvconfig.c:1159
+-msgid "cannot generate output file"
+-msgstr "ÎÞ·¨Éú³ÉÊä³öÎļþ"
++#: nis/nis_error.c:36
++msgid "Server busy, try again"
++msgstr "·þÎñÆ÷棬ÖØÊÔ"
+
+-#: nscd/connections.c:227
+-#, c-format
+-msgid "cannot handle old request version %d; current version is %d"
+-msgstr "ÎÞ·¨´¦Àí¾ÉÇëÇó°æ±¾ %d£»µ±Ç°°æ±¾Îª %d"
++#: nis/nis_error.c:37
++msgid "Generic system error"
++msgstr "ͨÓÃϵͳ´íÎó"
+
+-#: elf/sprof.c:670
+-msgid "cannot load profiling data"
++#: nis/nis_error.c:38
++msgid "First/next chain broken"
+ msgstr ""
+
+-#: elf/dl-reloc.c:62
+-msgid "cannot make segment writable for relocation"
++#: nis/nis_error.c:41
++msgid "Name not served by this server"
+ msgstr ""
+
+-#: elf/dl-load.c:1024
+-msgid "cannot map zero-fill pages"
+-msgstr ""
++#: nis/nis_error.c:42
++msgid "Server out of memory"
++msgstr "·þÎñÆ÷ÄÚ´æ²»×ã"
+
+-#: inet/rcmd.c:510
+-msgid "cannot open"
+-msgstr "ÎÞ·¨´ò¿ª"
++#: nis/nis_error.c:43
++msgid "Object with same name exists"
++msgstr "ͬÃû¶ÔÏóÒÑ´æÔÚ"
+
+-#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+-#, c-format
+-msgid "cannot open `%s'"
+-msgstr "ÎÞ·¨´ò¿ª¡°%s¡±"
++#: nis/nis_error.c:44
++msgid "Not master server for this domain"
++msgstr "¸ÃÓòûÓÐÖ÷·þÎñÆ÷"
+
+-#: debug/pcprofiledump.c:96
+-msgid "cannot open input file"
+-msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ"
++#: nis/nis_error.c:45
++msgid "Invalid object for operation"
++msgstr "²Ù×÷ÎÞЧµÄ¶ÔÏó"
+
+-#: catgets/gencat.c:288 iconv/iconv_charmap.c:159 iconv/iconv_prog.c:265
+-#, c-format
+-msgid "cannot open input file `%s'"
+-msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ¡°%s¡±"
++#: nis/nis_error.c:46
++msgid "Malformed name, or illegal name"
++msgstr ""
+
+-#: locale/programs/localedef.c:203 locale/programs/localedef.c:218
+-#: locale/programs/localedef.c:513 locale/programs/localedef.c:533
+-#, c-format
+-msgid "cannot open locale definition file `%s'"
+-msgstr "ÎÞ·¨´ò¿ªÇøÓò¶¨ÒåÎļþ¡°%s¡±"
++#: nis/nis_error.c:47
++msgid "Unable to create callback"
++msgstr "ÎÞ·¨´´½¨»Øµ÷º¯Êý"
+
+-#: iconv/iconv_prog.c:209
+-msgid "cannot open output file"
+-msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ"
++#: nis/nis_error.c:48
++msgid "Results sent to callback proc"
++msgstr ""
+
+-#: catgets/gencat.c:949 catgets/gencat.c:990
+-#, c-format
+-msgid "cannot open output file `%s'"
+-msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ¡°%s¡±"
++#: nis/nis_error.c:49
++msgid "Not found, no such name"
++msgstr "ÕÒ²»µ½£¬Ã»ÓÐÄǸöÃû×Ö"
+
+-#: locale/programs/locfile.c:571
+-#, c-format
+-msgid "cannot open output file `%s' for category `%s'"
+-msgstr "ÎÞ·¨Îª·¶³ë¡°%2$s¡±´ò¿ªÊä³öÎļþ¡°%1$s¡±"
++#: nis/nis_error.c:50
++msgid "Name/entry isn't unique"
++msgstr "Ãû³Æ/ÌõÄ¿²»Î¨Ò»"
+
+-#: elf/dl-load.c:1737
+-msgid "cannot open shared object file"
+-msgstr "ÎÞ·¨´ò¿ª¹²Ïí¶ÔÏóÎļþ"
++#: nis/nis_error.c:51
++msgid "Modification failed"
++msgstr "ÐÞ¸Äʧ°Ü"
+
+-#: nscd/connections.c:165
+-#, c-format
+-msgid "cannot open socket: %s"
+-msgstr "ÎÞ·¨´ò¿ªÌ×½Ó×Ö£º%s"
++#: nis/nis_error.c:52
++msgid "Database for table does not exist"
++msgstr "±í¸ñÊý¾Ý¿â²»´æÔÚ"
+
+-#: elf/dl-load.c:822
+-msgid "cannot open zero fill device"
+-msgstr "ÎÞ·¨´ò¿ªÁãÌî³äÉ豸"
++#: nis/nis_error.c:53
++msgid "Entry/table type mismatch"
++msgstr "ÌõÄ¿/±í¸ñÀàÐͲ»Æ¥Åä"
+
+-#: locale/programs/charmap-dir.c:61
+-#, c-format
+-msgid "cannot read character map directory `%s'"
+-msgstr ""
++#: nis/nis_error.c:54
++msgid "Link points to illegal name"
++msgstr "Á¬½ÓÖ¸Ïò·Ç·¨Ãû³Æ"
+
+-#: nscd/connections.c:125
+-msgid "cannot read configuration file; this is fatal"
+-msgstr "ÎÞ·¨¶ÁÈëÅäÖÃÎļþ£»ÕâÊÇÖÂÃüµÄ"
++#: nis/nis_error.c:55
++msgid "Partial success"
++msgstr "²¿·Ö³É¹¦"
+
+-#: elf/dl-load.c:846 elf/dl-load.c:1247 elf/dl-load.c:1319 elf/dl-load.c:1333
+-msgid "cannot read file data"
+-msgstr "ÎÞ·¨¶ÁÈëÎļþÊý¾Ý"
++#: nis/nis_error.c:56
++msgid "Too many attributes"
++msgstr "ÊôÐÔ¹ý¶à"
+
+-#: debug/pcprofiledump.c:102
+-msgid "cannot read header"
+-msgstr "ÎÞ·¨¶ÁÈëÍ·"
++#: nis/nis_error.c:57
++msgid "Error in RPC subsystem"
++msgstr "RPC ×ÓϵͳÖгö´í"
+
+-#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+-#, c-format
+-msgid "cannot read header from `%s'"
+-msgstr "ÎÞ·¨´Ó¡°%s¡±ÖжÁÈëÍ·"
++#: nis/nis_error.c:58
++msgid "Missing or malformed attribute"
++msgstr "ÒÅ©»ò»ûÐεÄÊôÐÔ"
+
+-#: nscd/nscd_stat.c:128
+-msgid "cannot read statistics data"
+-msgstr "ÎÞ·¨¶ÁÈëͳ¼ÆÊý¾Ý"
++#: nis/nis_error.c:59
++msgid "Named object is not searchable"
++msgstr "²»ÄÜËÑË÷ÃüÃû¶ÔÏó"
+
+-#: locale/programs/repertoire.c:331
+-msgid "cannot safe new repertoire map"
++#: nis/nis_error.c:60
++msgid "Error while talking to callback proc"
++msgstr "Óë»Øµ÷º¯Êý½»»¥Ê±³ö´í"
++
++#: nis/nis_error.c:61
++msgid "Non NIS+ namespace encountered"
+ msgstr ""
+
+-#: elf/dl-load.c:784
+-msgid "cannot stat shared object"
+-msgstr "ÎÞ·¨¶Ô¹²ÏíÄ¿±ê½øÐÐ stat ²Ù×÷"
++#: nis/nis_error.c:62
++msgid "Illegal object type for operation"
++msgstr "²Ù×÷µÄ·Ç·¨¶ÔÏóÀàÐÍ"
+
+-#: nscd/cache.c:150 nscd/connections.c:151
+-#, c-format
+-msgid "cannot stat() file `%s': %s"
+-msgstr "ÎÞ·¨¶ÔÎļþ¡°%s¡±½øÐÐ stat() ²Ù×÷£º%s"
++#: nis/nis_error.c:63
++msgid "Passed object is not the same object on server"
++msgstr ""
+
+-#: locale/programs/localedef.c:230
+-#, c-format
+-msgid "cannot write output files to `%s'"
+-msgstr "ÎÞ·¨½«Êä³öÎļþдÈë¡°%s¡±"
++#: nis/nis_error.c:64
++msgid "Modify operation failed"
++msgstr "Ð޸IJÙ×÷ʧ°Ü"
+
+-#: nscd/connections.c:265 nscd/connections.c:287
+-#, c-format
+-msgid "cannot write result: %s"
+-msgstr "ÎÞ·¨Ð´Èë½á¹û£º¡°%s¡±"
++#: nis/nis_error.c:65
++msgid "Query illegal for named table"
++msgstr "¶ÔÃüÃû±íÀ´Ëµ²éѯ·Ç·¨"
+
+-#: nscd/nscd_stat.c:87
+-#, c-format
+-msgid "cannot write statistics: %s"
+-msgstr "ÎÞ·¨Ð´Èëͳ¼Æ£º%s"
++#: nis/nis_error.c:66
++msgid "Attempt to remove a non-empty table"
++msgstr "ÊÔͼɾ³ý·Ç¿ÕµÄ±í"
+
+-#: locale/programs/ld-ctype.c:517
+-#, c-format
+-msgid "character '%s' in class `%s' must be in class `%s'"
+-msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±±ØÐëÊôÓÚÀà¡°%3$s¡±"
++#: nis/nis_error.c:67
++msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
++msgstr "·ÃÎÊ NIS+ ÀäÆô¶¯Îļþ³ö´í¡£NIS+ °²×°ÁËÂð£¿"
+
+-#: locale/programs/ld-ctype.c:532
+-#, c-format
+-msgid "character '%s' in class `%s' must not be in class `%s'"
+-msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û¡°%1$s¡±²»µÃÊôÓÚÀà¡°%3$s¡±"
++#: nis/nis_error.c:68
++msgid "Full resync required for directory"
++msgstr "ÐèÒª¶ÔĿ¼½øÐÐÍêÈ«µÄÖØÐÂͬ²½"
+
+-#: locale/programs/ld-ctype.c:587
+-msgid "character <SP> not defined in character map"
+-msgstr ""
++#: nis/nis_error.c:69
++msgid "NIS+ operation failed"
++msgstr "NIS+ ²Ù×÷ʧ°Ü"
+
+-#: locale/programs/ld-ctype.c:461
+-#, c-format
+-msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
+-msgstr ""
++#: nis/nis_error.c:70
++msgid "NIS+ service is unavailable or not installed"
++msgstr "NIS+ ·þÎñÆ÷²»¿ÉÓûòδ°²×°"
+
+-# msgstr "Àà¡°%2$s¡±ÖеÄ×Ö·û L'\\u%0*x' ±ØÐëÊôÓÚÀà¡°%3$s¡±"
+-#: locale/programs/ld-ctype.c:475
+-#, c-format
+-msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
++#: nis/nis_error.c:71
++msgid "Yes, 42 is the meaning of life"
+ msgstr ""
+
+-# msgstr "Àà¡°%s¡±ÖеÄ×Ö·û L'\\u%0*x' ²»µÃÊôÓÚÀà¡°%s¡±"
+-#: locale/programs/ld-ctype.c:3032
+-#, c-format
+-msgid "character `%s' not defined while needed as default value"
+-msgstr ""
++#: nis/nis_error.c:72
++msgid "Unable to authenticate NIS+ server"
++msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ·þÎñÆ÷"
+
+-#: locale/programs/ld-ctype.c:1223
+-#, c-format
+-msgid "character class `%s' already defined"
+-msgstr "×Ö·ûÀà¡°%s¡±ÒѶ¨Òå"
++#: nis/nis_error.c:73
++msgid "Unable to authenticate NIS+ client"
++msgstr "ÎÞ·¨ÈÏÖ¤ NIS+ ¿Í»§¶Ë"
+
+-#: locale/programs/ld-ctype.c:1255
+-#, c-format
+-msgid "character map `%s' already defined"
+-msgstr ""
++#: nis/nis_error.c:74
++msgid "No file space on server"
++msgstr "·þÎñÆ÷ÉÏûÓÐÎļþ¿Õ¼ä"
+
+-#: locale/programs/charmap.c:254
+-#, c-format
+-msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
++#: nis/nis_error.c:75
++msgid "Unable to create process on server"
++msgstr "ÎÞ·¨ÔÚ·þÎñÆ÷ÉÏ´´½¨½ø³Ì"
++
++#: nis/nis_error.c:76
++msgid "Master server busy, full dump rescheduled."
+ msgstr ""
+
+-#: locale/programs/charmap.c:140
++#: nis/nis_local_names.c:126
+ #, c-format
+-msgid "character map file `%s' not found"
++msgid "LOCAL entry for UID %d in directory %s not unique\n"
+ msgstr ""
+
+-#: locale/programs/charmap.c:465
+-msgid "character sets with locking states are not supported"
+-msgstr "²»Ö§³Ö´øÓÐËø¶¨×´Ì¬µÄ×Ö·û¼¯"
++#: nis/nis_print.c:51
++msgid "UNKNOWN"
++msgstr "δ֪"
+
+-#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
+-msgid "cheese"
+-msgstr "ÄÌÀÒ"
++#: nis/nis_print.c:109
++msgid "BOGUS OBJECT\n"
++msgstr ""
+
+-#: locale/programs/localedef.c:482
+-msgid "circular dependencies between locale definitions"
+-msgstr "ÇøÓò¶¨ÒåÖеÄÑ­»·ÒÐÀµ"
++#: nis/nis_print.c:112
++msgid "NO OBJECT\n"
++msgstr "ÎÞ¶ÔÏó\n"
+
+-#: sunrpc/clnt_raw.c:115
+-msgid "clnt_raw.c - Fatal header serialization error."
+-msgstr ""
++#: nis/nis_print.c:115
++msgid "DIRECTORY\n"
++msgstr "Ŀ¼\n"
+
+-#: sunrpc/clnt_tcp.c:134 sunrpc/clnt_tcp.c:137
+-msgid "clnttcp_create: out of memory\n"
+-msgstr "clnttcp_create£ºÄÚ´æ²»×ã\n"
++#: nis/nis_print.c:118
++msgid "GROUP\n"
++msgstr "×é\n"
+
+-#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
+-msgid "clntudp_create: out of memory\n"
+-msgstr "clntudp_create£ºÄÚ´æ²»×ã\n"
++#: nis/nis_print.c:121
++msgid "TABLE\n"
++msgstr "±í\n"
+
+-#: sunrpc/clnt_unix.c:131 sunrpc/clnt_unix.c:134
+-msgid "clntunix_create: out of memory\n"
+-msgstr "clntunix_create£ºÄÚ´æ²»×ã\n"
++#: nis/nis_print.c:124
++msgid "ENTRY\n"
++msgstr "ÌõÄ¿\n"
+
+-#: inet/rcmd.c:209
+-#, c-format
+-msgid "connect to address %s: "
+-msgstr "Á¬½Óµ½µØÖ· %s£º"
++#: nis/nis_print.c:127
++msgid "LINK\n"
++msgstr "Á¬½Ó\n"
+
+-#: sunrpc/rpc_scan.c:116
+-msgid "constant or identifier expected"
+-msgstr "ӦΪ³£Á¿»ò±êʶ·û"
++#: nis/nis_print.c:130
++msgid "PRIVATE\n"
++msgstr "˽ÓÐ\n"
+
+-#: iconv/iconv_prog.c:231
+-#, c-format
+-msgid "conversion from `%s' to `%s' not supported"
+-msgstr "²»Ö§³Ö´Ó¡°%s¡±µ½¡°%s¡±µÄת»»"
++#: nis/nis_print.c:133
++msgid "(Unknown object)\n"
++msgstr "(δ֪¶ÔÏó)\n"
+
+-#: catgets/gencat.c:1289
+-msgid "conversion modules not available"
+-msgstr "ת»»Ä£¿é²»¿ÉÓÃ"
++#: nis/nis_print.c:166
++#, c-format
++msgid "Name : `%s'\n"
++msgstr "Ãû³Æ £º¡°%s¡±\n"
+
+-#: locale/programs/ld-monetary.c:902
+-msgid "conversion rate value cannot be zero"
+-msgstr "ת»»ÂʵÄÖµ²»ÄÜΪ 0"
++#: nis/nis_print.c:167
++#, c-format
++msgid "Type : %s\n"
++msgstr "ÀàÐÍ £º %s\n"
+
+-#: iconv/iconv_prog.c:427 iconv/iconv_prog.c:452
+-msgid "conversion stopped due to problem in writing the output"
+-msgstr "ÓÉÓÚдÈëÊä³öʱ³öÏÖµÄÎÊÌâת»»Í£Ö¹"
++#: nis/nis_print.c:172
++msgid "Master Server :\n"
++msgstr "Ö÷·þÎñÆ÷ £º\n"
+
+-#: sunrpc/svc_simple.c:97
+-msgid "couldn't create an rpc server\n"
+-msgstr "ÎÞ·¨´´½¨ rpc ·þÎñÆ÷\n"
++#: nis/nis_print.c:174
++msgid "Replicate :\n"
++msgstr ""
+
+-#: sunrpc/svc_simple.c:105
++#: nis/nis_print.c:175
+ #, c-format
+-msgid "couldn't register prog %ld vers %ld\n"
+-msgstr "ÎÞ·¨×¢²á³ÌÐò %ld °æ±¾ %ld\n"
++msgid "\tName : %s\n"
++msgstr "\tÃû³Æ £º%s\n"
+
+-#: nss/getent.c:51
+-msgid "database [key ...]"
+-msgstr "Êý¾Ý¿â [¼ü ...]"
++#: nis/nis_print.c:176
++msgid "\tPublic Key : "
++msgstr "\t¹«Ô¿ £º"
+
+-#: locale/programs/charmap.c:197
+-#, c-format
+-msgid "default character map file `%s' not found"
+-msgstr ""
++#: nis/nis_print.c:180
++msgid "None.\n"
++msgstr "ÎÞ¡£\n"
+
+-#: locale/programs/charmap.c:397
++#: nis/nis_print.c:183
+ #, c-format
+-msgid "duplicate definition of <%s>"
+-msgstr "Öظ´¶¨Òå <%s>"
++msgid "Diffie-Hellmann (%d bits)\n"
++msgstr ""
+
+-#: locale/programs/ld-collate.c:3062
++#: nis/nis_print.c:188
+ #, c-format
+-msgid "duplicate definition of script `%s'"
+-msgstr "Öظ´¶¨Òå½Å±¾¡°%s¡±"
++msgid "RSA (%d bits)\n"
++msgstr "RSA (%d λ)\n"
+
+-#: catgets/gencat.c:430
+-msgid "duplicate set definition"
++#: nis/nis_print.c:191
++msgid "Kerberos.\n"
+ msgstr ""
+
+-#: timezone/zic.c:1009
++#: nis/nis_print.c:194
+ #, c-format
+-msgid "duplicate zone name %s (file \"%s\", line %d)"
+-msgstr "Öظ´µÄÇøÓòÃû %s (Îļþ¡°%s¡±£¬ÐÐ %d)"
++msgid "Unknown (type = %d, bits = %d)\n"
++msgstr "δ֪ (ÀàÐÍ = %d£¬Î» = %d)\n"
+
+-#: locale/programs/ld-ctype.c:2559
++#: nis/nis_print.c:205
+ #, c-format
+-msgid "duplicated definition for mapping `%s'"
++msgid "\tUniversal addresses (%u)\n"
+ msgstr ""
+
+-#: catgets/gencat.c:631
+-msgid "duplicated message identifier"
+-msgstr "Öظ´µÄÏûÏ¢±êʶ·û"
++#: nis/nis_print.c:227
++msgid "Time to live : "
++msgstr "´æÔÚµÄʱ¼ä £º"
+
+-#: catgets/gencat.c:603
+-msgid "duplicated message number"
+-msgstr "Öظ´µÄÏûÏ¢±àºÅ"
++#: nis/nis_print.c:229
++msgid "Default Access rights :\n"
++msgstr "ĬÈÏ·ÃÎÊȨÏÞ £º\n"
+
+-#: locale/programs/ld-ctype.c:2370
+-msgid "ellipsis range must be marked by two operands of same type"
+-msgstr ""
++#: nis/nis_print.c:238
++#, c-format
++msgid "\tType : %s\n"
++msgstr "\tÀàÐÍ £º%s\n"
+
+-#: sunrpc/rpc_scan.c:383
+-msgid "empty char string"
+-msgstr ""
++#: nis/nis_print.c:239
++msgid "\tAccess rights: "
++msgstr "\t·ÃÎÊȨÏÞ £º"
+
+-#: elf/dl-open.c:219
+-msgid "empty dynamic string token substitution"
+-msgstr ""
++#: nis/nis_print.c:252
++msgid "Group Flags :"
++msgstr "×é±êÖ¾ £º"
+
+-#: elf/dl-deps.c:113
+-msgid "empty dynamics string token substitution"
++#: nis/nis_print.c:255
++msgid ""
++"\n"
++"Group Members :\n"
+ msgstr ""
++"\n"
++"×é³ÉÔ± £º\n"
+
+-#: sunrpc/svc_udp.c:467
+-msgid "enablecache: cache already enabled"
+-msgstr "enablecache£º»º³åÇøÒѾ­ÆôÓÃ"
++#: nis/nis_print.c:266
++#, c-format
++msgid "Table Type : %s\n"
++msgstr "±í¸ñÀàÐÍ £º%s\n"
+
+-#: sunrpc/svc_udp.c:473
+-msgid "enablecache: could not allocate cache"
+-msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇø"
++#: nis/nis_print.c:267
++#, c-format
++msgid "Number of Columns : %d\n"
++msgstr "ÁеÄÊýÁ¿ £º%d\n"
+
+-#: sunrpc/svc_udp.c:481
+-msgid "enablecache: could not allocate cache data"
+-msgstr "enablecache£ºÎÞ·¨·ÖÅ仺³åÇøÊý¾Ý"
++#: nis/nis_print.c:268
++#, c-format
++msgid "Character Separator : %c\n"
++msgstr "×Ö·û·Ö¸ô·û£º%c\n"
+
+-#: sunrpc/svc_udp.c:488
+-msgid "enablecache: could not allocate cache fifo"
++#: nis/nis_print.c:269
++#, c-format
++msgid "Search Path : %s\n"
++msgstr "ËÑË÷·¾¶ £º%s\n"
++
++#: nis/nis_print.c:270
++msgid "Columns :\n"
+ msgstr ""
+
+-#: iconv/iconv_prog.c:61
+-msgid "encoding for output"
+-msgstr "Êä³ö±àÂë"
++#: nis/nis_print.c:273
++#, c-format
++msgid "\t[%d]\tName : %s\n"
++msgstr "\t[%d]\tÃû³Æ £º%s\n"
+
+-#: iconv/iconv_prog.c:60
+-msgid "encoding of original text"
+-msgstr "ԭʼÎı¾±àÂë"
++#: nis/nis_print.c:275
++msgid "\t\tAttributes : "
++msgstr "\t\tÊôÐÔ £º"
+
+-#: nscd/connections.c:366 nscd/connections.c:460
+-#, c-format
+-msgid "error getting callers id: %s"
+-msgstr ""
++#: nis/nis_print.c:277
++msgid "\t\tAccess Rights : "
++msgstr "\t\t·ÃÎÊȨÏÞ £º"
+
+-#: locale/programs/ld-collate.c:3032
+-msgid "error while adding equivalent collating symbol"
+-msgstr ""
++#: nis/nis_print.c:286
++msgid "Linked Object Type : "
++msgstr "Á¬½Óµ½¶ÔÏóÀàÐÍ £º"
+
+-#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:283
++#: nis/nis_print.c:288
+ #, c-format
+-msgid "error while closing input `%s'"
+-msgstr "¹Ø±ÕÊäÈë¡°%s¡±Ê±³ö´í"
+-
+-#: iconv/iconv_prog.c:330
+-msgid "error while closing output file"
+-msgstr "¹Ø±ÕÊä³öÎļþʱ³ö´í"
++msgid "Linked to : %s\n"
++msgstr "Á¬½Óµ½ £º%s\n"
+
+-#: elf/sprof.c:706
+-msgid "error while closing the profiling data file"
++#: nis/nis_print.c:297
++#, c-format
++msgid "\tEntry data of type %s\n"
+ msgstr ""
+
+-#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:538 iconv/iconv_prog.c:516
+-#: iconv/iconv_prog.c:547
+-msgid "error while reading the input"
+-msgstr "¶ÁÈ¡ÊäÈëʱ³ö´í"
++#: nis/nis_print.c:300
++#, c-format
++msgid "\t[%u] - [%u bytes] "
++msgstr "\t[%u] - [%u ×Ö½Ú] "
+
+-#: locale/programs/locfile.h:59
+-msgid "expect string argument for `copy'"
+-msgstr ""
++#: nis/nis_print.c:303
++msgid "Encrypted data\n"
++msgstr "ÒѼÓÃܵÄÊý¾Ý\n"
+
+-#: timezone/zic.c:899
+-msgid "expected continuation line not found"
+-msgstr ""
++#: nis/nis_print.c:305
++msgid "Binary data\n"
++msgstr "¶þ½øÖÆÊý¾Ý\n"
+
+-#: locale/programs/ld-time.c:1027
+-msgid "extra trailing semicolon"
+-msgstr ""
++#: nis/nis_print.c:320
++#, c-format
++msgid "Object Name : %s\n"
++msgstr "¶ÔÏóÃû³Æ £º%s\n"
+
+-#: elf/sprof.c:404
++#: nis/nis_print.c:321
+ #, c-format
+-msgid "failed to load shared object `%s'"
+-msgstr "×°Èë¹²ÏíÄ¿±êÎļþ¡°%s¡±Ê§°Ü"
++msgid "Directory : %s\n"
++msgstr "Ŀ¼ £º%s\n"
+
+-#: elf/sprof.c:600
+-msgid "failed to load symbol data"
+-msgstr "×°Èë·ûºÅÊý¾Ýʧ°Ü"
++#: nis/nis_print.c:322
++#, c-format
++msgid "Owner : %s\n"
++msgstr "ËùÓÐÕß £º%s\n"
+
+-#: elf/dl-load.c:771
+-msgid "failed to map segment from shared object"
+-msgstr ""
++#: nis/nis_print.c:323
++#, c-format
++msgid "Group : %s\n"
++msgstr "×é £º%s\n"
+
+-#: elf/sprof.c:698
+-msgid "failed to mmap the profiling data file"
+-msgstr ""
++#: nis/nis_print.c:324
++msgid "Access Rights : "
++msgstr "·ÃÎÊȨÏÞ£º"
+
+-#: iconv/iconv_prog.c:235
+-msgid "failed to start conversion processing"
++#: nis/nis_print.c:326
++msgid ""
++"\n"
++"Time to Live : "
+ msgstr ""
++"\n"
++"´æÔÚµÄʱ¼ä £º"
+
+-#: locale/programs/locfile.c:596
++#: nis/nis_print.c:329
+ #, c-format
+-msgid "failure while writing data for category `%s'"
+-msgstr ""
++msgid "Creation Time : %s"
++msgstr "´´½¨Ê±¼ä£º%s"
++
++#: nis/nis_print.c:331
++#, c-format
++msgid "Mod. Time : %s"
++msgstr "ÐÞ¸Äʱ¼ä £º%s"
++
++#: nis/nis_print.c:332
++msgid "Object Type : "
++msgstr "¶ÔÏóÀàÐÍ £º%s"
+
+-#: elf/../sysdeps/generic/readelflib.c:35
++#: nis/nis_print.c:352
+ #, c-format
+-msgid "file %s is truncated\n"
+-msgstr "Îļþ %s ¼º±»½Ø¶Ï\n"
++msgid " Data Length = %u\n"
++msgstr " Êý¾Ý³¤¶È = %u\n"
+
+-#. TRANS: the file will not be removed; this is an
+-#. TRANS: informative message.
+-#: sunrpc/rpc_main.c:1150
++#: nis/nis_print.c:365
+ #, c-format
+-msgid "file `%s' already exists and may be overwritten\n"
+-msgstr "Îļþ¡°%s¡±ÒÑ´æÔÚ²¢¿ÉÄܱ»¸²¸Ç\n"
++msgid "Status : %s\n"
++msgstr "״̬ £º%s\n"
+
+-#: elf/dl-load.c:1247
+-msgid "file too short"
+-msgstr "Îļþ¹ý¶Ì"
++#: nis/nis_print.c:366
++#, c-format
++msgid "Number of objects : %u\n"
++msgstr "¶ÔÏóµÄÊýÁ¿ £º%u\n"
+
+-#: inet/rcmd.c:512
+-msgid "fstat failed"
+-msgstr "fstat ʧ°Ü"
++#: nis/nis_print.c:370
++#, c-format
++msgid "Object #%d:\n"
++msgstr "¶ÔÏó #%d£º\n"
+
+-#: locale/programs/linereader.c:388
+-msgid "garbage at end of character code specification"
++#: nis/nis_print_group_entry.c:115
++#, c-format
++msgid "Group entry for \"%s.%s\" group:\n"
+ msgstr ""
+
+-#: locale/programs/linereader.c:276
+-msgid "garbage at end of number"
+-msgstr "Êý×ÖĩβÓÐÀ¬»ø"
+-
+-#: elf/sprof.c:77
+-msgid "generate call graph"
+-msgstr "Éú³Éµ÷ÓÃͼ"
++#: nis/nis_print_group_entry.c:123
++msgid " Explicit members:\n"
++msgstr " ÏÔʽ³ÉÔ±£º\n"
+
+-#: elf/sprof.c:76
+-msgid "generate flat profile with counts and ticks"
+-msgstr ""
++#: nis/nis_print_group_entry.c:128
++msgid " No explicit members\n"
++msgstr " ÎÞÏÔʽ³ÉÔ±\n"
+
+-#: sunrpc/get_myaddr.c:78
+-msgid "get_myaddress: ioctl (get interface configuration)"
+-msgstr "get_myaddress£ºioctl (»ñÈ¡½çÃæÅäÖÃ)"
++#: nis/nis_print_group_entry.c:131
++msgid " Implicit members:\n"
++msgstr " Òþº¬³ÉÔ±£º\n"
+
+-#: nss/getent.c:702
+-msgid "getent - get entries from administrative database."
+-msgstr "getent - ÖعÜÀíÊý¾Ý¿â»ñÈ¡ÌõÄ¿¡£"
++#: nis/nis_print_group_entry.c:136
++msgid " No implicit members\n"
++msgstr " ÎÞÒþº¬³ÉÔ±\n"
+
+-#: nscd/connections.c:221
+-#, c-format
+-msgid "handle_request: request received (Version = %d)"
+-msgstr "´¦ÀíÇëÇó£ºÒÑÊÕµ½ÇëÇó (°æ±¾ = %d)"
++#: nis/nis_print_group_entry.c:139
++msgid " Recursive members:\n"
++msgstr " µÝ¹é³ÉÔ±£º\n"
+
+-#: timezone/zic.c:643
+-msgid "hard link failed, symbolic link used"
+-msgstr "Ó²Á¬½Óʧ°Ü£¬Ê¹Ó÷ûºÅÁ¬½Ó"
++#: nis/nis_print_group_entry.c:144
++msgid " No recursive members\n"
++msgstr " Î޵ݹé³ÉÔ±\n"
+
+-#: inet/rcmd.c:518
+-msgid "hard linked somewhere"
++#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
++msgid " Explicit nonmembers:\n"
+ msgstr ""
+
+-#: locale/programs/charmap.c:986 locale/programs/repertoire.c:430
+-msgid "hexadecimal range format should use only capital characters"
++#: nis/nis_print_group_entry.c:152
++msgid " No explicit nonmembers\n"
+ msgstr ""
+
+-#: timezone/zic.c:1193
+-msgid "illegal CORRECTION field on Leap line"
++#: nis/nis_print_group_entry.c:155
++msgid " Implicit nonmembers:\n"
+ msgstr ""
+
+-#: timezone/zic.c:1197
+-msgid "illegal Rolling/Stationary field on Leap line"
++#: nis/nis_print_group_entry.c:160
++msgid " No implicit nonmembers\n"
+ msgstr ""
+
+-#: sunrpc/rpc_scan.c:312
+-msgid "illegal character in file: "
+-msgstr "ÎļþÖеķǷ¨×Ö·û£º"
+-
+-#: locale/programs/linereader.c:600
+-msgid "illegal escape sequence at end of string"
+-msgstr "×Ö·û´®Ä©Î²µÄ·Ç·¨×ªÒåÐòÁÐ"
++#: nis/nis_print_group_entry.c:168
++msgid " No recursive nonmembers\n"
++msgstr ""
+
+-#: iconv/iconv_charmap.c:443
++#: nis/nss_nisplus/nisplus-publickey.c:96
++#: nis/nss_nisplus/nisplus-publickey.c:172
+ #, c-format
+-msgid "illegal input sequence at position %Zd"
++msgid "DES entry for netname %s not unique\n"
+ msgstr ""
+
+-#: iconv/iconv_prog.c:469
++#: nis/nss_nisplus/nisplus-publickey.c:208
+ #, c-format
+-msgid "illegal input sequence at position %ld"
+-msgstr "δ֪ %ld ´¦µÄ·Ç·¨ÊäÈëÐòÁÐ"
++msgid "netname2user: missing group id list in `%s'."
++msgstr ""
+
+-#: sunrpc/rpc_main.c:463
++#: nis/nss_nisplus/nisplus-publickey.c:285
++#: nis/nss_nisplus/nisplus-publickey.c:291
++#: nis/nss_nisplus/nisplus-publickey.c:350
++#: nis/nss_nisplus/nisplus-publickey.c:359
+ #, c-format
+-msgid "illegal nettype :`%s'\n"
+-msgstr "·Ç·¨ÍøÂçÀàÐÍ£º¡°%s¡±\n"
+-
+-#: catgets/gencat.c:403 catgets/gencat.c:480
+-msgid "illegal set number"
++msgid "netname2user: (nis+ lookup): %s\n"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:1229
++#: nis/nss_nisplus/nisplus-publickey.c:304
+ #, c-format
+-msgid "implementation limit: no more than %Zd character classes allowed"
++msgid "netname2user: DES entry for %s in directory %s not unique"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:1261
++#: nis/nss_nisplus/nisplus-publickey.c:322
+ #, c-format
+-msgid "implementation limit: no more than %d character maps allowed"
+-msgstr ""
++msgid "netname2user: principal name `%s' too long"
++msgstr "netname2user£º»ù±¾Ãû³Æ¡°%s¡±¹ý³¤"
+
+-#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:473
+-msgid "incomplete character or shift sequence at end of buffer"
++#: nis/nss_nisplus/nisplus-publickey.c:372
++#, c-format
++msgid "netname2user: LOCAL entry for %s in directory %s not unique"
+ msgstr ""
+
+-#: timezone/zic.c:856
+-msgid "input line of unknown type"
+-msgstr "δ֪ÀàÐ͵ÄÊäÈëÐÐ"
+-
+-#: elf/dl-load.c:1294
+-msgid "internal error"
+-msgstr "ÄÚ²¿´íÎó"
+-
+-#: iconv/iconv_prog.c:477
+-msgid "internal error (illegal descriptor)"
+-msgstr "ÄÚ²¿´íÎó (·Ç·¨µÄÃèÊö·û)"
++#: nis/nss_nisplus/nisplus-publickey.c:379
++msgid "netname2user: should not have uid 0"
++msgstr "netname2user£ºuid ²»Ó¦Îª 0"
+
+-#: timezone/zic.c:1819
+-msgid "internal error - addtype called with bad isdst"
+-msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ isdst µ÷Óà addtype"
++#: nis/ypclnt.c:174
++#, c-format
++msgid "YPBINDPROC_DOMAIN: %s\n"
++msgstr "YPBINDPROC_DOMAIN£º%s\n"
+
+-#: timezone/zic.c:1827
+-msgid "internal error - addtype called with bad ttisgmt"
+-msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisgmt µ÷Óà addtype"
++#: nis/ypclnt.c:789
++msgid "Request arguments bad"
++msgstr "ÇëÇó²ÎÊý´íÎó"
+
+-#: timezone/zic.c:1823
+-msgid "internal error - addtype called with bad ttisstd"
+-msgstr "ÄÚ²¿´íÎó - ÒÔ´íÎóµÄ ttisstd µ÷Óà addtype"
++#: nis/ypclnt.c:791
++msgid "RPC failure on NIS operation"
++msgstr ""
+
+-#: locale/programs/ld-ctype.c:488 locale/programs/ld-ctype.c:544
+-#, c-format
+-msgid "internal error in %s, line %u"
+-msgstr "ÔÚ %s µÄµÚ %u ÐгöÏÖÄÚ²¿´íÎó"
++#: nis/ypclnt.c:793
++msgid "Can't bind to server which serves this domain"
++msgstr "ÎÞ·¨ÓÚΪ´ËÓò·þÎñµÄ·þÎñÆ÷°ó¶¨"
+
+-#: elf/dl-load.c:1267
+-msgid "invalid ELF header"
+-msgstr "ÎÞЧµÄ ELF Í·"
++#: nis/ypclnt.c:795
++msgid "No such map in server's domain"
++msgstr ""
+
+-#: timezone/zic.c:1065
+-msgid "invalid UTC offset"
+-msgstr "ÎÞЧµÄ UTC Æ«ÒÆÁ¿"
++#: nis/ypclnt.c:797
++msgid "No such key in map"
++msgstr ""
+
+-#: timezone/zic.c:1068
+-msgid "invalid abbreviation format"
+-msgstr "ÎÞЧµÄËõÂÔ¸ñʽ"
++#: nis/ypclnt.c:799
++msgid "Internal NIS error"
++msgstr "ÄÚ²¿ NIS ´íÎó"
+
+-#: catgets/gencat.c:688
+-msgid "invalid character: message ignored"
+-msgstr "ÎÞЧµÄ×Ö·û£ººöÂÔÏûÏ¢"
++#: nis/ypclnt.c:801
++msgid "Local resource allocation failure"
++msgstr "±¾µØ×ÊÔ´·ÖÅäʧ°Ü"
+
+-#: timezone/zic.c:1158 timezone/zic.c:1370 timezone/zic.c:1384
+-msgid "invalid day of month"
++#: nis/ypclnt.c:803
++msgid "No more records in map database"
+ msgstr ""
+
+-#: locale/programs/charmap.c:352
+-msgid "invalid definition"
+-msgstr "ÎÞЧµÄ¶¨Òå"
++#: nis/ypclnt.c:805
++msgid "Can't communicate with portmapper"
++msgstr "ÎÞ·¨Óë portmapper ͨѶ"
+
+-#: locale/programs/charmap.c:547
+-msgid "invalid encoding given"
+-msgstr ""
++#: nis/ypclnt.c:807
++msgid "Can't communicate with ypbind"
++msgstr "ÎÞ·¨Óë ypbind ͨѶ"
+
+-#: timezone/zic.c:1322
+-msgid "invalid ending year"
+-msgstr "ÎÞЧµÄÖÕÖ¹Äê·Ý"
++#: nis/ypclnt.c:809
++msgid "Can't communicate with ypserv"
++msgstr "ÎÞ·¨Óë ypserv ͨѶ"
+
+-#: catgets/gencat.c:1152 locale/programs/linereader.c:538
+-msgid "invalid escape sequence"
+-msgstr "ÎÞЧµÄתÒåÐòÁÐ"
++#: nis/ypclnt.c:811
++msgid "Local domain name not set"
++msgstr "δÉèÖñ¾µØÓòÃû"
+
+-#: timezone/zic.c:1130
+-msgid "invalid leaping year"
+-msgstr ""
++#: nis/ypclnt.c:813
++msgid "NIS map database is bad"
++msgstr "NIS Ó³ÉäÊý¾Ý¿â´íÎó"
+
+-#: catgets/gencat.c:731
+-msgid "invalid line"
+-msgstr "ÎÞЧµÄÐÐ"
++#: nis/ypclnt.c:815
++msgid "NIS client/server version mismatch - can't supply service"
++msgstr "NIS ¿Í»§¶Ë/·þÎñÆ÷°æ±¾²»Æ¥Åä - ÎÞ·¨Ö§³Ö·þÎñ"
+
+-#: elf/dl-open.c:349
+-msgid "invalid mode for dlopen()"
+-msgstr "ÎÞЧµÄ dlopen() ģʽ"
++#: nis/ypclnt.c:819
++msgid "Database is busy"
++msgstr "Êý¾Ý¿âæ"
+
+-#: timezone/zic.c:1145 timezone/zic.c:1248
+-msgid "invalid month name"
+-msgstr "ÎÞЧµÄÔÂÃû³Æ"
++#: nis/ypclnt.c:821
++msgid "Unknown NIS error code"
++msgstr "δ֪µÄ NIS ´íÎóÂë"
+
+-#: locale/programs/charmap.c:974 locale/programs/ld-collate.c:2888
+-#: locale/programs/repertoire.c:418
+-msgid "invalid names for character range"
+-msgstr ""
++#: nis/ypclnt.c:863
++msgid "Internal ypbind error"
++msgstr "ÄÚ²¿ ypbind ´íÎó"
+
+-#: debug/pcprofiledump.c:166
+-msgid "invalid pointer size"
+-msgstr "ÎÞЧµÄÖ¸Õë´óС"
++#: nis/ypclnt.c:865
++msgid "Domain not bound"
++msgstr "δ°ó¶¨Óò"
+
+-#: catgets/gencat.c:549
+-msgid "invalid quote character"
+-msgstr "ÎÞЧµÄÒýÓÃ×Ö·û"
++#: nis/ypclnt.c:867
++msgid "System resource allocation failure"
++msgstr "ϵͳ×ÊÔ´·ÖÅäʧ°Ü"
+
+-#: timezone/zic.c:964
+-msgid "invalid saved time"
+-msgstr ""
++#: nis/ypclnt.c:869
++msgid "Unknown ypbind error"
++msgstr "δ֪µÄ ypbind ´íÎó"
+
+-#: timezone/zic.c:1297
+-msgid "invalid starting year"
+-msgstr "ÎÞЧµÄÆðʼÄê·Ý"
++#: nis/ypclnt.c:908
++msgid "yp_update: cannot convert host to netname\n"
++msgstr "yp_update£ºÎÞ·¨½«Ö÷»úÃûת»»ÎªÍøÃû\n"
+
+-#: timezone/zic.c:1174 timezone/zic.c:1277
+-msgid "invalid time of day"
+-msgstr "ÎÞЧµÄʱ¼ä"
++#: nis/ypclnt.c:920
++msgid "yp_update: cannot get server address\n"
++msgstr "yp_update£ºÎÞ·¨»ñÈ¡·þÎñÆ÷µØÖ·\n"
+
+-#: timezone/zic.c:1375
+-msgid "invalid weekday name"
+-msgstr "ÎÞЧµÄÐÇÆÚÃû"
++#: nscd/cache.c:88
++msgid "while allocating hash table entry"
++msgstr "·ÖÅäÔÓ´Õ±íÌõĿʱ"
+
+-#: nscd/connections.c:479
++#: nscd/cache.c:150 nscd/connections.c:187
+ #, c-format
+-msgid "key length in request too long: %d"
+-msgstr "ÇëÇóÖеļü¹ý³¤£º%d"
++msgid "cannot stat() file `%s': %s"
++msgstr "ÎÞ·¨¶ÔÎļþ¡°%s¡±½øÐÐ stat() ²Ù×÷£º%s"
+
+-#: elf/ldconfig.c:794
+-#, c-format
+-msgid "libc4 library %s in wrong directory"
+-msgstr "libc4 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
++#: nscd/connections.c:146
++msgid "cannot read configuration file; this is fatal"
++msgstr "ÎÞ·¨¶ÁÈëÅäÖÃÎļþ£»ÕâÊÇÖÂÃüµÄ"
+
+-#: elf/ldconfig.c:788
+-#, c-format
+-msgid "libc5 library %s in wrong directory"
+-msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
++#: nscd/connections.c:153
++msgid "Cannot run nscd in secure mode as unprivileged user"
++msgstr ""
+
+-#: elf/ldconfig.c:791
++#: nscd/connections.c:175
+ #, c-format
+-msgid "libc6 library %s in wrong directory"
+-msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
++msgid "while allocating cache: %s"
++msgstr "·ÖÅ仺³åÇøʱ£º%s"
+
+-#: elf/ldconfig.c:821
++#: nscd/connections.c:200
+ #, c-format
+-msgid "libraries %s and %s in directory %s have same soname but different type."
+-msgstr "Ŀ¼ %3$s ÖÐµÄ %1$s ºÍ %2$s µÄ so Ãû³ÆÏàͬµ«ÀàÐͲ»Í¬¡£"
+-
+-#: timezone/zic.c:836
+-msgid "line too long"
+-msgstr "Ðйý³¤"
+-
+-#: iconv/iconv_prog.c:63
+-msgid "list all known coded character sets"
+-msgstr "ÁоÙËùÓÐÒÑÖªµÄ×Ö·û¼¯"
++msgid "cannot open socket: %s"
++msgstr "ÎÞ·¨´ò¿ªÌ×½Ó×Ö£º%s"
+
+-#: locale/programs/locfile.h:63
+-msgid "locale name should consist only of portable characters"
+-msgstr "ÇøÓòÃû³ÆÓ¦¸Ã½öÓÉ¿ÉÒÆÖ²µÄ×Ö·û×é³É"
++#: nscd/connections.c:218
++#, c-format
++msgid "cannot enable socket to accept connections: %s"
++msgstr "ÎÞ·¨ÆôÓÃÌ×½Ó×ÖÒÔ½ÓÊÜÁ¬½Ó£º%s"
+
+-#: inet/rcmd.c:503
+-msgid "lstat failed"
+-msgstr "lstat ²Ù×÷ʧ°Ü"
++#: nscd/connections.c:260
++#, c-format
++msgid "handle_request: request received (Version = %d)"
++msgstr "´¦ÀíÇëÇó£ºÒÑÊÕµ½ÇëÇó (°æ±¾ = %d)"
+
+-#: malloc/memusagestat.c:59
+-msgid "make output graphic VALUE pixel high"
+-msgstr ""
++#: nscd/connections.c:266
++#, c-format
++msgid "cannot handle old request version %d; current version is %d"
++msgstr "ÎÞ·¨´¦Àí¾ÉÇëÇó°æ±¾ %d£»µ±Ç°°æ±¾Îª %d"
+
+-#: malloc/memusagestat.c:58
+-msgid "make output graphic VALUE pixel wide"
+-msgstr ""
++#: nscd/connections.c:304 nscd/connections.c:326
++#, c-format
++msgid "cannot write result: %s"
++msgstr "ÎÞ·¨Ð´Èë½á¹û£º¡°%s¡±"
+
+-#: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
+-msgid "makecontext: does not know how to handle more than 8 arguments\n"
++#: nscd/connections.c:405 nscd/connections.c:499
++#, c-format
++msgid "error getting callers id: %s"
+ msgstr ""
+
+-#: catgets/gencat.c:785
+-msgid "malformed line ignored"
+-msgstr ""
++#: nscd/connections.c:471
++#, c-format
++msgid "while accepting connection: %s"
++msgstr "½ÓÊÜÁ¬½Óʱ£º%s"
+
+-#: elf/sprof.c:550
+-msgid "mapping of section header string table failed"
+-msgstr ""
++#: nscd/connections.c:482
++#, c-format
++msgid "short read while reading request: %s"
++msgstr "¶ÁÈ¡ÇëÇóʱûÓжÁÈë×ã¹»µÄÊý¾Ý£º%s"
+
+-#: elf/sprof.c:540
+-msgid "mapping of section headers failed"
+-msgstr ""
++#: nscd/connections.c:518
++#, c-format
++msgid "key length in request too long: %d"
++msgstr "ÇëÇóÖеļü¹ý³¤£º%d"
+
+-#: malloc/mcheck.c:296
+-msgid "memory clobbered before allocated block\n"
+-msgstr ""
++#: nscd/connections.c:532
++#, c-format
++msgid "short read while reading request key: %s"
++msgstr "¶ÁÈëÇëÇó¼üµÄʱºòûÓжÁÈë×ã¹»µÄÊý¾Ý£º%s"
+
+-#: malloc/mcheck.c:299
+-msgid "memory clobbered past end of allocated block\n"
++#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
++#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
++#, c-format
++msgid "Failed to run nscd as user '%s'"
+ msgstr ""
+
+-#: locale/programs/xmalloc.c:70 malloc/obstack.c:489 malloc/obstack.c:493
+-#: posix/getconf.c:996
+-msgid "memory exhausted"
+-msgstr "ÄÚ´æºÄ¾¡"
+-
+-#: malloc/mcheck.c:293
+-msgid "memory is consistent, library is buggy\n"
+-msgstr "ÄÚ´æ²»Ò»Ö£¬¿âÓдíÎó\n"
++#: nscd/connections.c:612
++msgid "getgrouplist failed"
++msgstr "getgrouplist ʧ°Ü"
+
+-#: elf/cache.c:143
+-msgid "mmap of cache file failed.\n"
+-msgstr ""
++#: nscd/connections.c:625
++msgid "setgroups failed"
++msgstr "setgroups ʧ°Ü"
+
+-#: elf/../sysdeps/generic/readelflib.c:110
+-msgid "more than one dynamic segment\n"
+-msgstr "¶àÓÚÒ»¸ö¶¯Ì¬¶Î\n"
++#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
++msgid "while allocating key copy"
++msgstr "·ÖÅä¼ü¸±±¾Ê±"
+
+-#: timezone/zic.c:959
+-msgid "nameless rule"
+-msgstr "ÎÞÃû¹æÔò"
++#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
++msgid "while allocating cache entry"
++msgstr "·ÖÅ仺³åÇøÌõĿʱ"
+
+-#: nis/nss_nisplus/nisplus-publickey.c:281
+-#: nis/nss_nisplus/nisplus-publickey.c:287
+-#: nis/nss_nisplus/nisplus-publickey.c:346
+-#: nis/nss_nisplus/nisplus-publickey.c:355
++#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+ #, c-format
+-msgid "netname2user: (nis+ lookup): %s\n"
++msgid "short write in %s: %s"
+ msgstr ""
+
+-#: nis/nss_nisplus/nisplus-publickey.c:300
++#: nscd/grpcache.c:218
+ #, c-format
+-msgid "netname2user: DES entry for %s in directory %s not unique"
+-msgstr ""
++msgid "Haven't found \"%s\" in group cache!"
++msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%s¡±£¡"
+
+-#: nis/nss_nisplus/nisplus-publickey.c:368
++#: nscd/grpcache.c:284
+ #, c-format
+-msgid "netname2user: LOCAL entry for %s in directory %s not unique"
++msgid "Invalid numeric gid \"%s\"!"
+ msgstr ""
+
+-#: nis/nss_nisplus/nisplus-publickey.c:207
++#: nscd/grpcache.c:291
+ #, c-format
+-msgid "netname2user: missing group id list in `%s'."
+-msgstr ""
++msgid "Haven't found \"%d\" in group cache!"
++msgstr "ÎÞ·¨ÔÚ×黺³åÇøÖÐÕÒµ½¡°%d¡±£¡"
+
+-#: nis/nss_nisplus/nisplus-publickey.c:318
++#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
++#: nscd/hstcache.c:500
+ #, c-format
+-msgid "netname2user: principal name `%s' too long"
+-msgstr "netname2user£º»ù±¾Ãû³Æ¡°%s¡±¹ý³¤"
++msgid "Haven't found \"%s\" in hosts cache!"
++msgstr "ÎÞ·¨ÔÚÖ÷»ú»º³åÇøÖÐÕÒµ½¡°%s¡±£¡"
+
+-#: nis/nss_nisplus/nisplus-publickey.c:375
+-msgid "netname2user: should not have uid 0"
+-msgstr "netname2user£ºuid ²»Ó¦Îª 0"
++#: nscd/nscd.c:85
++msgid "Read configuration data from NAME"
++msgstr "´Ó NAME ÖжÁÈ¡ÅäÖÃÊý¾Ý"
+
+-#: sunrpc/svc_simple.c:183
+-#, c-format
+-msgid "never registered prog %d\n"
++#: nscd/nscd.c:87
++msgid "Do not fork and display messages on the current tty"
+ msgstr ""
+
+-#: locale/programs/repertoire.c:272
+-msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
+-msgstr "¼´Î´¸ø³ö <Uxxxx> Ҳδ¸ø³ö <Uxxxxxxxx>"
+-
+-#: timezone/zic.c:2148
+-msgid "no day in month matches rule"
++#: nscd/nscd.c:88
++msgid "NUMBER"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:1770
+-msgid "no definition of `UNDEFINED'"
+-msgstr "ûÓйØÓÚ¡°UNDEFINIED¡±µÄ¶¨Òå"
++#: nscd/nscd.c:88
++msgid "Start NUMBER threads"
++msgstr "Æô¶¯ NUMBER ¸öÏß³Ì"
+
+-#: elf/sprof.c:272
+-#, c-format
+-msgid "no filename for profiling data given and shared object `%s' has no soname"
++#: nscd/nscd.c:89
++msgid "Shut the server down"
++msgstr "¹Ø±Õ·þÎñÆ÷"
++
++#: nscd/nscd.c:90
++msgid "Print current configuration statistic"
++msgstr "´òÓ¡µ±Ç°ÅäÖÃͳ¼Æ"
++
++#: nscd/nscd.c:91
++msgid "TABLE"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:747
+-msgid "no input digits defined and none of the standard names in the charmap"
++#: nscd/nscd.c:92
++msgid "Invalidate the specified cache"
+ msgstr ""
+
+-#: locale/programs/locfile.h:82
+-msgid "no other keyword shall be specified when `copy' is used"
+-msgstr "ʹÓá°copy¡±Ê±²»Ó¦ÔÙʹÓÃÆäËü¹Ø¼ü×Ö"
++#: nscd/nscd.c:93
++msgid "TABLE,yes"
++msgstr ""
+
+-#: locale/programs/ld-ctype.c:3351
+-msgid "no output digits defined and none of the standard names in the charmap"
++#: nscd/nscd.c:93
++msgid "Use separate cache for each user"
++msgstr "Ϊÿ¸öÓû§Ê¹Ó÷ÖÀëµÄ»º³åÇø"
++
++#: nscd/nscd.c:98
++msgid "Name Service Cache Daemon."
+ msgstr ""
+
+-#: iconv/iconvconfig.c:308 locale/programs/localedef.c:236
+-msgid "no output file produced because warning were issued"
+-msgstr "ÓÉÓÚ³öÏÖ¾¯¸æ¶øδÉú³ÉÊä³öÎļþ"
++#: nscd/nscd.c:131
++msgid "already running"
++msgstr "ÒѾ­ÔÚÔËÐÐ"
+
+-#: locale/programs/charmap.c:493 locale/programs/charmap.c:673
+-#: locale/programs/charmap.c:769 locale/programs/repertoire.c:231
+-msgid "no symbolic name given"
+-msgstr "ûÓиø³ö·ûºÅÃû"
++#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
++msgid "Only root is allowed to use this option!"
++msgstr "Ö»ÓиùÓû§ÔÊÐíʹÓñ¾Ñ¡Ï"
+
+-#: locale/programs/charmap.c:580 locale/programs/charmap.c:728
+-#: locale/programs/charmap.c:811 locale/programs/repertoire.c:297
+-msgid "no symbolic name given for end of range"
+-msgstr ""
++#: nscd/nscd_conf.c:83
++#, c-format
++msgid "Parse error: %s"
++msgstr "½âÎö´íÎó£º%s"
+
+-#: locale/programs/linereader.c:646
+-msgid "non-symbolic character value should not be used"
+-msgstr "²»Ó¦¸ÃʹÓ÷ǷûºÅ×Ö·ûµÄÖµ"
++#: nscd/nscd_conf.c:166
++#, c-format
++msgid "Could not create log file \"%s\""
++msgstr "ÎÞ·¨´´½¨ÈÕÖ¾Îļþ¡°%s¡±"
+
+-#: locale/programs/ld-ctype.c:812
+-msgid "not all characters used in `outdigit' are available in the charmap"
++#: nscd/nscd_conf.c:182
++msgid "Must specify user name for server-user option"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:829
+-msgid "not all characters used in `outdigit' are available in the repertoire"
+-msgstr ""
++#: nscd/nscd_conf.c:187
++#, c-format
++msgid "Unknown option: %s %s %s"
++msgstr "δ֪µÄÑ¡Ï%s %s %s"
+
+-#: inet/rcmd.c:505
+-msgid "not regular file"
+-msgstr "²»ÊÇÆÕͨÎļþ"
++#: nscd/nscd_stat.c:87
++#, c-format
++msgid "cannot write statistics: %s"
++msgstr "ÎÞ·¨Ð´Èëͳ¼Æ£º%s"
++
++#: nscd/nscd_stat.c:105
++msgid "nscd not running!\n"
++msgstr "nscd δÔËÐУ¡\n"
++
++#: nscd/nscd_stat.c:116
++msgid "write incomplete"
++msgstr "дÈë²»ÍêÕû"
++
++#: nscd/nscd_stat.c:128
++msgid "cannot read statistics data"
++msgstr "ÎÞ·¨¶ÁÈëͳ¼ÆÊý¾Ý"
+
+ #: nscd/nscd_stat.c:131
+ #, c-format
+@@ -4995,578 +5224,637 @@
+ "\n"
+ "%15d ·þÎñÆ÷µ÷ÊÔ¼¶±ð\n"
+
+-#: nscd/nscd_stat.c:105
+-msgid "nscd not running!\n"
+-msgstr "nscd δÔËÐУ¡\n"
+-
+-#: elf/dl-load.c:1059
+-msgid "object file has no dynamic section"
+-msgstr "Ä¿±êÎļþûÓж¯Ì¬½Ú"
++#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
++msgid " no"
++msgstr " ·ñ"
+
+-#: iconv/iconv_prog.c:65
+-msgid "omit invalid characters from output"
+-msgstr "´ÓÊä³öÖкöÂÔÎÞЧµÄ×Ö·û"
++#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
++msgid " yes"
++msgstr " ÊÇ"
+
+-#: elf/dl-load.c:1309
+-msgid "only ET_DYN and ET_EXEC can be loaded"
++#: nscd/nscd_stat.c:154
++#, c-format
++msgid ""
++"\n"
++"%s cache:\n"
++"\n"
++"%15s cache is enabled\n"
++"%15Zd suggested size\n"
++"%15ld seconds time to live for positive entries\n"
++"%15ld seconds time to live for negative entries\n"
++"%15ld cache hits on positive entries\n"
++"%15ld cache hits on negative entries\n"
++"%15ld cache misses on positive entries\n"
++"%15ld cache misses on negative entries\n"
++"%15ld%% cache hit rate\n"
++"%15s check /etc/%s for changes\n"
+ msgstr ""
+
+-#: locale/programs/charmap.c:637
+-msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+-msgstr ""
++#: nscd/pwdcache.c:214
++#, c-format
++msgid "Haven't found \"%s\" in password cache!"
++msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%s¡±£¡"
+
+-#: locale/programs/ld-collate.c:1018 locale/programs/ld-collate.c:1188
++#: nscd/pwdcache.c:280
+ #, c-format
+-msgid "order for `%.*s' already defined at %s:%Zu"
++msgid "Invalid numeric uid \"%s\"!"
+ msgstr ""
+
+-#: inet/ruserpass.c:170 inet/ruserpass.c:193
+-msgid "out of memory"
+-msgstr "ÄÚ´æ²»×ã"
++#: nscd/pwdcache.c:287
++#, c-format
++msgid "Haven't found \"%d\" in password cache!"
++msgstr "ÎÞ·¨ÔÚ¿ÚÁ³åÇøÖÐÕÒµ½¡°%d¡±£¡"
+
+-#: iconv/iconv_prog.c:66
+-msgid "output file"
+-msgstr "Êä³öÎļþ"
++#: elf/../sysdeps/generic/dl-sysdep.c:357
++msgid "cannot create capability list"
++msgstr "ÎÞ·¨´´½¨¹¦ÄÜÁбí"
+
+-#: posix/../sysdeps/generic/wordexp.c:1801
+-msgid "parameter null or not set"
+-msgstr "²ÎÊýΪ null »òδÉèÖÃ"
++#: elf/../sysdeps/generic/readelflib.c:35
++#, c-format
++msgid "file %s is truncated\n"
++msgstr "Îļþ %s ¼º±»½Ø¶Ï\n"
+
+-#: sunrpc/pm_getmaps.c:74
+-msgid "pmap_getmaps rpc problem"
+-msgstr ""
++#: elf/../sysdeps/generic/readelflib.c:67
++#, c-format
++msgid "%s is a 32 bit ELF file.\n"
++msgstr "%s ÊÇÒ»¸ö 32 λ ELF Îļþ¡£\n"
+
+-#: inet/rcmd.c:293
+-msgid "poll: protocol failure in circuit setup\n"
+-msgstr ""
++#: elf/../sysdeps/generic/readelflib.c:69
++#, c-format
++msgid "%s is a 64 bit ELF file.\n"
++msgstr "%s ÊÇÒ»¸ö 64 λ ELF Îļþ¡£\n"
+
+-#: locale/programs/ld-ctype.c:1950 locale/programs/ld-ctype.c:2001
+-msgid "premature end of `translit_ignore' definition"
+-msgstr ""
++#: elf/../sysdeps/generic/readelflib.c:71
++#, c-format
++msgid "Unknown ELFCLASS in file %s.\n"
++msgstr "Îļþ %s ÖÐδ֪µÄ ELFCLASS¡£\n"
+
+-#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
+-msgid "preprocessor error"
+-msgstr "Ô¤´¦Àí´íÎó"
++#: elf/../sysdeps/generic/readelflib.c:78
++#, c-format
++msgid "%s is not a shared object file (Type: %d).\n"
++msgstr "%s ²»Êǹ²ÏíÄ¿±êÎļþ (ÀàÐÍ£º%d)¡£\n"
+
+-#: locale/programs/ld-ctype.c:2733
+-msgid "previous definition was here"
+-msgstr "Ç°Ò»¸ö¶¨ÒåÔÚÕâÀï"
++#: elf/../sysdeps/generic/readelflib.c:109
++msgid "more than one dynamic segment\n"
++msgstr "¶àÓÚÒ»¸ö¶¯Ì¬¶Î\n"
+
+-#: elf/sprof.c:74
+-msgid "print list of count paths and their number of use"
+-msgstr "´òÓ¡µ±Ç°Â·¾¶µÄÁбíºÍËûÃǵÄʹÓôÎÊý"
++#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:49
++#, c-format
++msgid "%s is for unknown machine %d.\n"
++msgstr "%s ÓÃÓÚδ֪µÄ»úÆ÷ %d¡£\n"
+
+-#: iconv/iconv_prog.c:68
+-msgid "print progress information"
+-msgstr "´òÓ¡½ø¶ÈÐÅÏ¢"
++#: elf/cache.c:69
++msgid "unknown"
++msgstr "δ֪"
++
++#: elf/cache.c:105
++msgid "Unknown OS"
++msgstr "δ֪µÄ²Ù×÷ϵͳ"
++
++#: elf/cache.c:110
++#, c-format
++msgid ", OS ABI: %s %d.%d.%d"
++msgstr ""
+
+-#: elf/sprof.c:687
++#: elf/cache.c:136 elf/ldconfig.c:1045
+ #, c-format
+-msgid "profiling data file `%s' does not match shared object `%s'"
++msgid "Can't open cache file %s\n"
++msgstr "ÎÞ·¨´ò¿ª»º³åÎļþ %s\n"
++
++#: elf/cache.c:148
++msgid "mmap of cache file failed.\n"
+ msgstr ""
+
+-#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+-#, c-format
+-msgid "program %lu is not available\n"
+-msgstr "³ÌÐò %lu ²»¿ÉÓÃ\n"
++#: elf/cache.c:152 elf/cache.c:162
++msgid "File is not a cache file.\n"
++msgstr "Îļþ²»ÊÇ»º³åÇøÎļþ¡£\n"
+
+-#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
+-#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
+-#: sunrpc/rpcinfo.c:510
++#: elf/cache.c:195 elf/cache.c:205
+ #, c-format
+-msgid "program %lu version %lu is not available\n"
+-msgstr "³ÌÐò %lu °æ±¾ %lu ²»¿ÉÓÃ\n"
++msgid "%d libs found in cache `%s'\n"
++msgstr "ÔÚ»º³åÇø¡°%2$s¡±ÖÐÕÒµ½ %1$d ¸ö¿â\n"
+
+-#: sunrpc/rpcinfo.c:515
++#: elf/cache.c:392
+ #, c-format
+-msgid "program %lu version %lu ready and waiting\n"
+-msgstr "³ÌÐò %lu °æ±¾ %lu ¾ÍÐ÷²¢µÈ´ý\n"
++msgid "Can't remove old temporary cache file %s"
++msgstr "ÎÞ·¨É¾³ý¾ÉÁÙʱ»º³åÎļþ %s"
+
+-#: inet/rcmd.c:354
++#: elf/cache.c:399
+ #, c-format
+-msgid "rcmd: %s: short read"
+-msgstr ""
++msgid "Can't create temporary cache file %s"
++msgstr "ÎÞ·¨´´½¨ÁÙʱ»º³åÎļþ %s"
+
+-#: inet/rcmd.c:290
+-#, c-format
+-msgid "rcmd: poll (setting up stderr): %m\n"
++#: elf/cache.c:407 elf/cache.c:416 elf/cache.c:420
++msgid "Writing of cache data failed"
+ msgstr ""
+
+-#: inet/rcmd.c:172 inet/rcmd.c:175
+-msgid "rcmd: socket: All ports in use\n"
++#: elf/cache.c:424
++msgid "Writing of cache data failed."
+ msgstr ""
+
+-#: inet/rcmd.c:270
++#: elf/cache.c:431
+ #, c-format
+-msgid "rcmd: write (setting up stderr): %m\n"
++msgid "Changing access rights of %s to %#o failed"
++msgstr "½« %s µÄ·ÃÎÊȨÏ޸ıäΪ %#o ʧ°Ü"
++
++#: elf/cache.c:436
++#, c-format
++msgid "Renaming of %s to %s failed"
++msgstr "½« %s ¸ÄÃûΪ %s ʧ°Ü"
++
++#: elf/dl-close.c:128
++msgid "shared object not open"
++msgstr "¹²Ïí¿âδ´ò¿ª"
++
++#: elf/dl-close.c:486 elf/dl-open.c:444
++msgid "TLS generation counter wrapped! Please send report with the 'glibcbug' script."
+ msgstr ""
+
+-#: sunrpc/svc_simple.c:112
+-msgid "registerrpc: out of memory\n"
+-msgstr "registerrpc£ºÄÚ´æ²»×ã\n"
++#: elf/dl-deps.c:111 elf/dl-open.c:183
++msgid "DST not allowed in SUID/SGID programs"
++msgstr ""
+
+-#: timezone/zic.c:1880
+-msgid "repeated leap second moment"
++#: elf/dl-deps.c:124
++msgid "empty dynamics string token substitution"
+ msgstr ""
+
+-#: locale/programs/repertoire.c:342
++#: elf/dl-deps.c:130
+ #, c-format
+-msgid "repertoire map file `%s' not found"
++msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+ msgstr ""
+
+-#: locale/programs/charmap.c:1068
+-msgid "resulting bytes for range not representable."
++#: elf/dl-deps.c:461
++msgid "cannot allocate dependency list"
++msgstr "ÎÞ·¨·ÖÅäÒÐÀµÁбí"
++
++#: elf/dl-deps.c:494 elf/dl-deps.c:549
++msgid "cannot allocate symbol search list"
++msgstr "ÎÞ·¨·ÖÅä·ûºÅËÑË÷Áбí"
++
++#: elf/dl-deps.c:534
++msgid "Filters not supported with LD_TRACE_PRELINKING"
+ msgstr ""
+
+-#: sunrpc/rpc_main.c:1117
+-msgid "rpcgen: arglist coding error\n"
++#: elf/dl-error.c:75
++msgid "DYNAMIC LINKER BUG!!!"
+ msgstr ""
+
+-#: sunrpc/rpc_main.c:1105
+-msgid "rpcgen: too many defines\n"
+-msgstr "rpcgen£º¶¨Òå¹ý¶à\n"
++#: elf/dl-error.c:108
++msgid "error while loading shared libraries"
++msgstr "×°Èë¹²Ïí¿âʱ³ö´í"
+
+-#: sunrpc/rpcinfo.c:732
+-#, c-format
+-msgid "rpcinfo: %s is unknown host\n"
+-msgstr "rpcinfo£º%s ÊÇδ֪µÄÖ÷»ú\n"
++#: elf/dl-load.c:339
++msgid "cannot allocate name record"
++msgstr "ÎÞ·¨·ÖÅäÃû¼Ç¼"
+
+-#: sunrpc/rpcinfo.c:695
+-#, c-format
+-msgid "rpcinfo: %s is unknown service\n"
+-msgstr "rpcinfo£º%s ÊÇδ֪µÄ·þÎñ\n"
++#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
++msgid "cannot create cache for search path"
++msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶»º³åÆ÷"
+
+-#: sunrpc/rpcinfo.c:665
+-#, c-format
+-msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
+-msgstr "rpcinfo£ºÎÞ·¨É¾³ý³ÌÐò %s °æ±¾ %s µÄ×¢²á\n"
++#: elf/dl-load.c:543
++msgid "cannot create RUNPATH/RPATH copy"
++msgstr "ÎÞ·¨´´½¨ RUNPATH/RPATH µÄ¸±±¾"
+
+-#: sunrpc/rpcinfo.c:637
+-#, c-format
+-msgid "rpcinfo: broadcast failed: %s\n"
+-msgstr "rpcinfo£º¹ã²¥Ê§°Ü£º%s\n"
++#: elf/dl-load.c:598
++msgid "cannot create search path array"
++msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶Êý×é"
+
+-#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+-msgid "rpcinfo: can't contact portmapper"
+-msgstr "rpcinfo£ºÎÞ·¨Í¬ portmapper ½»»¥"
++#: elf/dl-load.c:794
++msgid "cannot stat shared object"
++msgstr "ÎÞ·¨¶Ô¹²ÏíÄ¿±ê½øÐÐ stat ²Ù×÷"
+
+-#: timezone/zic.c:749 timezone/zic.c:751
+-msgid "same rule name in multiple files"
+-msgstr "¶à¸öÎļþÖеÄÏàͬ¹æÔòÃû"
++#: elf/dl-load.c:838
++msgid "cannot open zero fill device"
++msgstr "ÎÞ·¨´ò¿ªÁãÌî³äÉ豸"
+
+-#: elf/dl-load.c:1104
+-msgid "shared object cannot be dlopen()ed"
+-msgstr "ÎÞ·¨Óà dlopen() ´ò¿ª¹²Ïí¿â"
++#: elf/dl-load.c:847 elf/dl-load.c:1902
++msgid "cannot create shared object descriptor"
++msgstr "ÎÞ·¨´´½¨¹²Ïí¶ÔÏóÃèÊö·û"
+
+-#: elf/dl-close.c:61
+-msgid "shared object not open"
+-msgstr "¹²Ïí¿âδ´ò¿ª"
++#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
++msgid "cannot read file data"
++msgstr "ÎÞ·¨¶ÁÈëÎļþÊý¾Ý"
+
+-#: nscd/connections.c:493
+-#, c-format
+-msgid "short read while reading request key: %s"
++#: elf/dl-load.c:906
++msgid "ELF load command alignment not page-aligned"
+ msgstr ""
+
+-#: nscd/connections.c:443
+-#, c-format
+-msgid "short read while reading request: %s"
++#: elf/dl-load.c:913
++msgid "ELF load command address/offset not properly aligned"
++msgstr "ELF ×°ÈëÃüÁîµÄµØÖ·/Æ«ÒÆÁ¿Ã»ÓÐÕýÈ·µØ¶ÔÆë"
++
++#: elf/dl-load.c:988
++msgid "cannot allocate TLS data structures for initial thread"
+ msgstr ""
+
+-#: nscd/grpcache.c:193 nscd/hstcache.c:278 nscd/pwdcache.c:189
+-#, c-format
+-msgid "short write in %s: %s"
++#: elf/dl-load.c:1012
++msgid "cannot handle TLS data"
++msgstr "ÎÞ·¨´¦Àí TLS Êý¾Ý"
++
++#: elf/dl-load.c:1047
++msgid "failed to map segment from shared object"
+ msgstr ""
+
+-#: inet/rcmd.c:335
+-msgid "socket: protocol failure in circuit setup\n"
++#: elf/dl-load.c:1071
++msgid "cannot dynamically load executable"
++msgstr "ÎÞ·¨¶¯Ì¬×°Èë¿ÉÖ´ÐÐÎļþ"
++
++#: elf/dl-load.c:1132
++msgid "cannot change memory protections"
++msgstr "ÎÞ·¨¸Ä±äÄÚ´æ±£»¤"
++
++#: elf/dl-load.c:1151
++msgid "cannot map zero-fill pages"
+ msgstr ""
+
+-#: timezone/zic.c:820
+-msgid "standard input"
+-msgstr "±ê×¼ÊäÈë"
++#: elf/dl-load.c:1169
++msgid "cannot allocate memory for program header"
++msgstr "ÎÞ·¨Îª³ÌÐòÍ··ÖÅäÄÚ´æ"
+
+-#: locale/programs/ld-ctype.c:1681
+-msgid "start and end character sequence of range must have the same length"
+-msgstr "·¶Î§µÄÆðʼºÍÖÕÖ¹×Ö·ûÐòÁбØÐë¾ßÓÐÏàͬµÄ³¤¶È"
++#: elf/dl-load.c:1200
++msgid "object file has no dynamic section"
++msgstr "Ä¿±êÎļþûÓж¯Ì¬½Ú"
+
+-#: timezone/zic.c:1331
+-msgid "starting year greater than ending year"
+-msgstr "ÆðʼÄê·Ý´óÓÚÖÕÖ¹Äê·Ý"
++#: elf/dl-load.c:1240
++msgid "shared object cannot be dlopen()ed"
++msgstr "ÎÞ·¨Óà dlopen() ´ò¿ª¹²Ïí¿â"
+
+-#: timezone/zic.c:1303 timezone/zic.c:1328
+-msgid "starting year too high to be represented"
++#: elf/dl-load.c:1263
++msgid "cannot create searchlist"
++msgstr "ÎÞ·¨´´½¨ËÑË÷Áбí"
++
++#: elf/dl-load.c:1398
++msgid "file too short"
++msgstr "Îļþ¹ý¶Ì"
++
++#: elf/dl-load.c:1421
++msgid "invalid ELF header"
++msgstr "ÎÞЧµÄ ELF Í·"
++
++#: elf/dl-load.c:1430
++msgid "ELF file data encoding not big-endian"
+ msgstr ""
+
+-#: timezone/zic.c:1301 timezone/zic.c:1326
+-msgid "starting year too low to be represented"
++#: elf/dl-load.c:1432
++msgid "ELF file data encoding not little-endian"
+ msgstr ""
+
+-#: iconv/iconv_prog.c:67
+-msgid "suppress warnings"
++#: elf/dl-load.c:1436
++msgid "ELF file version ident does not match current one"
+ msgstr ""
+
+-#: sunrpc/svc_run.c:76
+-msgid "svc_run: - poll failed"
++#: elf/dl-load.c:1440
++msgid "ELF file OS ABI invalid"
+ msgstr ""
+
+-#: sunrpc/svc_tcp.c:171
+-msgid "svc_tcp.c - cannot getsockname or listen"
+-msgstr "svc_tcp.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
++#: elf/dl-load.c:1442
++msgid "ELF file ABI version invalid"
++msgstr ""
+
+-#: sunrpc/svc_tcp.c:156
+-msgid "svc_tcp.c - tcp socket creation problem"
+-msgstr "svc_tcp.c - tcp Ì×½Ó×Ö´´½¨ÎÊÌâ"
++#: elf/dl-load.c:1445
++msgid "internal error"
++msgstr "ÄÚ²¿´íÎó"
+
+-#: sunrpc/svc_tcp.c:224 sunrpc/svc_tcp.c:227
+-msgid "svc_tcp: makefd_xprt: out of memory\n"
+-msgstr "svc_tcp£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
++#: elf/dl-load.c:1452
++msgid "ELF file version does not match current one"
++msgstr "ELF Îļþ°æ±¾Ó뵱ǰ°æ±¾²»Æ¥Åä"
+
+-#: sunrpc/svc_unix.c:150
+-msgid "svc_unix.c - AF_UNIX socket creation problem"
+-msgstr "svc_unix.c - AF_UNIX Ì×½Ó×Ö´´½¨ÎÊÌâ"
++#: elf/dl-load.c:1460
++msgid "ELF file's phentsize not the expected size"
++msgstr ""
+
+-#: sunrpc/svc_unix.c:166
+-msgid "svc_unix.c - cannot getsockname or listen"
+-msgstr "svc_unix.c - ÎÞ·¨½øÐÐ getsockname »ò listen ²Ù×÷"
++#: elf/dl-load.c:1466
++msgid "only ET_DYN and ET_EXEC can be loaded"
++msgstr ""
+
+-#: sunrpc/svc_unix.c:220 sunrpc/svc_unix.c:223
+-msgid "svc_unix: makefd_xprt: out of memory\n"
+-msgstr "svc_unix£ºmakefd_xprt£ºÄÚ´æ²»×ã\n"
++#: elf/dl-load.c:1917
++msgid "cannot open shared object file"
++msgstr "ÎÞ·¨´ò¿ª¹²Ïí¶ÔÏóÎļþ"
+
+-#: sunrpc/svc_tcp.c:182 sunrpc/svc_tcp.c:185
+-msgid "svctcp_create: out of memory\n"
+-msgstr "svctcp_create£ºÄÚ´æ²»×ã\n"
++#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
++msgid "relocation error"
++msgstr "Öض¨Î»´íÎó"
+
+-#: sunrpc/svc_udp.c:143
+-msgid "svcudp_create - cannot getsockname"
+-msgstr "svcudp_create - ÎÞ·¨µ÷Óà getsockname"
++#: elf/dl-open.c:111
++msgid "cannot extend global scope"
++msgstr "ÎÞ·¨À©Õ¹È«¾Ö·¶Î§"
+
+-#: sunrpc/svc_udp.c:155 sunrpc/svc_udp.c:158
+-msgid "svcudp_create: out of memory\n"
+-msgstr "svcudp_create£ºÄÚ´æ²»×ã\n"
++#: elf/dl-open.c:214
++msgid "empty dynamic string token substitution"
++msgstr ""
+
+-#: sunrpc/svc_udp.c:129
+-msgid "svcudp_create: socket creation problem"
+-msgstr "svcudp_create: Ì×½Ó×Ö´´½¨ÎÊÌâ"
++#: elf/dl-open.c:351 elf/dl-open.c:362
++msgid "cannot create scope list"
++msgstr "ÎÞ·¨´´½¨·¶Î§Áбí"
++
++#: elf/dl-open.c:424
++msgid "cannot create TLS data structures"
++msgstr "ÎÞ·¨´´½¨ TLS Êý¾Ý½á¹¹"
+
+-#: sunrpc/svc_udp.c:179 sunrpc/svc_udp.c:182
+-msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
+-msgstr "svcudp_create£ºxp_pad ¶Ô IP_PKTINFO À´ËµÌ«Ð¡\n"
++#: elf/dl-open.c:486
++msgid "invalid mode for dlopen()"
++msgstr "ÎÞЧµÄ dlopen() ģʽ"
+
+-#: sunrpc/svc_unix.c:178 sunrpc/svc_unix.c:181
+-msgid "svcunix_create: out of memory\n"
+-msgstr "svcunix_create£ºÄÚ´æ²»×ã\n"
++#: elf/dl-reloc.c:58
++msgid "shared object cannot be dlopen()ed: static TLS memory too small"
++msgstr "ÎÞ·¨Óà dlopen() ´ò¿ª¹²Ïí¶ÔÏ󣺾²Ì¬ TLS ÄÚ´æ¹ýС"
+
+-#: locale/programs/linereader.c:750
+-#, c-format
+-msgid "symbol `%.*s' not in charmap"
++#: elf/dl-reloc.c:118
++msgid "cannot make segment writable for relocation"
+ msgstr ""
+
+-#: locale/programs/linereader.c:771
++#: elf/dl-reloc.c:219
+ #, c-format
+-msgid "symbol `%.*s' not in repertoire map"
++msgid "%s: profiler found no PLTREL in object %s\n"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:1630 locale/programs/ld-collate.c:1729
+-#, c-format
+-msgid "symbol `%s'"
+-msgstr "·ûºÅ¡°%s¡±"
+-
+-#: locale/programs/ld-collate.c:1627 locale/programs/ld-collate.c:1726
++#: elf/dl-reloc.c:231
+ #, c-format
+-msgid "symbol `%s' has the same encoding as"
++msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+ msgstr ""
+
+-#: locale/programs/ld-collate.c:1552
+-#, c-format
+-msgid "symbol `%s' not defined"
+-msgstr "·ûºÅ¡°%s¡±Î´¶¨Òå"
++#: elf/dl-reloc.c:246
++#, fuzzy
++msgid "cannot restore segment prot after reloc"
++msgstr "ÎÞ·¨´´½¨ËÑË÷·¾¶Êý×é"
+
+-#: locale/programs/ld-ctype.c:1956 locale/programs/ld-ctype.c:2007
+-#: locale/programs/ld-ctype.c:2049
+-msgid "syntax error"
+-msgstr "Óï·¨´íÎó"
++#: elf/dl-sym.c:74 elf/dl-sym.c:145
++msgid "RTLD_NEXT used in code not dynamically loaded"
++msgstr ""
+
+-#: locale/programs/charmap.c:492 locale/programs/charmap.c:546
+-#: locale/programs/charmap.c:578 locale/programs/charmap.c:672
+-#: locale/programs/charmap.c:727 locale/programs/charmap.c:768
+-#: locale/programs/charmap.c:809
+-#, c-format
+-msgid "syntax error in %s definition: %s"
+-msgstr "%s µÄ¶¨ÒåÖеÄÓï·¨´íÎó£º%s"
++#: elf/dl-version.c:302
++msgid "cannot allocate version reference table"
++msgstr "ÎÞ·¨·ÖÅä°æ±¾ÒýÓñí¸ñ"
+
+-#: locale/programs/charmap.c:351 locale/programs/charmap.c:368
+-#: locale/programs/repertoire.c:175
+-#, c-format
+-msgid "syntax error in prolog: %s"
+-msgstr ""
++#: elf/ldconfig.c:122
++msgid "Print cache"
++msgstr "´òÓ¡»º³åÇø"
+
+-#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
+-#: locale/programs/repertoire.c:296
+-#, c-format
+-msgid "syntax error in repertoire map definition: %s"
+-msgstr ""
++#: elf/ldconfig.c:123
++msgid "Generate verbose messages"
++msgstr "Éú³ÉÏêϸÏûÏ¢"
+
+-#: locale/programs/locfile.c:245
+-msgid "syntax error: not inside a locale definition section"
+-msgstr "Óï·¨´íÎ󣺲»ÔÚÇøÓò¶¨Òå½ÚÖ®ÖÐ"
++#: elf/ldconfig.c:124
++msgid "Don't build cache"
++msgstr "²»Òª´´½¨»º³åÇø"
+
+-#: catgets/gencat.c:432 catgets/gencat.c:605 catgets/gencat.c:634
+-msgid "this is the first definition"
+-msgstr "ÕâÊǵÚÒ»¸ö¶¨Òå"
++#: elf/ldconfig.c:125
++msgid "Don't generate links"
++msgstr "²»ÒªÉú³ÉÁ¬½Ó"
+
+-#: timezone/zic.c:1163
+-msgid "time before zero"
+-msgstr ""
++#: elf/ldconfig.c:126
++msgid "Change to and use ROOT as root directory"
++msgstr "½øÈë ROOT Ŀ¼²¢½«Æä×÷Ϊ¸ùĿ¼"
+
+-#: timezone/zic.c:1171 timezone/zic.c:2048 timezone/zic.c:2067
+-msgid "time overflow"
+-msgstr "ʱ¼äÒç³ö"
++#: elf/ldconfig.c:127
++msgid "Use CACHE as cache file"
++msgstr "½« CACHE ÓÃ×÷»º³åÇøÎļþ"
+
+-#: locale/programs/ld-ctype.c:1554 locale/programs/ld-ctype.c:2030
+-#, c-format
+-msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
+-msgstr ""
++#: elf/ldconfig.c:128
++msgid "Use CONF as configuration file"
++msgstr "½« CONF ÓÃ×÷ÅäÖÃÎļþ"
+
+-#: locale/programs/ld-ctype.c:1688
+-msgid "to-value character sequence is smaller than from-value sequence"
+-msgstr ""
++#: elf/ldconfig.c:129
++msgid "Only process directories specified on the command line. Don't build cache."
++msgstr "Ö»ÔÚÃüÁîÐÐÖиø³öÁ˽ø³ÌĿ¼¡£Î´´´½¨»º³åÇø¡£"
+
+-#: locale/programs/charmap.c:556
+-msgid "too few bytes in character encoding"
+-msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ýÉÙ"
++#: elf/ldconfig.c:130
++msgid "Manually link individual libraries."
++msgstr "ÊÖ¹¤Á¬½Ó¶ÀÁ¢µÄ¿â¡£"
+
+-#: locale/programs/charmap.c:558
+-msgid "too many bytes in character encoding"
+-msgstr "×Ö·û±àÂëÖÐ×Ö½ÚÊý¹ý¶à"
++#: elf/ldconfig.c:131
++msgid "Format to use: new, old or compat (default)"
++msgstr "²ÉÓõĸñʽ£ºÐ¡¢¾É»ò¼æÈÝ(ĬÈÏ)"
+
+-#: timezone/zic.c:1874
+-msgid "too many leap seconds"
++#: elf/ldconfig.c:136
++msgid "Configure Dynamic Linker Run Time Bindings."
+ msgstr ""
+
+-#: timezone/zic.c:1846
+-msgid "too many local time types"
+-msgstr "¹ý¶àµÄ±¾µØʱ¼äÀàÐÍ"
++#: elf/ldconfig.c:294
++#, c-format
++msgid "Path `%s' given more than once"
++msgstr "¶à´Î¸ø³ö·¾¶¡°%s¡±"
+
+-#: timezone/zic.c:1800
+-msgid "too many transitions?!"
+-msgstr ""
++#: elf/ldconfig.c:338
++#, c-format
++msgid "%s is not a known library type"
++msgstr "%s ²»ÊÇÒÑÖªÀàÐ͵Ŀâ"
+
+-#: timezone/zic.c:2171
+-msgid "too many, or too long, time zone abbreviations"
+-msgstr "¹ý¶à»ò¹ý³¤µÄʱÇøËõд"
++#: elf/ldconfig.c:356
++#, c-format
++msgid "Can't stat %s"
++msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
+
+-#: locale/programs/linereader.h:160
+-msgid "trailing garbage at end of line"
+-msgstr ""
++#: elf/ldconfig.c:426
++#, c-format
++msgid "Can't stat %s\n"
++msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷\n"
+
+-#: sunrpc/svc_simple.c:175
++#: elf/ldconfig.c:436
+ #, c-format
+-msgid "trouble replying to prog %d\n"
+-msgstr ""
++msgid "%s is not a symbolic link\n"
++msgstr "%s ²»ÊÇ·ûºÅÁ¬½Ó\n"
+
+-#: timezone/zic.c:1338
+-msgid "typed single year"
++#: elf/ldconfig.c:455
++#, c-format
++msgid "Can't unlink %s"
+ msgstr ""
+
+-#: iconv/iconv_charmap.c:524 iconv/iconv_prog.c:533
+-msgid "unable to allocate buffer for input"
+-msgstr "ÎÞ·¨ÎªÊäÈë·ÖÅ仺³åÇø"
+-
+-#: nis/nis_callback.c:189
+-msgid "unable to free arguments"
+-msgstr "ÎÞ·¨ÊͷŲÎÊý"
++#: elf/ldconfig.c:461
++#, c-format
++msgid "Can't link %s to %s"
++msgstr "ÎÞ·¨½« %s Á¬½Óµ½ %s"
+
+-#: posix/getconf.c:968 posix/getconf.c:984
+-msgid "undefined"
+-msgstr "䶨Òå"
++#: elf/ldconfig.c:467
++msgid " (changed)\n"
++msgstr " (¸Ä±ä)\n"
+
+-#: elf/cache.c:69
+-msgid "unknown"
+-msgstr "δ֪"
++#: elf/ldconfig.c:469
++msgid " (SKIPPED)\n"
++msgstr " (Ìø¹ý)\n"
+
+-#: locale/programs/charmap.c:861 locale/programs/charmap.c:872
++#: elf/ldconfig.c:524
+ #, c-format
+-msgid "unknown character `%s'"
+-msgstr "δ֪µÄ×Ö·û¡°%s¡±"
++msgid "Can't find %s"
++msgstr "ÎÞ·¨ÕÒµ½ %s"
+
+-#: catgets/gencat.c:562
++#: elf/ldconfig.c:540
+ #, c-format
+-msgid "unknown directive `%s': line ignored"
+-msgstr "δ֪µÄÖ¸Áî¡°%s¡±£ººöÂÔ´ËÐÐ"
++msgid "Can't lstat %s"
++msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
+
+-#: iconv/iconv_prog.c:480
++#: elf/ldconfig.c:547
+ #, c-format
+-msgid "unknown iconv() error %d"
+-msgstr "δ֪µÄ iconv() ´íÎó %d"
++msgid "Ignored file %s since it is not a regular file."
++msgstr ""
+
+-#: catgets/gencat.c:508
++#: elf/ldconfig.c:555
+ #, c-format
+-msgid "unknown set `%s'"
+-msgstr "δ֪¼¯ºÏ¡°%s¡±"
++msgid "No link created since soname could not be found for %s"
++msgstr ""
+
+-#: posix/getconf.c:941
++#: elf/ldconfig.c:646
+ #, c-format
+-msgid "unknown specification \"%s\""
+-msgstr "δ֪µÄ¹æ·¶¡°%s¡±"
++msgid "Can't open directory %s"
++msgstr "ÎÞ·¨´ò¿ªÄ¿Â¼ %s"
+
+-#: timezone/zic.c:792
+-msgid "unruly zone"
+-msgstr ""
++#: elf/ldconfig.c:701 elf/ldconfig.c:748
++#, c-format
++msgid "Cannot lstat %s"
++msgstr "ÎÞ·¨¶Ô %s ½øÐÐ lstat ²Ù×÷"
+
+-#: catgets/gencat.c:1174
+-msgid "unterminated message"
+-msgstr "δÖÕÖ¹µÄÏûÏ¢"
++#: elf/ldconfig.c:713
++#, c-format
++msgid "Cannot stat %s"
++msgstr "ÎÞ·¨¶Ô %s ½øÐÐ stat ²Ù×÷"
+
+-#: locale/programs/linereader.c:604 locale/programs/linereader.c:789
+-msgid "unterminated string"
+-msgstr "δÖÕÖ¹µÄ×Ö·û´®"
++#: elf/ldconfig.c:770 elf/readlib.c:93
++#, c-format
++msgid "Input file %s not found.\n"
++msgstr "δÕÒµ½ÊäÈëÎļþ %s¡£\n"
+
+-#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
+-msgid "unterminated string constant"
+-msgstr "δÖÕÖ¹µÄ×Ö·û´®³£Á¿"
++#: elf/ldconfig.c:804
++#, c-format
++msgid "libc5 library %s in wrong directory"
++msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
+
+-#: locale/programs/linereader.c:474
+-msgid "unterminated symbolic name"
+-msgstr "δÖÕÖ¹µÄ·ûºÅÃû"
++#: elf/ldconfig.c:807
++#, c-format
++msgid "libc6 library %s in wrong directory"
++msgstr "libc5 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
+
+-#: locale/programs/charmap.c:1010
+-msgid "upper limit in range is not higher then lower limit"
+-msgstr "·¶Î§µÄÉÏÏÞ²¢²»¸ßÓÚÏÂÏÞ"
++#: elf/ldconfig.c:810
++#, c-format
++msgid "libc4 library %s in wrong directory"
++msgstr "libc4 µÄ¿â %s ´¦ÓÚ´íÎóµÄĿ¼ÖÐ"
+
+-#: locale/programs/repertoire.c:455
+-msgid "upper limit in range is not smaller then lower limit"
+-msgstr "·¶Î§µÄÉÏÏÞ²¢²»Ð¡ÓÚÏÂÏÞ"
++#: elf/ldconfig.c:837
++#, c-format
++msgid "libraries %s and %s in directory %s have same soname but different type."
++msgstr "Ŀ¼ %3$s ÖÐµÄ %1$s ºÍ %2$s µÄ so Ãû³ÆÏàͬµ«ÀàÐͲ»Í¬¡£"
+
+-#: sunrpc/rpc_main.c:1426
++#: elf/ldconfig.c:940
+ #, c-format
+-msgid "usage: %s infile\n"
+-msgstr "Ó÷¨£º%s ÊäÈëÎļþ\n"
++msgid "Can't open configuration file %s"
++msgstr "ÎÞ·¨´ò¿ªÅäÖÃÎļþ %s"
+
+-#: timezone/zic.c:2114
+-msgid "use of 2/29 in non leap-year"
+-msgstr ""
++#: elf/ldconfig.c:1024
++msgid "Can't chdir to /"
++msgstr "ÎÞ·¨¸Ä±äĿ¼µ½ /"
+
+-#: locale/programs/charmap.c:645 locale/programs/charmap.c:708
++#: elf/ldconfig.c:1066
+ #, c-format
+-msgid "value for %s must be an integer"
+-msgstr "%s µÄÖµ±ØÐëΪÕûÊý"
++msgid "Can't open cache file directory %s\n"
++msgstr "ÎÞ·¨´ò¿ª»º³åÎļþĿ¼ %s\n"
+
+-#: locale/programs/charmap.c:404
++#: elf/readlib.c:99
+ #, c-format
+-msgid "value for <%s> must be 1 or greater"
+-msgstr "<%s>µÄÖµ±ØÐëÊÇ 1 »ò¸ü´ó"
++msgid "Cannot fstat file %s.\n"
++msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ fstat ²Ù×÷¡£\n"
+
+-#: locale/programs/charmap.c:416
++#: elf/readlib.c:109
+ #, c-format
+-msgid "value of <%s> must be greater or equal than the value of <%s>"
+-msgstr "<%s> µÄÖµ±ØÐë´óÓÚµÈÓÚ <%s> µÄÖµ"
+-
+-#: timezone/zic.c:439
+-msgid "warning: "
+-msgstr "¾¯¸æ£º"
++msgid "File %s is too small, not checked."
++msgstr "Îļþ %s ¹ýС£¬Î´¼ì²é¡£"
+
+-#: nscd/connections.c:432
++#: elf/readlib.c:118
+ #, c-format
+-msgid "while accepting connection: %s"
+-msgstr "½ÓÊÜÁ¬½Óʱ£º%s"
+-
+-#: nscd/grpcache.c:150 nscd/hstcache.c:165 nscd/pwdcache.c:143
+-msgid "while allocating cache entry"
+-msgstr "·ÖÅ仺³åÇøÌõĿʱ"
++msgid "Cannot mmap file %s.\n"
++msgstr "ÎÞ·¨¶ÔÎļþ %s ½øÐÐ mmap ²Ù×÷¡£\n"
+
+-#: nscd/cache.c:88
+-msgid "while allocating hash table entry"
+-msgstr "·ÖÅäÔÓ´Õ±íÌõĿʱ"
++#: elf/readlib.c:158
++#, c-format
++msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
++msgstr "%s ²»ÊÇ ELF Îļþ - ËüÆðʼµÄħÊý´íÎó¡£\n"
+
+-#: nscd/grpcache.c:100 nscd/hstcache.c:108 nscd/pwdcache.c:106
+-msgid "while allocating key copy"
+-msgstr "·ÖÅä¼ü¸±±¾Ê±"
++#: elf/sprof.c:72
++msgid "Output selection:"
++msgstr "Êä³öÑ¡Ôñ£º"
+
+-#: iconv/iconvconfig.c:369
+-msgid "while inserting in search tree"
+-msgstr "²åÈëËÑË÷Ê÷ʱ"
++#: elf/sprof.c:74
++msgid "print list of count paths and their number of use"
++msgstr "´òÓ¡µ±Ç°Â·¾¶µÄÁбíºÍËûÃǵÄʹÓôÎÊý"
+
+-#: catgets/gencat.c:1198
+-msgid "while opening old catalog file"
++#: elf/sprof.c:76
++msgid "generate flat profile with counts and ticks"
+ msgstr ""
+
+-#: locale/programs/locale.c:353
+-msgid "while preparing output"
+-msgstr "×¼±¸Êä³öʱ"
++#: elf/sprof.c:77
++msgid "generate call graph"
++msgstr "Éú³Éµ÷ÓÃͼ"
+
+-#: elf/sprof.c:679
+-msgid "while stat'ing profiling data file"
++#: elf/sprof.c:84
++msgid "Read and display shared object profiling data"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:2394
+-msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
++#: elf/sprof.c:87
++msgid "SHOBJ [PROFDATA]"
+ msgstr ""
+
+-#: locale/programs/ld-ctype.c:2408
+-msgid "with character code range values one must use the absolute ellipsis `...'"
+-msgstr ""
++#: elf/sprof.c:398
++#, c-format
++msgid "failed to load shared object `%s'"
++msgstr "×°Èë¹²ÏíÄ¿±êÎļþ¡°%s¡±Ê§°Ü"
+
+-#: locale/programs/ld-ctype.c:2379
+-msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
+-msgstr ""
++#: elf/sprof.c:407
++msgid "cannot create internal descriptors"
++msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
+
+-#: nscd/nscd_stat.c:116
+-msgid "write incomplete"
+-msgstr "дÈë²»ÍêÕû"
++#: elf/sprof.c:526
++#, c-format
++msgid "Reopening shared object `%s' failed"
++msgstr "ÖØÏÖ´ò¿ª¹²Ïí¶ÔÏó¡°%s¡±Ê§°Ü"
+
+-#: inet/rcmd.c:516
+-msgid "writeable by other than owner"
++#: elf/sprof.c:534
++msgid "mapping of section headers failed"
+ msgstr ""
+
+-#: nscd/nscd.c:123 nscd/nscd_nischeck.c:64 nss/getent.c:761
+-msgid "wrong number of arguments"
+-msgstr "²ÎÊý¸öÊý´íÎó"
+-
+-#: timezone/zic.c:1121
+-msgid "wrong number of fields on Leap line"
++#: elf/sprof.c:544
++msgid "mapping of section header string table failed"
+ msgstr ""
+
+-#: timezone/zic.c:1212
+-msgid "wrong number of fields on Link line"
+-msgstr "Á¬½ÓÐÐÖÐÓòµÄ¸öÊý´íÎó"
++#: elf/sprof.c:564
++#, c-format
++msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
++msgstr "*** Îļþ¡°%s¡±ÒÑ°þÀ룺²»¿ÉÄܽøÐÐϸ½Ú·ÖÎö\n"
+
+-#: timezone/zic.c:955
+-msgid "wrong number of fields on Rule line"
+-msgstr "¹æÔòÐÐÖÐÓòµÄ¸öÊý´íÎó"
++#: elf/sprof.c:594
++msgid "failed to load symbol data"
++msgstr "×°Èë·ûºÅÊý¾Ýʧ°Ü"
+
+-#: timezone/zic.c:1025
+-msgid "wrong number of fields on Zone continuation line"
++#: elf/sprof.c:664
++msgid "cannot load profiling data"
+ msgstr ""
+
+-#: timezone/zic.c:983
+-msgid "wrong number of fields on Zone line"
+-msgstr "ÇøÓòÐÐÖÐÓòµÄ¸öÊý´íÎó"
++#: elf/sprof.c:673
++msgid "while stat'ing profiling data file"
++msgstr ""
+
+-#: sunrpc/xdr_array.c:106 sunrpc/xdr_array.c:109
+-msgid "xdr_array: out of memory\n"
+-msgstr "xdr_array£ºÄÚ´æ²»×ã\n"
++#: elf/sprof.c:681
++#, c-format
++msgid "profiling data file `%s' does not match shared object `%s'"
++msgstr ""
+
+-#: sunrpc/xdr.c:558 sunrpc/xdr.c:561
+-msgid "xdr_bytes: out of memory\n"
+-msgstr "xdr_bytes£ºÄÚ´æ²»×ã\n"
++#: elf/sprof.c:692
++msgid "failed to mmap the profiling data file"
++msgstr ""
+
+-#: sunrpc/xdr_ref.c:89 sunrpc/xdr_ref.c:92
+-msgid "xdr_reference: out of memory\n"
+-msgstr "xdr_reference£ºÄÚ´æ²»×ã\n"
++#: elf/sprof.c:700
++msgid "error while closing the profiling data file"
++msgstr ""
+
+-#: sunrpc/xdr.c:710 sunrpc/xdr.c:713
+-msgid "xdr_string: out of memory\n"
+-msgstr "xdr_string£ºÄÚ´æ²»×ã\n"
++#: elf/sprof.c:709 elf/sprof.c:779
++msgid "cannot create internal descriptor"
++msgstr "ÎÞ·¨´´½¨ÄÚ²¿ÃèÊö·û"
+
+-#: sunrpc/xdr_rec.c:155 sunrpc/xdr_rec.c:158
+-msgid "xdrrec_create: out of memory\n"
+-msgstr "xdrrec_create£ºÄÚ´æ²»×ã\n"
++#: elf/sprof.c:755
++#, c-format
++msgid "`%s' is no correct profile data file for `%s'"
++msgstr ""
+
+-#: nis/ypclnt.c:909
+-msgid "yp_update: cannot convert host to netname\n"
+-msgstr "yp_update£ºÎÞ·¨½«Ö÷»úÃûת»»ÎªÍøÃû\n"
++#: elf/sprof.c:936 elf/sprof.c:988
++msgid "cannot allocate symbol data"
++msgstr "ÎÞ·¨·ÖÅä·ûºÅÊý¾Ý"
+
+-#: nis/ypclnt.c:921
+-msgid "yp_update: cannot get server address\n"
+-msgstr "yp_update£ºÎÞ·¨»ñÈ¡·þÎñÆ÷µØÖ·\n"
++#~ msgid "\t\t\t\t\t\t\t %s: value for field `%s' must be in range %d...%d"
++#~ msgstr "\t\t\t\t\t\t\t %s£ºÓò¡°%s¡±µÄÖµ±ØÐë´¦ÓÚ·¶Î§ %d...%d Ö®ÄÚ"
+--- glibc-2.3.2/posix/Makefile 2003-02-23 04:23:05.000000000 -0500
++++ glibc-2.3.2/posix/Makefile 2003-09-19 22:37:05.000000000 -0400
+@@ -63,7 +63,8 @@
+ spawnattr_getflags spawnattr_setflags \
+ spawnattr_getpgroup spawnattr_setpgroup spawn spawnp spawni \
+ spawnattr_getsigmask spawnattr_getschedpolicy spawnattr_getschedparam \
+- spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam
++ spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam \
++ posix_madvise
+
+ include ../Makeconfig
+
+@@ -75,7 +76,8 @@
+ tst-chmod bug-regex1 bug-regex2 bug-regex3 bug-regex4 \
+ tst-gnuglob tst-regex bug-regex5 bug-regex6 bug-regex7 \
+ bug-regex8 bug-regex9 bug-regex10 bug-regex11 bug-regex12 \
+- bug-regex13 bug-regex14 bug-regex15 bug-regex16
++ bug-regex13 bug-regex14 bug-regex15 bug-regex16 tst-nice \
++ tst-nanosleep transbug
+ ifeq (yes,$(build-shared))
+ test-srcs := globtest
+ tests += wordexp-test tst-exec tst-spawn
+@@ -116,7 +118,27 @@
+ endif
+
+ CFLAGS-regex.c = -Wno-strict-prototypes
+-CFLAGS-getaddrinfo.c = -DRESOLVER
++CFLAGS-getaddrinfo.c = -DRESOLVER -fexceptions
++CFLAGS-pread.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-pread64.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-sleep.c = -fexceptions
++CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-waitid.c = -fexceptions
++CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-getopt.c = -fexceptions
++CFLAGS-wordexp.c = -fexceptions
++CFLAGS-sysconf.c = -fexceptions
++CFLAGS-pathconf.c = -fexceptions
++CFLAGS-fpathconf.c = -fexceptions
++CFLAGS-spawn.c = -fexceptions
++CFLAGS-spawnp.c = -fexceptions
++CFLAGS-spawni.c = -fexceptions
++CFLAGS-pause.c = -fexceptions
++CFLAGS-glob.c = $(uses-callbacks) -fexceptions
++CFLAGS-glob64.c = $(uses-callbacks) -fexceptions
++
+ tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
+ --none random --col --color --colour
+
+--- glibc-2.3.2/posix/Versions 2002-11-20 14:49:41.000000000 -0500
++++ glibc-2.3.2/posix/Versions 2003-09-19 22:37:05.000000000 -0400
+@@ -110,14 +110,15 @@
+ __nanosleep;
+ }
+ GLIBC_2.3.2 {
+- sched_getaffinity; sched_setaffinity;
+-
+ # Note that these symbols appear in sysdeps/unix/sysv/linux/Versions
+ # under GLIBC_2.0; the first instance in the script is taken as the
+ # default, so linux configurations put them in GLIBC_2.0 while other
+ # configuration put them in GLIBC_2.3.2.
+ getresuid; getresgid; setresuid; setresgid;
+ }
++ GLIBC_2.3.3 {
++ sched_getaffinity; sched_setaffinity;
++ }
+ GLIBC_PRIVATE {
+ # functions which have an additional interface since they are
+ # are cancelable.
+--- glibc-2.3.2/posix/bits/posix1_lim.h 2003-02-17 17:42:16.000000000 -0500
++++ glibc-2.3.2/posix/bits/posix1_lim.h 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,93,96,98,2000,01,02 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1993,96,98,2000,01,02,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -60,7 +60,11 @@
+ #define _POSIX_MQ_PRIO_MAX 32
+
+ /* Number of simultaneous supplementary group IDs per process. */
+-#define _POSIX_NGROUPS_MAX 0
++#ifdef __USE_XOPEN2K
++# define _POSIX_NGROUPS_MAX 8
++#else
++# define _POSIX_NGROUPS_MAX 0
++#endif
+
+ /* Number of files one process can have open at once. */
+ #define _POSIX_OPEN_MAX 16
+@@ -135,7 +139,7 @@
+ The current maximum can be got from `sysconf'. */
+
+ #ifndef NGROUPS_MAX
+-# define NGROUPS_MAX _POSIX_NGROUPS_MAX
++# define NGROUPS_MAX 8
+ #endif
+
+ #endif /* bits/posix1_lim.h */
+--- glibc-2.3.2/posix/bug-regex4.c 2002-07-27 04:20:58.000000000 -0400
++++ glibc-2.3.2/posix/bug-regex4.c 2003-04-12 11:39:44.000000000 -0400
+@@ -43,9 +43,9 @@
+ }
+ else
+ {
+- match[0] = re_search_2 (&regex, "xyabez", 6, "", 0, 1, 9, NULL, 10);
++ match[0] = re_search_2 (&regex, "xyabez", 6, "", 0, 1, 5, NULL, 6);
+ match[1] = re_search_2 (&regex, NULL, 0, "abc", 3, 0, 3, NULL, 3);
+- match[2] = re_search_2 (&regex, "xya", 3, "bd", 2, 2, 6, NULL, 8);
++ match[2] = re_search_2 (&regex, "xya", 3, "bd", 2, 2, 3, NULL, 5);
+ if (match[0] != 2 || match[1] != 0 || match[2] != 2)
+ {
+ printf ("re_search_2 returned %d,%d,%d, expected 2,0,2\n",
+--- glibc-2.3.2/posix/confstr.c 2003-02-12 16:15:00.000000000 -0500
++++ glibc-2.3.2/posix/confstr.c 2003-03-15 15:02:13.000000000 -0500
+@@ -143,12 +143,13 @@
+
+ case _CS_GNU_LIBC_VERSION:
+ string = "glibc " VERSION;
+- string_len = strlen (string);
++ string_len = sizeof ("glibc " VERSION);
++ break;
+
+ case _CS_GNU_LIBPTHREAD_VERSION:
+ #ifdef LIBPTHREAD_VERSION
+ string = LIBPTHREAD_VERSION;
+- string_len = strlen (string);
++ string_len = sizeof LIBPTHREAD_VERSION;
+ break;
+ #else
+ /* No thread library. */
+--- glibc-2.3.2/posix/fnmatch.c 2002-08-04 00:32:39.000000000 -0400
++++ glibc-2.3.2/posix/fnmatch.c 2003-03-18 16:46:08.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991-93,96-99,2000,01,02 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -333,7 +334,7 @@
+ /* Convert the strings into wide characters. */
+ memset (&ps, '\0', sizeof (ps));
+ n = mbsrtowcs (NULL, &pattern, 0, &ps);
+- if (__builtin_expect (n, 0) == (size_t) -1)
++ if (__builtin_expect (n == (size_t) -1, 0))
+ /* Something wrong.
+ XXX Do we have to set `errno' to something which mbsrtows hasn't
+ already done? */
+@@ -344,7 +345,7 @@
+
+ assert (mbsinit (&ps));
+ n = mbsrtowcs (NULL, &string, 0, &ps);
+- if (__builtin_expect (n, 0) == (size_t) -1)
++ if (__builtin_expect (n == (size_t) -1, 0))
+ /* Something wrong.
+ XXX Do we have to set `errno' to something which mbsrtows hasn't
+ already done? */
+--- glibc-2.3.2/posix/fnmatch_loop.c 2002-03-11 03:32:00.000000000 -0500
++++ glibc-2.3.2/posix/fnmatch_loop.c 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991-1993, 1996-2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -539,11 +540,13 @@
+ if (! is_range)
+ {
+ # ifdef WIDE_CHAR_VERSION
+- for (c1 = 0; c1 < wextra[idx]; ++c1)
++ for (c1 = 0;
++ (int32_t) c1 < wextra[idx];
++ ++c1)
+ if (n[c1] != wextra[1 + c1])
+ break;
+
+- if (c1 == wextra[idx])
++ if ((int32_t) c1 == wextra[idx])
+ goto matched;
+ # else
+ for (c1 = 0; c1 < extra[idx]; ++c1)
+@@ -619,7 +622,7 @@
+
+ # ifdef WIDE_CHAR_VERSION
+ /* Search in the `names' array for the characters. */
+- fcollseq = collseq_table_lookup (collseq, fn);
++ fcollseq = __collseq_table_lookup (collseq, fn);
+ if (fcollseq == ~((uint32_t) 0))
+ /* XXX We don't know anything about the character
+ we are supposed to match. This means we are
+@@ -629,7 +632,7 @@
+ if (is_seqval)
+ lcollseq = cold;
+ else
+- lcollseq = collseq_table_lookup (collseq, cold);
++ lcollseq = __collseq_table_lookup (collseq, cold);
+ # else
+ fcollseq = collseq[fn];
+ lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
+@@ -791,7 +794,7 @@
+ {
+ # ifdef WIDE_CHAR_VERSION
+ hcollseq =
+- collseq_table_lookup (collseq, cend);
++ __collseq_table_lookup (collseq, cend);
+ if (hcollseq == ~((uint32_t) 0))
+ {
+ /* Hum, no information about the upper
+@@ -932,7 +935,7 @@
+ case L('/'):
+ if (NO_LEADING_PERIOD (flags))
+ {
+- if (n == string_end || c != *n)
++ if (n == string_end || c != (UCHAR) *n)
+ return FNM_NOMATCH;
+
+ new_no_leading_period = 1;
+--- glibc-2.3.2/posix/getconf.c 2003-02-12 16:09:19.000000000 -0500
++++ glibc-2.3.2/posix/getconf.c 2003-06-03 09:36:27.000000000 -0400
+@@ -865,6 +865,9 @@
+ #ifdef _CS_GNU_LIBPTHREAD_VERSION
+ { "GNU_LIBPTHREAD_VERSION", _CS_GNU_LIBPTHREAD_VERSION, CONFSTR },
+ #endif
++#ifdef _PC_2_SYMLINKS
++ { "POSIX2_SYMLINKS", _PC_2_SYMLINKS, PATHCONF },
++#endif
+
+ { NULL, 0, SYSCONF }
+ };
+@@ -954,7 +957,9 @@
+ usage ();
+
+ for (c = vars; c->name != NULL; ++c)
+- if (!strcmp (c->name, argv[1]))
++ if (strcmp (c->name, argv[1]) == 0
++ || (strncmp (c->name, "_POSIX_", 7) == 0
++ && strcmp (c->name + 7, argv[1]) == 0))
+ {
+ long int value;
+ size_t clen;
+--- glibc-2.3.2/posix/getopt.c 2002-04-08 03:02:12.000000000 -0400
++++ glibc-2.3.2/posix/getopt.c 2003-09-19 22:37:05.000000000 -0400
+@@ -2,7 +2,7 @@
+ NOTE: getopt is now part of the C library, so if you don't know what
+ "Keep this file name-space clean" means, talk to drepper@gnu.org
+ before changing it!
+- Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002
++ Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+@@ -692,12 +692,19 @@
+ if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+ argv[0], argv[optind]) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+@@ -761,11 +768,20 @@
+ #if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2
++ |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #endif
+@@ -792,11 +808,20 @@
+ %s: option `%s' requires an argument\n"),
+ argv[0], argv[optind - 1]) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2
++ |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+@@ -861,11 +886,19 @@
+ #if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #endif
+@@ -919,11 +952,19 @@
+ #if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #endif
+@@ -962,11 +1003,19 @@
+ _("%s: option requires an argument -- %c\n"),
+ argv[0], c) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+@@ -1025,11 +1074,19 @@
+ if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+ argv[0], argv[optind]) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+@@ -1061,11 +1118,20 @@
+ %s: option `-W %s' doesn't allow an argument\n"),
+ argv[0], pfound->name) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2
++ |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+@@ -1094,11 +1160,20 @@
+ %s: option `%s' requires an argument\n"),
+ argv[0], argv[optind - 1]) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2
++ |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+@@ -1160,11 +1235,19 @@
+ %s: option requires an argument -- %c\n"),
+ argv[0], c) >= 0)
+ {
++ _IO_flockfile (stderr);
++
++ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
++ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
++
+ if (_IO_fwide (stderr, 0) > 0)
+ __fwprintf (stderr, L"%s", buf);
+ else
+ fputs (buf, stderr);
+
++ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
++ _IO_funlockfile (stderr);
++
+ free (buf);
+ }
+ #else
+--- glibc-2.3.2/posix/getopt.h 2002-03-11 03:32:00.000000000 -0500
++++ glibc-2.3.2/posix/getopt.h 2003-09-19 22:37:05.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Declarations for getopt.
+- Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1989-1994, 1996-1999,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,6 +34,14 @@
+ # include <ctype.h>
+ #endif
+
++#ifndef __THROW
++# if defined __cplusplus && __GNUC_PREREQ (2,8)
++# define __THROW throw ()
++# else
++# define __THROW
++# endif
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -142,7 +150,8 @@
+ /* Many other libraries have conflicting prototypes for getopt, with
+ differences in the consts, in stdlib.h. To avoid compilation
+ errors, only prototype getopt for the GNU C library. */
+-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts);
++extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
++ __THROW;
+ # else /* not __GNU_LIBRARY__ */
+ extern int getopt ();
+ # endif /* __GNU_LIBRARY__ */
+@@ -150,10 +159,12 @@
+ # ifndef __need_getopt
+ extern int getopt_long (int ___argc, char *const *___argv,
+ const char *__shortopts,
+- const struct option *__longopts, int *__longind);
++ const struct option *__longopts, int *__longind)
++ __THROW;
+ extern int getopt_long_only (int ___argc, char *const *___argv,
+ const char *__shortopts,
+- const struct option *__longopts, int *__longind);
++ const struct option *__longopts, int *__longind)
++ __THROW;
+
+ /* Internal only. Users should not call this directly. */
+ extern int _getopt_internal (int ___argc, char *const *___argv,
+--- glibc-2.3.2/posix/glob/ChangeLog 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/ChangeLog 2002-11-16 08:56:16.000000000 -0500
+@@ -0,0 +1,23 @@
++Sat Jul 20 21:55:31 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
++
++ Win32 hacks from <Rob_Tulloh@tivoli.com>.
++ * posix/glob.c [WIN32]: Don't include <pwd.h>; don't use d_ino;
++ use void * for my_realloc; include <malloc.h> for alloca.
++ (glob) [WIN32]: Use "c:/users/default" for ~ if no HOME variable.
++ * posix/fnmatch.h [WIN32]: Use prototypes even if [!__STDC__].
++ * posix/glob.h: Likewise.
++
++Fri Jul 19 16:56:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
++
++ * posix/glob.h [!_AMIGA && !VMS]: Check this instead of just [!_AMIGA]
++ for `struct stat;' forward decl.
++
++Sat Jun 22 10:44:09 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
++
++ * posix/glob.c: Include <alloca.h> only [HAVE_ALLOCA_H], not [sparc].
++
++Fri Jun 21 00:27:51 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
++
++ * posix/fnmatch.c (fnmatch): Fix \*[*?]+ case to increment name ptr
++ only for ?s, not for *s. Fix from Chet Ramey.
++
+--- glibc-2.3.2/posix/glob/Makefile.ami 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/Makefile.ami 2002-11-16 08:56:16.000000000 -0500
+@@ -0,0 +1,69 @@
++# Makefile for standalone distribution of libglob.a (fnmatch, glob).
++
++# Copyright (C) 1991, 92, 93, 94, 95, 97 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public License
++# as published by the Free Software Foundation; either version 2.1 of
++# the License, or (at your option) any later version.
++
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; see the file COPYING.LIB. If not,
++# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++# Boston, MA 02111-1307, USA.
++
++# Ultrix 2.2 make doesn't expand the value of VPATH.
++VPATH = /glob/
++# This must repeat the value, because configure will remove `VPATH = .'.
++srcdir = /glob/
++
++CC = sc
++RM = delete
++CPPFLAGS =
++CFLAGS =
++
++# Information determined by configure.
++DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
++ Define HAVE_DIRENT_H
++
++# How to invoke ar.
++AR = join
++ARFLAGS = as
++
++# How to invoke ranlib.
++RANLIB = ;
++
++.PHONY: all
++all: glob.lib
++
++glob.lib : glob.o fnmatch.o
++ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
++ $(RANLIB) $@
++
++# For some reason, Unix make wants the dependencies on the source files.
++# Otherwise it refuses to use an implicit rule!
++# And, get this: it doesn't work to use $(srcdir)foo.c!!
++glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
++fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
++
++OUTPUT_OPTION =
++.c.o:
++ $(CC) IDir "" \
++ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
++
++.PHONY: clean realclean glob-clean glob-realclean distclean
++clean glob-clean:
++ -$(RM) glob.lib "#?.o" core
++distclean glob-realclean: clean
++ -$(RM) TAGS tags Makefile config.status config.h config.log
++realcean: distclean
++
++# For inside the C library.
++glob.tar glob.tar.Z:
++ $(MAKE) -C .. $@
+--- glibc-2.3.2/posix/glob/Makefile.in 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/Makefile.in 2002-11-16 08:56:16.000000000 -0500
+@@ -0,0 +1,66 @@
++# Makefile for standalone distribution of libglob.a (fnmatch, glob).
++
++# Copyright (C) 1991, 92, 93, 94, 95 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public License
++# as published by the Free Software Foundation; either version 2.1 of
++# the License, or (at your option) any later version.
++
++# This library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with this library; see the file COPYING.LIB. If
++# not, write to the Free Software Foundation, Inc., 59 Temple Place,
++# Suite 330, Boston, MA 02111 USA.
++
++# Ultrix 2.2 make doesn't expand the value of VPATH.
++VPATH = @srcdir@
++# This must repeat the value, because configure will remove `VPATH = .'.
++srcdir = @srcdir@
++
++CC = @CC@
++CPPFLAGS = @CPPFLAGS@
++CFLAGS = @CFLAGS@
++
++# Information determined by configure.
++DEFS = @DEFS@
++
++# How to invoke ar.
++AR = @AR@
++ARFLAGS = rv
++
++# How to invoke ranlib.
++RANLIB = @RANLIB@
++
++.PHONY: all
++all: libglob.a
++
++libglob.a: glob.o fnmatch.o
++ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
++ $(RANLIB) $@
++
++# For some reason, Unix make wants the dependencies on the source files.
++# Otherwise it refuses to use an implicit rule!
++# And, get this: it doesn't work to use $(srcdir)/foo.c!!
++glob.o: $(srcdir)/glob.h $(srcdir)/fnmatch.h glob.c
++fnmatch.o: $(srcdir)/fnmatch.h fnmatch.c
++
++.c.o:
++ $(CC) -I. -I$(srcdir) -c \
++ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
++
++.PHONY: clean realclean glob-clean glob-realclean distclean
++clean glob-clean:
++ -rm -f libglob.a *.o core
++distclean glob-realclean: clean
++ -rm -f TAGS tags Makefile config.status config.h config.log
++realcean: distclean
++
++# For inside the C library.
++glob.tar glob.tar.Z:
++ $(MAKE) -C .. $@
+--- glibc-2.3.2/posix/glob/SCOPTIONS 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/SCOPTIONS 2002-11-16 08:56:16.000000000 -0500
+@@ -0,0 +1,13 @@
++ERRORREXX
++OPTIMIZE
++NOVERSION
++OPTIMIZERTIME
++OPTIMIZERALIAS
++DEFINE INCLUDEDIR="include:"
++DEFINE LIBDIR="lib:"
++DEFINE NO_ALLOCA
++DEFINE NO_FLOAT
++DEFINE NO_ARCHIVES
++IGNORE=161
++IGNORE=100
++STARTUP=cres
+--- glibc-2.3.2/posix/glob/SMakefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/SMakefile 2002-11-16 08:56:16.000000000 -0500
+@@ -0,0 +1,68 @@
++# Makefile for standalone distribution of libglob.a (fnmatch, glob).
++# Copyright (C) 1991, 92, 93, 94, 95, 97 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, write to the Free
++# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++# 02111-1307 USA.
++
++# Ultrix 2.2 make doesn't expand the value of VPATH.
++VPATH = /glob/
++# This must repeat the value, because configure will remove `VPATH = .'.
++srcdir = /glob/
++
++CC = sc
++CPPFLAGS =
++CFLAGS =
++MAKE = smake
++RM = delete
++
++# Information determined by configure.
++DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
++ Define HAVE_DIRENT_H
++
++# How to invoke ar.
++AR = join
++ARFLAGS = as
++
++# How to invoke ranlib.
++RANLIB = ;
++
++.PHONY: all
++all: glob.lib
++
++glob.lib : glob.o fnmatch.o
++ $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
++ $(RANLIB) $@
++
++# For some reason, Unix make wants the dependencies on the source files.
++# Otherwise it refuses to use an implicit rule!
++# And, get this: it doesn't work to use $(srcdir)foo.c!!
++glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
++fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
++
++.c.o:
++ $(CC) IDir "" \
++ $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
++
++.PHONY: clean realclean glob-clean glob-realclean distclean
++clean glob-clean:
++ -$(RM) -f glob.lib *.o core
++distclean glob-realclean: clean
++ -$(RM) -f TAGS tags Makefile config.status config.h config.log
++realcean: distclean
++
++# For inside the C library.
++glob.tar glob.tar.Z:
++ $(MAKE) -C .. $@
+--- glibc-2.3.2/posix/glob/configure 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/configure 2002-11-16 08:56:17.000000000 -0500
+@@ -0,0 +1,1664 @@
++#! /bin/sh
++
++# Guess values for system-dependent variables and create Makefiles.
++# Generated automatically using autoconf version 2.7
++# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
++#
++# This configure script is free software; the Free Software Foundation
++# gives unlimited permission to copy, distribute and modify it.
++
++# Defaults:
++ac_help=
++ac_default_prefix=/usr/local
++# Any additions from configure.in:
++
++# Initialize some variables set by options.
++# The variables have the same names as the options, with
++# dashes changed to underlines.
++build=NONE
++cache_file=./config.cache
++exec_prefix=NONE
++host=NONE
++no_create=
++nonopt=NONE
++no_recursion=
++prefix=NONE
++program_prefix=NONE
++program_suffix=NONE
++program_transform_name=s,x,x,
++silent=
++site=
++srcdir=
++target=NONE
++verbose=
++x_includes=NONE
++x_libraries=NONE
++bindir='${exec_prefix}/bin'
++sbindir='${exec_prefix}/sbin'
++libexecdir='${exec_prefix}/libexec'
++datadir='${prefix}/share'
++sysconfdir='${prefix}/etc'
++sharedstatedir='${prefix}/com'
++localstatedir='${prefix}/var'
++libdir='${exec_prefix}/lib'
++includedir='${prefix}/include'
++oldincludedir='/usr/include'
++infodir='${prefix}/info'
++mandir='${prefix}/man'
++
++# Initialize some other variables.
++subdirs=
++MFLAGS= MAKEFLAGS=
++
++ac_prev=
++for ac_option
++do
++
++ # If the previous option needs an argument, assign it.
++ if test -n "$ac_prev"; then
++ eval "$ac_prev=\$ac_option"
++ ac_prev=
++ continue
++ fi
++
++ case "$ac_option" in
++ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++ *) ac_optarg= ;;
++ esac
++
++ # Accept the important Cygnus configure options, so we can diagnose typos.
++
++ case "$ac_option" in
++
++ -bindir | --bindir | --bindi | --bind | --bin | --bi)
++ ac_prev=bindir ;;
++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
++ bindir="$ac_optarg" ;;
++
++ -build | --build | --buil | --bui | --bu)
++ ac_prev=build ;;
++ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
++ build="$ac_optarg" ;;
++
++ -cache-file | --cache-file | --cache-fil | --cache-fi \
++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
++ ac_prev=cache_file ;;
++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
++ cache_file="$ac_optarg" ;;
++
++ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ ac_prev=datadir ;;
++ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
++ | --da=*)
++ datadir="$ac_optarg" ;;
++
++ -disable-* | --disable-*)
++ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
++ # Reject names that are not valid shell variable names.
++ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
++ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
++ fi
++ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
++ eval "enable_${ac_feature}=no" ;;
++
++ -enable-* | --enable-*)
++ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
++ # Reject names that are not valid shell variable names.
++ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
++ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
++ fi
++ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
++ case "$ac_option" in
++ *=*) ;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "enable_${ac_feature}='$ac_optarg'" ;;
++
++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
++ | --exec | --exe | --ex)
++ ac_prev=exec_prefix ;;
++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
++ | --exec=* | --exe=* | --ex=*)
++ exec_prefix="$ac_optarg" ;;
++
++ -gas | --gas | --ga | --g)
++ # Obsolete; use --with-gas.
++ with_gas=yes ;;
++
++ -help | --help | --hel | --he)
++ # Omit some internal or obsolete options to make the list less imposing.
++ # This message is too long to be a string in the A/UX 3.1 sh.
++ cat << EOF
++Usage: configure [options] [host]
++Options: [defaults in brackets after descriptions]
++Configuration:
++ --cache-file=FILE cache test results in FILE
++ --help print this message
++ --no-create do not create output files
++ --quiet, --silent do not print \`checking...' messages
++ --version print the version of autoconf that created configure
++Directory and file names:
++ --prefix=PREFIX install architecture-independent files in PREFIX
++ [$ac_default_prefix]
++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
++ [same as prefix]
++ --bindir=DIR user executables in DIR [EPREFIX/bin]
++ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
++ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
++ --datadir=DIR read-only architecture-independent data in DIR
++ [PREFIX/share]
++ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
++ --sharedstatedir=DIR modifiable architecture-independent data in DIR
++ [PREFIX/com]
++ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
++ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
++ --includedir=DIR C header files in DIR [PREFIX/include]
++ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
++ --infodir=DIR info documentation in DIR [PREFIX/info]
++ --mandir=DIR man documentation in DIR [PREFIX/man]
++ --srcdir=DIR find the sources in DIR [configure dir or ..]
++ --program-prefix=PREFIX prepend PREFIX to installed program names
++ --program-suffix=SUFFIX append SUFFIX to installed program names
++ --program-transform-name=PROGRAM
++ run sed PROGRAM on installed program names
++EOF
++ cat << EOF
++Host type:
++ --build=BUILD configure for building on BUILD [BUILD=HOST]
++ --host=HOST configure for HOST [guessed]
++ --target=TARGET configure for TARGET [TARGET=HOST]
++Features and packages:
++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
++ --x-includes=DIR X include files are in DIR
++ --x-libraries=DIR X library files are in DIR
++EOF
++ if test -n "$ac_help"; then
++ echo "--enable and --with options recognized:$ac_help"
++ fi
++ exit 0 ;;
++
++ -host | --host | --hos | --ho)
++ ac_prev=host ;;
++ -host=* | --host=* | --hos=* | --ho=*)
++ host="$ac_optarg" ;;
++
++ -includedir | --includedir | --includedi | --included | --include \
++ | --includ | --inclu | --incl | --inc)
++ ac_prev=includedir ;;
++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
++ | --includ=* | --inclu=* | --incl=* | --inc=*)
++ includedir="$ac_optarg" ;;
++
++ -infodir | --infodir | --infodi | --infod | --info | --inf)
++ ac_prev=infodir ;;
++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
++ infodir="$ac_optarg" ;;
++
++ -libdir | --libdir | --libdi | --libd)
++ ac_prev=libdir ;;
++ -libdir=* | --libdir=* | --libdi=* | --libd=*)
++ libdir="$ac_optarg" ;;
++
++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
++ | --libexe | --libex | --libe)
++ ac_prev=libexecdir ;;
++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
++ | --libexe=* | --libex=* | --libe=*)
++ libexecdir="$ac_optarg" ;;
++
++ -localstatedir | --localstatedir | --localstatedi | --localstated \
++ | --localstate | --localstat | --localsta | --localst \
++ | --locals | --local | --loca | --loc | --lo)
++ ac_prev=localstatedir ;;
++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
++ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ localstatedir="$ac_optarg" ;;
++
++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
++ ac_prev=mandir ;;
++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
++ mandir="$ac_optarg" ;;
++
++ -nfp | --nfp | --nf)
++ # Obsolete; use --without-fp.
++ with_fp=no ;;
++
++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
++ | --no-cr | --no-c)
++ no_create=yes ;;
++
++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
++ no_recursion=yes ;;
++
++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
++ | --oldin | --oldi | --old | --ol | --o)
++ ac_prev=oldincludedir ;;
++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
++ oldincludedir="$ac_optarg" ;;
++
++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
++ ac_prev=prefix ;;
++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
++ prefix="$ac_optarg" ;;
++
++ -program-prefix | --program-prefix | --program-prefi | --program-pref \
++ | --program-pre | --program-pr | --program-p)
++ ac_prev=program_prefix ;;
++ -program-prefix=* | --program-prefix=* | --program-prefi=* \
++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
++ program_prefix="$ac_optarg" ;;
++
++ -program-suffix | --program-suffix | --program-suffi | --program-suff \
++ | --program-suf | --program-su | --program-s)
++ ac_prev=program_suffix ;;
++ -program-suffix=* | --program-suffix=* | --program-suffi=* \
++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
++ program_suffix="$ac_optarg" ;;
++
++ -program-transform-name | --program-transform-name \
++ | --program-transform-nam | --program-transform-na \
++ | --program-transform-n | --program-transform- \
++ | --program-transform | --program-transfor \
++ | --program-transfo | --program-transf \
++ | --program-trans | --program-tran \
++ | --progr-tra | --program-tr | --program-t)
++ ac_prev=program_transform_name ;;
++ -program-transform-name=* | --program-transform-name=* \
++ | --program-transform-nam=* | --program-transform-na=* \
++ | --program-transform-n=* | --program-transform-=* \
++ | --program-transform=* | --program-transfor=* \
++ | --program-transfo=* | --program-transf=* \
++ | --program-trans=* | --program-tran=* \
++ | --progr-tra=* | --program-tr=* | --program-t=*)
++ program_transform_name="$ac_optarg" ;;
++
++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
++ | -silent | --silent | --silen | --sile | --sil)
++ silent=yes ;;
++
++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
++ ac_prev=sbindir ;;
++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
++ | --sbi=* | --sb=*)
++ sbindir="$ac_optarg" ;;
++
++ -sharedstatedir | --sharedstatedir | --sharedstatedi \
++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
++ | --sharedst | --shareds | --shared | --share | --shar \
++ | --sha | --sh)
++ ac_prev=sharedstatedir ;;
++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
++ | --sha=* | --sh=*)
++ sharedstatedir="$ac_optarg" ;;
++
++ -site | --site | --sit)
++ ac_prev=site ;;
++ -site=* | --site=* | --sit=*)
++ site="$ac_optarg" ;;
++
++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
++ ac_prev=srcdir ;;
++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
++ srcdir="$ac_optarg" ;;
++
++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
++ | --syscon | --sysco | --sysc | --sys | --sy)
++ ac_prev=sysconfdir ;;
++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
++ sysconfdir="$ac_optarg" ;;
++
++ -target | --target | --targe | --targ | --tar | --ta | --t)
++ ac_prev=target ;;
++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
++ target="$ac_optarg" ;;
++
++ -v | -verbose | --verbose | --verbos | --verbo | --verb)
++ verbose=yes ;;
++
++ -version | --version | --versio | --versi | --vers)
++ echo "configure generated by autoconf version 2.7"
++ exit 0 ;;
++
++ -with-* | --with-*)
++ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
++ # Reject names that are not valid shell variable names.
++ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
++ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
++ fi
++ ac_package=`echo $ac_package| sed 's/-/_/g'`
++ case "$ac_option" in
++ *=*) ;;
++ *) ac_optarg=yes ;;
++ esac
++ eval "with_${ac_package}='$ac_optarg'" ;;
++
++ -without-* | --without-*)
++ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
++ # Reject names that are not valid shell variable names.
++ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
++ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
++ fi
++ ac_package=`echo $ac_package| sed 's/-/_/g'`
++ eval "with_${ac_package}=no" ;;
++
++ --x)
++ # Obsolete; use --with-x.
++ with_x=yes ;;
++
++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
++ | --x-incl | --x-inc | --x-in | --x-i)
++ ac_prev=x_includes ;;
++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
++ x_includes="$ac_optarg" ;;
++
++ -x-libraries | --x-libraries | --x-librarie | --x-librari \
++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
++ ac_prev=x_libraries ;;
++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
++ x_libraries="$ac_optarg" ;;
++
++ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
++ ;;
++
++ *)
++ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
++ echo "configure: warning: $ac_option: invalid host type" 1>&2
++ fi
++ if test "x$nonopt" != xNONE; then
++ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
++ fi
++ nonopt="$ac_option"
++ ;;
++
++ esac
++done
++
++if test -n "$ac_prev"; then
++ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
++fi
++
++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
++
++# File descriptor usage:
++# 0 standard input
++# 1 file creation
++# 2 errors and warnings
++# 3 some systems may open it to /dev/tty
++# 4 used on the Kubota Titan
++# 6 checking for... messages and results
++# 5 compiler messages saved in config.log
++if test "$silent" = yes; then
++ exec 6>/dev/null
++else
++ exec 6>&1
++fi
++exec 5>./config.log
++
++echo "\
++This file contains any messages produced by compilers while
++running configure, to aid debugging if configure makes a mistake.
++" 1>&5
++
++# Strip out --no-create and --no-recursion so they do not pile up.
++# Also quote any args containing shell metacharacters.
++ac_configure_args=
++for ac_arg
++do
++ case "$ac_arg" in
++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
++ | --no-cr | --no-c) ;;
++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
++ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
++ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
++ esac
++done
++
++# NLS nuisances.
++# Only set LANG and LC_ALL to C if already set.
++# These must not be set unconditionally because not all systems understand
++# e.g. LANG=C (notably SCO).
++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
++if test "${LANG+set}" = set; then LANG=C; export LANG; fi
++
++# confdefs.h avoids OS command line length limits that DEFS can exceed.
++rm -rf conftest* confdefs.h
++# AIX cpp loses on an empty file, so make sure it contains at least a newline.
++echo > confdefs.h
++
++# A filename unique to this package, relative to the directory that
++# configure is in, which we can look for to find out if srcdir is correct.
++ac_unique_file=fnmatch.c
++
++# Find the source files, if location was not specified.
++if test -z "$srcdir"; then
++ ac_srcdir_defaulted=yes
++ # Try the directory containing this script, then its parent.
++ ac_prog=$0
++ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
++ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
++ srcdir=$ac_confdir
++ if test ! -r $srcdir/$ac_unique_file; then
++ srcdir=..
++ fi
++else
++ ac_srcdir_defaulted=no
++fi
++if test ! -r $srcdir/$ac_unique_file; then
++ if test "$ac_srcdir_defaulted" = yes; then
++ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
++ else
++ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
++ fi
++fi
++srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
++
++# Prefer explicitly selected file to automatically selected ones.
++if test -z "$CONFIG_SITE"; then
++ if test "x$prefix" != xNONE; then
++ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
++ else
++ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
++ fi
++fi
++for ac_site_file in $CONFIG_SITE; do
++ if test -r "$ac_site_file"; then
++ echo "loading site script $ac_site_file"
++ . "$ac_site_file"
++ fi
++done
++
++if test -r "$cache_file"; then
++ echo "loading cache $cache_file"
++ . $cache_file
++else
++ echo "creating cache $cache_file"
++ > $cache_file
++fi
++
++ac_ext=c
++# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
++ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
++
++if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
++ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
++ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
++ ac_n= ac_c='
++' ac_t=' '
++ else
++ ac_n=-n ac_c= ac_t=
++ fi
++else
++ ac_n= ac_c='\c' ac_t=
++fi
++
++ # Extract the first word of "gcc", so it can be a program name with args.
++set dummy gcc; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_CC="gcc"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
++fi
++fi
++CC="$ac_cv_prog_CC"
++if test -n "$CC"; then
++ echo "$ac_t""$CC" 1>&6
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++if test -z "$CC"; then
++ # Extract the first word of "cc", so it can be a program name with args.
++set dummy cc; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test -n "$CC"; then
++ ac_cv_prog_CC="$CC" # Let the user override the test.
++else
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ ac_prog_rejected=no
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
++ ac_prog_rejected=yes
++ continue
++ fi
++ ac_cv_prog_CC="cc"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
++if test $ac_prog_rejected = yes; then
++ # We found a bogon in the path, so make sure we never use it.
++ set dummy $ac_cv_prog_CC
++ shift
++ if test $# -gt 0; then
++ # We chose a different compiler from the bogus one.
++ # However, it has the same basename, so the bogon will be chosen
++ # first if we set CC to just the basename; use the full file name.
++ shift
++ set dummy "$ac_dir/$ac_word" "$@"
++ shift
++ ac_cv_prog_CC="$@"
++ fi
++fi
++fi
++fi
++CC="$ac_cv_prog_CC"
++if test -n "$CC"; then
++ echo "$ac_t""$CC" 1>&6
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
++fi
++
++echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.c <<EOF
++#ifdef __GNUC__
++ yes;
++#endif
++EOF
++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
++ ac_cv_prog_gcc=yes
++else
++ ac_cv_prog_gcc=no
++fi
++fi
++
++echo "$ac_t""$ac_cv_prog_gcc" 1>&6
++if test $ac_cv_prog_gcc = yes; then
++ GCC=yes
++ if test "${CFLAGS+set}" != set; then
++ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ echo 'void f(){}' > conftest.c
++if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
++ ac_cv_prog_gcc_g=yes
++else
++ ac_cv_prog_gcc_g=no
++fi
++rm -f conftest*
++
++fi
++
++echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
++ if test $ac_cv_prog_gcc_g = yes; then
++ CFLAGS="-g -O"
++ else
++ CFLAGS="-O"
++ fi
++ fi
++else
++ GCC=
++ test "${CFLAGS+set}" = set || CFLAGS="-g"
++fi
++
++# Extract the first word of "ar", so it can be a program name with args.
++set dummy ar; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test -n "$AR"; then
++ ac_cv_prog_AR="$AR" # Let the user override the test.
++else
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_AR="ar"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
++fi
++fi
++AR="$ac_cv_prog_AR"
++if test -n "$AR"; then
++ echo "$ac_t""$AR" 1>&6
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++# Extract the first word of "ranlib", so it can be a program name with args.
++set dummy ranlib; ac_word=$2
++echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test -n "$RANLIB"; then
++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
++else
++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++ for ac_dir in $PATH; do
++ test -z "$ac_dir" && ac_dir=.
++ if test -f $ac_dir/$ac_word; then
++ ac_cv_prog_RANLIB="ranlib"
++ break
++ fi
++ done
++ IFS="$ac_save_ifs"
++ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
++fi
++fi
++RANLIB="$ac_cv_prog_RANLIB"
++if test -n "$RANLIB"; then
++ echo "$ac_t""$RANLIB" 1>&6
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
++# On Suns, sometimes $CPP names a directory.
++if test -n "$CPP" && test -d "$CPP"; then
++ CPP=
++fi
++if test -z "$CPP"; then
++if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ # This must be in double quotes, not single quotes, because CPP may get
++ # substituted into the Makefile and "${CC-cc}" will confuse make.
++ CPP="${CC-cc} -E"
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp.
++ cat > conftest.$ac_ext <<EOF
++#line 709 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out`
++if test -z "$ac_err"; then
++ :
++else
++ echo "$ac_err" >&5
++ rm -rf conftest*
++ CPP="${CC-cc} -E -traditional-cpp"
++ cat > conftest.$ac_ext <<EOF
++#line 724 "configure"
++#include "confdefs.h"
++#include <assert.h>
++Syntax Error
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out`
++if test -z "$ac_err"; then
++ :
++else
++ echo "$ac_err" >&5
++ rm -rf conftest*
++ CPP=/lib/cpp
++fi
++rm -f conftest*
++fi
++rm -f conftest*
++ ac_cv_prog_CPP="$CPP"
++fi
++ CPP="$ac_cv_prog_CPP"
++else
++ ac_cv_prog_CPP="$CPP"
++fi
++echo "$ac_t""$CPP" 1>&6
++ echo $ac_n "checking for AIX""... $ac_c" 1>&6
++cat > conftest.$ac_ext <<EOF
++#line 751 "configure"
++#include "confdefs.h"
++#ifdef _AIX
++ yes
++#endif
++
++EOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ egrep "yes" >/dev/null 2>&1; then
++ rm -rf conftest*
++ echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
++#define _ALL_SOURCE 1
++EOF
++
++else
++ rm -rf conftest*
++ echo "$ac_t""no" 1>&6
++fi
++rm -f conftest*
++
++
++ac_safe=`echo "minix/config.h" | tr './\055' '___'`
++echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 778 "configure"
++#include "confdefs.h"
++#include <minix/config.h>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:783: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
++else
++ echo "$ac_err" >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
++fi
++rm -f conftest*
++fi
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ MINIX=yes
++else
++ echo "$ac_t""no" 1>&6
++MINIX=
++fi
++
++if test "$MINIX" = yes; then
++ cat >> confdefs.h <<\EOF
++#define _POSIX_SOURCE 1
++EOF
++
++ cat >> confdefs.h <<\EOF
++#define _POSIX_1_SOURCE 2
++EOF
++
++ cat >> confdefs.h <<\EOF
++#define _MINIX 1
++EOF
++
++fi
++
++echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
++if test -d /etc/conf/kconfig.d &&
++ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
++then
++ echo "$ac_t""yes" 1>&6
++ ISC=yes # If later tests want to check for ISC.
++ cat >> confdefs.h <<\EOF
++#define _POSIX_SOURCE 1
++EOF
++
++ if test "$GCC" = yes; then
++ CC="$CC -posix"
++ else
++ CC="$CC -Xp"
++ fi
++else
++ echo "$ac_t""no" 1>&6
++ ISC=
++fi
++
++echo $ac_n "checking for working const""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 843 "configure"
++#include "confdefs.h"
++
++int main() { return 0; }
++int t() {
++
++/* Ultrix mips cc rejects this. */
++typedef int charset[2]; const charset x;
++/* SunOS 4.1.1 cc rejects this. */
++char const *const *ccp;
++char **p;
++/* NEC SVR4.0.2 mips cc rejects this. */
++struct point {int x, y;};
++static struct point const zero = {0,0};
++/* AIX XL C 1.02.0.0 rejects this.
++ It does not let you subtract one const X* pointer from another in an arm
++ of an if-expression whose if-part is not a constant expression */
++const char *g = "string";
++ccp = &g + (g ? g-g : 0);
++/* HPUX 7.0 cc rejects these. */
++++ccp;
++p = (char**) ccp;
++ccp = (char const *const *) p;
++{ /* SCO 3.2v4 cc rejects this. */
++ char *t;
++ char const *s = 0 ? (char *) 0 : (char const *) 0;
++
++ *t++ = 0;
++}
++{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
++ int x[] = {25, 17};
++ const int *foo = &x[0];
++ ++foo;
++}
++{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
++ typedef const int *iptr;
++ iptr p = 0;
++ ++p;
++}
++{ /* AIX XL C 1.02.0.0 rejects this saying
++ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
++ struct s { int j; const int *ap[3]; };
++ struct s *b; b->j = 5;
++}
++{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
++ const int foo = 10;
++}
++
++; return 0; }
++EOF
++if { (eval echo configure:893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++ rm -rf conftest*
++ ac_cv_c_const=yes
++else
++ rm -rf conftest*
++ ac_cv_c_const=no
++fi
++rm -f conftest*
++
++fi
++
++echo "$ac_t""$ac_cv_c_const" 1>&6
++if test $ac_cv_c_const = no; then
++ cat >> confdefs.h <<\EOF
++#define const
++EOF
++
++fi
++
++# If we cannot run a trivial program, we must be cross compiling.
++echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test "$cross_compiling" = yes; then
++ ac_cv_c_cross=yes
++else
++cat > conftest.$ac_ext <<EOF
++#line 921 "configure"
++#include "confdefs.h"
++main(){return(0);}
++EOF
++{ (eval echo configure:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
++if test -s conftest && (./conftest; exit) 2>/dev/null; then
++ ac_cv_c_cross=no
++else
++ ac_cv_c_cross=yes
++fi
++fi
++rm -fr conftest*
++fi
++
++echo "$ac_t""$ac_cv_c_cross" 1>&6
++cross_compiling=$ac_cv_c_cross
++
++echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 943 "configure"
++#include "confdefs.h"
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ ac_cv_header_stdc=yes
++else
++ echo "$ac_err" >&5
++ rm -rf conftest*
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++cat > conftest.$ac_ext <<EOF
++#line 966 "configure"
++#include "confdefs.h"
++#include <string.h>
++EOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ egrep "memchr" >/dev/null 2>&1; then
++ :
++else
++ rm -rf conftest*
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
++cat > conftest.$ac_ext <<EOF
++#line 984 "configure"
++#include "confdefs.h"
++#include <stdlib.h>
++EOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ egrep "free" >/dev/null 2>&1; then
++ :
++else
++ rm -rf conftest*
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
++if test "$cross_compiling" = yes; then
++ :
++else
++cat > conftest.$ac_ext <<EOF
++#line 1005 "configure"
++#include "confdefs.h"
++#include <ctype.h>
++#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
++#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
++int main () { int i; for (i = 0; i < 256; i++)
++if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
++exit (0); }
++
++EOF
++{ (eval echo configure:1016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
++if test -s conftest && (./conftest; exit) 2>/dev/null; then
++ :
++else
++ ac_cv_header_stdc=no
++fi
++fi
++rm -fr conftest*
++fi
++fi
++
++echo "$ac_t""$ac_cv_header_stdc" 1>&6
++if test $ac_cv_header_stdc = yes; then
++ cat >> confdefs.h <<\EOF
++#define STDC_HEADERS 1
++EOF
++
++fi
++
++for ac_hdr in memory.h unistd.h string.h
++do
++ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
++echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 1043 "configure"
++#include "confdefs.h"
++#include <$ac_hdr>
++EOF
++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
++{ (eval echo configure:1048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++ac_err=`grep -v '^ *+' conftest.out`
++if test -z "$ac_err"; then
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=yes"
++else
++ echo "$ac_err" >&5
++ rm -rf conftest*
++ eval "ac_cv_header_$ac_safe=no"
++fi
++rm -f conftest*
++fi
++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'`
++ cat >> confdefs.h <<EOF
++#define $ac_tr_hdr 1
++EOF
++
++else
++ echo "$ac_t""no" 1>&6
++fi
++done
++
++ac_header_dirent=no
++for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
++do
++ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
++echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 1081 "configure"
++#include "confdefs.h"
++#include <sys/types.h>
++#include <$ac_hdr>
++int main() { return 0; }
++int t() {
++DIR *dirp = 0;
++; return 0; }
++EOF
++if { (eval echo configure:1090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++ rm -rf conftest*
++ eval "ac_cv_header_dirent_$ac_safe=yes"
++else
++ rm -rf conftest*
++ eval "ac_cv_header_dirent_$ac_safe=no"
++fi
++rm -f conftest*
++
++fi
++if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdedfghijklmnopqrstuvwxyz./\055' 'ABCDEDFGHIJKLMNOPQRSTUVWXYZ___'`
++ cat >> confdefs.h <<EOF
++#define $ac_tr_hdr 1
++EOF
++ ac_header_dirent=$ac_hdr; break
++else
++ echo "$ac_t""no" 1>&6
++fi
++done
++# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
++if test $ac_header_dirent = dirent.h; then
++echo $ac_n "checking for -ldir""... $ac_c" 1>&6
++ac_lib_var=`echo dir | tr '.-/+' '___p'`
++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ ac_save_LIBS="$LIBS"
++LIBS="-ldir $LIBS"
++cat > conftest.$ac_ext <<EOF
++#line 1121 "configure"
++#include "confdefs.h"
++
++int main() { return 0; }
++int t() {
++opendir()
++; return 0; }
++EOF
++if { (eval echo configure:1129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
++ rm -rf conftest*
++ eval "ac_cv_lib_$ac_lib_var=yes"
++else
++ rm -rf conftest*
++ eval "ac_cv_lib_$ac_lib_var=no"
++fi
++rm -f conftest*
++LIBS="$ac_save_LIBS"
++
++fi
++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ LIBS="$LIBS -ldir"
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++else
++echo $ac_n "checking for -lx""... $ac_c" 1>&6
++ac_lib_var=`echo x | tr '.-/+' '___p'`
++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ ac_save_LIBS="$LIBS"
++LIBS="-lx $LIBS"
++cat > conftest.$ac_ext <<EOF
++#line 1156 "configure"
++#include "confdefs.h"
++
++int main() { return 0; }
++int t() {
++opendir()
++; return 0; }
++EOF
++if { (eval echo configure:1164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
++ rm -rf conftest*
++ eval "ac_cv_lib_$ac_lib_var=yes"
++else
++ rm -rf conftest*
++ eval "ac_cv_lib_$ac_lib_var=no"
++fi
++rm -f conftest*
++LIBS="$ac_save_LIBS"
++
++fi
++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ LIBS="$LIBS -lx"
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++fi
++
++echo $ac_n "checking whether closedir returns void""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_func_closedir_void'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test "$cross_compiling" = yes; then
++ ac_cv_func_closedir_void=yes
++else
++cat > conftest.$ac_ext <<EOF
++#line 1192 "configure"
++#include "confdefs.h"
++#include <sys/types.h>
++#include <$ac_header_dirent>
++int closedir(); main() { exit(closedir(opendir(".")) != 0); }
++EOF
++{ (eval echo configure:1198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
++if test -s conftest && (./conftest; exit) 2>/dev/null; then
++ ac_cv_func_closedir_void=no
++else
++ ac_cv_func_closedir_void=yes
++fi
++fi
++rm -fr conftest*
++fi
++
++echo "$ac_t""$ac_cv_func_closedir_void" 1>&6
++if test $ac_cv_func_closedir_void = yes; then
++ cat >> confdefs.h <<\EOF
++#define CLOSEDIR_VOID 1
++EOF
++
++fi
++
++# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
++# for constant arguments. Useless!
++echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 1223 "configure"
++#include "confdefs.h"
++#include <alloca.h>
++int main() { return 0; }
++int t() {
++char *p = alloca(2 * sizeof(int));
++; return 0; }
++EOF
++if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
++ rm -rf conftest*
++ ac_cv_header_alloca_h=yes
++else
++ rm -rf conftest*
++ ac_cv_header_alloca_h=no
++fi
++rm -f conftest*
++
++fi
++
++echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
++if test $ac_cv_header_alloca_h = yes; then
++ cat >> confdefs.h <<\EOF
++#define HAVE_ALLOCA_H 1
++EOF
++
++fi
++
++echo $ac_n "checking for alloca""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_func_alloca'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 1255 "configure"
++#include "confdefs.h"
++
++#ifdef __GNUC__
++# define alloca __builtin_alloca
++#else
++# if HAVE_ALLOCA_H
++# include <alloca.h>
++# else
++# ifdef _AIX
++ #pragma alloca
++# else
++# ifndef alloca /* predefined by HP cc +Olibcalls */
++char *alloca ();
++# endif
++# endif
++# endif
++#endif
++
++int main() { return 0; }
++int t() {
++char *p = (char *) alloca(1);
++; return 0; }
++EOF
++if { (eval echo configure:1279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
++ rm -rf conftest*
++ ac_cv_func_alloca=yes
++else
++ rm -rf conftest*
++ ac_cv_func_alloca=no
++fi
++rm -f conftest*
++
++fi
++
++echo "$ac_t""$ac_cv_func_alloca" 1>&6
++if test $ac_cv_func_alloca = yes; then
++ cat >> confdefs.h <<\EOF
++#define HAVE_ALLOCA 1
++EOF
++
++fi
++
++if test $ac_cv_func_alloca = no; then
++ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
++ # that cause trouble. Some versions do not even contain alloca or
++ # contain a buggy version. If you still want to use their alloca,
++ # use ar to extract alloca.o from them instead of compiling alloca.c.
++ ALLOCA=alloca.o
++ cat >> confdefs.h <<\EOF
++#define C_ALLOCA 1
++EOF
++
++
++echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 1314 "configure"
++#include "confdefs.h"
++#if defined(CRAY) && ! defined(CRAY2)
++webecray
++#else
++wenotbecray
++#endif
++
++EOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ egrep "webecray" >/dev/null 2>&1; then
++ rm -rf conftest*
++ ac_cv_os_cray=yes
++else
++ rm -rf conftest*
++ ac_cv_os_cray=no
++fi
++rm -f conftest*
++
++fi
++
++echo "$ac_t""$ac_cv_os_cray" 1>&6
++if test $ac_cv_os_cray = yes; then
++for ac_func in _getb67 GETB67 getb67; do
++ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ cat > conftest.$ac_ext <<EOF
++#line 1343 "configure"
++#include "confdefs.h"
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char $ac_func(); below. */
++#include <assert.h>
++/* Override any gcc2 internal prototype to avoid an error. */
++char $ac_func();
++
++int main() { return 0; }
++int t() {
++
++/* The GNU C library defines this for functions which it implements
++ to always fail with ENOSYS. Some functions are actually named
++ something starting with __ and the normal name is an alias. */
++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++choke me
++#else
++$ac_func();
++#endif
++
++; return 0; }
++EOF
++if { (eval echo configure:1365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
++ rm -rf conftest*
++ eval "ac_cv_func_$ac_func=yes"
++else
++ rm -rf conftest*
++ eval "ac_cv_func_$ac_func=no"
++fi
++rm -f conftest*
++
++fi
++if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
++ echo "$ac_t""yes" 1>&6
++ cat >> confdefs.h <<EOF
++#define CRAY_STACKSEG_END $ac_func
++EOF
++
++ break
++else
++ echo "$ac_t""no" 1>&6
++fi
++
++done
++fi
++
++echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test "$cross_compiling" = yes; then
++ ac_cv_c_stack_direction=0
++else
++cat > conftest.$ac_ext <<EOF
++#line 1397 "configure"
++#include "confdefs.h"
++find_stack_direction ()
++{
++ static char *addr = 0;
++ auto char dummy;
++ if (addr == 0)
++ {
++ addr = &dummy;
++ return find_stack_direction ();
++ }
++ else
++ return (&dummy > addr) ? 1 : -1;
++}
++main ()
++{
++ exit (find_stack_direction() < 0);
++}
++EOF
++{ (eval echo configure:1416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
++if test -s conftest && (./conftest; exit) 2>/dev/null; then
++ ac_cv_c_stack_direction=1
++else
++ ac_cv_c_stack_direction=-1
++fi
++fi
++rm -fr conftest*
++fi
++
++echo "$ac_t""$ac_cv_c_stack_direction" 1>&6
++cat >> confdefs.h <<EOF
++#define STACK_DIRECTION $ac_cv_c_stack_direction
++EOF
++
++fi
++
++echo $ac_n "checking for strcoll""... $ac_c" 1>&6
++if eval "test \"`echo '$''{'ac_cv_func_strcoll'+set}'`\" = set"; then
++ echo $ac_n "(cached) $ac_c" 1>&6
++else
++ if test "$cross_compiling" = yes; then
++ ac_cv_func_strcoll=no
++else
++cat > conftest.$ac_ext <<EOF
++#line 1441 "configure"
++#include "confdefs.h"
++#include <string.h>
++main ()
++{
++ exit (strcoll ("abc", "def") >= 0 ||
++ strcoll ("ABC", "DEF") >= 0 ||
++ strcoll ("123", "456") >= 0);
++}
++EOF
++{ (eval echo configure:1451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
++if test -s conftest && (./conftest; exit) 2>/dev/null; then
++ ac_cv_func_strcoll=yes
++else
++ ac_cv_func_strcoll=no
++fi
++fi
++rm -fr conftest*
++fi
++
++echo "$ac_t""$ac_cv_func_strcoll" 1>&6
++if test $ac_cv_func_strcoll = yes; then
++ cat >> confdefs.h <<\EOF
++#define HAVE_STRCOLL 1
++EOF
++
++fi
++
++trap '' 1 2 15
++cat > confcache <<\EOF
++# This file is a shell script that caches the results of configure
++# tests run on this system so they can be shared between configure
++# scripts and configure runs. It is not useful on other systems.
++# If it contains results you don't want to keep, you may remove or edit it.
++#
++# By default, configure uses ./config.cache as the cache file,
++# creating it if it does not exist already. You can give configure
++# the --cache-file=FILE option to use a different cache file; that is
++# what configure does when it calls configure scripts in
++# subdirectories, so they share the cache.
++# Giving --cache-file=/dev/null disables caching, for debugging configure.
++# config.status only pays attention to the cache file if you give it the
++# --recheck option to rerun configure.
++#
++EOF
++# Ultrix sh set writes to stderr and can't be redirected directly,
++# and sets the high bit in the cache file unless we assign to the vars.
++(set) 2>&1 |
++ sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
++ >> confcache
++if cmp -s $cache_file confcache; then
++ :
++else
++ if test -w $cache_file; then
++ echo "updating cache $cache_file"
++ cat confcache > $cache_file
++ else
++ echo "not updating unwritable cache $cache_file"
++ fi
++fi
++rm -f confcache
++
++trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
++
++test "x$prefix" = xNONE && prefix=$ac_default_prefix
++# Let make expand exec_prefix.
++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
++
++# Any assignment to VPATH causes Sun make to only execute
++# the first set of double-colon rules, so remove it if not needed.
++# If there is a colon in the path, we need to keep it.
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
++fi
++
++trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
++
++# Transform confdefs.h into DEFS.
++# Protect against shell expansion while executing Makefile rules.
++# Protect against Makefile macro expansion.
++cat > conftest.defs <<\EOF
++s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
++s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
++s%\[%\\&%g
++s%\]%\\&%g
++s%\$%$$%g
++EOF
++DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
++rm -f conftest.defs
++
++
++# Without the "./", some shells look in PATH for config.status.
++: ${CONFIG_STATUS=./config.status}
++
++echo creating $CONFIG_STATUS
++rm -f $CONFIG_STATUS
++cat > $CONFIG_STATUS <<EOF
++#! /bin/sh
++# Generated automatically by configure.
++# Run this file to recreate the current configuration.
++# This directory was configured as follows,
++# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
++#
++# $0 $ac_configure_args
++#
++# Compiler output produced by configure, useful for debugging
++# configure, is in ./config.log if it exists.
++
++ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
++for ac_option
++do
++ case "\$ac_option" in
++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
++ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
++ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
++ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
++ echo "$CONFIG_STATUS generated by autoconf version 2.7"
++ exit 0 ;;
++ -help | --help | --hel | --he | --h)
++ echo "\$ac_cs_usage"; exit 0 ;;
++ *) echo "\$ac_cs_usage"; exit 1 ;;
++ esac
++done
++
++ac_given_srcdir=$srcdir
++
++trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
++EOF
++cat >> $CONFIG_STATUS <<EOF
++
++# Protect against being on the right side of a sed subst in config.status.
++sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
++ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
++$ac_vpsub
++$extrasub
++s%@CFLAGS@%$CFLAGS%g
++s%@CPPFLAGS@%$CPPFLAGS%g
++s%@CXXFLAGS@%$CXXFLAGS%g
++s%@DEFS@%$DEFS%g
++s%@LDFLAGS@%$LDFLAGS%g
++s%@LIBS@%$LIBS%g
++s%@exec_prefix@%$exec_prefix%g
++s%@prefix@%$prefix%g
++s%@program_transform_name@%$program_transform_name%g
++s%@bindir@%$bindir%g
++s%@sbindir@%$sbindir%g
++s%@libexecdir@%$libexecdir%g
++s%@datadir@%$datadir%g
++s%@sysconfdir@%$sysconfdir%g
++s%@sharedstatedir@%$sharedstatedir%g
++s%@localstatedir@%$localstatedir%g
++s%@libdir@%$libdir%g
++s%@includedir@%$includedir%g
++s%@oldincludedir@%$oldincludedir%g
++s%@infodir@%$infodir%g
++s%@mandir@%$mandir%g
++s%@CC@%$CC%g
++s%@AR@%$AR%g
++s%@RANLIB@%$RANLIB%g
++s%@CPP@%$CPP%g
++s%@ALLOCA@%$ALLOCA%g
++
++CEOF
++EOF
++cat >> $CONFIG_STATUS <<EOF
++
++CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
++EOF
++cat >> $CONFIG_STATUS <<\EOF
++for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
++ # Support "outfile[:infile]", defaulting infile="outfile.in".
++ case "$ac_file" in
++ *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
++ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
++ *) ac_file_in="${ac_file}.in" ;;
++ esac
++
++ # Adjust relative srcdir, etc. for subdirectories.
++
++ # Remove last slash and all that follows it. Not all systems have dirname.
++ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
++ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
++ # The file is in a subdirectory.
++ test ! -d "$ac_dir" && mkdir "$ac_dir"
++ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
++ # A "../" for each directory in $ac_dir_suffix.
++ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
++ else
++ ac_dir_suffix= ac_dots=
++ fi
++
++ case "$ac_given_srcdir" in
++ .) srcdir=.
++ if test -z "$ac_dots"; then top_srcdir=.
++ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
++ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
++ *) # Relative path.
++ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
++ top_srcdir="$ac_dots$ac_given_srcdir" ;;
++ esac
++
++ echo creating "$ac_file"
++ rm -f "$ac_file"
++ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
++ case "$ac_file" in
++ *Makefile*) ac_comsub="1i\\
++# $configure_input" ;;
++ *) ac_comsub= ;;
++ esac
++ sed -e "$ac_comsub
++s%@configure_input@%$configure_input%g
++s%@srcdir@%$srcdir%g
++s%@top_srcdir@%$top_srcdir%g
++" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
++fi; done
++rm -f conftest.subs
++
++
++
++exit 0
++EOF
++chmod +x $CONFIG_STATUS
++rm -fr confdefs* $ac_clean_files
++test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
++
+--- glibc-2.3.2/posix/glob/configure.bat 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/configure.bat 2002-11-16 08:56:17.000000000 -0500
+@@ -0,0 +1,26 @@
++@echo off
++echo Configuring glob for GO32
++rem This batch file assumes a unix-type "sed" program
++
++echo # Makefile generated by "configure.bat"> Makefile
++
++if exist config.sed del config.sed
++
++echo "s/@srcdir@/./ ">> config.sed
++echo "s/@CC@/gcc/ ">> config.sed
++echo "s/@CFLAGS@/-O2 -g/ ">> config.sed
++echo "s/@CPPFLAGS@/-DHAVE_CONFIG_H -I../ ">> config.sed
++echo "s/@AR@/ar/ ">> config.sed
++echo "s/@RANLIB@/ranlib/ ">> config.sed
++echo "s/@LDFLAGS@// ">> config.sed
++echo "s/@DEFS@// ">> config.sed
++echo "s/@ALLOCA@// ">> config.sed
++echo "s/@LIBS@// ">> config.sed
++echo "s/@LIBOBJS@// ">> config.sed
++echo "s/^Makefile *:/_Makefile:/ ">> config.sed
++echo "s/^config.h *:/_config.h:/ ">> config.sed
++
++sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
++sed -f config2.sed Makefile.in >> Makefile
++del config.sed
++del config2.sed
+--- glibc-2.3.2/posix/glob/configure.in 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/glob/configure.in 2002-11-16 08:56:17.000000000 -0500
+@@ -0,0 +1,19 @@
++dnl Process this file with autoconf to produce a configure script.
++AC_INIT(fnmatch.c) dnl A distinctive file to look for in srcdir.
++AC_PREREQ(2.1) dnl Minimum Autoconf version required.
++AC_PROG_CC
++AC_CHECK_PROG(AR, ar, ar, ar)
++AC_PROG_RANLIB
++AC_PROG_CPP dnl Later checks need this.
++dnl These two want to come early.
++AC_AIX
++AC_MINIX
++AC_ISC_POSIX
++AC_CONST
++AC_HEADER_STDC
++AC_CHECK_HEADERS(memory.h unistd.h string.h)
++AC_HEADER_DIRENT
++AC_FUNC_CLOSEDIR_VOID
++AC_FUNC_ALLOCA
++AC_FUNC_STRCOLL
++AC_OUTPUT(Makefile)
+--- glibc-2.3.2/posix/globtest.sh 2002-04-29 00:19:36.000000000 -0400
++++ glibc-2.3.2/posix/globtest.sh 2003-08-21 08:37:07.000000000 -0400
+@@ -30,6 +30,7 @@
+
+ trap 'chmod 777 $testdir/noread; rm -fr $testdir $testout' 1 2 3 15
+
++test -d $testdir/noread && chmod 777 $testdir/noread
+ rm -fr $testdir 2>/dev/null
+ mkdir $testdir
+ echo 1 > $testdir/file1
+@@ -44,6 +45,7 @@
+ chmod a-r $testdir/noread
+ echo 1_1 > $testdir/dir1/file1_1
+ echo 1_2 > $testdir/dir1/file1_2
++ln -fs dir1 $testdir/link1
+
+ # Run some tests.
+ result=0
+@@ -61,6 +63,7 @@
+ `dir2'
+ `file1'
+ `file2'
++`link1'
+ `noread'
+ `~file4'
+ EOF
+@@ -81,6 +84,7 @@
+ `dir2'
+ `file1'
+ `file2'
++`link1'
+ `noread'
+ `~file4'
+ EOF
+@@ -101,6 +105,7 @@
+ `dir2/'
+ `file1'
+ `file2'
++`link1/'
+ `noread/'
+ `~file4'
+ EOF
+@@ -124,6 +129,7 @@
+ `dir2'
+ `file1'
+ `file2'
++`link1'
+ `noread'
+ `~file4'
+ EOF
+@@ -232,6 +238,8 @@
+ cat <<"EOF" | cmp - $testout >> $logfile || failed=1
+ `dir1/file1_1'
+ `dir1/file1_2'
++`link1/file1_1'
++`link1/file1_2'
+ EOF
+ if test $failed -ne 0; then
+ echo "Subdirs test failed" >> $logfile
+@@ -258,6 +266,7 @@
+ sort > $testout
+ cat <<"EOF" | cmp - $testout >> $logfile || failed=1
+ `dir1/file1_1'
++`link1/file1_1'
+ EOF
+ if test $failed -ne 0; then
+ echo "Wildcard subdir test failed" >> $logfile
+@@ -272,6 +281,8 @@
+ cat <<"EOF" | cmp - $testout >> $logfile || failed=1
+ `dir1/file1_1'
+ `dir1/file1_2'
++`link1/file1_1'
++`link1/file1_2'
+ EOF
+ if test $failed -ne 0; then
+ echo "Wildcard2 subdir test failed" >> $logfile
+@@ -284,6 +295,7 @@
+ sort > $testout
+ cat <<"EOF" | cmp - $testout >> $logfile || failed=1
+ `dir1/file1_1'
++`link1/file1_1'
+ EOF
+ if test $failed -ne 0; then
+ echo "Wildcard3 subdir test failed" >> $logfile
+@@ -322,6 +334,8 @@
+ cat <<"EOF" | cmp - $testout >> $logfile || failed=1
+ `dir1/file1_1'
+ `dir1/file1_2'
++`link1/file1_1'
++`link1/file1_2'
+ EOF
+ if test $failed -ne 0; then
+ echo "Wildcard6 subdir test failed" >> $logfile
+@@ -336,6 +350,8 @@
+ cat <<"EOF" | cmp - $testout >> $logfile || failed=1
+ `dir1/file1_1'
+ `dir1/file1_2'
++`link1/file1_1'
++`link1/file1_2'
+ EOF
+ if test $failed -ne 0; then
+ echo "Brackets test failed" >> $logfile
+@@ -544,6 +560,8 @@
+ `dir1/file1_1'
+ `dir1/file1_2'
+ `file1'
++`link1/file1_1'
++`link1/file1_2'
+ EOF
+ if test $failed -ne 0; then
+ echo "GLOB_APPEND test failed" >> $logfile
+@@ -560,6 +578,8 @@
+ `dir1/file1_1'
+ `dir1/file1_2'
+ `file1'
++`link1/file1_1'
++`link1/file1_2'
+ EOF
+ if test $failed -ne 0; then
+ echo "GLOB_APPEND2 test failed" >> $logfile
+--- glibc-2.3.2/posix/regcomp.c 2003-02-20 20:17:47.000000000 -0500
++++ glibc-2.3.2/posix/regcomp.c 2003-08-21 08:37:07.000000000 -0400
+@@ -104,7 +104,8 @@
+ re_charset_t *mbcset,
+ int *equiv_class_alloc,
+ const unsigned char *name);
+-static reg_errcode_t build_charclass (re_bitset_ptr_t sbcset,
++static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
++ re_bitset_ptr_t sbcset,
+ re_charset_t *mbcset,
+ int *char_class_alloc,
+ const unsigned char *class_name,
+@@ -112,11 +113,13 @@
+ #else /* not RE_ENABLE_I18N */
+ static reg_errcode_t build_equiv_class (re_bitset_ptr_t sbcset,
+ const unsigned char *name);
+-static reg_errcode_t build_charclass (re_bitset_ptr_t sbcset,
++static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
++ re_bitset_ptr_t sbcset,
+ const unsigned char *class_name,
+ reg_syntax_t syntax);
+ #endif /* not RE_ENABLE_I18N */
+-static bin_tree_t *build_word_op (re_dfa_t *dfa, int not, reg_errcode_t *err);
++static bin_tree_t *build_word_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
++ int not, reg_errcode_t *err);
+ static void free_bin_tree (bin_tree_t *tree);
+ static bin_tree_t *create_tree (bin_tree_t *left, bin_tree_t *right,
+ re_token_type_t type, int index);
+@@ -288,6 +291,7 @@
+ #endif
+
+ static inline void
++__attribute ((always_inline))
+ re_set_fastmap (char *fastmap, int icase, int ch)
+ {
+ fastmap[ch] = 1;
+@@ -2073,12 +2077,12 @@
+ dfa->has_mb_node = 1;
+ break;
+ case OP_WORD:
+- tree = build_word_op (dfa, 0, err);
++ tree = build_word_op (dfa, regexp->trans, 0, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ break;
+ case OP_NOTWORD:
+- tree = build_word_op (dfa, 1, err);
++ tree = build_word_op (dfa, regexp->trans, 1, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ break;
+@@ -2512,6 +2516,7 @@
+ Return the index of the symbol in the SYMB_TABLE. */
+
+ static inline int32_t
++ __attribute ((always_inline))
+ seek_collating_symbol_entry (name, name_len)
+ const unsigned char *name;
+ size_t name_len;
+@@ -2544,6 +2549,7 @@
+ Return the value if succeeded, UINT_MAX otherwise. */
+
+ static inline unsigned int
++ __attribute ((always_inline))
+ lookup_collation_sequence_value (br_elem)
+ bracket_elem_t *br_elem;
+ {
+@@ -2557,12 +2563,12 @@
+ else
+ {
+ wint_t wc = __btowc (br_elem->opr.ch);
+- return collseq_table_lookup (collseqwc, wc);
++ return __collseq_table_lookup (collseqwc, wc);
+ }
+ }
+ else if (br_elem->type == MB_CHAR)
+ {
+- return collseq_table_lookup (collseqwc, br_elem->opr.wch);
++ return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
+ }
+ else if (br_elem->type == COLL_SYM)
+ {
+@@ -2611,6 +2617,7 @@
+ update it. */
+
+ static inline reg_errcode_t
++ __attribute ((always_inline))
+ # ifdef RE_ENABLE_I18N
+ build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
+ re_charset_t *mbcset;
+@@ -2683,7 +2690,7 @@
+ if (nrules == 0)
+ ch_collseq = collseqmb[ch];
+ else
+- ch_collseq = collseq_table_lookup (collseqwc, __btowc (ch));
++ ch_collseq = __collseq_table_lookup (collseqwc, __btowc (ch));
+ if (start_collseq <= ch_collseq && ch_collseq <= end_collseq)
+ bitset_set (sbcset, ch);
+ }
+@@ -2697,6 +2704,7 @@
+ pointer argument sinse we may update it. */
+
+ static inline reg_errcode_t
++ __attribute ((always_inline))
+ # ifdef RE_ENABLE_I18N
+ build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
+ re_charset_t *mbcset;
+@@ -2949,7 +2957,7 @@
+ goto parse_bracket_exp_free_return;
+ break;
+ case CHAR_CLASS:
+- *err = build_charclass (sbcset,
++ *err = build_charclass (regexp->trans, sbcset,
+ #ifdef RE_ENABLE_I18N
+ mbcset, &char_class_alloc,
+ #endif /* RE_ENABLE_I18N */
+@@ -3200,12 +3208,13 @@
+
+ static reg_errcode_t
+ #ifdef RE_ENABLE_I18N
+-build_charclass (sbcset, mbcset, char_class_alloc, class_name, syntax)
++build_charclass (trans, sbcset, mbcset, char_class_alloc, class_name, syntax)
+ re_charset_t *mbcset;
+ int *char_class_alloc;
+ #else /* not RE_ENABLE_I18N */
+-build_charclass (sbcset, class_name, syntax)
++build_charclass (trans, sbcset, class_name, syntax)
+ #endif /* not RE_ENABLE_I18N */
++ RE_TRANSLATE_TYPE trans;
+ re_bitset_ptr_t sbcset;
+ const unsigned char *class_name;
+ reg_syntax_t syntax;
+@@ -3235,11 +3244,14 @@
+ mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);
+ #endif /* RE_ENABLE_I18N */
+
+-#define BUILD_CHARCLASS_LOOP(ctype_func)\
+- for (i = 0; i < SBC_MAX; ++i) \
+- { \
+- if (ctype_func (i)) \
+- bitset_set (sbcset, i); \
++#define BUILD_CHARCLASS_LOOP(ctype_func) \
++ for (i = 0; i < SBC_MAX; ++i) \
++ { \
++ if (ctype_func (i)) \
++ { \
++ int ch = trans ? trans[i] : i; \
++ bitset_set (sbcset, ch); \
++ } \
+ }
+
+ if (strcmp (name, "alnum") == 0)
+@@ -3273,8 +3285,9 @@
+ }
+
+ static bin_tree_t *
+-build_word_op (dfa, not, err)
++build_word_op (dfa, trans, not, err)
+ re_dfa_t *dfa;
++ RE_TRANSLATE_TYPE trans;
+ int not;
+ reg_errcode_t *err;
+ {
+@@ -3324,11 +3337,11 @@
+ }
+
+ /* We don't care the syntax in this case. */
+- ret = build_charclass (sbcset,
++ ret = build_charclass (trans, sbcset,
+ #ifdef RE_ENABLE_I18N
+ mbcset, &alloc,
+ #endif /* RE_ENABLE_I18N */
+- (const unsigned char *) "alpha", 0);
++ (const unsigned char *) "alnum", 0);
+
+ if (BE (ret != REG_NOERROR, 0))
+ {
+--- glibc-2.3.2/posix/regex.h 2002-05-24 04:38:26.000000000 -0400
++++ glibc-2.3.2/posix/regex.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Definitions for data structures and routines for the regular
+ expression library.
+- Copyright (C) 1985,1989-93,1995-98,2000,2001,2002
++ Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+@@ -22,6 +22,8 @@
+ #ifndef _REGEX_H
+ #define _REGEX_H 1
+
++#include <sys/types.h>
++
+ /* Allow the use in C++ code. */
+ #ifdef __cplusplus
+ extern "C" {
+--- glibc-2.3.2/posix/regexec.c 2003-02-28 19:13:12.000000000 -0500
++++ glibc-2.3.2/posix/regexec.c 2003-08-21 08:37:07.000000000 -0400
+@@ -50,10 +50,10 @@
+ int ret_len);
+ static unsigned re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
+ int nregs, int regs_allocated);
+-static inline re_dfastate_t *acquire_init_state_context (reg_errcode_t *err,
+- const regex_t *preg,
+- const re_match_context_t *mctx,
+- int idx);
++static re_dfastate_t *acquire_init_state_context (reg_errcode_t *err,
++ const regex_t *preg,
++ const re_match_context_t *mctx,
++ int idx);
+ static reg_errcode_t prune_impossible_nodes (const regex_t *preg,
+ re_match_context_t *mctx);
+ static int check_matching (const regex_t *preg, re_match_context_t *mctx,
+@@ -906,7 +906,7 @@
+ We must select appropriate initial state depending on the context,
+ since initial states may have constraints like "\<", "^", etc.. */
+
+-static inline re_dfastate_t *
++static re_dfastate_t *
+ acquire_init_state_context (err, preg, mctx, idx)
+ reg_errcode_t *err;
+ const regex_t *preg;
+@@ -1507,7 +1507,7 @@
+
+ /* Helper functions. */
+
+-static inline reg_errcode_t
++static reg_errcode_t
+ clean_state_log_if_need (mctx, next_state_log_idx)
+ re_match_context_t *mctx;
+ int next_state_log_idx;
+@@ -3334,12 +3334,6 @@
+ match it the context. */
+ if (constraint)
+ {
+- if (constraint & NEXT_WORD_CONSTRAINT)
+- for (j = 0; j < BITSET_UINTS; ++j)
+- accepts[j] &= dfa->word_char[j];
+- if (constraint & NEXT_NOTWORD_CONSTRAINT)
+- for (j = 0; j < BITSET_UINTS; ++j)
+- accepts[j] &= ~dfa->word_char[j];
+ if (constraint & NEXT_NEWLINE_CONSTRAINT)
+ {
+ int accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
+@@ -3349,6 +3343,17 @@
+ else
+ continue;
+ }
++ if (constraint & NEXT_ENDBUF_CONSTRAINT)
++ {
++ bitset_empty (accepts);
++ continue;
++ }
++ if (constraint & NEXT_WORD_CONSTRAINT)
++ for (j = 0; j < BITSET_UINTS; ++j)
++ accepts[j] &= dfa->word_char[j];
++ if (constraint & NEXT_NOTWORD_CONSTRAINT)
++ for (j = 0; j < BITSET_UINTS; ++j)
++ accepts[j] &= ~dfa->word_char[j];
+ }
+
+ /* Then divide `accepts' into DFA states, or create a new
+@@ -3523,7 +3528,7 @@
+ if (elem_len <= char_len)
+ {
+ collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
+- in_collseq = collseq_table_lookup (collseqwc, wc);
++ in_collseq = __collseq_table_lookup (collseqwc, wc);
+ }
+ else
+ in_collseq = find_collation_sequence_value (pin, elem_len);
+--- glibc-2.3.2/posix/sched.h 2003-02-06 14:11:56.000000000 -0500
++++ glibc-2.3.2/posix/sched.h 2003-05-12 12:13:06.000000000 -0400
+@@ -64,13 +64,20 @@
+
+
+ #ifdef __USE_GNU
++/* Access macros for `cpu_set'. */
++#define CPU_SETSIZE __CPU_SETSIZE
++#define CPU_SET(cpu, cpusetp) __CPU_SET (cpu, cpusetp)
++#define CPU_CLR(cpu, cpusetp) __CPU_CLR (cpu, cpusetp)
++#define CPU_ISSET(cpu, cpusetp) __CPU_ISSET (cpu, cpusetp)
++#define CPU_ZERO(cpusetp) __CPU_ZERO (cpusetp)
++
++
+ /* Set the CPU affinity for a task */
+-extern int sched_setaffinity (__pid_t __pid, unsigned int __len,
+- unsigned long int *__mask) __THROW;
++extern int sched_setaffinity (__pid_t __pid, __const cpu_set_t *__mask)
++ __THROW;
+
+ /* Get the CPU affinity for a task */
+-extern int sched_getaffinity (__pid_t __pid, unsigned int __len,
+- unsigned long int *__mask) __THROW;
++extern int sched_getaffinity (__pid_t __pid, cpu_set_t *__mask) __THROW;
+ #endif
+
+ __END_DECLS
+--- glibc-2.3.2/posix/spawn.h 2001-07-07 15:21:16.000000000 -0400
++++ glibc-2.3.2/posix/spawn.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX spawn interface.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -62,20 +62,26 @@
+ __BEGIN_DECLS
+
+ /* Spawn a new process executing PATH with the attributes describes in *ATTRP.
+- Before running the process perform the actions described in FILE-ACTIONS. */
++ Before running the process perform the actions described in FILE-ACTIONS.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ extern int posix_spawn (pid_t *__restrict __pid,
+ __const char *__restrict __path,
+ __const posix_spawn_file_actions_t *__restrict
+ __file_actions,
+ __const posix_spawnattr_t *__restrict __attrp,
+ char *__const argv[__restrict_arr],
+- char *__const envp[__restrict_arr]) __THROW;
++ char *__const envp[__restrict_arr]);
++
++/* Similar to `posix_spawn' but search for FILE in the PATH.
+
+-/* Similar to `posix_spawn' but search for FILE in the PATH. */
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ extern int posix_spawnp (pid_t *__pid, __const char *__file,
+ __const posix_spawn_file_actions_t *__file_actions,
+ __const posix_spawnattr_t *__attrp,
+- char *__const argv[], char *__const envp[]) __THROW;
++ char *__const argv[], char *__const envp[]);
+
+
+ /* Initialize data structure with attributes for `spawn' to default values. */
+--- glibc-2.3.2/posix/sys/wait.h 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/posix/sys/wait.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1994,1996-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -105,8 +105,11 @@
+
+
+ /* Wait for a child to die. When one does, put its status in *STAT_LOC
+- and return its process ID. For errors, return (pid_t) -1. */
+-extern __pid_t wait (__WAIT_STATUS __stat_loc) __THROW;
++ and return its process ID. For errors, return (pid_t) -1.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern __pid_t wait (__WAIT_STATUS __stat_loc);
+
+ #ifdef __USE_BSD
+ /* Special values for the PID argument to `waitpid' and `wait4'. */
+@@ -125,8 +128,11 @@
+ is not already dead, return (pid_t) 0. If successful,
+ return PID and store the dead child's status in STAT_LOC.
+ Return (pid_t) -1 for errors. If the WUNTRACED bit is
+- set in OPTIONS, return status for stopped children; otherwise don't. */
+-extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options) __THROW;
++ set in OPTIONS, return status for stopped children; otherwise don't.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options);
+
+ #if defined __USE_SVID || defined __USE_XOPEN
+ # define __need_siginfo_t
+@@ -138,9 +144,12 @@
+ If IDTYPE is P_ALL, match any process.
+ If the WNOHANG bit is set in OPTIONS, and that child
+ is not already dead, clear *INFOP and return 0. If successful, store
+- exit code and status in *INFOP. */
++ exit code and status in *INFOP.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop,
+- int __options) __THROW;
++ int __options);
+ #endif
+
+ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+--- glibc-2.3.2/posix/transbug.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/transbug.c 2003-06-25 07:04:48.000000000 -0400
+@@ -0,0 +1,142 @@
++#include <stdio.h>
++#include <ctype.h>
++#include <errno.h>
++#include <locale.h>
++#include <regex.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++
++/* lowercase chars mapped to uppercase */
++static const char casetable[] = {
++ '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
++ '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
++ '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
++ '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
++ /* ' ' '!' '"' '#' '$' '%' '&' ''' */
++ '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
++ /* '(' ')' '*' '+' ',' '-' '.' '/' */
++ '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
++ /* '0' '1' '2' '3' '4' '5' '6' '7' */
++ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
++ /* '8' '9' ':' ';' '<' '=' '>' '?' */
++ '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
++ /* '@' 'A' 'B' 'C' 'D' 'E' 'F' 'G' */
++ '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
++ /* 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' */
++ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
++ /* 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' */
++ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
++ /* 'X' 'Y' 'Z' '[' '\' ']' '^' '_' */
++ '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
++ /* '`' 'a' 'b' 'c' 'd' 'e' 'f' 'g' */
++ '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
++ /* 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' */
++ '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
++ /* 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' */
++ '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
++ /* 'x' 'y' 'z' '{' '|' '}' '~' */
++ '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
++
++ /* Latin 1: */
++ '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
++ '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
++ '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
++ '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
++ '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
++ '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
++ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
++ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
++ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
++ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
++ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327',
++ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337',
++ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
++ '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
++ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
++ '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
++};
++
++
++static int
++run_test (const char *pattern, struct re_registers *regs)
++{
++ static char text[] = "1111AAAA2222bbbb";
++
++ struct re_pattern_buffer pat;
++
++ const char *err;
++ int res;
++ int start2;
++
++ memset (&pat, '\0', sizeof (pat));
++ memset (regs, '\0', 2 * sizeof (regs[0]));
++ pat.allocated = 0; /* regex will allocate the buffer */
++ pat.fastmap = (char *) malloc (256);
++ if (pat.fastmap == NULL)
++ {
++ puts ("out of memory");
++ exit (1);
++ }
++
++ pat.translate = (char *) casetable;
++
++ err = re_compile_pattern (pattern, strlen (pattern), &pat);
++ if (err != NULL)
++ {
++ fprintf (stderr, "/%s/: %s\n", pattern, err);
++ exit (1);
++ }
++ res = re_search (&pat, text, strlen (text), 0, strlen (text), &regs[0]);
++ if (res < 0)
++ printf ("search 1: res = %d\n", res);
++ else
++ printf ("search 1: res = %d, start = %d, end = %d\n",
++ res, regs[0].start[0], regs[0].end[0]);
++
++ if (regs[0].end == NULL)
++ start2 = 8;
++ else
++ start2 = regs[0].end[0] + 1;
++ regs[1] = regs[0];
++ res = re_search (&pat, text, strlen (text), start2, strlen (text), &regs[1]);
++ if (res < 0)
++ printf ("search 2: res = %d\n", res);
++ else
++ printf ("search 2: res = %d, start = %d, end = %d\n",
++ res, regs[1].start[0], regs[1].end[0]);
++
++ return res < 0 ? 1 : 0;
++}
++
++
++static int
++do_test (void)
++{
++ static const char lower[] = "[[:lower:]]+";
++ static const char upper[] = "[[:upper:]]+";
++ struct re_registers regs[4];
++
++ setlocale (LC_ALL, "C");
++
++ (void) re_set_syntax (RE_SYNTAX_GNU_AWK);
++
++ int result;
++#define CHECK(exp) \
++ if (exp) { puts (#exp); result = 1; }
++
++ result = run_test (lower, regs);
++ result |= run_test (upper, &regs[2]);
++ if (! result)
++ {
++ CHECK (regs[0].start[0] != regs[2].start[0]);
++ CHECK (regs[0].end[0] != regs[2].end[0]);
++ CHECK (regs[1].start[0] != regs[3].start[0]);
++ CHECK (regs[1].end[0] != regs[3].end[0]);
++ }
++
++ return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/posix/tst-nanosleep.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/tst-nanosleep.c 2003-08-21 08:37:07.000000000 -0400
+@@ -0,0 +1,58 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include <time.h>
++
++
++/* Test that nanosleep() does sleep. */
++static int
++do_test (void)
++{
++ /* Current time. */
++ struct timeval tv1;
++ (void) gettimeofday (&tv1, NULL);
++
++ struct timespec ts;
++ ts.tv_sec = 1;
++ ts.tv_nsec = 0;
++ TEMP_FAILURE_RETRY (nanosleep (&ts, &ts));
++
++ /* At least one second must have passed. */
++ struct timeval tv2;
++ (void) gettimeofday (&tv2, NULL);
++
++ tv2.tv_sec -= tv1.tv_sec;
++ tv2.tv_usec -= tv1.tv_usec;
++ if (tv2.tv_usec < 0)
++ --tv2.tv_sec;
++
++ if (tv2.tv_sec < 1)
++ {
++ puts ("nanosleep didn't sleep long enough");
++ return 1;
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/posix/tst-nice.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/posix/tst-nice.c 2003-03-20 06:40:36.000000000 -0500
+@@ -0,0 +1,66 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <stdio.h>
++#include <unistd.h>
++
++
++/* Test that nice() does not incorrectly return 0. */
++static int
++do_test (void)
++{
++ int ret;
++ const int incr = 10;
++ int old;
++
++ /* Discover current nice value. */
++ errno = 0;
++ old = nice (0);
++ if (old == -1 && errno != 0)
++ {
++ printf ("break: nice(%d) return: %d, %m\n", 0, old);
++ return 1;
++ }
++
++ /* Nice ourselves up. */
++ errno = 0;
++ ret = nice (incr);
++ if (ret == -1 && errno != 0)
++ {
++ printf ("break: nice(%d) return: %d, %m\n", incr, ret);
++ return 1;
++ }
++
++ /* Check for return value being zero when it shouldn't. Cannot simply
++ check for expected value since nice values are capped at 2^n-1.
++ But we assume that we didn't start at the cap and so should have
++ increased some. */
++ if (ret <= old)
++ {
++ printf ("FAIL: retval (%d) of nice(%d) != %d\n", ret, incr, old + incr);
++ return 1;
++ }
++
++ printf ("PASS: nice(%d) from %d return: %d\n", incr, old, ret);
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/posix/unistd.h 2002-10-14 00:03:29.000000000 -0400
++++ glibc-2.3.2/posix/unistd.h 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,34 +30,30 @@
+ /* These may be used to determine what facilities are present at compile time.
+ Their values can be obtained at run time from `sysconf'. */
+
+-/* POSIX Standard approved as ISO/IEC 9945-1 as of August, 1988 and
+- extended by POSIX-1b (aka POSIX-4) and POSIX-1c (aka POSIX threads). */
+-#define _POSIX_VERSION 199506L
++/* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001. */
++#define _POSIX_VERSION 200112L
+
+ /* These are not #ifdef __USE_POSIX2 because they are
+ in the theoretically application-owned namespace. */
+
+-/* POSIX Standard approved as ISO/IEC 9945-2 as of December, 1993. */
+-#define _POSIX2_C_VERSION 199209L
+-
+ /* The utilities on GNU systems also correspond to this version. */
+-#define _POSIX2_VERSION 199209L
++#define _POSIX2_VERSION 200112L
+
+ /* If defined, the implementation supports the
+ C Language Bindings Option. */
+-#define _POSIX2_C_BIND 1
++#define _POSIX2_C_BIND 200112L
+
+ /* If defined, the implementation supports the
+ C Language Development Utilities Option. */
+-#define _POSIX2_C_DEV 1
++#define _POSIX2_C_DEV 200112L
+
+ /* If defined, the implementation supports the
+ Software Development Utilities Option. */
+-#define _POSIX2_SW_DEV 1
++#define _POSIX2_SW_DEV 200112L
+
+ /* If defined, the implementation supports the
+ creation of locales with the localedef utility. */
+-#define _POSIX2_LOCALEDEF 1
++#define _POSIX2_LOCALEDEF 200112L
+
+ /* X/Open version number to which the library conforms. It is selectable. */
+ #ifdef __USE_UNIX98
+@@ -302,31 +298,51 @@
+ extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __THROW;
+ #endif
+
+-/* Close the file descriptor FD. */
+-extern int close (int __fd) __THROW;
++/* Close the file descriptor FD.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int close (int __fd);
+
+ /* Read NBYTES into BUF from FD. Return the
+- number read, -1 for errors or 0 for EOF. */
+-extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __THROW;
++ number read, -1 for errors or 0 for EOF.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t read (int __fd, void *__buf, size_t __nbytes);
+
+-/* Write N bytes of BUF to FD. Return the number written, or -1. */
+-extern ssize_t write (int __fd, __const void *__buf, size_t __n) __THROW;
++/* Write N bytes of BUF to FD. Return the number written, or -1.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t write (int __fd, __const void *__buf, size_t __n);
+
+ #ifdef __USE_UNIX98
+ # ifndef __USE_FILE_OFFSET64
+-extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
+- __THROW;
++/* Read NBYTES into BUF from FD at the given position OFFSET without
++ changing the file pointer. Return the number read, -1 for errors
++ or 0 for EOF.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
++ __off_t __offset);
++
++/* Write N bytes of BUF to FD at the given position OFFSET without
++ changing the file pointer. Return the number written, or -1.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+- __off_t __offset) __THROW;
++ __off_t __offset);
+ # else
+ # ifdef __REDIRECT
+ extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
+- __off64_t __offset) __THROW,
++ __off64_t __offset),
+ pread64);
+ extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
+- size_t __nbytes, __off64_t __offset)
+- __THROW,
+- pwrite64);
++ size_t __nbytes, __off64_t __offset),
++ pwrite64);
+ # else
+ # define pread pread64
+ # define pwrite pwrite64
+@@ -338,11 +354,11 @@
+ changing the file pointer. Return the number read, -1 for errors
+ or 0 for EOF. */
+ extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
+- __off64_t __offset) __THROW;
++ __off64_t __offset);
+ /* Write N bytes of BUF to FD at the given position OFFSET without
+ changing the file pointer. Return the number written, or -1. */
+ extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
+- __off64_t __offset) __THROW;
++ __off64_t __offset);
+ # endif
+ #endif
+
+@@ -367,8 +383,11 @@
+ If a signal handler does a `longjmp' or modifies the handling of the
+ SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
+ signal afterwards is undefined. There is no return value to indicate
+- error, but if `sleep' returns SECONDS, it probably didn't work. */
+-extern unsigned int sleep (unsigned int __seconds) __THROW;
++ error, but if `sleep' returns SECONDS, it probably didn't work.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern unsigned int sleep (unsigned int __seconds);
+
+ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+ /* Set an alarm to go off (generating a SIGALRM signal) in VALUE
+@@ -379,14 +398,20 @@
+ __THROW;
+
+ /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
+- or ignored. */
+-extern int usleep (__useconds_t __useconds) __THROW;
++ or ignored.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int usleep (__useconds_t __useconds);
+ #endif
+
+
+ /* Suspend the process until a signal arrives.
+- This always returns -1 and sets `errno' to EINTR. */
+-extern int pause (void) __THROW;
++ This always returns -1 and sets `errno' to EINTR.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int pause (void);
+
+
+ /* Change the owner and group of FILE. */
+@@ -721,13 +746,19 @@
+ extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
+
+
+-/* Return the login name of the user. */
+-extern char *getlogin (void) __THROW;
++/* Return the login name of the user.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern char *getlogin (void);
+ #if defined __USE_REENTRANT || defined __USE_UNIX98
+ /* Return at most NAME_LEN characters of the login name of the user in NAME.
+ If it cannot be determined or some other error occurred, return the error
+- code. Otherwise return 0. */
+-extern int getlogin_r (char *__name, size_t __name_len) __THROW;
++ code. Otherwise return 0.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern int getlogin_r (char *__name, size_t __name_len);
+ #endif
+
+ #ifdef __USE_BSD
+@@ -814,20 +845,23 @@
+
+ /* Prompt with PROMPT and read a string from the terminal without echoing.
+ Uses /dev/tty if possible; otherwise stderr and stdin. */
+-extern char *getpass (__const char *__prompt) __THROW;
++extern char *getpass (__const char *__prompt);
+ #endif /* Use BSD || X/Open. */
+
+
+ #if defined __USE_BSD || defined __USE_XOPEN
+-/* Make all changes done to FD actually appear on disk. */
+-extern int fsync (int __fd) __THROW;
++/* Make all changes done to FD actually appear on disk.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int fsync (int __fd);
+ #endif /* Use BSD || X/Open. */
+
+
+ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+
+-/* Return the current machine's Internet number. */
+-extern long int gethostid (void) __THROW;
++/* Return identifier for the current host. */
++extern long int gethostid (void);
+
+ /* Make all changes done to all files actually appear on disk. */
+ extern void sync (void) __THROW;
+@@ -914,7 +948,10 @@
+
+ /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
+ LEN is always relative to the current file position.
+- The CMD argument is one of the following. */
++ The CMD argument is one of the following.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+
+ # define F_ULOCK 0 /* Unlock a previously locked region. */
+ # define F_LOCK 1 /* Lock a region for exclusive use. */
+@@ -922,17 +959,17 @@
+ # define F_TEST 3 /* Test a region for other processes locks. */
+
+ # ifndef __USE_FILE_OFFSET64
+-extern int lockf (int __fd, int __cmd, __off_t __len) __THROW;
++extern int lockf (int __fd, int __cmd, __off_t __len);
+ # else
+ # ifdef __REDIRECT
+-extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW,
++extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len),
+ lockf64);
+ # else
+ # define lockf lockf64
+ # endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW;
++extern int lockf64 (int __fd, int __cmd, __off64_t __len);
+ # endif
+ #endif /* Use misc and F_LOCK not already defined. */
+
+@@ -984,25 +1021,6 @@
+ extern char *ctermid (char *__s) __THROW;
+ #endif
+
+-
+-#ifdef __USE_POSIX199309
+-/* This function is only available if the system has POSIX threads. */
+-
+-/* Install handlers to be called when a new process is created with FORK.
+- The PREPARE handler is called in the parent process just before performing
+- FORK. The PARENT handler is called in the parent process just after FORK.
+- The CHILD handler is called in the child process. Each of the three
+- handlers can be NULL, meaning that no handler needs to be called at that
+- point.
+- PTHREAD_ATFORK can be called several times, in which case the PREPARE
+- handlers are called in LIFO order (last added with PTHREAD_ATFORK,
+- first called before FORK), and the PARENT and CHILD handlers are called
+- in FIFO (first added, first called). */
+-extern int pthread_atfork (void (*__prepare) (void),
+- void (*__parent) (void),
+- void (*__child) (void)) __THROW;
+-#endif
+-
+ __END_DECLS
+
+ #endif /* unistd.h */
+--- glibc-2.3.2/posix/wordexp-test.c 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/posix/wordexp-test.c 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -109,6 +109,11 @@
+ { 0, NULL, "$((-1))", 0, 1, { "-1", }, IFS },
+ { 0, NULL, "$[50+20]", 0, 1, { "70", }, IFS },
+ { 0, NULL, "$(((2+3)*(4+5)))", 0, 1, { "45", }, IFS },
++ { 0, NULL, "$((010))", 0, 1, { "8" }, IFS },
++ { 0, NULL, "$((0x10))", 0, 1, { "16" }, IFS },
++ { 0, NULL, "$((010+0x10))", 0, 1, { "24" }, IFS },
++ { 0, NULL, "$((-010+0x10))", 0, 1, { "8" }, IFS },
++ { 0, NULL, "$((-0x10+010))", 0, 1, { "-8" }, IFS },
+
+ /* Advanced parameter expansion */
+ { 0, NULL, "${var:-bar}", 0, 1, { "bar", }, IFS },
+@@ -201,6 +206,7 @@
+ { WRDE_SYNTAX, NULL, "$(for i in)", 0, 0, { NULL, }, IFS },
+ { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
+ { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
++ { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
+
+ { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
+ };
+--- glibc-2.3.2/posix/wordexp.h 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/posix/wordexp.h 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -61,7 +61,7 @@
+
+ /* Do word expansion of WORDS into PWORDEXP. */
+ extern int wordexp (__const char *__restrict __words,
+- wordexp_t *__restrict __pwordexp, int __flags) __THROW;
++ wordexp_t *__restrict __pwordexp, int __flags);
+
+ /* Free the storage allocated by a `wordexp' call. */
+ extern void wordfree (wordexp_t *__wordexp) __THROW;
+--- glibc-2.3.2/pwd/Makefile 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/pwd/Makefile 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++# Copyright (C) 1991,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -34,6 +34,9 @@
+
+ CFLAGS-getpwuid_r.c = -DUSE_NSCD=1
+ CFLAGS-getpwnam_r.c = -DUSE_NSCD=1
++CFLAGS-getpwent_r.c = -fexceptions
++CFLAGS-getpwent.c = -fexceptions
++CFLAGS-getpw.c = -fexceptions
+
+ endif
+
+--- glibc-2.3.2/pwd/pwd.h 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/pwd/pwd.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,95,96,97,98,99,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1992,1995-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -66,30 +66,55 @@
+
+
+ #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN_EXTENDED
+-/* Rewind the password-file stream. */
+-extern void setpwent (void) __THROW;
++/* Rewind the password-file stream.
+
+-/* Close the password-file stream. */
+-extern void endpwent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void setpwent (void);
+
+-/* Read an entry from the password-file stream, opening it if necessary. */
+-extern struct passwd *getpwent (void) __THROW;
++/* Close the password-file stream.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endpwent (void);
++
++/* Read an entry from the password-file stream, opening it if necessary.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct passwd *getpwent (void);
+ #endif
+
+ #ifdef __USE_SVID
+-/* Read an entry from STREAM. */
+-extern struct passwd *fgetpwent (FILE *__stream) __THROW;
++/* Read an entry from STREAM.
+
+-/* Write the given entry onto the given stream. */
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct passwd *fgetpwent (FILE *__stream);
++
++/* Write the given entry onto the given stream.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int putpwent (__const struct passwd *__restrict __p,
+- FILE *__restrict __f) __THROW;
++ FILE *__restrict __f);
+ #endif
+
+-/* Search for an entry with a matching user ID. */
+-extern struct passwd *getpwuid (__uid_t __uid) __THROW;
++/* Search for an entry with a matching user ID.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct passwd *getpwuid (__uid_t __uid);
+
+-/* Search for an entry with a matching username. */
+-extern struct passwd *getpwnam (__const char *__name) __THROW;
++/* Search for an entry with a matching username.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct passwd *getpwnam (__const char *__name);
+
+ #if defined __USE_POSIX || defined __USE_MISC
+
+@@ -108,29 +133,38 @@
+ POSIX people would choose. */
+
+ # if defined __USE_SVID || defined __USE_MISC
++/* This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int getpwent_r (struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct passwd **__restrict __result) __THROW;
++ struct passwd **__restrict __result);
+ # endif
+
+ extern int getpwuid_r (__uid_t __uid,
+ struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct passwd **__restrict __result) __THROW;
++ struct passwd **__restrict __result);
+
+ extern int getpwnam_r (__const char *__restrict __name,
+ struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct passwd **__restrict __result) __THROW;
++ struct passwd **__restrict __result);
+
+
+ # ifdef __USE_SVID
+ /* Read an entry from STREAM. This function is not standardized and
+- probably never will. */
++ probably never will.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int fgetpwent_r (FILE *__restrict __stream,
+ struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+- struct passwd **__restrict __result) __THROW;
++ struct passwd **__restrict __result);
+ # endif
+
+ #endif /* POSIX or reentrant */
+@@ -138,8 +172,13 @@
+ #ifdef __USE_GNU
+ /* Re-construct the password-file line for the given uid
+ in the given buffer. This knows the format that the caller
+- will expect, but this need not be the format of the password file. */
+-extern int getpw (__uid_t __uid, char *__buffer) __THROW;
++ will expect, but this need not be the format of the password file.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int getpw (__uid_t __uid, char *__buffer);
+ #endif
+
+ __END_DECLS
+--- glibc-2.3.2/resolv/Makefile 2003-02-25 18:40:08.000000000 -0500
++++ glibc-2.3.2/resolv/Makefile 2003-09-19 22:37:06.000000000 -0400
+@@ -34,6 +34,8 @@
+
+ tests = tst-aton tst-leaks
+
++generate := mtrace-tst-leaks tst-leaks.mtrace
++
+ include ../Makeconfig
+
+ extra-libs := libresolv libnss_dns
+@@ -71,6 +73,8 @@
+ -Dgetnetbyname=res_getnetbyname \
+ -Dgetnetbyaddr=res_getnetbyaddr
+
++CFLAGS-res_hconf.c = -fexceptions
++
+ # The BIND code elicits some harmless warnings.
+ +cflags += -Wno-strict-prototypes -Wno-write-strings
+
+@@ -93,6 +97,8 @@
+ tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace
+ $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out
+ $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@
++ifeq (no,$(cross-compiling))
+ ifneq (no,$(PERL))
+ tests: $(objpfx)mtrace-tst-leaks
+ endif
++endif
+--- glibc-2.3.2/resolv/Versions 2002-12-15 19:57:39.000000000 -0500
++++ glibc-2.3.2/resolv/Versions 2003-08-21 08:37:07.000000000 -0400
+@@ -4,9 +4,11 @@
+ GLIBC_2.0 {
+ %if !(USE_TLS && HAVE___THREAD)
+ # global variables
+- _h_errno; _res;
++ _h_errno;
+ %endif
+
++ _res;
++
+ # helper functions
+ __h_errno_location;
+
+@@ -34,7 +36,7 @@
+
+ %if USE_TLS && HAVE___THREAD
+ # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
+- h_errno; _res;
++ h_errno; __resp;
+ %endif
+ }
+ }
+--- glibc-2.3.2/resolv/gethnamaddr.c 2003-01-02 05:37:12.000000000 -0500
++++ glibc-2.3.2/resolv/gethnamaddr.c 2003-01-04 12:48:02.000000000 -0500
+@@ -51,7 +51,7 @@
+
+ #if defined(LIBC_SCCS) && !defined(lint)
+ static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
+-static char rcsid[] = "$Id: gethnamaddr.c,v 1.44 2003/01/01 16:29:36 aj Exp $";
++static char rcsid[] = "$Id: gethnamaddr.c,v 1.43 2002/10/17 21:49:34 drepper Exp $";
+ #endif /* LIBC_SCCS and not lint */
+
+ #include <sys/types.h>
+--- glibc-2.3.2/resolv/herror.c 2002-08-07 22:08:20.000000000 -0400
++++ glibc-2.3.2/resolv/herror.c 2003-09-19 22:37:06.000000000 -0400
+@@ -62,6 +62,7 @@
+ #include <unistd.h>
+
+ #include <libintl.h>
++#include <not-cancel.h>
+
+ const char *h_errlist[] = {
+ N_("Resolver Error 0 (no error)"),
+@@ -94,7 +95,7 @@
+ v++;
+ v->iov_base = "\n";
+ v->iov_len = 1;
+- __writev(STDERR_FILENO, iov, (v - iov) + 1);
++ writev_not_cancel_no_status(STDERR_FILENO, iov, (v - iov) + 1);
+ }
+
+ /*
+--- glibc-2.3.2/resolv/netdb.h 2002-08-09 22:52:19.000000000 -0400
++++ glibc-2.3.2/resolv/netdb.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
++ /* Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -104,102 +104,146 @@
+ };
+
+ /* Open host data base files and mark them as staying open even after
+- a later search if STAY_OPEN is non-zero. */
+-extern void sethostent (int __stay_open) __THROW;
++ a later search if STAY_OPEN is non-zero.
+
+-/* Close host data base files and clear `stay open' flag. */
+-extern void endhostent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void sethostent (int __stay_open);
++
++/* Close host data base files and clear `stay open' flag.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endhostent (void);
+
+ /* Get next entry from host data base file. Open data base if
+- necessary. */
+-extern struct hostent *gethostent (void) __THROW;
++ necessary.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct hostent *gethostent (void);
+
+ /* Return entry from host data base which address match ADDR with
+- length LEN and type TYPE. */
++ length LEN and type TYPE.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len,
+- int __type) __THROW;
++ int __type);
+
+-/* Return entry from host data base for host with NAME. */
+-extern struct hostent *gethostbyname (__const char *__name) __THROW;
++/* Return entry from host data base for host with NAME.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct hostent *gethostbyname (__const char *__name);
+
+ #ifdef __USE_MISC
+ /* Return entry from host data base for host with NAME. AF must be
+ set to the address type which is `AF_INET' for IPv4 or `AF_INET6'
+- for IPv6. */
+-extern struct hostent *gethostbyname2 (__const char *__name, int __af) __THROW;
++ for IPv6.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct hostent *gethostbyname2 (__const char *__name, int __af);
+
+ /* Reentrant versions of the functions above. The additional
+ arguments specify a buffer of BUFLEN starting at BUF. The last
+ argument is a pointer to a variable which gets the value which
+ would be stored in the global variable `herrno' by the
+- non-reentrant functions. */
++ non-reentrant functions.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern int gethostent_r (struct hostent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct hostent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+
+ extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len,
+ int __type,
+ struct hostent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct hostent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+
+ extern int gethostbyname_r (__const char *__restrict __name,
+ struct hostent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct hostent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+
+ extern int gethostbyname2_r (__const char *__restrict __name, int __af,
+ struct hostent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct hostent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+ #endif /* misc */
+
+
+ /* Open network data base files and mark them as staying open even
+- after a later search if STAY_OPEN is non-zero. */
+-extern void setnetent (int __stay_open) __THROW;
++ after a later search if STAY_OPEN is non-zero.
+
+-/* Close network data base files and clear `stay open' flag. */
+-extern void endnetent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void setnetent (int __stay_open);
++
++/* Close network data base files and clear `stay open' flag.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endnetent (void);
+
+ /* Get next entry from network data base file. Open data base if
+- necessary. */
+-extern struct netent *getnetent (void) __THROW;
++ necessary.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct netent *getnetent (void);
+
+ /* Return entry from network data base which address match NET and
+- type TYPE. */
+-extern struct netent *getnetbyaddr (uint32_t __net, int __type)
+- __THROW;
++ type TYPE.
+
+-/* Return entry from network data base for network with NAME. */
+-extern struct netent *getnetbyname (__const char *__name) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct netent *getnetbyaddr (uint32_t __net, int __type);
++
++/* Return entry from network data base for network with NAME.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct netent *getnetbyname (__const char *__name);
+
+ #ifdef __USE_MISC
+ /* Reentrant versions of the functions above. The additional
+ arguments specify a buffer of BUFLEN starting at BUF. The last
+ argument is a pointer to a variable which gets the value which
+ would be stored in the global variable `herrno' by the
+- non-reentrant functions. */
++ non-reentrant functions.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern int getnetent_r (struct netent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct netent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+
+ extern int getnetbyaddr_r (uint32_t __net, int __type,
+ struct netent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct netent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+
+ extern int getnetbyname_r (__const char *__restrict __name,
+ struct netent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+ struct netent **__restrict __result,
+- int *__restrict __h_errnop) __THROW;
++ int *__restrict __h_errnop);
+ #endif /* misc */
+
+
+@@ -213,44 +257,63 @@
+ };
+
+ /* Open service data base files and mark them as staying open even
+- after a later search if STAY_OPEN is non-zero. */
+-extern void setservent (int __stay_open) __THROW;
++ after a later search if STAY_OPEN is non-zero.
+
+-/* Close service data base files and clear `stay open' flag. */
+-extern void endservent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void setservent (int __stay_open);
++
++/* Close service data base files and clear `stay open' flag.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endservent (void);
+
+ /* Get next entry from service data base file. Open data base if
+- necessary. */
+-extern struct servent *getservent (void) __THROW;
++ necessary.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct servent *getservent (void);
+
+ /* Return entry from network data base for network with NAME and
+- protocol PROTO. */
++ protocol PROTO.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern struct servent *getservbyname (__const char *__name,
+- __const char *__proto) __THROW;
++ __const char *__proto);
+
+ /* Return entry from service data base which matches port PORT and
+- protocol PROTO. */
+-extern struct servent *getservbyport (int __port, __const char *__proto)
+- __THROW;
++ protocol PROTO.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct servent *getservbyport (int __port, __const char *__proto);
+
+
+ #ifdef __USE_MISC
+ /* Reentrant versions of the functions above. The additional
+- arguments specify a buffer of BUFLEN starting at BUF. */
++ arguments specify a buffer of BUFLEN starting at BUF.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern int getservent_r (struct servent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+- struct servent **__restrict __result) __THROW;
++ struct servent **__restrict __result);
+
+ extern int getservbyname_r (__const char *__restrict __name,
+ __const char *__restrict __proto,
+ struct servent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+- struct servent **__restrict __result) __THROW;
++ struct servent **__restrict __result);
+
+ extern int getservbyport_r (int __port, __const char *__restrict __proto,
+ struct servent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+- struct servent **__restrict __result) __THROW;
++ struct servent **__restrict __result);
+ #endif /* misc */
+
+
+@@ -263,64 +326,108 @@
+ };
+
+ /* Open protocol data base files and mark them as staying open even
+- after a later search if STAY_OPEN is non-zero. */
+-extern void setprotoent (int __stay_open) __THROW;
++ after a later search if STAY_OPEN is non-zero.
+
+-/* Close protocol data base files and clear `stay open' flag. */
+-extern void endprotoent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void setprotoent (int __stay_open);
++
++/* Close protocol data base files and clear `stay open' flag.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endprotoent (void);
+
+ /* Get next entry from protocol data base file. Open data base if
+- necessary. */
+-extern struct protoent *getprotoent (void) __THROW;
++ necessary.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct protoent *getprotoent (void);
+
+-/* Return entry from protocol data base for network with NAME. */
+-extern struct protoent *getprotobyname (__const char *__name) __THROW;
++/* Return entry from protocol data base for network with NAME.
+
+-/* Return entry from protocol data base which number is PROTO. */
+-extern struct protoent *getprotobynumber (int __proto) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct protoent *getprotobyname (__const char *__name);
++
++/* Return entry from protocol data base which number is PROTO.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct protoent *getprotobynumber (int __proto);
+
+
+ #ifdef __USE_MISC
+ /* Reentrant versions of the functions above. The additional
+- arguments specify a buffer of BUFLEN starting at BUF. */
++ arguments specify a buffer of BUFLEN starting at BUF.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern int getprotoent_r (struct protoent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+- struct protoent **__restrict __result) __THROW;
++ struct protoent **__restrict __result);
+
+ extern int getprotobyname_r (__const char *__restrict __name,
+ struct protoent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+- struct protoent **__restrict __result) __THROW;
++ struct protoent **__restrict __result);
+
+ extern int getprotobynumber_r (int __proto,
+ struct protoent *__restrict __result_buf,
+ char *__restrict __buf, size_t __buflen,
+- struct protoent **__restrict __result) __THROW;
+-#endif /* misc */
++ struct protoent **__restrict __result);
++
++
++/* Establish network group NETGROUP for enumeration.
+
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int setnetgrent (__const char *__netgroup);
+
+-/* Establish network group NETGROUP for enumeration. */
+-extern int setnetgrent (__const char *__netgroup) __THROW;
++/* Free all space allocated by previous `setnetgrent' call.
+
+-/* Free all space allocated by previous `setnetgrent' call. */
+-extern void endnetgrent (void) __THROW;
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern void endnetgrent (void);
+
+ /* Get next member of netgroup established by last `setnetgrent' call
+- and return pointers to elements in HOSTP, USERP, and DOMAINP. */
++ and return pointers to elements in HOSTP, USERP, and DOMAINP.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int getnetgrent (char **__restrict __hostp,
+ char **__restrict __userp,
+- char **__restrict __domainp) __THROW;
++ char **__restrict __domainp);
+
+-#ifdef __USE_MISC
+-/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN). */
++
++/* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN).
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int innetgr (__const char *__netgroup, __const char *__host,
+- __const char *__user, __const char *domain) __THROW;
++ __const char *__user, __const char *domain);
++
++/* Reentrant version of `getnetgrent' where result is placed in BUFFER.
+
+-/* Reentrant version of `getnetgrent' where result is placed in BUFFER. */
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int getnetgrent_r (char **__restrict __hostp,
+ char **__restrict __userp,
+ char **__restrict __domainp,
+- char *__restrict __buffer, size_t __buflen) __THROW;
++ char *__restrict __buffer, size_t __buflen);
+ #endif /* misc */
+
+
+@@ -330,60 +437,98 @@
+ executed as REMUSER. In *FD2P the descriptor to the socket for the
+ connection is returned. The caller must have the right to use a
+ reserved port. When the function returns *AHOST contains the
+- official host name. */
++ official host name.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
+ __const char *__restrict __locuser,
+ __const char *__restrict __remuser,
+- __const char *__restrict __cmd, int *__restrict __fd2p)
+- __THROW;
++ __const char *__restrict __cmd, int *__restrict __fd2p);
+
+ /* This is the equivalent function where the protocol can be selected
+- and which therefore can be used for IPv6. */
++ and which therefore can be used for IPv6.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
+ __const char *__restrict __locuser,
+ __const char *__restrict __remuser,
+ __const char *__restrict __cmd, int *__restrict __fd2p,
+- sa_family_t __af) __THROW;
++ sa_family_t __af);
+
+ /* Call `rexecd' at port RPORT on remote machine *AHOST to execute
+ CMD. The process runs at the remote machine using the ID of user
+ NAME whose cleartext password is PASSWD. In *FD2P the descriptor
+ to the socket for the connection is returned. When the function
+- returns *AHOST contains the official host name. */
++ returns *AHOST contains the official host name.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int rexec (char **__restrict __ahost, int __rport,
+ __const char *__restrict __name,
+ __const char *__restrict __pass,
+- __const char *__restrict __cmd, int *__restrict __fd2p)
+- __THROW;
++ __const char *__restrict __cmd, int *__restrict __fd2p);
+
+ /* This is the equivalent function where the protocol can be selected
+- and which therefore can be used for IPv6. */
++ and which therefore can be used for IPv6.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int rexec_af (char **__restrict __ahost, int __rport,
+ __const char *__restrict __name,
+ __const char *__restrict __pass,
+ __const char *__restrict __cmd, int *__restrict __fd2p,
+- sa_family_t __af) __THROW;
++ sa_family_t __af);
+
+ /* Check whether user REMUSER on system RHOST is allowed to login as LOCUSER.
+ If SUSER is not zero the user tries to become superuser. Return 0 if
+- it is possible. */
++ it is possible.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int ruserok (__const char *__rhost, int __suser,
+- __const char *__remuser, __const char *__locuser) __THROW;
++ __const char *__remuser, __const char *__locuser);
+
+ /* This is the equivalent function where the protocol can be selected
+- and which therefore can be used for IPv6. */
++ and which therefore can be used for IPv6.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int ruserok_af (__const char *__rhost, int __suser,
+ __const char *__remuser, __const char *__locuser,
+- sa_family_t __af) __THROW;
++ sa_family_t __af);
+
+ /* Try to allocate reserved port, returning a descriptor for a socket opened
+ at this port or -1 if unsuccessful. The search for an available port
+- will start at ALPORT and continues with lower numbers. */
+-extern int rresvport (int *__alport) __THROW;
++ will start at ALPORT and continues with lower numbers.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int rresvport (int *__alport);
+
+ /* This is the equivalent function where the protocol can be selected
+- and which therefore can be used for IPv6. */
+-extern int rresvport_af (int *__alport, sa_family_t __af) __THROW;
++ and which therefore can be used for IPv6.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int rresvport_af (int *__alport, sa_family_t __af);
+ #endif
+
+
+@@ -424,6 +569,10 @@
+ # define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */
+ # define AI_CANONNAME 0x0002 /* Request for canonical name. */
+ # define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */
++# define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */
++# define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */
++# define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
++ returned address type.. */
+
+ /* Error values for `getaddrinfo' function. */
+ # define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */
+@@ -455,11 +604,14 @@
+ # define NI_DGRAM 16 /* Look up UDP service rather than TCP. */
+
+ /* Translate name of a service location and/or a service name to set of
+- socket addresses. */
++ socket addresses.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int getaddrinfo (__const char *__restrict __name,
+ __const char *__restrict __service,
+ __const struct addrinfo *__restrict __req,
+- struct addrinfo **__restrict __pai) __THROW;
++ struct addrinfo **__restrict __pai);
+
+ /* Free `addrinfo' structure AI including associated storage. */
+ extern void freeaddrinfo (struct addrinfo *__ai) __THROW;
+@@ -467,33 +619,45 @@
+ /* Convert error return from getaddrinfo() to a string. */
+ extern __const char *gai_strerror (int __ecode) __THROW;
+
+-/* Translate a socket address to a location and service name. */
++/* Translate a socket address to a location and service name.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int getnameinfo (__const struct sockaddr *__restrict __sa,
+ socklen_t __salen, char *__restrict __host,
+ socklen_t __hostlen, char *__restrict __serv,
+- socklen_t __servlen, unsigned int __flags) __THROW;
++ socklen_t __servlen, unsigned int __flags);
++#endif /* POSIX */
+
+-# ifdef __USE_GNU
++#ifdef __USE_GNU
+ /* Enqueue ENT requests from the LIST. If MODE is GAI_WAIT wait until all
+ requests are handled. If WAIT is GAI_NOWAIT return immediately after
+- queueing the requests and signal completion according to SIG. */
++ queueing the requests and signal completion according to SIG.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr],
+- int __ent, struct sigevent *__restrict __sig)
+- __THROW;
++ int __ent, struct sigevent *__restrict __sig);
+
+ /* Suspend execution of the thread until at least one of the ENT requests
+ in LIST is handled. If TIMEOUT is not a null pointer it specifies the
+- longest time the function keeps waiting before returning with an error. */
++ longest time the function keeps waiting before returning with an error.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int gai_suspend (__const struct gaicb *__const __list[], int __ent,
+- __const struct timespec *__timeout) __THROW;
++ __const struct timespec *__timeout);
+
+ /* Get the error status of the request REQ. */
+ extern int gai_error (struct gaicb *__req) __THROW;
+
+ /* Cancel the requests associated with GAICBP. */
+ extern int gai_cancel (struct gaicb *__gaicbp) __THROW;
+-# endif /* GNU */
+-#endif /* POSIX */
++#endif /* GNU */
+
+ __END_DECLS
+
+--- glibc-2.3.2/resolv/res_hconf.c 2002-11-01 21:15:53.000000000 -0500
++++ glibc-2.3.2/resolv/res_hconf.c 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger (davidm@azstarnet.com).
+
+@@ -425,7 +425,7 @@
+ if (hconf_name == NULL)
+ hconf_name = _PATH_HOSTCONF;
+
+- fp = fopen (hconf_name, "r");
++ fp = fopen (hconf_name, "rc");
+ if (!fp)
+ /* make up something reasonable: */
+ _res_hconf.service[_res_hconf.num_services++] = SERVICE_BIND;
+--- glibc-2.3.2/resolv/res_init.c 2003-02-25 18:40:08.000000000 -0500
++++ glibc-2.3.2/resolv/res_init.c 2003-09-19 22:37:06.000000000 -0400
+@@ -86,6 +86,8 @@
+ #include <string.h>
+ #include <unistd.h>
+
++#include <not-cancel.h>
++
+ /* Options. Should all be left alone. */
+ #define RESOLVSORT
+ #define RFC1535
+@@ -231,7 +233,7 @@
+ (line[sizeof(name) - 1] == ' ' || \
+ line[sizeof(name) - 1] == '\t'))
+
+- if ((fp = fopen(_PATH_RESCONF, "r")) != NULL) {
++ if ((fp = fopen(_PATH_RESCONF, "rc")) != NULL) {
+ /* No threads use this stream. */
+ __fsetlocking (fp, FSETLOCKING_BYCALLER);
+ /* read the config file */
+@@ -541,7 +543,7 @@
+ int ns;
+
+ if (statp->_vcsock >= 0) {
+- (void) __close(statp->_vcsock);
++ close_not_cancel_no_status(statp->_vcsock);
+ statp->_vcsock = -1;
+ statp->_flags &= ~(RES_F_VC | RES_F_CONN);
+ }
+@@ -552,7 +554,7 @@
+ #endif
+ if (statp->_u._ext.nsaddrs[ns]
+ && statp->_u._ext.nssocks[ns] != -1) {
+- (void) __close(statp->_u._ext.nssocks[ns]);
++ close_not_cancel_no_status(statp->_u._ext.nssocks[ns]);
+ statp->_u._ext.nssocks[ns] = -1;
+ }
+ statp->_u._ext.nsinit = 0;
+--- glibc-2.3.2/resolv/res_libc.c 2003-02-27 04:14:31.000000000 -0500
++++ glibc-2.3.2/resolv/res_libc.c 2003-08-21 08:37:07.000000000 -0400
+@@ -68,27 +68,26 @@
+ /* This needs to be after the use of _res in res_init, above. */
+ #undef _res
+
+-#include <tls.h>
+-
+-#if USE___THREAD
+-/* With __thread support, this per-thread variable is used in all cases. */
+-__thread struct __res_state _res;
+-extern __thread struct __res_state __libc_res __attribute__ ((alias ("_res")))
+- attribute_hidden;
+-# define _res __libc_res
+-#else
+ /* The resolver state for use by single-threaded programs.
+ This differs from plain `struct __res_state _res;' in that it doesn't
+ create a common definition, but a plain symbol that resides in .bss,
+ which can have an alias. */
+ struct __res_state _res __attribute__((section (".bss")));
+
++#include <tls.h>
++
++#if USE___THREAD
++#undef __resp
++__thread struct __res_state *__resp = &_res;
++extern __thread struct __res_state *__libc_resp
++ __attribute__ ((alias ("__resp"))) attribute_hidden;
++#endif
++
+ /* We declare this with compat_symbol so that it's not
+ visible at link time. Programs must use the accessor functions. */
+-# if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
+-# include <shlib-compat.h>
++#if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
++# include <shlib-compat.h>
+ compat_symbol (libc, _res, _res, GLIBC_2_0);
+-# endif
+ #endif
+
+ #include <shlib-compat.h>
+--- glibc-2.3.2/resolv/res_send.c 2002-10-17 17:45:42.000000000 -0400
++++ glibc-2.3.2/resolv/res_send.c 2003-08-21 08:37:07.000000000 -0400
+@@ -108,63 +108,46 @@
+
+ /* From ev_streams.c. */
+
+-static inline struct iovec
+-evConsIovec(void *buf, size_t cnt) {
+- struct iovec ret;
+-
+- memset(&ret, 0xf5, sizeof ret);
+- ret.iov_base = buf;
+- ret.iov_len = cnt;
+- return (ret);
++static inline void
++__attribute ((always_inline))
++evConsIovec(void *buf, size_t cnt, struct iovec *vec) {
++ memset(vec, 0xf5, sizeof (*vec));
++ vec->iov_base = buf;
++ vec->iov_len = cnt;
+ }
+
+ /* From ev_timers.c. */
+
+ #define BILLION 1000000000
+
+-static inline struct timespec
+-evTimeSpec(struct timeval tv) {
+- struct timespec ts;
+-
+- ts.tv_sec = tv.tv_sec;
+- ts.tv_nsec = tv.tv_usec * 1000;
+- return (ts);
++static inline void
++evConsTime(struct timespec *res, time_t sec, long nsec) {
++ res->tv_sec = sec;
++ res->tv_nsec = nsec;
+ }
+
+-static inline struct timespec
+-evConsTime(time_t sec, long nsec) {
+- struct timespec x;
+-
+- x.tv_sec = sec;
+- x.tv_nsec = nsec;
+- return (x);
+-}
+-
+-static inline struct timespec
+-evAddTime(struct timespec addend1, struct timespec addend2) {
+- struct timespec x;
+-
+- x.tv_sec = addend1.tv_sec + addend2.tv_sec;
+- x.tv_nsec = addend1.tv_nsec + addend2.tv_nsec;
+- if (x.tv_nsec >= BILLION) {
+- x.tv_sec++;
+- x.tv_nsec -= BILLION;
++static inline void
++evAddTime(struct timespec *res, const struct timespec *addend1,
++ const struct timespec *addend2) {
++ res->tv_sec = addend1->tv_sec + addend2->tv_sec;
++ res->tv_nsec = addend1->tv_nsec + addend2->tv_nsec;
++ if (res->tv_nsec >= BILLION) {
++ res->tv_sec++;
++ res->tv_nsec -= BILLION;
+ }
+- return (x);
+ }
+
+-static inline struct timespec
+-evSubTime(struct timespec minuend, struct timespec subtrahend) {
+- struct timespec x;
+-
+- x.tv_sec = minuend.tv_sec - subtrahend.tv_sec;
+- if (minuend.tv_nsec >= subtrahend.tv_nsec)
+- x.tv_nsec = minuend.tv_nsec - subtrahend.tv_nsec;
++static inline void
++evSubTime(struct timespec *res, const struct timespec *minuend,
++ const struct timespec *subtrahend) {
++ res->tv_sec = minuend->tv_sec - subtrahend->tv_sec;
++ if (minuend->tv_nsec >= subtrahend->tv_nsec)
++ res->tv_nsec = minuend->tv_nsec - subtrahend->tv_nsec;
+ else {
+- x.tv_nsec = BILLION - subtrahend.tv_nsec + minuend.tv_nsec;
+- x.tv_sec--;
++ res->tv_nsec = (BILLION
++ - subtrahend->tv_nsec + minuend->tv_nsec);
++ res->tv_sec--;
+ }
+- return (x);
+ }
+
+ static inline int
+@@ -176,13 +159,14 @@
+ return (x < 0L ? (-1) : x > 0L ? (1) : (0));
+ }
+
+-static inline struct timespec
+-evNowTime() {
++static inline void
++evNowTime(struct timespec *res) {
+ struct timeval now;
+
+ if (gettimeofday(&now, NULL) < 0)
+- return (evConsTime(0, 0));
+- return (evTimeSpec(now));
++ evConsTime(res, 0, 0);
++ else
++ TIMEVAL_TO_TIMESPEC (&now, res);
+ }
+
+ #endif
+@@ -561,9 +545,11 @@
+ res_sendhookact act;
+
+ #ifdef _LIBC
+- act = (*statp->qhook)((struct sockaddr_in **)
+- &nsap, &buf, &buflen,
++ struct sockaddr_in *nsap4;
++ nsap4 = (struct sockaddr_in *) nsap;
++ act = (*statp->qhook)(&nsap4, &buf, &buflen,
+ ans, anssiz, &resplen);
++ nsap = (struct sockaddr_in6 *) nsap4;
+ #else
+ act = (*statp->qhook)(&nsap, &buf, &buflen,
+ ans, anssiz, &resplen);
+@@ -768,9 +754,10 @@
+ * Send length & message
+ */
+ putshort((u_short)buflen, (u_char*)&len);
+- iov[0] = evConsIovec(&len, INT16SZ);
+- iov[1] = evConsIovec((void*)buf, buflen);
+- if (writev(statp->_vcsock, iov, 2) != (INT16SZ + buflen)) {
++ evConsIovec(&len, INT16SZ, &iov[0]);
++ evConsIovec((void*)buf, buflen, &iov[1]);
++ if (TEMP_FAILURE_RETRY (writev(statp->_vcsock, iov, 2))
++ != (INT16SZ + buflen)) {
+ *terrno = errno;
+ Perror(statp, stderr, "write failed", errno);
+ res_nclose(statp);
+@@ -782,7 +769,8 @@
+ read_len:
+ cp = ans;
+ len = INT16SZ;
+- while ((n = read(statp->_vcsock, (char *)cp, (int)len)) > 0) {
++ while ((n = TEMP_FAILURE_RETRY (read(statp->_vcsock, (char *)cp,
++ (int)len))) > 0) {
+ cp += n;
+ if ((len -= n) <= 0)
+ break;
+@@ -998,9 +986,9 @@
+ seconds /= statp->nscount;
+ if (seconds <= 0)
+ seconds = 1;
+- now = evNowTime();
+- timeout = evConsTime(seconds, 0);
+- finish = evAddTime(now, timeout);
++ evNowTime(&now);
++ evConsTime(&timeout, seconds, 0);
++ evAddTime(&finish, &now, &timeout);
+ wait:
+ #ifdef _LIBC
+ /* Convert struct timespec in milliseconds. */
+@@ -1021,9 +1009,9 @@
+ }
+ if (n < 0) {
+ if (errno == EINTR) {
+- now = evNowTime();
++ evNowTime(&now);
+ if (evCmpTime(finish, now) > 0) {
+- timeout = evSubTime(finish, now);
++ evSubTime(&timeout, &finish, &now);
+ goto wait;
+ }
+ }
+@@ -1244,7 +1232,7 @@
+ if (sigmask)
+ sigprocmask(SIG_SETMASK, &sigs, NULL);
+ if (tsp)
+- *tsp = evTimeSpec(tv);
++ TIMEVAL_TO_TIMESPEC (tv, *tsp);
+ return (n);
+ }
+ #endif
+--- glibc-2.3.2/rt/Makefile 2003-01-05 04:48:59.000000000 -0500
++++ glibc-2.3.2/rt/Makefile 2003-08-21 08:37:07.000000000 -0400
+@@ -38,7 +38,7 @@
+ $(clock-routines) $(timer-routines) \
+ $(shm-routines)
+
+-tests := tst-shm tst-clock tst-timer \
++tests := tst-shm tst-clock tst-clock_nanosleep tst-timer tst-timer2 \
+ tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
+ tst-aio7
+
+@@ -49,6 +49,10 @@
+
+ include ../Rules
+
++CFLAGS-aio_suspend.c = -fexceptions
++CFLAGS-clock_nanosleep.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-librt-cancellation.c = -fasynchronous-unwind-tables
++
+ # Depend on libc.so so a DT_NEEDED is generated in the shared objects.
+ # This ensures they will load libc.so for needed symbols if loaded by
+ # a statically-linked program that hasn't already loaded it.
+--- glibc-2.3.2/rt/aio.h 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/rt/aio.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -161,9 +161,12 @@
+ extern int aio_cancel (int __fildes, struct aiocb *__aiocbp) __THROW;
+
+ /* Suspend calling thread until at least one of the asynchronous I/O
+- operations referenced by LIST has completed. */
++ operations referenced by LIST has completed.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int aio_suspend (__const struct aiocb *__const __list[], int __nent,
+- __const struct timespec *__restrict __timeout) __THROW;
++ __const struct timespec *__restrict __timeout);
+
+ /* Force all operations associated with file desriptor described by
+ `aio_fildes' member of AIOCBP. */
+--- glibc-2.3.2/rt/tst-aio7.c 2002-09-30 18:02:39.000000000 -0400
++++ glibc-2.3.2/rt/tst-aio7.c 2003-03-15 15:02:14.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Test for AIO POSIX compliance.
+- Copyright (C) 2001,02 Free Software Foundation, Inc.
++ Copyright (C) 2001,02, 03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -117,12 +117,13 @@
+
+ /* Test for aio_suspend() suspending even if completed elements in list. */
+ {
+- const int BYTES = 8, ELEMS = 2;
++#define BYTES 8
++ const int ELEMS = 2;
+ int i, r, fd;
+- char buff[BYTES];
++ static char buff[BYTES];
+ char name[] = "/tmp/aio7.XXXXXX";
+ struct timespec timeout;
+- struct aiocb cb0, cb1;
++ static struct aiocb cb0, cb1;
+ struct aiocb *list[ELEMS];
+
+ fd = mkstemp (name);
+@@ -180,6 +181,9 @@
+ puts ("aio_suspend([done,blocked],2,3) suspended thread");
+ ++result;
+ }
++
++ /* Note that CB1 is still pending, and so cannot be an auto variable.
++ Thus we also test that exiting with an outstanding request works. */
+ }
+
+ return result;
+--- glibc-2.3.2/rt/tst-clock_nanosleep.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/rt/tst-clock_nanosleep.c 2003-05-17 13:37:34.000000000 -0400
+@@ -0,0 +1,58 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include <time.h>
++
++
++/* Test that clock_nanosleep() does sleep. */
++static int
++do_test (void)
++{
++ /* Current time. */
++ struct timeval tv1;
++ (void) gettimeofday (&tv1, NULL);
++
++ struct timespec ts;
++ ts.tv_sec = 1;
++ ts.tv_nsec = 0;
++ TEMP_FAILURE_RETRY (clock_nanosleep (CLOCK_REALTIME, 0, &ts, &ts));
++
++ /* At least one second must have passed. */
++ struct timeval tv2;
++ (void) gettimeofday (&tv2, NULL);
++
++ tv2.tv_sec -= tv1.tv_sec;
++ tv2.tv_usec -= tv1.tv_usec;
++ if (tv2.tv_usec < 0)
++ --tv2.tv_sec;
++
++ if (tv2.tv_sec < 1)
++ {
++ puts ("clock_nanosleep didn't sleep long enough");
++ return 1;
++ }
++
++ return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/rt/tst-timer2.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/rt/tst-timer2.c 2003-07-29 05:31:49.000000000 -0400
+@@ -0,0 +1,62 @@
++/* Test for crashing bugs when trying to create too many timers. */
++
++#include <stdio.h>
++#include <time.h>
++#include <signal.h>
++#include <sys/time.h>
++#include <sys/resource.h>
++#include <unistd.h>
++
++#if _POSIX_THREADS
++# include <pthread.h>
++
++void
++thread (union sigval arg)
++{
++ puts ("Timeout");
++}
++
++int
++do_test (void)
++{
++ int i, res;
++ timer_t timerId;
++ struct itimerspec itval;
++ struct sigevent sigev;
++
++ itval.it_interval.tv_sec = 2;
++ itval.it_interval.tv_nsec = 0;
++ itval.it_value.tv_sec = 2;
++ itval.it_value.tv_nsec = 0;
++
++ sigev.sigev_notify = SIGEV_THREAD;
++ sigev.sigev_signo = SIGRTMIN;
++ sigev.sigev_notify_function = thread;
++ sigev.sigev_notify_attributes = 0;
++ sigev.sigev_value.sival_ptr = (void *) &timerId;
++
++ for (i = 0; i < 100; i++)
++ {
++ printf ("cnt = %d\n", i);
++
++ if (timer_create (CLOCK_REALTIME, &sigev, &timerId) < 0)
++ perror ("timer_create");
++
++ res = timer_settime (timerId, 0, &itval, NULL);
++ if (res < 0)
++ perror ("timer_settime");
++
++ res = timer_delete (timerId);
++ if (res < 0)
++ perror ("timer_delete");
++ }
++
++ return 0;
++}
++
++# define TEST_FUNCTION do_test ()
++#else
++# define TEST_FUNCTION 0
++#endif
++
++#include "../test-skeleton.c"
+--- glibc-2.3.2/scripts/abilist.awk 2002-12-23 14:11:45.000000000 -0500
++++ glibc-2.3.2/scripts/abilist.awk 2003-04-12 11:39:44.000000000 -0400
+@@ -1,6 +1,33 @@
+ # This awk script processes the output of objdump --dynamic-syms
+ # into a simple format that should not change when the ABI is not changing.
+
++BEGIN {
++ if (combine_fullname)
++ combine = 1;
++ if (combine)
++ parse_names = 1;
++}
++
++# Per-file header.
++/[^ :]+\.so\.[0-9.]+:[ ]+.file format .*$/ {
++ emit(0);
++
++ seen_opd = 0;
++
++ sofullname = $1;
++ sub(/:$/, "", sofullname);
++ soname = sofullname;
++ sub(/^.*\//, "", soname);
++ sub(/\.so\.[0-9.]+$/, "", soname);
++
++ suppress = ((filename_regexp != "" && sofullname !~ filename_regexp) \
++ || (libname_regexp != "" && soname !~ libname_regexp));
++
++ next
++}
++
++suppress { next }
++
+ # Normalize columns.
+ /^[0-9a-fA-F]+ / { sub(/ /, " - ") }
+
+@@ -22,14 +49,18 @@
+
+ if (version == "GLIBC_PRIVATE") next;
+
++ desc = "";
+ if (type == "D" && $4 == ".tbss") {
+ type = "T";
+ }
+ else if (type == "D" && $4 == ".opd") {
+- type = "O";
++ type = "F";
+ size = "";
++ if (seen_opd < 0)
++ type = "O";
++ seen_opd = 1;
+ }
+- else if (type == "DO" && $4 == "*ABS*") {
++ else if ($4 == "*ABS*") {
+ type = "A";
+ size = "";
+ }
+@@ -37,15 +68,26 @@
+ type = "D";
+ }
+ else if (type == "DF") {
++ if (symbol ~ /^\./ && seen_opd >= 0)
++ next;
++ seen_opd = -1;
+ type = "F";
+ size = "";
+ }
+ else {
+- print symbol, version, weak, "?", type, $4, $5;
+- next;
++ desc = symbol " " version " " weak " ? " type " " $4 " " $5;
++ }
++ if (size == " 0x") {
++ desc = symbol " " version " " weak " ? " type " " $4 " " $5;
+ }
+
+- desc = " " symbol " " (weak == "w" ? tolower(type) : type) size;
++ # Disabled -- weakness should not matter to shared library ABIs any more.
++ #if (weak == "w") type = tolower(type);
++ if (desc == "")
++ desc = " " symbol " " type size;
++
++ if (combine)
++ version = soname " " version (combine_fullname ? " " sofullname : "");
+
+ if (version in versions) {
+ versions[version] = versions[version] "\n" desc;
+@@ -63,8 +105,12 @@
+ print "Don't grok this line:", $0
+ }
+
+-END {
+- nverlist = 0;
++function emit(end) {
++ if (!end && (combine || ! parse_names || soname == ""))
++ return;
++ tofile = parse_names && !combine;
++
++ nverslist = 0;
+ for (version in versions) {
+ if (nverslist == 0) {
+ verslist = version;
+@@ -92,13 +138,42 @@
+ ++nverslist;
+ }
+
++ if (tofile) {
++ out = prefix soname ".symlist";
++ if (soname in outfiles)
++ out = out "." ++outfiles[soname];
++ else
++ outfiles[soname] = 1;
++ printf "" > out;
++ }
++
+ split(verslist, order, "\n");
+ for (i = 1; i <= nverslist; ++i) {
+ version = order[i];
+
+- print version;
+- outpipe = "sort";
++ if (tofile) {
++ print version >> out;
++ close(out);
++ outpipe = "sort >> " out;
++ }
++ else {
++ if (combine)
++ print "";
++ print prefix version;
++ outpipe = "sort";
++ }
+ print versions[version] | outpipe;
+ close(outpipe);
++
++ delete versions[version];
+ }
++ for (version in versions)
++ delete versions[version];
++
++ if (tofile)
++ print "wrote", out, "for", sofullname;
++}
++
++END {
++ emit(1);
+ }
+--- glibc-2.3.2/scripts/check-c++-types.sh 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/scripts/check-c++-types.sh 2003-09-08 19:54:34.000000000 -0400
+@@ -0,0 +1,107 @@
++#! /bin/bash
++# Copyright (C) 2003 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# Lesser General Public License for more details.
++
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, write to the Free
++# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++# 02111-1307 USA.
++#
++# The list of data types has been created with
++# cat <<EOF |
++# #include <sys/types.h>
++# #include <unistd.h>
++# #include <sys/resource.h>
++# #include <sys/stat.h>
++# EOF
++# gcc -D_GNU_SOURCE -E - |
++# egrep '^typedef.*;$' |
++# sed 's/^typedef[[:space:]]*//;s/\([[:space:]]\{1,\}__attribute__.*\);/;/;s/.*[[:space:]]\([*]\|\)\(.*\);/\2/' |
++# egrep -v '^_' |
++# sort -u
++#
++data=$1
++shift
++cxx="$*"
++while read t; do
++ echo -n "$t:"
++ $cxx -S -xc++ -o - -D_GNU_SOURCE <(cat <<EOF
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/resource.h>
++#include <unistd.h>
++void foo ($t) { }
++EOF
++) |
++ sed 's/[[:space:]]*[.]globa\?l[[:space:]]*_Z3foo\([_[:alnum:]]*\).*/\1/p;d'
++done <<EOF |
++blkcnt64_t
++blkcnt_t
++blksize_t
++caddr_t
++clockid_t
++clock_t
++daddr_t
++dev_t
++fd_mask
++fsblkcnt64_t
++fsblkcnt_t
++fsfilcnt64_t
++fsfilcnt_t
++fsid_t
++gid_t
++id_t
++ino64_t
++ino_t
++int16_t
++int32_t
++int64_t
++int8_t
++intptr_t
++key_t
++loff_t
++mode_t
++nlink_t
++off64_t
++off_t
++pid_t
++pthread_key_t
++pthread_once_t
++pthread_spinlock_t
++pthread_t
++quad_t
++register_t
++rlim64_t
++rlim_t
++sigset_t
++size_t
++socklen_t
++ssize_t
++suseconds_t
++time_t
++u_char
++uid_t
++uint
++u_int
++u_int16_t
++u_int32_t
++u_int64_t
++u_int8_t
++ulong
++u_long
++u_quad_t
++useconds_t
++ushort
++u_short
++EOF
++diff -N -U0 $data -
+--- glibc-2.3.2/scripts/config.guess 2002-07-10 03:24:32.000000000 -0400
++++ glibc-2.3.2/scripts/config.guess 2003-08-21 08:37:07.000000000 -0400
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-timestamp='2002-07-03'
++timestamp='2003-06-06'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -98,30 +98,32 @@
+ # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+ # use `HOST_CC' if defined, but it is deprecated.
+
+-# This shell variable is my proudest work .. or something. --bje
++# Portable tmp directory creation inspired by the Autoconf team.
+
+-set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
+-(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
+- || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
+-dummy=$tmpdir/dummy ;
+-files="$dummy.c $dummy.o $dummy.rel $dummy" ;
+-trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
++set_cc_for_build='
++trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
++trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
++: ${TMPDIR=/tmp} ;
++ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
++ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
++ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
++dummy=$tmp/dummy ;
++tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+ case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+- if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then
++ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+- rm -f $files ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+-esac ;
+-unset files'
++esac ;'
+
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi@noc.rutgers.edu 1994-08-24)
+@@ -178,7 +180,18 @@
+ ;;
+ esac
+ # The OS release
+- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
++ # Debian GNU/NetBSD machines have a different userland, and
++ # thus, need a distinct triplet. However, they do not need
++ # kernel version information, so it can be replaced with a
++ # suitable tag, in the style of linux-gnu.
++ case "${UNAME_VERSION}" in
++ Debian*)
++ release='-gnu'
++ ;;
++ *)
++ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
++ ;;
++ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+@@ -227,63 +240,47 @@
+ if test $UNAME_RELEASE = "V4.0"; then
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ fi
++ # According to Compaq, /usr/sbin/psrinfo has been available on
++ # OSF/1 and Tru64 systems produced since 1995. I hope that
++ # covers most systems running today. This code pipes the CPU
++ # types through head -n 1, so we only detect the type of CPU 0.
++ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
++ case "$ALPHA_CPU_TYPE" in
++ "EV4 (21064)")
++ UNAME_MACHINE="alpha" ;;
++ "EV4.5 (21064)")
++ UNAME_MACHINE="alpha" ;;
++ "LCA4 (21066/21068)")
++ UNAME_MACHINE="alpha" ;;
++ "EV5 (21164)")
++ UNAME_MACHINE="alphaev5" ;;
++ "EV5.6 (21164A)")
++ UNAME_MACHINE="alphaev56" ;;
++ "EV5.6 (21164PC)")
++ UNAME_MACHINE="alphapca56" ;;
++ "EV5.7 (21164PC)")
++ UNAME_MACHINE="alphapca57" ;;
++ "EV6 (21264)")
++ UNAME_MACHINE="alphaev6" ;;
++ "EV6.7 (21264A)")
++ UNAME_MACHINE="alphaev67" ;;
++ "EV6.8CB (21264C)")
++ UNAME_MACHINE="alphaev68" ;;
++ "EV6.8AL (21264B)")
++ UNAME_MACHINE="alphaev68" ;;
++ "EV6.8CX (21264D)")
++ UNAME_MACHINE="alphaev68" ;;
++ "EV6.9A (21264/EV69A)")
++ UNAME_MACHINE="alphaev69" ;;
++ "EV7 (21364)")
++ UNAME_MACHINE="alphaev7" ;;
++ "EV7.9 (21364A)")
++ UNAME_MACHINE="alphaev79" ;;
++ esac
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+- cat <<EOF >$dummy.s
+- .data
+-\$Lformat:
+- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+-
+- .text
+- .globl main
+- .align 4
+- .ent main
+-main:
+- .frame \$30,16,\$26,0
+- ldgp \$29,0(\$27)
+- .prologue 1
+- .long 0x47e03d80 # implver \$0
+- lda \$2,-1
+- .long 0x47e20c21 # amask \$2,\$1
+- lda \$16,\$Lformat
+- mov \$0,\$17
+- not \$1,\$18
+- jsr \$26,printf
+- ldgp \$29,0(\$26)
+- mov 0,\$16
+- jsr \$26,exit
+- .end main
+-EOF
+- eval $set_cc_for_build
+- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+- if test "$?" = 0 ; then
+- case `$dummy` in
+- 0-0)
+- UNAME_MACHINE="alpha"
+- ;;
+- 1-0)
+- UNAME_MACHINE="alphaev5"
+- ;;
+- 1-1)
+- UNAME_MACHINE="alphaev56"
+- ;;
+- 1-101)
+- UNAME_MACHINE="alphapca56"
+- ;;
+- 2-303)
+- UNAME_MACHINE="alphaev6"
+- ;;
+- 2-307)
+- UNAME_MACHINE="alphaev67"
+- ;;
+- 2-1307)
+- UNAME_MACHINE="alphaev68"
+- ;;
+- esac
+- fi
+- rm -f $dummy.s $dummy && dir $tmpdir
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ Alpha\ *:Windows_NT*:*)
+@@ -324,7 +321,10 @@
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
+- DSR?6000:UNIX_SV:4.2*:7*)
++ DRS?6000:unix:4.0:6*)
++ echo sparc-icl-nx6
++ exit 0 ;;
++ DRS?6000:UNIX_SV:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7 && exit 0 ;;
+ esac ;;
+@@ -434,16 +434,18 @@
+ exit (-1);
+ }
+ EOF
+- $CC_FOR_BUILD $dummy.c -o $dummy \
++ $CC_FOR_BUILD -o $dummy $dummy.c \
+ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+- && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+- rm -f $dummy.c $dummy && rmdir $tmpdir
++ && exit 0
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit 0 ;;
+- Night_Hawk:*:*:PowerMAX_OS)
++ Motorola:*:4.3:PL8-*)
++ echo powerpc-harris-powermax
++ exit 0 ;;
++ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+@@ -518,8 +520,7 @@
+ exit(0);
+ }
+ EOF
+- $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+- rm -f $dummy.c $dummy && rmdir $tmpdir
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+@@ -617,11 +618,21 @@
+ exit (0);
+ }
+ EOF
+- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy`
+- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+- rm -f $dummy.c $dummy && rmdir $tmpdir
++ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
++ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
++ if [ ${HP_ARCH} = "hppa2.0w" ]
++ then
++ # avoid double evaluation of $set_cc_for_build
++ test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
++ then
++ HP_ARCH="hppa2.0w"
++ else
++ HP_ARCH="hppa64"
++ fi
++ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
+ ia64:HP-UX:*:*)
+@@ -655,8 +666,7 @@
+ exit (0);
+ }
+ EOF
+- $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+- rm -f $dummy.c $dummy && rmdir $tmpdir
++ $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+@@ -714,15 +724,15 @@
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+- CRAY*T3D:*:*:*)
+- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+- exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
++ *:UNICOS/mp:*:*)
++ echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit 0 ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+@@ -738,7 +748,7 @@
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+- *:FreeBSD:*:*)
++ *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
+ # Determine whether the default compiler uses glibc.
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+@@ -750,7 +760,6 @@
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+- rm -f $dummy.c && rmdir $tmpdir
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+ exit 0 ;;
+ i*:CYGWIN*:*)
+@@ -762,14 +771,17 @@
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit 0 ;;
+- x86:Interix*:3*)
+- echo i386-pc-interix3
++ x86:Interix*:[34]*)
++ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
++ exit 0 ;;
++ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
++ echo i${UNAME_MACHINE}-pc-mks
+ exit 0 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+- echo i386-pc-interix
++ echo i586-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+@@ -789,6 +801,9 @@
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
++ cris:Linux:*:*)
++ echo cris-axis-linux-gnu
++ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+@@ -812,8 +827,26 @@
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+- rm -f $dummy.c && rmdir $tmpdir
+- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
++ ;;
++ mips64:Linux:*:*)
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #undef CPU
++ #undef mips64
++ #undef mips64el
++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
++ CPU=mips64el
++ #else
++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
++ CPU=mips64
++ #else
++ CPU=
++ #endif
++ #endif
++EOF
++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
++ test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+@@ -875,7 +908,7 @@
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+- exit 0 ;;
++ exit 0 ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0 ;;
+@@ -908,7 +941,6 @@
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+- rm -f $dummy.c && rmdir $tmpdir
+ test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
+@@ -926,6 +958,23 @@
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit 0 ;;
++ i*86:OS/2:*:*)
++ # If we were able to find `uname', then EMX Unix compatibility
++ # is probably installed.
++ echo ${UNAME_MACHINE}-pc-os2-emx
++ exit 0 ;;
++ i*86:XTS-300:*:STOP)
++ echo ${UNAME_MACHINE}-unknown-stop
++ exit 0 ;;
++ i*86:atheos:*:*)
++ echo ${UNAME_MACHINE}-unknown-atheos
++ exit 0 ;;
++ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
++ echo i386-unknown-lynxos${UNAME_RELEASE}
++ exit 0 ;;
++ i*86:*DOS:*:*)
++ echo ${UNAME_MACHINE}-pc-msdosdjgpp
++ exit 0 ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+@@ -960,9 +1009,6 @@
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit 0 ;;
+- i*86:*DOS:*:*)
+- echo ${UNAME_MACHINE}-pc-msdosdjgpp
+- exit 0 ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+@@ -986,9 +1032,15 @@
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit 0 ;;
++ mc68k:UNIX:SYSTEM5:3.51m)
++ echo m68k-convergent-sysv
++ exit 0 ;;
++ M680?0:D-NIX:5.3:*)
++ echo m68k-diab-dnix
++ exit 0 ;;
+ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
++ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+@@ -1005,9 +1057,6 @@
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+- echo i386-unknown-lynxos${UNAME_RELEASE}
+- exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+@@ -1079,6 +1128,9 @@
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
++ SX-6:SUPER-UX:*:*)
++ echo sx6-nec-superux${UNAME_RELEASE}
++ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+@@ -1086,7 +1138,11 @@
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+- echo `uname -p`-apple-darwin${UNAME_RELEASE}
++ case `uname -p` in
++ *86) UNAME_PROCESSOR=i686 ;;
++ powerpc) UNAME_PROCESSOR=powerpc ;;
++ esac
++ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+@@ -1099,7 +1155,7 @@
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+- NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
++ NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ *:NonStop-UX:*:*)
+@@ -1122,11 +1178,6 @@
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit 0 ;;
+- i*86:OS/2:*:*)
+- # If we were able to find `uname', then EMX Unix compatibility
+- # is probably installed.
+- echo ${UNAME_MACHINE}-pc-os2-emx
+- exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+@@ -1145,12 +1196,6 @@
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
+- i*86:XTS-300:*:STOP)
+- echo ${UNAME_MACHINE}-unknown-stop
+- exit 0 ;;
+- i*86:atheos:*:*)
+- echo ${UNAME_MACHINE}-unknown-atheos
+- exit 0 ;;
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1271,8 +1316,7 @@
+ }
+ EOF
+
+-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+-rm -f $dummy.c $dummy && rmdir $tmpdir
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+ # Apollos put the system type in the environment.
+
+--- glibc-2.3.2/scripts/config.sub 2002-07-10 03:24:32.000000000 -0400
++++ glibc-2.3.2/scripts/config.sub 2003-08-21 08:37:07.000000000 -0400
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+-timestamp='2002-07-03'
++timestamp='2003-06-06'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -118,7 +118,7 @@
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+- nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
++ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+@@ -229,7 +229,7 @@
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+- | c4x | clipper \
++ | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+@@ -239,21 +239,25 @@
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
++ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mipsisa32 | mipsisa32el \
++ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64sb1 | mipsisa64sb1el \
++ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
++ | msp430 \
+ | ns16k | ns32k \
+ | openrisc | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+- | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
++ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+ | strongarm \
+@@ -292,7 +296,7 @@
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+- | c[123]* | c30-* | [cjt]90-* | c54x-* \
++ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+@@ -307,25 +311,31 @@
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
++ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mipsisa32-* | mipsisa32el-* \
++ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+- | mipstx39 | mipstx39el \
+- | none-* | np1-* | ns16k-* | ns32k-* \
++ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
++ | mipstx39-* | mipstx39el-* \
++ | msp430-* \
++ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+- | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
++ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+- | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
++ | tahoe-* | thumb-* \
++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
++ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+@@ -363,6 +373,9 @@
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
++ amd64)
++ basic_machine=x86_64-pc
++ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+@@ -712,6 +725,10 @@
+ np1)
+ basic_machine=np1-gould
+ ;;
++ nv1)
++ basic_machine=nv1-cray
++ os=-unicosmp
++ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+@@ -745,49 +762,55 @@
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+- pc532 | pc532-*)
++ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+- pentiumpro | p6 | 6x86 | athlon)
++ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+- pentiumii | pentium2)
++ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
++ pentium4)
++ basic_machine=i786-pc
++ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+- pentiumii-* | pentium2-*)
++ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
++ pentium4-*)
++ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+- ;;
++ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+- ;;
++ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+- ;;
++ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+- ;;
++ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+@@ -818,6 +841,12 @@
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
++ sb1)
++ basic_machine=mipsisa64sb1-unknown
++ ;;
++ sb1el)
++ basic_machine=mipsisa64sb1el-unknown
++ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+@@ -883,7 +912,7 @@
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+- sv1)
++ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+@@ -891,10 +920,6 @@
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+- t3d)
+- basic_machine=alpha-cray
+- os=-unicos
+- ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+@@ -903,10 +928,22 @@
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
++ tic4x | c4x*)
++ basic_machine=tic4x-unknown
++ os=-coff
++ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
++ tic55x | c55x*)
++ basic_machine=tic55x-unknown
++ os=-coff
++ ;;
++ tic6x | c6x*)
++ basic_machine=tic6x-unknown
++ os=-coff
++ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+@@ -941,8 +978,8 @@
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+- basic_machine=f301-fujitsu
+- ;;
++ basic_machine=f301-fujitsu
++ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+@@ -963,11 +1000,7 @@
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+- windows32)
+- basic_machine=i386-pc
+- os=-windows32-msvcrt
+- ;;
+- xps | xps100)
++ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+@@ -1013,7 +1046,7 @@
+ we32k)
+ basic_machine=we32k-att
+ ;;
+- sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
++ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sh64)
+@@ -1022,7 +1055,7 @@
+ sparc | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+- cydra)
++ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+@@ -1037,10 +1070,6 @@
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+- c4x*)
+- basic_machine=c4x-none
+- os=-coff
+- ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+@@ -1103,11 +1132,12 @@
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
++ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
++ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
++ | -powermax* | -dnix* | -nx6 | -nx7)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+@@ -1119,8 +1149,10 @@
+ ;;
+ esac
+ ;;
++ -nto-qnx*)
++ ;;
+ -nto*)
+- os=-nto-qnx
++ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+@@ -1172,7 +1204,7 @@
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+- os=-nextstep2
++ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+@@ -1211,8 +1243,14 @@
+ -xenix)
+ os=-xenix
+ ;;
+- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+- os=-mint
++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
++ os=-mint
++ ;;
++ -aros*)
++ os=-aros
++ ;;
++ -kaos*)
++ os=-kaos
+ ;;
+ -none)
+ ;;
+@@ -1249,7 +1287,7 @@
+ pdp10-*)
+ os=-tops20
+ ;;
+- pdp11-*)
++ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+@@ -1342,19 +1380,19 @@
+ *-next)
+ os=-nextstep3
+ ;;
+- *-gould)
++ *-gould)
+ os=-sysv
+ ;;
+- *-highlevel)
++ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+- *-sgi)
++ *-sgi)
+ os=-irix
+ ;;
+- *-siemens)
++ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+--- glibc-2.3.2/scripts/data/c++-types-i386-linux-gnu.data 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/scripts/data/c++-types-i386-linux-gnu.data 2003-09-08 19:52:22.000000000 -0400
+@@ -0,0 +1,58 @@
++blkcnt64_t:x
++blkcnt_t:l
++blksize_t:l
++caddr_t:Pc
++clockid_t:i
++clock_t:l
++daddr_t:i
++dev_t:y
++fd_mask:l
++fsblkcnt64_t:y
++fsblkcnt_t:m
++fsfilcnt64_t:y
++fsfilcnt_t:m
++fsid_t:8__fsid_t
++gid_t:j
++id_t:j
++ino64_t:y
++ino_t:m
++int16_t:s
++int32_t:i
++int64_t:x
++int8_t:a
++intptr_t:i
++key_t:i
++loff_t:x
++mode_t:j
++nlink_t:j
++off64_t:x
++off_t:l
++pid_t:i
++pthread_key_t:j
++pthread_once_t:i
++pthread_spinlock_t:i
++pthread_t:m
++quad_t:x
++register_t:i
++rlim64_t:y
++rlim_t:m
++sigset_t:10__sigset_t
++size_t:j
++socklen_t:j
++ssize_t:i
++suseconds_t:l
++time_t:l
++u_char:h
++uid_t:j
++uint:j
++u_int:j
++u_int16_t:t
++u_int32_t:j
++u_int64_t:y
++u_int8_t:h
++ulong:m
++u_long:m
++u_quad_t:y
++useconds_t:j
++ushort:t
++u_short:t
+--- glibc-2.3.2/scripts/data/c++-types-x86_64-linux-gnu.data 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/scripts/data/c++-types-x86_64-linux-gnu.data 2003-09-08 22:37:02.000000000 -0400
+@@ -0,0 +1,58 @@
++blkcnt64_t:l
++blkcnt_t:l
++blksize_t:l
++caddr_t:Pc
++clockid_t:i
++clock_t:l
++daddr_t:i
++dev_t:m
++fd_mask:l
++fsblkcnt64_t:m
++fsblkcnt_t:m
++fsfilcnt64_t:m
++fsfilcnt_t:m
++fsid_t:8__fsid_t
++gid_t:j
++id_t:j
++ino64_t:m
++ino_t:m
++int16_t:s
++int32_t:i
++int64_t:l
++int8_t:a
++intptr_t:l
++key_t:i
++loff_t:l
++mode_t:j
++nlink_t:m
++off64_t:l
++off_t:l
++pid_t:i
++pthread_key_t:j
++pthread_once_t:i
++pthread_spinlock_t:i
++pthread_t:m
++quad_t:l
++register_t:l
++rlim64_t:m
++rlim_t:m
++sigset_t:10__sigset_t
++size_t:m
++socklen_t:j
++ssize_t:l
++suseconds_t:l
++time_t:l
++u_char:h
++uid_t:j
++uint:j
++u_int:j
++u_int16_t:t
++u_int32_t:j
++u_int64_t:m
++u_int8_t:h
++ulong:m
++u_long:m
++u_quad_t:m
++useconds_t:j
++ushort:t
++u_short:t
+--- glibc-2.3.2/scripts/merge-abilist.awk 2003-01-16 12:28:31.000000000 -0500
++++ glibc-2.3.2/scripts/merge-abilist.awk 2003-03-15 15:02:14.000000000 -0500
+@@ -12,9 +12,11 @@
+ # function F
+ # variable D 0x4
+
++BEGIN { current = "UNSET" }
++
+ /^[^| ]/ {
+ if (NF < 2 && config == "") {
+- print "BAD LINE:", $0 > "/dev/stderr";
++ print FILENAME ":" FNR ": BAD SET LINE:", $0 > "/dev/stderr";
+ exit 2;
+ }
+
+@@ -44,8 +46,8 @@
+ }
+
+ /^\| / {
+- if (NF < 3) {
+- print "BAD LINE:", $0 > "/dev/stderr";
++ if (NF < 3 || current == "UNSET") {
++ print FILENAME ":" FNR ": BAD | LINE:", $0 > "/dev/stderr";
+ exit 2;
+ }
+
+@@ -61,12 +63,20 @@
+
+ {
+ if (current == "") next;
++ if (current == "UNSET") {
++ print FILENAME ":" FNR ": IGNORED LINE:", $0 > "/dev/stderr";
++ next;
++ }
+
+ ns = split(seen[$0], s, ",");
+ nc = split(current, c, ",");
+ for (i = 1; i <= nc; ++i) {
++ if (c[i] == "")
++ continue;
+ # Sorted insert.
+ for (j = 1; j <= ns; ++j) {
++ if (c[i] == s[j])
++ break;
+ if (c[i] < s[j]) {
+ for (k = ns; k >= j; --k)
+ s[k + 1] = s[k];
+@@ -75,7 +85,7 @@
+ break;
+ }
+ }
+- if (j >= ns)
++ if (j > ns)
+ s[++ns] = c[i];
+ }
+
+@@ -97,7 +107,9 @@
+ ns = split("", s);
+ for (configs in stanzas) {
+ # Sorted insert.
+- for (j = 1; j <= ns; ++j)
++ for (j = 1; j <= ns; ++j) {
++ if (configs == s[j])
++ break;
+ if (configs < s[j]) {
+ for (k = ns; k >= j; --k)
+ s[k + 1] = s[k];
+@@ -105,7 +117,8 @@
+ ++ns;
+ break;
+ }
+- if (j >= ns)
++ }
++ if (j > ns)
+ s[++ns] = configs;
+ }
+
+@@ -118,15 +131,22 @@
+ # S[I] is a sorted, comma-separated list of SET:CONFIG pairs.
+ # All we have to do is pretty-print them.
+ nc = split(s[i], c, ",");
+- lastvers = "";
++ lastvers = lastconf = "";
+ for (j = 1; j <= nc; ++j) {
+ split(c[j], temp, ":");
+ version = temp[1];
+ conf = temp[2];
+ if (version != lastvers)
+ printf "%s%s", (lastvers != "" ? "\n| " : ""), version;
++ # Hack: if CONF is foo.*/bar and LASTCONF was foo.*,
++ # then we can omit the foo.*/bar since foo.* matches already.
++ # Note we don't update LASTCONF, so foo.*/baz next time will match too.
++ else if ((slash = index(conf, ".*/")) > 0 && \
++ substr(conf, 1, slash + 2 - 1) == lastconf)
++ continue;
+ printf " %s", conf;
+ lastvers = version;
++ lastconf = conf;
+ }
+ print "";
+ outpipe = "sort";
+--- glibc-2.3.2/scripts/mkinstalldirs 1998-05-08 16:55:06.000000000 -0400
++++ glibc-2.3.2/scripts/mkinstalldirs 2002-11-16 08:56:18.000000000 -0500
+@@ -4,7 +4,7 @@
+ # Created: 1993-05-16
+ # Public domain
+
+-# $Id: mkinstalldirs,v 1.1 1998/05/08 20:55:06 drepper Exp $
++# $Id: mkinstalldirs,v 1.10 1996/05/03 07:37:52 friedman Exp $
+
+ errstatus=0
+
+--- glibc-2.3.2/scripts/rpm2dynsym.sh 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/scripts/rpm2dynsym.sh 2003-03-27 17:48:49.000000000 -0500
+@@ -0,0 +1,36 @@
++#!/bin/sh
++
++# This script takes rpm package files, finds *.so.N files in them,
++# and runs objdump --dynamic-syms on them. The arguments are rpm file
++# names. For each rpm, it creates an output file with the name
++# "NAME-VERSION-RELEASE.ARCH.dynsym", the variable parts being extracted
++# from the rpm's headers (not its file name). Each file contains the
++# collected objdump output for all the *.so.N files in the corresponding rpm.
++# This can be processed with abilist.awk or sent to someone who will do that.
++# This does not do a lot of error-checking, so you should always watch stderr
++# and sanity-check the resulting output files.
++
++RPM=${RPM:-rpm}
++RPM2CPIO=${RPM2CPIO:-rpm2cpio}
++CPIO=${CPIO:-cpio}
++OBJDUMP=${OBJDUMP:-objdump}
++
++unpackdir=/tmp/rpm2dynsym$$
++trap 'rm -rf $unpackdir' 0 1 2 15
++
++for rpm; do
++ name=`$RPM -qp $rpm --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n'`
++ mkdir $unpackdir || exit
++ $RPM2CPIO "$rpm" | {
++ cd $unpackdir
++ $CPIO -i -d --no-absolute-filenames -uv '*.so.*' '*.so' 2>&1 |
++ while read file b; do
++ test x"$b" = x || break
++ case "$file" in
++ *.so.[0-9]*) $OBJDUMP --dynamic-syms $file ;;
++ esac
++ done
++ } > $name.dynsym
++ echo wrote $name.dynsym for $rpm
++ rm -rf $unpackdir
++done
+--- glibc-2.3.2/shadow/Makefile 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/shadow/Makefile 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1996 Free Software Foundation, Inc.
++# Copyright (C) 1996, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -26,5 +26,12 @@
+ getspent_r getspnam_r sgetspent_r fgetspent_r \
+ lckpwdf
+
++CFLAGS-getspent_r.c = -fexceptions
++CFLAGS-getspent.c = -fexceptions
++CFLAGS-fgetspent.c = -fexceptions
++CFLAGS-fgetspent_r.c = -fexceptions
++CFLAGS-putspent.c = -fexceptions
++CFLAGS-getspnam.c = -fexceptions
++CFLAGS-getspnam_r.c = -fexceptions
+
+ include ../Rules
+--- glibc-2.3.2/shadow/shadow.h 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/shadow/shadow.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -54,46 +54,90 @@
+ };
+
+
+-/* Open database for reading. */
+-extern void setspent (void) __THROW;
++/* Open database for reading.
+
+-/* Close database. */
+-extern void endspent (void) __THROW;
+-
+-/* Get next entry from database, perhaps after opening the file. */
+-extern struct spwd *getspent (void) __THROW;
+-
+-/* Get shadow entry matching NAME. */
+-extern struct spwd *getspnam (__const char *__name) __THROW;
+-
+-/* Read shadow entry from STRING. */
+-extern struct spwd *sgetspent (__const char *__string) __THROW;
+-
+-/* Read next shadow entry from STREAM. */
+-extern struct spwd *fgetspent (FILE *__stream) __THROW;
+-
+-/* Write line containing shadow password entry to stream. */
+-extern int putspent (__const struct spwd *__p, FILE *__stream) __THROW;
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern void setspent (void);
++
++/* Close database.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern void endspent (void);
++
++/* Get next entry from database, perhaps after opening the file.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct spwd *getspent (void);
++
++/* Get shadow entry matching NAME.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct spwd *getspnam (__const char *__name);
++
++/* Read shadow entry from STRING.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct spwd *sgetspent (__const char *__string);
++
++/* Read next shadow entry from STREAM.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern struct spwd *fgetspent (FILE *__stream);
++
++/* Write line containing shadow password entry to stream.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int putspent (__const struct spwd *__p, FILE *__stream);
+
+
+ #ifdef __USE_MISC
+-/* Reentrant versions of some of the functions above. */
++/* Reentrant versions of some of the functions above.
++
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
+ extern int getspent_r (struct spwd *__result_buf, char *__buffer,
+- size_t __buflen, struct spwd **__result) __THROW;
++ size_t __buflen, struct spwd **__result);
+
+ extern int getspnam_r (__const char *__name, struct spwd *__result_buf,
+ char *__buffer, size_t __buflen,
+- struct spwd **__result)__THROW;
++ struct spwd **__result);
+
+ extern int sgetspent_r (__const char *__string, struct spwd *__result_buf,
+ char *__buffer, size_t __buflen,
+- struct spwd **__result) __THROW;
++ struct spwd **__result);
+
+ extern int fgetspent_r (FILE *__stream, struct spwd *__result_buf,
+ char *__buffer, size_t __buflen,
+- struct spwd **__result) __THROW;
++ struct spwd **__result);
+ #endif /* misc */
+
++
++/* The simple locking functionality provided here is not suitable for
++ multi-threaded applications. */
++
+ /* Protect password file against multi writers. */
+ extern int lckpwdf (void) __THROW;
+
+--- glibc-2.3.2/signal/Makefile 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/signal/Makefile 2003-08-21 08:37:07.000000000 -0400
+@@ -1,4 +1,5 @@
+-# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
++# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,2003
++# Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -37,9 +38,15 @@
+ allocrtsig sigtimedwait sigwaitinfo sigqueue \
+ sighold sigrelse sigignore sigset
+
+-tests := tst-signal
++tests := tst-signal tst-sigset tst-sigsimple
+
+ distribute := sigsetops.h testrtsig.h sigset-cvt-mask.h
+
+
+ include ../Rules
++
++CFLAGS-sigpause.c = -fexceptions
++CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables
+--- glibc-2.3.2/signal/sigaddset.c 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/signal/sigaddset.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1996, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,3 +32,4 @@
+
+ return __sigaddset (set, signo);
+ }
++libc_hidden_def (sigaddset)
+--- glibc-2.3.2/signal/sigdelset.c 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/signal/sigdelset.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1996, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,3 +32,4 @@
+
+ return __sigdelset (set, signo);
+ }
++libc_hidden_def (sigdelset)
+--- glibc-2.3.2/signal/sigfillset.c 2002-08-03 22:19:59.000000000 -0400
++++ glibc-2.3.2/signal/sigfillset.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,38 +0,0 @@
+-/* Copyright (C) 1991,96,97,2002 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-#include <string.h>
+-
+-/* Set all signals in SET. */
+-int
+-sigfillset (set)
+- sigset_t *set;
+-{
+- if (set == NULL)
+- {
+- __set_errno (EINVAL);
+- return -1;
+- }
+-
+- memset (set, 0xff, sizeof (sigset_t));
+-
+- return 0;
+-}
+-libc_hidden_def (sigfillset)
+--- glibc-2.3.2/signal/sighold.c 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/signal/sighold.c 2003-04-24 20:05:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Add SIG to the calling process' signal mask.
+- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -33,7 +33,7 @@
+ return -1;
+
+ /* Add the specified signal. */
+- if (__sigaddset (&set, sig) < 0)
++ if (sigaddset (&set, sig) < 0)
+ return -1;
+
+ /* Set the new mask. */
+--- glibc-2.3.2/signal/signal.h 2003-02-19 15:39:25.000000000 -0500
++++ glibc-2.3.2/signal/signal.h 2003-09-19 22:37:06.000000000 -0400
+@@ -134,7 +134,7 @@
+
+ #ifdef __USE_MISC
+ /* Print a message describing the meaning of the given signal number. */
+-extern void psignal (int __sig, __const char *__s) __THROW;
++extern void psignal (int __sig, __const char *__s);
+ #endif /* Use misc. */
+
+
+@@ -142,8 +142,11 @@
+ BSD definition defines the argument as a mask of the signal, while
+ the more modern interface in X/Open defines it as the signal
+ number. We go with the BSD version unless the user explicitly
+- selects the X/Open version. */
+-extern int __sigpause (int __sig_or_mask, int __is_sig) __THROW;
++ selects the X/Open version.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int __sigpause (int __sig_or_mask, int __is_sig);
+
+ #ifdef __USE_BSD
+ /* Set the mask of blocked signals to MASK,
+@@ -153,7 +156,7 @@
+ #else
+ # ifdef __USE_XOPEN
+ # ifdef __GNUC__
+-extern int sigpause (int __sig) __THROW __asm__ ("__xpg_sigpause");
++extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
+ # endif
+ /* Remove a signal from the signal mask and suspend the process. */
+ # define sigpause(sig) __sigpause ((sig), 1)
+@@ -242,8 +245,11 @@
+ sigset_t *__restrict __oset) __THROW;
+
+ /* Change the set of blocked signals to SET,
+- wait until a signal arrives, and restore the set of blocked signals. */
+-extern int sigsuspend (__const sigset_t *__set) __THROW;
++ wait until a signal arrives, and restore the set of blocked signals.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int sigsuspend (__const sigset_t *__set);
+
+ /* Get and/or set the action for signal SIG. */
+ extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
+@@ -253,21 +259,28 @@
+ extern int sigpending (sigset_t *__set) __THROW;
+
+
+-/* Select any of pending signals from SET or wait for any to arrive. */
+-extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+- __THROW;
++/* Select any of pending signals from SET or wait for any to arrive.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig);
+
+ # ifdef __USE_POSIX199309
+-/* Select any of pending signals from SET and place information in INFO. */
++/* Select any of pending signals from SET and place information in INFO.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int sigwaitinfo (__const sigset_t *__restrict __set,
+- siginfo_t *__restrict __info) __THROW;
++ siginfo_t *__restrict __info);
+
+ /* Select any of pending signals from SET and place information in INFO.
+- Wait the time specified by TIMEOUT if no signal is pending. */
++ Wait the time specified by TIMEOUT if no signal is pending.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int sigtimedwait (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info,
+- __const struct timespec *__restrict __timeout)
+- __THROW;
++ __const struct timespec *__restrict __timeout);
+
+ /* Send signal SIG to the process PID. Associate data in VAL with the
+ signal. */
+@@ -343,7 +356,7 @@
+
+ #endif /* use BSD or X/Open Unix. */
+
+-#ifdef __USE_UNIX98
++#ifdef __USE_XOPEN_EXTENDED
+ /* Simplified interface for signal management. */
+
+ /* Add SIG to the calling process' signal mask. */
+--- glibc-2.3.2/signal/sigrelse.c 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/signal/sigrelse.c 2003-04-24 20:05:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Remove SIG from the calling process' signal mask.
+- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -33,7 +33,7 @@
+ return -1;
+
+ /* Remove the specified signal. */
+- if (__sigdelset (&set, sig) < 0)
++ if (sigdelset (&set, sig) < 0)
+ return -1;
+
+ /* Set the new mask. */
+--- glibc-2.3.2/signal/tst-sigset.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/signal/tst-sigset.c 2003-04-01 01:49:23.000000000 -0500
+@@ -0,0 +1,43 @@
++/* Test sig*set functions. */
++
++#include <signal.h>
++#include <stdio.h>
++
++#define TEST_FUNCTION do_test ()
++static int
++do_test (void)
++{
++ int result = 0;
++ int sig = -1;
++
++#define TRY(call) \
++ if (call) \
++ { \
++ printf ("%s (sig = %d): %m\n", #call, sig); \
++ result = 1; \
++ } \
++ else
++
++
++ sigset_t set;
++ TRY (sigemptyset (&set) != 0);
++
++#ifdef SIGRTMAX
++ int max_sig = SIGRTMAX;
++#else
++ int max_sig = NSIG - 1;
++#endif
++
++ for (sig = 1; sig <= max_sig; ++sig)
++ {
++ TRY (sigismember (&set, sig) != 0);
++ TRY (sigaddset (&set, sig) != 0);
++ TRY (sigismember (&set, sig) == 0);
++ TRY (sigdelset (&set, sig) != 0);
++ TRY (sigismember (&set, sig) != 0);
++ }
++
++ return result;
++}
++
++#include "../test-skeleton.c"
+--- glibc-2.3.2/signal/tst-sigsimple.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/signal/tst-sigsimple.c 2003-04-17 19:29:08.000000000 -0400
+@@ -0,0 +1,57 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <signal.h>
++#include <stdio.h>
++#include <string.h>
++
++
++static int
++do_test (void)
++{
++ int result = 0;
++ int e;
++
++#define RUN(test) \
++ errno = 0; \
++ e = test; \
++ if (e != -1) \
++ { \
++ printf ("%s returned %d\n", #test, e); \
++ result = 1; \
++ } \
++ else if (errno != EINVAL) \
++ { \
++ printf ("%s didn't set errno to EINVAL (%s instead)\n", \
++ #test, strerror (errno)); \
++ result = 1; \
++ }
++
++ RUN (sighold (-1));
++ RUN (sighold (_NSIG + 100));
++
++ RUN (sigrelse (-1));
++ RUN (sigrelse (_NSIG + 100));
++
++ return result;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+--- glibc-2.3.2/socket/sys/socket.h 2001-07-07 15:21:17.000000000 -0400
++++ glibc-2.3.2/socket/sys/socket.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Declarations of socket constants, types, and functions.
+- Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
++ Copyright (C) 1991,92,1994-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -117,9 +117,11 @@
+ /* Open a connection on socket FD to peer at ADDR (which LEN bytes long).
+ For connectionless socket types, just set the default address to send to
+ and the only address from which to accept transmissions.
+- Return 0 on success, -1 for errors. */
+-extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
+- __THROW;
++ Return 0 on success, -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
+
+ /* Put the address of the peer connected to socket FD into *ADDR
+ (which is *LEN bytes long), and its actual length into *LEN. */
+@@ -127,39 +129,54 @@
+ socklen_t *__restrict __len) __THROW;
+
+
+-/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */
+-extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags)
+- __THROW;
++/* Send N bytes of BUF to socket FD. Returns the number sent or -1.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);
+
+ /* Read N bytes into BUF from socket FD.
+- Returns the number read or -1 for errors. */
+-extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags)
+- __THROW;
++ Returns the number read or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
+
+ /* Send N bytes of BUF on socket FD to peer at address ADDR (which is
+- ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */
++ ADDR_LEN bytes long). Returns the number sent, or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
+ int __flags, __CONST_SOCKADDR_ARG __addr,
+- socklen_t __addr_len) __THROW;
++ socklen_t __addr_len);
+
+ /* Read N bytes into BUF through socket FD.
+ If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
+ the sender, and store the actual size of the address in *ADDR_LEN.
+- Returns the number of bytes read or -1 for errors. */
+-extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
+- __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
+- __THROW;
++ Returns the number of bytes read or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
++ int __flags, __SOCKADDR_ARG __addr,
++ socklen_t *__restrict __addr_len);
+
+
+ /* Send a message described MESSAGE on socket FD.
+- Returns the number of bytes sent, or -1 for errors. */
+-extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, int __flags)
+- __THROW;
++ Returns the number of bytes sent, or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
++ int __flags);
+
+ /* Receive a message as described by MESSAGE from socket FD.
+- Returns the number of bytes read or -1 for errors. */
+-extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags)
+- __THROW;
++ Returns the number of bytes read or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
+
+
+ /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL
+@@ -185,10 +202,12 @@
+ When a connection arrives, open a new socket to communicate with it,
+ set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting
+ peer and *ADDR_LEN to the address's actual length, and return the
+- new socket's descriptor, or -1 for errors. */
++ new socket's descriptor, or -1 for errors.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int accept (int __fd, __SOCKADDR_ARG __addr,
+- socklen_t *__restrict __addr_len)
+- __THROW;
++ socklen_t *__restrict __addr_len);
+
+ /* Shut down all or part of the connection open on socket FD.
+ HOW determines what to shut down:
+--- glibc-2.3.2/soft-fp/soft-fp.h 2002-11-01 21:15:53.000000000 -0500
++++ glibc-2.3.2/soft-fp/soft-fp.h 2003-06-03 09:36:27.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Software floating-point emulation.
+- Copyright (C) 1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@cygnus.com),
+ Jakub Jelinek (jj@ultra.linux.cz),
+@@ -55,7 +55,7 @@
+ #define FP_EX_OVERFLOW 0
+ #endif
+ #ifndef FP_EX_UNDERFLOW
+-#define FP_EX_UNDERFLOW
++#define FP_EX_UNDERFLOW 0
+ #endif
+ #ifndef FP_EX_DIVZERO
+ #define FP_EX_DIVZERO 0
+@@ -74,7 +74,7 @@
+ #else
+ #define FP_DECL_EX int _fex = 0
+ #endif
+-
++
+ #ifndef FP_INIT_ROUNDMODE
+ #define FP_INIT_ROUNDMODE do {} while (0)
+ #endif
+@@ -94,7 +94,7 @@
+
+ #define FP_SET_EXCEPTION(ex) \
+ _fex |= (ex)
+-
++
+ #define FP_UNSET_EXCEPTION(ex) \
+ _fex &= ~(ex)
+
+--- glibc-2.3.2/stdio-common/Makefile 2003-01-30 14:26:54.000000000 -0500
++++ glibc-2.3.2/stdio-common/Makefile 2003-09-19 22:37:06.000000000 -0400
+@@ -38,11 +38,9 @@
+
+ install-others = $(inst_includedir)/bits/stdio_lim.h
+
+-generated = errlist-compat.c
+-
+ include ../Makeconfig
+
+-aux := errlist siglist
++aux := errlist siglist printf-parsemb printf-parsewc
+ distribute := _itoa.h _itowa.h _i18n_number.h \
+ printf-parse.h stdio_lim.h.in tst-unbputc.sh tst-printf.sh
+
+@@ -83,6 +81,13 @@
+ CFLAGS-scanf7.c = -Wno-format
+ CFLAGS-tst-printfsz.c = -Wno-format
+
++CFLAGS-tmpfile.c = -fexceptions
++CFLAGS-tmpfile64.c = -fexceptions
++CFLAGS-tempname.c = -fexceptions
++CFLAGS-psignal.c = -fexceptions
++CFLAGS-vprintf.c = -fexceptions
++CFLAGS-cuserid.c = -fexceptions
++
+ tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata
+ tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata
+ test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata
+--- glibc-2.3.2/stdio-common/_itoa.c 2002-03-12 14:27:44.000000000 -0500
++++ glibc-2.3.2/stdio-common/_itoa.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Internal function for converting integers to ASCII.
+- Copyright (C) 1994,1995,1996,1999,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1994, 1995, 1996, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund <tege@matematik.su.se>
+ and Ulrich Drepper <drepper@gnu.org>.
+@@ -81,41 +82,41 @@
+ const struct base_table_t _itoa_base_table[] attribute_hidden =
+ {
+ #if BITS_PER_MP_LIMB == 64
+- /* 2 */ {SEL1(0ul) 1, 1},
+- /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 1},
+- /* 4 */ {SEL1(0ul) 1, 2},
+- /* 5 */ {SEL1(0xcccccccccccccccdul) 0, 2},
+- /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 2},
+- /* 7 */ {SEL1(0x2492492492492493ul) 1, 3},
+- /* 8 */ {SEL1(0ul) 1, 3},
+- /* 9 */ {SEL1(0xe38e38e38e38e38ful) 0, 3},
+- /* 10 */ {SEL1(0xcccccccccccccccdul) 0, 3},
+- /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 1},
+- /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 3},
+- /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 2},
+- /* 14 */ {SEL1(0x2492492492492493ul) 1, 4},
+- /* 15 */ {SEL1(0x8888888888888889ul) 0, 3},
+- /* 16 */ {SEL1(0ul) 1, 4},
+- /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 4},
+- /* 18 */ {SEL1(0xe38e38e38e38e38ful) 0, 4},
+- /* 19 */ {SEL1(0xd79435e50d79435ful) 0, 4},
+- /* 20 */ {SEL1(0xcccccccccccccccdul) 0, 4},
+- /* 21 */ {SEL1(0x8618618618618619ul) 1, 5},
+- /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 2},
+- /* 23 */ {SEL1(0x642c8590b21642c9ul) 1, 5},
+- /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 4},
+- /* 25 */ {SEL1(0x47ae147ae147ae15ul) 1, 5},
+- /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 3},
+- /* 27 */ {SEL1(0x97b425ed097b425ful) 0, 4},
+- /* 28 */ {SEL1(0x2492492492492493ul) 1, 5},
+- /* 29 */ {SEL1(0x1a7b9611a7b9611bul) 1, 5},
+- /* 30 */ {SEL1(0x8888888888888889ul) 0, 4},
+- /* 31 */ {SEL1(0x0842108421084211ul) 1, 5},
+- /* 32 */ {SEL1(0ul) 1, 5},
+- /* 33 */ {SEL1(0x0f83e0f83e0f83e1ul) 0, 1},
+- /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 5},
+- /* 35 */ {SEL1(0xea0ea0ea0ea0ea0ful) 0, 5},
+- /* 36 */ {SEL1(0xe38e38e38e38e38ful) 0, 5}
++ /* 2 */ {SEL1(0ull) 1, 1},
++ /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 1},
++ /* 4 */ {SEL1(0ull) 1, 2},
++ /* 5 */ {SEL1(0xcccccccccccccccdull) 0, 2},
++ /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 2},
++ /* 7 */ {SEL1(0x2492492492492493ull) 1, 3},
++ /* 8 */ {SEL1(0ull) 1, 3},
++ /* 9 */ {SEL1(0xe38e38e38e38e38full) 0, 3},
++ /* 10 */ {SEL1(0xcccccccccccccccdull) 0, 3},
++ /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 1},
++ /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 3},
++ /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 2},
++ /* 14 */ {SEL1(0x2492492492492493ull) 1, 4},
++ /* 15 */ {SEL1(0x8888888888888889ull) 0, 3},
++ /* 16 */ {SEL1(0ull) 1, 4},
++ /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 4},
++ /* 18 */ {SEL1(0xe38e38e38e38e38full) 0, 4},
++ /* 19 */ {SEL1(0xd79435e50d79435full) 0, 4},
++ /* 20 */ {SEL1(0xcccccccccccccccdull) 0, 4},
++ /* 21 */ {SEL1(0x8618618618618619ull) 1, 5},
++ /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 2},
++ /* 23 */ {SEL1(0x642c8590b21642c9ull) 1, 5},
++ /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 4},
++ /* 25 */ {SEL1(0x47ae147ae147ae15ull) 1, 5},
++ /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 3},
++ /* 27 */ {SEL1(0x97b425ed097b425full) 0, 4},
++ /* 28 */ {SEL1(0x2492492492492493ull) 1, 5},
++ /* 29 */ {SEL1(0x1a7b9611a7b9611bull) 1, 5},
++ /* 30 */ {SEL1(0x8888888888888889ull) 0, 4},
++ /* 31 */ {SEL1(0x0842108421084211ull) 1, 5},
++ /* 32 */ {SEL1(0ull) 1, 5},
++ /* 33 */ {SEL1(0x0f83e0f83e0f83e1ull) 0, 1},
++ /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 5},
++ /* 35 */ {SEL1(0xea0ea0ea0ea0ea0full) 0, 5},
++ /* 36 */ {SEL1(0xe38e38e38e38e38full) 0, 5}
+ #endif
+ #if BITS_PER_MP_LIMB == 32
+ /* 2 */ {SEL1(0ul) 1, 1, {0, 31, 0x80000000ul SEL2(0xfffffffful)}},
+@@ -423,3 +424,23 @@
+
+ return buflim;
+ }
++
++char *
++_fitoa_word (unsigned long value, char *buf, unsigned int base, int upper_case)
++{
++ char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
++ char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case);
++ while (cp < tmpbuf + sizeof (value) * 4)
++ *buf++ = *cp++;
++ return buf;
++}
++
++char *
++_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case)
++{
++ char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
++ char *cp = _itoa (value, tmpbuf + sizeof (value) * 4, base, upper_case);
++ while (cp < tmpbuf + sizeof (value) * 4)
++ *buf++ = *cp++;
++ return buf;
++}
+--- glibc-2.3.2/stdio-common/_itoa.h 2002-04-08 14:37:21.000000000 -0400
++++ glibc-2.3.2/stdio-common/_itoa.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Internal function for converting integers to ASCII.
+- Copyright (C) 1994, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1994,95,96,97,98,99,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,7 +34,7 @@
+ extern const char _itoa_lower_digits[];
+ extern const char _itoa_lower_digits_internal[] attribute_hidden;
+
+-static inline char * __attribute__ ((unused))
++static inline char * __attribute__ ((unused, always_inline))
+ _itoa_word (unsigned long value, char *buflim,
+ unsigned int base, int upper_case)
+ {
+@@ -69,24 +69,11 @@
+ }
+ #undef SPECIAL
+
+-static inline char * __attribute__ ((unused))
+-_fitoa_word (unsigned long value, char *buf, unsigned int base, int upper_case)
+-{
+- char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
+- char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case);
+- while (cp < tmpbuf + sizeof (value) * 4)
+- *buf++ = *cp++;
+- return buf;
+-}
+-
+-static inline char * __attribute__ ((unused))
+-_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case)
+-{
+- char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */
+- char *cp = _itoa (value, tmpbuf + sizeof (value) * 4, base, upper_case);
+- while (cp < tmpbuf + sizeof (value) * 4)
+- *buf++ = *cp++;
+- return buf;
+-}
++/* Similar to the _itoa functions, but output starts at buf and pointer
++ after the last written character is returned. */
++extern char *_fitoa_word (unsigned long value, char *buf, unsigned int base,
++ int upper_case) attribute_hidden;
++extern char *_fitoa (unsigned long long value, char *buf, unsigned int base,
++ int upper_case) attribute_hidden;
+
+ #endif /* itoa.h */
+--- glibc-2.3.2/stdio-common/_itowa.h 2002-03-12 14:19:19.000000000 -0500
++++ glibc-2.3.2/stdio-common/_itowa.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Internal function for converting integers to ASCII.
+- Copyright (C) 1994, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1994,95,96,97,98,99,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,7 +31,7 @@
+ unsigned int base, int upper_case);
+
+ static inline wchar_t *
+-__attribute__ ((unused))
++__attribute__ ((unused, always_inline))
+ _itowa_word (unsigned long value, wchar_t *buflim,
+ unsigned int base, int upper_case)
+ {
+--- glibc-2.3.2/stdio-common/perror.c 2002-08-10 14:09:08.000000000 -0400
++++ glibc-2.3.2/stdio-common/perror.c 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1993,1997,1998,2000-2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1993,1997,1998,2000-2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -55,7 +55,6 @@
+ perror (const char *s)
+ {
+ int errnum = errno;
+-#ifdef USE_IN_LIBIO
+ FILE *fp;
+ int fd = -1;
+
+@@ -83,11 +82,6 @@
+ perror_internal (fp, s, errnum);
+ /* Close the stream. */
+ fclose (fp);
+-
+- ((_IO_FILE *) stderr)->_offset = _IO_pos_BAD;
+ }
+-#else
+- perror_internal (stderr, s, errnum);
+-#endif
+ }
+ libc_hidden_def (perror)
+--- glibc-2.3.2/stdio-common/printf-parse.h 2002-11-01 21:15:53.000000000 -0500
++++ glibc-2.3.2/stdio-common/printf-parse.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Internal header for parsing printf format strings.
+- Copyright (C) 1995-1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of th GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,15 +17,9 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <ctype.h>
+-#include <limits.h>
+ #include <printf.h>
+ #include <stdint.h>
+ #include <stddef.h>
+-#include <string.h>
+-
+-#define NDEBUG 1
+-#include <assert.h>
+
+
+ struct printf_spec
+@@ -51,17 +45,13 @@
+ /* The various kinds off arguments that can be passed to printf. */
+ union printf_arg
+ {
+- unsigned char pa_char;
+ wchar_t pa_wchar;
+- short int pa_short_int;
+ int pa_int;
+ long int pa_long_int;
+ long long int pa_long_long_int;
+- unsigned short int pa_u_short_int;
+ unsigned int pa_u_int;
+ unsigned long int pa_u_long_int;
+ unsigned long long int pa_u_long_long_int;
+- float pa_float;
+ double pa_double;
+ long double pa_long_double;
+ const char *pa_string;
+@@ -70,9 +60,10 @@
+ };
+
+
++#ifndef DONT_NEED_READ_INT
+ /* Read a simple integer from a string and update the string pointer.
+ It is assumed that the first character is a digit. */
+-static inline unsigned int
++static unsigned int
+ read_int (const UCHAR_T * *pstr)
+ {
+ unsigned int retval = **pstr - L_('0');
+@@ -85,35 +76,7 @@
+
+ return retval;
+ }
+-
+-
+-
+-/* Find the next spec in FORMAT, or the end of the string. Returns
+- a pointer into FORMAT, to a '%' or a '\0'. */
+-static inline const UCHAR_T *
+-#ifdef COMPILE_WPRINTF
+-find_spec (const UCHAR_T *format)
+-#else
+-find_spec (const UCHAR_T *format, mbstate_t *ps)
+-#endif
+-{
+-#ifdef COMPILE_WPRINTF
+- return (const UCHAR_T *) __wcschrnul ((const CHAR_T *) format, L'%');
+-#else
+- while (*format != L_('\0') && *format != L_('%'))
+- {
+- int len;
+-
+- /* Remove any hints of a wrong encoding. */
+- ps->__count = 0;
+- if (! isascii (*format) && (len = __mbrlen (format, MB_CUR_MAX, ps)) > 0)
+- format += len;
+- else
+- ++format;
+- }
+- return format;
+ #endif
+-}
+
+
+ /* These are defined in reg-printf.c. */
+@@ -121,334 +84,25 @@
+ extern printf_function **__printf_function_table attribute_hidden;
+
+
++/* Find the next spec in FORMAT, or the end of the string. Returns
++ a pointer into FORMAT, to a '%' or a '\0'. */
++extern const unsigned char *__find_specmb (const UCHAR_T *format,
++ mbstate_t *ps) attribute_hidden;
++
++extern const unsigned int *__find_specwc (const UCHAR_T *format)
++ attribute_hidden;
++
++
+ /* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC
+ with the parsed details. POSN is the number of arguments already
+ consumed. At most MAXTYPES - POSN types are filled in TYPES. Return
+ the number of args consumed by this spec; *MAX_REF_ARG is updated so it
+ remains the highest argument index used. */
+-static inline size_t
+-#ifdef COMPILE_WPRINTF
+-parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
+- size_t *max_ref_arg)
+-#else
+-parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec,
+- size_t *max_ref_arg, mbstate_t *ps)
+-#endif
+-{
+- unsigned int n;
+- size_t nargs = 0;
+-
+- /* Skip the '%'. */
+- ++format;
+-
+- /* Clear information structure. */
+- spec->data_arg = -1;
+- spec->info.alt = 0;
+- spec->info.space = 0;
+- spec->info.left = 0;
+- spec->info.showsign = 0;
+- spec->info.group = 0;
+- spec->info.i18n = 0;
+- spec->info.pad = ' ';
+- spec->info.wide = sizeof (UCHAR_T) > 1;
+-
+- /* Test for positional argument. */
+- if (ISDIGIT (*format))
+- {
+- const UCHAR_T *begin = format;
+-
+- n = read_int (&format);
+-
+- if (n > 0 && *format == L_('$'))
+- /* Is positional parameter. */
+- {
+- ++format; /* Skip the '$'. */
+- spec->data_arg = n - 1;
+- *max_ref_arg = MAX (*max_ref_arg, n);
+- }
+- else
+- /* Oops; that was actually the width and/or 0 padding flag.
+- Step back and read it again. */
+- format = begin;
+- }
+-
+- /* Check for spec modifiers. */
+- do
+- {
+- switch (*format)
+- {
+- case L_(' '):
+- /* Output a space in place of a sign, when there is no sign. */
+- spec->info.space = 1;
+- continue;
+- case L_('+'):
+- /* Always output + or - for numbers. */
+- spec->info.showsign = 1;
+- continue;
+- case L_('-'):
+- /* Left-justify things. */
+- spec->info.left = 1;
+- continue;
+- case L_('#'):
+- /* Use the "alternate form":
+- Hex has 0x or 0X, FP always has a decimal point. */
+- spec->info.alt = 1;
+- continue;
+- case L_('0'):
+- /* Pad with 0s. */
+- spec->info.pad = '0';
+- continue;
+- case L_('\''):
+- /* Show grouping in numbers if the locale information
+- indicates any. */
+- spec->info.group = 1;
+- continue;
+- case L_('I'):
+- /* Use the internationalized form of the output. Currently
+- means to use the `outdigits' of the current locale. */
+- spec->info.i18n = 1;
+- continue;
+- default:
+- break;
+- }
+- break;
+- }
+- while (*++format);
+-
+- if (spec->info.left)
+- spec->info.pad = ' ';
+-
+- /* Get the field width. */
+- spec->width_arg = -1;
+- spec->info.width = 0;
+- if (*format == L_('*'))
+- {
+- /* The field width is given in an argument.
+- A negative field width indicates left justification. */
+- const UCHAR_T *begin = ++format;
+-
+- if (ISDIGIT (*format))
+- {
+- /* The width argument might be found in a positional parameter. */
+- n = read_int (&format);
+-
+- if (n > 0 && *format == L_('$'))
+- {
+- spec->width_arg = n - 1;
+- *max_ref_arg = MAX (*max_ref_arg, n);
+- ++format; /* Skip '$'. */
+- }
+- }
+-
+- if (spec->width_arg < 0)
+- {
+- /* Not in a positional parameter. Consume one argument. */
+- spec->width_arg = posn++;
+- ++nargs;
+- format = begin; /* Step back and reread. */
+- }
+- }
+- else if (ISDIGIT (*format))
+- /* Constant width specification. */
+- spec->info.width = read_int (&format);
+-
+- /* Get the precision. */
+- spec->prec_arg = -1;
+- /* -1 means none given; 0 means explicit 0. */
+- spec->info.prec = -1;
+- if (*format == L_('.'))
+- {
+- ++format;
+- if (*format == L_('*'))
+- {
+- /* The precision is given in an argument. */
+- const UCHAR_T *begin = ++format;
+-
+- if (ISDIGIT (*format))
+- {
+- n = read_int (&format);
+-
+- if (n > 0 && *format == L_('$'))
+- {
+- spec->prec_arg = n - 1;
+- *max_ref_arg = MAX (*max_ref_arg, n);
+- ++format;
+- }
+- }
+-
+- if (spec->prec_arg < 0)
+- {
+- /* Not in a positional parameter. */
+- spec->prec_arg = posn++;
+- ++nargs;
+- format = begin;
+- }
+- }
+- else if (ISDIGIT (*format))
+- spec->info.prec = read_int (&format);
+- else
+- /* "%.?" is treated like "%.0?". */
+- spec->info.prec = 0;
+- }
+-
+- /* Check for type modifiers. */
+- spec->info.is_long_double = 0;
+- spec->info.is_short = 0;
+- spec->info.is_long = 0;
+- spec->info.is_char = 0;
+-
+- switch (*format++)
+- {
+- case L_('h'):
+- /* ints are short ints or chars. */
+- if (*format != L_('h'))
+- spec->info.is_short = 1;
+- else
+- {
+- ++format;
+- spec->info.is_char = 1;
+- }
+- break;
+- case L_('l'):
+- /* ints are long ints. */
+- spec->info.is_long = 1;
+- if (*format != L_('l'))
+- break;
+- ++format;
+- /* FALLTHROUGH */
+- case L_('L'):
+- /* doubles are long doubles, and ints are long long ints. */
+- case L_('q'):
+- /* 4.4 uses this for long long. */
+- spec->info.is_long_double = 1;
+- break;
+- case L_('z'):
+- case L_('Z'):
+- /* ints are size_ts. */
+- assert (sizeof (size_t) <= sizeof (unsigned long long int));
+-#if LONG_MAX != LONG_LONG_MAX
+- spec->info.is_long_double = sizeof (size_t) > sizeof (unsigned long int);
+-#endif
+- spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
+- break;
+- case L_('t'):
+- assert (sizeof (ptrdiff_t) <= sizeof (long long int));
+-#if LONG_MAX != LONG_LONG_MAX
+- spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
+-#endif
+- spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
+- break;
+- case L_('j'):
+- assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
+-#if LONG_MAX != LONG_LONG_MAX
+- spec->info.is_long_double = (sizeof (uintmax_t)
+- > sizeof (unsigned long int));
+-#endif
+- spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
+- break;
+- default:
+- /* Not a recognized modifier. Backup. */
+- --format;
+- break;
+- }
+-
+- /* Get the format specification. */
+- spec->info.spec = (wchar_t) *format++;
+- if (__builtin_expect (__printf_function_table != NULL, 0)
+- && spec->info.spec <= UCHAR_MAX
+- && __printf_arginfo_table[spec->info.spec] != NULL)
+- /* We don't try to get the types for all arguments if the format
+- uses more than one. The normal case is covered though. */
+- spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
+- (&spec->info, 1, &spec->data_arg_type);
+- else
+- {
+- /* Find the data argument types of a built-in spec. */
+- spec->ndata_args = 1;
+-
+- switch (spec->info.spec)
+- {
+- case L'i':
+- case L'd':
+- case L'u':
+- case L'o':
+- case L'X':
+- case L'x':
+-#if LONG_MAX != LONG_LONG_MAX
+- if (spec->info.is_long_double)
+- spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG;
+- else
+-#endif
+- if (spec->info.is_long)
+- spec->data_arg_type = PA_INT|PA_FLAG_LONG;
+- else if (spec->info.is_short)
+- spec->data_arg_type = PA_INT|PA_FLAG_SHORT;
+- else if (spec->info.is_char)
+- spec->data_arg_type = PA_CHAR;
+- else
+- spec->data_arg_type = PA_INT;
+- break;
+- case L'e':
+- case L'E':
+- case L'f':
+- case L'F':
+- case L'g':
+- case L'G':
+- case L'a':
+- case L'A':
+- if (spec->info.is_long_double)
+- spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
+- else
+- spec->data_arg_type = PA_DOUBLE;
+- break;
+- case L'c':
+- spec->data_arg_type = PA_CHAR;
+- break;
+- case L'C':
+- spec->data_arg_type = PA_WCHAR;
+- break;
+- case L's':
+- spec->data_arg_type = PA_STRING;
+- break;
+- case L'S':
+- spec->data_arg_type = PA_WSTRING;
+- break;
+- case L'p':
+- spec->data_arg_type = PA_POINTER;
+- break;
+- case L'n':
+- spec->data_arg_type = PA_INT|PA_FLAG_PTR;
+- break;
+-
+- case L'm':
+- default:
+- /* An unknown spec will consume no args. */
+- spec->ndata_args = 0;
+- break;
+- }
+- }
+-
+- if (spec->data_arg == -1 && spec->ndata_args > 0)
+- {
+- /* There are args consumed, but no positional spec. Use the
+- next sequential arg position. */
+- spec->data_arg = posn;
+- nargs += spec->ndata_args;
+- }
+-
+- if (spec->info.spec == L'\0')
+- /* Format ended before this spec was complete. */
+- spec->end_of_fmt = spec->next_fmt = format - 1;
+- else
+- {
+- /* Find the next format spec. */
+- spec->end_of_fmt = format;
+-#ifdef COMPILE_WPRINTF
+- spec->next_fmt = find_spec (format);
+-#else
+- spec->next_fmt = find_spec (format, ps);
+-#endif
+- }
+-
+- return nargs;
+-}
++extern size_t __parse_one_specmb (const unsigned char *format, size_t posn,
++ struct printf_spec *spec,
++ size_t *max_ref_arg, mbstate_t *ps)
++ attribute_hidden;
++
++extern size_t __parse_one_specwc (const unsigned int *format, size_t posn,
++ struct printf_spec *spec,
++ size_t *max_ref_arg) attribute_hidden;
+--- glibc-2.3.2/stdio-common/printf-parsemb.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/stdio-common/printf-parsemb.c 2003-06-12 11:06:16.000000000 -0400
+@@ -0,0 +1,409 @@
++/* Helper functions for parsing printf format strings.
++ Copyright (C) 1995-1999, 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of th GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <ctype.h>
++#include <limits.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/param.h>
++#include <wchar.h>
++#include <wctype.h>
++
++#ifndef COMPILE_WPRINTF
++# define CHAR_T char
++# define UCHAR_T unsigned char
++# define INT_T int
++# define L_(Str) Str
++# define ISDIGIT(Ch) isdigit (Ch)
++#else
++# define CHAR_T wchar_t
++# define UCHAR_T unsigned int
++# define INT_T wint_t
++# define L_(Str) L##Str
++# define ISDIGIT(Ch) iswdigit (Ch)
++#endif
++
++#include "printf-parse.h"
++
++#define NDEBUG 1
++#include <assert.h>
++
++
++
++/* Find the next spec in FORMAT, or the end of the string. Returns
++ a pointer into FORMAT, to a '%' or a '\0'. */
++const UCHAR_T *
++#ifdef COMPILE_WPRINTF
++__find_specwc (const UCHAR_T *format)
++#else
++__find_specmb (const UCHAR_T *format, mbstate_t *ps)
++#endif
++{
++#ifdef COMPILE_WPRINTF
++ return (const UCHAR_T *) __wcschrnul ((const CHAR_T *) format, L'%');
++#else
++ while (*format != L_('\0') && *format != L_('%'))
++ {
++ int len;
++
++ /* Remove any hints of a wrong encoding. */
++ ps->__count = 0;
++ if (! isascii (*format) && (len = __mbrlen (format, MB_CUR_MAX, ps)) > 0)
++ format += len;
++ else
++ ++format;
++ }
++ return format;
++#endif
++}
++
++
++/* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC
++ with the parsed details. POSN is the number of arguments already
++ consumed. At most MAXTYPES - POSN types are filled in TYPES. Return
++ the number of args consumed by this spec; *MAX_REF_ARG is updated so it
++ remains the highest argument index used. */
++size_t
++attribute_hidden
++#ifdef COMPILE_WPRINTF
++__parse_one_specwc (const UCHAR_T *format, size_t posn,
++ struct printf_spec *spec, size_t *max_ref_arg)
++#else
++__parse_one_specmb (const UCHAR_T *format, size_t posn,
++ struct printf_spec *spec, size_t *max_ref_arg,
++ mbstate_t *ps)
++#endif
++{
++ unsigned int n;
++ size_t nargs = 0;
++
++ /* Skip the '%'. */
++ ++format;
++
++ /* Clear information structure. */
++ spec->data_arg = -1;
++ spec->info.alt = 0;
++ spec->info.space = 0;
++ spec->info.left = 0;
++ spec->info.showsign = 0;
++ spec->info.group = 0;
++ spec->info.i18n = 0;
++ spec->info.pad = ' ';
++ spec->info.wide = sizeof (UCHAR_T) > 1;
++
++ /* Test for positional argument. */
++ if (ISDIGIT (*format))
++ {
++ const UCHAR_T *begin = format;
++
++ n = read_int (&format);
++
++ if (n > 0 && *format == L_('$'))
++ /* Is positional parameter. */
++ {
++ ++format; /* Skip the '$'. */
++ spec->data_arg = n - 1;
++ *max_ref_arg = MAX (*max_ref_arg, n);
++ }
++ else
++ /* Oops; that was actually the width and/or 0 padding flag.
++ Step back and read it again. */
++ format = begin;
++ }
++
++ /* Check for spec modifiers. */
++ do
++ {
++ switch (*format)
++ {
++ case L_(' '):
++ /* Output a space in place of a sign, when there is no sign. */
++ spec->info.space = 1;
++ continue;
++ case L_('+'):
++ /* Always output + or - for numbers. */
++ spec->info.showsign = 1;
++ continue;
++ case L_('-'):
++ /* Left-justify things. */
++ spec->info.left = 1;
++ continue;
++ case L_('#'):
++ /* Use the "alternate form":
++ Hex has 0x or 0X, FP always has a decimal point. */
++ spec->info.alt = 1;
++ continue;
++ case L_('0'):
++ /* Pad with 0s. */
++ spec->info.pad = '0';
++ continue;
++ case L_('\''):
++ /* Show grouping in numbers if the locale information
++ indicates any. */
++ spec->info.group = 1;
++ continue;
++ case L_('I'):
++ /* Use the internationalized form of the output. Currently
++ means to use the `outdigits' of the current locale. */
++ spec->info.i18n = 1;
++ continue;
++ default:
++ break;
++ }
++ break;
++ }
++ while (*++format);
++
++ if (spec->info.left)
++ spec->info.pad = ' ';
++
++ /* Get the field width. */
++ spec->width_arg = -1;
++ spec->info.width = 0;
++ if (*format == L_('*'))
++ {
++ /* The field width is given in an argument.
++ A negative field width indicates left justification. */
++ const UCHAR_T *begin = ++format;
++
++ if (ISDIGIT (*format))
++ {
++ /* The width argument might be found in a positional parameter. */
++ n = read_int (&format);
++
++ if (n > 0 && *format == L_('$'))
++ {
++ spec->width_arg = n - 1;
++ *max_ref_arg = MAX (*max_ref_arg, n);
++ ++format; /* Skip '$'. */
++ }
++ }
++
++ if (spec->width_arg < 0)
++ {
++ /* Not in a positional parameter. Consume one argument. */
++ spec->width_arg = posn++;
++ ++nargs;
++ format = begin; /* Step back and reread. */
++ }
++ }
++ else if (ISDIGIT (*format))
++ /* Constant width specification. */
++ spec->info.width = read_int (&format);
++
++ /* Get the precision. */
++ spec->prec_arg = -1;
++ /* -1 means none given; 0 means explicit 0. */
++ spec->info.prec = -1;
++ if (*format == L_('.'))
++ {
++ ++format;
++ if (*format == L_('*'))
++ {
++ /* The precision is given in an argument. */
++ const UCHAR_T *begin = ++format;
++
++ if (ISDIGIT (*format))
++ {
++ n = read_int (&format);
++
++ if (n > 0 && *format == L_('$'))
++ {
++ spec->prec_arg = n - 1;
++ *max_ref_arg = MAX (*max_ref_arg, n);
++ ++format;
++ }
++ }
++
++ if (spec->prec_arg < 0)
++ {
++ /* Not in a positional parameter. */
++ spec->prec_arg = posn++;
++ ++nargs;
++ format = begin;
++ }
++ }
++ else if (ISDIGIT (*format))
++ spec->info.prec = read_int (&format);
++ else
++ /* "%.?" is treated like "%.0?". */
++ spec->info.prec = 0;
++ }
++
++ /* Check for type modifiers. */
++ spec->info.is_long_double = 0;
++ spec->info.is_short = 0;
++ spec->info.is_long = 0;
++ spec->info.is_char = 0;
++
++ switch (*format++)
++ {
++ case L_('h'):
++ /* ints are short ints or chars. */
++ if (*format != L_('h'))
++ spec->info.is_short = 1;
++ else
++ {
++ ++format;
++ spec->info.is_char = 1;
++ }
++ break;
++ case L_('l'):
++ /* ints are long ints. */
++ spec->info.is_long = 1;
++ if (*format != L_('l'))
++ break;
++ ++format;
++ /* FALLTHROUGH */
++ case L_('L'):
++ /* doubles are long doubles, and ints are long long ints. */
++ case L_('q'):
++ /* 4.4 uses this for long long. */
++ spec->info.is_long_double = 1;
++ break;
++ case L_('z'):
++ case L_('Z'):
++ /* ints are size_ts. */
++ assert (sizeof (size_t) <= sizeof (unsigned long long int));
++#if LONG_MAX != LONG_LONG_MAX
++ spec->info.is_long_double = sizeof (size_t) > sizeof (unsigned long int);
++#endif
++ spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
++ break;
++ case L_('t'):
++ assert (sizeof (ptrdiff_t) <= sizeof (long long int));
++#if LONG_MAX != LONG_LONG_MAX
++ spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
++#endif
++ spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
++ break;
++ case L_('j'):
++ assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
++#if LONG_MAX != LONG_LONG_MAX
++ spec->info.is_long_double = (sizeof (uintmax_t)
++ > sizeof (unsigned long int));
++#endif
++ spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
++ break;
++ default:
++ /* Not a recognized modifier. Backup. */
++ --format;
++ break;
++ }
++
++ /* Get the format specification. */
++ spec->info.spec = (wchar_t) *format++;
++ if (__builtin_expect (__printf_function_table != NULL, 0)
++ && spec->info.spec <= UCHAR_MAX
++ && __printf_arginfo_table[spec->info.spec] != NULL)
++ /* We don't try to get the types for all arguments if the format
++ uses more than one. The normal case is covered though. */
++ spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
++ (&spec->info, 1, &spec->data_arg_type);
++ else
++ {
++ /* Find the data argument types of a built-in spec. */
++ spec->ndata_args = 1;
++
++ switch (spec->info.spec)
++ {
++ case L'i':
++ case L'd':
++ case L'u':
++ case L'o':
++ case L'X':
++ case L'x':
++#if LONG_MAX != LONG_LONG_MAX
++ if (spec->info.is_long_double)
++ spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG;
++ else
++#endif
++ if (spec->info.is_long)
++ spec->data_arg_type = PA_INT|PA_FLAG_LONG;
++ else if (spec->info.is_short)
++ spec->data_arg_type = PA_INT|PA_FLAG_SHORT;
++ else if (spec->info.is_char)
++ spec->data_arg_type = PA_CHAR;
++ else
++ spec->data_arg_type = PA_INT;
++ break;
++ case L'e':
++ case L'E':
++ case L'f':
++ case L'F':
++ case L'g':
++ case L'G':
++ case L'a':
++ case L'A':
++ if (spec->info.is_long_double)
++ spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
++ else
++ spec->data_arg_type = PA_DOUBLE;
++ break;
++ case L'c':
++ spec->data_arg_type = PA_CHAR;
++ break;
++ case L'C':
++ spec->data_arg_type = PA_WCHAR;
++ break;
++ case L's':
++ spec->data_arg_type = PA_STRING;
++ break;
++ case L'S':
++ spec->data_arg_type = PA_WSTRING;
++ break;
++ case L'p':
++ spec->data_arg_type = PA_POINTER;
++ break;
++ case L'n':
++ spec->data_arg_type = PA_INT|PA_FLAG_PTR;
++ break;
++
++ case L'm':
++ default:
++ /* An unknown spec will consume no args. */
++ spec->ndata_args = 0;
++ break;
++ }
++ }
++
++ if (spec->data_arg == -1 && spec->ndata_args > 0)
++ {
++ /* There are args consumed, but no positional spec. Use the
++ next sequential arg position. */
++ spec->data_arg = posn;
++ nargs += spec->ndata_args;
++ }
++
++ if (spec->info.spec == L'\0')
++ /* Format ended before this spec was complete. */
++ spec->end_of_fmt = spec->next_fmt = format - 1;
++ else
++ {
++ /* Find the next format spec. */
++ spec->end_of_fmt = format;
++#ifdef COMPILE_WPRINTF
++ spec->next_fmt = __find_specwc (format);
++#else
++ spec->next_fmt = __find_specmb (format, ps);
++#endif
++ }
++
++ return nargs;
++}
+--- glibc-2.3.2/stdio-common/printf-parsewc.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/stdio-common/printf-parsewc.c 2003-06-11 18:05:47.000000000 -0400
+@@ -0,0 +1,2 @@
++#define COMPILE_WPRINTF 1
++#include "printf-parsemb.c"
+--- glibc-2.3.2/stdio-common/printf-prs.c 2002-04-08 14:17:43.000000000 -0400
++++ glibc-2.3.2/stdio-common/printf-prs.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,95,96,99,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,92,95,96,99,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -70,6 +70,7 @@
+ # endif
+ #endif
+
++#define DONT_NEED_READ_INT
+ #include "printf-parse.h"
+
+
+@@ -88,10 +89,10 @@
+ max_ref_arg = 0;
+
+ /* Search for format specifications. */
+- for (fmt = find_spec (fmt, &mbstate); *fmt != '\0'; fmt = spec.next_fmt)
++ for (fmt = __find_specmb (fmt, &mbstate); *fmt != '\0'; fmt = spec.next_fmt)
+ {
+ /* Parse this spec. */
+- nargs += parse_one_spec (fmt, nargs, &spec, &max_ref_arg, &mbstate);
++ nargs += __parse_one_specmb (fmt, nargs, &spec, &max_ref_arg, &mbstate);
+
+ /* If the width is determined by an argument this is an int. */
+ if (spec.width_arg != -1 && (size_t) spec.width_arg < n)
+--- glibc-2.3.2/stdio-common/reg-printf.c 2002-11-04 03:58:51.000000000 -0500
++++ glibc-2.3.2/stdio-common/reg-printf.c 2003-04-12 11:39:44.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1996, 1997, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1996,1997,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -46,7 +46,7 @@
+ if (__printf_function_table == NULL)
+ {
+ __printf_arginfo_table = (printf_arginfo_function **)
+- malloc ((UCHAR_MAX + 1) * sizeof (void *) * 2);
++ calloc (UCHAR_MAX + 1, sizeof (void *) * 2);
+ if (__printf_arginfo_table == NULL)
+ return -1;
+ __printf_function_table = (printf_function **)
+--- glibc-2.3.2/stdio-common/sscanf.c 2002-08-10 14:09:08.000000000 -0400
++++ glibc-2.3.2/stdio-common/sscanf.c 2003-03-15 15:02:14.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,95,96,98,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,9 +27,7 @@
+ /* Read formatted input from S, according to the format string FORMAT. */
+ /* VARARGS2 */
+ int
+-sscanf (s, format)
+- const char *s;
+- const char *format;
++sscanf (const char *s, const char *format, ...)
+ {
+ va_list arg;
+ int done;
+--- glibc-2.3.2/stdio-common/stdio_ext.h 2001-08-10 17:36:29.000000000 -0400
++++ glibc-2.3.2/stdio-common/stdio_ext.h 2003-09-19 22:37:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Functions to access FILE structure internals.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,43 +44,43 @@
+
+ /* Return the size of the buffer of FP in bytes currently in use by
+ the given stream. */
+-extern size_t __fbufsize (FILE *__fp);
++extern size_t __fbufsize (FILE *__fp) __THROW;
+
+
+ /* Return non-zero value iff the stream FP is opened readonly, or if the
+ last operation on the stream was a read operation. */
+-extern int __freading (FILE *__fp);
++extern int __freading (FILE *__fp) __THROW;
+
+ /* Return non-zero value iff the stream FP is opened write-only or
+ append-only, or if the last operation on the stream was a write
+ operation. */
+-extern int __fwriting (FILE *__fp);
++extern int __fwriting (FILE *__fp) __THROW;
+
+
+ /* Return non-zero value iff stream FP is not opened write-only or
+ append-only. */
+-extern int __freadable (FILE *__fp);
++extern int __freadable (FILE *__fp) __THROW;
+
+ /* Return non-zero value iff stream FP is not opened read-only. */
+-extern int __fwritable (FILE *__fp);
++extern int __fwritable (FILE *__fp) __THROW;
+
+
+ /* Return non-zero value iff the stream FP is line-buffered. */
+-extern int __flbf (FILE *__fp);
++extern int __flbf (FILE *__fp) __THROW;
+
+
+ /* Discard all pending buffered I/O on the stream FP. */
+-extern void __fpurge (FILE *__fp);
++extern void __fpurge (FILE *__fp) __THROW;
+
+ /* Return amount of output in bytes pending on a stream FP. */
+-extern size_t __fpending (FILE *__fp);
++extern size_t __fpending (FILE *__fp) __THROW;
+
+ /* Flush all line-buffered files. */
+ extern void _flushlbf (void);
+
+
+ /* Set locking status of stream FP to TYPE. */
+-extern int __fsetlocking (FILE *__fp, int __type);
++extern int __fsetlocking (FILE *__fp, int __type) __THROW;
+
+ __END_DECLS
+
+--- glibc-2.3.2/stdio-common/test-vfprintf.c 2002-09-24 01:12:03.000000000 -0400
++++ glibc-2.3.2/stdio-common/test-vfprintf.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Tests of *printf for very large strings.
+- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+@@ -40,14 +40,14 @@
+ int
+ main (void)
+ {
+- char buf[20];
++ char buf[25];
+ size_t i;
+ int res = 0;
+ int fd;
+
+ mtrace ();
+
+- strcpy (buf, "test-vfprintfXXXXXX");
++ strcpy (buf, "/tmp/test-vfprintfXXXXXX");
+ fd = mkstemp (buf);
+ if (fd == -1)
+ {
+--- glibc-2.3.2/stdio-common/tst-fphex.c 2002-10-23 21:15:31.000000000 -0400
++++ glibc-2.3.2/stdio-common/tst-fphex.c 2003-08-21 08:37:08.000000000 -0400
+@@ -39,7 +39,7 @@
+ int n = snprintf (buf, sizeof buf, t->fmt, t->value);
+ if (n != strlen (t->expect) || strcmp (buf, t->expect) != 0)
+ {
+- printf ("%s\tExpected \"%s\" (%u)\n\tGot \"%s\" (%d, %u)\n",
++ printf ("%s\tExpected \"%s\" (%Zu)\n\tGot \"%s\" (%d, %Zu)\n",
+ t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf));
+ result = 1;
+ }
+--- glibc-2.3.2/stdio-common/tst-sprintf.c 2001-12-14 02:13:14.000000000 -0500
++++ glibc-2.3.2/stdio-common/tst-sprintf.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,5 @@
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+
+
+@@ -11,9 +12,30 @@
+ if (sprintf (buf, "%.0ls", L"foo") != 0
+ || strlen (buf) != 0)
+ {
+- puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output\n");
++ puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output");
+ result = 1;
+ }
+
++#define SIZE (1024*70000)
++#define STR(x) #x
++
++ char *dst = malloc (SIZE + 1);
++
++ if (dst == NULL)
++ {
++ puts ("memory allocation failure");
++ result = 1;
++ }
++ else
++ {
++ sprintf (dst, "%*s", SIZE, "");
++ if (strnlen (dst, SIZE + 1) != SIZE)
++ {
++ puts ("sprintf (dst, \"%*s\", " STR(SIZE) ", \"\") did not produce enough output");
++ result = 1;
++ }
++ free (dst);
++ }
++
+ return result;
+ }
+--- glibc-2.3.2/stdio-common/tst-wc-printf.c 1998-04-28 10:15:18.000000000 -0400
++++ glibc-2.3.2/stdio-common/tst-wc-printf.c 2003-08-21 08:37:08.000000000 -0400
+@@ -16,7 +16,7 @@
+
+ printf ("with %%S: %S\n", tmp);
+
+- printf ("with %%C: %C\n", tmp[0]);
++ printf ("with %%C: %C\n", (wint_t) tmp[0]);
+
+ return 0;
+ }
+--- glibc-2.3.2/stdio-common/vfprintf.c 2003-01-30 13:30:25.000000000 -0500
++++ glibc-2.3.2/stdio-common/vfprintf.c 2003-09-19 22:37:06.000000000 -0400
+@@ -78,7 +78,7 @@
+ if (width > 0) \
+ done += INTUSE(_IO_padn) (s, (Padchar), width)
+ # define PUTC(C, F) _IO_putc_unlocked (C, F)
+-# define ORIENT if (s->_vtable_offset == 0 && _IO_fwide (s, -1) != -1)\
++# define ORIENT if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\
+ return -1
+ # else
+ # define vfprintf _IO_vfwprintf
+@@ -581,10 +581,8 @@
+ else \
+ if (is_long_num) \
+ signed_number = args_value[fspec->data_arg].pa_long_int; \
+- else if (!is_short) \
++ else /* `char' and `short int' will be promoted to `int'. */ \
+ signed_number = args_value[fspec->data_arg].pa_int; \
+- else \
+- signed_number = args_value[fspec->data_arg].pa_short_int; \
+ \
+ is_negative = signed_number < 0; \
+ number.word = is_negative ? (- signed_number) : signed_number; \
+@@ -675,12 +673,12 @@
+ number.word = args_value[fspec->data_arg].pa_u_long_int; \
+ else if (is_char) \
+ number.word = (unsigned char) \
+- args_value[fspec->data_arg].pa_char; \
++ args_value[fspec->data_arg].pa_u_int; \
+ else if (!is_short) \
+ number.word = args_value[fspec->data_arg].pa_u_int; \
+ else \
+ number.word = (unsigned short int) \
+- args_value[fspec->data_arg].pa_u_short_int; \
++ args_value[fspec->data_arg].pa_u_int; \
+ \
+ LABEL (number): \
+ if (prec < 0) \
+@@ -977,7 +975,7 @@
+ outchar (__btowc ((unsigned char) va_arg (ap, int))); /* Promoted. */ \
+ else \
+ outchar (__btowc ((unsigned char) \
+- args_value[fspec->data_arg].pa_char)); \
++ args_value[fspec->data_arg].pa_int)); \
+ if (left) \
+ PAD (L' '); \
+ break; \
+@@ -1096,7 +1094,7 @@
+ if (fspec == NULL) \
+ outchar ((unsigned char) va_arg (ap, int)); /* Promoted. */ \
+ else \
+- outchar ((unsigned char) args_value[fspec->data_arg].pa_char); \
++ outchar ((unsigned char) args_value[fspec->data_arg].pa_int); \
+ if (left) \
+ PAD (' '); \
+ break; \
+@@ -1269,7 +1267,7 @@
+ /* Check for correct orientation. */
+ if (
+ # ifdef USE_IN_LIBIO
+- s->_vtable_offset == 0 &&
++ _IO_vtable_offset (s) == 0 &&
+ # endif
+ _IO_fwide (s, sizeof (CHAR_T) == 1 ? -1 : 1)
+ != (sizeof (CHAR_T) == 1 ? -1 : 1))
+@@ -1296,13 +1294,13 @@
+
+ #ifdef COMPILE_WPRINTF
+ /* Find the first format specifier. */
+- f = lead_str_end = find_spec ((const UCHAR_T *) format);
++ f = lead_str_end = __find_specwc ((const UCHAR_T *) format);
+ #else
+ /* Put state for processing format string in initial state. */
+ memset (&mbstate, '\0', sizeof (mbstate_t));
+
+ /* Find the first format specifier. */
+- f = lead_str_end = find_spec (format, &mbstate);
++ f = lead_str_end = __find_specmb (format, &mbstate);
+ #endif
+
+ /* Lock stream. */
+@@ -1598,9 +1596,9 @@
+
+ /* Look for next format specifier. */
+ #ifdef COMPILE_WPRINTF
+- f = find_spec ((end_of_spec = ++f));
++ f = __find_specwc ((end_of_spec = ++f));
+ #else
+- f = find_spec ((end_of_spec = ++f), &mbstate);
++ f = __find_specmb ((end_of_spec = ++f), &mbstate);
+ #endif
+
+ /* Write the following constant string. */
+@@ -1679,10 +1677,10 @@
+
+ /* Parse the format specifier. */
+ #ifdef COMPILE_WPRINTF
+- nargs += parse_one_spec (f, nargs, &specs[nspecs], &max_ref_arg);
++ nargs += __parse_one_specwc (f, nargs, &specs[nspecs], &max_ref_arg);
+ #else
+- nargs += parse_one_spec (f, nargs, &specs[nspecs], &max_ref_arg,
+- &mbstate);
++ nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg,
++ &mbstate);
+ #endif
+ }
+
+@@ -1737,13 +1735,13 @@
+ args_value[cnt].mem = va_arg (ap_save, type); \
+ break
+
+- T (PA_CHAR, pa_char, int); /* Promoted. */
++ T (PA_CHAR, pa_int, int); /* Promoted. */
+ T (PA_WCHAR, pa_wchar, wint_t);
+- T (PA_INT|PA_FLAG_SHORT, pa_short_int, int); /* Promoted. */
++ T (PA_INT|PA_FLAG_SHORT, pa_int, int); /* Promoted. */
+ T (PA_INT, pa_int, int);
+ T (PA_INT|PA_FLAG_LONG, pa_long_int, long int);
+ T (PA_INT|PA_FLAG_LONG_LONG, pa_long_long_int, long long int);
+- T (PA_FLOAT, pa_float, double); /* Promoted. */
++ T (PA_FLOAT, pa_double, double); /* Promoted. */
+ T (PA_DOUBLE, pa_double, double);
+ T (PA_DOUBLE|PA_FLAG_LONG_DOUBLE, pa_long_double, long double);
+ T (PA_STRING, pa_string, const char *);
+@@ -1994,7 +1992,7 @@
+ /* No grouping should be done. */
+ return w;
+
+- len = *grouping;
++ len = *grouping++;
+
+ /* Copy existing string so that nothing gets overwritten. */
+ src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
+@@ -2019,11 +2017,7 @@
+ while (cnt > 0);
+ #endif
+
+- len = *grouping++;
+- if (*grouping == '\0')
+- /* The previous grouping repeats ad infinitum. */
+- --grouping;
+- else if (*grouping == CHAR_MAX
++ if (*grouping == CHAR_MAX
+ #if CHAR_MIN < 0
+ || *grouping < 0
+ #endif
+@@ -2036,6 +2030,11 @@
+ while (s > src);
+ break;
+ }
++ else if (*grouping != '\0')
++ /* The previous grouping repeats ad infinitum. */
++ len = *grouping++;
++ else
++ len = grouping[-1];
+ }
+ }
+ return w;
+--- glibc-2.3.2/stdio-common/vfscanf.c 2003-01-15 18:41:19.000000000 -0500
++++ glibc-2.3.2/stdio-common/vfscanf.c 2003-09-19 22:37:06.000000000 -0400
+@@ -120,7 +120,7 @@
+ # define ISDIGIT(Ch) isdigit (Ch)
+ # define ISXDIGIT(Ch) isxdigit (Ch)
+ # define TOLOWER(Ch) tolower (Ch)
+-# define ORIENT if (s->_vtable_offset == 0 \
++# define ORIENT if (_IO_vtable_offset (s) == 0 \
+ && _IO_fwide (s, -1) != -1) \
+ return EOF
+
+@@ -290,13 +290,13 @@
+ #define is_hexa number_signed
+ /* Decimal point character. */
+ #ifdef COMPILE_WSCANF
+- wchar_t decimal;
++ wint_t decimal;
+ #else
+ const char *decimal;
+ #endif
+ /* The thousands character of the current locale. */
+ #ifdef COMPILE_WSCANF
+- wchar_t thousands;
++ wint_t thousands;
+ #else
+ const char *thousands;
+ #endif
+@@ -1254,7 +1254,7 @@
+ _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n);
+ wcdigits[n] += from_level;
+
+- if (c == *wcdigits[n])
++ if (c == (wint_t) *wcdigits[n])
+ {
+ to_level = from_level;
+ break;
+@@ -1316,7 +1316,7 @@
+ for (n = 0; n < 10; ++n)
+ {
+ #ifdef COMPILE_WSCANF
+- if (c == *wcdigits[n])
++ if (c == (wint_t) *wcdigits[n])
+ break;
+
+ /* Advance the pointer to the next string. */
+@@ -1441,7 +1441,7 @@
+ if (!ISXDIGIT (c))
+ break;
+ }
+- else if (!ISDIGIT (c) || c - L_('0') >= base)
++ else if (!ISDIGIT (c) || (int) (c - L_('0')) >= base)
+ {
+ if (base == 10 && (flags & GROUP)
+ #ifdef COMPILE_WSCANF
+@@ -1762,7 +1762,8 @@
+ else if (got_e && wp[wpsize - 1] == exp_char
+ && (c == L_('-') || c == L_('+')))
+ ADDW (c);
+- else if (wpsize > 0 && !got_e && TOLOWER (c) == exp_char)
++ else if (wpsize > 0 && !got_e
++ && (CHAR_T) TOLOWER (c) == exp_char)
+ {
+ ADDW (exp_char);
+ got_e = got_dot = 1;
+@@ -1775,7 +1776,8 @@
+ ADDW (c);
+ got_dot = 1;
+ }
+- else if (thousands != L'\0' && ! got_dot && c == thousands)
++ else if ((flags & GROUP) != 0 && thousands != L'\0'
++ && ! got_dot && c == thousands)
+ ADDW (c);
+ else
+ {
+@@ -1819,12 +1821,13 @@
+ we can compare against it. */
+ const char *cmp2p = thousands;
+
+- if (thousands != NULL && ! got_dot)
++ if ((flags & GROUP) != 0 && thousands != NULL
++ && ! got_dot)
+ {
+- while (cmp2p < cmpp
++ while (cmp2p - thousands < cmpp - decimal
+ && *cmp2p == decimal[cmp2p - thousands])
+ ++cmp2p;
+- if (cmp2p == cmpp)
++ if (cmp2p - thousands == cmpp - decimal)
+ {
+ while ((unsigned char) *cmp2p == c && avail > 0)
+ if (*++cmp2p == '\0')
+@@ -1993,7 +1996,7 @@
+ wchar_t wc;
+
+ for (wc = runp[-1] + 1; wc <= runp[1]; ++wc)
+- if (wc == c)
++ if ((wint_t) wc == c)
+ break;
+
+ if (wc <= runp[1] && !not_in)
+@@ -2010,9 +2013,9 @@
+ }
+ else
+ {
+- if (*runp == c && !not_in)
++ if ((wint_t) *runp == c && !not_in)
+ break;
+- if (*runp == c && not_in)
++ if ((wint_t) *runp == c && not_in)
+ {
+ ungetc (c, s);
+ goto out;
+@@ -2211,7 +2214,7 @@
+ wchar_t wc;
+
+ for (wc = runp[-1] + 1; wc <= runp[1]; ++wc)
+- if (wc == c)
++ if ((wint_t) wc == c)
+ break;
+
+ if (wc <= runp[1] && !not_in)
+@@ -2228,9 +2231,9 @@
+ }
+ else
+ {
+- if (*runp == c && !not_in)
++ if ((wint_t) *runp == c && !not_in)
+ break;
+- if (*runp == c && not_in)
++ if ((wint_t) *runp == c && not_in)
+ {
+ ungetc (c, s);
+ goto out2;
+--- glibc-2.3.2/stdlib/Makefile 2002-12-17 01:43:56.000000000 -0500
++++ glibc-2.3.2/stdlib/Makefile 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -49,6 +49,7 @@
+ rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \
+ strtoimax strtoumax wcstoimax wcstoumax \
+ getcontext setcontext makecontext swapcontext
++aux = grouping groupingwc
+
+ # These routines will be omitted from the libc shared object.
+ # Instead the static object files will be included in a special archive
+@@ -73,14 +74,16 @@
+ routines := $(strip $(routines) $(mpn-routines)) \
+ dbl2mpn ldbl2mpn \
+ mpn2flt mpn2dbl mpn2ldbl
+-aux := fpioconst mp_clz_tab
++aux += fpioconst mp_clz_tab
+ distribute := $(distribute) $(mpn-headers) gen-mpn-copy fpioconst.h
+
+ generated += isomac isomac.out
+
+-CFLAGS-bsearch.c = $(exceptions)
+-CFLAGS-msort.c = $(exceptions)
+-CFLAGS-qsort.c = $(exceptions)
++CFLAGS-bsearch.c = $(uses-callbacks)
++CFLAGS-msort.c = $(uses-callbacks)
++CFLAGS-qsort.c = $(uses-callbacks)
++CFLAGS-system.c = -fexceptions
++CFLAGS-fmtmsg.c = -fexceptions
+
+ include ../Makeconfig
+
+@@ -93,6 +96,9 @@
+ CFLAGS-atexit.c = -DHAVE_DOT_HIDDEN
+ endif
+
++CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
++CFLAGS-tst-qsort.c = $(stack-align-test-flags)
++
+ include ../Rules
+
+ # Testdir has to be named stdlib and needs to be writable
+--- glibc-2.3.2/stdlib/cxa_finalize.c 2002-12-06 05:43:29.000000000 -0500
++++ glibc-2.3.2/stdlib/cxa_finalize.c 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -18,12 +18,13 @@
+
+ #include <assert.h>
+ #include <stdlib.h>
+-#include <atomicity.h>
++#include <atomic.h>
+ #include "exit.h"
+ #include <fork.h>
+
+ /* If D is non-NULL, call all functions registered with `__cxa_atexit'
+- with the same dso handle. Otherwise, if D is NULL, do nothing. */
++ with the same dso handle. Otherwise, if D is NULL, call all of the
++ registered handlers. */
+ void
+ __cxa_finalize (void *d)
+ {
+@@ -36,12 +37,15 @@
+ for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
+ if ((d == NULL || d == f->func.cxa.dso_handle)
+ /* We don't want to run this cleanup more than once. */
+- && compare_and_swap (&f->flavor, ef_cxa, ef_free))
++ && ! atomic_compare_and_exchange_bool_acq (&f->flavor, ef_free,
++ ef_cxa))
+ (*f->func.cxa.fn) (f->func.cxa.arg, 0);
+ }
+
+- /* Remove the registered fork handlers. */
++ /* Remove the registered fork handlers. We do not have to
++ unregister anything if the program is going to terminate anyway. */
+ #ifdef UNREGISTER_ATFORK
+- UNREGISTER_ATFORK (d);
++ if (d != NULL)
++ UNREGISTER_ATFORK (d);
+ #endif
+ }
+--- glibc-2.3.2/stdlib/fmtmsg.c 2002-11-01 21:15:53.000000000 -0500
++++ glibc-2.3.2/stdlib/fmtmsg.c 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -108,7 +108,7 @@
+ int result = MM_OK;
+ struct severity_info *severity_rec;
+
+- /* make sure everything is initialized. */
++ /* Make sure everything is initialized. */
+ __libc_once (once, init);
+
+ /* Start the real work. First check whether the input is ok. */
+@@ -137,6 +137,14 @@
+ return MM_NOTOK;
+
+
++#ifdef __libc_ptf_call
++ /* We do not want this call to be cut short by a thread
++ cancellation. Therefore disable cancellation for now. */
++ int state = PTHREAD_CANCEL_ENABLE;
++ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
++ 0);
++#endif
++
+ /* Now we can print. */
+ if (classification & MM_PRINT)
+ {
+@@ -206,6 +214,10 @@
+ do_tag ? tag : "");
+ }
+
++#ifdef __libc_ptf_call
++ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
++#endif
++
+ return result;
+ }
+
+--- glibc-2.3.2/stdlib/fmtmsg.h 2001-07-07 15:21:18.000000000 -0400
++++ glibc-2.3.2/stdlib/fmtmsg.h 2003-09-19 22:37:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Message display handling.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -94,7 +94,7 @@
+ and TAG to console or standard error. */
+ extern int fmtmsg (long int __classification, __const char *__label,
+ int __severity, __const char *__text,
+- __const char *__action, __const char *__tag) __THROW;
++ __const char *__action, __const char *__tag);
+
+ #ifdef __USE_SVID
+ /* Add or remove severity level. */
+--- glibc-2.3.2/stdlib/fpioconst.c 2002-03-11 03:32:01.000000000 -0500
++++ glibc-2.3.2/stdlib/fpioconst.c 2003-03-15 15:02:14.000000000 -0500
+@@ -1,5 +1,6 @@
+ /* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
+- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -235,195 +236,198 @@
+ {
+ #define TENS_P0_IDX 0
+ #define TENS_P0_SIZE 2
+- [TENS_P0_IDX] = 0x0000000000000000, 0x000000000000000a,
++ [TENS_P0_IDX] = 0x0000000000000000ull, 0x000000000000000aull,
+
+ #define TENS_P1_IDX (TENS_P0_IDX + TENS_P0_SIZE)
+ #define TENS_P1_SIZE 2
+- [TENS_P1_IDX] = 0x0000000000000000, 0x0000000000000064,
++ [TENS_P1_IDX] = 0x0000000000000000ull, 0x0000000000000064ull,
+
+ #define TENS_P2_IDX (TENS_P1_IDX + TENS_P1_SIZE)
+ #define TENS_P2_SIZE 2
+- [TENS_P2_IDX] = 0x0000000000000000, 0x0000000000002710,
++ [TENS_P2_IDX] = 0x0000000000000000ull, 0x0000000000002710ull,
+
+ #define TENS_P3_IDX (TENS_P2_IDX + TENS_P2_SIZE)
+ #define TENS_P3_SIZE 2
+- [TENS_P3_IDX] = 0x0000000000000000, 0x0000000005f5e100,
++ [TENS_P3_IDX] = 0x0000000000000000ull, 0x0000000005f5e100ull,
+
+ #define TENS_P4_IDX (TENS_P3_IDX + TENS_P3_SIZE)
+ #define TENS_P4_SIZE 2
+- [TENS_P4_IDX] = 0x0000000000000000, 0x002386f26fc10000,
++ [TENS_P4_IDX] = 0x0000000000000000ull, 0x002386f26fc10000ull,
+
+ #define TENS_P5_IDX (TENS_P4_IDX + TENS_P4_SIZE)
+ #define TENS_P5_SIZE 3
+- [TENS_P5_IDX] = 0x0000000000000000, 0x85acef8100000000, 0x000004ee2d6d415b,
++ [TENS_P5_IDX] = 0x0000000000000000ull, 0x85acef8100000000ull,
++ 0x000004ee2d6d415bull,
+
+ #define TENS_P6_IDX (TENS_P5_IDX + TENS_P5_SIZE)
+ #define TENS_P6_SIZE 5
+- [TENS_P6_IDX] = 0x0000000000000000, 0x0000000000000000, 0x6e38ed64bf6a1f01,
+- 0xe93ff9f4daa797ed, 0x0000000000184f03,
++ [TENS_P6_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x6e38ed64bf6a1f01ull, 0xe93ff9f4daa797edull, 0x0000000000184f03ull,
+
+ #define TENS_P7_IDX (TENS_P6_IDX + TENS_P6_SIZE)
+ #define TENS_P7_SIZE 8
+- [TENS_P7_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x03df99092e953e01, 0x2374e42f0f1538fd, 0xc404dc08d3cff5ec,
+- 0xa6337f19bccdb0da, 0x0000024ee91f2603,
++ [TENS_P7_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x03df99092e953e01ull, 0x2374e42f0f1538fdull,
++ 0xc404dc08d3cff5ecull, 0xa6337f19bccdb0daull, 0x0000024ee91f2603ull,
+
+ #define TENS_P8_IDX (TENS_P7_IDX + TENS_P7_SIZE)
+ #define TENS_P8_SIZE 15
+- [TENS_P8_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0xbed3875b982e7c01,
+- 0x12152f87d8d99f72, 0xcf4a6e706bde50c6, 0x26b2716ed595d80f,
+- 0x1d153624adc666b0, 0x63ff540e3c42d35a, 0x65f9ef17cc5573c0,
+- 0x80dcc7f755bc28f2, 0x5fdcefcef46eeddc, 0x00000000000553f7,
++ [TENS_P8_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0xbed3875b982e7c01ull, 0x12152f87d8d99f72ull, 0xcf4a6e706bde50c6ull,
++ 0x26b2716ed595d80full, 0x1d153624adc666b0ull, 0x63ff540e3c42d35aull,
++ 0x65f9ef17cc5573c0ull, 0x80dcc7f755bc28f2ull, 0x5fdcefcef46eeddcull,
++ 0x00000000000553f7ull,
+ #ifndef __NO_LONG_DOUBLE_MATH
+ # define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE)
+ # define TENS_P9_SIZE 28
+- [TENS_P9_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x77f27267fc6cf801, 0x5d96976f8f9546dc, 0xc31e1ad9b83a8a97,
+- 0x94e6574746c40513, 0x4475b579c88976c1, 0xaa1da1bf28f8733b,
+- 0x1e25cfea703ed321, 0xbc51fb2eb21a2f22, 0xbfa3edac96e14f5d,
+- 0xe7fc7153329c57ae, 0x85a91924c3fc0695, 0xb2908ee0f95f635e,
+- 0x1366732a93abade4, 0x69be5b0e9449775c, 0xb099bc817343afac,
+- 0xa269974845a71d46, 0x8a0b1f138cb07303, 0xc1d238d98cab8a97,
+- 0x0000001c633415d4,
++ [TENS_P9_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x77f27267fc6cf801ull, 0x5d96976f8f9546dcull,
++ 0xc31e1ad9b83a8a97ull, 0x94e6574746c40513ull, 0x4475b579c88976c1ull,
++ 0xaa1da1bf28f8733bull, 0x1e25cfea703ed321ull, 0xbc51fb2eb21a2f22ull,
++ 0xbfa3edac96e14f5dull, 0xe7fc7153329c57aeull, 0x85a91924c3fc0695ull,
++ 0xb2908ee0f95f635eull, 0x1366732a93abade4ull, 0x69be5b0e9449775cull,
++ 0xb099bc817343afacull, 0xa269974845a71d46ull, 0x8a0b1f138cb07303ull,
++ 0xc1d238d98cab8a97ull, 0x0000001c633415d4ull,
+
+ # define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE)
+ # define TENS_P10_SIZE 55
+- [TENS_P10_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0xf55b2b722919f001,
+- 0x1ec29f866e7c215b, 0x15c51a88991c4e87, 0x4c7d1e1a140ac535,
+- 0x0ed1440ecc2cd819, 0x7de16cfb896634ee, 0x9fce837d1e43f61f,
+- 0x233e55c7231d2b9c, 0xf451218b65dc60d7, 0xc96359861c5cd134,
+- 0xa7e89431922bbb9f, 0x62be695a9f9f2a07, 0x045b7a748e1042c4,
+- 0x8ad822a51abe1de3, 0xd814b505ba34c411, 0x8fc51a16bf3fdeb3,
+- 0xf56deeecb1b896bc, 0xb6f4654b31fb6bfd, 0x6b7595fb101a3616,
+- 0x80d98089dc1a47fe, 0x9a20288280bda5a5, 0xfc8f1f9031eb0f66,
+- 0xe26a7b7e976a3310, 0x3ce3a0b8df68368a, 0x75a351a28e4262ce,
+- 0x445975836cb0b6c9, 0xc356e38a31b5653f, 0x0190fba035faaba6,
+- 0x88bc491b9fc4ed52, 0x005b80411640114a, 0x1e8d4649f4f3235e,
+- 0x73c5534936a8de06, 0xc1a6970ca7e6bd2a, 0xd2db49ef47187094,
+- 0xae6209d4926c3f5b, 0x34f4a3c62d433949, 0xd9d61a05d4305d94,
+- 0x0000000000000325,
++ [TENS_P10_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0xf55b2b722919f001ull, 0x1ec29f866e7c215bull, 0x15c51a88991c4e87ull,
++ 0x4c7d1e1a140ac535ull, 0x0ed1440ecc2cd819ull, 0x7de16cfb896634eeull,
++ 0x9fce837d1e43f61full, 0x233e55c7231d2b9cull, 0xf451218b65dc60d7ull,
++ 0xc96359861c5cd134ull, 0xa7e89431922bbb9full, 0x62be695a9f9f2a07ull,
++ 0x045b7a748e1042c4ull, 0x8ad822a51abe1de3ull, 0xd814b505ba34c411ull,
++ 0x8fc51a16bf3fdeb3ull, 0xf56deeecb1b896bcull, 0xb6f4654b31fb6bfdull,
++ 0x6b7595fb101a3616ull, 0x80d98089dc1a47feull, 0x9a20288280bda5a5ull,
++ 0xfc8f1f9031eb0f66ull, 0xe26a7b7e976a3310ull, 0x3ce3a0b8df68368aull,
++ 0x75a351a28e4262ceull, 0x445975836cb0b6c9ull, 0xc356e38a31b5653full,
++ 0x0190fba035faaba6ull, 0x88bc491b9fc4ed52ull, 0x005b80411640114aull,
++ 0x1e8d4649f4f3235eull, 0x73c5534936a8de06ull, 0xc1a6970ca7e6bd2aull,
++ 0xd2db49ef47187094ull, 0xae6209d4926c3f5bull, 0x34f4a3c62d433949ull,
++ 0xd9d61a05d4305d94ull, 0x0000000000000325ull,
+
+ # define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE)
+ # define TENS_P11_SIZE 108
+- [TENS_P11_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0xe30968651333e001, 0x49e28dcfb27d4d3f, 0xee87e354ec2e4721,
+- 0x368b8abbb6067584, 0x2ed56d55a5e5a191, 0xea50d142fd827773,
+- 0x98342c9e51b78db2, 0x866ed6f1c850dabc, 0x9279498719342c12,
+- 0x66912e4ad2f869c2, 0x57a7842d71c7fd8f, 0xfb7fedcc235552eb,
+- 0x38209ce1f3861ce0, 0x34c101349713b449, 0xa7a8289c8c6c54de,
+- 0xe3cb64f32dbb6643, 0xe3892ee98074ff01, 0xa8f16f9210c17f94,
+- 0x967abbb3a8281ed6, 0x9952fbed5a151440, 0xafe609c313b41e44,
+- 0xf111821fa2bca416, 0x91bac974fb1264b4, 0x8e48ff35d6c7d6ab,
+- 0xc4a656654419bd43, 0x33554c36685e5510, 0x0dbd21feab498697,
+- 0x982da4663cfe491d, 0x9e110c7bcbea4ca7, 0x5fc5a04779c56b8a,
+- 0x1aa9f44484d80e2e, 0x6a57b1ab730f203c, 0x87a7dc62d752f7a6,
+- 0x40660460944545ff, 0xc9ac375d77c1a42f, 0x744695f0e866d7ef,
+- 0xa1fc6b9681428c85, 0x7bf03c19d7917c7b, 0x5715f7915b33eb41,
+- 0xdb0708fd8f6cae5f, 0x785ce6b7b125ac8e, 0x6f46eadb56c6815b,
+- 0x195355d84eeebeee, 0x9d7389c0a244de3c, 0xcf99d01953761abd,
+- 0x0d76ce39de9ec24b, 0x2e55ecee70beb181, 0xf56d9d4bd5f86079,
+- 0x13ef5a83fb8886fb, 0x3f3389a4408f43c5, 0x58ccf45cfad37943,
+- 0x415c7f3ef82df846, 0x8b3d5cf42915e818, 0xf8dbb57a6a445f27,
+- 0x8ad803ecca8f0070, 0x038f9245b2e87c34, 0xc7c9dee0bedd8a6c,
+- 0x2ad3fa140eac7d56, 0xf775677ce0de0840, 0x92be221ef1bd0ad5,
+- 0xce9d04a487fa1fb9, 0x3f6f7024d2c36fa9, 0x907855eeb028af62,
+- 0x4efac5dcd83e49d6, 0x77cd8c6be7151aab, 0x0af908b40a753b7d,
+- 0xe50f30278c983623, 0x1d08e2d694222771, 0xf2ee5ca6f7e928e6,
+- 0x11eb962b1b61b93c, 0xce2bcba19648b21c, 0x7bbebe3034f77154,
+- 0x8ce329ace526a319, 0xb5dc53d5de4a74d2, 0x000000000009e8b3,
++ [TENS_P11_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0xe30968651333e001ull, 0x49e28dcfb27d4d3full,
++ 0xee87e354ec2e4721ull, 0x368b8abbb6067584ull, 0x2ed56d55a5e5a191ull,
++ 0xea50d142fd827773ull, 0x98342c9e51b78db2ull, 0x866ed6f1c850dabcull,
++ 0x9279498719342c12ull, 0x66912e4ad2f869c2ull, 0x57a7842d71c7fd8full,
++ 0xfb7fedcc235552ebull, 0x38209ce1f3861ce0ull, 0x34c101349713b449ull,
++ 0xa7a8289c8c6c54deull, 0xe3cb64f32dbb6643ull, 0xe3892ee98074ff01ull,
++ 0xa8f16f9210c17f94ull, 0x967abbb3a8281ed6ull, 0x9952fbed5a151440ull,
++ 0xafe609c313b41e44ull, 0xf111821fa2bca416ull, 0x91bac974fb1264b4ull,
++ 0x8e48ff35d6c7d6abull, 0xc4a656654419bd43ull, 0x33554c36685e5510ull,
++ 0x0dbd21feab498697ull, 0x982da4663cfe491dull, 0x9e110c7bcbea4ca7ull,
++ 0x5fc5a04779c56b8aull, 0x1aa9f44484d80e2eull, 0x6a57b1ab730f203cull,
++ 0x87a7dc62d752f7a6ull, 0x40660460944545ffull, 0xc9ac375d77c1a42full,
++ 0x744695f0e866d7efull, 0xa1fc6b9681428c85ull, 0x7bf03c19d7917c7bull,
++ 0x5715f7915b33eb41ull, 0xdb0708fd8f6cae5full, 0x785ce6b7b125ac8eull,
++ 0x6f46eadb56c6815bull, 0x195355d84eeebeeeull, 0x9d7389c0a244de3cull,
++ 0xcf99d01953761abdull, 0x0d76ce39de9ec24bull, 0x2e55ecee70beb181ull,
++ 0xf56d9d4bd5f86079ull, 0x13ef5a83fb8886fbull, 0x3f3389a4408f43c5ull,
++ 0x58ccf45cfad37943ull, 0x415c7f3ef82df846ull, 0x8b3d5cf42915e818ull,
++ 0xf8dbb57a6a445f27ull, 0x8ad803ecca8f0070ull, 0x038f9245b2e87c34ull,
++ 0xc7c9dee0bedd8a6cull, 0x2ad3fa140eac7d56ull, 0xf775677ce0de0840ull,
++ 0x92be221ef1bd0ad5ull, 0xce9d04a487fa1fb9ull, 0x3f6f7024d2c36fa9ull,
++ 0x907855eeb028af62ull, 0x4efac5dcd83e49d6ull, 0x77cd8c6be7151aabull,
++ 0x0af908b40a753b7dull, 0xe50f30278c983623ull, 0x1d08e2d694222771ull,
++ 0xf2ee5ca6f7e928e6ull, 0x11eb962b1b61b93cull, 0xce2bcba19648b21cull,
++ 0x7bbebe3034f77154ull, 0x8ce329ace526a319ull, 0xb5dc53d5de4a74d2ull,
++ 0x000000000009e8b3ull,
+
+ # define TENS_P12_IDX (TENS_P11_IDX + TENS_P11_SIZE)
+ # define TENS_P12_SIZE 214
+- [TENS_P12_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
+- 0x0000000000000000, 0x0000000000000000, 0xd4724e8d2a67c001,
+- 0xf89a1e908efe7ae7, 0x54e05154ef084117, 0x506be82913b1bb51,
+- 0xe599574efb29b172, 0x806c0ed3f0da6146, 0x45155e93b86ae5be,
+- 0x7e1e7c34c0591cc2, 0x1d1f4cce7c4823da, 0xd6bfdf759b8ba1e8,
+- 0xc2dfae78e341be10, 0x0f237f1a016b67b2, 0xaf6a25743dbeabcd,
+- 0x142e0e80cab3e6d7, 0x2c23481161959127, 0xcb4bf98287009701,
+- 0x88052f8cf8169c84, 0xbc13176168dde6d4, 0x54ab9c41ff0b0905,
+- 0x1a1c304e7613b224, 0x441c2d473bfe167b, 0x78f061814f6cea9c,
+- 0x30c7ae41eb659fb8, 0xa1ebcad7947e0d0e, 0x2130504dd97d9556,
+- 0xf2acd5071a8309cb, 0xfd82373a3f8ec72a, 0x280f4d3295a842bc,
+- 0x811a4f04f3618ac0, 0xd3967a1b6dc3a5b4, 0xdcfe388f15b8c898,
+- 0x8738b909454eb2a0, 0x2bd9cc1110c4e996, 0x655fec303297cd0c,
+- 0xf4090ee8ae0725b1, 0x398c6fed037d19ee, 0xc994a4503b9af26b,
+- 0x75a697b2b5341743, 0x3ccb5b92ac50b9c1, 0xa8329761ffe06205,
+- 0xeb83cadbdfea5242, 0x3c20ee69e79dadf7, 0x7021b97a1e0a6817,
+- 0x176ca776743074fa, 0xeca19beb77fb8af6, 0xaf63b71292baf1de,
+- 0xa4eb8f8cde35c88b, 0x40b464a0e137d5e9, 0x42923bbd87d1cde8,
+- 0x2e2690f3cd8f62ff, 0x59c89f1b095edc16, 0x5138753d1fa8fd5d,
+- 0x80152f18390a2b29, 0xf984d83e2dd8d925, 0xc19e1faf7a872e74,
+- 0xecf9b5d0ed4d542d, 0xc53c0adf9462ea75, 0x37a2d4390caea134,
+- 0x2181327ec8fa2e8a, 0x2d2408206e7bb827, 0x5893d4b850be10e0,
+- 0x1f2b2322ab312bb9, 0xbf627ede440b3f25, 0xb608b89572dac789,
+- 0x86deb3f078787e2a, 0xbb9373f46fee7aab, 0xf7d8b57e27ecf57b,
+- 0x3d04e8d2fca26a9f, 0x3172826ac9df13cb, 0xa8fcd8e0cd9e8d7c,
+- 0x307641d9b2c39497, 0x2608c4cf1cc939c1, 0x3d326a7eb6d1c7bf,
+- 0x8e13e25feeaf19e6, 0x2dfe6d97ee63302b, 0xe41d3cc425971d58,
+- 0xab8db59a0a80627c, 0xe90afb779eea37c8, 0x9ee3352c90ca19cf,
+- 0xfe78d6823613c850, 0x5b060904788f6e50, 0x3fecb534b71bd1a4,
+- 0x20c33857b32c450c, 0x0239f4cea6e9cfda, 0xa19adb9548497187,
+- 0x95aca6a8b492ed8a, 0xcf1b23504dcd6cd9, 0x1a67778cfbe8b12a,
+- 0xc32da38338eb3acc, 0xa03f40a8fb126ab1, 0xe9ce4724ed5bf546,
+- 0x73a130d84c4a74fd, 0xa2ebd6c1d9960e2d, 0x6f233b7c94ab6feb,
+- 0x8e7b9a7349126080, 0xd298f9994b8c9091, 0xa96ddeff35e836b5,
+- 0x6b0dd9bc96119b31, 0x282566fbc6cc3f8d, 0xd6769f3b72b882e7,
+- 0x00fc509ba674343d, 0xd6266a3fdcbf7789, 0x4e89541bae9641fd,
+- 0x53400d0311953407, 0xe5b533458e0dd75a, 0x108b89bc108f19ad,
+- 0xe03b2b6341a4c954, 0x97aced8e437b3d7f, 0x2c5508c2cbd66670,
+- 0x5c4f2ef0650ebc69, 0x9985a2df904ff6bf, 0x5ed8d2399faddd9e,
+- 0xe3e51cb925585832, 0x56c02d9a0ff4f1d4, 0xc1a08a138c4ef804,
+- 0xe6d2767113fd01c8, 0x9d0176cca7c234f4, 0x4d8bfa89d0d73df2,
+- 0x2b17e0b2544f10cd, 0xfd86fe49b70a5c7d, 0x214495bbdf373f41,
+- 0x00d313d584e857fd, 0xa4ba47440496fcbe, 0xaec29e6ee8cac982,
+- 0x7000a51987ec7038, 0xff66e42caeee333b, 0x03b4f63b8afd6b25,
+- 0x5ab8d9c7bd7991dc, 0x48741a6c2ed4684e, 0x2fdc6349af06940d,
+- 0xe974996fb03d7ecd, 0x52ec8721ac7867f9, 0x8edd2d00bcdd9d4a,
+- 0x41c759f83557de06, 0xa75409f23956d4b9, 0xb6100fab123cd8a1,
+- 0x2e8d623b3e7b21e2, 0xbca35f7792959da2, 0x35fcb457200c03a5,
+- 0xf74eb9281bb6c6e4, 0x87cc1d213d5d0b54, 0x18ae42404964046f,
+- 0x8bd2b496d868b275, 0xc234d8f51c5563f4, 0xf9151ffff868e970,
+- 0x271133eeae7be4a2, 0x25254932bb0fd922, 0x104bcd64a60a9fc0,
+- 0x0000006230290145
++ [TENS_P12_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
++ 0xd4724e8d2a67c001ull, 0xf89a1e908efe7ae7ull, 0x54e05154ef084117ull,
++ 0x506be82913b1bb51ull, 0xe599574efb29b172ull, 0x806c0ed3f0da6146ull,
++ 0x45155e93b86ae5beull, 0x7e1e7c34c0591cc2ull, 0x1d1f4cce7c4823daull,
++ 0xd6bfdf759b8ba1e8ull, 0xc2dfae78e341be10ull, 0x0f237f1a016b67b2ull,
++ 0xaf6a25743dbeabcdull, 0x142e0e80cab3e6d7ull, 0x2c23481161959127ull,
++ 0xcb4bf98287009701ull, 0x88052f8cf8169c84ull, 0xbc13176168dde6d4ull,
++ 0x54ab9c41ff0b0905ull, 0x1a1c304e7613b224ull, 0x441c2d473bfe167bull,
++ 0x78f061814f6cea9cull, 0x30c7ae41eb659fb8ull, 0xa1ebcad7947e0d0eull,
++ 0x2130504dd97d9556ull, 0xf2acd5071a8309cbull, 0xfd82373a3f8ec72aull,
++ 0x280f4d3295a842bcull, 0x811a4f04f3618ac0ull, 0xd3967a1b6dc3a5b4ull,
++ 0xdcfe388f15b8c898ull, 0x8738b909454eb2a0ull, 0x2bd9cc1110c4e996ull,
++ 0x655fec303297cd0cull, 0xf4090ee8ae0725b1ull, 0x398c6fed037d19eeull,
++ 0xc994a4503b9af26bull, 0x75a697b2b5341743ull, 0x3ccb5b92ac50b9c1ull,
++ 0xa8329761ffe06205ull, 0xeb83cadbdfea5242ull, 0x3c20ee69e79dadf7ull,
++ 0x7021b97a1e0a6817ull, 0x176ca776743074faull, 0xeca19beb77fb8af6ull,
++ 0xaf63b71292baf1deull, 0xa4eb8f8cde35c88bull, 0x40b464a0e137d5e9ull,
++ 0x42923bbd87d1cde8ull, 0x2e2690f3cd8f62ffull, 0x59c89f1b095edc16ull,
++ 0x5138753d1fa8fd5dull, 0x80152f18390a2b29ull, 0xf984d83e2dd8d925ull,
++ 0xc19e1faf7a872e74ull, 0xecf9b5d0ed4d542dull, 0xc53c0adf9462ea75ull,
++ 0x37a2d4390caea134ull, 0x2181327ec8fa2e8aull, 0x2d2408206e7bb827ull,
++ 0x5893d4b850be10e0ull, 0x1f2b2322ab312bb9ull, 0xbf627ede440b3f25ull,
++ 0xb608b89572dac789ull, 0x86deb3f078787e2aull, 0xbb9373f46fee7aabull,
++ 0xf7d8b57e27ecf57bull, 0x3d04e8d2fca26a9full, 0x3172826ac9df13cbull,
++ 0xa8fcd8e0cd9e8d7cull, 0x307641d9b2c39497ull, 0x2608c4cf1cc939c1ull,
++ 0x3d326a7eb6d1c7bfull, 0x8e13e25feeaf19e6ull, 0x2dfe6d97ee63302bull,
++ 0xe41d3cc425971d58ull, 0xab8db59a0a80627cull, 0xe90afb779eea37c8ull,
++ 0x9ee3352c90ca19cfull, 0xfe78d6823613c850ull, 0x5b060904788f6e50ull,
++ 0x3fecb534b71bd1a4ull, 0x20c33857b32c450cull, 0x0239f4cea6e9cfdaull,
++ 0xa19adb9548497187ull, 0x95aca6a8b492ed8aull, 0xcf1b23504dcd6cd9ull,
++ 0x1a67778cfbe8b12aull, 0xc32da38338eb3accull, 0xa03f40a8fb126ab1ull,
++ 0xe9ce4724ed5bf546ull, 0x73a130d84c4a74fdull, 0xa2ebd6c1d9960e2dull,
++ 0x6f233b7c94ab6febull, 0x8e7b9a7349126080ull, 0xd298f9994b8c9091ull,
++ 0xa96ddeff35e836b5ull, 0x6b0dd9bc96119b31ull, 0x282566fbc6cc3f8dull,
++ 0xd6769f3b72b882e7ull, 0x00fc509ba674343dull, 0xd6266a3fdcbf7789ull,
++ 0x4e89541bae9641fdull, 0x53400d0311953407ull, 0xe5b533458e0dd75aull,
++ 0x108b89bc108f19adull, 0xe03b2b6341a4c954ull, 0x97aced8e437b3d7full,
++ 0x2c5508c2cbd66670ull, 0x5c4f2ef0650ebc69ull, 0x9985a2df904ff6bfull,
++ 0x5ed8d2399faddd9eull, 0xe3e51cb925585832ull, 0x56c02d9a0ff4f1d4ull,
++ 0xc1a08a138c4ef804ull, 0xe6d2767113fd01c8ull, 0x9d0176cca7c234f4ull,
++ 0x4d8bfa89d0d73df2ull, 0x2b17e0b2544f10cdull, 0xfd86fe49b70a5c7dull,
++ 0x214495bbdf373f41ull, 0x00d313d584e857fdull, 0xa4ba47440496fcbeull,
++ 0xaec29e6ee8cac982ull, 0x7000a51987ec7038ull, 0xff66e42caeee333bull,
++ 0x03b4f63b8afd6b25ull, 0x5ab8d9c7bd7991dcull, 0x48741a6c2ed4684eull,
++ 0x2fdc6349af06940dull, 0xe974996fb03d7ecdull, 0x52ec8721ac7867f9ull,
++ 0x8edd2d00bcdd9d4aull, 0x41c759f83557de06ull, 0xa75409f23956d4b9ull,
++ 0xb6100fab123cd8a1ull, 0x2e8d623b3e7b21e2ull, 0xbca35f7792959da2ull,
++ 0x35fcb457200c03a5ull, 0xf74eb9281bb6c6e4ull, 0x87cc1d213d5d0b54ull,
++ 0x18ae42404964046full, 0x8bd2b496d868b275ull, 0xc234d8f51c5563f4ull,
++ 0xf9151ffff868e970ull, 0x271133eeae7be4a2ull, 0x25254932bb0fd922ull,
++ 0x104bcd64a60a9fc0ull, 0x0000006230290145ull
+ #endif
+ };
+
+--- glibc-2.3.2/stdlib/fpioconst.h 2002-03-12 04:24:56.000000000 -0500
++++ glibc-2.3.2/stdlib/fpioconst.h 2003-03-15 15:02:14.000000000 -0500
+@@ -1,5 +1,6 @@
+ /* Header file for constants used in floating point <-> decimal conversions.
+- Copyright (C) 1995,1996,1997,1998,1999,2002 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,7 +23,7 @@
+
+ #include <float.h>
+ #include <math.h>
+-#include "gmp.h"
++#include <gmp.h>
+
+
+ /* These values are used by __printf_fp, where they are noncritical (if the
+--- glibc-2.3.2/stdlib/grouping.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/stdlib/grouping.c 2003-06-11 18:10:28.000000000 -0400
+@@ -0,0 +1,202 @@
++/* Internal header for proving correct grouping in strings of numbers.
++ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <limits.h>
++#include <stddef.h>
++#include <string.h>
++
++#ifndef MAX
++#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); \
++ _a > _b ? _a : _b; })
++#endif
++
++#ifdef USE_WIDE_CHAR
++# include <wctype.h>
++# define L_(Ch) L##Ch
++# define UCHAR_TYPE wint_t
++# define STRING_TYPE wchar_t
++#else
++# define L_(Ch) Ch
++# define UCHAR_TYPE unsigned char
++# define STRING_TYPE char
++#endif
++
++#include "grouping.h"
++
++/* Find the maximum prefix of the string between BEGIN and END which
++ satisfies the grouping rules. It is assumed that at least one digit
++ follows BEGIN directly. */
++
++const STRING_TYPE *
++#ifdef USE_WIDE_CHAR
++__correctly_grouped_prefixwc (const STRING_TYPE *begin, const STRING_TYPE *end,
++ wchar_t thousands,
++#else
++__correctly_grouped_prefixmb (const STRING_TYPE *begin, const STRING_TYPE *end,
++ const char *thousands,
++#endif
++ const char *grouping)
++{
++#ifndef USE_WIDE_CHAR
++ size_t thousands_len;
++ int cnt;
++#endif
++
++ if (grouping == NULL)
++ return end;
++
++#ifndef USE_WIDE_CHAR
++ thousands_len = strlen (thousands);
++#endif
++
++ while (end > begin)
++ {
++ const STRING_TYPE *cp = end - 1;
++ const char *gp = grouping;
++
++ /* Check first group. */
++ while (cp >= begin)
++ {
++#ifdef USE_WIDE_CHAR
++ if (*cp == thousands)
++ break;
++#else
++ if (cp[thousands_len - 1] == *thousands)
++ {
++ for (cnt = 1; thousands[cnt] != '\0'; ++cnt)
++ if (thousands[cnt] != cp[thousands_len - 1 - cnt])
++ break;
++ if (thousands[cnt] == '\0')
++ break;
++ }
++#endif
++ --cp;
++ }
++
++ /* We allow the representation to contain no grouping at all even if
++ the locale specifies we can have grouping. */
++ if (cp < begin)
++ return end;
++
++ if (end - cp == (int) *gp + 1)
++ {
++ /* This group matches the specification. */
++
++ const STRING_TYPE *new_end;
++
++ if (cp < begin)
++ /* There is just one complete group. We are done. */
++ return end;
++
++ /* CP points to a thousands separator character. The preceding
++ remainder of the string from BEGIN to NEW_END is the part we
++ will consider if there is a grouping error in this trailing
++ portion from CP to END. */
++ new_end = cp - 1;
++
++ /* Loop while the grouping is correct. */
++ while (1)
++ {
++ /* Get the next grouping rule. */
++ ++gp;
++ if (*gp == 0)
++ /* If end is reached use last rule. */
++ --gp;
++
++ /* Skip the thousands separator. */
++ --cp;
++
++ if (*gp == CHAR_MAX
++#if CHAR_MIN < 0
++ || *gp < 0
++#endif
++ )
++ {
++ /* No more thousands separators are allowed to follow. */
++ while (cp >= begin)
++ {
++#ifdef USE_WIDE_CHAR
++ if (*cp == thousands)
++ break;
++#else
++ for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
++ if (thousands[cnt] != cp[thousands_len - cnt - 1])
++ break;
++ if (thousands[cnt] == '\0')
++ break;
++#endif
++ --cp;
++ }
++
++ if (cp < begin)
++ /* OK, only digits followed. */
++ return end;
++ }
++ else
++ {
++ /* Check the next group. */
++ const STRING_TYPE *group_end = cp;
++
++ while (cp >= begin)
++ {
++#ifdef USE_WIDE_CHAR
++ if (*cp == thousands)
++ break;
++#else
++ for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
++ if (thousands[cnt] != cp[thousands_len - cnt - 1])
++ break;
++ if (thousands[cnt] == '\0')
++ break;
++#endif
++ --cp;
++ }
++
++ if (cp < begin && group_end - cp <= (int) *gp)
++ /* Final group is correct. */
++ return end;
++
++ if (cp < begin || group_end - cp != (int) *gp)
++ /* Incorrect group. Punt. */
++ break;
++ }
++ }
++
++ /* The trailing portion of the string starting at NEW_END
++ contains a grouping error. So we will look for a correctly
++ grouped number in the preceding portion instead. */
++ end = new_end;
++ }
++ else
++ {
++ /* Even the first group was wrong; determine maximum shift. */
++ if (end - cp > (int) *gp + 1)
++ end = cp + (int) *gp + 1;
++ else if (cp < begin)
++ /* This number does not fill the first group, but is correct. */
++ return end;
++ else
++ /* CP points to a thousands separator character. */
++ end = cp;
++ }
++ }
++
++ return MAX (begin, end);
++}
+--- glibc-2.3.2/stdlib/grouping.h 2001-07-07 15:21:18.000000000 -0400
++++ glibc-2.3.2/stdlib/grouping.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Internal header for proving correct grouping in strings of numbers.
+- Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+@@ -18,169 +18,17 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <limits.h>
+-
+-#ifndef MAX
+-#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); \
+- _a > _b ? _a : _b; })
+-#endif
+-
+ /* Find the maximum prefix of the string between BEGIN and END which
+ satisfies the grouping rules. It is assumed that at least one digit
+ follows BEGIN directly. */
+-
+-static inline const STRING_TYPE *
+-correctly_grouped_prefix (const STRING_TYPE *begin, const STRING_TYPE *end,
+-#ifdef USE_WIDE_CHAR
+- wchar_t thousands,
+-#else
+- const char *thousands,
+-#endif
+- const char *grouping)
+-{
+-#ifndef USE_WIDE_CHAR
+- size_t thousands_len;
+- int cnt;
+-#endif
+-
+- if (grouping == NULL)
+- return end;
+-
+-#ifndef USE_WIDE_CHAR
+- thousands_len = strlen (thousands);
+-#endif
+-
+- while (end > begin)
+- {
+- const STRING_TYPE *cp = end - 1;
+- const char *gp = grouping;
+-
+- /* Check first group. */
+- while (cp >= begin)
+- {
+-#ifdef USE_WIDE_CHAR
+- if (*cp == thousands)
+- break;
+-#else
+- if (cp[thousands_len - 1] == *thousands)
+- {
+- for (cnt = 1; thousands[cnt] != '\0'; ++cnt)
+- if (thousands[cnt] != cp[thousands_len - 1 - cnt])
+- break;
+- if (thousands[cnt] == '\0')
+- break;
+- }
+-#endif
+- --cp;
+- }
+-
+- /* We allow the representation to contain no grouping at all even if
+- the locale specifies we can have grouping. */
+- if (cp < begin)
+- return end;
+-
+- if (end - cp == (int) *gp + 1)
+- {
+- /* This group matches the specification. */
+-
+- const STRING_TYPE *new_end;
+-
+- if (cp < begin)
+- /* There is just one complete group. We are done. */
+- return end;
+-
+- /* CP points to a thousands separator character. The preceding
+- remainder of the string from BEGIN to NEW_END is the part we
+- will consider if there is a grouping error in this trailing
+- portion from CP to END. */
+- new_end = cp - 1;
+-
+- /* Loop while the grouping is correct. */
+- while (1)
+- {
+- /* Get the next grouping rule. */
+- ++gp;
+- if (*gp == 0)
+- /* If end is reached use last rule. */
+- --gp;
+-
+- /* Skip the thousands separator. */
+- --cp;
+-
+- if (*gp == CHAR_MAX
+-#if CHAR_MIN < 0
+- || *gp < 0
+-#endif
+- )
+- {
+- /* No more thousands separators are allowed to follow. */
+- while (cp >= begin)
+- {
+-#ifdef USE_WIDE_CHAR
+- if (*cp == thousands)
+- break;
+-#else
+- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
+- if (thousands[cnt] != cp[thousands_len - cnt - 1])
+- break;
+- if (thousands[cnt] == '\0')
+- break;
+-#endif
+- --cp;
+- }
+-
+- if (cp < begin)
+- /* OK, only digits followed. */
+- return end;
+- }
+- else
+- {
+- /* Check the next group. */
+- const STRING_TYPE *group_end = cp;
+-
+- while (cp >= begin)
+- {
+-#ifdef USE_WIDE_CHAR
+- if (*cp == thousands)
+- break;
+-#else
+- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
+- if (thousands[cnt] != cp[thousands_len - cnt - 1])
+- break;
+- if (thousands[cnt] == '\0')
+- break;
+-#endif
+- --cp;
+- }
+-
+- if (cp < begin && group_end - cp <= (int) *gp)
+- /* Final group is correct. */
+- return end;
+-
+- if (cp < begin || group_end - cp != (int) *gp)
+- /* Incorrect group. Punt. */
+- break;
+- }
+- }
+-
+- /* The trailing portion of the string starting at NEW_END
+- contains a grouping error. So we will look for a correctly
+- grouped number in the preceding portion instead. */
+- end = new_end;
+- }
+- else
+- {
+- /* Even the first group was wrong; determine maximum shift. */
+- if (end - cp > (int) *gp + 1)
+- end = cp + (int) *gp + 1;
+- else if (cp < begin)
+- /* This number does not fill the first group, but is correct. */
+- return end;
+- else
+- /* CP points to a thousands separator character. */
+- end = cp;
+- }
+- }
+-
+- return MAX (begin, end);
+-}
++extern const wchar_t *__correctly_grouped_prefixwc (const wchar_t *begin,
++ const wchar_t *end,
++ wchar_t thousands,
++ const char *grouping)
++ attribute_hidden;
++
++extern const char *__correctly_grouped_prefixmb (const char *begin,
++ const char *end,
++ const char *thousands,
++ const char *grouping)
++ attribute_hidden;
+--- glibc-2.3.2/stdlib/groupingwc.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/stdlib/groupingwc.c 2003-06-11 18:10:46.000000000 -0400
+@@ -0,0 +1,2 @@
++#define USE_WIDE_CHAR 1
++#include "grouping.c"
+--- glibc-2.3.2/stdlib/rpmatch.c 2001-07-07 15:21:18.000000000 -0400
++++ glibc-2.3.2/stdlib/rpmatch.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* Determine whether string value is affirmation or negative response
+ according to current locale's data.
+ This file is part of the GNU C Library.
+- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -29,11 +29,11 @@
+ {
+ /* Match against one of the response patterns, compiling the pattern
+ first if necessary. */
+- auto inline int try (const int tag, const int match, const int nomatch,
+- const char **lastp, regex_t *re);
++ auto int try (const int tag, const int match, const int nomatch,
++ const char **lastp, regex_t *re);
+
+- inline int try (const int tag, const int match, const int nomatch,
+- const char **lastp, regex_t *re)
++ int try (const int tag, const int match, const int nomatch,
++ const char **lastp, regex_t *re)
+ {
+ const char *pattern = nl_langinfo (tag);
+ if (pattern != *lastp)
+--- glibc-2.3.2/stdlib/stdlib.h 2002-08-27 22:11:33.000000000 -0400
++++ glibc-2.3.2/stdlib/stdlib.h 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-99,2000,01,02 Free Software Foundation, Inc.
++/* Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -410,7 +410,9 @@
+ /* Read a number from a string S in base 64 as above. */
+ extern long int a64l (__const char *__s) __THROW __attribute_pure__;
+
++#endif /* Use SVID || extended X/Open. */
+
++#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD
+ # include <sys/types.h> /* we need int32_t... */
+
+ /* These are the functions that actually do things. The `random', `srandom',
+@@ -463,7 +465,7 @@
+ extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf) __THROW;
+ # endif /* Use misc. */
+-#endif /* Use SVID || extended X/Open. */
++#endif /* Use SVID || extended X/Open || BSD. */
+
+
+ __BEGIN_NAMESPACE_STD
+@@ -664,18 +666,21 @@
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the filename unique.
+ Returns a file descriptor open on the file for reading and writing,
+- or -1 if it cannot create a uniquely-named file. */
++ or -1 if it cannot create a uniquely-named file.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ # ifndef __USE_FILE_OFFSET64
+-extern int mkstemp (char *__template) __THROW;
++extern int mkstemp (char *__template);
+ # else
+ # ifdef __REDIRECT
+-extern int __REDIRECT (mkstemp, (char *__template) __THROW, mkstemp64);
++extern int __REDIRECT (mkstemp, (char *__template), mkstemp64);
+ # else
+ # define mkstemp mkstemp64
+ # endif
+ # endif
+ # ifdef __USE_LARGEFILE64
+-extern int mkstemp64 (char *__template) __THROW;
++extern int mkstemp64 (char *__template);
+ # endif
+ #endif
+
+@@ -690,8 +695,11 @@
+
+
+ __BEGIN_NAMESPACE_STD
+-/* Execute the given line as a shell command. */
+-extern int system (__const char *__command) __THROW;
++/* Execute the given line as a shell command.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int system (__const char *__command);
+ __END_NAMESPACE_STD
+
+
+@@ -871,7 +879,7 @@
+
+ #ifdef __USE_XOPEN2K
+ /* Return a master pseudo-terminal handle. */
+-extern int posix_openpt (int __oflag) __THROW;
++extern int posix_openpt (int __oflag);
+ #endif
+
+ #ifdef __USE_XOPEN
+@@ -898,7 +906,7 @@
+ extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW;
+
+ /* Open a master pseudo terminal and return its file descriptor. */
+-extern int getpt (void) __THROW;
++extern int getpt (void);
+ #endif
+
+ #ifdef __USE_BSD
+--- glibc-2.3.2/stdlib/strtod.c 2003-02-22 04:10:31.000000000 -0500
++++ glibc-2.3.2/stdlib/strtod.c 2003-08-21 08:37:08.000000000 -0400
+@@ -64,9 +64,11 @@
+ /* The gmp headers need some configuration frobs. */
+ #define HAVE_ALLOCA 1
+
++/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
++ and _LONG_LONG_LIMB in it can take effect into gmp.h. */
++#include <gmp-mparam.h>
+ #include <gmp.h>
+ #include <gmp-impl.h>
+-#include <gmp-mparam.h>
+ #include <longlong.h>
+ #include "fpioconst.h"
+
+@@ -157,7 +159,7 @@
+ # define MAX_FAC_PER_LIMB 1000000000UL
+ #elif BITS_PER_MP_LIMB == 64
+ # define MAX_DIG_PER_LIMB 19
+-# define MAX_FAC_PER_LIMB 10000000000000000000UL
++# define MAX_FAC_PER_LIMB 10000000000000000000ULL
+ #else
+ # error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
+ #endif
+@@ -166,14 +168,14 @@
+ /* Local data structure. */
+ static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
+ { 0, 10, 100,
+- 1000, 10000, 100000,
+- 1000000, 10000000, 100000000,
+- 1000000000
++ 1000, 10000, 100000L,
++ 1000000L, 10000000L, 100000000L,
++ 1000000000L
+ #if BITS_PER_MP_LIMB > 32
+- , 10000000000U, 100000000000U,
+- 1000000000000U, 10000000000000U, 100000000000000U,
+- 1000000000000000U, 10000000000000000U, 100000000000000000U,
+- 1000000000000000000U, 10000000000000000000U
++ , 10000000000ULL, 100000000000ULL,
++ 1000000000000ULL, 10000000000000ULL, 100000000000000ULL,
++ 1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
++ 1000000000000000000ULL, 10000000000000000000ULL
+ #endif
+ #if BITS_PER_MP_LIMB > 64
+ #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
+@@ -205,7 +207,7 @@
+
+ /* Return a floating point number of the needed type according to the given
+ multi-precision number after possible rounding. */
+-static inline FLOAT
++static FLOAT
+ round_and_return (mp_limb_t *retval, int exponent, int negative,
+ mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
+ {
+@@ -300,7 +302,7 @@
+ character od the string that is not part of the integer as the function
+ value. If the EXPONENT is small enough to be taken as an additional
+ factor for the resulting number (see code) multiply by it. */
+-static inline const STRING_TYPE *
++static const STRING_TYPE *
+ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
+ int *exponent
+ #ifndef USE_WIDE_CHAR
+@@ -399,10 +401,11 @@
+ Tege doesn't like this function so I have to write it here myself. :)
+ --drepper */
+ static inline void
++__attribute ((always_inline))
+ __mpn_lshift_1 (mp_limb_t *ptr, mp_size_t size, unsigned int count,
+ mp_limb_t limb)
+ {
+- if (count == BITS_PER_MP_LIMB)
++ if (__builtin_constant_p (count) && count == BITS_PER_MP_LIMB)
+ {
+ /* Optimize the case of shifting by exactly a word:
+ just copy words, with no actual bit-shifting. */
+@@ -566,7 +569,7 @@
+ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
+ if (cp[cnt] != decimal[cnt])
+ break;
+- if (decimal[cnt] == '\0' && cp[1] >= '0' && cp[1] <= '9')
++ if (decimal[cnt] == '\0' && cp[cnt] >= '0' && cp[cnt] <= '9')
+ {
+ /* We accept it. This funny construct is here only to indent
+ the code directly. */
+@@ -690,7 +693,13 @@
+ || (CHAR_TYPE) TOLOWER (c) != L_('p')))
+ && (base != 16 && (CHAR_TYPE) TOLOWER (c) != L_('e')))
+ {
+- tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
++#ifdef USE_WIDE_CHAR
++ tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
++ grouping);
++#else
++ tp = __correctly_grouped_prefixmb (start_of_digits, cp, thousands,
++ grouping);
++#endif
+ /* If TP is at the start of the digits, there was no correctly
+ grouped prefix of the string; so no number found. */
+ RETURN (0.0, tp == start_of_digits ? (base == 16 ? cp - 1 : nptr) : tp);
+@@ -731,7 +740,13 @@
+ if (grouping && dig_no > 0)
+ {
+ /* Check the grouping of the digits. */
+- tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
++#ifdef USE_WIDE_CHAR
++ tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
++ grouping);
++#else
++ tp = __correctly_grouped_prefixmb (start_of_digits, cp, thousands,
++ grouping);
++#endif
+ if (cp != tp)
+ {
+ /* Less than the entire string was correctly grouped. */
+@@ -880,7 +895,7 @@
+ if (dig_no == int_no && dig_no > 0 && exponent < 0)
+ do
+ {
+- while (expp[-1] < L_('0') || expp[-1] > L_('9'))
++ while (! (base == 16 ? ISXDIGIT (expp[-1]) : ISDIGIT (expp[-1])))
+ --expp;
+
+ if (expp[-1] != L_('0'))
+--- glibc-2.3.2/stdlib/tst-bsearch.c 2002-09-30 18:02:40.000000000 -0400
++++ glibc-2.3.2/stdlib/tst-bsearch.c 2003-09-19 22:37:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+@@ -19,6 +19,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <tst-stack-align.h>
+
+ struct entry
+ {
+@@ -40,6 +41,7 @@
+ };
+ #define narr (sizeof (arr) / sizeof (arr[0]))
+
++static int align_check;
+
+ static int
+ comp (const void *p1, const void *p2)
+@@ -47,6 +49,9 @@
+ struct entry *e1 = (struct entry *) p1;
+ struct entry *e2 = (struct entry *) p2;
+
++ if (!align_check)
++ align_check = TEST_STACK_ALIGN () ? -1 : 1;
++
+ return e1->val - e2->val;
+ }
+
+@@ -128,6 +133,17 @@
+ }
+ }
+
++ if (align_check == 0)
++ {
++ puts ("alignment not checked");
++ result = 1;
++ }
++ else if (align_check == -1)
++ {
++ puts ("stack not sufficiently aligned");
++ result = 1;
++ }
++
+ if (result == 0)
+ puts ("all OK");
+
+--- glibc-2.3.2/stdlib/tst-limits.c 2000-11-20 12:28:47.000000000 -0500
++++ glibc-2.3.2/stdlib/tst-limits.c 2003-08-21 08:37:08.000000000 -0400
+@@ -62,8 +62,8 @@
+ TEST (PAGE_SIZE, "d", getpagesize ());
+ #endif
+
+- TEST (WORD_BIT, "zd", sizeof (int) * CHAR_BIT);
+- TEST (LONG_BIT, "zd", sizeof (long int) * CHAR_BIT);
++ TEST (WORD_BIT, "d", (int) sizeof (int) * CHAR_BIT);
++ TEST (LONG_BIT, "d", (int) sizeof (long int) * CHAR_BIT);
+
+ return result;
+ }
+--- glibc-2.3.2/stdlib/tst-qsort.c 2002-01-29 04:04:45.000000000 -0500
++++ glibc-2.3.2/stdlib/tst-qsort.c 2003-09-19 22:37:06.000000000 -0400
+@@ -1,17 +1,24 @@
+ /* Test case by Paul Eggert <eggert@twinsun.com> */
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <tst-stack-align.h>
+
+ struct big { char c[4 * 1024]; };
+
+ struct big *array;
+ struct big *array_end;
+
++static int align_check;
++
+ int
+ compare (void const *a1, void const *b1)
+ {
+ struct big const *a = a1;
+ struct big const *b = b1;
++
++ if (!align_check)
++ align_check = TEST_STACK_ALIGN () ? -1 : 1;
++
+ if (! (array <= a && a < array_end
+ && array <= b && b < array_end))
+ {
+@@ -38,5 +45,11 @@
+
+ qsort (array, array_members, sizeof *array, compare);
+
++ if (align_check == -1)
++ {
++ puts ("stack not sufficiently aligned");
++ exit (EXIT_FAILURE);
++ }
++
+ return 0;
+ }
+--- glibc-2.3.2/stdlib/tst-strtod.c 2003-02-22 04:08:26.000000000 -0500
++++ glibc-2.3.2/stdlib/tst-strtod.c 2003-08-21 08:37:08.000000000 -0400
+@@ -71,6 +71,7 @@
+ { "-Inf", -HUGE_VAL, '\0', 0 },
+ { "+InFiNiTy", HUGE_VAL, '\0', 0 },
+ #endif
++ { "0x80000Ap-23", 0x80000Ap-23, '\0', 0 },
+ { NULL, 0, '\0', 0 }
+ };
+
+@@ -149,10 +150,10 @@
+ }
+
+ const char input2[] = "+1.000000000116415321826934814453125";
+- if (strtold (input2, NULL) != +1.000000000116415321826934814453125)
++ if (strtold (input2, NULL) != +1.000000000116415321826934814453125L)
+ {
+ printf ("input2: %La != %La\n", strtold (input2, NULL),
+- +1.000000000116415321826934814453125);
++ +1.000000000116415321826934814453125L);
+ status = 1;
+ }
+
+--- glibc-2.3.2/streams/stropts.h 2002-10-25 04:02:16.000000000 -0400
++++ glibc-2.3.2/streams/stropts.h 2003-04-24 20:05:58.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,31 +44,41 @@
+ /* Test whether FILDES is associated with a STREAM-based file. */
+ extern int isastream (int __fildes) __THROW;
+
+-/* Receive next message from a STREAMS file. */
++/* Receive next message from a STREAMS file.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int getmsg (int __fildes, struct strbuf *__restrict __ctlptr,
+ struct strbuf *__restrict __dataptr,
+- int *__restrict __flagsp) __THROW;
++ int *__restrict __flagsp);
+
+ /* Receive next message from a STREAMS file, with *FLAGSP allowing to
+- control which message. */
++ control which message.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int getpmsg (int __fildes, struct strbuf *__restrict __ctlptr,
+ struct strbuf *__restrict __dataptr,
+- int *__restrict __bandp, int *__restrict __flagsp)
+- __THROW;
++ int *__restrict __bandp, int *__restrict __flagsp);
+
+ /* Perform the I/O control operation specified by REQUEST on FD.
+ One argument may follow; its presence and type depend on REQUEST.
+ Return value depends on REQUEST. Usually -1 indicates error. */
+ extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
+
+-/* Send a message on a STREAM. */
++/* Send a message on a STREAM.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int putmsg (int __fildes, __const struct strbuf *__ctlptr,
+- __const struct strbuf *__dataptr, int __flags) __THROW;
++ __const struct strbuf *__dataptr, int __flags);
++
++/* Send a message on a STREAM to the BAND.
+
+-/* Send a message on a STREAM to the BAND. */
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int putpmsg (int __fildes, __const struct strbuf *__ctlptr,
+- __const struct strbuf *__dataptr, int __band, int __flags)
+- __THROW;
++ __const struct strbuf *__dataptr, int __band, int __flags);
+
+ /* Attach a STREAMS-based file descriptor FILDES to a file PATH in the
+ file system name space. */
+--- glibc-2.3.2/string/Makefile 2002-11-08 14:35:04.000000000 -0500
++++ glibc-2.3.2/string/Makefile 2003-09-19 22:37:06.000000000 -0400
+@@ -45,9 +45,9 @@
+ # for -fbounded-pointer compiles. Glibc uses memchr for explicit checks.
+ o-objects.ob := memcpy.o memset.o memchr.o
+
+-strop-tests := memchr memcmp memcpy memmove mempcpy memset stpcpy \
+- stpncpy strcat strchr strcmp strcpy strcspn strlen \
+- strncmp strncpy strpbrk strrchr strspn
++strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \
++ stpcpy stpncpy strcat strchr strcmp strcpy strcspn \
++ strlen strncmp strncpy strpbrk strrchr strspn
+ tests := tester inl-tester noinl-tester testcopy test-ffs \
+ tst-strlen stratcliff tst-svc tst-inlcall \
+ bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \
+--- glibc-2.3.2/string/bits/string2.h 2002-05-25 02:09:18.000000000 -0400
++++ glibc-2.3.2/string/bits/string2.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Machine-independant string function optimizations.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -76,7 +76,7 @@
+ use unaligned memory accesses. */
+ # define __STRING2_COPY_TYPE(N) \
+ typedef struct { unsigned char __arr[N]; } \
+- __STRING2_COPY_ARR##N __attribute__ ((packed))
++ __attribute__ ((__packed__)) __STRING2_COPY_ARR##N
+ __STRING2_COPY_TYPE (2);
+ __STRING2_COPY_TYPE (3);
+ __STRING2_COPY_TYPE (4);
+--- glibc-2.3.2/string/stratcliff.c 2002-09-09 20:23:48.000000000 -0400
++++ glibc-2.3.2/string/stratcliff.c 2003-09-19 22:37:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test for string function add boundaries of usable memory.
+- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -306,6 +306,43 @@
+ outer, inner);
+ result = 1;
+ }
++
++ /* memccpy test */
++ memset (adr, '\0', size);
++ for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
++ for (inner = 0; inner < size - outer; ++inner)
++ if (memccpy (dest, &adr[outer], '\1', inner) != NULL)
++ {
++ printf ("memccpy flunked full copy for outer = %d, inner = %d\n",
++ outer, inner);
++ result = 1;
++ }
++ for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
++ for (middle = 0; middle < size - outer; ++middle)
++ {
++ memset (dest, '\2', middle + 1);
++ for (inner = 0; inner < middle; ++inner)
++ {
++ adr[outer + inner] = '\1';
++
++ if (memccpy (dest, &adr[outer], '\1', middle + 128)
++ != dest + inner + 1)
++ {
++ printf ("\
++memccpy flunked partial copy for outer = %d, middle = %d, inner = %d\n",
++ outer, middle, inner);
++ result = 1;
++ }
++ else if (dest[inner + 1] != '\2')
++ {
++ printf ("\
++memccpy copied too much for outer = %d, middle = %d, inner = %d\n",
++ outer, middle, inner);
++ result = 1;
++ }
++ adr[outer + inner] = '\0';
++ }
++ }
+ }
+
+ return result;
+--- glibc-2.3.2/string/string-inlines.c 2002-12-31 17:58:40.000000000 -0500
++++ glibc-2.3.2/string/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,39 +0,0 @@
+-/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-/* <bits/string.h> and <bits/string2.h> declare some extern inline
+- functions. These functions are declared additionally here if
+- inlining is not possible. */
+-
+-#undef __USE_STRING_INLINES
+-#define __USE_STRING_INLINES
+-#define _FORCE_INLINES
+-#define __STRING_INLINE /* empty */
+-
+-/* This is to avoid PLT entries for the x86 version. */
+-#define __memcpy_g __memcpy_g_internal
+-#define __strchr_g __strchr_g_internal
+-
+-#include <string.h>
+-
+-#ifdef __memcpy_c
+-# undef __memcpy_g
+-strong_alias (__memcpy_g_internal, __memcpy_g)
+-# undef __strchr_g
+-strong_alias (__strchr_g_internal, __strchr_g)
+-#endif
+--- glibc-2.3.2/string/string.h 2002-08-27 21:04:45.000000000 -0400
++++ glibc-2.3.2/string/string.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1993, 1995-2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1993, 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+--- glibc-2.3.2/string/strxfrm.c 2002-10-09 04:53:03.000000000 -0400
++++ glibc-2.3.2/string/strxfrm.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-1999,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+@@ -51,7 +51,7 @@
+ #ifndef WIDE_CHAR_VERSION
+
+ /* We need UTF-8 encoding of numbers. */
+-static inline int
++static int
+ utf8_encode (char *buf, int val)
+ {
+ int retval;
+@@ -196,9 +196,6 @@
+ idxarr = (int32_t *) alloca (srclen * sizeof (int32_t));
+ rulearr = (unsigned char *) alloca (srclen + 1);
+ }
+- /* This element is only read, the value never used but to determine
+- another value which then is ignored. */
+- rulearr[srclen] = '\0';
+
+ idxmax = 0;
+ do
+@@ -211,6 +208,10 @@
+ }
+ while (*usrc != L('\0'));
+
++ /* This element is only read, the value never used but to determine
++ another value which then is ignored. */
++ rulearr[idxmax] = '\0';
++
+ /* Now the passes over the weights. We now use the indeces we found
+ before. */
+ needed = 0;
+--- glibc-2.3.2/string/test-memccpy.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/string/test-memccpy.c 2003-09-10 01:22:12.000000000 -0400
+@@ -0,0 +1,293 @@
++/* Test and measure memccpy functions.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define TEST_MAIN
++#include "test-string.h"
++
++void *simple_memccpy (void *, const void *, int, size_t);
++void *stupid_memccpy (void *, const void *, int, size_t);
++
++IMPL (stupid_memccpy, 0)
++IMPL (simple_memccpy, 0)
++IMPL (memccpy, 1)
++
++void *
++simple_memccpy (void *dst, const void *src, int c, size_t n)
++{
++ const char *s = src;
++ char *d = dst;
++
++ while (n-- > 0)
++ if ((*d++ = *s++) == (char) c)
++ return d;
++
++ return NULL;
++}
++
++void *
++stupid_memccpy (void *dst, const void *src, int c, size_t n)
++{
++ void *p = memchr (src, c, n);
++
++ if (p != NULL)
++ return mempcpy (dst, src, p - src + 1);
++
++ memcpy (dst, src, n);
++ return NULL;
++}
++
++typedef void *(*proto_t) (void *, const void *, int c, size_t);
++
++static void
++do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len,
++ size_t n)
++{
++ void *expect = len > n ? NULL : (char *) dst + len;
++ if (CALL (impl, dst, src, c, n) != expect)
++ {
++ error (0, 0, "Wrong result in function %s %p %p", impl->name,
++ CALL (impl, dst, src, c, n), expect);
++ ret = 1;
++ return;
++ }
++
++ if (memcmp (dst, src, len > n ? n : len) != 0)
++ {
++ error (0, 0, "Wrong result in function %s", impl->name);
++ ret = 1;
++ return;
++ }
++
++ if (HP_TIMING_AVAIL)
++ {
++ hp_timing_t start __attribute__ ((unused));
++ hp_timing_t stop __attribute__ ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
++ size_t i;
++
++ for (i = 0; i < 32; ++i)
++ {
++ HP_TIMING_NOW (start);
++ CALL (impl, dst, src, c, n);
++ HP_TIMING_NOW (stop);
++ HP_TIMING_BEST (best_time, start, stop);
++ }
++
++ printf ("\t%zd", (size_t) best_time);
++ }
++}
++
++static void
++do_test (size_t align1, size_t align2, int c, size_t len, size_t n,
++ int max_char)
++{
++ size_t i;
++ char *s1, *s2;
++
++ align1 &= 7;
++ if (align1 + len >= page_size)
++ return;
++
++ align2 &= 7;
++ if (align2 + len >= page_size)
++ return;
++
++ s1 = buf1 + align1;
++ s2 = buf2 + align2;
++
++ for (i = 0; i < len - 1; ++i)
++ {
++ s1[i] = 32 + 23 * i % (max_char - 32);
++ if (s1[i] == (char) c)
++ --s1[i];
++ }
++ s1[len - 1] = c;
++ for (i = len; i + align1 < page_size && i < len + 64; ++i)
++ s1[i] = 32 + 32 * i % (max_char - 32);
++
++ if (HP_TIMING_AVAIL)
++ printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2);
++
++ FOR_EACH_IMPL (impl, 0)
++ do_one_test (impl, s2, s1, c, len, n);
++
++ if (HP_TIMING_AVAIL)
++ putchar ('\n');
++}
++
++static void
++do_random_tests (void)
++{
++ size_t i, j, n, align1, align2, len, size, mode;
++ unsigned char *p1 = buf1 + page_size - 512;
++ unsigned char *p2 = buf2 + page_size - 512;
++ unsigned char *res, c;
++
++ for (n = 0; n < ITERATIONS; n++)
++ {
++ mode = random ();
++ c = random ();
++ if (mode & 1)
++ {
++ size = random () & 255;
++ align1 = 512 - size - (random () & 15);
++ if (mode & 2)
++ align2 = align1 - (random () & 24);
++ else
++ align2 = align1 - (random () & 31);
++ if (mode & 4)
++ {
++ j = align1;
++ align1 = align2;
++ align2 = j;
++ }
++ if (mode & 8)
++ len = size - (random () & 31);
++ else
++ len = 512;
++ if (len >= 512)
++ len = random () & 511;
++ }
++ else
++ {
++ align1 = random () & 31;
++ if (mode & 2)
++ align2 = random () & 31;
++ else
++ align2 = align1 + (random () & 24);
++ len = random () & 511;
++ j = align1;
++ if (align2 > j)
++ j = align2;
++ if (mode & 4)
++ {
++ size = random () & 511;
++ if (size + j > 512)
++ size = 512 - j - (random() & 31);
++ }
++ else
++ size = 512 - j;
++ if ((mode & 8) && len + j >= 512)
++ len = 512 - j - (random () & 7);
++ }
++ j = len + align1 + 64;
++ if (j > 512)
++ j = 512;
++ for (i = 0; i < j; i++)
++ {
++ if (i == len + align1)
++ p1[i] = c;
++ else
++ {
++ p1[i] = random () & 255;
++ if (i >= align1 && i < len + align1 && p1[i] == c)
++ p1[i] = (random () & 127) + 3 + c;
++ }
++ }
++
++ FOR_EACH_IMPL (impl, 1)
++ {
++ unsigned char *expect;
++ memset (p2 - 64, '\1', 512 + 64);
++ res = CALL (impl, p2 + align2, p1 + align1, (char) c, size);
++ if (len >= size)
++ expect = NULL;
++ else
++ expect = p2 + align2 + len + 1;
++
++ if (res != expect)
++ {
++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %d) %p != %p",
++ n, impl->name, align1, align2, len, size, c, res, expect);
++ ret = 1;
++ }
++ for (j = 0; j < align2 + 64; ++j)
++ {
++ if (p2[j - 64] != '\1')
++ {
++ error (0, 0, "Iteration %zd - garbage before, %s (%zd, %zd, %zd)",
++ n, impl->name, align1, align2, len);
++ ret = 1;
++ break;
++ }
++ }
++ j = align2 + len + 1;
++ if (size + align2 < j)
++ j = size + align2;
++ for (; j < 512; ++j)
++ {
++ if (p2[j] != '\1')
++ {
++ error (0, 0, "Iteration %zd - garbage after, %s (%zd, %zd, %zd)",
++ n, impl->name, align1, align2, len);
++ ret = 1;
++ break;
++ }
++ }
++ j = len + 1;
++ if (size < j)
++ j = size;
++ if (memcmp (p1 + align1, p2 + align2, j))
++ {
++ error (0, 0, "Iteration %zd - different strings, %s (%zd, %zd, %zd)",
++ n, impl->name, align1, align2, len);
++ ret = 1;
++ }
++ }
++ }
++}
++
++int
++test_main (void)
++{
++ size_t i;
++
++ test_init ();
++
++ printf ("%28s", "");
++ FOR_EACH_IMPL (impl, 0)
++ printf ("\t%s", impl->name);
++ putchar ('\n');
++
++ for (i = 1; i < 8; ++i)
++ {
++ do_test (i, i, 12, 16, 16, 127);
++ do_test (i, i, 23, 16, 16, 255);
++ do_test (i, 2 * i, 28, 16, 16, 127);
++ do_test (2 * i, i, 31, 16, 16, 255);
++ do_test (8 - i, 2 * i, 1, 1 << i, 2 << i, 127);
++ do_test (2 * i, 8 - i, 17, 2 << i, 1 << i, 127);
++ do_test (8 - i, 2 * i, 0, 1 << i, 2 << i, 255);
++ do_test (2 * i, 8 - i, i, 2 << i, 1 << i, 255);
++ }
++
++ for (i = 1; i < 8; ++i)
++ {
++ do_test (0, 0, i, 4 << i, 8 << i, 127);
++ do_test (0, 0, i, 16 << i, 8 << i, 127);
++ do_test (8 - i, 2 * i, i, 4 << i, 8 << i, 127);
++ do_test (8 - i, 2 * i, i, 16 << i, 8 << i, 127);
++ }
++
++ do_random_tests ();
++ return ret;
++}
++
++#include "../test-skeleton.c"
+--- glibc-2.3.2/string/test-memchr.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-memchr.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure memchr functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -50,7 +50,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -74,7 +76,7 @@
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+-
++
+ for (i = 0; i < len; ++i)
+ {
+ buf1[align + i] = 1 + 23 * i % 127;
+--- glibc-2.3.2/string/test-memcmp.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-memcmp.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure memcmp functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -54,7 +54,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -110,7 +112,8 @@
+ do_random_tests (void)
+ {
+ size_t i, j, n, align1, align2, pos, len;
+- int result, r;
++ int result;
++ long r;
+ unsigned char *p1 = buf1 + page_size - 512;
+ unsigned char *p2 = buf2 + page_size - 512;
+
+@@ -159,11 +162,14 @@
+ FOR_EACH_IMPL (impl, 1)
+ {
+ r = CALL (impl, p1 + align1, p2 + align2, len);
++ /* Test whether on 64-bit architectures where ABI requires
++ callee to promote has the promotion been done. */
++ asm ("" : "=g" (r) : "0" (r));
+ if ((r == 0 && result)
+ || (r < 0 && result >= 0)
+ || (r > 0 && result <= 0))
+ {
+- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
+ n, impl->name, align1, align2, len, pos, r, result, p1, p2);
+ ret = 1;
+ }
+--- glibc-2.3.2/string/test-memcpy.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-memcpy.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure memcpy functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -71,7 +71,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -172,7 +174,7 @@
+ if (align2 + len > size2)
+ align2 = size2 - len;
+ }
+- }
++ }
+ p1 = buf1 + page_size - size1;
+ p2 = buf2 + page_size - size2;
+ c = random () & 255;
+--- glibc-2.3.2/string/test-memmove.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-memmove.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure memmove functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -70,7 +70,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/test-memset.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-memset.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure memset functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -59,7 +59,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/test-strcat.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-strcat.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strcat functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -59,7 +59,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/test-strchr.c 2002-11-09 18:24:03.000000000 -0500
++++ glibc-2.3.2/string/test-strchr.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strchr functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -34,7 +34,7 @@
+ {
+ for (; *s != (char) c; ++s)
+ if (*s == '\0')
+- return NULL;
++ return NULL;
+ return (char *) s;
+ }
+
+@@ -63,7 +63,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -87,7 +89,7 @@
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+-
++
+ for (i = 0; i < len; ++i)
+ {
+ buf1[align + i] = 32 + 23 * i % (max_char - 32);
+--- glibc-2.3.2/string/test-strcmp.c 2002-11-09 18:24:03.000000000 -0500
++++ glibc-2.3.2/string/test-strcmp.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strcmp functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -68,7 +68,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -126,7 +128,8 @@
+ do_random_tests (void)
+ {
+ size_t i, j, n, align1, align2, pos, len1, len2;
+- int result, r;
++ int result;
++ long r;
+ unsigned char *p1 = buf1 + page_size - 512;
+ unsigned char *p2 = buf2 + page_size - 512;
+
+@@ -196,11 +199,14 @@
+ FOR_EACH_IMPL (impl, 1)
+ {
+ r = CALL (impl, p1 + align1, p2 + align2);
++ /* Test whether on 64-bit architectures where ABI requires
++ callee to promote has the promotion been done. */
++ asm ("" : "=g" (r) : "0" (r));
+ if ((r == 0 && result)
+ || (r < 0 && result >= 0)
+ || (r > 0 && result <= 0))
+ {
+- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
+ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2);
+ ret = 1;
+ }
+--- glibc-2.3.2/string/test-strcpy.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-strcpy.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strcpy functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -61,7 +61,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));;
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/test-strlen.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-strlen.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strlen functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -58,7 +58,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -81,7 +83,7 @@
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+-
++
+ for (i = 0; i < len; ++i)
+ buf1[align + i] = 1 + 7 * i % max_char;
+ buf1[align + len] = 0;
+--- glibc-2.3.2/string/test-strncmp.c 2002-11-09 18:24:03.000000000 -0500
++++ glibc-2.3.2/string/test-strncmp.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strncmp functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -68,7 +68,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -132,7 +134,8 @@
+ do_random_tests (void)
+ {
+ size_t i, j, n, align1, align2, pos, len1, len2, size;
+- int result, r;
++ int result;
++ long r;
+ unsigned char *p1 = buf1 + page_size - 512;
+ unsigned char *p2 = buf2 + page_size - 512;
+
+@@ -206,11 +209,14 @@
+ FOR_EACH_IMPL (impl, 1)
+ {
+ r = CALL (impl, p1 + align1, p2 + align2, size);
++ /* Test whether on 64-bit architectures where ABI requires
++ callee to promote has the promotion been done. */
++ asm ("" : "=g" (r) : "0" (r));
+ if ((r == 0 && result)
+ || (r < 0 && result >= 0)
+ || (r > 0 && result <= 0))
+ {
+- error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd, %zd) %d != %d, p1 %p p2 %p",
++ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
+ n, impl->name, align1, align2, len1, len2, pos, size, r, result, p1, p2);
+ ret = 1;
+ }
+--- glibc-2.3.2/string/test-strncpy.c 2002-12-07 04:01:32.000000000 -0500
++++ glibc-2.3.2/string/test-strncpy.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strncpy functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -93,7 +93,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute__ ((unused));
++ hp_timing_t stop __attribute__ ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/test-strpbrk.c 2002-11-09 18:24:03.000000000 -0500
++++ glibc-2.3.2/string/test-strpbrk.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strpbrk functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -73,7 +73,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/test-strrchr.c 2002-11-07 14:14:44.000000000 -0500
++++ glibc-2.3.2/string/test-strrchr.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strrchr functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -53,7 +53,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+@@ -77,7 +79,7 @@
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+-
++
+ for (i = 0; i < len; ++i)
+ {
+ buf1[align + i] = random () & max_char;
+--- glibc-2.3.2/string/test-strspn.c 2002-11-09 18:24:03.000000000 -0500
++++ glibc-2.3.2/string/test-strspn.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test and measure strspn functions.
+- Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+@@ -77,7 +77,9 @@
+
+ if (HP_TIMING_AVAIL)
+ {
+- hp_timing_t start, stop, best_time = ~ (hp_timing_t) 0;
++ hp_timing_t start __attribute ((unused));
++ hp_timing_t stop __attribute ((unused));
++ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+--- glibc-2.3.2/string/tester.c 2003-01-14 01:44:06.000000000 -0500
++++ glibc-2.3.2/string/tester.c 2003-04-12 11:39:44.000000000 -0400
+@@ -89,8 +89,8 @@
+ int k;
+ for (k = 0; k < 0x3f; k++)
+ {
+- buf1[j] = '0' ^ (k & 4);
+- buf2[j] = '4' ^ (k & 4);
++ buf1[k] = '0' ^ (k & 4);
++ buf2[k] = '4' ^ (k & 4);
+ }
+ buf1[i] = buf1[0x3f] = 0;
+ buf2[j] = buf2[0x3f] = 0;
+--- glibc-2.3.2/sunrpc/Makefile 2002-10-17 13:05:56.000000000 -0400
++++ glibc-2.3.2/sunrpc/Makefile 2003-09-19 22:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1994-2001, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1994-2001, 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -54,7 +54,8 @@
+ $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
+ install-others = $(inst_sysconfdir)/rpc
+ generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
+- $(rpcsvc:%.x=rpcsvc/%.stmp) rpc-proto.c rpc-proto.d rpcgen
++ $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
++generated-dirs := rpcsvc
+
+ routines := auth_none auth_unix authuxprot bindrsvprt \
+ clnt_gen clnt_perr clnt_raw clnt_simp clnt_tcp \
+@@ -117,6 +118,11 @@
+ CFLAGS-xnfs_prot.c = -Wno-unused
+ CFLAGS-xrquota.c = -Wno-unused
+ CFLAGS-xkey_prot.c = -Wno-unused
++CFLAGS-auth_unix.c = -fexceptions
++CFLAGS-key_call.c = -fexceptions
++CFLAGS-pmap_rmt.c = -fexceptions
++CFLAGS-clnt_perr.c = -fexceptions
++CFLAGS-openchild.c = -fexceptions
+
+ ifeq (yes,$(have_doors))
+ CPPFLAGS-key_call.c += -DHAVE_DOORS=1
+@@ -167,26 +173,20 @@
+ # Gratuitous dependency on generated .c file here just gets it mentioned to
+ # avoid being an intermediate file and getting removed.
+ define o-iterator-doit
+-$(rpcsvc:%.x=$(objpfx)x%$o): $(objpfx)x%$o: $(objpfx)x%.c $(objpfx)rpcsvc/%.h \
+- $(objpfx)rpc-proto.d
++$(rpcsvc:%.x=$(objpfx)x%$o): $(objpfx)x%$o: $(objpfx)x%.c $(objpfx)rpcsvc/%.h
+ endef
+ object-suffixes-left = $(filter-out $(librpcsvc-inhibit-o),$(object-suffixes))
+ include $(o-iterator)
+
+-ifndef no_deps
+--include $(objpfx)rpc-proto.d
++rpcsvc-dt-files := $(foreach o,$(filter-out $(librpcsvc-inhibit-o),\
++ $(object-suffixes)),\
++ $(rpcsvc:%.x=$(objpfx)x%$o.dt))
++rpcsvc-depfiles := $(patsubst %.dt,%.d,$(wildcard $(rpcsvc-dt-files))) \
++ $(wildcard $(rpcsvc-dt-files:.dt=.d))
++ifdef rpcsvc-depfiles
++ifneq ($(no_deps),t)
++-include $(rpcsvc-depfiles)
++endif
+ endif
+-
+-$(objpfx)rpc-proto.d: $(objpfx)%.d: $(objpfx)%.c
+- $(+make-deps)
+-# Special file to generate dependencies for the RPC service objects.
+-# Collect all include directives from the source files.
+-$(objpfx)rpc-proto.c: $(rpcsvc:%=rpcsvc/%)
+- $(make-target-directory)
+- { echo '#include <rpc/types.h>'; \
+- echo '#include <rpc/xdr.h>'; \
+- echo '#include <rpc/rpc.h>'; \
+- sed -n '/^%#include/s/%//p' $^; } > $@T
+- mv -f $@T $@
+
+ $(objpfx)thrsvc: $(shared-thread-library)
+--- glibc-2.3.2/sunrpc/rpc/auth.h 1999-10-09 13:15:36.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc/auth.h 2003-09-19 22:37:07.000000000 -0400
+@@ -159,8 +159,8 @@
+ * int *aup_gids;
+ */
+ extern AUTH *authunix_create (char *__machname, __uid_t __uid, __gid_t __gid,
+- int __len, __gid_t *__aup_gids) __THROW;
+-extern AUTH *authunix_create_default (void) __THROW;
++ int __len, __gid_t *__aup_gids);
++extern AUTH *authunix_create_default (void);
+ extern AUTH *authnone_create (void) __THROW;
+ extern AUTH *authdes_create (const char *__servername, u_int __window,
+ struct sockaddr *__syncaddr, des_block *__ckey)
+@@ -194,14 +194,14 @@
+ * These routines interface to the keyserv daemon
+ *
+ */
+-extern int key_decryptsession (char *, des_block *) __THROW;
+-extern int key_decryptsession_pk (char *, netobj *, des_block *) __THROW;
+-extern int key_encryptsession (char *, des_block *) __THROW;
+-extern int key_encryptsession_pk (char *, netobj *, des_block *) __THROW;
+-extern int key_gendes (des_block *) __THROW;
+-extern int key_setsecret (char *) __THROW;
+-extern int key_secretkey_is_set (void) __THROW;
+-extern int key_get_conv (char *, des_block *) __THROW;
++extern int key_decryptsession (char *, des_block *);
++extern int key_decryptsession_pk (char *, netobj *, des_block *);
++extern int key_encryptsession (char *, des_block *);
++extern int key_encryptsession_pk (char *, netobj *, des_block *);
++extern int key_gendes (des_block *);
++extern int key_setsecret (char *);
++extern int key_secretkey_is_set (void);
++extern int key_get_conv (char *, des_block *);
+
+ /*
+ * XDR an opaque authentication struct.
+--- glibc-2.3.2/sunrpc/rpc/clnt.h 2000-08-02 02:54:59.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc/clnt.h 2003-09-19 22:37:07.000000000 -0400
+@@ -368,18 +368,18 @@
+ /*
+ * Print why creation failed
+ */
+-extern void clnt_pcreateerror (__const char *__msg) __THROW; /* stderr */
++extern void clnt_pcreateerror (__const char *__msg); /* stderr */
+ extern char *clnt_spcreateerror(__const char *__msg) __THROW; /* string */
+
+ /*
+ * Like clnt_perror(), but is more verbose in its output
+ */
+-extern void clnt_perrno (enum clnt_stat __num) __THROW; /* stderr */
++extern void clnt_perrno (enum clnt_stat __num); /* stderr */
+
+ /*
+ * Print an English error message, given the client error code
+ */
+-extern void clnt_perror (CLIENT *__clnt, __const char *__msg) __THROW;
++extern void clnt_perror (CLIENT *__clnt, __const char *__msg);
+ /* stderr */
+ extern char *clnt_sperror (CLIENT *__clnt, __const char *__msg) __THROW;
+ /* string */
+--- glibc-2.3.2/sunrpc/rpc_clntout.c 1999-11-23 21:51:40.000000000 -0500
++++ glibc-2.3.2/sunrpc/rpc_clntout.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI
+ */
+ char clntout_rcsid[] =
+- "$Id: rpc_clntout.c,v 1.6 1999/11/23 17:10:21 drepper Exp $";
++ "$Id: rpc_clntout.c,v 1.5 1998/02/16 17:41:48 drepper Exp $";
+
+ /*
+ * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_cout.c 2001-09-04 20:07:01.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc_cout.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
+ */
+ char cout_rcsid[] =
+-"$Id: rpc_cout.c,v 1.13 2001/09/05 00:07:01 drepper Exp $";
++"$Id: rpc_cout.c,v 1.12 2000/12/28 10:22:08 aj Exp $";
+
+ /*
+ * rpc_cout.c, XDR routine outputter for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_hout.c 2001-08-28 05:17:24.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc_hout.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
+ */
+ char hout_rcsid[] =
+- "$Id: rpc_hout.c,v 1.7 2001/08/28 09:17:24 drepper Exp $";
++ "$Id: rpc_hout.c,v 1.6 2000/12/31 15:43:33 aj Exp $";
+
+ /*
+ * rpc_hout.c, Header file outputter for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_main.c 2002-10-11 14:58:45.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc_main.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
+ */
+ const char main_rcsid[] =
+- "$Id: rpc_main.c,v 1.23 2002/10/11 10:51:57 roland Exp $";
++ "$Id: rpc_main.c,v 1.22 2001/11/02 02:15:17 drepper Exp $";
+
+ /*
+ * rpc_main.c, Top level of the RPC protocol compiler.
+--- glibc-2.3.2/sunrpc/rpc_parse.c 2001-04-04 13:27:24.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc_parse.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
+ */
+ const char parse_rcsid[] =
+- "$Id: rpc_parse.c,v 1.5 2001/04/04 17:27:24 drepper Exp $";
++ "$Id: rpc_parse.c,v 1.4 1998/02/16 17:41:53 drepper Exp $";
+
+ /*
+ * rpc_parse.c, Parser for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_sample.c 1998-11-16 06:56:33.000000000 -0500
++++ glibc-2.3.2/sunrpc/rpc_sample.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
+ */
+ char sample_rcsid[] =
+- "$Id: rpc_sample.c,v 1.5 1998/11/16 11:56:33 drepper Exp $";
++ "$Id: rpc_sample.c,v 1.4 1998/02/24 15:20:54 drepper Exp $";
+
+ /*
+ * rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_scan.c 2001-04-04 13:26:50.000000000 -0400
++++ glibc-2.3.2/sunrpc/rpc_scan.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
+ */
+ char scan_rcsid[] =
+- "$Id: rpc_scan.c,v 1.8 2001/04/04 17:26:50 drepper Exp $";
++ "$Id: rpc_scan.c,v 1.7 1999/06/19 09:47:43 drepper Exp $";
+
+ /*
+ * rpc_scan.c, Scanner for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_svcout.c 2002-04-03 03:53:44.000000000 -0500
++++ glibc-2.3.2/sunrpc/rpc_svcout.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
+ */
+ char svcout_rcsid[] =
+- "$Id: rpc_svcout.c,v 1.11 2002/04/03 08:53:44 drepper Exp $";
++ "$Id: rpc_svcout.c,v 1.10 2002/04/03 08:27:59 drepper Exp $";
+
+ /*
+ * rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_tblout.c 1997-03-26 20:51:46.000000000 -0500
++++ glibc-2.3.2/sunrpc/rpc_tblout.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
+ */
+ char tblout_rcsid[] =
+- "$Id: rpc_tblout.c,v 1.2 1997/03/27 01:51:46 drepper Exp $";
++ "$Id: rpc_tblout.c,v 1.1 1996/10/17 01:50:51 drepper Exp $";
+
+ /*
+ * rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/rpc_util.c 1998-02-16 12:41:57.000000000 -0500
++++ glibc-2.3.2/sunrpc/rpc_util.c 2002-11-16 08:56:25.000000000 -0500
+@@ -32,7 +32,7 @@
+ * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
+ */
+ char util_rcsid[] =
+- "$Id: rpc_util.c,v 1.6 1998/02/16 17:41:57 drepper Exp $";
++ "$Id: rpc_util.c,v 1.5 1997/06/03 21:50:42 drepper Exp $";
+
+ /*
+ * rpc_util.c, Utility routines for the RPC protocol compiler
+--- glibc-2.3.2/sunrpc/svc.c 2002-08-07 22:08:23.000000000 -0400
++++ glibc-2.3.2/sunrpc/svc.c 2003-09-19 22:37:07.000000000 -0400
+@@ -361,15 +361,17 @@
+ void
+ svc_getreqset (fd_set *readfds)
+ {
+- register u_int32_t mask;
+- register u_int32_t *maskp;
++ register fd_mask mask;
++ register fd_mask *maskp;
+ register int setsize;
+ register int sock;
+ register int bit;
+
+ setsize = _rpc_dtablesize ();
+- maskp = (u_int32_t *) readfds->fds_bits;
+- for (sock = 0; sock < setsize; sock += 32)
++ if (setsize > FD_SETSIZE)
++ setsize = FD_SETSIZE;
++ maskp = readfds->fds_bits;
++ for (sock = 0; sock < setsize; sock += NFDBITS)
+ for (mask = *maskp++; (bit = ffs (mask)); mask ^= (1 << (bit - 1)))
+ INTUSE(svc_getreq_common) (sock + bit - 1);
+ }
+--- glibc-2.3.2/sunrpc/xdr.c 2002-02-25 05:03:26.000000000 -0500
++++ glibc-2.3.2/sunrpc/xdr.c 2003-04-12 11:39:44.000000000 -0400
+@@ -704,6 +704,13 @@
+ return FALSE;
+ }
+ nodesize = size + 1;
++ if (nodesize == 0)
++ {
++ /* This means an overflow. It a bug in the caller which
++ provided a too large maxsize but nevertheless catch it
++ here. */
++ return FALSE;
++ }
+
+ /*
+ * now deal with the actual bytes
+@@ -711,10 +718,6 @@
+ switch (xdrs->x_op)
+ {
+ case XDR_DECODE:
+- if (nodesize == 0)
+- {
+- return TRUE;
+- }
+ if (sp == NULL)
+ *cpp = sp = (char *) mem_alloc (nodesize);
+ if (sp == NULL)
+--- glibc-2.3.2/sysdeps/alpha/alphaev6/memchr.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev6/memchr.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger (davidm@cs.arizona.edu).
+ EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+@@ -190,3 +190,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/alpha/alphaev6/memcpy.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev6/memcpy.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+
+@@ -252,3 +252,4 @@
+ nop # E :
+
+ END(memcpy)
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/alpha/alphaev6/memset.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev6/memset.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+ EV6 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+ This file is part of the GNU C Library.
+@@ -221,3 +221,4 @@
+ ret $31,($26),1 # L0 :
+
+ END(memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/alpha/alphaev67/strcat.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev67/strcat.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson <rth@tamu.edu>, 1996.
+ EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+ This file is part of the GNU C Library.
+@@ -59,3 +59,4 @@
+ jmp $31, __stxcpy # L0 :
+
+ END(strcat)
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/alpha/alphaev67/strchr.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev67/strchr.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson <rth@tamu.edu>, 1996.
+ EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+ This file is part of the GNU C Library.
+@@ -98,3 +98,4 @@
+ END(strchr)
+
+ weak_alias (strchr, index)
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/alpha/alphaev67/strlen.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev67/strlen.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ Contributed by David Mosberger (davidm@cs.arizona.edu).
+ EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+ This file is part of the GNU C Library.
+@@ -58,3 +58,4 @@
+ ret $31, ($26) # L0 :
+
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/alpha/alphaev67/strrchr.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/alphaev67/strrchr.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ EV67 optimized by Rick Gorton <rick.gorton@alpha-processor.com>.
+ This file is part of the GNU C Library.
+
+@@ -114,3 +114,4 @@
+ END(strrchr)
+
+ weak_alias (strrchr, rindex)
++libc_hidden_builtin_def (strrchr)
+--- glibc-2.3.2/sysdeps/alpha/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/alpha/bits/atomic.h 2003-06-30 19:21:38.000000000 -0400
+@@ -0,0 +1,369 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#ifdef UP
++# define __MB /* nothing */
++#else
++# define __MB " mb\n"
++#endif
++
++
++/* Compare and exchange. For all of the "xxx" routines, we expect a
++ "__prev" and a "__cmp" variable to be provided by the enclosing scope,
++ in which values are returned. */
++
++#define __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2) \
++({ \
++ unsigned long __tmp, __snew, __addr64; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ " andnot %[__addr8],7,%[__addr64]\n" \
++ " insbl %[__new],%[__addr8],%[__snew]\n" \
++ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
++ " extbl %[__tmp],%[__addr8],%[__prev]\n" \
++ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
++ " beq %[__cmp],2f\n" \
++ " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
++ " or %[__snew],%[__tmp],%[__tmp]\n" \
++ " stq_c %[__tmp],0(%[__addr64])\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ "2:" \
++ : [__prev] "=&r" (__prev), \
++ [__snew] "=&r" (__snew), \
++ [__tmp] "=&r" (__tmp), \
++ [__cmp] "=&r" (__cmp), \
++ [__addr64] "=&r" (__addr64) \
++ : [__addr8] "r" (mem), \
++ [__old] "Ir" ((uint64_t)(uint8_t)(old)), \
++ [__new] "r" (new) \
++ : "memory"); \
++})
++
++#define __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2) \
++({ \
++ unsigned long __tmp, __snew, __addr64; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ " andnot %[__addr16],7,%[__addr64]\n" \
++ " inswl %[__new],%[__addr16],%[__snew]\n" \
++ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
++ " extwl %[__tmp],%[__addr16],%[__prev]\n" \
++ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
++ " beq %[__cmp],2f\n" \
++ " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
++ " or %[__snew],%[__tmp],%[__tmp]\n" \
++ " stq_c %[__tmp],0(%[__addr64])\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ "2:" \
++ : [__prev] "=&r" (__prev), \
++ [__snew] "=&r" (__snew), \
++ [__tmp] "=&r" (__tmp), \
++ [__cmp] "=&r" (__cmp), \
++ [__addr64] "=&r" (__addr64) \
++ : [__addr16] "r" (mem), \
++ [__old] "Ir" ((uint64_t)(uint16_t)(old)), \
++ [__new] "r" (new) \
++ : "memory"); \
++})
++
++#define __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2) \
++({ \
++ __asm__ __volatile__ ( \
++ mb1 \
++ "1: ldl_l %[__prev],%[__mem]\n" \
++ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
++ " beq %[__cmp],2f\n" \
++ " mov %[__new],%[__cmp]\n" \
++ " stl_c %[__cmp],%[__mem]\n" \
++ " beq %[__cmp],1b\n" \
++ mb2 \
++ "2:" \
++ : [__prev] "=&r" (__prev), \
++ [__cmp] "=&r" (__cmp) \
++ : [__mem] "m" (*(mem)), \
++ [__old] "Ir" ((uint64_t)(atomic32_t)(old)), \
++ [__new] "Ir" (new) \
++ : "memory"); \
++})
++
++#define __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2) \
++({ \
++ __asm__ __volatile__ ( \
++ mb1 \
++ "1: ldq_l %[__prev],%[__mem]\n" \
++ " cmpeq %[__prev],%[__old],%[__cmp]\n" \
++ " beq %[__cmp],2f\n" \
++ " mov %[__new],%[__cmp]\n" \
++ " stq_c %[__cmp],%[__mem]\n" \
++ " beq %[__cmp],1b\n" \
++ mb2 \
++ "2:" \
++ : [__prev] "=&r" (__prev), \
++ [__cmp] "=&r" (__cmp) \
++ : [__mem] "m" (*(mem)), \
++ [__old] "Ir" (old), \
++ [__new] "Ir" (new) \
++ : "memory"); \
++})
++
++/* For all "bool" routines, we return FALSE if exchange succesful. */
++
++#define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
++ !__cmp; })
++
++#define __arch_compare_and_exchange_bool_16_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
++ !__cmp; })
++
++#define __arch_compare_and_exchange_bool_32_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
++ !__cmp; })
++
++#define __arch_compare_and_exchange_bool_64_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
++ !__cmp; })
++
++/* For all "val" routines, return the old value whether exchange
++ successful or not. */
++
++#define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \
++ __prev; })
++
++#define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \
++ __prev; })
++
++#define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \
++ __prev; })
++
++#define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \
++({ unsigned long __prev; int __cmp; \
++ __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \
++ __prev; })
++
++/* Compare and exchange with "acquire" semantics, ie barrier after. */
++
++#define atomic_compare_and_exchange_bool_acq(mem, new, old) \
++ __atomic_val_bysize (__arch_compare_and_exchange_bool, int, \
++ mem, new, old, "", __MB)
++
++#define atomic_compare_and_exchange_val_acq(mem, new, old) \
++ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
++ mem, new, old, "", __MB)
++
++/* Compare and exchange with "release" semantics, ie barrier before. */
++
++#define atomic_compare_and_exchange_bool_rel(mem, new, old) \
++ __atomic_val_bysize (__arch_compare_and_exchange_bool, int, \
++ mem, new, old, __MB, "")
++
++#define atomic_compare_and_exchange_val_rel(mem, new, old) \
++ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
++ mem, new, old, __MB, "")
++
++
++/* Atomically store value and return the previous value. */
++
++#define __arch_exchange_8_int(mem, value, mb1, mb2) \
++({ \
++ unsigned long __ret, __tmp, __addr64, __sval; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ " andnot %[__addr8],7,%[__addr64]\n" \
++ " insbl %[__value],%[__addr8],%[__sval]\n" \
++ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
++ " extbl %[__tmp],%[__addr8],%[__ret]\n" \
++ " mskbl %[__tmp],%[__addr8],%[__tmp]\n" \
++ " or %[__sval],%[__tmp],%[__tmp]\n" \
++ " stq_c %[__tmp],0(%[__addr64])\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ : [__ret] "=&r" (__ret), \
++ [__sval] "=&r" (__sval), \
++ [__tmp] "=&r" (__tmp), \
++ [__addr64] "=&r" (__addr64) \
++ : [__addr8] "r" (mem), \
++ [__value] "r" (value) \
++ : "memory"); \
++ __ret; })
++
++#define __arch_exchange_16_int(mem, value, mb1, mb2) \
++({ \
++ unsigned long __ret, __tmp, __addr64, __sval; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ " andnot %[__addr16],7,%[__addr64]\n" \
++ " inswl %[__value],%[__addr16],%[__sval]\n" \
++ "1: ldq_l %[__tmp],0(%[__addr64])\n" \
++ " extwl %[__tmp],%[__addr16],%[__ret]\n" \
++ " mskwl %[__tmp],%[__addr16],%[__tmp]\n" \
++ " or %[__sval],%[__tmp],%[__tmp]\n" \
++ " stq_c %[__tmp],0(%[__addr64])\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ : [__ret] "=&r" (__ret), \
++ [__sval] "=&r" (__sval), \
++ [__tmp] "=&r" (__tmp), \
++ [__addr64] "=&r" (__addr64) \
++ : [__addr16] "r" (mem), \
++ [__value] "r" (value) \
++ : "memory"); \
++ __ret; })
++
++#define __arch_exchange_32_int(mem, value, mb1, mb2) \
++({ \
++ signed int __ret, __tmp; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ "1: ldl_l %[__ret],%[__mem]\n" \
++ " mov %[__val],%[__tmp]\n" \
++ " stl_c %[__tmp],%[__mem]\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ : [__ret] "=&r" (__ret), \
++ [__tmp] "=&r" (__tmp) \
++ : [__mem] "m" (*(mem)), \
++ [__val] "Ir" (value) \
++ : "memory"); \
++ __ret; })
++
++#define __arch_exchange_64_int(mem, value, mb1, mb2) \
++({ \
++ unsigned long __ret, __tmp; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ "1: ldq_l %[__ret],%[__mem]\n" \
++ " mov %[__val],%[__tmp]\n" \
++ " stq_c %[__tmp],%[__mem]\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ : [__ret] "=&r" (__ret), \
++ [__tmp] "=&r" (__tmp) \
++ : [__mem] "m" (*(mem)), \
++ [__val] "Ir" (value) \
++ : "memory"); \
++ __ret; })
++
++#define atomic_exchange_acq(mem, value) \
++ __atomic_val_bysize (__arch_exchange, int, mem, value, "", __MB)
++
++#define atomic_exchange_rel(mem, value) \
++ __atomic_val_bysize (__arch_exchange, int, mem, value, __MB, "")
++
++
++/* Atomically add value and return the previous (unincremented) value. */
++
++#define __arch_exchange_and_add_8_int(mem, value, mb1, mb2) \
++ ({ __builtin_trap (); 0; })
++
++#define __arch_exchange_and_add_16_int(mem, value, mb1, mb2) \
++ ({ __builtin_trap (); 0; })
++
++#define __arch_exchange_and_add_32_int(mem, value, mb1, mb2) \
++({ \
++ signed int __ret, __tmp; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ "1: ldl_l %[__ret],%[__mem]\n" \
++ " addl %[__ret],%[__val],%[__tmp]\n" \
++ " stl_c %[__tmp],%[__mem]\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ : [__ret] "=&r" (__ret), \
++ [__tmp] "=&r" (__tmp) \
++ : [__mem] "m" (*(mem)), \
++ [__val] "Ir" ((signed int)(value)) \
++ : "memory"); \
++ __ret; })
++
++#define __arch_exchange_and_add_64_int(mem, value, mb1, mb2) \
++({ \
++ unsigned long __ret, __tmp; \
++ __asm__ __volatile__ ( \
++ mb1 \
++ "1: ldq_l %[__ret],%[__mem]\n" \
++ " addq %[__ret],%[__val],%[__tmp]\n" \
++ " stq_c %[__tmp],%[__mem]\n" \
++ " beq %[__tmp],1b\n" \
++ mb2 \
++ : [__ret] "=&r" (__ret), \
++ [__tmp] "=&r" (__tmp) \
++ : [__mem] "m" (*(mem)), \
++ [__val] "Ir" ((unsigned long)(value)) \
++ : "memory"); \
++ __ret; })
++
++/* ??? Barrier semantics for atomic_exchange_and_add appear to be
++ undefined. Use full barrier for now, as that's safe. */
++#define atomic_exchange_and_add(mem, value) \
++ __atomic_val_bysize (__arch_exchange_and_add, int, mem, value, __MB, __MB)
++
++
++/* ??? Blah, I'm lazy. Implement these later. Can do better than the
++ compare-and-exchange loop provided by generic code.
++
++#define atomic_decrement_if_positive(mem)
++#define atomic_bit_test_set(mem, bit)
++
++*/
++
++#ifndef UP
++# define atomic_full_barrier() __asm ("mb" : : : "memory");
++# define atomic_read_barrier() __asm ("mb" : : : "memory");
++# define atomic_write_barrier() __asm ("wmb" : : : "memory");
++#endif
+--- glibc-2.3.2/sysdeps/alpha/bits/setjmp.h 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/bits/setjmp.h 2003-04-12 11:39:44.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Define the machine-dependent type `jmp_buf'. Alpha version.
+- Copyright (C) 1992, 1997 Free Software Foundation, Inc.
++ Copyright (C) 1992, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,7 +17,10 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#ifndef _SETJMP_H
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
++
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -80,3 +83,5 @@
+ #define _JMPBUF_UNWINDS(_jmpbuf, _address) \
+ ((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
+ #endif
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/alpha/dl-machine.h 2003-02-14 01:01:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/alpha/dl-machine.h 2003-08-21 08:37:08.000000000 -0400
+@@ -303,6 +303,7 @@
+ .globl _start \n\
+ .ent _start \n\
+ _start: \n\
++ .frame $31,0,$31,0 \n\
+ br $gp, 0f \n\
+ 0: ldgp $gp, 0($gp) \n\
+ .prologue 0 \n\
+@@ -314,7 +315,7 @@
+ .globl _dl_start_user \n\
+ .ent _dl_start_user \n\
+ _dl_start_user: \n\
+- .frame $30,0,$31,0 \n\
++ .frame $31,0,$31,0 \n\
+ .prologue 0 \n\
+ /* Save the user entry point address in s0. */ \n\
+ mov $0, $9 \n\
+@@ -511,8 +512,9 @@
+ const Elf64_Rela *reloc,
+ const Elf64_Sym *sym,
+ const struct r_found_version *version,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC && !defined SHARED
+@@ -537,15 +539,14 @@
+ {
+ /* XXX Make some timings. Maybe it's preferable to test for
+ unaligned access and only do it the complex way if necessary. */
+- void *reloc_addr_1 = reloc_addr;
+ Elf64_Addr reloc_addr_val;
+
+ /* Load value without causing unaligned trap. */
+- memcpy (&reloc_addr_val, reloc_addr_1, 8);
++ memcpy (&reloc_addr_val, reloc_addr_arg, 8);
+ reloc_addr_val += map->l_addr;
+
+ /* Store value without causing unaligned trap. */
+- memcpy (reloc_addr_1, &reloc_addr_val, 8);
++ memcpy (reloc_addr_arg, &reloc_addr_val, 8);
+ }
+ }
+ else
+@@ -597,10 +598,8 @@
+ #ifndef RTLD_BOOTSTRAP
+ else if (r_type == R_ALPHA_REFQUAD)
+ {
+- void *reloc_addr_1 = reloc_addr;
+-
+ /* Store value without causing unaligned trap. */
+- memcpy (reloc_addr_1, &sym_value, 8);
++ memcpy (reloc_addr_arg, &sym_value, 8);
+ }
+ #endif
+ #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+@@ -648,19 +647,18 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
+- /* XXX Make some timings. Maybe it's preverable to test for
++ /* XXX Make some timings. Maybe it's preferable to test for
+ unaligned access and only do it the complex way if necessary. */
+- void *reloc_addr_1 = reloc_addr;
+ Elf64_Addr reloc_addr_val;
+
+ /* Load value without causing unaligned trap. */
+- memcpy (&reloc_addr_val, reloc_addr_1, 8);
++ memcpy (&reloc_addr_val, reloc_addr_arg, 8);
+ reloc_addr_val += l_addr;
+
+ /* Store value without causing unaligned trap. */
+- memcpy (reloc_addr_1, &reloc_addr_val, 8);
++ memcpy (reloc_addr_arg, &reloc_addr_val, 8);
+ }
+
+ static inline void
+--- glibc-2.3.2/sysdeps/alpha/elf/initfini.c 2002-02-08 20:58:04.000000000 -0500
++++ glibc-2.3.2/sysdeps/alpha/elf/initfini.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Special .init and .fini section support for Alpha.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -45,21 +45,19 @@
+ /*@_init_PROLOG_BEGINS*/ \n\
+ .section .init, \"ax\", @progbits \n\
+ .globl _init \n\
+- .ent _init \n\
++ .type _init, @function \n\
++ .usepv _init, std \n\
+ _init: \n\
+ ldgp $29, 0($27) \n\
+ subq $30, 16, $30 \n\
+ lda $27, __gmon_start__ \n\
+ stq $26, 0($30) \n\
+ stq $29, 8($30) \n\
+- .prologue 1 \n\
+ beq $27, 1f \n\
+ jsr $26, ($27), __gmon_start__ \n\
+ ldq $29, 8($30) \n\
+ .align 3 \n\
+ 1: \n\
+- .end _init \n\
+- .size _init, 0 \n\
+ /*@_init_PROLOG_ENDS*/ \n\
+ \n\
+ /*@_init_EPILOG_BEGINS*/ \n\
+@@ -73,16 +71,14 @@
+ /*@_fini_PROLOG_BEGINS*/ \n\
+ .section .fini, \"ax\", @progbits \n\
+ .globl _fini \n\
+- .ent _fini \n\
++ .type _fini,@function \n\
++ .usepv _fini,std \n\
+ _fini: \n\
+ ldgp $29, 0($27) \n\
+ subq $30, 16, $30 \n\
+ stq $26, 0($30) \n\
+ stq $29, 8($30) \n\
+- .prologue 1 \n\
+ .align 3 \n\
+- .end _fini \n\
+- .size _fini, 0 \n\
+ /*@_fini_PROLOG_ENDS*/ \n\
+ \n\
+ /*@_fini_EPILOG_BEGINS*/ \n\
+--- glibc-2.3.2/sysdeps/alpha/elf/start.S 2002-12-09 22:41:51.000000000 -0500
++++ glibc-2.3.2/sysdeps/alpha/elf/start.S 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Startup code for Alpha/ELF.
+- Copyright (C) 1993,1995,1996,1997,1998,2000,2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1993, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>
+
+@@ -26,8 +27,7 @@
+ .ent _start, 0
+ .type _start,@function
+ _start:
+- .frame fp, 0, zero
+- mov zero, fp
++ .frame $31, 0, $31
+ br gp, 1f
+ 1: ldgp gp, 0(gp)
+ subq sp, 16, sp
+@@ -65,6 +65,5 @@
+ .data
+ .globl __data_start
+ __data_start:
+- .long 0
+ .weak data_start
+ data_start = __data_start
+--- glibc-2.3.2/sysdeps/alpha/fpu/bits/mathdef.h 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/fpu/bits/mathdef.h 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,9 +33,6 @@
+ typedef float float_t;
+ typedef double double_t;
+
+-/* Signal that types stay as they were declared. */
+-# define FLT_EVAL_METHOD 0
+-
+ /* Define `INFINITY' as value of type `float'. */
+ # define INFINITY HUGE_VALF
+
+@@ -45,9 +42,6 @@
+ typedef double float_t;
+ typedef double double_t;
+
+-/* Signal that both types are `double'. */
+-# define FLT_EVAL_METHOD 1
+-
+ /* Define `INFINITY' as value of type `float'. */
+ # define INFINITY HUGE_VALF
+
+--- glibc-2.3.2/sysdeps/alpha/fpu/bits/mathinline.h 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/fpu/bits/mathinline.h 2003-08-21 08:37:08.000000000 -0400
+@@ -58,7 +58,8 @@
+ !isunordered(__x, __y) && __x != __y; }))
+ #endif /* ISO C99 */
+
+-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
++#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \
++ && defined __OPTIMIZE__
+
+ #define __inline_copysign(NAME, TYPE) \
+ __MATH_INLINE TYPE \
+@@ -176,6 +177,19 @@
+ return __x < __y ? 0.0 : __x - __y;
+ }
+
++/* Test for negative number. Used in the signbit() macro. */
++__MATH_INLINE int __signbitf (float __x) __THROW
++{
++ __extension__ union { float __f; int __i; } __u = { __f: __x };
++ return __u.__i < 0;
++}
++
++__MATH_INLINE int __signbit (double __x) __THROW
++{
++ __extension__ union { double __d; long __i; } __u = { __d: __x };
++ return __u.__i < 0;
++}
++
+ #endif /* C99 */
+
+ #endif /* __NO_MATH_INLINES */
+--- glibc-2.3.2/sysdeps/alpha/fpu/libm-test-ulps 2002-08-19 13:57:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/fpu/libm-test-ulps 2003-04-12 11:39:44.000000000 -0400
+@@ -94,7 +94,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -107,10 +107,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -145,7 +145,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -239,7 +239,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -258,7 +258,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -266,7 +266,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -453,12 +453,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -513,7 +513,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/alpha/memchr.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/memchr.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger (davidm@cs.arizona.edu).
+
+@@ -173,3 +173,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/alpha/memset.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/memset.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+ This file is part of the GNU C Library.
+
+@@ -134,3 +134,4 @@
+ $done: ret
+
+ END(memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/alpha/setjmp.S 2002-12-31 14:13:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/alpha/setjmp.S 2003-08-21 08:37:08.000000000 -0400
+@@ -74,6 +74,7 @@
+
+ ENTRY(_setjmp)
+ ldgp gp, 0(pv)
++ .prologue 1
+ mov 0, a1
+ br $sigsetjmp_local
+ END(_setjmp)
+@@ -81,6 +82,7 @@
+
+ ENTRY(setjmp)
+ ldgp gp, 0(pv)
++ .prologue 1
+ mov 1, a1
+ br $sigsetjmp_local
+ END(setjmp)
+--- glibc-2.3.2/sysdeps/alpha/strcat.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strcat.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>, 1996.
+
+@@ -69,3 +69,4 @@
+ jmp $31, __stxcpy
+
+ END(strcat)
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/alpha/strchr.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strchr.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@tamu.edu)
+
+@@ -92,3 +92,4 @@
+ END(strchr)
+
+ weak_alias (strchr, index)
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/alpha/strcmp.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strcmp.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+ This file is part of the GNU C Library.
+
+@@ -192,3 +192,4 @@
+ ret # e1 :
+
+ END(strcmp)
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/alpha/strcpy.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strcpy.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@tamu.edu>, 1996.
+
+@@ -39,3 +39,4 @@
+ jmp $31, __stxcpy # do the copy
+
+ END(strcpy)
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/alpha/strlen.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strlen.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ Contributed by David Mosberger (davidm@cs.arizona.edu).
+ This file is part of the GNU C Library.
+
+@@ -74,3 +74,4 @@
+ ret
+
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/alpha/strncmp.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strncmp.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+ This file is part of the GNU C Library.
+
+@@ -221,3 +221,4 @@
+ ret
+
+ END(strncmp)
++libc_hidden_builtin_def (strncmp)
+--- glibc-2.3.2/sysdeps/alpha/strncpy.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strncpy.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ Contributed by Richard Henderson (rth@tamu.edu)
+ This file is part of the GNU C Library.
+
+@@ -85,3 +85,4 @@
+ ret # .. e1 :
+
+ END(strncpy)
++libc_hidden_builtin_def (strncpy)
+--- glibc-2.3.2/sysdeps/alpha/strrchr.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/alpha/strrchr.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -108,3 +108,4 @@
+ END(strrchr)
+
+ weak_alias (strrchr, rindex)
++libc_hidden_builtin_def (strrchr)
+--- glibc-2.3.2/sysdeps/arm/dl-machine.h 2002-11-15 20:50:42.000000000 -0500
++++ glibc-2.3.2/sysdeps/arm/dl-machine.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Machine-dependent ELF dynamic relocation inline functions. ARM version.
+- Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -122,22 +123,10 @@
+ return lazy;
+ }
+
+-/* This code is used in dl-runtime.c to call the `fixup' function
+- and then redirect to the address it returns. */
+- // macro for handling PIC situation....
+-#ifdef PIC
+-#define CALL_ROUTINE(x) "\
+- ldr sl,0f\n\
+- add sl, pc, sl\n\
+-1: ldr r2, 2f\n\
+- mov lr, pc\n\
+- add pc, sl, r2\n\
+- b 3f\n\
+-0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4\n\
+-2: .word " #x "(GOTOFF)\n\
+-3: "
++#if defined(__THUMB_INTERWORK__)
++#define BX(x) "bx\t" #x
+ #else
+-#define CALL_ROUTINE(x) " bl " #x
++#define BX(x) "mov\tpc, " #x
+ #endif
+
+ #ifndef PROF
+@@ -152,8 +141,11 @@
+ @ ip contains &GOT[n+3] (pointer to function)\n\
+ @ lr points to &GOT[2]\n\
+ \n\
+- @ save almost everything; lr is already on the stack\n\
+- stmdb sp!,{r0-r3,sl,fp}\n\
++ @ stack arguments\n\
++ stmdb sp!,{r0-r3}\n\
++\n\
++ @ get pointer to linker struct\n\
++ ldr r0, [lr, #-4]\n\
+ \n\
+ @ prepare to call fixup()\n\
+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
+@@ -161,20 +153,17 @@
+ sub r1, r1, #4\n\
+ add r1, r1, r1\n\
+ \n\
+- @ get pointer to linker struct\n\
+- ldr r0, [lr, #-4]\n\
+-\n\
+ @ call fixup routine\n\
+- " CALL_ROUTINE(fixup) "\n\
++ bl fixup\n\
+ \n\
+ @ save the return\n\
+ mov ip, r0\n\
+ \n\
+- @ restore the stack\n\
+- ldmia sp!,{r0-r3,sl,fp,lr}\n\
++ @ get arguments and return address back\n\
++ ldmia sp!, {r0-r3,lr}\n\
+ \n\
+ @ jump to the newly found address\n\
+- mov pc, ip\n\
++ " BX(ip) "\n\
+ \n\
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
+ \n\
+@@ -182,8 +171,11 @@
+ .type _dl_runtime_profile, #function\n\
+ .align 2\n\
+ _dl_runtime_profile:\n\
+- @ save almost everything; lr is already on the stack\n\
+- stmdb sp!,{r0-r3,sl,fp}\n\
++ @ stack arguments\n\
++ stmdb sp!, {r0-r3}\n\
++\n\
++ @ get pointer to linker struct\n\
++ ldr r0, [lr, #-4]\n\
+ \n\
+ @ prepare to call fixup()\n\
+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
+@@ -191,20 +183,17 @@
+ sub r1, r1, #4\n\
+ add r1, r1, r1\n\
+ \n\
+- @ get pointer to linker struct\n\
+- ldr r0, [lr, #-4]\n\
+-\n\
+ @ call profiling fixup routine\n\
+- " CALL_ROUTINE(profile_fixup) "\n\
++ bl profile_fixup\n\
+ \n\
+ @ save the return\n\
+ mov ip, r0\n\
+ \n\
+- @ restore the stack\n\
+- ldmia sp!,{r0-r3,sl,fp,lr}\n\
++ @ get arguments and return address back\n\
++ ldmia sp!, {r0-r3,lr}\n\
+ \n\
+ @ jump to the newly found address\n\
+- mov pc, ip\n\
++ " BX(ip) "\n\
+ \n\
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
+ .previous\n\
+@@ -224,8 +213,11 @@
+ @ ip contains &GOT[n+3] (pointer to function)\n\
+ @ lr points to &GOT[2]\n\
+ \n\
+- @ save almost everything; return add is already on the stack\n\
+- stmdb sp!,{r0-r3,sl,fp}\n\
++ @ stack arguments\n\
++ stmdb sp!, {r0-r3}\n\
++\n\
++ @ get pointer to linker struct\n\
++ ldr r0, [lr, #-4]\n\
+ \n\
+ @ prepare to call fixup()\n\
+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\
+@@ -233,20 +225,17 @@
+ sub r1, r1, #4\n\
+ add r1, r1, r1\n\
+ \n\
+- @ get pointer to linker struct\n\
+- ldr r0, [lr, #-4]\n\
+-\n\
+ @ call profiling fixup routine\n\
+- " CALL_ROUTINE(fixup) "\n\
++ bl fixup\n\
+ \n\
+ @ save the return\n\
+ mov ip, r0\n\
+ \n\
+- @ restore the stack\n\
+- ldmia sp!,{r0-r3,sl,fp,lr}\n\
++ @ get arguments and return address back\n\
++ ldmia sp!, {r0-r3,lr}\n\
+ \n\
+ @ jump to the newly found address\n\
+- mov pc, ip\n\
++ " BX(ip) "\n\
+ \n\
+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
+ .previous\n\
+@@ -419,8 +408,9 @@
+ static inline void
+ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+@@ -470,8 +460,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ case R_ARM_GLOB_DAT:
+ case R_ARM_JUMP_SLOT:
+@@ -544,8 +534,9 @@
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_ARM_RELATIVE, 0))
+@@ -581,8 +572,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ # endif /* !RESOLVE_CONFLICT_FIND_MAP */
+ case R_ARM_GLOB_DAT:
+@@ -623,16 +614,18 @@
+
+ static inline void
+ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr += l_addr;
+ }
+
+ # ifndef RTLD_BOOTSTRAP
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+ # endif
+--- glibc-2.3.2/sysdeps/arm/libm-test-ulps 2001-04-17 14:55:56.000000000 -0400
++++ glibc-2.3.2/sysdeps/arm/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
+@@ -134,7 +134,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
+@@ -145,10 +145,10 @@
+ idouble: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
+@@ -187,7 +187,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -280,7 +280,7 @@
+ ifloat: 1
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
+@@ -307,7 +307,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
+@@ -320,7 +320,7 @@
+ ifloat: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -509,12 +509,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -604,7 +604,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/arm/memset.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/arm/memset.S 2003-09-19 22:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Philip Blundell <philb@gnu.org>
+
+@@ -22,46 +22,46 @@
+ /* void *memset (dstpp, c, len) */
+
+ ENTRY(memset)
+- mov a4, a1
+- cmp a3, $8 @ at least 8 bytes to do?
+- blt 2f
+- orr a2, a2, a2, lsl $8
+- orr a2, a2, a2, lsl $16
++ mov r3, r0
++ cmp r2, #8
++ bcc 2f @ less than 8 bytes to move
++
+ 1:
+- tst a4, $3 @ aligned yet?
+- strneb a2, [a4], $1
+- subne a3, a3, $1
++ tst r3, #3 @ aligned yet?
++ strneb r1, [r3], #1
++ subne r2, r2, #1
+ bne 1b
+- mov ip, a2
++
++ orr r1, r1, r1, lsl $8
++ orr r1, r1, r1, lsl $16
++
+ 1:
+- cmp a3, $8 @ 8 bytes still to do?
+- blt 2f
+- stmia a4!, {a2, ip}
+- sub a3, a3, $8
+- cmp a3, $8 @ 8 bytes still to do?
+- blt 2f
+- stmia a4!, {a2, ip}
+- sub a3, a3, $8
+- cmp a3, $8 @ 8 bytes still to do?
+- blt 2f
+- stmia a4!, {a2, ip}
+- sub a3, a3, $8
+- cmp a3, $8 @ 8 bytes still to do?
+- stmgeia a4!, {a2, ip}
+- subge a3, a3, $8
+- bge 1b
++ subs r2, r2, #8
++ strcs r1, [r3], #4 @ store up to 32 bytes per loop iteration
++ strcs r1, [r3], #4
++ subcss r2, r2, #8
++ strcs r1, [r3], #4
++ strcs r1, [r3], #4
++ subcss r2, r2, #8
++ strcs r1, [r3], #4
++ strcs r1, [r3], #4
++ subcss r2, r2, #8
++ strcs r1, [r3], #4
++ strcs r1, [r3], #4
++ bcs 1b
++
++ and r2, r2, #7
+ 2:
+- movs a3, a3 @ anything left?
+- RETINSTR(moveq,pc,lr) @ nope
+- rsb a3, a3, $7
+- add pc, pc, a3, lsl $2
+- mov r0, r0
+- strb a2, [a4], $1
+- strb a2, [a4], $1
+- strb a2, [a4], $1
+- strb a2, [a4], $1
+- strb a2, [a4], $1
+- strb a2, [a4], $1
+- strb a2, [a4], $1
+- RETINSTR(mov,pc,lr)
++ subs r2, r2, #1 @ store up to 4 bytes per loop iteration
++ strcsb r1, [r3], #1
++ subcss r2, r2, #1
++ strcsb r1, [r3], #1
++ subcss r2, r2, #1
++ strcsb r1, [r3], #1
++ subcss r2, r2, #1
++ strcsb r1, [r3], #1
++ bcs 2b
++
++ DO_RET(lr)
+ END(memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/arm/strlen.S 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/arm/strlen.S 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Code contributed by Matthew Wilcox <willy@odie.barnet.ac.uk>
+
+@@ -61,3 +61,4 @@
+ addne r0, r0, $1 @ must be zero)
+ RETINSTR(mov,pc,lr)
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/arm/sysdep.h 2001-07-07 15:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/arm/sysdep.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Assembler macros for ARM.
+- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,11 +52,20 @@
+ ldm##cond base,reglist
+ #define RETINSTR(instr, regs...)\
+ instr regs
++#ifdef __THUMB_INTERWORK__
++#define DO_RET(_reg) \
++ bx _reg
++#else
++#define DO_RET(_reg) \
++ mov pc, _reg
++#endif
+ #else /* APCS-26 */
+ #define LOADREGS(cond, base, reglist...)\
+ ldm##cond base,reglist^
+ #define RETINSTR(instr, regs...)\
+ instr##s regs
++#define DO_RET(_reg) \
++ movs pc, _reg
+ #endif
+
+ /* Define an entry point visible from C. */
+@@ -76,7 +85,7 @@
+ #define CALL_MCOUNT \
+ str lr,[sp, #-4]! ; \
+ bl PLTJMP(mcount) ; \
+- ldr lr, [sp], #4
++ ldr lr, [sp], #4 ;
+ #else
+ #define CALL_MCOUNT /* Do nothing. */
+ #endif
+--- glibc-2.3.2/sysdeps/cris/dl-machine.h 2002-08-28 17:22:52.000000000 -0400
++++ glibc-2.3.2/sysdeps/cris/dl-machine.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Machine-dependent ELF dynamic relocation inline functions. CRIS version.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -228,12 +228,20 @@
+ .size _dl_start_user, . - _dl_start_user\n\
+ .previous");
+
+-/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
+- PLT entries should not be allowed to define the value.
+- ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
+- of the main executable's symbols, as for a COPY reloc. */
+-#define elf_machine_type_class(type) \
+- ((((type) == R_CRIS_JUMP_SLOT) * ELF_RTYPE_CLASS_PLT) \
++/* The union of reloc-type-classes where the reloc TYPE is a member.
++
++ TYPE is in the class ELF_RTYPE_CLASS_PLT if it can describe a
++ relocation for a PLT entry, that is, for which a PLT entry should not
++ be allowed to define the value. The GNU linker for CRIS can merge a
++ .got.plt entry (R_CRIS_JUMP_SLOT) with a .got entry (R_CRIS_GLOB_DAT),
++ so we need to match both these reloc types.
++
++ TYPE is in the class ELF_RTYPE_CLASS_NOCOPY if it should not be allowed
++ to resolve to one of the main executable's symbols, as for a COPY
++ reloc. */
++#define elf_machine_type_class(type) \
++ ((((((type) == R_CRIS_JUMP_SLOT)) \
++ || ((type) == R_CRIS_GLOB_DAT)) * ELF_RTYPE_CLASS_PLT) \
+ | (((type) == R_CRIS_COPY) * ELF_RTYPE_CLASS_COPY))
+
+ /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
+@@ -280,8 +288,9 @@
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_CRIS_RELATIVE, 0))
+@@ -322,8 +331,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+
+ case R_CRIS_32:
+@@ -364,8 +373,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/generic/backtracesymsfd.c 2001-07-07 15:21:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/backtracesymsfd.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Write formatted list with names for addresses in backtrace to a file.
+- Copyright (C) 1998 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -23,11 +23,12 @@
+ #include <sys/uio.h>
+
+ #include <stdio-common/_itoa.h>
++#include <not-cancel.h>
+
+ #if __ELF_NATIVE_CLASS == 32
+ # define WORD_WIDTH 8
+ #else
+-/* We assyme 64bits. */
++/* We assume 64bits. */
+ # define WORD_WIDTH 16
+ #endif
+
+@@ -55,7 +56,8 @@
+ iov[2].iov_base = (void *) "]\n";
+ iov[2].iov_len = 2;
+
+- __writev (fd, iov, 3);
++ /* We prefer to use the non-cancelable interface if it is available. */
++ writev_not_cancel_no_status (fd, iov, 3);
+ }
+ }
+ weak_alias (__backtrace_symbols_fd, backtrace_symbols_fd)
+--- glibc-2.3.2/sysdeps/generic/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/bits/atomic.h 2003-03-22 18:00:14.000000000 -0500
+@@ -0,0 +1,43 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_ATOMIC_H
++#define _BITS_ATOMIC_H 1
++
++/* We have by default no support for atomic operations. So define
++ them non-atomic. If this is a problem somebody will have to come
++ up with real definitions. */
++
++/* The only basic operation needed is compare and exchange. */
++#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
++ ({ __typeof (mem) __gmemp = (mem); \
++ __typeof (*mem) __gret = *__gmemp; \
++ __typeof (*mem) __gnewval = (newval); \
++ \
++ if (__gret == (oldval)) \
++ *__gmemp = __gnewval; \
++ __gret; })
++
++#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
++ ({ __typeof (mem) __gmemp = (mem); \
++ __typeof (*mem) __gnewval = (newval); \
++ \
++ *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
++
++#endif /* bits/atomic.h */
+--- glibc-2.3.2/sysdeps/generic/bits/confname.h 2003-02-23 20:38:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/bits/confname.h 2003-03-15 15:02:16.000000000 -0500
+@@ -62,8 +62,10 @@
+ #define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
+ _PC_ALLOC_SIZE_MIN,
+ #define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
+- _PC_SYMLINK_MAX
++ _PC_SYMLINK_MAX,
+ #define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
++ _PC_2_SYMLINKS
++#define _PC_2_SYMLINKS _PC_2_SYMLINKS
+ };
+
+ /* Values for the argument to `sysconf'. */
+--- glibc-2.3.2/sysdeps/generic/bits/in.h 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/bits/in.h 2003-08-21 08:37:08.000000000 -0400
+@@ -64,8 +64,8 @@
+ /* IPV6 socket options. */
+ #define IPV6_ADDRFORM 1
+ #define IPV6_RXINFO 2
+-#define IPV6_RXHOPOPTS 3
+-#define IPV6_RXDSTOPTS 4
++#define IPV6_HOPOPTS 3
++#define IPV6_DSTOPTS 4
+ #define IPV6_RTHDR 5
+ #define IPV6_PKTOPTIONS 6
+ #define IPV6_CHECKSUM 7
+@@ -85,6 +85,8 @@
+ /* Obsolete synonyms for the above. */
+ #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
+ #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
++#define IPV6_RXHOPOPTS IPV6_HOPOPTS
++#define IPV6_RXDSTOPTS IPV6_DSTOPTS
+
+ /* Routing header options for IPv6. */
+ #define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */
+--- glibc-2.3.2/sysdeps/generic/bits/libc-lock.h 2002-12-06 05:48:04.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/bits/libc-lock.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* libc-internal interface for mutex locks. Stub version.
+- Copyright (C) 1996,97,99,2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1996,97,99,2000-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -40,6 +40,7 @@
+ /* Define an initialized recursive lock variable NAME with storage
+ class CLASS. */
+ #define __libc_lock_define_initialized_recursive(CLASS,NAME)
++#define __rtld_lock_define_initialized_recursive(CLASS,NAME)
+
+ /* Initialize the named lock variable, leaving it in a consistent, unlocked
+ state. */
+@@ -116,6 +117,8 @@
+ if ((DOIT) && __save_FCT != 0) \
+ (*__save_FCT)(__save_ARG); \
+
++#define __libc_cleanup_push(fct, arg) __libc_cleanup_region_start (1, fct, arg)
++#define __libc_cleanup_pop(execute) __libc_cleanup_region_end (execute)
+
+ /* We need portable names for some of the functions. */
+ #define __libc_mutex_unlock
+--- glibc-2.3.2/sysdeps/generic/bits/sched.h 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/bits/sched.h 2003-05-12 12:13:06.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Definitions of constants and data structure for POSIX 1003.1b-1993
+ scheduling interface.
+- Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,3 +33,39 @@
+ {
+ int __sched_priority;
+ };
++
++
++#if defined _SCHED_H && !defined __cpu_set_t_defined
++# define __cpu_set_t_defined
++/* Size definition for CPU sets. */
++# define __CPU_SETSIZE 1024
++# define __NCPUBITS (8 * sizeof (__cpu_mask))
++
++/* Type for array elements in 'cpu_set'. */
++typedef unsigned long int __cpu_mask;
++
++/* Basic access functions. */
++# define __CPUELT(cpu) ((cpu) / __NCPUBITS)
++# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
++
++/* Data structure to describe CPU mask. */
++typedef struct
++{
++ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
++} cpu_set_t;
++
++/* Access functions for CPU masks. */
++# define __CPU_ZERO(cpusetp) \
++ do { \
++ unsigned int __i; \
++ cpu_set *__arr = (cpusetp); \
++ for (__i = 0; __i < sizeof (cpu_set) / sizeof (__cpu_mask); ++__i) \
++ __arr->__bits[__i] = 0; \
++ } while (0)
++# define __CPU_SET(cpu, cpusetp) \
++ ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
++# define __CPU_CLR(cpu, cpusetp) \
++ ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
++# define __CPU_ISSET(cpu, cpusetp) \
++ (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
++#endif
+--- glibc-2.3.2/sysdeps/generic/bits/stdio-lock.h 2002-12-07 20:09:29.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/bits/stdio-lock.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Thread package specific definitions of stream lock type. Generic version.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -45,5 +45,14 @@
+ #define _IO_cleanup_region_end(_doit) \
+ __libc_cleanup_region_end (_doit)
+
++#if defined _LIBC && !defined NOT_IN_libc
++# define _IO_acquire_lock(_fp) \
++ _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
++ _IO_flockfile (_fp)
++
++# define _IO_release_lock(_fp) \
++ _IO_funlockfile (_fp); \
++ _IO_cleanup_region_end (0)
++#endif
+
+ #endif /* bits/stdio-lock.h */
+--- glibc-2.3.2/sysdeps/generic/bits/time.h 2002-10-23 02:21:18.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/bits/time.h 2003-03-15 15:02:16.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* System-dependent timing definitions. Generic version.
+- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,6 +44,8 @@
+ # ifdef __USE_POSIX199309
+ /* Identifier for system-wide realtime clock. */
+ # define CLOCK_REALTIME 0
++/* Monotonic system-wide clock. */
++# define CLOCK_MONOTONIC 1
+ /* High-resolution timer from the CPU. */
+ # define CLOCK_PROCESS_CPUTIME_ID 2
+ /* Thread-specific CPU-time clock. */
+--- glibc-2.3.2/sysdeps/generic/bits/types.h 2002-10-25 04:02:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/bits/types.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* bits/types.h -- definitions of __*_t types underlying *_t types.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -51,14 +51,13 @@
+ __extension__ typedef unsigned long long int __uint64_t;
+ #endif
+
+-/* quad_t is also 64 bits, but is traditionally defined as `long long'
+- even when `long' is also 64 bits. */
+-#ifdef __GLIBC_HAVE_LONG_LONG
+-__extension__ typedef long long int __quad_t;
+-__extension__ typedef unsigned long long int __u_quad_t;
+-#elif __WORDSIZE == 64
++/* quad_t is also 64 bits. */
++#if __WORDSIZE == 64
+ typedef long int __quad_t;
+ typedef unsigned long int __u_quad_t;
++#elif defined __GLIBC_HAVE_LONG_LONG
++__extension__ typedef long long int __quad_t;
++__extension__ typedef unsigned long long int __u_quad_t;
+ #else
+ typedef struct
+ {
+@@ -106,9 +105,9 @@
+ #define __U32_TYPE unsigned int
+ #define __SLONGWORD_TYPE long int
+ #define __ULONGWORD_TYPE unsigned long int
+-#define __SQUAD_TYPE long long int
+-#define __UQUAD_TYPE unsigned long long int
+ #if __WORDSIZE == 32
++# define __SQUAD_TYPE long long int
++# define __UQUAD_TYPE unsigned long long int
+ # define __SWORD_TYPE int
+ # define __UWORD_TYPE unsigned int
+ # define __SLONG32_TYPE long int
+@@ -116,6 +115,8 @@
+ # define __S64_TYPE __quad_t
+ # define __U64_TYPE __u_quad_t
+ #elif __WORDSIZE == 64
++# define __SQUAD_TYPE long int
++# define __UQUAD_TYPE unsigned long int
+ # define __SWORD_TYPE long int
+ # define __UWORD_TYPE unsigned long int
+ # define __SLONG32_TYPE int
+@@ -127,66 +128,72 @@
+ #endif
+ #include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
+
+-
+-typedef __DEV_T_TYPE __dev_t; /* Type of device numbers. */
+-typedef __UID_T_TYPE __uid_t; /* Type of user identifications. */
+-typedef __GID_T_TYPE __gid_t; /* Type of group identifications. */
+-typedef __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
+-typedef __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS). */
+-typedef __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
+-typedef __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
+-typedef __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
+-typedef __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
+-typedef __PID_T_TYPE __pid_t; /* Type of process identifications. */
+-typedef __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
+-typedef __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
+-typedef __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
+-typedef __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
+-typedef __ID_T_TYPE __id_t; /* General type for IDs. */
+-typedef __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
+-typedef __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
+-typedef __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
+-
+-typedef __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
+-typedef __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
+-typedef __KEY_T_TYPE __key_t; /* Type of an IPC key */
++/* We want __extension__ before typedef's that use nonstandard base types
++ such as `long long' in C89 mode. */
++#define __STD_TYPE __extension__ typedef
++
++
++__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */
++__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */
++__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */
++__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */
++__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/
++__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */
++__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */
++__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */
++__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */
++__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */
++__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */
++__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */
++__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */
++__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */
++__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
++__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
++__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
++__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
++
++__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
++__STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
++__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
+
+ /* Clock ID used in clock and timer functions. */
+-typedef __CLOCKID_T_TYPE __clockid_t;
++__STD_TYPE __CLOCKID_T_TYPE __clockid_t;
+
+ /* Timer ID returned by `timer_create'. */
+-typedef __TIMER_T_TYPE __timer_t;
++__STD_TYPE __TIMER_T_TYPE __timer_t;
+
+ /* Type to represent block size. */
+-typedef __BLKSIZE_T_TYPE __blksize_t;
++__STD_TYPE __BLKSIZE_T_TYPE __blksize_t;
+
+ /* Types from the Large File Support interface. */
+
+ /* Type to count number of disk blocks. */
+-typedef __BLKCNT_T_TYPE __blkcnt_t;
+-typedef __BLKCNT64_T_TYPE __blkcnt64_t;
++__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t;
++__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t;
+
+ /* Type to count file system blocks. */
+-typedef __FSBLKCNT_T_TYPE __fsblkcnt_t;
+-typedef __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
++__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t;
++__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t;
+
+ /* Type to count file system nodes. */
+-typedef __FSFILCNT_T_TYPE __fsfilcnt_t;
+-typedef __FSFILCNT64_T_TYPE __fsfilcnt64_t;
++__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t;
++__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t;
+
++__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */
+
+ /* These few don't really vary by system, they always correspond
+ to one of the other defined types. */
+-typedef __SWORD_TYPE __ssize_t; /* Type of a byte count, or error. */
+ typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
+ typedef __quad_t *__qaddr_t;
+ typedef char *__caddr_t;
+
+ /* Duplicates info from stdint.h but this is used in unistd.h. */
+-typedef __SWORD_TYPE __intptr_t;
++__STD_TYPE __SWORD_TYPE __intptr_t;
+
+ /* Duplicate info from sys/socket.h. */
+-typedef __U32_TYPE __socklen_t;
++__STD_TYPE __U32_TYPE __socklen_t;
++
+
++#undef __STD_TYPE
+
+ #endif /* bits/types.h */
+--- glibc-2.3.2/sysdeps/generic/bits/typesizes.h 2002-10-23 19:48:45.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/bits/typesizes.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* bits/typesizes.h -- underlying types for *_t. Generic version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -54,9 +54,10 @@
+ #define __SWBLK_T_TYPE __SLONGWORD_TYPE
+ #define __KEY_T_TYPE __S32_TYPE
+ #define __CLOCKID_T_TYPE __S32_TYPE
+-#define __TIMER_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE void *
+ #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+ #define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
+
+ /* Number of descriptors that can fit in an `fd_set'. */
+ #define __FD_SETSIZE 1024
+--- glibc-2.3.2/sysdeps/generic/bp-thunks.h 2003-01-15 19:46:14.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/bp-thunks.h 2003-05-12 12:13:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Bounded-pointer syscall thunk support.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Greg McGary <greg@mcgary.org>
+
+@@ -21,6 +21,8 @@
+ #ifndef _bpthunks_h_
+ #define _bpthunks_h_
+
++#ifndef __ASSEMBLER__
++
+ /* This header is included by the syscall BP thunks defined in
+ sysd-syscalls, as created by sysdeps/unix/make-syscalls.sh. It
+ includes all headers that contain prototype declarations for system
+@@ -63,4 +65,6 @@
+ #include <sys/utsname.h>
+ #include <sys/wait.h>
+
++#endif /* Not __ASSEMBLER__. */
++
+ #endif /* _bpthunks_h_ */
+--- glibc-2.3.2/sysdeps/generic/check_fds.c 2002-04-14 14:27:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/check_fds.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,6 +32,7 @@
+ #endif
+
+ #include <device-nrs.h>
++#include <not-cancel.h>
+
+
+ /* Should other OSes (e.g., Hurd) have different versions which can
+@@ -39,6 +40,7 @@
+ static void
+ check_one_fd (int fd, int mode)
+ {
++ /* Note that fcntl() with this parameter is not a cancellation point. */
+ if (__builtin_expect (__libc_fcntl (fd, F_GETFD), 0) == -1
+ && errno == EBADF)
+ {
+@@ -47,7 +49,7 @@
+ /* Something is wrong with this descriptor, it's probably not
+ opened. Open /dev/null so that the SUID program we are
+ about to start does not accidently use this descriptor. */
+- int nullfd = __libc_open (_PATH_DEVNULL, mode);
++ int nullfd = open_not_cancel (_PATH_DEVNULL, mode, 0);
+ /* We are very paranoid here. With all means we try to ensure
+ that we are actually opening the /dev/null device and nothing
+ else.
+--- glibc-2.3.2/sysdeps/generic/check_pf.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/check_pf.c 2003-06-10 04:52:14.000000000 -0400
+@@ -0,0 +1,50 @@
++/* Determine protocol families for which interfaces exist. Generic version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <ifaddrs.h>
++#include <netdb.h>
++
++
++void
++attribute_hidden
++__check_pf (bool *seen_ipv4, bool *seen_ipv6)
++{
++ /* Get the interface list via getifaddrs. */
++ struct ifaddrs *ifa = NULL;
++ if (getifaddrs (&ifa) != 0)
++ {
++ /* We cannot determine what interfaces are available. Be
++ pessimistic. */
++ *seen_ipv4 = true;
++ *seen_ipv6 = true;
++ return;
++ }
++
++ *seen_ipv4 = false;
++ *seen_ipv6 = false;
++
++ struct ifaddrs *runp;
++ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
++ if (runp->ifa_addr->sa_family == PF_INET)
++ *seen_ipv4 = true;
++ else if (runp->ifa_addr->sa_family == PF_INET6)
++ *seen_ipv6 = true;
++
++ (void) freeifaddrs (ifa);
++}
+--- glibc-2.3.2/sysdeps/generic/dl-cache.c 2002-12-28 15:38:50.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-cache.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
+- Copyright (C) 1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -133,6 +133,45 @@
+ while (0)
+
+
++int
++internal_function
++_dl_cache_libcmp (const char *p1, const char *p2)
++{
++ while (*p1 != '\0')
++ {
++ if (*p1 >= '0' && *p1 <= '9')
++ {
++ if (*p2 >= '0' && *p2 <= '9')
++ {
++ /* Must compare this numerically. */
++ int val1;
++ int val2;
++
++ val1 = *p1++ - '0';
++ val2 = *p2++ - '0';
++ while (*p1 >= '0' && *p1 <= '9')
++ val1 = val1 * 10 + *p1++ - '0';
++ while (*p2 >= '0' && *p2 <= '9')
++ val2 = val2 * 10 + *p2++ - '0';
++ if (val1 != val2)
++ return val1 - val2;
++ }
++ else
++ return 1;
++ }
++ else if (*p2 >= '0' && *p2 <= '9')
++ return -1;
++ else if (*p1 != *p2)
++ return *p1 - *p2;
++ else
++ {
++ ++p1;
++ ++p2;
++ }
++ }
++ return *p1 - *p2;
++}
++
+
+ /* Look up NAME in ld.so.cache and return the file name stored there,
+ or null if none is found. */
+--- glibc-2.3.2/sysdeps/generic/dl-cache.h 2002-08-25 05:25:04.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/dl-cache.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
+- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,6 +32,10 @@
+ # define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
+ #endif
+
++#ifndef add_system_dir
++# define add_system_dir(dir) add_dir (dir)
++#endif
++
+ #define CACHEMAGIC "ld.so-1.7.0"
+
+ /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another
+@@ -97,41 +101,5 @@
+ (((addr) + __alignof__ (struct cache_file_new) -1) \
+ & (~(__alignof__ (struct cache_file_new) - 1)))
+
+-static inline int
+-__attribute__ ((__unused__))
+-_dl_cache_libcmp (const char *p1, const char *p2)
+-{
+- while (*p1 != '\0')
+- {
+- if (*p1 >= '0' && *p1 <= '9')
+- {
+- if (*p2 >= '0' && *p2 <= '9')
+- {
+- /* Must compare this numerically. */
+- int val1;
+- int val2;
+-
+- val1 = *p1++ - '0';
+- val2 = *p2++ - '0';
+- while (*p1 >= '0' && *p1 <= '9')
+- val1 = val1 * 10 + *p1++ - '0';
+- while (*p2 >= '0' && *p2 <= '9')
+- val2 = val2 * 10 + *p2++ - '0';
+- if (val1 != val2)
+- return val1 - val2;
+- }
+- else
+- return 1;
+- }
+- else if (*p2 >= '0' && *p2 <= '9')
+- return -1;
+- else if (*p1 != *p2)
+- return *p1 - *p2;
+- else
+- {
+- ++p1;
+- ++p2;
+- }
+- }
+- return *p1 - *p2;
+-}
++extern int _dl_cache_libcmp (const char *p1, const char *p2)
++ internal_function;
+--- glibc-2.3.2/sysdeps/generic/dl-fptr.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-fptr.c 2003-05-02 18:37:14.000000000 -0400
+@@ -0,0 +1,323 @@
++/* Manage function descriptors. Generic version.
++ Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <libintl.h>
++#include <unistd.h>
++#include <string.h>
++#include <sys/param.h>
++#include <sys/mman.h>
++#include <link.h>
++#include <ldsodefs.h>
++#include <elf/dynamic-link.h>
++#include <dl-fptr.h>
++#include <atomic.h>
++
++#ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN
++/* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of
++ dynamic symbols in ld.so. */
++#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256
++#endif
++
++#ifndef ELF_MACHINE_LOAD_ADDRESS
++# error "ELF_MACHINE_LOAD_ADDRESS is not defined."
++#endif
++
++#ifndef COMPARE_AND_SWAP
++#define COMPARE_AND_SWAP(ptr,old,new) \
++ atomic_compare_and_exchange_bool_acq ((ptr), (old), (new))
++#endif
++
++ElfW(Addr) _dl_boot_fptr_table [ELF_MACHINE_BOOT_FPTR_TABLE_LEN];
++
++static struct local
++ {
++ struct fdesc_table *root;
++ struct fdesc *free_list;
++ unsigned int npages; /* # of pages to allocate */
++ /* the next to members MUST be consecutive! */
++ struct fdesc_table boot_table;
++ struct fdesc boot_fdescs[1024];
++ }
++local =
++ {
++ .root = &local.boot_table,
++ .npages = 2,
++ .boot_table =
++ {
++ .len = sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]),
++ .first_unused = 0
++ }
++ };
++
++/* Create a new fdesc table and return a pointer to the first fdesc
++ entry. The fdesc lock must have been acquired already. */
++
++static struct fdesc_table *
++new_fdesc_table (struct local *l, size_t *size)
++{
++ size_t old_npages = l->npages;
++ size_t new_npages = old_npages + old_npages;
++ struct fdesc_table *new_table;
++
++ /* If someone has just created a new table, we return NULL to tell
++ the caller to use the new table. */
++ if (! COMPARE_AND_SWAP (&l->npages, old_npages, new_npages))
++ return (struct fdesc_table *) NULL;
++
++ *size = old_npages * GL(dl_pagesize);
++ new_table = __mmap (NULL, *size,
++ PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
++ if (new_table == MAP_FAILED)
++ INTUSE(_dl_signal_error) (errno, NULL, NULL,
++ N_("cannot map pages for fdesc table"));
++
++ new_table->len
++ = (*size - sizeof (*new_table)) / sizeof (struct fdesc);
++ new_table->first_unused = 1;
++ return new_table;
++}
++
++
++static ElfW(Addr)
++make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp)
++{
++ struct fdesc *fdesc = NULL;
++ struct fdesc_table *root;
++ unsigned int old;
++ struct local *l;
++
++ ELF_MACHINE_LOAD_ADDRESS (l, local);
++
++ retry:
++ root = l->root;
++ while (1)
++ {
++ old = root->first_unused;
++ if (old >= root->len)
++ break;
++ else if (COMPARE_AND_SWAP (&root->first_unused, old, old + 1))
++ {
++ fdesc = &root->fdesc[old];
++ goto install;
++ }
++ }
++
++ if (l->free_list)
++ {
++ /* Get it from free-list. */
++ do
++ {
++ fdesc = l->free_list;
++ if (fdesc == NULL)
++ goto retry;
++ }
++ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
++ (ElfW(Addr)) fdesc, fdesc->ip));
++ }
++ else
++ {
++ /* Create a new fdesc table. */
++ size_t size;
++ struct fdesc_table *new_table = new_fdesc_table (l, &size);
++
++ if (new_table == NULL)
++ goto retry;
++
++ new_table->next = root;
++ if (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->root,
++ (ElfW(Addr)) root,
++ (ElfW(Addr)) new_table))
++ {
++ /* Someone has just installed a new table. Return NULL to
++ tell the caller to use the new table. */
++ __munmap (new_table, size);
++ goto retry;
++ }
++
++ /* Note that the first entry was reserved while allocating the
++ memory for the new page. */
++ fdesc = &new_table->fdesc[0];
++ }
++
++ install:
++ fdesc->ip = ip;
++ fdesc->gp = gp;
++
++ return (ElfW(Addr)) fdesc;
++}
++
++
++static inline ElfW(Addr) *
++make_fptr_table (struct link_map *map)
++{
++ const ElfW(Sym) *symtab
++ = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
++ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
++ ElfW(Addr) *fptr_table;
++ size_t size;
++ size_t len;
++
++ /* XXX Apparently the only way to find out the size of the dynamic
++ symbol section is to assume that the string table follows right
++ afterwards... */
++ len = ((strtab - (char *) symtab)
++ / map->l_info[DT_SYMENT]->d_un.d_val);
++ size = ((len * sizeof (fptr_table[0]) + GL(dl_pagesize) - 1)
++ & -GL(dl_pagesize));
++ /* XXX We don't support here in the moment systems without MAP_ANON.
++ There probably are none for IA-64. In case this is proven wrong
++ we will have to open /dev/null here and use the file descriptor
++ instead of the hard-coded -1. */
++ fptr_table = __mmap (NULL, size,
++ PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE,
++ -1, 0);
++ if (fptr_table == MAP_FAILED)
++ INTUSE(_dl_signal_error) (errno, NULL, NULL,
++ N_("cannot map pages for fptr table"));
++
++ if (COMPARE_AND_SWAP ((ElfW(Addr) *) &map->l_mach.fptr_table,
++ (ElfW(Addr)) NULL, (ElfW(Addr)) fptr_table))
++ map->l_mach.fptr_table_len = len;
++ else
++ __munmap (fptr_table, len * sizeof (fptr_table[0]));
++
++ return map->l_mach.fptr_table;
++}
++
++
++ElfW(Addr)
++_dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym,
++ ElfW(Addr) ip)
++{
++ ElfW(Addr) *ftab = map->l_mach.fptr_table;
++ const ElfW(Sym) *symtab;
++ Elf_Symndx symidx;
++ struct local *l;
++
++ if (__builtin_expect (ftab == NULL, 0))
++ ftab = make_fptr_table (map);
++
++ symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
++ symidx = sym - symtab;
++
++ if (symidx >= map->l_mach.fptr_table_len)
++ INTUSE(_dl_signal_error) (0, NULL, NULL, N_("\
++internal error: symidx out of range of fptr table"));
++
++ while (ftab[symidx] == 0)
++ {
++ /* GOT has already been relocated in elf_get_dynamic_info -
++ don't try to relocate it again. */
++ ElfW(Addr) fdesc
++ = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr);
++
++ if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL,
++ fdesc), 1))
++ {
++ /* Noone has updated the entry and the new function
++ descriptor has been installed. */
++#if 0
++ const char *strtab
++ = (const void *) D_PTR (map, l_info[DT_STRTAB]);
++
++ ELF_MACHINE_LOAD_ADDRESS (l, local);
++ if (l->root != &l->boot_table
++ || l->boot_table.first_unused > 20)
++ _dl_debug_printf ("created fdesc symbol `%s' at %lx\n",
++ strtab + sym->st_name, ftab[symidx]);
++#endif
++ break;
++ }
++ else
++ {
++ /* We created a duplicated function descriptor. We put it on
++ free-list. */
++ struct fdesc *f = (struct fdesc *) fdesc;
++
++ ELF_MACHINE_LOAD_ADDRESS (l, local);
++
++ do
++ f->ip = (ElfW(Addr)) l->free_list;
++ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list,
++ f->ip, fdesc));
++ }
++ }
++
++ return ftab[symidx];
++}
++
++
++void
++_dl_unmap (struct link_map *map)
++{
++ ElfW(Addr) *ftab = map->l_mach.fptr_table;
++ struct fdesc *head = NULL, *tail = NULL;
++ size_t i;
++
++ __munmap ((void *) map->l_map_start,
++ map->l_map_end - map->l_map_start);
++
++ if (ftab == NULL)
++ return;
++
++ /* String together the fdesc structures that are being freed. */
++ for (i = 0; i < map->l_mach.fptr_table_len; ++i)
++ {
++ if (ftab[i])
++ {
++ *(struct fdesc **) ftab[i] = head;
++ head = (struct fdesc *) ftab[i];
++ if (tail == NULL)
++ tail = head;
++ }
++ }
++
++ /* Prepend the new list to the free_list: */
++ if (tail)
++ do
++ tail->ip = (ElfW(Addr)) local.free_list;
++ while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &local.free_list,
++ tail->ip, (ElfW(Addr)) head));
++
++ __munmap (ftab, (map->l_mach.fptr_table_len
++ * sizeof (map->l_mach.fptr_table[0])));
++
++ map->l_mach.fptr_table = NULL;
++}
++
++
++ElfW(Addr)
++_dl_lookup_address (const void *address)
++{
++ ElfW(Addr) addr = (ElfW(Addr)) address;
++ struct fdesc_table *t;
++ unsigned long int i;
++
++ for (t = local.root; t != NULL; t = t->next)
++ {
++ i = (struct fdesc *) addr - &t->fdesc[0];
++ if (i < t->first_unused && addr == (ElfW(Addr)) &t->fdesc[i])
++ {
++ addr = t->fdesc[i].ip;
++ break;
++ }
++ }
++
++ return addr;
++}
+--- glibc-2.3.2/sysdeps/generic/dl-fptr.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-fptr.h 2003-05-01 22:37:21.000000000 -0400
+@@ -0,0 +1,44 @@
++/* Function descriptors. Generic version.
++ Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef dl_fptr_h
++#define dl_fptr_h 1
++
++/* An FDESC is a function descriptor. */
++
++struct fdesc
++ {
++ ElfW(Addr) ip; /* code entry point */
++ ElfW(Addr) gp; /* global pointer */
++ };
++
++struct fdesc_table
++ {
++ struct fdesc_table *next;
++ unsigned int len; /* # of entries in fdesc table */
++ volatile unsigned int first_unused; /* index of first available entry */
++ struct fdesc fdesc[0];
++ };
++
++extern ElfW(Addr) _dl_boot_fptr_table [];
++
++extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *,
++ ElfW(Addr));
++
++#endif /* !dl_fptr_h */
+--- glibc-2.3.2/sysdeps/generic/dl-hash.h 2001-07-07 15:21:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/dl-hash.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Compute hash value for given string according to ELF standard.
+- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,7 +24,7 @@
+ /* This is the hashing function specified by the ELF ABI. In the
+ first five operations no overflow is possible so we optimized it a
+ bit. */
+-static inline unsigned int
++static unsigned int
+ _dl_elf_hash (const unsigned char *name)
+ {
+ unsigned long int hash = 0;
+--- glibc-2.3.2/sysdeps/generic/dl-symaddr.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-symaddr.c 2003-05-01 23:28:25.000000000 -0400
+@@ -0,0 +1,33 @@
++/* Get the symbol address. Generic version.
++ Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <ldsodefs.h>
++#include <dl-fptr.h>
++
++void *
++_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref)
++{
++ ElfW(Addr) value = (map ? map->l_addr : 0) + ref->st_value;
++
++ /* Return the pointer to function descriptor. */
++ if (ELFW(ST_TYPE) (ref->st_info) == STT_FUNC)
++ return (void *) _dl_make_fptr (map, ref, value);
++ else
++ return (void *) value;
++}
+--- glibc-2.3.2/sysdeps/generic/dl-sysdep.c 2003-02-23 00:04:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-sysdep.c 2003-08-21 08:37:08.000000000 -0400
+@@ -79,14 +79,23 @@
+ ElfW(Word) phnum = 0;
+ ElfW(Addr) user_entry;
+ ElfW(auxv_t) *av;
++#ifdef HAVE_AUX_SECURE
++# define set_seen(tag) (tag) /* Evaluate for the side effects. */
++# define set_seen_secure() ((void) 0)
++#else
+ uid_t uid = 0;
+ gid_t gid = 0;
+-#ifdef HAVE_AUX_XID
+-# define set_seen(tag) (tag) /* Evaluate for the side effects. */
+-#else
+ unsigned int seen = 0;
+-# define M(type) (1 << (type))
+-# define set_seen(tag) seen |= M ((tag)->a_type)
++# define set_seen_secure() (seen = -1)
++# ifdef HAVE_AUX_XID
++# define set_seen(tag) (tag) /* Evaluate for the side effects. */
++# else
++# define M(type) (1 << (type))
++# define set_seen(tag) seen |= M ((tag)->a_type)
++# endif
++#endif
++#if defined NEED_DL_SYSINFO && !defined __ASSUME_VSYSCALL
++ ElfW(Word) new_sysinfo = 0;
+ #endif
+
+ DL_FIND_ARG_COMPONENTS (start_argptr, _dl_argc, INTUSE(_dl_argv), _environ,
+@@ -115,6 +124,7 @@
+ _dl_base_addr = av->a_un.a_val;
+ break;
+ #endif
++#ifndef HAVE_AUX_SECURE
+ case AT_UID:
+ case AT_EUID:
+ uid ^= av->a_un.a_val;
+@@ -123,6 +133,13 @@
+ case AT_EGID:
+ gid ^= av->a_un.a_val;
+ break;
++#endif
++ case AT_SECURE:
++#ifndef HAVE_AUX_SECURE
++ seen = -1;
++#endif
++ INTUSE(__libc_enable_secure) = av->a_un.a_val;
++ break;
+ case AT_PLATFORM:
+ GL(dl_platform) = av->a_un.a_ptr;
+ break;
+@@ -137,8 +154,18 @@
+ break;
+ #ifdef NEED_DL_SYSINFO
+ case AT_SYSINFO:
++# ifndef __ASSUME_VSYSCALL
++ new_sysinfo = av->a_un.a_val;
++# else
+ GL(dl_sysinfo) = av->a_un.a_val;
++# endif
+ break;
++ case AT_SYSINFO_EHDR:
++ GL(dl_sysinfo_dso) = av->a_un.a_ptr;
++ break;
++#endif
++#ifdef DL_PLATFORM_AUXV
++ DL_PLATFORM_AUXV
+ #endif
+ }
+
+@@ -146,26 +173,37 @@
+ DL_SYSDEP_OSCHECK (dl_fatal);
+ #endif
+
+- /* Fill in the values we have not gotten from the kernel through the
+- auxiliary vector. */
+-#ifndef HAVE_AUX_XID
+-# define SEE(UID, var, uid) \
++#ifndef HAVE_AUX_SECURE
++ if (seen != -1)
++ {
++ /* Fill in the values we have not gotten from the kernel through the
++ auxiliary vector. */
++# ifndef HAVE_AUX_XID
++# define SEE(UID, var, uid) \
+ if ((seen & M (AT_##UID)) == 0) var ^= __get##uid ()
+- SEE (UID, uid, uid);
+- SEE (EUID, uid, euid);
+- SEE (GID, gid, gid);
+- SEE (EGID, gid, egid);
++ SEE (UID, uid, uid);
++ SEE (EUID, uid, euid);
++ SEE (GID, gid, gid);
++ SEE (EGID, gid, egid);
++# endif
++
++ /* If one of the two pairs of IDs does not match this is a setuid
++ or setgid run. */
++ INTUSE(__libc_enable_secure) = uid | gid;
++ }
+ #endif
+
+- /* If one of the two pairs of IDs does not mattch this is a setuid
+- or setgid run. */
+- INTUSE(__libc_enable_secure) = uid | gid;
+-
+ #ifndef HAVE_AUX_PAGESIZE
+ if (GL(dl_pagesize) == 0)
+ GL(dl_pagesize) = __getpagesize ();
+ #endif
+
++#if defined NEED_DL_SYSINFO && !defined __ASSUME_VSYSCALL
++ /* Only set the sysinfo value if we also have the vsyscall DSO. */
++ if (GL(dl_sysinfo_dso) != 0)
++ GL(dl_sysinfo) = new_sysinfo;
++#endif
++
+ #ifdef DL_SYSDEP_INIT
+ DL_SYSDEP_INIT;
+ #endif
+@@ -213,60 +251,81 @@
+ buf[63] = '\0';
+
+ /* The following code assumes that the AT_* values are encoded
+- starting from 0 with AT_NULL, 1 for AT_IGNORE, and all other values
+- close by (otherwise the array will be too large). In case we have
+- to support a platform where these requirements are not fulfilled
+- some alternative implementation has to be used. */
++ starting from 0 with AT_NULL, 1 for AT_IGNORE, and all other values
++ close by (otherwise the array will be too large). In case we have
++ to support a platform where these requirements are not fulfilled
++ some alternative implementation has to be used. */
+ for (av = _dl_auxv; av->a_type != AT_NULL; ++av)
+ {
+ static const struct
+ {
+ const char label[20];
+- enum { dec, hex, str } form;
++ enum { unused, dec, hex, str } form;
+ } auxvars[] =
+ {
+- [AT_EXECFD - 2] = { "AT_EXECFD: ", dec },
+- [AT_PHDR - 2] = { "AT_PHDR: 0x", hex },
+- [AT_PHENT - 2] = { "AT_PHENT: ", dec },
+- [AT_PHNUM - 2] = { "AT_PHNUM: ", dec },
+- [AT_PAGESZ - 2] = { "AT_PAGESZ: ", dec },
+- [AT_BASE - 2] = { "AT_BASE: 0x", hex },
+- [AT_FLAGS - 2] = { "AT_FLAGS: 0x", hex },
+- [AT_ENTRY - 2] = { "AT_ENTRY: 0x", hex },
+- [AT_NOTELF - 2] = { "AT_NOTELF: ", hex },
+- [AT_UID - 2] = { "AT_UID: ", dec },
+- [AT_EUID - 2] = { "AT_EUID: ", dec },
+- [AT_GID - 2] = { "AT_GID: ", dec },
+- [AT_EGID - 2] = { "AT_EGID: ", dec },
+- [AT_PLATFORM - 2] = { "AT_PLATFORM: ", str },
+- [AT_HWCAP - 2] = { "AT_HWCAP: ", hex },
+- [AT_CLKTCK - 2] = { "AT_CLKTCK: ", dec },
+- [AT_FPUCW - 2] = { "AT_FPUCW: ", hex },
+- [AT_DCACHEBSIZE - 2] = { "AT_DCACHEBSIZE: 0x", hex },
+- [AT_ICACHEBSIZE - 2] = { "AT_ICACHEBSIZE: 0x", hex },
+- [AT_UCACHEBSIZE - 2] = { "AT_UCACHEBSIZE: 0x", hex },
+- [AT_SYSINFO - 2] = { "AT_SYSINFO: 0x", hex }
++ [AT_EXECFD - 2] = { "AT_EXECFD: ", dec },
++ [AT_PHDR - 2] = { "AT_PHDR: 0x", hex },
++ [AT_PHENT - 2] = { "AT_PHENT: ", dec },
++ [AT_PHNUM - 2] = { "AT_PHNUM: ", dec },
++ [AT_PAGESZ - 2] = { "AT_PAGESZ: ", dec },
++ [AT_BASE - 2] = { "AT_BASE: 0x", hex },
++ [AT_FLAGS - 2] = { "AT_FLAGS: 0x", hex },
++ [AT_ENTRY - 2] = { "AT_ENTRY: 0x", hex },
++ [AT_NOTELF - 2] = { "AT_NOTELF: ", hex },
++ [AT_UID - 2] = { "AT_UID: ", dec },
++ [AT_EUID - 2] = { "AT_EUID: ", dec },
++ [AT_GID - 2] = { "AT_GID: ", dec },
++ [AT_EGID - 2] = { "AT_EGID: ", dec },
++ [AT_PLATFORM - 2] = { "AT_PLATFORM: ", str },
++ [AT_HWCAP - 2] = { "AT_HWCAP: ", hex },
++ [AT_CLKTCK - 2] = { "AT_CLKTCK: ", dec },
++ [AT_FPUCW - 2] = { "AT_FPUCW: ", hex },
++ [AT_DCACHEBSIZE - 2] = { "AT_DCACHEBSIZE: 0x", hex },
++ [AT_ICACHEBSIZE - 2] = { "AT_ICACHEBSIZE: 0x", hex },
++ [AT_UCACHEBSIZE - 2] = { "AT_UCACHEBSIZE: 0x", hex },
++#ifdef NEED_DL_SYSINFO
++ [AT_SYSINFO - 2] = { "AT_SYSINFO: 0x", hex },
++ [AT_SYSINFO_EHDR - 2] = { "AT_SYSINFO_EHDR: 0x", hex },
++#endif
++ [AT_SECURE - 2] = { "AT_SECURE: ", dec },
+ };
+ unsigned int idx = (unsigned int) (av->a_type - 2);
+
+ assert (AT_NULL == 0);
+ assert (AT_IGNORE == 1);
+- if (idx < sizeof (auxvars) / sizeof (auxvars[0]))
++
++ if (av->a_type == AT_HWCAP)
+ {
+- if (av->a_type != AT_HWCAP || _dl_procinfo (av->a_un.a_val) < 0)
+- {
+- const char *val = av->a_un.a_ptr;
+-
+- if (__builtin_expect (auxvars[idx].form, dec) == dec)
+- val = _itoa ((unsigned long int) av->a_un.a_val,
+- buf + sizeof buf - 1, 10, 0);
+- else if (__builtin_expect (auxvars[idx].form, hex) == hex)
+- val = _itoa ((unsigned long int) av->a_un.a_val,
+- buf + sizeof buf - 1, 16, 0);
++ /* This is handled special. */
++ if (_dl_procinfo (av->a_un.a_val) == 0)
++ continue;
++ }
+
+- _dl_printf ("%s%s\n", auxvars[idx].label, val);
+- }
++ if (idx < sizeof (auxvars) / sizeof (auxvars[0])
++ && auxvars[idx].form != unused)
++ {
++ const char *val = av->a_un.a_ptr;
++
++ if (__builtin_expect (auxvars[idx].form, dec) == dec)
++ val = _itoa ((unsigned long int) av->a_un.a_val,
++ buf + sizeof buf - 1, 10, 0);
++ else if (__builtin_expect (auxvars[idx].form, hex) == hex)
++ val = _itoa ((unsigned long int) av->a_un.a_val,
++ buf + sizeof buf - 1, 16, 0);
++
++ _dl_printf ("%s%s\n", auxvars[idx].label, val);
++
++ continue;
+ }
++
++ /* Unknown value: print a generic line. */
++ char buf2[17];
++ buf[sizeof (buf2) - 1] = '\0';
++ const char *val2 = _itoa ((unsigned long int) av->a_un.a_val,
++ buf2 + sizeof buf2 - 1, 16, 0);
++ const char *val = _itoa ((unsigned long int) av->a_type,
++ buf + sizeof buf - 1, 16, 0);
++ _dl_printf ("AT_??? (0x%s): 0x%s\n", val, val2);
+ }
+ }
+
+@@ -338,7 +397,7 @@
+
+ /* Determine the total size of all strings together. */
+ if (cnt == 1)
+- total = temp[0].len;
++ total = temp[0].len + 1;
+ else
+ {
+ total = (1UL << (cnt - 2)) * (temp[0].len + temp[cnt - 1].len + 2);
+--- glibc-2.3.2/sysdeps/generic/dl-sysdep.h 2002-12-19 13:36:08.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-sysdep.h 2003-03-15 15:02:15.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* System-specific settings for dynamic linker code. Generic version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,6 +17,9 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#ifndef _DL_SYSDEP_H
++#define _DL_SYSDEP_H 1
++
+ /* This macro must be defined to either 0 or 1.
+
+ If 1, then an errno global variable hidden in ld.so will work right with
+@@ -30,3 +33,5 @@
+ #else
+ # define RTLD_PRIVATE_ERRNO 0
+ #endif
++
++#endif /* dl-sysdep.h */
+--- glibc-2.3.2/sysdeps/generic/dl-tls.c 2003-01-30 15:58:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/dl-tls.c 2003-09-19 22:37:07.000000000 -0400
+@@ -117,8 +117,8 @@
+ _dl_determine_tlsoffset (void)
+ {
+ struct dtv_slotinfo *slotinfo;
+- size_t max_align = __alignof__ (void *);
+- size_t offset;
++ size_t max_align = TLS_TCB_ALIGN;
++ size_t offset, freetop = 0, freebottom = 0;
+ size_t cnt;
+
+ /* The first element of the dtv slot info list is allocated. */
+@@ -127,70 +127,122 @@
+ dl_tls_dtv_slotinfo_list list. */
+ assert (GL(dl_tls_dtv_slotinfo_list)->next == NULL);
+
++ slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
++
++ /* Determining the offset of the various parts of the static TLS
++ block has several dependencies. In addition we have to work
++ around bugs in some toolchains.
++
++ Each TLS block from the objects available at link time has a size
++ and an alignment requirement. The GNU ld computes the alignment
++ requirements for the data at the positions *in the file*, though.
++ I.e, it is not simply possible to allocate a block with the size
++ of the TLS program header entry. The data is layed out assuming
++ that the first byte of the TLS block fulfills
++
++ p_vaddr mod p_align == &TLS_BLOCK mod p_align
++
++ This means we have to add artificial padding at the beginning of
++ the TLS block. These bytes are never used for the TLS data in
++ this module but the first byte allocated must be aligned
++ according to mod p_align == 0 so that the first byte of the TLS
++ block is aligned according to p_vaddr mod p_align. This is ugly
++ and the linker can help by computing the offsets in the TLS block
++ assuming the first byte of the TLS block is aligned according to
++ p_align.
++
++ The extra space which might be allocated before the first byte of
++ the TLS block need not go unused. The code below tries to use
++ that memory for the next TLS block. This can work if the total
++ memory requirement for the next TLS block is smaller than the
++ gap. */
++
+ # if TLS_TCB_AT_TP
+ /* We simply start with zero. */
+ offset = 0;
+
+- slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
+ for (cnt = 1; slotinfo[cnt].map != NULL; ++cnt)
+ {
+ assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
+
++ size_t firstbyte = (-slotinfo[cnt].map->l_tls_firstbyte_offset
++ & (slotinfo[cnt].map->l_tls_align - 1));
++ size_t off;
+ max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
+
+- /* Compute the offset of the next TLS block. */
+- offset = roundup (offset + slotinfo[cnt].map->l_tls_blocksize,
+- slotinfo[cnt].map->l_tls_align);
++ if (freebottom - freetop >= slotinfo[cnt].map->l_tls_blocksize)
++ {
++ off = roundup (freetop + slotinfo[cnt].map->l_tls_blocksize
++ - firstbyte, slotinfo[cnt].map->l_tls_align)
++ + firstbyte;
++ if (off <= freebottom)
++ {
++ freetop = off;
++
++ /* XXX For some architectures we perhaps should store the
++ negative offset. */
++ slotinfo[cnt].map->l_tls_offset = off;
++ continue;
++ }
++ }
++
++ off = roundup (offset + slotinfo[cnt].map->l_tls_blocksize - firstbyte,
++ slotinfo[cnt].map->l_tls_align) + firstbyte;
++ if (off > offset + slotinfo[cnt].map->l_tls_blocksize
++ + (freebottom - freetop))
++ {
++ freetop = offset;
++ freebottom = off - slotinfo[cnt].map->l_tls_blocksize;
++ }
++ offset = off;
+
+ /* XXX For some architectures we perhaps should store the
+ negative offset. */
+- slotinfo[cnt].map->l_tls_offset = offset;
++ slotinfo[cnt].map->l_tls_offset = off;
+ }
+
+- /* The thread descriptor (pointed to by the thread pointer) has its
+- own alignment requirement. Adjust the static TLS size
+- and TLS offsets appropriately. */
+- // XXX How to deal with this. We cannot simply add zero bytes
+- // XXX after the first (closest to the TCB) TLS block since this
+- // XXX would invalidate the offsets the linker creates for the LE
+- // XXX model.
+-
+ GL(dl_tls_static_used) = offset;
+- GL(dl_tls_static_size) = roundup (offset + TLS_STATIC_SURPLUS + TLS_TCB_SIZE,
+- TLS_TCB_ALIGN);
++ GL(dl_tls_static_size) = (roundup (offset + TLS_STATIC_SURPLUS, max_align)
++ + TLS_TCB_SIZE);
+ # elif TLS_DTV_AT_TP
+ /* The TLS blocks start right after the TCB. */
+ offset = TLS_TCB_SIZE;
+
+- /* The first block starts right after the TCB. */
+- slotinfo = GL(dl_tls_dtv_slotinfo_list)->slotinfo;
+- if (slotinfo[1].map != NULL)
++ for (cnt = 1; slotinfo[cnt].map != NULL; ++cnt)
+ {
+- size_t prev_size;
++ assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
+
+- offset = roundup (offset, slotinfo[1].map->l_tls_align);
+- slotinfo[1].map->l_tls_offset = offset;
+- max_align = slotinfo[1].map->l_tls_align;
+- prev_size = slotinfo[1].map->l_tls_blocksize;
++ size_t firstbyte = (-slotinfo[cnt].map->l_tls_firstbyte_offset
++ & (slotinfo[cnt].map->l_tls_align - 1));
++ size_t off;
++ max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
+
+- for (cnt = 2; slotinfo[cnt].map != NULL; ++cnt)
++ if (slotinfo[cnt].map->l_tls_blocksize >= freetop - freebottom)
+ {
+- assert (cnt < GL(dl_tls_dtv_slotinfo_list)->len);
+-
+- max_align = MAX (max_align, slotinfo[cnt].map->l_tls_align);
+-
+- /* Compute the offset of the next TLS block. */
+- offset = roundup (offset + prev_size,
+- slotinfo[cnt].map->l_tls_align);
++ off = roundup (freebottom, slotinfo[cnt].map->l_tls_align);
++ if (off - freebottom < firstbyte)
++ off += slotinfo[cnt].map->l_tls_align;
++ if (off + slotinfo[cnt].map->l_tls_blocksize - firstbyte <= freetop)
++ {
++ slotinfo[cnt].map->l_tls_offset = off - firstbyte;
++ freebottom = off + slotinfo[cnt].map->l_tls_blocksize
++ - firstbyte;
++ continue;
++ }
++ }
+
+- /* XXX For some architectures we perhaps should store the
+- negative offset. */
+- slotinfo[cnt].map->l_tls_offset = offset;
++ off = roundup (offset, slotinfo[cnt].map->l_tls_align);
++ if (off - offset < firstbyte)
++ off += slotinfo[cnt].map->l_tls_align;
+
+- prev_size = slotinfo[cnt].map->l_tls_blocksize;
++ slotinfo[cnt].map->l_tls_offset = off - firstbyte;
++ if (off - firstbyte - offset > freetop - freebottom)
++ {
++ freebottom = offset;
++ freetop = off - firstbyte;
+ }
+
+- offset += prev_size;
++ offset = off + slotinfo[cnt].map->l_tls_blocksize - firstbyte;
+ }
+
+ GL(dl_tls_static_used) = offset;
+@@ -201,7 +253,7 @@
+ # endif
+
+ /* The alignment requirement for the static TLS block. */
+- GL(dl_tls_static_align) = MAX (TLS_TCB_ALIGN, max_align);
++ GL(dl_tls_static_align) = max_align;
+ }
+
+
+@@ -294,7 +346,7 @@
+
+ /* Allocate a correctly aligned chunk of memory. */
+ result = __libc_memalign (GL(dl_tls_static_align), size);
+- if (__builtin_expect (result != NULL, 0))
++ if (__builtin_expect (result != NULL, 1))
+ {
+ /* Allocate the DTV. */
+ void *allocated = result;
+@@ -359,7 +411,7 @@
+ /* Unused entry. */
+ continue;
+
+- if (map->l_tls_offset == 0)
++ if (map->l_tls_offset == NO_TLS_OFFSET)
+ {
+ /* For dynamically loaded modules we simply store
+ the value indicating deferred allocation. */
+@@ -370,7 +422,7 @@
+ assert (map->l_tls_modid == cnt);
+ assert (map->l_tls_blocksize >= map->l_tls_initimage_size);
+ # if TLS_TCB_AT_TP
+- assert (map->l_tls_offset >= map->l_tls_blocksize);
++ assert ((size_t) map->l_tls_offset >= map->l_tls_blocksize);
+ dest = (char *) result - map->l_tls_offset;
+ # elif TLS_DTV_AT_TP
+ dest = (char *) result + map->l_tls_offset;
+@@ -415,7 +467,10 @@
+ dtv_t *dtv = GET_DTV (tcb);
+
+ /* The array starts with dtv[-1]. */
+- free (dtv - 1);
++#ifdef SHARED
++ if (dtv != GL(dl_initial_dtv))
++#endif
++ free (dtv - 1);
+
+ if (dealloc_tcb)
+ {
+--- glibc-2.3.2/sysdeps/generic/elf/backtracesyms.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/elf/backtracesyms.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Return list with names for address in backtrace.
+- Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -48,7 +48,7 @@
+ /* Fill in the information we can get from `dladdr'. */
+ for (cnt = 0; cnt < size; ++cnt)
+ {
+- status[cnt] = _dl_addr (array[cnt], &info[cnt]);
++ status[cnt] = _dl_addr (array[cnt], &info[cnt], NULL, NULL);
+ if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0')
+ /* We have some info, compute the length of the string which will be
+ "<file-name>(<sym-name>) [+offset]. */
+--- glibc-2.3.2/sysdeps/generic/elf/backtracesymsfd.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/elf/backtracesymsfd.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Write formatted list with names for addresses in backtrace to a file.
+- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -48,7 +48,7 @@
+ Dl_info info;
+ size_t last = 0;
+
+- if (_dl_addr (array[cnt], &info)
++ if (_dl_addr (array[cnt], &info, NULL, NULL)
+ && info.dli_fname && info.dli_fname[0] != '\0')
+ {
+ /* Name of the file. */
+--- glibc-2.3.2/sysdeps/generic/enbl-secure.c 2001-07-07 15:21:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/enbl-secure.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Define and initialize the `__libc_enable_secure' flag. Generic version.
+- Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,12 +23,15 @@
+ #include <unistd.h>
+ #include <libc-internal.h>
+
++/* If nonzero __libc_enable_secure is already set. */
++int __libc_enable_secure_decided;
+ /* Safest assumption, if somehow the initializer isn't run. */
+ int __libc_enable_secure = 1;
+
+ void
+ __libc_init_secure (void)
+ {
+- __libc_enable_secure = (__geteuid () != __getuid ()
+- || __getegid () != __getgid ());
++ if (__libc_enable_secure_decided == 0)
++ __libc_enable_secure = (__geteuid () != __getuid ()
++ || __getegid () != __getgid ());
+ }
+--- glibc-2.3.2/sysdeps/generic/glob.c 2003-01-16 19:21:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/glob.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1388,7 +1388,9 @@
+ /* If we shall match only directories use the information
+ provided by the dirent call if possible. */
+ if ((flags & GLOB_ONLYDIR)
+- && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
++ && d->d_type != DT_UNKNOWN
++ && d->d_type != DT_DIR
++ && d->d_type != DT_LNK)
+ continue;
+ #endif
+
+--- glibc-2.3.2/sysdeps/generic/ifaddrs.c 2002-07-24 18:56:04.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/ifaddrs.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* getifaddrs -- get names and addresses of all network interfaces
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,6 +30,7 @@
+ __set_errno (ENOSYS);
+ return -1;
+ }
++libc_hidden_def (getifaddrs)
+ stub_warning (getifaddrs)
+
+ void
+@@ -41,4 +42,5 @@
+ /* Can't be called properly if getifaddrs never succeeded. */
+ abort ();
+ }
++libc_hidden_def (freeifaddrs)
+ stub_warning (freeifaddrs)
+--- glibc-2.3.2/sysdeps/generic/ifreq.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/ifreq.c 2003-06-11 18:21:54.000000000 -0400
+@@ -0,0 +1,80 @@
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andreas Jaeger <aj@suse.de>.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include "ifreq.h"
++
++
++void
++__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
++{
++ int fd = sockfd;
++ struct ifconf ifc;
++ int rq_len;
++ int nifs;
++# define RQ_IFS 4
++
++ if (fd < 0)
++ fd = __opensock ();
++ if (fd < 0)
++ {
++ *num_ifs = 0;
++ *ifreqs = NULL;
++ return;
++ }
++
++ ifc.ifc_buf = NULL;
++ rq_len = RQ_IFS * sizeof (struct ifreq) / 2; /* Doubled in the loop. */
++ do
++ {
++ ifc.ifc_len = rq_len *= 2;
++ ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
++ if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
++ {
++ if (ifc.ifc_buf)
++ free (ifc.ifc_buf);
++
++ if (fd != sockfd)
++ __close (fd);
++ *num_ifs = 0;
++ *ifreqs = NULL;
++ return;
++ }
++ }
++ while (rq_len < sizeof (struct ifreq) + ifc.ifc_len);
++
++ if (fd != sockfd)
++ __close (fd);
++
++#ifdef _HAVE_SA_LEN
++ struct ifreq *ifr = ifreqs;
++ nifs = 0;
++ while ((char *) ifr < ifc.ifc_buf + ifc.ifc_len)
++ {
++ ++nifs;
++ ifr = __if_nextreq (ifr);
++ if (ifr == NULL)
++ break;
++ }
++#else
++ nifs = ifc.ifc_len / sizeof (struct ifreq);
++#endif
++
++ *num_ifs = nifs;
++ *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
++}
+--- glibc-2.3.2/sysdeps/generic/ifreq.h 2002-12-02 17:36:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/ifreq.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>.
+
+@@ -28,70 +28,13 @@
+ __if_nextreq (struct ifreq *ifr)
+ {
+ #ifdef _HAVE_SA_LEN
+- if (ifr->ifa_addr > sizeof ifr->ifa_addr)
+- return (struct ifreq *) ((char *) &ifr->ifa_addr + ifr->ifa_addr.sa_len);
++ if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr)
++ return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len);
+ #endif
+ return ifr + 1;
+ }
+
+-static inline void
+-__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
+-{
+- int fd = sockfd;
+- struct ifconf ifc;
+- int rq_len;
+- int nifs;
+-# define RQ_IFS 4
+-
+- if (fd < 0)
+- fd = __opensock ();
+- if (fd < 0)
+- {
+- *num_ifs = 0;
+- *ifreqs = NULL;
+- return;
+- }
+-
+- ifc.ifc_buf = NULL;
+- rq_len = RQ_IFS * sizeof (struct ifreq) / 2; /* Doubled in the loop. */
+- do
+- {
+- ifc.ifc_len = rq_len *= 2;
+- ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
+- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
+- {
+- if (ifc.ifc_buf)
+- free (ifc.ifc_buf);
+-
+- if (fd != sockfd)
+- __close (fd);
+- *num_ifs = 0;
+- *ifreqs = NULL;
+- return;
+- }
+- }
+- while (rq_len < sizeof (struct ifreq) + ifc.ifc_len);
+-
+- if (fd != sockfd)
+- __close (fd);
+-
+-#ifdef _HAVE_SA_LEN
+- struct ifreq *ifr = ifreqs;
+- nifs = 0;
+- while ((char *) ifr < ifc.ifc_buf + ifc.ifc_len)
+- {
+- ++nifs;
+- ifr = __if_nextreq (ifr);
+- if (ifr == NULL)
+- break;
+- }
+-#else
+- nifs = ifc.ifc_len / sizeof (struct ifreq);
+-#endif
+-
+- *num_ifs = nifs;
+- *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
+-}
++extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd);
+
+
+ static inline void
+--- glibc-2.3.2/sysdeps/generic/ldconfig.h 2002-09-14 22:18:58.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/ldconfig.h 2003-03-15 15:02:15.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 1999.
+
+@@ -32,6 +32,8 @@
+ #define FLAG_X8664_LIB64 0x0300
+ #define FLAG_S390_LIB64 0x0400
+ #define FLAG_POWERPC_LIB64 0x0500
++#define FLAG_MIPS64_LIBN32 0x0600
++#define FLAG_MIPS64_LIBN64 0x0700
+
+ /* Declared in cache.c. */
+ extern void print_cache (const char *cache_name);
+--- glibc-2.3.2/sysdeps/generic/ldsodefs.h 2003-01-03 15:42:47.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/ldsodefs.h 2003-08-21 08:37:08.000000000 -0400
+@@ -97,9 +97,16 @@
+ /* Reloc type classes as returned by elf_machine_type_class().
+ ELF_RTYPE_CLASS_PLT means this reloc should not be satisfied by
+ some PLT symbol, ELF_RTYPE_CLASS_COPY means this reloc should not be
+- satisfied by any symbol in the executable. */
++ satisfied by any symbol in the executable. Some architectures do
++ not support copy relocations. In this case we define the macro to
++ zero so that the code for handling them gets automatically optimized
++ out. */
+ #define ELF_RTYPE_CLASS_PLT 1
+-#define ELF_RTYPE_CLASS_COPY 2
++#ifndef DL_NO_COPY_RELOCS
++# define ELF_RTYPE_CLASS_COPY 2
++#else
++# define ELF_RTYPE_CLASS_COPY 0
++#endif
+
+ /* ELF uses the PF_x macros to specify the segment permissions, mmap
+ uses PROT_xxx. In most cases the three macros have the values 1, 2,
+@@ -166,7 +173,7 @@
+
+ /* Test whether given NAME matches any of the names of the given object. */
+ static __inline int
+-__attribute__ ((unused))
++__attribute__ ((unused, always_inline))
+ _dl_name_match_p (const char *__name, struct link_map *__map)
+ {
+ int __found = strcmp (__name, __map->l_name) == 0;
+@@ -336,11 +343,18 @@
+
+ /* Get architecture specific definitions. */
+ #define PROCINFO_DECL
++#define PROCINFO_CLASS EXTERN
+ #include <dl-procinfo.c>
+
+ /* Structure describing the dynamic linker itself. */
+ EXTERN struct link_map _dl_rtld_map;
+
++#if defined SHARED && defined _LIBC_REENTRANT \
++ && defined __rtld_lock_default_lock_recursive
++ EXTERN void (*_dl_rtld_lock_recursive) (void *);
++ EXTERN void (*_dl_rtld_unlock_recursive) (void *);
++#endif
++
+ /* Keep the conditional TLS members at the end so the layout of the
+ structure used by !USE_TLS code matches the prefix of the layout in
+ the USE_TLS rtld. Note that `struct link_map' is conditionally
+@@ -382,11 +396,17 @@
+ EXTERN void *_dl_initial_dtv;
+ /* Generation counter for the dtv. */
+ EXTERN size_t _dl_tls_generation;
++
++ EXTERN void (*_dl_init_static_tls) (struct link_map *);
+ #endif
+
+ #ifdef NEED_DL_SYSINFO
+ /* Syscall handling improvements. This is very specific to x86. */
+ EXTERN uintptr_t _dl_sysinfo;
++
++ /* The vsyscall page is a virtual DSO pre-mapped by the kernel.
++ This points to its ELF header. */
++ EXTERN const ElfW(Ehdr) *_dl_sysinfo_dso;
+ #endif
+
+ #ifdef SHARED
+@@ -554,6 +574,16 @@
+ internal_function attribute_hidden;
+
+
++/* Collect the directories in the search path for LOADER's dependencies.
++ The data structure is defined in <dlfcn.h>. If COUNTING is true,
++ SI->dls_cnt and SI->dls_size are set; if false, those must be as set
++ by a previous call with COUNTING set, and SI must point to SI->dls_size
++ bytes to be used in filling in the result. */
++extern void _dl_rtld_di_serinfo (struct link_map *loader,
++ Dl_serinfo *si, bool counting)
++ internal_function;
++
++
+ /* Search loaded objects' symbol tables for a definition of the symbol
+ referred to by UNDEF. *SYM is the symbol table entry containing the
+ reference; it is replaced with the defining symbol, and the base load
+@@ -775,6 +805,9 @@
+ extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp)
+ internal_function;
+
++extern void _dl_allocate_static_tls (struct link_map *map)
++ internal_function attribute_hidden;
++
+ /* These are internal entry points to the two halves of _dl_allocate_tls,
+ only used within rtld.c itself at startup time. */
+ extern void *_dl_allocate_tls_storage (void)
+@@ -791,6 +824,10 @@
+ extern void *_dl_tls_symaddr (struct link_map *map, const ElfW(Sym) *ref)
+ internal_function;
+
++#if defined USE_TLS
++extern void _dl_nothread_init_static_tls (struct link_map *) attribute_hidden;
++#endif
++
+ __END_DECLS
+
+ #endif /* ldsodefs.h */
+--- glibc-2.3.2/sysdeps/generic/libc-start.c 2003-02-14 17:59:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/libc-start.c 2003-08-21 08:37:08.000000000 -0400
+@@ -44,22 +44,52 @@
+ #endif
+
+
+-extern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
+- int argc,
+- char *__unbounded *__unbounded ubp_av,
+- void (*init) (void),
+- void (*fini) (void),
+- void (*rtld_fini) (void),
+- void *__unbounded stack_end)
++#ifdef LIBC_START_MAIN
++# define STATIC static inline __attribute__ ((always_inline))
++#else
++# define STATIC
++# define LIBC_START_MAIN BP_SYM (__libc_start_main)
++#endif
++
++#ifdef MAIN_AUXVEC_ARG
++/* main gets passed a pointer to the auxiliary. */
++# define MAIN_AUXVEC_DECL , void *
++# define MAIN_AUXVEC_PARAM , auxvec
++#else
++# define MAIN_AUXVEC_DECL
++# define MAIN_AUXVEC_PARAM
++#endif
++
++STATIC int LIBC_START_MAIN (int (*main) (int, char **, char **
++ MAIN_AUXVEC_DECL),
++ int argc,
++ char *__unbounded *__unbounded ubp_av,
++#ifdef LIBC_START_MAIN_AUXVEC_ARG
++ ElfW(auxv_t) *__unbounded auxvec,
++#endif
++#ifdef INIT_MAIN_ARGS
++ __typeof (main) init,
++#else
++ void (*init) (void),
++#endif
++ void (*fini) (void),
++ void (*rtld_fini) (void),
++ void *__unbounded stack_end)
+ __attribute__ ((noreturn));
+
+-int
+-/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
+- BPs in the arglist of startup_info.main and startup_info.init. */
+-BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
+- int argc, char *__unbounded *__unbounded ubp_av,
+- void (*init) (void), void (*fini) (void),
+- void (*rtld_fini) (void), void *__unbounded stack_end)
++STATIC int
++LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
++ int argc, char *__unbounded *__unbounded ubp_av,
++#ifdef LIBC_START_MAIN_AUXVEC_ARG
++ ElfW(auxv_t) *__unbounded auxvec,
++#endif
++#ifdef INIT_MAIN_ARGS
++ __typeof (main) init,
++#else
++ void (*init) (void),
++#endif
++ void (*fini) (void),
++ void (*rtld_fini) (void), void *__unbounded stack_end)
+ {
+ char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
+ #if __BOUNDED_POINTERS__
+@@ -80,13 +110,18 @@
+
+ #ifndef SHARED
+ # ifdef HAVE_AUX_VECTOR
+- void *__unbounded *__unbounded auxvec;
+ /* First process the auxiliary vector since we need to find the
+ program header to locate an eventually present PT_TLS entry. */
+- for (auxvec = (void *__unbounded *__unbounded) ubp_ev;
+- *auxvec != NULL; ++auxvec);
+- ++auxvec;
+- _dl_aux_init ((ElfW(auxv_t) *) auxvec);
++# ifndef LIBC_START_MAIN_AUXVEC_ARG
++ ElfW(auxv_t) *__unbounded auxvec;
++ {
++ char *__unbounded *__unbounded evp = ubp_ev;
++ while (*evp++ != NULL)
++ ;
++ auxvec = (ElfW(auxv_t) *__unbounded) evp;
++ }
++# endif
++ _dl_aux_init (auxvec);
+ # endif
+ # ifdef DL_SYSDEP_OSCHECK
+ if (!__libc_multiple_libcs)
+@@ -106,13 +141,6 @@
+ if (__pthread_initialize_minimal)
+ # endif
+ __pthread_initialize_minimal ();
+-
+- /* Some security at this point. Prevent starting a SUID binary where
+- the standard file descriptors are not opened. We have to do this
+- only for statically linked applications since otherwise the dynamic
+- loader did the work already. */
+- if (__builtin_expect (__libc_enable_secure, 0))
+- __libc_check_standard_fds ();
+ #endif
+
+ /* Register the destructor of the dynamic linker if there is any. */
+@@ -130,47 +158,71 @@
+ if (fini)
+ __cxa_atexit ((void (*) (void *)) fini, NULL, NULL);
+
++#ifndef SHARED
++ /* Some security at this point. Prevent starting a SUID binary where
++ the standard file descriptors are not opened. We have to do this
++ only for statically linked applications since otherwise the dynamic
++ loader did the work already. */
++ if (__builtin_expect (__libc_enable_secure, 0))
++ __libc_check_standard_fds ();
++#endif
++
+ /* Call the initializer of the program, if any. */
+ #ifdef SHARED
+ if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
+ _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);
+ #endif
+ if (init)
+- (*init) ();
++ (*init) (
++#ifdef INIT_MAIN_ARGS
++ argc, argv, __environ MAIN_AUXVEC_PARAM
++#endif
++ );
+
+ #ifdef SHARED
+ if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
+ _dl_debug_printf ("\ntransferring control: %s\n\n", argv[0]);
+ #endif
+
+-#ifdef HAVE_CANCELBUF
+- if (setjmp (THREAD_SELF->cancelbuf) == 0)
+-#endif
++#ifdef HAVE_CLEANUP_JMP_BUF
++ /* Memory for the cancellation buffer. */
++ struct pthread_unwind_buf unwind_buf;
++
++ int not_first_call;
++ not_first_call = setjmp ((struct __jmp_buf_tag *) unwind_buf.cancel_jmp_buf);
++ if (__builtin_expect (! not_first_call, 1))
+ {
+- /* XXX This is where the try/finally handling must be used. */
++ struct pthread *self = THREAD_SELF;
++
++ /* Store old info. */
++ unwind_buf.priv.data.prev = THREAD_GETMEM (self, cleanup_jmp_buf);
++ unwind_buf.priv.data.cleanup = THREAD_GETMEM (self, cleanup);
++
++ /* Store the new cleanup handler info. */
++ THREAD_SETMEM (self, cleanup_jmp_buf, &unwind_buf);
+
+- result = main (argc, argv, __environ);
++ /* Run the program. */
++ result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
+ }
+-#ifdef HAVE_CANCELBUF
+ else
+ {
+-# ifdef HAVE_PTR_NTHREADS
+ /* One less thread. Decrement the counter. If it is zero we
+ terminate the entire process. */
+ result = 0;
+- int *const ptr;
+-# ifdef SHARED
+- ptr = __libc_pthread_functions.ptr_nthreads;
+-# else
++# ifdef SHARED
++ int *const ptr = __libc_pthread_functions.ptr_nthreads;
++# else
+ extern int __nptl_nthreads __attribute ((weak));
+- ptr = &__nptl_nthreads;
+-# endif
++ int *const ptr = &__nptl_nthreads;
++# endif
+
+ if (! atomic_decrement_and_test (ptr))
+-# endif
+ /* Not much left to do but to exit the thread, not the process. */
+ __exit_thread (0);
+ }
++#else
++ /* Nothing fancy, just call the function. */
++ result = main (argc, argv, __environ MAIN_AUXVEC_PARAM);
+ #endif
+
+ exit (result);
+--- glibc-2.3.2/sysdeps/generic/libc_fatal.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/libc_fatal.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,3 +28,4 @@
+
+ abort ();
+ }
++libc_hidden_def (__libc_fatal)
+--- glibc-2.3.2/sysdeps/generic/lockf.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/lockf.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1994, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1994,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -67,5 +67,8 @@
+ return -1;
+ }
+
++ /* lockf() is a cancellation point but so is fcntl() if F_SETLKW is
++ used. Therefore we don't have to care about cancellation here,
++ the fcntl() function will take care of it. */
+ return __fcntl (fd, cmd, &fl);
+ }
+--- glibc-2.3.2/sysdeps/generic/madvise.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/madvise.c 2003-08-21 08:37:08.000000000 -0400
+@@ -24,11 +24,10 @@
+ for the region starting at ADDR and extending LEN bytes. */
+
+ int
+-posix_madvise (__ptr_t addr, size_t len, int advice)
++madvise (__ptr_t addr, size_t len, int advice)
+ {
+ __set_errno (ENOSYS);
+ return -1;
+ }
+-weak_alias (posix_madvise, madvise)
+ stub_warning (madvise)
+ #include <stub-tag.h>
+--- glibc-2.3.2/sysdeps/generic/memchr.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/memchr.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991,93,96,97,99,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se) and
+@@ -212,3 +212,4 @@
+ #ifdef weak_alias
+ weak_alias (__memchr, BP_SYM (memchr))
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/generic/memcmp.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/memcmp.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1993, 1995, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1993,1995,1997,1998,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+@@ -131,9 +131,6 @@
+ /* memcmp_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN `op_t'
+ objects (not LEN bytes!). Both SRCP1 and SRCP2 should be aligned for
+ memory operations on `op_t's. */
+-#ifdef __GNUC__
+-__inline
+-#endif
+ static int
+ memcmp_common_alignment (srcp1, srcp2, len)
+ long int srcp1;
+@@ -221,9 +218,6 @@
+ /* memcmp_not_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN
+ `op_t' objects (not LEN bytes!). SRCP2 should be aligned for memory
+ operations on `op_t', but SRCP1 *should be unaligned*. */
+-#ifdef __GNUC__
+-__inline
+-#endif
+ static int
+ memcmp_not_common_alignment (srcp1, srcp2, len)
+ long int srcp1;
+--- glibc-2.3.2/sysdeps/generic/memcpy.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/memcpy.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Copy memory to memory until the specified number of bytes
+ has been copied. Overlap is NOT handled correctly.
+- Copyright (C) 1991, 1997 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+@@ -62,3 +62,4 @@
+
+ return dstpp;
+ }
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/generic/memmove.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/memmove.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Copy memory to memory until the specified number of bytes
+ has been copied. Overlap is handled correctly.
+- Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+@@ -107,3 +107,6 @@
+
+ RETURN (dest);
+ }
++#ifndef memmove
++libc_hidden_builtin_def (memmove)
++#endif
+--- glibc-2.3.2/sysdeps/generic/memset.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/memset.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -88,3 +88,4 @@
+
+ return dstpp;
+ }
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/generic/not-cancel.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/not-cancel.h 2003-09-19 22:37:07.000000000 -0400
+@@ -0,0 +1,39 @@
++/* Uncancelable versions of cancelable interfaces. Generic version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* By default we have none. Map the name to the normal functions. */
++#define open_not_cancel(name, flags, mode) \
++ __libc_open (name, flags, mode)
++#define open_not_cancel_2(name, flags) \
++ __libc_open (name, flags)
++#define close_not_cancel(fd) \
++ __close (fd)
++#define close_not_cancel_no_status(fd) \
++ (void) __close (fd)
++#define read_not_cancel(fd, buf, n) \
++ __read (fd, buf, n)
++#define write_not_cancel(fd, buf, n) \
++ __write (fd, buf, n)
++#define writev_not_cancel_no_status(fd, iov, n) \
++ (void) __writev (fd, iov, n)
++#define fcntl_not_cancel(fd, cmd, val) \
++ __fcntl (fd, cmd, val)
++# define waitpid_not_cancel(pid, stat_loc, options) \
++ __waitpid (pid, stat_loc, options)
+--- glibc-2.3.2/sysdeps/generic/posix_fadvise.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/posix_fadvise.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,10 +23,9 @@
+ respect to the file associated with FD. */
+
+ int
+-posix_fadvise (int fd, __off_t offset, size_t len, int advise)
++posix_fadvise (int fd, __off_t offset, __off_t len, int advise)
+ {
+- __set_errno (ENOSYS);
+- return -1;
++ return ENOSYS;
+ }
+ stub_warning (posix_fadvise)
+ #include <stub-tag.h>
+--- glibc-2.3.2/sysdeps/generic/posix_fadvise64.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/posix_fadvise64.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,10 +23,9 @@
+ respect to the file associated with FD. */
+
+ int
+-posix_fadvise64 (int fd, __off64_t offset, size_t len, int advise)
++posix_fadvise64 (int fd, __off64_t offset, __off64_t len, int advise)
+ {
+- __set_errno (ENOSYS);
+- return -1;
++ return ENOSYS;
+ }
+ stub_warning (posix_fadvise64)
+ #include <stub-tag.h>
+--- glibc-2.3.2/sysdeps/generic/posix_fallocate.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/posix_fallocate.c 2003-09-19 22:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,7 +22,7 @@
+ /* Reserve storage for the data of the file associated with FD. */
+
+ int
+-posix_fallocate (int fd, __off_t offset, size_t len)
++posix_fallocate (int fd, __off_t offset, __off_t len)
+ {
+ __set_errno (ENOSYS);
+ return -1;
+--- glibc-2.3.2/sysdeps/generic/posix_fallocate64.c 2001-07-07 15:21:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/posix_fallocate64.c 2003-09-19 22:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,7 +22,7 @@
+ /* Reserve storage for the data of the file associated with FD. */
+
+ int
+-posix_fallocate64 (int fd, __off64_t offset, size_t len)
++posix_fallocate64 (int fd, __off64_t offset, __off64_t len)
+ {
+ __set_errno (ENOSYS);
+ return -1;
+--- glibc-2.3.2/sysdeps/generic/posix_madvise.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/posix_madvise.c 2003-08-16 02:12:22.000000000 -0400
+@@ -0,0 +1,32 @@
++/* Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/types.h>
++#include <sys/mman.h>
++#include <errno.h>
++
++/* Advise the system about particular usage patterns the program follows
++ for the region starting at ADDR and extending LEN bytes. */
++
++int
++posix_madvise (__ptr_t addr, size_t len, int advice)
++{
++ return ENOSYS;
++}
++stub_warning (posix_madvise)
++#include <stub-tag.h>
+--- glibc-2.3.2/sysdeps/generic/pselect.c 2002-12-15 02:27:46.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/pselect.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996,1997,1998,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -50,6 +50,9 @@
+ if (sigmask != NULL)
+ __sigprocmask (SIG_SETMASK, sigmask, &savemask);
+
++ /* Note the pselect() is a cancellation point. But since we call
++ select() which itself is a cancellation point we do not have
++ to do anything here. */
+ retval = __select (nfds, readfds, writefds, exceptfds,
+ timeout != NULL ? &tval : NULL);
+
+--- glibc-2.3.2/sysdeps/generic/remap_file_pages.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/remap_file_pages.c 2003-03-03 04:44:55.000000000 -0500
+@@ -0,0 +1,35 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/mman.h>
++#include <errno.h>
++
++/* Remap arbitrary pages of a shared backing store within an existing
++ VMA. */
++
++int
++__remap_file_pages (void *start, size_t size, int prot, size_t pgoff,
++ int flags)
++{
++ __set_errno (ENOSYS);
++ return -1;
++}
++
++stub_warning (remap_file_pages)
++#include <stub-tag.h>
++weak_alias (__remap_file_pages, remap_file_pages)
+--- glibc-2.3.2/sysdeps/generic/res-state.c 2002-12-31 14:14:22.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/res-state.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 97, 98, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 97, 98, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,17 +20,26 @@
+ #include <tls.h>
+
+ #if ! USE___THREAD
++
+ # undef _res
+ extern struct __res_state _res;
+-#endif
+
+ /* When threaded, _res may be a per-thread variable. */
+ struct __res_state *
+-#if ! USE___THREAD
+ weak_const_function
+-#endif
+ __res_state (void)
+ {
+ return &_res;
+ }
++
++#else
++
++struct __res_state *
++__res_state (void)
++{
++ return __resp;
++}
++
++#endif
++
+ libc_hidden_def (__res_state)
+--- glibc-2.3.2/sysdeps/generic/sched_getaffinity.c 2003-02-06 14:12:53.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/sched_getaffinity.c 2003-05-12 12:13:06.000000000 -0400
+@@ -17,16 +17,15 @@
+ 02111-1307 USA. */
+
+ #include <errno.h>
+-#include <sys/types.h>
+ #include <sched.h>
++#include <sys/types.h>
+
+
+ /* Retrieve the CPU affinity mask for a particular process. */
+ int
+-sched_getaffinity (pid, len, mask)
++sched_getaffinity (pid, cpuset)
+ pid_t pid;
+- unsigned int len;
+- unsigned long int *mask;
++ cpu_set_t *cpuset;
+ {
+ __set_errno (ENOSYS);
+ return -1;
+--- glibc-2.3.2/sysdeps/generic/sched_setaffinity.c 2003-02-06 14:13:06.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/sched_setaffinity.c 2003-05-12 12:13:06.000000000 -0400
+@@ -23,10 +23,9 @@
+
+ /* Retrieve the CPU affinity mask for a particular process. */
+ int
+-sched_setaffinity (pid, len, mask)
++sched_setaffinity (pid, cpuset)
+ pid_t pid;
+- unsigned int len;
+- unsigned long int *mask;
++ const cpu_set_t *cpuset;
+ {
+ __set_errno (ENOSYS);
+ return -1;
+--- glibc-2.3.2/sysdeps/generic/semtimedop.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/semtimedop.c 2003-04-02 18:44:57.000000000 -0500
+@@ -0,0 +1,37 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/sem.h>
++#include <errno.h>
++
++/* Perform user-defined atomical operation of array of semaphores. */
++
++int
++semtimedop (semid, sops, nsops, timeout)
++ int semid;
++ struct sembuf *sops;
++ size_t nsops;
++ const struct timespec *timeout;
++{
++ __set_errno (ENOSYS);
++ return -1;
++}
++
++stub_warning (semtimedop)
++#include <stub-tag.h>
+--- glibc-2.3.2/sysdeps/generic/sigfillset.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/sigfillset.c 2003-04-21 03:45:03.000000000 -0400
+@@ -0,0 +1,43 @@
++/* Copyright (C) 1991,96,97,2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <signal.h>
++#include <string.h>
++
++/* Set all signals in SET. */
++int
++sigfillset (set)
++ sigset_t *set;
++{
++ if (set == NULL)
++ {
++ __set_errno (EINVAL);
++ return -1;
++ }
++
++ memset (set, 0xff, sizeof (sigset_t));
++
++ /* If the implementation uses a cancellation signal don't set the bit. */
++#ifdef SIGCANCEL
++ __sigdelset (set, SIGCANCEL);
++#endif
++
++ return 0;
++}
++libc_hidden_def (sigfillset)
+--- glibc-2.3.2/sysdeps/generic/strcat.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strcat.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,3 +49,4 @@
+
+ return dest;
+ }
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/generic/strchr.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strchr.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,93,94,95,96,97,99,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991,93,94,95,96,97,99,2000,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se) and
+@@ -187,3 +187,4 @@
+ #undef index
+ weak_alias (strchr, index)
+ #endif
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/generic/strcmp.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strcmp.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,3 +44,4 @@
+
+ return c1 - c2;
+ }
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/generic/strcpy.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strcpy.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,3 +47,4 @@
+
+ return dest;
+ }
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/generic/strcspn.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strcspn.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1994, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -48,3 +48,4 @@
+
+ return count;
+ }
++libc_hidden_builtin_def (strcspn)
+--- glibc-2.3.2/sysdeps/generic/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/string-inlines.c 2003-04-29 18:49:00.000000000 -0400
+@@ -0,0 +1,35 @@
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* <bits/string.h> and <bits/string2.h> declare some extern inline
++ functions. These functions are declared additionally here if
++ inlining is not possible. */
++
++#undef __USE_STRING_INLINES
++#define __USE_STRING_INLINES
++#define _FORCE_INLINES
++#define __STRING_INLINE /* empty */
++#define __NO_INLINE__
++
++#include <string.h>
++#undef index
++#undef rindex
++
++#undef __NO_INLINE__
++#include <bits/string.h>
++#include <bits/string2.h>
+--- glibc-2.3.2/sysdeps/generic/strlen.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strlen.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1993, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1993, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se);
+@@ -150,3 +150,4 @@
+ }
+ }
+ }
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/generic/strncmp.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strncmp.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -70,3 +70,4 @@
+
+ return c1 - c2;
+ }
++libc_hidden_builtin_def (strncmp)
+--- glibc-2.3.2/sysdeps/generic/strncpy.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strncpy.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -84,3 +84,4 @@
+
+ return s;
+ }
++libc_hidden_builtin_def (strncpy)
+--- glibc-2.3.2/sysdeps/generic/strpbrk.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strpbrk.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1994, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -43,3 +43,4 @@
+
+ return NULL;
+ }
++libc_hidden_builtin_def (strpbrk)
+--- glibc-2.3.2/sysdeps/generic/strrchr.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strrchr.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,3 +47,4 @@
+ #undef rindex
+ weak_alias (strrchr, rindex)
+ #endif
++libc_hidden_builtin_def (strrchr)
+--- glibc-2.3.2/sysdeps/generic/strspn.c 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strspn.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -44,3 +44,4 @@
+
+ return count;
+ }
++libc_hidden_builtin_def (strspn)
+--- glibc-2.3.2/sysdeps/generic/strstr.c 2001-12-24 04:10:05.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/strstr.c 2003-05-12 12:13:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Return the offset of one string within another.
+- Copyright (C) 1994, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1994,1996,1997,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -120,3 +120,4 @@
+ ret0:
+ return 0;
+ }
++libc_hidden_builtin_def (strstr)
+--- glibc-2.3.2/sysdeps/generic/strtol.c 2002-08-28 06:14:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/strtol.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Convert string representation of a number into an integer value.
+- Copyright (C) 1991,92,94,95,96,97,98,99,2000,01,02
++ Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001,2002,2003
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+@@ -374,7 +374,11 @@
+ || (int) (TOUPPER (c) - L_('A') + 10) >= base))
+ break;
+
+- end = correctly_grouped_prefix (s, end, thousands, grouping);
++# ifdef USE_WIDE_CHAR
++ end = __correctly_grouped_prefixwc (s, end, thousands, grouping);
++# else
++ end = __correctly_grouped_prefixmb (s, end, thousands, grouping);
++# endif
+ }
+ }
+ else
+--- glibc-2.3.2/sysdeps/generic/sysdep.h 2003-01-09 14:43:34.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/sysdep.h 2003-09-19 22:37:07.000000000 -0400
+@@ -46,4 +46,90 @@
+ #ifndef JUMPTARGET
+ #define JUMPTARGET(sym) sym
+ #endif
++
++/* Makros to generate eh_frame unwind information. */
++# ifdef HAVE_ASM_CFI_DIRECTIVES
++# define cfi_startproc .cfi_startproc
++# define cfi_endproc .cfi_endproc
++# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off
++# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg
++# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off
++# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off
++# define cfi_offset(reg, off) .cfi_offset reg, off
++# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off
++# define cfi_register(r1, r2) .cfi_register r1, r2
++# define cfi_return_column(reg) .cfi_return_column reg
++# define cfi_restore(reg) .cfi_restore reg
++# define cfi_undefined(reg) .cfi_undefined reg
++# define cfi_remember_state .cfi_remember_state
++# define cfi_restore_state .cfi_restore_state
++# define cfi_window_save .cfi_window_save
++# else
++# define cfi_startproc
++# define cfi_endproc
++# define cfi_def_cfa(reg, off)
++# define cfi_def_cfa_register(reg)
++# define cfi_def_cfa_offset(off)
++# define cfi_adjust_cfa_offset(off)
++# define cfi_offset(reg, off)
++# define cfi_rel_offset(reg, off)
++# define cfi_register(r1, r2)
++# define cfi_return_column(reg)
++# define cfi_restore(reg)
++# define cfi_undefined(reg)
++# define cfi_remember_state
++# define cfi_restore_state
++# define cfi_window_save
++# endif
++
++#else /* ! ASSEMBLER */
++# ifdef HAVE_ASM_CFI_DIRECTIVES
++# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
++# define CFI_STRINGIFY2(Name) #Name
++# define CFI_STARTPROC ".cfi_startproc"
++# define CFI_ENDPROC ".cfi_endproc"
++# define CFI_DEF_CFA(reg, off) \
++ ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
++# define CFI_DEF_CFA_REGISTER(reg) \
++ ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
++# define CFI_DEF_CFA_OFFSET(off) \
++ ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
++# define CFI_ADJUST_CFA_OFFSET(off) \
++ ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
++# define CFI_OFFSET(reg, off) \
++ ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
++# define CFI_REL_OFFSET(reg, off) \
++ ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
++# define CFI_REGISTER(r1, r2) \
++ ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
++# define CFI_RETURN_COLUMN(reg) \
++ ".cfi_return_column " CFI_STRINGIFY(reg)
++# define CFI_RESTORE(reg) \
++ ".cfi_restore " CFI_STRINGIFY(reg)
++# define CFI_UNDEFINED(reg) \
++ ".cfi_undefined " CFI_STRINGIFY(reg)
++# define CFI_REMEMBER_STATE \
++ ".cfi_remember_state"
++# define CFI_RESTORE_STATE \
++ ".cfi_restore_state"
++# define CFI_WINDOW_SAVE \
++ ".cfi_window_save"
++# else
++# define CFI_STARTPROC
++# define CFI_ENDPROC
++# define CFI_DEF_CFA(reg, off)
++# define CFI_DEF_CFA_REGISTER(reg)
++# define CFI_DEF_CFA_OFFSET(off)
++# define CFI_ADJUST_CFA_OFFSET(off)
++# define CFI_OFFSET(reg, off)
++# define CFI_REL_OFFSET(reg, off)
++# define CFI_REGISTER(r1, r2)
++# define CFI_RETURN_COLUMN(reg)
++# define CFI_RESTORE(reg)
++# define CFI_UNDEFINED(reg)
++# define CFI_REMEMBER_STATE
++# define CFI_RESTORE_STATE
++# define CFI_WINDOW_SAVE
++# endif
++
+ #endif /* __ASSEMBLER__ */
+--- glibc-2.3.2/sysdeps/generic/tmpfile.c 2002-06-12 16:57:46.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/tmpfile.c 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Open a stdio stream on an anonymous temporary file. Generic/POSIX version.
+- Copyright (C) 1991,93,96,97,98,99,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,93,1996-2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -51,7 +51,7 @@
+
+ /* Note that this relies on the Unix semantics that
+ a file is not really removed until it is closed. */
+- (void) remove (buf);
++ (void) __unlink (buf);
+
+ if ((f = __fdopen (fd, "w+b")) == NULL)
+ __close (fd);
+--- glibc-2.3.2/sysdeps/generic/tst-stack-align.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/tst-stack-align.h 2003-09-17 04:37:25.000000000 -0400
+@@ -0,0 +1,35 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdio.h>
++#include <stdint.h>
++
++#define TEST_STACK_ALIGN() \
++ ({ \
++ double _d = 12.0; \
++ long double _ld = 15.0; \
++ int _ret = 0; \
++ printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \
++ if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \
++ _ret = 1; \
++ \
++ printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \
++ if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \
++ _ret = 1; \
++ _ret; \
++ })
+--- glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.c 2002-05-14 19:46:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,13 +1,14 @@
+ /* Subroutines needed for unwinding stack frames for exception handling. */
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ Contributed by Jason Merrill <jason@cygnus.com>.
+
+-This file is part of GNU CC.
++This file is part of GCC.
+
+-GNU CC is free software; you can redistribute it and/or modify
+-it under the terms of the GNU General Public License as published by
+-the Free Software Foundation; either version 2, or (at your option)
+-any later version.
++GCC is free software; you can redistribute it and/or modify it under
++the terms of the GNU General Public License as published by the Free
++Software Foundation; either version 2, or (at your option) any later
++version.
+
+ In addition to the permissions in the GNU General Public License, the
+ Free Software Foundation gives you unlimited permission to link the
+@@ -18,15 +19,15 @@
+ the file, and distribution when not linked into a combine
+ executable.)
+
+-GNU CC is distributed in the hope that it will be useful,
+-but WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-GNU General Public License for more details.
++GCC is distributed in the hope that it will be useful, but WITHOUT ANY
++WARRANTY; without even the implied warranty of MERCHANTABILITY or
++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++for more details.
+
+ You should have received a copy of the GNU General Public License
+-along with GNU CC; see the file COPYING. If not, write to
+-the Free Software Foundation, 59 Temple Place - Suite 330,
+-Boston, MA 02111-1307, USA. */
++along with GCC; see the file COPYING. If not, write to the Free
++Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++02111-1307, USA. */
+
+ #ifdef _LIBC
+ # include <shlib-compat.h>
+@@ -44,6 +45,7 @@
+ #include <unwind-pe.h>
+ #include <unwind-dw2-fde.h>
+ #else
++#ifndef _Unwind_Find_FDE
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "dwarf2.h"
+@@ -53,6 +55,7 @@
+ #include "unwind-dw2-fde.h"
+ #include "gthr.h"
+ #endif
++#endif
+
+ /* The unseen_objects list contains objects that have been registered
+ but not yet categorized in any way. The seen_objects list has had
+@@ -109,7 +112,7 @@
+ void *tbase, void *dbase)
+ {
+ /* If .eh_frame is empty, don't register at all. */
+- if (*(uword *)begin == 0)
++ if (*(uword *) begin == 0)
+ return;
+
+ ob->pc_begin = (void *)-1;
+@@ -118,6 +121,9 @@
+ ob->u.single = begin;
+ ob->s.i = 0;
+ ob->s.b.encoding = DW_EH_PE_omit;
++#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
++ ob->fde_end = NULL;
++#endif
+
+ init_object_mutex_once ();
+ __gthread_mutex_lock (&object_mutex);
+@@ -141,7 +147,7 @@
+ struct object *ob;
+
+ /* If .eh_frame is empty, don't register at all. */
+- if (*(uword *)begin == 0)
++ if (*(uword *) begin == 0)
+ return;
+
+ ob = (struct object *) malloc (sizeof (struct object));
+@@ -206,7 +212,7 @@
+ struct object *ob = 0;
+
+ /* If .eh_frame is empty, we haven't registered. */
+- if (*(uword *)begin == 0)
++ if (*(uword *) begin == 0)
+ return ob;
+
+ init_object_mutex_once ();
+@@ -260,7 +266,7 @@
+ __deregister_frame (void *begin)
+ {
+ /* If .eh_frame is empty, we haven't registered. */
+- if (*(uword *)begin != 0)
++ if (*(uword *) begin != 0)
+ free (INTUSE(__deregister_frame_info_bases) (begin));
+ }
+
+@@ -297,18 +303,20 @@
+ {
+ const unsigned char *aug, *p;
+ _Unwind_Ptr dummy;
++ _Unwind_Word utmp;
++ _Unwind_Sword stmp;
+
+ aug = cie->augmentation;
+ if (aug[0] != 'z')
+ return DW_EH_PE_absptr;
+
+ p = aug + strlen (aug) + 1; /* Skip the augmentation string. */
+- p = read_uleb128 (p, &dummy); /* Skip code alignment. */
+- p = read_sleb128 (p, &dummy); /* Skip data alignment. */
++ p = read_uleb128 (p, &utmp); /* Skip code alignment. */
++ p = read_sleb128 (p, &stmp); /* Skip data alignment. */
+ p++; /* Skip return address column. */
+
+ aug++; /* Skip 'z' */
+- p = read_uleb128 (p, &dummy); /* Skip augmentation length. */
++ p = read_uleb128 (p, &utmp); /* Skip augmentation length. */
+ while (1)
+ {
+ /* This is what we're looking for. */
+@@ -345,14 +353,21 @@
+
+ /* Comparison routines. Three variants of increasing complexity. */
+
+-static saddr
++static int
+ fde_unencoded_compare (struct object *ob __attribute__((unused)),
+ fde *x, fde *y)
+ {
+- return *(saddr *)x->pc_begin - *(saddr *)y->pc_begin;
++ _Unwind_Ptr x_ptr = *(_Unwind_Ptr *) x->pc_begin;
++ _Unwind_Ptr y_ptr = *(_Unwind_Ptr *) y->pc_begin;
++
++ if (x_ptr > y_ptr)
++ return 1;
++ if (x_ptr < y_ptr)
++ return -1;
++ return 0;
+ }
+
+-static saddr
++static int
+ fde_single_encoding_compare (struct object *ob, fde *x, fde *y)
+ {
+ _Unwind_Ptr base, x_ptr, y_ptr;
+@@ -361,10 +376,14 @@
+ read_encoded_value_with_base (ob->s.b.encoding, base, x->pc_begin, &x_ptr);
+ read_encoded_value_with_base (ob->s.b.encoding, base, y->pc_begin, &y_ptr);
+
+- return x_ptr - y_ptr;
++ if (x_ptr > y_ptr)
++ return 1;
++ if (x_ptr < y_ptr)
++ return -1;
++ return 0;
+ }
+
+-static saddr
++static int
+ fde_mixed_encoding_compare (struct object *ob, fde *x, fde *y)
+ {
+ int x_encoding, y_encoding;
+@@ -378,10 +397,14 @@
+ read_encoded_value_with_base (y_encoding, base_from_object (y_encoding, ob),
+ y->pc_begin, &y_ptr);
+
+- return x_ptr - y_ptr;
++ if (x_ptr > y_ptr)
++ return 1;
++ if (x_ptr < y_ptr)
++ return -1;
++ return 0;
+ }
+
+-typedef saddr (*fde_compare_t) (struct object *, fde *, fde *);
++typedef int (*fde_compare_t) (struct object *, fde *, fde *);
+
+
+ /* This is a special mix of insertion sort and heap sort, optimized for
+@@ -401,7 +424,7 @@
+ struct fde_vector *erratic;
+ };
+
+-static inline int
++static int
+ start_fde_sort (struct fde_accumulator *accu, size_t count)
+ {
+ size_t size;
+@@ -439,7 +462,7 @@
+ chain to determine what should be placed in the ERRATIC array, and
+ what is the linear sequence. This overlay is safe from aliasing. */
+
+-static inline void
++static void
+ fde_split (struct object *ob, fde_compare_t fde_compare,
+ struct fde_vector *linear, struct fde_vector *erratic)
+ {
+@@ -459,13 +482,13 @@
+ fde **probe;
+
+ for (probe = chain_end;
+- probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
+- probe = chain_end)
+- {
+- chain_end = (fde **)erratic->array[probe - linear->array];
+- erratic->array[probe - linear->array] = NULL;
+- }
+- erratic->array[i] = (fde *)chain_end;
++ probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
++ probe = chain_end)
++ {
++ chain_end = (fde **) erratic->array[probe - linear->array];
++ erratic->array[probe - linear->array] = NULL;
++ }
++ erratic->array[i] = (fde *) chain_end;
+ chain_end = &linear->array[i];
+ }
+
+@@ -490,11 +513,11 @@
+ {
+ /* For a description of this algorithm, see:
+ Samuel P. Harbison, Guy L. Steele Jr.: C, a reference manual, 2nd ed.,
+- p. 60-61. */
++ p. 60-61. */
+ fde ** a = erratic->array;
+ /* A portion of the array is called a "heap" if for all i>=0:
+ If i and 2i+1 are valid indices, then a[i] >= a[2i+1].
+- If i and 2i+2 are valid indices, then a[i] >= a[2i+2]. */
++ If i and 2i+2 are valid indices, then a[i] >= a[2i+2]. */
+ #define SWAP(x,y) do { fde * tmp = x; x = y; y = tmp; } while (0)
+ size_t n = erratic->count;
+ size_t m = n;
+@@ -502,54 +525,54 @@
+
+ while (m > 0)
+ {
+- /* Invariant: a[m..n-1] is a heap. */
++ /* Invariant: a[m..n-1] is a heap. */
+ m--;
+ for (i = m; 2*i+1 < n; )
+- {
+- if (2*i+2 < n
+- && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
+- && fde_compare (ob, a[2*i+2], a[i]) > 0)
+- {
+- SWAP (a[i], a[2*i+2]);
+- i = 2*i+2;
+- }
+- else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
+- {
+- SWAP (a[i], a[2*i+1]);
+- i = 2*i+1;
+- }
+- else
+- break;
+- }
++ {
++ if (2*i+2 < n
++ && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
++ && fde_compare (ob, a[2*i+2], a[i]) > 0)
++ {
++ SWAP (a[i], a[2*i+2]);
++ i = 2*i+2;
++ }
++ else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
++ {
++ SWAP (a[i], a[2*i+1]);
++ i = 2*i+1;
++ }
++ else
++ break;
++ }
+ }
+ while (n > 1)
+ {
+- /* Invariant: a[0..n-1] is a heap. */
++ /* Invariant: a[0..n-1] is a heap. */
+ n--;
+ SWAP (a[0], a[n]);
+ for (i = 0; 2*i+1 < n; )
+- {
+- if (2*i+2 < n
+- && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
+- && fde_compare (ob, a[2*i+2], a[i]) > 0)
+- {
+- SWAP (a[i], a[2*i+2]);
+- i = 2*i+2;
+- }
+- else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
+- {
+- SWAP (a[i], a[2*i+1]);
+- i = 2*i+1;
+- }
+- else
+- break;
+- }
++ {
++ if (2*i+2 < n
++ && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
++ && fde_compare (ob, a[2*i+2], a[i]) > 0)
++ {
++ SWAP (a[i], a[2*i+2]);
++ i = 2*i+2;
++ }
++ else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
++ {
++ SWAP (a[i], a[2*i+1]);
++ i = 2*i+1;
++ }
++ else
++ break;
++ }
+ }
+ #undef SWAP
+ }
+
+-/* Merge V1 and V2, both sorted, and put the result into V1. */
+-static inline void
++/* Merge V1 and V2, both sorted, and put the result into V1. */
++static void
+ fde_merge (struct object *ob, fde_compare_t fde_compare,
+ struct fde_vector *v1, struct fde_vector *v2)
+ {
+@@ -560,21 +583,23 @@
+ if (i2 > 0)
+ {
+ i1 = v1->count;
+- do {
+- i2--;
+- fde2 = v2->array[i2];
+- while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0)
+- {
+- v1->array[i1+i2] = v1->array[i1-1];
+- i1--;
+- }
+- v1->array[i1+i2] = fde2;
+- } while (i2 > 0);
++ do
++ {
++ i2--;
++ fde2 = v2->array[i2];
++ while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0)
++ {
++ v1->array[i1+i2] = v1->array[i1-1];
++ i1--;
++ }
++ v1->array[i1+i2] = fde2;
++ }
++ while (i2 > 0);
+ v1->count += v2->count;
+ }
+ }
+
+-static inline void
++static void
+ end_fde_sort (struct object *ob, struct fde_accumulator *accu, size_t count)
+ {
+ fde_compare_t fde_compare;
+@@ -619,7 +644,7 @@
+ int encoding = DW_EH_PE_absptr;
+ _Unwind_Ptr base = 0;
+
+- for (; this_fde->length != 0; this_fde = next_fde (this_fde))
++ for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
+ {
+ struct dwarf_cie *this_cie;
+ _Unwind_Ptr mask, pc_begin;
+@@ -659,8 +684,8 @@
+ continue;
+
+ count += 1;
+- if ((void *)pc_begin < ob->pc_begin)
+- ob->pc_begin = (void *)pc_begin;
++ if ((void *) pc_begin < ob->pc_begin)
++ ob->pc_begin = (void *) pc_begin;
+ }
+
+ return count;
+@@ -673,7 +698,7 @@
+ int encoding = ob->s.b.encoding;
+ _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob);
+
+- for (; this_fde->length != 0; this_fde = next_fde (this_fde))
++ for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
+ {
+ struct dwarf_cie *this_cie;
+
+@@ -696,7 +721,7 @@
+
+ if (encoding == DW_EH_PE_absptr)
+ {
+- if (*(_Unwind_Ptr *)this_fde->pc_begin == 0)
++ if (*(_Unwind_Ptr *) this_fde->pc_begin == 0)
+ continue;
+ }
+ else
+@@ -729,7 +754,7 @@
+ be faster. We can be called multiple times, should we have failed to
+ allocate a sorted fde array on a previous occasion. */
+
+-static inline void
++static void
+ init_object (struct object* ob)
+ {
+ struct fde_accumulator accu;
+@@ -764,7 +789,7 @@
+ {
+ fde **p;
+ for (p = ob->u.array; *p; ++p)
+- add_fdes (ob, &accu, *p);
++ add_fdes (ob, &accu, *p);
+ }
+ else
+ add_fdes (ob, &accu, ob->u.single);
+@@ -790,7 +815,7 @@
+ int encoding = ob->s.b.encoding;
+ _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob);
+
+- for (; this_fde->length != 0; this_fde = next_fde (this_fde))
++ for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
+ {
+ struct dwarf_cie *this_cie;
+ _Unwind_Ptr pc_begin, pc_range;
+@@ -814,8 +839,8 @@
+
+ if (encoding == DW_EH_PE_absptr)
+ {
+- pc_begin = ((_Unwind_Ptr *)this_fde->pc_begin)[0];
+- pc_range = ((_Unwind_Ptr *)this_fde->pc_begin)[1];
++ pc_begin = ((_Unwind_Ptr *) this_fde->pc_begin)[0];
++ pc_range = ((_Unwind_Ptr *) this_fde->pc_begin)[1];
+ if (pc_begin == 0)
+ continue;
+ }
+@@ -842,8 +867,8 @@
+ continue;
+ }
+
+- if ((_Unwind_Ptr)pc - pc_begin < pc_range)
+- return this_fde;
++ if ((_Unwind_Ptr) pc - pc_begin < pc_range)
++ return this_fde;
+ }
+
+ return NULL;
+@@ -852,7 +877,7 @@
+ /* Binary search for an FDE containing the given PC. Here are three
+ implementations of increasing complexity. */
+
+-static inline fde *
++static fde *
+ binary_search_unencoded_fdes (struct object *ob, void *pc)
+ {
+ struct fde_vector *vec = ob->u.sort;
+@@ -865,8 +890,8 @@
+ void *pc_begin;
+ uaddr pc_range;
+
+- pc_begin = ((void **)f->pc_begin)[0];
+- pc_range = ((uaddr *)f->pc_begin)[1];
++ pc_begin = ((void **) f->pc_begin)[0];
++ pc_range = ((uaddr *) f->pc_begin)[1];
+
+ if (pc < pc_begin)
+ hi = i;
+@@ -879,7 +904,7 @@
+ return NULL;
+ }
+
+-static inline fde *
++static fde *
+ binary_search_single_encoding_fdes (struct object *ob, void *pc)
+ {
+ struct fde_vector *vec = ob->u.sort;
+@@ -898,9 +923,9 @@
+ &pc_begin);
+ read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
+
+- if ((_Unwind_Ptr)pc < pc_begin)
++ if ((_Unwind_Ptr) pc < pc_begin)
+ hi = i;
+- else if ((_Unwind_Ptr)pc >= pc_begin + pc_range)
++ else if ((_Unwind_Ptr) pc >= pc_begin + pc_range)
+ lo = i + 1;
+ else
+ return f;
+@@ -909,7 +934,7 @@
+ return NULL;
+ }
+
+-static inline fde *
++static fde *
+ binary_search_mixed_encoding_fdes (struct object *ob, void *pc)
+ {
+ struct fde_vector *vec = ob->u.sort;
+@@ -929,9 +954,9 @@
+ f->pc_begin, &pc_begin);
+ read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
+
+- if ((_Unwind_Ptr)pc < pc_begin)
++ if ((_Unwind_Ptr) pc < pc_begin)
+ hi = i;
+- else if ((_Unwind_Ptr)pc >= pc_begin + pc_range)
++ else if ((_Unwind_Ptr) pc >= pc_begin + pc_range)
+ lo = i + 1;
+ else
+ return f;
+@@ -969,14 +994,14 @@
+ {
+ /* Long slow labourious linear search, cos we've no memory. */
+ if (ob->s.b.from_array)
+- {
+- fde **p;
++ {
++ fde **p;
+ for (p = ob->u.array; *p ; p++)
+ {
+ fde *f = linear_search_fdes (ob, *p, pc);
+- if (f)
++ if (f)
+ return f;
+- }
++ }
+ return NULL;
+ }
+ else
+--- glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.h 2001-11-15 18:09:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/unwind-dw2-fde.h 2003-04-24 20:05:59.000000000 -0400
+@@ -1,13 +1,14 @@
+ /* Subroutines needed for unwinding stack frames for exception handling. */
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ Contributed by Jason Merrill <jason@cygnus.com>.
+
+-This file is part of GNU CC.
++This file is part of GCC.
+
+-GNU CC is free software; you can redistribute it and/or modify
+-it under the terms of the GNU General Public License as published by
+-the Free Software Foundation; either version 2, or (at your option)
+-any later version.
++GCC is free software; you can redistribute it and/or modify it under
++the terms of the GNU General Public License as published by the Free
++Software Foundation; either version 2, or (at your option) any later
++version.
+
+ In addition to the permissions in the GNU General Public License, the
+ Free Software Foundation gives you unlimited permission to link the
+@@ -18,15 +19,15 @@
+ the file, and distribution when not linked into a combine
+ executable.)
+
+-GNU CC is distributed in the hope that it will be useful,
+-but WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-GNU General Public License for more details.
++GCC is distributed in the hope that it will be useful, but WITHOUT ANY
++WARRANTY; without even the implied warranty of MERCHANTABILITY or
++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
++for more details.
+
+ You should have received a copy of the GNU General Public License
+-along with GNU CC; see the file COPYING. If not, write to
+-the Free Software Foundation, 59 Temple Place - Suite 330,
+-Boston, MA 02111-1307, USA. */
++along with GCC; see the file COPYING. If not, write to the Free
++Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++02111-1307, USA. */
+
+
+ struct fde_vector
+@@ -57,12 +58,16 @@
+ unsigned long mixed_encoding : 1;
+ unsigned long encoding : 8;
+ /* ??? Wish there was an easy way to detect a 64-bit host here;
+- we've got 32 bits left to play with... */
++ we've got 32 bits left to play with... */
+ unsigned long count : 21;
+ } b;
+ size_t i;
+ } s;
+
++#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
++ char *fde_end;
++#endif
++
+ struct object *next;
+ };
+ #endif
+@@ -116,7 +121,7 @@
+ is located, and what the register lifetimes and stack layout are
+ within the function.
+
+- The data structures are defined in the DWARF specfication, although
++ The data structures are defined in the DWARF specification, although
+ not in a very readable way (see LITERATURE).
+
+ Every time an exception is thrown, the code needs to locate the FDE
+@@ -125,7 +130,7 @@
+ a) in a linear search, find the shared image (i.e. DLL) containing
+ the PC
+ b) using the FDE table for that shared object, locate the FDE using
+- binary search (which requires the sorting). */
++ binary search (which requires the sorting). */
+
+ /* The first few fields of a CIE. The CIE_id field is 0 for a CIE,
+ to distinguish it from a valid FDE. FDEs are aligned to an addressing
+@@ -159,7 +164,17 @@
+ static inline fde *
+ next_fde (fde *f)
+ {
+- return (fde *)((char *)f + f->length + sizeof (f->length));
++ return (fde *) ((char *) f + f->length + sizeof (f->length));
+ }
+
+ extern fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
++
++static inline int
++last_fde (struct object *obj __attribute__ ((__unused__)), fde *f)
++{
++#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
++ return (char *)f == obj->fde_end || f->length == 0;
++#else
++ return f->length == 0;
++#endif
++}
+--- glibc-2.3.2/sysdeps/generic/unwind-dw2.c 2003-01-08 00:01:02.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/unwind-dw2.c 2003-08-21 08:37:08.000000000 -0400
+@@ -1,22 +1,23 @@
+ /* DWARF2 exception handling and frame unwind runtime interface routines.
+- Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+
+- This file is part of GNU CC.
++ This file is part of GCC.
+
+- GNU CC is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
++ GCC is free software; you can redistribute it and/or modify it
++ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+- GNU CC is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GCC is distributed in the hope that it will be useful, but WITHOUT
++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
++ License for more details.
+
+ You should have received a copy of the GNU General Public License
+- along with GNU CC; see the file COPYING. If not, write to
+- the Free Software Foundation, 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
++ along with GCC; see the file COPYING. If not, write to the Free
++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++ 02111-1307, USA. */
+
+ #ifdef _LIBC
+ #include <stdlib.h>
+@@ -37,7 +38,8 @@
+ #include "gthr.h"
+ #endif
+
+-#if !USING_SJLJ_EXCEPTIONS
++
++#ifndef __USING_SJLJ_EXCEPTIONS__
+
+ #ifndef STACK_GROWS_DOWNWARD
+ #define STACK_GROWS_DOWNWARD 0
+@@ -52,7 +54,14 @@
+ #define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
+ #endif
+
+-/* This is the register and unwind state for a particular frame. */
++/* Dwarf frame registers used for pre gcc 3.0 compiled glibc. */
++#ifndef PRE_GCC3_DWARF_FRAME_REGISTERS
++#define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS
++#endif
++
++/* This is the register and unwind state for a particular frame. This
++ provides the information necessary to unwind up past a frame and return
++ to its caller. */
+ struct _Unwind_Context
+ {
+ void *reg[DWARF_FRAME_REGISTERS+1];
+@@ -80,7 +89,7 @@
+ {
+ struct {
+ union {
+- unsigned int reg;
++ _Unwind_Word reg;
+ _Unwind_Sword offset;
+ const unsigned char *exp;
+ } loc;
+@@ -112,8 +121,8 @@
+
+ /* The information we care about from the CIE/FDE. */
+ _Unwind_Personality_Fn personality;
+- signed int data_align;
+- unsigned int code_align;
++ _Unwind_Sword data_align;
++ _Unwind_Word code_align;
+ unsigned char retaddr_column;
+ unsigned char fde_encoding;
+ unsigned char lsda_encoding;
+@@ -138,10 +147,10 @@
+ read_pointer (const void *p) { const union unaligned *up = p; return up->p; }
+
+ static inline int
+-read_1u (const void *p) { return *(const unsigned char *)p; }
++read_1u (const void *p) { return *(const unsigned char *) p; }
+
+ static inline int
+-read_1s (const void *p) { return *(const signed char *)p; }
++read_1s (const void *p) { return *(const signed char *) p; }
+
+ static inline int
+ read_2u (const void *p) { const union unaligned *up = p; return up->u2; }
+@@ -170,6 +179,14 @@
+ return * (_Unwind_Word *) context->reg[index];
+ }
+
++/* Get the value of the CFA as saved in CONTEXT. */
++
++_Unwind_Word
++_Unwind_GetCFA (struct _Unwind_Context *context)
++{
++ return (_Unwind_Ptr) context->cfa;
++}
++
+ /* Overwrite the saved value for register REG in CONTEXT with VAL. */
+
+ inline void
+@@ -206,6 +223,17 @@
+ return (_Unwind_Ptr) context->bases.func;
+ }
+
++void *
++_Unwind_FindEnclosingFunction (void *pc)
++{
++ struct dwarf_eh_bases bases;
++ struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases);
++ if (fde)
++ return bases.func;
++ else
++ return NULL;
++}
++
+ #ifndef __ia64__
+ _Unwind_Ptr
+ _Unwind_GetDataRelBase (struct _Unwind_Context *context)
+@@ -231,7 +259,7 @@
+ const unsigned char *aug = cie->augmentation;
+ const unsigned char *p = aug + strlen (aug) + 1;
+ const unsigned char *ret = NULL;
+- _Unwind_Ptr tmp;
++ _Unwind_Word utmp;
+
+ /* g++ v2 "eh" has pointer immediately following augmentation string,
+ so it must be handled first. */
+@@ -244,8 +272,8 @@
+
+ /* Immediately following the augmentation are the code and
+ data alignment and return address column. */
+- p = read_uleb128 (p, &tmp); fs->code_align = tmp;
+- p = read_sleb128 (p, &tmp); fs->data_align = (saddr) tmp;
++ p = read_uleb128 (p, &fs->code_align);
++ p = read_sleb128 (p, &fs->data_align);
+ fs->retaddr_column = *p++;
+ fs->lsda_encoding = DW_EH_PE_omit;
+
+@@ -254,8 +282,8 @@
+ the size. */
+ if (*aug == 'z')
+ {
+- p = read_uleb128 (p, &tmp);
+- ret = p + tmp;
++ p = read_uleb128 (p, &utmp);
++ ret = p + utmp;
+
+ fs->saw_z = 1;
+ ++aug;
+@@ -303,7 +331,7 @@
+ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
+ struct _Unwind_Context *context, _Unwind_Word initial)
+ {
+- _Unwind_Word stack[64]; /* ??? Assume this is enough. */
++ _Unwind_Word stack[64]; /* ??? Assume this is enough. */
+ int stack_elt;
+
+ stack[0] = initial;
+@@ -312,9 +340,8 @@
+ while (op_ptr < op_end)
+ {
+ enum dwarf_location_atom op = *op_ptr++;
+- _Unwind_Word result = 0, reg;
+- _Unwind_Sword offset;
+- _Unwind_Ptr ptrtmp;
++ _Unwind_Word result, reg, utmp;
++ _Unwind_Sword offset, stmp;
+
+ switch (op)
+ {
+@@ -391,12 +418,11 @@
+ op_ptr += 8;
+ break;
+ case DW_OP_constu:
+- op_ptr = read_uleb128 (op_ptr, &ptrtmp);
+- result = ptrtmp;
++ op_ptr = read_uleb128 (op_ptr, &result);
+ break;
+ case DW_OP_consts:
+- op_ptr = read_sleb128 (op_ptr, &ptrtmp);
+- result = (saddr)ptrtmp;
++ op_ptr = read_sleb128 (op_ptr, &stmp);
++ result = stmp;
+ break;
+
+ case DW_OP_reg0:
+@@ -434,7 +460,7 @@
+ result = _Unwind_GetGR (context, op - DW_OP_reg0);
+ break;
+ case DW_OP_regx:
+- op_ptr = read_uleb128 (op_ptr, &ptrtmp); reg = ptrtmp;
++ op_ptr = read_uleb128 (op_ptr, &reg);
+ result = _Unwind_GetGR (context, reg);
+ break;
+
+@@ -470,12 +496,12 @@
+ case DW_OP_breg29:
+ case DW_OP_breg30:
+ case DW_OP_breg31:
+- op_ptr = read_sleb128 (op_ptr, &ptrtmp); offset = (saddr)ptrtmp;
++ op_ptr = read_sleb128 (op_ptr, &offset);
+ result = _Unwind_GetGR (context, op - DW_OP_breg0) + offset;
+ break;
+ case DW_OP_bregx:
+- op_ptr = read_uleb128 (op_ptr, &ptrtmp); reg = ptrtmp;
+- op_ptr = read_sleb128 (op_ptr, &ptrtmp); offset = (saddr)ptrtmp;
++ op_ptr = read_uleb128 (op_ptr, &reg);
++ op_ptr = read_sleb128 (op_ptr, &offset);
+ result = _Unwind_GetGR (context, reg) + offset;
+ break;
+
+@@ -533,14 +559,14 @@
+ {
+ case DW_OP_deref:
+ {
+- void *ptr = (void *)(_Unwind_Ptr) result;
++ void *ptr = (void *) (_Unwind_Ptr) result;
+ result = (_Unwind_Ptr) read_pointer (ptr);
+ }
+ break;
+
+ case DW_OP_deref_size:
+ {
+- void *ptr = (void *)(_Unwind_Ptr) result;
++ void *ptr = (void *) (_Unwind_Ptr) result;
+ switch (*op_ptr++)
+ {
+ case 1:
+@@ -572,12 +598,12 @@
+ result = ~result;
+ break;
+ case DW_OP_plus_uconst:
+- op_ptr = read_uleb128 (op_ptr, &ptrtmp); reg = ptrtmp;
+- result += reg;
++ op_ptr = read_uleb128 (op_ptr, &utmp);
++ result += utmp;
+ break;
+- /* Avoid warnings. */
++
+ default:
+- break;
++ abort ();
+ }
+ break;
+
+@@ -597,68 +623,68 @@
+ {
+ /* Binary operations. */
+ _Unwind_Word first, second;
+- if ((stack_elt -= 2) < 0)
+- abort ();
+- second = stack[stack_elt];
+- first = stack[stack_elt + 1];
++ if ((stack_elt -= 2) < 0)
++ abort ();
++ second = stack[stack_elt];
++ first = stack[stack_elt + 1];
+
+- switch (op)
+- {
+- case DW_OP_and:
+- result = second & first;
+- break;
+- case DW_OP_div:
+- result = (_Unwind_Sword)second / (_Unwind_Sword)first;
+- break;
+- case DW_OP_minus:
+- result = second - first;
+- break;
+- case DW_OP_mod:
+- result = (_Unwind_Sword)second % (_Unwind_Sword)first;
+- break;
+- case DW_OP_mul:
+- result = second * first;
+- break;
+- case DW_OP_or:
+- result = second | first;
+- break;
+- case DW_OP_plus:
+- result = second + first;
+- break;
+- case DW_OP_shl:
+- result = second << first;
+- break;
+- case DW_OP_shr:
+- result = second >> first;
+- break;
+- case DW_OP_shra:
+- result = (_Unwind_Sword)second >> first;
+- break;
+- case DW_OP_xor:
+- result = second ^ first;
+- break;
+- case DW_OP_le:
+- result = (_Unwind_Sword)first <= (_Unwind_Sword)second;
+- break;
+- case DW_OP_ge:
+- result = (_Unwind_Sword)first >= (_Unwind_Sword)second;
+- break;
+- case DW_OP_eq:
+- result = (_Unwind_Sword)first == (_Unwind_Sword)second;
+- break;
+- case DW_OP_lt:
+- result = (_Unwind_Sword)first < (_Unwind_Sword)second;
+- break;
+- case DW_OP_gt:
+- result = (_Unwind_Sword)first > (_Unwind_Sword)second;
+- break;
+- case DW_OP_ne:
+- result = (_Unwind_Sword)first != (_Unwind_Sword)second;
+- break;
+- default:
+- /* Avoid warnings. */
+- break;
+- }
++ switch (op)
++ {
++ case DW_OP_and:
++ result = second & first;
++ break;
++ case DW_OP_div:
++ result = (_Unwind_Sword) second / (_Unwind_Sword) first;
++ break;
++ case DW_OP_minus:
++ result = second - first;
++ break;
++ case DW_OP_mod:
++ result = (_Unwind_Sword) second % (_Unwind_Sword) first;
++ break;
++ case DW_OP_mul:
++ result = second * first;
++ break;
++ case DW_OP_or:
++ result = second | first;
++ break;
++ case DW_OP_plus:
++ result = second + first;
++ break;
++ case DW_OP_shl:
++ result = second << first;
++ break;
++ case DW_OP_shr:
++ result = second >> first;
++ break;
++ case DW_OP_shra:
++ result = (_Unwind_Sword) second >> first;
++ break;
++ case DW_OP_xor:
++ result = second ^ first;
++ break;
++ case DW_OP_le:
++ result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
++ break;
++ case DW_OP_ge:
++ result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
++ break;
++ case DW_OP_eq:
++ result = (_Unwind_Sword) first == (_Unwind_Sword) second;
++ break;
++ case DW_OP_lt:
++ result = (_Unwind_Sword) first < (_Unwind_Sword) second;
++ break;
++ case DW_OP_gt:
++ result = (_Unwind_Sword) first > (_Unwind_Sword) second;
++ break;
++ case DW_OP_ne:
++ result = (_Unwind_Sword) first != (_Unwind_Sword) second;
++ break;
++
++ default:
++ abort ();
++ }
+ }
+ break;
+
+@@ -687,7 +713,7 @@
+ /* Most things push a result value. */
+ if ((size_t) stack_elt >= sizeof(stack)/sizeof(*stack))
+ abort ();
+- stack[++stack_elt] = result;
++ stack[stack_elt++] = result;
+ no_push:;
+ }
+
+@@ -714,20 +740,26 @@
+ /* Don't allow remember/restore between CIE and FDE programs. */
+ fs->regs.prev = NULL;
+
++ /* The comparison with the return address uses < rather than <= because
++ we are only interested in the effects of code before the call; for a
++ noreturn function, the return address may point to unrelated code with
++ a different stack configuration that we are not interested in. We
++ assume that the call itself is unwind info-neutral; if not, or if
++ there are delay instructions that adjust the stack, these must be
++ reflected at the point immediately before the call insn. */
+ while (insn_ptr < insn_end && fs->pc < context->ra)
+ {
+ unsigned char insn = *insn_ptr++;
+- _Unwind_Word reg;
+- _Unwind_Sword offset;
+- _Unwind_Ptr ptrtmp;
++ _Unwind_Word reg, utmp;
++ _Unwind_Sword offset, stmp;
+
+ if ((insn & 0xc0) == DW_CFA_advance_loc)
+ fs->pc += (insn & 0x3f) * fs->code_align;
+ else if ((insn & 0xc0) == DW_CFA_offset)
+ {
+ reg = insn & 0x3f;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- offset = ptrtmp * fs->data_align;
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ offset = (_Unwind_Sword) utmp * fs->data_align;
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
+ fs->regs.reg[reg].loc.offset = offset;
+ }
+@@ -757,28 +789,31 @@
+ break;
+
+ case DW_CFA_offset_extended:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- offset = ptrtmp * fs->data_align;
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ offset = (_Unwind_Sword) utmp * fs->data_align;
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
+ fs->regs.reg[reg].loc.offset = offset;
+ break;
+
+ case DW_CFA_restore_extended:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
+ fs->regs.reg[reg].how = REG_UNSAVED;
+ break;
+
+ case DW_CFA_undefined:
+ case DW_CFA_same_value:
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
++ break;
++
+ case DW_CFA_nop:
+ break;
+
+ case DW_CFA_register:
+ {
+ _Unwind_Word reg2;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg2 = ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
++ insn_ptr = read_uleb128 (insn_ptr, &reg2);
+ fs->regs.reg[reg].how = REG_SAVED_REG;
+ fs->regs.reg[reg].loc.reg = reg2;
+ }
+@@ -793,7 +828,7 @@
+ unused_rs = unused_rs->prev;
+ }
+ else
+- new_rs = alloca (sizeof (struct frame_state_reg_info));
++ new_rs = __builtin_alloca (sizeof (struct frame_state_reg_info));
+
+ *new_rs = fs->regs;
+ fs->regs.prev = new_rs;
+@@ -810,60 +845,55 @@
+ break;
+
+ case DW_CFA_def_cfa:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_reg = ptrtmp;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_offset = ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ fs->cfa_offset = utmp;
+ fs->cfa_how = CFA_REG_OFFSET;
+ break;
+
+ case DW_CFA_def_cfa_register:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_reg = ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
+ fs->cfa_how = CFA_REG_OFFSET;
+ break;
+
+ case DW_CFA_def_cfa_offset:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_offset = ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ fs->cfa_offset = utmp;
+ /* cfa_how deliberately not set. */
+ break;
+
+ case DW_CFA_def_cfa_expression:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+ fs->cfa_exp = insn_ptr;
+ fs->cfa_how = CFA_EXP;
+- insn_ptr += ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ insn_ptr += utmp;
+ break;
+
+ case DW_CFA_expression:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
+ fs->regs.reg[reg].how = REG_SAVED_EXP;
+ fs->regs.reg[reg].loc.exp = insn_ptr;
+- insn_ptr += ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ insn_ptr += utmp;
+ break;
+
+ /* From the 2.1 draft. */
+ case DW_CFA_offset_extended_sf:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
+- insn_ptr = read_sleb128 (insn_ptr, &ptrtmp);
+- offset = (saddr)ptrtmp * fs->data_align;
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
++ insn_ptr = read_sleb128 (insn_ptr, &stmp);
++ offset = stmp * fs->data_align;
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
+ fs->regs.reg[reg].loc.offset = offset;
+ break;
+
+ case DW_CFA_def_cfa_sf:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_reg = ptrtmp;
+- insn_ptr = read_sleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_offset = (saddr)ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
++ insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
+ fs->cfa_how = CFA_REG_OFFSET;
+ break;
+
+ case DW_CFA_def_cfa_offset_sf:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- fs->cfa_offset = ptrtmp;
++ insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
+ /* cfa_how deliberately not set. */
+ break;
+
+@@ -877,16 +907,15 @@
+ break;
+
+ case DW_CFA_GNU_args_size:
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- context->args_size = ptrtmp;
++ insn_ptr = read_uleb128 (insn_ptr, &context->args_size);
+ break;
+
+ case DW_CFA_GNU_negative_offset_extended:
+ /* Obsoleted by DW_CFA_offset_extended_sf, but used by
+ older PowerPC code. */
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); reg = ptrtmp;
+- insn_ptr = read_uleb128 (insn_ptr, &ptrtmp);
+- offset = ptrtmp * fs->data_align;
++ insn_ptr = read_uleb128 (insn_ptr, &reg);
++ insn_ptr = read_uleb128 (insn_ptr, &utmp);
++ offset = (_Unwind_Word) utmp * fs->data_align;
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
+ fs->regs.reg[reg].loc.offset = -offset;
+ break;
+@@ -897,6 +926,11 @@
+ }
+ }
+
++/* Given the _Unwind_Context CONTEXT for a stack frame, look up the FDE for
++ its caller and decode it into FS. This function also sets the
++ args_size and lsda members of CONTEXT, as they are really information
++ about the caller's frame. */
++
+ static _Unwind_Reason_Code
+ uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
+ {
+@@ -913,7 +947,7 @@
+ {
+ /* Couldn't find frame unwind info for this function. Try a
+ target-specific fallback mechanism. This will necessarily
+- not profide a personality routine or LSDA. */
++ not provide a personality routine or LSDA. */
+ #ifdef MD_FALLBACK_FRAME_STATE_FOR
+ MD_FALLBACK_FRAME_STATE_FOR (context, fs, success);
+ return _URC_END_OF_STACK;
+@@ -937,12 +971,12 @@
+ execute_cfa_program (insn, end, context, fs);
+
+ /* Locate augmentation for the fde. */
+- aug = (unsigned char *)fde + sizeof (*fde);
++ aug = (unsigned char *) fde + sizeof (*fde);
+ aug += 2 * size_of_encoded_value (fs->fde_encoding);
+ insn = NULL;
+ if (fs->saw_z)
+ {
+- _Unwind_Ptr i;
++ _Unwind_Word i;
+ aug = read_uleb128 (aug, &i);
+ insn = aug + i;
+ }
+@@ -965,10 +999,10 @@
+ void *eh_ptr;
+ long cfa_offset;
+ long args_size;
+- long reg_or_offset[DWARF_FRAME_REGISTERS+1];
++ long reg_or_offset[PRE_GCC3_DWARF_FRAME_REGISTERS+1];
+ unsigned short cfa_reg;
+ unsigned short retaddr_column;
+- char saved[DWARF_FRAME_REGISTERS+1];
++ char saved[PRE_GCC3_DWARF_FRAME_REGISTERS+1];
+ } frame_state;
+
+ #ifndef STATIC
+@@ -1001,7 +1035,7 @@
+ if (fs.cfa_how == CFA_EXP)
+ return 0;
+
+- for (reg = 0; reg < DWARF_FRAME_REGISTERS + 1; reg++)
++ for (reg = 0; reg < PRE_GCC3_DWARF_FRAME_REGISTERS + 1; reg++)
+ {
+ state_in->saved[reg] = fs.regs.reg[reg].how;
+ switch (state_in->saved[reg])
+@@ -1036,34 +1070,48 @@
+ void *cfa;
+ long i;
+
++#ifdef EH_RETURN_STACKADJ_RTX
++ /* Special handling here: Many machines do not use a frame pointer,
++ and track the CFA only through offsets from the stack pointer from
++ one frame to the next. In this case, the stack pointer is never
++ stored, so it has no saved address in the context. What we do
++ have is the CFA from the previous stack frame.
++
++ In very special situations (such as unwind info for signal return),
++ there may be location expressions that use the stack pointer as well.
++
++ Do this conditionally for one frame. This allows the unwind info
++ for one frame to save a copy of the stack pointer from the previous
++ frame, and be able to use much easier CFA mechanisms to do it.
++ Always zap the saved stack pointer value for the next frame; carrying
++ the value over from one frame to another doesn't make sense. */
++
++ _Unwind_Word tmp_sp;
++
++ if (!orig_context.reg[__builtin_dwarf_sp_column ()])
++ {
++ tmp_sp = (_Unwind_Ptr) context->cfa;
++ orig_context.reg[__builtin_dwarf_sp_column ()] = &tmp_sp;
++ }
++ context->reg[__builtin_dwarf_sp_column ()] = NULL;
++#endif
++
+ /* Compute this frame's CFA. */
+ switch (fs->cfa_how)
+ {
+ case CFA_REG_OFFSET:
+- /* Special handling here: Many machines do not use a frame pointer,
+- and track the CFA only through offsets from the stack pointer from
+- one frame to the next. In this case, the stack pointer is never
+- stored, so it has no saved address in the context. What we do
+- have is the CFA from the previous stack frame. */
+- if (context->reg[fs->cfa_reg] == NULL)
+- cfa = context->cfa;
+- else
+- cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->cfa_reg);
++ cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (&orig_context, fs->cfa_reg);
+ cfa += fs->cfa_offset;
+ break;
+
+ case CFA_EXP:
+- /* ??? No way of knowing what register number is the stack pointer
+- to do the same sort of handling as above. Assume that if the
+- CFA calculation is so complicated as to require a stack program
+- that this will not be a problem. */
+ {
+ const unsigned char *exp = fs->cfa_exp;
+- _Unwind_Ptr len;
++ _Unwind_Word len;
+
+ exp = read_uleb128 (exp, &len);
+ cfa = (void *) (_Unwind_Ptr)
+- execute_stack_op (exp, exp + len, context, 0);
++ execute_stack_op (exp, exp + len, &orig_context, 0);
+ break;
+ }
+
+@@ -1078,16 +1126,19 @@
+ {
+ case REG_UNSAVED:
+ break;
++
+ case REG_SAVED_OFFSET:
+ context->reg[i] = cfa + fs->regs.reg[i].loc.offset;
+ break;
++
+ case REG_SAVED_REG:
+ context->reg[i] = orig_context.reg[fs->regs.reg[i].loc.reg];
+ break;
++
+ case REG_SAVED_EXP:
+ {
+ const unsigned char *exp = fs->regs.reg[i].loc.exp;
+- _Unwind_Ptr len;
++ _Unwind_Word len;
+ _Unwind_Ptr val;
+
+ exp = read_uleb128 (exp, &len);
+@@ -1099,6 +1150,11 @@
+ }
+ }
+
++/* CONTEXT describes the unwind state for a frame, and FS describes the FDE
++ of its caller. Update CONTEXT to refer to the caller as well. Note
++ that the args_size and lsda members are not updated here, but later in
++ uw_frame_state_for. */
++
+ static void
+ uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
+ {
+@@ -1113,14 +1169,16 @@
+ /* Fill in CONTEXT for top-of-stack. The only valid registers at this
+ level will be the return address and the CFA. */
+
+-#define uw_init_context(CONTEXT) \
+-do { \
+- /* Do any necessary initialization to access arbitrary stack frames. \
+- On the SPARC, this means flushing the register windows. */ \
+- __builtin_unwind_init (); \
+- uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (), \
+- __builtin_return_address (0)); \
+-} while (0)
++#define uw_init_context(CONTEXT) \
++ do \
++ { \
++ /* Do any necessary initialization to access arbitrary stack frames. \
++ On the SPARC, this means flushing the register windows. */ \
++ __builtin_unwind_init (); \
++ uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (), \
++ __builtin_return_address (0)); \
++ } \
++ while (0)
+
+ static void
+ uw_init_context_1 (struct _Unwind_Context *context,
+@@ -1128,6 +1186,7 @@
+ {
+ void *ra = __builtin_extract_return_addr (__builtin_return_address (0));
+ _Unwind_FrameState fs;
++ _Unwind_Word sp_slot;
+
+ memset (context, 0, sizeof (struct _Unwind_Context));
+ context->ra = ra;
+@@ -1136,9 +1195,10 @@
+ abort ();
+
+ /* Force the frame state to use the known cfa value. */
+- context->cfa = outer_cfa;
++ sp_slot = (_Unwind_Ptr) outer_cfa;
++ context->reg[__builtin_dwarf_sp_column ()] = &sp_slot;
+ fs.cfa_how = CFA_REG_OFFSET;
+- fs.cfa_reg = 0;
++ fs.cfa_reg = __builtin_dwarf_sp_column ();
+ fs.cfa_offset = 0;
+
+ uw_update_context_1 (context, &fs);
+@@ -1154,12 +1214,14 @@
+ macro because __builtin_eh_return must be invoked in the context of
+ our caller. */
+
+-#define uw_install_context(CURRENT, TARGET) \
+-do { \
+- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
+- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
+- __builtin_eh_return (offset, handler); \
+-} while (0)
++#define uw_install_context(CURRENT, TARGET) \
++ do \
++ { \
++ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
++ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
++ __builtin_eh_return (offset, handler); \
++ } \
++ while (0)
+
+ static inline void
+ init_dwarf_reg_size_table (void)
+@@ -1193,11 +1255,26 @@
+ memcpy (c, t, dwarf_reg_size_table[i]);
+ }
+
+- /* We adjust SP by the difference between CURRENT and TARGET's CFA. */
+- if (STACK_GROWS_DOWNWARD)
+- return target->cfa - current->cfa + target->args_size;
+- else
+- return current->cfa - target->cfa - target->args_size;
++#ifdef EH_RETURN_STACKADJ_RTX
++ {
++ void *target_cfa;
++
++ /* If the last frame records a saved stack pointer, use it. */
++ if (target->reg[__builtin_dwarf_sp_column ()])
++ target_cfa = (void *)(_Unwind_Ptr)
++ _Unwind_GetGR (target, __builtin_dwarf_sp_column ());
++ else
++ target_cfa = target->cfa;
++
++ /* We adjust SP by the difference between CURRENT and TARGET's CFA. */
++ if (STACK_GROWS_DOWNWARD)
++ return target_cfa - current->cfa + target->args_size;
++ else
++ return current->cfa - target_cfa - target->args_size;
++ }
++#else
++ return 0;
++#endif
+ }
+
+ static inline _Unwind_Ptr
+--- glibc-2.3.2/sysdeps/generic/unwind-pe.h 2002-03-18 17:19:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/unwind-pe.h 2003-04-24 20:05:59.000000000 -0400
+@@ -1,28 +1,28 @@
+ /* Exception handling and frame unwind runtime interface routines.
+ Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+
+- This file is part of GNU CC.
++ This file is part of GCC.
+
+- GNU CC is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
++ GCC is free software; you can redistribute it and/or modify it
++ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+- GNU CC is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GCC is distributed in the hope that it will be useful, but WITHOUT
++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
++ License for more details.
+
+ You should have received a copy of the GNU General Public License
+- along with GNU CC; see the file COPYING. If not, write to
+- the Free Software Foundation, 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
++ along with GCC; see the file COPYING. If not, write to the Free
++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++ 02111-1307, USA. */
+
+ /* @@@ Really this should be out of line, but this also causes link
+ compatibility problems with the base ABI. This is slightly better
+ than duplicating code, however. */
+
+-/* If using C++, references to abort have to be qualified with std::. */
++/* If using C++, references to abort have to be qualified with std::. */
+ #if __cplusplus
+ #define __gxx_abort std::abort
+ #else
+@@ -52,28 +52,24 @@
+ #define DW_EH_PE_indirect 0x80
+
+
+-#ifdef _LIBC
++#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
+ /* Prototypes. */
+ extern unsigned int size_of_encoded_value (unsigned char encoding);
+ extern const unsigned char *read_encoded_value_with_base
+ (unsigned char encoding, _Unwind_Ptr base,
+ const unsigned char *p, _Unwind_Ptr *val);
+-#endif
+-
+
++#else
+
+ /* Given an encoding, return the number of bytes the format occupies.
+ This is only defined for fixed-size encodings, and so does not
+ include leb128. */
+
+-#ifndef _LIBC
++# ifndef _LIBC
+ static
+-#endif
++# endif
+ unsigned int
+ size_of_encoded_value (unsigned char encoding)
+-#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
+-;
+-#else
+ {
+ if (encoding == DW_EH_PE_omit)
+ return 0;
+@@ -125,19 +121,68 @@
+
+ #endif
+
++/* Read an unsigned leb128 value from P, store the value in VAL, return
++ P incremented past the value. We assume that a word is large enough to
++ hold any value so encoded; if it is smaller than a pointer on some target,
++ pointers should not be leb128 encoded on that target. */
++
++static const unsigned char *
++read_uleb128 (const unsigned char *p, _Unwind_Word *val)
++{
++ unsigned int shift = 0;
++ unsigned char byte;
++ _Unwind_Word result;
++
++ result = 0;
++ do
++ {
++ byte = *p++;
++ result |= (byte & 0x7f) << shift;
++ shift += 7;
++ }
++ while (byte & 0x80);
++
++ *val = result;
++ return p;
++}
++
++/* Similar, but read a signed leb128 value. */
++
++static const unsigned char *
++read_sleb128 (const unsigned char *p, _Unwind_Sword *val)
++{
++ unsigned int shift = 0;
++ unsigned char byte;
++ _Unwind_Word result;
++
++ result = 0;
++ do
++ {
++ byte = *p++;
++ result |= (byte & 0x7f) << shift;
++ shift += 7;
++ }
++ while (byte & 0x80);
++
++ /* Sign-extend a negative value. */
++ if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
++ result |= -(1L << shift);
++
++ *val = (_Unwind_Sword) result;
++ return p;
++}
++
++#if !(defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE))
+ /* Load an encoded value from memory at P. The value is returned in VAL;
+ The function returns P incremented past the value. BASE is as given
+ by base_of_encoded_value for this encoding in the appropriate context. */
+
+-#ifndef _LIBC
++# ifndef _LIBC
+ static
+-#endif
++# endif
+ const unsigned char *
+ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
+ const unsigned char *p, _Unwind_Ptr *val)
+-#if defined(_LIBC) && !defined(NO_BASE_OF_ENCODED_VALUE)
+-;
+-#else
+ {
+ union unaligned
+ {
+@@ -151,56 +196,37 @@
+ } __attribute__((__packed__));
+
+ union unaligned *u = (union unaligned *) p;
+- _Unwind_Ptr result;
++ _Unwind_Internal_Ptr result;
+
+ if (encoding == DW_EH_PE_aligned)
+ {
+- _Unwind_Ptr a = (_Unwind_Ptr)p;
++ _Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p;
+ a = (a + sizeof (void *) - 1) & - sizeof(void *);
+- result = *(_Unwind_Ptr *) a;
+- p = (const unsigned char *)(a + sizeof (void *));
++ result = *(_Unwind_Internal_Ptr *) a;
++ p = (const unsigned char *) (a + sizeof (void *));
+ }
+ else
+ {
+ switch (encoding & 0x0f)
+ {
+ case DW_EH_PE_absptr:
+- result = (_Unwind_Ptr) u->ptr;
++ result = (_Unwind_Internal_Ptr) u->ptr;
+ p += sizeof (void *);
+ break;
+
+ case DW_EH_PE_uleb128:
+ {
+- unsigned int shift = 0;
+- unsigned char byte;
+-
+- result = 0;
+- do
+- {
+- byte = *p++;
+- result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
+- shift += 7;
+- }
+- while (byte & 0x80);
++ _Unwind_Word tmp;
++ p = read_uleb128 (p, &tmp);
++ result = (_Unwind_Internal_Ptr) tmp;
+ }
+ break;
+
+ case DW_EH_PE_sleb128:
+ {
+- unsigned int shift = 0;
+- unsigned char byte;
+-
+- result = 0;
+- do
+- {
+- byte = *p++;
+- result |= (_Unwind_Ptr)(byte & 0x7f) << shift;
+- shift += 7;
+- }
+- while (byte & 0x80);
+-
+- if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
+- result |= -(1L << shift);
++ _Unwind_Sword tmp;
++ p = read_sleb128 (p, &tmp);
++ result = (_Unwind_Internal_Ptr) tmp;
+ }
+ break;
+
+@@ -237,9 +263,9 @@
+ if (result != 0)
+ {
+ result += ((encoding & 0x70) == DW_EH_PE_pcrel
+- ? (_Unwind_Ptr)u : base);
++ ? (_Unwind_Internal_Ptr) u : base);
+ if (encoding & DW_EH_PE_indirect)
+- result = *(_Unwind_Ptr *)result;
++ result = *(_Unwind_Internal_Ptr *) result;
+ }
+ }
+
+@@ -263,20 +289,3 @@
+ }
+
+ #endif
+-
+-/* Read an unsigned leb128 value from P, store the value in VAL, return
+- P incremented past the value. */
+-
+-static inline const unsigned char *
+-read_uleb128 (const unsigned char *p, _Unwind_Ptr *val)
+-{
+- return read_encoded_value_with_base (DW_EH_PE_uleb128, 0, p, val);
+-}
+-
+-/* Similar, but read a signed leb128 value. */
+-
+-static inline const unsigned char *
+-read_sleb128 (const unsigned char *p, _Unwind_Ptr *val)
+-{
+- return read_encoded_value_with_base (DW_EH_PE_sleb128, 0, p, val);
+-}
+--- glibc-2.3.2/sysdeps/generic/unwind.h 2001-11-15 18:09:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/generic/unwind.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,26 +1,36 @@
+ /* Exception handling and frame unwind runtime interface routines.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+- This file is part of GNU CC.
++ This file is part of GCC.
+
+- GNU CC is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
++ GCC is free software; you can redistribute it and/or modify it
++ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+- GNU CC is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GCC is distributed in the hope that it will be useful, but WITHOUT
++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
++ License for more details.
+
+ You should have received a copy of the GNU General Public License
+- along with GNU CC; see the file COPYING. If not, write to
+- the Free Software Foundation, 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
++ along with GCC; see the file COPYING. If not, write to the Free
++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
++ 02111-1307, USA. */
++
++/* As a special exception, if you include this header file into source
++ files compiled by GCC, this header file does not by itself cause
++ the resulting executable to be covered by the GNU General Public
++ License. This exception does not however invalidate any other
++ reasons why the executable file might be covered by the GNU General
++ Public License. */
+
+ /* This is derived from the C++ ABI for IA-64. Where we diverge
+ for cross-architecture compatibility are noted with "@@@". */
+
++#ifndef _UNWIND_H
++#define _UNWIND_H 1
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+@@ -31,7 +41,12 @@
+ inefficient for 32-bit and smaller machines. */
+ typedef unsigned _Unwind_Word __attribute__((__mode__(__word__)));
+ typedef signed _Unwind_Sword __attribute__((__mode__(__word__)));
++#if defined(__ia64__) && defined(__hpux__)
++typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
++#else
+ typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
++#endif
++typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
+
+ /* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
+ consumer of an exception. We'll go along with this for now even on
+@@ -87,6 +102,7 @@
+ #define _UA_CLEANUP_PHASE 2
+ #define _UA_HANDLER_FRAME 4
+ #define _UA_FORCE_UNWIND 8
++#define _UA_END_OF_STACK 16
+
+ /* This is an opaque type used to refer to a system-specific data
+ structure used by the system unwinder. This context is created and
+@@ -125,6 +141,9 @@
+ extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
+ extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
+
++/* @@@ Retrieve the CFA of the given context. */
++extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
++
+ extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
+
+ extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
+@@ -135,15 +154,15 @@
+ library and language-specific exception handling semantics. It is
+ specific to the code fragment described by an unwind info block, and
+ it is always referenced via the pointer in the unwind info block, and
+- hence it has no ABI-specified name.
++ hence it has no ABI-specified name.
+
+ Note that this implies that two different C++ implementations can
+ use different names, and have different contents in the language
+- specific data area. Moreover, that the language specific data
++ specific data area. Moreover, that the language specific data
+ area contains no version info because name of the function invoked
+ provides more effective versioning by detecting at link time the
+ lack of code to handle the different data format. */
+-
++
+ typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
+ (int, _Unwind_Action, _Unwind_Exception_Class,
+ struct _Unwind_Exception *, struct _Unwind_Context *);
+@@ -181,11 +200,20 @@
+ abort ();
+ return 0;
+ }
++
++/* @@@ Retrieve the Backing Store Pointer of the given context. */
++extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
+ #else
+ extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
+ extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
+ #endif
+
++/* @@@ Given an address, return the entry point of the function that
++ contains it. */
++extern void * _Unwind_FindEnclosingFunction (void *pc);
++
+ #ifdef __cplusplus
+ }
+ #endif
++
++#endif /* unwind.h */
+--- glibc-2.3.2/sysdeps/generic/utmp_file.c 2002-09-30 18:26:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/utmp_file.c 2003-09-19 22:37:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>
+ and Paul Janzen <pcj@primenet.com>, 1996.
+@@ -26,6 +26,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <utmp.h>
++#include <not-cancel.h>
+
+ #include "utmp-private.h"
+ #include "utmp-equal.h"
+@@ -57,47 +58,47 @@
+ LOCK_FILE.
+ */
+ #define LOCK_FILE(fd, type) \
+-{ \
+- struct flock fl; \
+- struct sigaction action, old_action; \
+- unsigned int old_timeout; \
+- \
+- /* Cancel any existing alarm. */ \
+- old_timeout = alarm (0); \
+- \
+- /* Establish signal handler. */ \
+- action.sa_handler = timeout_handler; \
+- __sigemptyset (&action.sa_mask); \
+- action.sa_flags = 0; \
+- __sigaction (SIGALRM, &action, &old_action); \
+- \
+- alarm (TIMEOUT); \
+- \
+- /* Try to get the lock. */ \
+- memset (&fl, '\0', sizeof (struct flock)); \
+- fl.l_type = (type); \
+- fl.l_whence = SEEK_SET; \
+- if (__fcntl ((fd), F_SETLKW, &fl) < 0)
++{ \
++ struct flock fl; \
++ struct sigaction action, old_action; \
++ unsigned int old_timeout; \
++ \
++ /* Cancel any existing alarm. */ \
++ old_timeout = alarm (0); \
++ \
++ /* Establish signal handler. */ \
++ action.sa_handler = timeout_handler; \
++ __sigemptyset (&action.sa_mask); \
++ action.sa_flags = 0; \
++ __sigaction (SIGALRM, &action, &old_action); \
++ \
++ alarm (TIMEOUT); \
++ \
++ /* Try to get the lock. */ \
++ memset (&fl, '\0', sizeof (struct flock)); \
++ fl.l_type = (type); \
++ fl.l_whence = SEEK_SET; \
++ if (__fcntl_nocancel ((fd), F_SETLKW, &fl) < 0)
+
+ #define LOCKING_FAILED() \
+ goto unalarm_return
+
+ #define UNLOCK_FILE(fd) \
+- /* Unlock the file. */ \
+- fl.l_type = F_UNLCK; \
+- __fcntl ((fd), F_SETLKW, &fl); \
+- \
+- unalarm_return: \
+- /* Reset the signal handler and alarm. We must reset the alarm \
+- before resetting the handler so our alarm does not generate a \
+- spurious SIGALRM seen by the user. However, we cannot just set \
+- the user's old alarm before restoring the handler, because then \
+- it's possible our handler could catch the user alarm's SIGARLM \
+- and then the user would never see the signal he expected. */ \
+- alarm (0); \
+- __sigaction (SIGALRM, &old_action, NULL); \
+- if (old_timeout != 0) \
+- alarm (old_timeout); \
++ /* Unlock the file. */ \
++ fl.l_type = F_UNLCK; \
++ __fcntl_nocancel ((fd), F_SETLKW, &fl); \
++ \
++ unalarm_return: \
++ /* Reset the signal handler and alarm. We must reset the alarm \
++ before resetting the handler so our alarm does not generate a \
++ spurious SIGALRM seen by the user. However, we cannot just set \
++ the user's old alarm before restoring the handler, because then \
++ it's possible our handler could catch the user alarm's SIGARLM \
++ and then the user would never see the signal he expected. */ \
++ alarm (0); \
++ __sigaction (SIGALRM, &old_action, NULL); \
++ if (old_timeout != 0) \
++ alarm (old_timeout); \
+ } while (0)
+
+
+@@ -139,22 +140,22 @@
+
+ file_name = TRANSFORM_UTMP_FILE_NAME (__libc_utmp_file_name);
+
+- file_fd = __open (file_name, O_RDWR);
++ file_fd = open_not_cancel_2 (file_name, O_RDWR);
+ if (file_fd == -1)
+ {
+ /* Hhm, read-write access did not work. Try read-only. */
+- file_fd = __open (file_name, O_RDONLY);
++ file_fd = open_not_cancel_2 (file_name, O_RDONLY);
+ if (file_fd == -1)
+ return 0;
+ }
+
+ /* We have to make sure the file is `closed on exec'. */
+- result = __fcntl (file_fd, F_GETFD, 0);
++ result = __fcntl_nocancel (file_fd, F_GETFD, 0);
+ if (result >= 0)
+- result = __fcntl (file_fd, F_SETFD, result | FD_CLOEXEC);
++ result = __fcntl_nocancel (file_fd, F_SETFD, result | FD_CLOEXEC);
+ if (result == -1)
+ {
+- __close (file_fd);
++ close_not_cancel_no_status (file_fd);
+ return 0;
+ }
+ }
+@@ -197,7 +198,7 @@
+ }
+
+ /* Read the next entry. */
+- nbytes = __read (file_fd, &last_entry, sizeof (struct utmp));
++ nbytes = read_not_cancel (file_fd, &last_entry, sizeof (struct utmp));
+
+ UNLOCK_FILE (file_fd);
+
+@@ -237,7 +238,7 @@
+ while (1)
+ {
+ /* Read the next entry. */
+- if (__read (file_fd, buffer, sizeof (struct utmp))
++ if (read_not_cancel (file_fd, buffer, sizeof (struct utmp))
+ != sizeof (struct utmp))
+ {
+ __set_errno (ESRCH);
+@@ -259,7 +260,7 @@
+ while (1)
+ {
+ /* Read the next entry. */
+- if (__read (file_fd, buffer, sizeof (struct utmp))
++ if (read_not_cancel (file_fd, buffer, sizeof (struct utmp))
+ != sizeof (struct utmp))
+ {
+ __set_errno (ESRCH);
+@@ -332,7 +333,7 @@
+ while (1)
+ {
+ /* Read the next entry. */
+- if (__read (file_fd, &last_entry, sizeof (struct utmp))
++ if (read_not_cancel (file_fd, &last_entry, sizeof (struct utmp))
+ != sizeof (struct utmp))
+ {
+ __set_errno (ESRCH);
+@@ -418,7 +419,8 @@
+ }
+
+ /* Write the new data. */
+- if (__write (file_fd, data, sizeof (struct utmp)) != sizeof (struct utmp))
++ if (write_not_cancel (file_fd, data, sizeof (struct utmp))
++ != sizeof (struct utmp))
+ {
+ /* If we appended a new record this is only partially written.
+ Remove it. */
+@@ -444,7 +446,7 @@
+ {
+ assert (file_fd >= 0);
+
+- __close (file_fd);
++ close_not_cancel_no_status (file_fd);
+ file_fd = -1;
+ }
+
+@@ -457,7 +459,7 @@
+ int fd;
+
+ /* Open WTMP file. */
+- fd = __open (file, O_WRONLY);
++ fd = open_not_cancel_2 (file, O_WRONLY);
+ if (fd < 0)
+ return -1;
+
+@@ -478,7 +480,8 @@
+ /* Write the entry. If we can't write all the bytes, reset the file
+ size back to the original size. That way, no partial entries
+ will remain. */
+- if (__write (fd, utmp, sizeof (struct utmp)) != sizeof (struct utmp))
++ if (write_not_cancel (fd, utmp, sizeof (struct utmp))
++ != sizeof (struct utmp))
+ {
+ __ftruncate64 (fd, offset);
+ goto unlock_return;
+@@ -490,7 +493,7 @@
+ UNLOCK_FILE (fd);
+
+ /* Close WTMP file. */
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ return result;
+ }
+--- glibc-2.3.2/sysdeps/generic/wordexp.c 2002-09-24 01:12:10.000000000 -0400
++++ glibc-2.3.2/sysdeps/generic/wordexp.c 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* POSIX.2 wordexp implementation.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Tim Waugh <tim@cyberelk.demon.co.uk>.
+
+@@ -18,6 +18,7 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <alloca.h>
+ #include <ctype.h>
+ #include <errno.h>
+ #include <fcntl.h>
+@@ -42,6 +43,7 @@
+ #endif
+ #include <wordexp.h>
+
++#include <bits/libc-lock.h>
+ #include <stdio-common/_itoa.h>
+
+ /* Undefine the following line for the production version. */
+@@ -89,19 +91,18 @@
+ return NULL;
+ }
+
+-static inline char *
++static char *
+ w_addchar (char *buffer, size_t *actlen, size_t *maxlen, char ch)
+ /* (lengths exclude trailing zero) */
+ {
+- /* Add a character to the buffer, allocating room for it if needed.
+- */
++ /* Add a character to the buffer, allocating room for it if needed. */
+
+ if (*actlen == *maxlen)
+ {
+ char *old_buffer = buffer;
+ assert (buffer == NULL || *maxlen != 0);
+ *maxlen += W_CHUNK;
+- buffer = realloc (buffer, 1 + *maxlen);
++ buffer = (char *) realloc (buffer, 1 + *maxlen);
+
+ if (buffer == NULL)
+ free (old_buffer);
+@@ -328,10 +329,7 @@
+
+ while ((result = __getpwuid_r (uid, &pwd, buffer, buflen, &tpwd)) != 0
+ && errno == ERANGE)
+- {
+- buflen += 1000;
+- buffer = __alloca (buflen);
+- }
++ buffer = extend_alloca (buffer, buflen, buflen + 1000);
+
+ if (result == 0 && tpwd != NULL && pwd.pw_dir != NULL)
+ {
+@@ -358,10 +356,7 @@
+
+ while ((result = __getpwnam_r (user, &pwd, buffer, buflen, &tpwd)) != 0
+ && errno == ERANGE)
+- {
+- buflen += 1000;
+- buffer = __alloca (buflen);
+- }
++ buffer = extend_alloca (buffer, buflen, buflen + 1000);
+
+ if (result == 0 && tpwd != NULL && pwd.pw_dir)
+ *word = w_addstr (*word, word_length, max_length, pwd.pw_dir);
+@@ -559,16 +554,13 @@
+ internal_function
+ eval_expr_val (char **expr, long int *result)
+ {
+- int sgn = +1;
+ char *digit;
+
+ /* Skip white space */
+ for (digit = *expr; digit && *digit && isspace (*digit); ++digit);
+
+- switch (*digit)
++ if (*digit == '(')
+ {
+- case '(':
+-
+ /* Scan for closing paren */
+ for (++digit; **expr && **expr != ')'; ++(*expr));
+
+@@ -582,27 +574,14 @@
+ return WRDE_SYNTAX;
+
+ return 0;
+-
+- case '+': /* Positive value */
+- ++digit;
+- break;
+-
+- case '-': /* Negative value */
+- ++digit;
+- sgn = -1;
+- break;
+-
+- default:
+- if (!isdigit (*digit))
+- return WRDE_SYNTAX;
+ }
+
+- *result = 0;
+- for (; *digit && isdigit (*digit); ++digit)
+- *result = (*result * 10) + (*digit - '0');
++ /* POSIX requires that decimal, octal, and hexadecimal constants are
++ recognized. Therefore we pass 0 as the third parameter to strtol. */
++ *result = strtol (digit, expr, 0);
++ if (digit == *expr)
++ return WRDE_SYNTAX;
+
+- *expr = digit;
+- *result *= sgn;
+ return 0;
+ }
+
+@@ -841,7 +820,7 @@
+ args[1] = "-nc";
+
+ /* Redirect output. */
+- __dup2 (fildes[1], 1);
++ __dup2 (fildes[1], STDOUT_FILENO);
+ __close (fildes[1]);
+
+ /* Redirect stderr to /dev/null if we have to. */
+@@ -853,12 +832,12 @@
+ fd = __open (_PATH_DEVNULL, O_WRONLY);
+ if (fd >= 0 && fd != 2)
+ {
+- __dup2 (fd, 2);
++ __dup2 (fd, STDERR_FILENO);
+ __close (fd);
+ }
+ /* Be paranoid. Check that we actually opened the /dev/null
+ device. */
+- if (__builtin_expect (__fxstat64 (_STAT_VER, 2, &st), 0) != 0
++ if (__builtin_expect (__fxstat64 (_STAT_VER, STDERR_FILENO, &st), 0) != 0
+ || __builtin_expect (S_ISCHR (st.st_mode), 1) == 0
+ #if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR
+ || st.st_rdev != makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR)
+@@ -914,7 +893,7 @@
+ }
+
+ if (pid == 0)
+- exec_comm_child(comm, fildes, (flags & WRDE_SHOWERR), 0);
++ exec_comm_child (comm, fildes, flags & WRDE_SHOWERR, 0);
+
+ /* Parent */
+
+@@ -1087,7 +1066,7 @@
+ if (pid == 0)
+ {
+ fildes[0] = fildes[1] = -1;
+- exec_comm_child(comm, fildes, 0, 1);
++ exec_comm_child (comm, fildes, 0, 1);
+ }
+
+ if (__waitpid (pid, &status, 0) == pid && status != 0)
+@@ -1143,8 +1122,25 @@
+ /* Go -- give script to the shell */
+ if (comm)
+ {
++#ifdef __libc_ptf_call
++ /* We do not want the exec_comm call to be cut short
++ by a thread cancellation since cleanup is very
++ ugly. Therefore disable cancellation for
++ now. */
++ // XXX Ideally we do want the thread being cancelable.
++ // XXX If demand is there we'll change it.
++ int state = PTHREAD_CANCEL_ENABLE;
++ __libc_ptf_call (pthread_setcancelstate,
++ (PTHREAD_CANCEL_DISABLE, &state), 0);
++#endif
++
+ error = exec_comm (comm, word, word_length, max_length,
+ flags, pwordexp, ifs, ifs_white);
++
++#ifdef __libc_ptf_call
++ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
++#endif
++
+ free (comm);
+ }
+
+--- glibc-2.3.2/sysdeps/gnu/Makefile 2002-11-11 20:55:34.000000000 -0500
++++ glibc-2.3.2/sysdeps/gnu/Makefile 2003-05-12 12:13:07.000000000 -0400
+@@ -1,4 +1,5 @@
+-# Copyright (C) 1996,97,98,99,2001,02 Free Software Foundation, Inc.
++# Copyright (C) 1996,1997,1998,1999,2001,2002,2003
++# Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -34,9 +35,10 @@
+ vpath errlist.c $(full_config_sysdirs)
+ ifeq ($(versioning),yes)
+ $(objpfx)errlist-compat.c: errlist.c $(..)sysdeps/gnu/errlist-compat.awk \
+- $(common-objpfx)Versions.v.i
++ $(common-objpfx)Versions.v.i $(before-compile)
+ else
+-$(objpfx)errlist-compat.c: errlist.c $(..)sysdeps/gnu/errlist-compat.awk
++$(objpfx)errlist-compat.c: errlist.c $(..)sysdeps/gnu/errlist-compat.awk \
++ $(before-compile)
+ endif
+ $(AWK) -v maxerr=`\
+ $(CC) -S $(CPPFLAGS) $(CFLAGS) -DNOT_IN_libc -DEMIT_ERR_MAX $< -o - \
+@@ -47,6 +49,7 @@
+ # Make it unwritable so noone will edit it by mistake.
+ -chmod a-w $@T
+ mv -f $@T $@
++generated += errlist-compat.c
+
+ # This will force the generation above to happy if need be.
+ $(foreach o,.d $(object-suffixes),$(objpfx)errlist$o):$(objpfx)errlist-compat.c
+--- glibc-2.3.2/sysdeps/gnu/ifaddrs.c 2002-12-02 17:36:30.000000000 -0500
++++ glibc-2.3.2/sysdeps/gnu/ifaddrs.c 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* getifaddrs -- get names and addresses of all network interfaces
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -151,9 +151,13 @@
+
+ return 0;
+ }
++#ifndef getifaddrs
++libc_hidden_def (getifaddrs)
++#endif
+
+ void
+ freeifaddrs (struct ifaddrs *ifa)
+ {
+ free (ifa);
+ }
++libc_hidden_def (freeifaddrs)
+--- glibc-2.3.2/sysdeps/gnu/siglist.c 2002-12-21 13:38:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/gnu/siglist.c 2003-04-12 11:39:45.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Define list of all signal numbers and their names.
+- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,11 +31,6 @@
+ };
+ strong_alias (__new_sys_siglist, _sys_siglist_internal)
+
+-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+-strong_alias (_sys_siglist_internal, __old_sys_siglist)
+-declare_symbol (__old_sys_siglist, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
+-#endif
+-
+ const char *const __new_sys_sigabbrev[NSIG] =
+ {
+ #define init_sig(sig, abbrev, desc) [sig] = abbrev,
+@@ -45,6 +40,9 @@
+ strong_alias (__new_sys_sigabbrev, _sys_sigabbrev_internal)
+
+ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
++strong_alias (_sys_siglist_internal, __old_sys_siglist)
++declare_symbol (__old_sys_siglist, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
++
+ strong_alias (_sys_sigabbrev_internal, __old_sys_sigabbrev)
+ declare_symbol (__old_sys_sigabbrev, object, OLD_SIGLIST_SIZE * __WORDSIZE / 8)
+
+@@ -54,7 +52,26 @@
+ compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0);
+ #endif
+
++#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3) && defined OLD2_SIGLIST_SIZE
++strong_alias (_sys_siglist_internal, __old2_sys_siglist)
++declare_symbol (__old2_sys_siglist, object, OLD2_SIGLIST_SIZE * __WORDSIZE / 8)
++
++strong_alias (_sys_sigabbrev_internal, __old2_sys_sigabbrev)
++declare_symbol (__old2_sys_sigabbrev, object,
++ OLD2_SIGLIST_SIZE * __WORDSIZE / 8)
++
++strong_alias (__old2_sys_siglist, _old2_sys_siglist)
++compat_symbol (libc, __old2_sys_siglist, _sys_siglist, GLIBC_2_1);
++compat_symbol (libc, _old2_sys_siglist, sys_siglist, GLIBC_2_1);
++compat_symbol (libc, __old2_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
++
++strong_alias (__new_sys_siglist, _new_sys_siglist)
++versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_3_3);
++versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_3_3);
++versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_3_3);
++#else
+ strong_alias (__new_sys_siglist, _new_sys_siglist)
+ versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_1);
+ versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_1);
+ versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
++#endif
+--- glibc-2.3.2/sysdeps/gnu/utmpx.h 2001-07-07 15:21:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/gnu/utmpx.h 2003-04-24 20:05:59.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,41 +47,79 @@
+
+ __BEGIN_DECLS
+
+-/* Open user accounting database. */
+-extern void setutxent (void) __THROW;
++/* Open user accounting database.
+
+-/* Close user accounting database. */
+-extern void endutxent (void) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void setutxent (void);
+
+-/* Get the next entry from the user accounting database. */
+-extern struct utmpx *getutxent (void) __THROW;
++/* Close user accounting database.
+
+-/* Get the user accounting database entry corresponding to ID. */
+-extern struct utmpx *getutxid (__const struct utmpx *__id) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern void endutxent (void);
+
+-/* Get the user accounting database entry corresponding to LINE. */
+-extern struct utmpx *getutxline (__const struct utmpx *__line) __THROW;
++/* Get the next entry from the user accounting database.
+
+-/* Write the entry UTMPX into the user accounting database. */
+-extern struct utmpx *pututxline (__const struct utmpx *__utmpx) __THROW;
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct utmpx *getutxent (void);
++
++/* Get the user accounting database entry corresponding to ID.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct utmpx *getutxid (__const struct utmpx *__id);
++
++/* Get the user accounting database entry corresponding to LINE.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct utmpx *getutxline (__const struct utmpx *__line);
++
++/* Write the entry UTMPX into the user accounting database.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern struct utmpx *pututxline (__const struct utmpx *__utmpx);
+
+
+ #ifdef __USE_GNU
+-/* Change name of the utmpx file to be examined. */
+-extern int utmpxname (__const char *__file) __THROW;
++/* Change name of the utmpx file to be examined.
+
+-/* Append entry UTMP to the wtmpx-like file WTMPX_FILE. */
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern int utmpxname (__const char *__file);
++
++/* Append entry UTMP to the wtmpx-like file WTMPX_FILE.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern void updwtmpx (__const char *__wtmpx_file,
+- __const struct utmpx *__utmpx) __THROW;
++ __const struct utmpx *__utmpx);
+
+
+-/* Copy the information in UTMPX to UTMP. */
++/* Copy the information in UTMPX to UTMP.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern void getutmp (__const struct utmpx *__utmpx,
+- struct utmp *__utmp) __THROW;
++ struct utmp *__utmp);
++
++/* Copy the information in UTMP to UTMPX.
+
+-/* Copy the information in UTMP to UTMPX. */
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern void getutmpx (__const struct utmp *__utmp,
+- struct utmpx *__utmpx) __THROW;
++ struct utmpx *__utmpx);
+ #endif
+
+ __END_DECLS
+--- glibc-2.3.2/sysdeps/hppa/dl-machine.h 2002-09-28 00:15:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/hppa/dl-machine.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Machine-dependent ELF dynamic relocation inline functions. PA-RISC version.
+- Copyright (C) 1995-1997,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-1997,1999,2000,2001,2002, 2003
++ Free Software Foundation, Inc.
+ Contributed by David Huggins-Daines <dhd@debian.org>
+ This file is part of the GNU C Library.
+
+@@ -481,8 +482,9 @@
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const Elf32_Sym *const refsym = sym;
+ unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
+ struct link_map *sym_map;
+@@ -531,9 +533,9 @@
+ return;
+ #endif
+ /* .eh_frame can have unaligned relocs. */
+- if ((unsigned long) reloc_addr & 3)
++ if ((unsigned long) reloc_addr_arg & 3)
+ {
+- char *rel_addr = (char *) reloc_addr;
++ char *rel_addr = (char *) reloc_addr_arg;
+ rel_addr[0] = value >> 24;
+ rel_addr[1] = value >> 16;
+ rel_addr[2] = value >> 8;
+@@ -614,7 +616,7 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value,
++ memcpy (reloc_addr_arg, (void *) value,
+ MIN (sym->st_size, refsym->st_size));
+ return;
+
+@@ -637,8 +639,9 @@
+ static inline void
+ elf_machine_rela_relative (struct link_map *map, Elf32_Addr l_addr,
+ const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
+ Elf32_Addr value;
+
+@@ -651,9 +654,9 @@
+ {
+ case R_PARISC_DIR32:
+ /* .eh_frame can have unaligned relocs. */
+- if ((unsigned long) reloc_addr & 3)
++ if ((unsigned long) reloc_addr_arg & 3)
+ {
+- char *rel_addr = (char *) reloc_addr;
++ char *rel_addr = (char *) reloc_addr_arg;
+ rel_addr[0] = value >> 24;
+ rel_addr[1] = value >> 16;
+ rel_addr[2] = value >> 8;
+--- glibc-2.3.2/sysdeps/hppa/fpu/libm-test-ulps 2002-11-19 01:40:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/hppa/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
+@@ -94,7 +94,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -107,10 +107,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -145,7 +145,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -239,7 +239,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -258,7 +258,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -266,7 +266,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -453,12 +453,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -513,7 +513,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/i386/Makefile 2002-09-19 02:42:09.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/Makefile 2003-09-19 22:37:07.000000000 -0400
+@@ -20,3 +20,40 @@
+ CFLAGS-dl-load.c += -Wno-unused
+ CFLAGS-dl-reloc.c += -Wno-unused
+ endif
++
++# Most of the glibc routines don't ever call user defined callbacks
++# nor use any FPU or SSE* and as such don't need bigger %esp alignment
++# than 4 bytes.
++# Lots of routines in math will use FPU, so make math subdir an exception
++# here.
++ifeq ($(subdir),math)
++sysdep-CFLAGS += -mpreferred-stack-boundary=4
++else
++ifeq ($(subdir),csu)
++sysdep-CFLAGS += -mpreferred-stack-boundary=4
++else
++sysdep-CFLAGS += -mpreferred-stack-boundary=2
++# Likewise, any function which calls user callbacks
++uses-callbacks += -mpreferred-stack-boundary=4
++# Likewise, any stack alignment tests
++stack-align-test-flags += -malign-double -mpreferred-stack-boundary=4
++endif
++endif
++
++# And a couple of other routines
++ifeq ($(subdir),stdlib)
++CFLAGS-exit.c += -mpreferred-stack-boundary=4
++endif
++ifeq ($(subdir),elf)
++CFLAGS-dl-init.c += -mpreferred-stack-boundary=4
++CFLAGS-dl-fini.c += -mpreferred-stack-boundary=4
++CFLAGS-dl-open.c += -mpreferred-stack-boundary=4
++CFLAGS-dl-close.c += -mpreferred-stack-boundary=4
++CFLAGS-dl-error.c += -mpreferred-stack-boundary=4
++endif
++ifeq ($(subdir),dlfcn)
++CFLAGS-dlopen.c += -mpreferred-stack-boundary=4
++CFLAGS-dlopenold.c += -mpreferred-stack-boundary=4
++CFLAGS-dlclose.c += -mpreferred-stack-boundary=4
++CFLAGS-dlerror.c += -mpreferred-stack-boundary=4
++endif
+--- glibc-2.3.2/sysdeps/i386/Versions 2000-06-15 02:53:58.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/Versions 2003-05-12 12:13:07.000000000 -0400
+@@ -9,7 +9,14 @@
+ }
+ GLIBC_2.1.1 {
+ # extern inline functions used by <bits/string.h>
+- __memcpy_c; __memset_cc; __memset_cg; __memset_gg; __strchr_c; __strchr_g;
+- __strchrnul_c; __strchrnul_g;
++ __memcpy_c; __memset_cc; __memset_cg; __memset_gg;
++ __memcpy_by2; __memcpy_by4; __memcpy_g; __mempcpy_by2; __mempcpy_by4;
++ __mempcpy_byn; __memset_ccn_by2; __memset_ccn_by4; __memset_gcn_by2;
++ __memset_gcn_by4; __stpcpy_g; __strcat_c; __strcat_g; __strchr_c;
++ __strchr_g; __strchrnul_c; __strchrnul_g; __strcmp_gg; __strcpy_g;
++ __strcspn_c1; __strcspn_cg; __strcspn_g; __strlen_g; __strncat_g;
++ __strncmp_g; __strncpy_by2; __strncpy_by4; __strncpy_byn; __strncpy_gg;
++ __strpbrk_cg; __strpbrk_g; __strrchr_c; __strrchr_g; __strspn_c1;
++ __strspn_cg; __strspn_g; __strstr_cg; __strstr_g;
+ }
+ }
+--- glibc-2.3.2/sysdeps/i386/bits/byteswap.h 2003-01-07 19:06:02.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/bits/byteswap.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Macros to swap the order of bytes in integer values.
+- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -64,7 +64,8 @@
+ # if __GNUC__ >= 2
+ /* To swap the bytes in a word the i486 processors and up provide the
+ `bswap' opcode. On i386 we have to use three instructions. */
+-# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__
++# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \
++ && !defined __pentium4__
+ # define __bswap_32(x) \
+ (__extension__ \
+ ({ register unsigned int __v, __x = (x); \
+--- glibc-2.3.2/sysdeps/i386/bits/setjmp.h 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/bits/setjmp.h 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,8 +17,10 @@
+ 02111-1307 USA. */
+
+ /* Define the machine-dependent type `jmp_buf'. Intel 386 version. */
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
+
+-#ifndef _SETJMP_H
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -40,3 +42,5 @@
+ containing a local variable at ADDRESS. */
+ #define _JMPBUF_UNWINDS(jmpbuf, address) \
+ ((void *) (address) < (void *) (jmpbuf)[JB_SP])
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/i386/bits/string.h 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/bits/string.h 2003-09-19 22:37:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized, inlined string functions. i386 version.
+- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -321,11 +321,12 @@
+ "repne; scasb\n\t"
+ "je 1f\n\t"
+ "orl $-1,%0\n"
+- "1:\tcld"
++ "1:\tcld\n\t"
++ "incl %0"
+ : "=D" (__res), "=&c" (__d0)
+ : "a" (__c), "0" (__s + __n - 1), "1" (__n)
+ : "cc");
+- return __res + 1;
++ return __res;
+ }
+ # ifdef __USE_GNU
+ # define memrchr(s, c, n) __memrchr (s, c, n)
+--- glibc-2.3.2/sysdeps/i386/dl-machine.h 2003-01-12 03:37:35.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/dl-machine.h 2003-08-21 08:37:08.000000000 -0400
+@@ -23,7 +23,7 @@
+ #define ELF_MACHINE_NAME "i386"
+
+ #include <sys/param.h>
+-
++#include <sysdep.h>
+ #include <tls.h>
+
+ /* Return nonzero iff ELF header is compatible with the running host. */
+@@ -95,7 +95,7 @@
+ /* Set up the loaded object described by L so its unrelocated PLT
+ entries will jump to the on-demand fixup code in dl-runtime.c. */
+
+-static inline int __attribute__ ((unused))
++static inline int __attribute__ ((unused, always_inline))
+ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+ {
+ Elf32_Addr *got;
+@@ -168,35 +168,51 @@
+ .text\n\
+ .globl _dl_runtime_resolve\n\
+ .type _dl_runtime_resolve, @function\n\
++ " CFI_STARTPROC "\n\
+ .align 16\n\
+ _dl_runtime_resolve:\n\
++ " CFI_ADJUST_CFA_OFFSET (8) "\n\
+ pushl %eax # Preserve registers otherwise clobbered.\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %edx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\
+ movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\
+ call fixup # Call resolver.\n\
+ popl %edx # Get register content back.\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ popl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\
+ ret $8 # Jump to function address.\n\
++ " CFI_ENDPROC "\n\
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
+ \n\
+ .globl _dl_runtime_profile\n\
+ .type _dl_runtime_profile, @function\n\
++ " CFI_STARTPROC "\n\
+ .align 16\n\
+ _dl_runtime_profile:\n\
++ " CFI_ADJUST_CFA_OFFSET (8) "\n\
+ pushl %eax # Preserve registers otherwise clobbered.\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %edx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ movl 20(%esp), %ecx # Load return address\n\
+ movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\
+ movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\
+ call profile_fixup # Call resolver.\n\
+ popl %edx # Get register content back.\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ popl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\
+ ret $8 # Jump to function address.\n\
++ " CFI_ENDPROC "\n\
+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
+ .previous\n\
+ ");
+@@ -207,23 +223,35 @@
+ .globl _dl_runtime_profile\n\
+ .type _dl_runtime_resolve, @function\n\
+ .type _dl_runtime_profile, @function\n\
++ " CFI_STARTPROC "\n\
+ .align 16\n\
+ _dl_runtime_resolve:\n\
+ _dl_runtime_profile:\n\
++ " CFI_ADJUST_CFA_OFFSET (8) "\n\
+ pushl %eax # Preserve registers otherwise clobbered.\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %edx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ movl 16(%esp), %edx # Push the arguments for `fixup'\n\
+ movl 12(%esp), %eax\n\
+ pushl %edx\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ pushl %eax\n\
++ " CFI_ADJUST_CFA_OFFSET (4) "\n\
+ call fixup # Call resolver.\n\
+ popl %edx # Pop the parameters\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ popl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ popl %edx # Get register content back.\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ popl %ecx\n\
++ " CFI_ADJUST_CFA_OFFSET (-4) "\n\
+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\
+ ret $8 # Jump to function address.\n\
++ " CFI_ENDPROC "\n\
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
+ .previous\n\
+@@ -363,8 +391,9 @@
+ static inline void
+ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+@@ -491,8 +520,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ default:
+ _dl_reloc_bad_type (map, r_type, 0);
+@@ -506,8 +535,9 @@
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ if (ELF32_R_TYPE (reloc->r_info) == R_386_RELATIVE)
+@@ -521,7 +551,7 @@
+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
+ Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
+ # else
+- Elf32_Addr value = RESOLVE (&sym, version, ELF32_R_TYPE (reloc->r_info));
++ Elf32_Addr value = RESOLVE (&sym, version, r_type);
+ if (sym != NULL)
+ value += sym->st_value;
+ # endif
+@@ -533,11 +563,13 @@
+ case R_386_32:
+ *reloc_addr = value + reloc->r_addend;
+ break;
++# ifndef RESOLVE_CONFLICT_FIND_MAP
++ /* Not needed for dl-conflict.c. */
+ case R_386_PC32:
+ *reloc_addr = (value + reloc->r_addend - (Elf32_Addr) reloc_addr);
+ break;
+
+-# ifdef USE_TLS
++# ifdef USE_TLS
+ case R_386_TLS_DTPMOD32:
+ /* Get the information from the link map returned by the
+ resolv function. */
+@@ -570,9 +602,7 @@
+ = (sym == NULL ? 0 : sym->st_value - sym_map->l_tls_offset)
+ + reloc->r_addend;
+ break;
+-# endif /* use TLS */
+-# ifndef RESOLVE_CONFLICT_FIND_MAP
+- /* Not needed for dl-conflict.c. */
++# endif /* use TLS */
+ case R_386_COPY:
+ if (sym == NULL)
+ /* This can happen in trace mode if an object could not be
+@@ -590,8 +620,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ # endif /* !RESOLVE_CONFLICT_FIND_MAP */
+ default:
+@@ -606,8 +636,9 @@
+
+ static inline void
+ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ assert (ELF32_R_TYPE (reloc->r_info) == R_386_RELATIVE);
+ *reloc_addr += l_addr;
+ }
+@@ -615,8 +646,9 @@
+ #ifndef RTLD_BOOTSTRAP
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+ #endif /* !RTLD_BOOTSTRAP */
+--- glibc-2.3.2/sysdeps/i386/elf/start.S 2002-12-09 22:41:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/elf/start.S 2003-06-03 09:36:28.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup code compliant to the ELF i386 ABI.
+- Copyright (C) 1995,1996,1997,1998,2000,2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -67,6 +67,27 @@
+ pushl %edx /* Push address of the shared library
+ termination function. */
+
++#ifdef SHARED
++ /* Load PIC register. */
++ call 1f
++ addl $_GLOBAL_OFFSET_TABLE_, %ebx
++
++ /* Push address of our own entry points to .fini and .init. */
++ leal __libc_csu_fini@GOTOFF(%ebx), %eax
++ pushl %eax
++ leal __libc_csu_init@GOTOFF(%ebx), %eax
++ pushl %eax
++
++ pushl %ecx /* Push second argument: argv. */
++ pushl %esi /* Push first argument: argc. */
++
++ leal BP_SYM (main)@GOTOFF(%ebx), %eax
++ pushl %eax
++
++ /* Call the user's main function, and exit with its value.
++ But let the libc call main. */
++ call BP_SYM (__libc_start_main)@PLT
++#else
+ /* Push address of our own entry points to .fini and .init. */
+ pushl $__libc_csu_fini
+ pushl $__libc_csu_init
+@@ -79,9 +100,15 @@
+ /* Call the user's main function, and exit with its value.
+ But let the libc call main. */
+ call BP_SYM (__libc_start_main)
++#endif
+
+ hlt /* Crash if somehow `exit' does return. */
+
++#ifdef SHARED
++1: movl (%esp), %ebx
++ ret
++#endif
++
+ /* To fulfill the System V/i386 ABI we need this symbol. Yuck, it's so
+ meaningless since we don't support machines < 80386. */
+ .section .rodata
+--- glibc-2.3.2/sysdeps/i386/fpu/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/fpu/Makefile 2003-04-29 03:14:48.000000000 -0400
+@@ -0,0 +1,3 @@
++ifeq ($(subdir),math)
++$(objpfx)libm.so: $(elfobjdir)/ld.so
++endif
+--- glibc-2.3.2/sysdeps/i386/fpu/bits/mathinline.h 2002-12-16 14:31:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/fpu/bits/mathinline.h 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Inline math functions for i387.
+- Copyright (C) 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
++ Copyright (C) 1995,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by John C. Bowman <bowman@math.ualberta.ca>, 1995.
+
+@@ -437,8 +437,10 @@
+ return __value)
+
+
++#ifdef __FAST_MATH__
+ __inline_mathopNP (sqrt, "fsqrt")
+ __inline_mathopNP_ (long double, __sqrtl, "fsqrt")
++#endif
+
+ #if __GNUC_PREREQ (2, 8)
+ __inline_mathcodeNP_ (double, fabs, __x, return __builtin_fabs (__x))
+@@ -511,7 +513,8 @@
+ __asm __volatile ("fldcw %0" : : "m" (__cw)); \
+ return __value)
+
+-#define __ldexp_code \
++#ifdef __FAST_MATH__
++# define __ldexp_code \
+ register long double __value; \
+ __asm __volatile__ \
+ ("fscale" \
+@@ -523,6 +526,7 @@
+ {
+ __ldexp_code;
+ }
++#endif
+
+
+ /* Optimized versions for some non-standardized functions. */
+@@ -530,11 +534,10 @@
+
+ # ifdef __FAST_MATH__
+ __inline_mathcodeNP (expm1, __x, __expm1_code)
+-# endif
+
+ /* We cannot rely on M_SQRT being defined. So we do it for ourself
+ here. */
+-# define __M_SQRT2 1.41421356237309504880L /* sqrt(2) */
++# define __M_SQRT2 1.41421356237309504880L /* sqrt(2) */
+
+ __inline_mathcodeNP (log1p, __x, \
+ register long double __value; \
+@@ -573,12 +576,12 @@
+ : "=t" (__junk), "=u" (__value) : "0" (__x)); \
+ return __value)
+
++# endif
+ #endif
+
+ #ifdef __USE_ISOC99
+ #ifdef __FAST_MATH__
+ __inline_mathop_declNP (log2, "fld1; fxch; fyl2x", "0" (__x) : "st(1)")
+-#endif /* __FAST_MATH__ */
+
+ __MATH_INLINE float
+ ldexpf (float __x, int __y) __THROW
+@@ -592,7 +595,6 @@
+ __ldexp_code;
+ }
+
+-#ifdef __FAST_MATH__
+ __inline_mathcodeNP3 (fma, __x, __y, __z, return (__x * __y) + __z)
+
+ __inline_mathopNP (rint, "frndint")
+--- glibc-2.3.2/sysdeps/i386/fpu/fclrexcpt.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/fclrexcpt.c 2003-08-21 08:37:08.000000000 -0400
+@@ -19,6 +19,9 @@
+ 02111-1307 USA. */
+
+ #include <fenv.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
+
+ int
+ __feclearexcept (int excepts)
+@@ -38,6 +41,21 @@
+ /* Put the new data in effect. */
+ __asm__ ("fldenv %0" : : "m" (*&temp));
+
++ /* If the CPU supports SSE, we clear the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xnew_exc;
++
++ /* Get the current MXCSR. */
++ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
++
++ /* Clear the relevant bits. */
++ xnew_exc &= excepts ^ FE_ALL_EXCEPT;
++
++ /* Put the new data in effect. */
++ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
++ }
++
+ /* Success. */
+ return 0;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/fedisblxcpt.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/fedisblxcpt.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Disable floating-point exceptions.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 1999.
+
+@@ -19,6 +19,9 @@
+ 02111-1307 USA. */
+
+ #include <fenv.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
+
+ int
+ fedisableexcept (int excepts)
+@@ -35,5 +38,18 @@
+ new_exc |= excepts;
+ __asm__ ("fldcw %0" : : "m" (*&new_exc));
+
++ /* If the CPU supports SSE we set the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xnew_exc;
++
++ /* Get the current control word. */
++ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
++
++ xnew_exc |= excepts << 7;
++
++ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
++ }
++
+ return old_exc;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/feenablxcpt.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/feenablxcpt.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Enable floating-point exceptions.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 1999.
+
+@@ -19,11 +19,15 @@
+ 02111-1307 USA. */
+
+ #include <fenv.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
+
+ int
+ feenableexcept (int excepts)
+ {
+- unsigned short int new_exc, old_exc;
++ unsigned short int new_exc;
++ unsigned short int old_exc;
+
+ /* Get the current control word. */
+ __asm__ ("fstcw %0" : "=m" (*&new_exc));
+@@ -34,5 +38,18 @@
+ new_exc &= ~excepts;
+ __asm__ ("fldcw %0" : : "m" (*&new_exc));
+
++ /* If the CPU supports SSE we set the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xnew_exc;
++
++ /* Get the current control word. */
++ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
++
++ xnew_exc &= ~(excepts << 7);
++
++ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
++ }
++
+ return old_exc;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/fegetenv.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/fegetenv.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Store current floating-point environment.
+- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
++ Copyright (C) 1997,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -25,6 +25,10 @@
+ __fegetenv (fenv_t *envp)
+ {
+ __asm__ ("fnstenv %0" : "=m" (*envp));
++ /* And load it right back since the processor changes the mask.
++ Intel thought this opcode to be used in interrupt handlers which
++ would block all exceptions. */
++ __asm__ ("fldenv %0" : : "m" (*envp));
+
+ /* Success. */
+ return 0;
+--- glibc-2.3.2/sysdeps/i386/fpu/feholdexcpt.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/feholdexcpt.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Store current floating-point environment and clear exceptions.
+- Copyright (C) 1997, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -19,6 +19,9 @@
+ 02111-1307 USA. */
+
+ #include <fenv.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
+
+ int
+ feholdexcept (fenv_t *envp)
+@@ -32,5 +35,19 @@
+ work = envp->__control_word | 0x3f;
+ __asm__ ("fldcw %0" : : "m" (*&work));
+
++ /* If the CPU supports SSE we set the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xwork;
++
++ /* Get the current control word. */
++ __asm__ ("stmxcsr %0" : "=m" (*&xwork));
++
++ /* Set all exceptions to non-stop. */
++ xwork |= 0x1f80;
++
++ __asm__ ("ldmxcsr %0" : : "m" (*&xwork));
++ }
++
+ return 0;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/fesetround.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/fesetround.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Set current rounding direction.
+- Copyright (C) 1997 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -19,6 +19,9 @@
+ 02111-1307 USA. */
+
+ #include <fenv.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
+
+ int
+ fesetround (int round)
+@@ -34,5 +37,16 @@
+ cw |= round;
+ __asm__ ("fldcw %0" : : "m" (*&cw));
+
++ /* If the CPU supports SSE we set the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xcw;
++
++ __asm__ ("stmxcsr %0" : "=m" (*&xcw));
++ xcw &= ~0x6000;
++ xcw |= round << 3;
++ __asm__ ("ldmxcsr %0" : : "m" (*&xcw));
++ }
++
+ return 0;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/fsetexcptflg.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/fsetexcptflg.c 2003-08-21 08:37:09.000000000 -0400
+@@ -21,6 +21,9 @@
+ #include <fenv.h>
+ #include <math.h>
+ #include <bp-sym.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
+
+ int
+ __fesetexceptflag (const fexcept_t *flagp, int excepts)
+@@ -39,6 +42,22 @@
+ the next floating-point instruction. */
+ __asm__ ("fldenv %0" : : "m" (*&temp));
+
++ /* If the CPU supports SSE, we set the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xnew_exc;
++
++ /* Get the current MXCSR. */
++ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
++
++ /* Set the relevant bits. */
++ xnew_exc &= ~(excepts & FE_ALL_EXCEPT);
++ xnew_exc |= *flagp & excepts & FE_ALL_EXCEPT;
++
++ /* Put the new data in effect. */
++ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
++ }
++
+ /* Success. */
+ return 0;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/ftestexcept.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu/ftestexcept.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Test exception in current environment.
+- Copyright (C) 1997 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -19,14 +19,22 @@
+ 02111-1307 USA. */
+
+ #include <fenv.h>
++#include <unistd.h>
++#include <dl-procinfo.h>
++#include <ldsodefs.h>
+
+ int
+ fetestexcept (int excepts)
+ {
+ int temp;
++ int xtemp = 0;
+
+ /* Get current exceptions. */
+ __asm__ ("fnstsw %0" : "=a" (temp));
+
+- return temp & excepts & FE_ALL_EXCEPT;
++ /* If the CPU supports SSE we test the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ __asm__ ("stmxcsr %0" : "=m" (*&xtemp));
++
++ return (temp | xtemp) & excepts & FE_ALL_EXCEPT;
+ }
+--- glibc-2.3.2/sysdeps/i386/fpu/libm-test-ulps 2003-02-27 17:27:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
+@@ -121,7 +121,7 @@
+ ldouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ ildouble: 1
+@@ -136,7 +136,7 @@
+ ldouble: 1
+
+ # ccosh
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -181,7 +181,7 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ idouble: 1
+ ildouble: 1
+@@ -343,10 +343,10 @@
+ ifloat: 1
+
+ # csinh
+-Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -363,10 +363,12 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
++double: 1
++idouble: 1
+ ildouble: 439
+ ldouble: 439
+-Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ float: 1
+ ifloat: 1
+ ildouble: 2
+@@ -381,10 +383,10 @@
+ ldouble: 3
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ ildouble: 5
+ ldouble: 5
+-Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ float: 1
+ ifloat: 1
+ ildouble: 25
+@@ -624,12 +626,12 @@
+ idouble: 1
+ ildouble: 1
+ ldouble: 1
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ float: 1
+ ifloat: 1
+ double: 1
+ idouble: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -693,7 +695,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -1057,11 +1059,15 @@
+ ldouble: 2
+
+ Function: Real part of "ctan":
++double: 1
++idouble: 1
+ ildouble: 439
+ ldouble: 439
+
+ Function: Imaginary part of "ctan":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
+ ildouble: 3
+ ldouble: 3
+--- glibc-2.3.2/sysdeps/i386/fpu_control.h 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/fpu_control.h 2003-08-21 08:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* FPU control word bits. i387 version.
+- Copyright (C) 1993,1995,1996,1997,1998,2000,2001 Free Software Foundation, Inc.
++ Copyright (C) 1993,1995-1998,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Olaf Flebbe.
+
+@@ -88,7 +88,11 @@
+ /* Type of the control word. */
+ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__)));
+
+-/* Macros for accessing the hardware control word. */
++/* Macros for accessing the hardware control word.
++
++ Note that the use of these macros is no sufficient anymore with
++ recent hardware. Some floating point operations are executed in
++ the SSE/SSE2 engines which have their own control and status register. */
+ #define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw))
+ #define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw))
+
+--- glibc-2.3.2/sysdeps/i386/i486/atomicity.h 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i486/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,57 +0,0 @@
+-/* Low-level functions for atomic operations. ix86 version, x >= 4.
+- Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-
+-static inline uint32_t
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, uint32_t val)
+-{
+- register uint32_t result;
+- __asm__ __volatile__ ("lock; xaddl %0,%1"
+- : "=r" (result), "=m" (*mem) : "0" (val), "1" (*mem));
+- return result;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- __asm__ __volatile__ ("lock; addl %1,%0"
+- : "=m" (*mem) : "ir" (val), "0" (*mem));
+-}
+-
+-static inline char
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- char ret;
+- long int readval;
+-
+- __asm__ __volatile__ ("lock; cmpxchgl %3, %1; sete %0"
+- : "=q" (ret), "=m" (*p), "=a" (readval)
+- : "r" (newval), "1" (*p), "a" (oldval));
+- return ret;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/i386/i486/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i486/bits/atomic.h 2003-05-12 12:13:07.000000000 -0400
+@@ -0,0 +1,359 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#ifndef LOCK_PREFIX
++# ifdef UP
++# define LOCK_PREFIX /* nothing */
++# else
++# define LOCK_PREFIX "lock;"
++# endif
++#endif
++
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "q" (newval), "m" (*mem), "0" (oldval)); \
++ ret; })
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "r" (newval), "m" (*mem), "0" (oldval)); \
++ ret; })
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "r" (newval), "m" (*mem), "0" (oldval)); \
++ ret; })
++
++/* XXX We do not really need 64-bit compare-and-exchange. At least
++ not in the moment. Using it would mean causing portability
++ problems since not many other 32-bit architectures have support for
++ such an operation. So don't define any code for now. If it is
++ really going to be used the code below can be used on Intel Pentium
++ and later, but NOT on i486. */
++#if 1
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret = *(mem); abort (); ret = (newval); ret = (oldval); })
++#else
++# ifdef __PIC__
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile ("xchgl %2, %%ebx\n\t" \
++ LOCK_PREFIX "cmpxchg8b %1\n\t" \
++ "xchgl %2, %%ebx" \
++ : "=A" (ret), "=m" (*mem) \
++ : "DS" (((unsigned long long int) (newval)) \
++ & 0xffffffff), \
++ "c" (((unsigned long long int) (newval)) >> 32), \
++ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
++ & 0xffffffff), \
++ "d" (((unsigned long long int) (oldval)) >> 32)); \
++ ret; })
++# else
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchg8b %1" \
++ : "=A" (ret), "=m" (*mem) \
++ : "b" (((unsigned long long int) (newval)) \
++ & 0xffffffff), \
++ "c" (((unsigned long long int) (newval)) >> 32), \
++ "m" (*mem), "a" (((unsigned long long int) (oldval)) \
++ & 0xffffffff), \
++ "d" (((unsigned long long int) (oldval)) >> 32)); \
++ ret; })
++# endif
++#endif
++
++
++/* Note that we need no lock prefix. */
++#define atomic_exchange_acq(mem, newvalue) \
++ ({ __typeof (*mem) result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile ("xchgb %b0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (newvalue), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile ("xchgw %w0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (newvalue), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile ("xchgl %0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (newvalue), "m" (*mem)); \
++ else \
++ { \
++ result = 0; \
++ abort (); \
++ } \
++ result; })
++
++
++#define atomic_exchange_and_add(mem, value) \
++ ({ __typeof (*mem) result; \
++ __typeof (value) addval = (value); \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "xaddb %b0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (addval), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "xaddw %w0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (addval), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "xaddl %0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (addval), "m" (*mem)); \
++ else \
++ { \
++ __typeof (mem) memp = (mem); \
++ do \
++ result = *memp; \
++ while (__arch_compare_and_exchange_val_64_acq (memp, \
++ result + addval, \
++ result) == result); \
++ } \
++ result; })
++
++
++#define atomic_add(mem, value) \
++ (void) ({ if (__builtin_constant_p (value) && (value) == 1) \
++ atomic_increment (mem); \
++ else if (__builtin_constant_p (value) && (value) == 1) \
++ atomic_decrement (mem); \
++ else if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "addb %b1, %0" \
++ : "=m" (*mem) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "addw %w1, %0" \
++ : "=m" (*mem) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "addl %1, %0" \
++ : "=m" (*mem) \
++ : "ir" (value), "m" (*mem)); \
++ else \
++ { \
++ __typeof (value) addval = (value); \
++ __typeof (*mem) oldval; \
++ __typeof (mem) memp = (mem); \
++ do \
++ oldval = *memp; \
++ while (__arch_compare_and_exchange_val_64_acq \
++ (memp, oldval + addval, oldval) == oldval); \
++ } \
++ })
++
++
++#define atomic_add_negative(mem, value) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "addb %b2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "iq" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "addw %w2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "addl %2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else \
++ abort (); \
++ __result; })
++
++
++#define atomic_add_zero(mem, value) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "addb %b2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "addw %w2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "addl %2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else \
++ abort (); \
++ __result; })
++
++
++#define atomic_increment(mem) \
++ (void) ({ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "incb %b0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "incw %w0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "incl %0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else \
++ { \
++ __typeof (*mem) oldval; \
++ __typeof (mem) memp = (mem); \
++ do \
++ oldval = *memp; \
++ while (__arch_compare_and_exchange_val_64_acq \
++ (memp, oldval + 1, oldval) == oldval); \
++ } \
++ })
++
++
++#define atomic_increment_and_test(mem) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "incb %0; sete %b1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "incw %0; sete %w1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "incl %0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else \
++ abort (); \
++ __result; })
++
++
++#define atomic_decrement(mem) \
++ (void) ({ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "decb %b0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "decw %w0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "decl %0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else \
++ { \
++ __typeof (*mem) oldval; \
++ __typeof (mem) memp = (mem); \
++ do \
++ oldval = *memp; \
++ while (__arch_compare_and_exchange_val_64_acq \
++ (memp, oldval - 1, oldval) == oldval); \
++ } \
++ })
++
++
++#define atomic_decrement_and_test(mem) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "decb %b0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "decw %w0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "decl %0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else \
++ abort (); \
++ __result; })
++
++
++#define atomic_bit_set(mem, bit) \
++ (void) ({ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "orb %b2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "ir" (1 << (bit))); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "orw %w2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "ir" (1 << (bit))); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "orl %2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "ir" (1 << (bit))); \
++ else \
++ abort (); \
++ })
++
++
++#define atomic_bit_test_set(mem, bit) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "btsb %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "btsw %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "btsl %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ else \
++ abort (); \
++ __result; })
+--- glibc-2.3.2/sysdeps/i386/i486/bits/string.h 2003-01-14 02:36:19.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i486/bits/string.h 2003-09-19 22:37:07.000000000 -0400
+@@ -484,7 +484,8 @@
+ ("std\n\t"
+ "repne; scasb\n\t"
+ "cmovne %2,%0\n\t"
+- "cld"
++ "cld\n\t"
++ "incl %0"
+ : "=D" (__res), "=&c" (__d0), "=&r" (__d1)
+ : "a" (__c), "0" (__s + __n - 1), "1" (__n), "2" (-1),
+ "m" ( *(struct { __extension__ char __x[__n]; } *)__s)
+@@ -495,13 +496,14 @@
+ "repne; scasb\n\t"
+ "je 1f\n\t"
+ "orl $-1,%0\n"
+- "1:\tcld"
++ "1:\tcld\n\t"
++ "incl %0"
+ : "=D" (__res), "=&c" (__d0)
+ : "a" (__c), "0" (__s + __n - 1), "1" (__n),
+ "m" ( *(struct { __extension__ char __x[__n]; } *)__s)
+ : "cc");
+ # endif
+- return __res + 1;
++ return __res;
+ }
+ # ifdef __USE_GNU
+ # define memrchr(s, c, n) __memrchr ((s), (c), (n))
+--- glibc-2.3.2/sysdeps/i386/i486/strcat.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i486/strcat.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strcat(dest, src) -- Append SRC on the end of DEST.
+ For Intel 80x86, x>=4.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994,1995,1996,1997,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>.
+ Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+@@ -267,3 +267,4 @@
+ LEAVE
+ RET_PTR
+ END (BP_SYM (strcat))
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/i386/i486/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i486/string-inlines.c 2003-04-29 18:49:22.000000000 -0400
+@@ -0,0 +1,65 @@
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* <bits/string.h> and <bits/string2.h> declare some extern inline
++ functions. These functions are declared additionally here if
++ inlining is not possible. */
++
++#undef __USE_STRING_INLINES
++#define __USE_STRING_INLINES
++#define _FORCE_INLINES
++#define __STRING_INLINE /* empty */
++#define __NO_INLINE__
++
++/* This is to avoid PLT entries for the x86 version. */
++#define __memcpy_g __memcpy_g_internal
++#define __strchr_g __strchr_g_internal
++
++#include <string.h>
++#undef index
++#undef rindex
++
++#undef __NO_INLINE__
++#include <bits/string.h>
++#include <bits/string2.h>
++
++void *
++(__memcpy_c) (void *d, const void *s, size_t n)
++{
++ return memcpy (d, s, n);
++}
++
++void *
++__memset_cc (void *s, unsigned long int pattern, size_t n)
++{
++ return memset (s, pattern & 0xff, n);
++}
++strong_alias (__memset_cc, __memset_cg)
++
++void *
++__memset_gg (void *s, char c, size_t n)
++{
++ return memset (s, c, n);
++}
++
++#ifdef __memcpy_c
++# undef __memcpy_g
++strong_alias (__memcpy_g_internal, __memcpy_g)
++# undef __strchr_g
++strong_alias (__strchr_g_internal, __strchr_g)
++#endif
+--- glibc-2.3.2/sysdeps/i386/i486/strlen.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i486/strlen.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strlen(str) -- determine the length of the string STR.
+ Optimized for Intel 80x86, x>=4.
+- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1991-1997, 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
+ This file is part of the GNU C Library.
+
+@@ -136,3 +136,4 @@
+ LEAVE
+ ret
+ END (BP_SYM (strlen))
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/i386/i586/memcpy.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i586/memcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Highly optimized version for i586.
+- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -116,3 +116,4 @@
+ LEAVE
+ RET_PTR
+ END (BP_SYM (memcpy))
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/i386/i586/memset.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i586/memset.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* memset/bzero -- set memory area to CH/0
+ Highly optimized version for ix86, x>=5.
+- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund, <tege@matematik.su.se>
+
+@@ -114,3 +114,4 @@
+ RET_PTR
+ #endif
+ END (BP_SYM (memset))
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/i386/i586/strchr.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i586/strchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Find character CH in a NUL terminated string.
+ Highly optimized version for ix85, x>=5.
+- Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
+
+@@ -339,3 +339,4 @@
+
+ #undef index
+ weak_alias (BP_SYM (strchr), BP_SYM (index))
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/i386/i586/strcpy.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i586/strcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* strcpy/stpcpy implementation for i586.
+- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -159,3 +159,6 @@
+ LEAVE
+ RET_PTR
+ END (BP_SYM (STRCPY))
++#ifndef USE_AS_STPCPY
++libc_hidden_builtin_def (strcpy)
++#endif
+--- glibc-2.3.2/sysdeps/i386/i586/strlen.S 2002-03-11 20:28:49.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i586/strlen.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strlen -- Compute length of NUL terminated string.
+ Highly optimized version for ix86, x>=5.
+- Copyright (C) 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995,1996,1997,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
+
+@@ -186,3 +186,4 @@
+ LEAVE
+ ret
+ END (BP_SYM (strlen))
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/i386/i686/Makefile 2002-02-01 01:38:19.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i686/Makefile 2003-09-19 22:37:07.000000000 -0400
+@@ -2,3 +2,6 @@
+ sysdep_routines += hp-timing
+ static-only-routines += hp-timing
+ endif
++
++# So that we can test __m128's alignment
++stack-align-test-flags += -msse
+--- glibc-2.3.2/sysdeps/i386/i686/dl-hash.h 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i686/dl-hash.h 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Compute hash alue for given string according to ELF standard.
+- Copyright (C) 1998 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -26,7 +26,7 @@
+ optimized for the PII processors. Though it will run on i586 it
+ would be much slower than the generic C implementation. So don't
+ use it. */
+-static inline unsigned int
++static unsigned int
+ _dl_elf_hash (const unsigned char *name)
+ {
+ unsigned int result;
+@@ -71,10 +71,9 @@
+ "jnz 2b\n"
+ "1:\t"
+ : "=&r" (result), "=r" (name), "=&c" (temp0), "=&r" (temp1)
+- : "0" (0), "1" (name));
++ : "0" (0), "1" (name));
+
+ return result;
+ }
+
+ #endif /* dl-hash.h */
+-
+--- glibc-2.3.2/sysdeps/i386/i686/hp-timing.h 2002-02-01 01:34:46.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i686/hp-timing.h 2003-04-24 20:05:59.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* High precision, low overhead timing functions. i686 version.
+- Copyright (C) 1998, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -149,7 +149,7 @@
+ do { \
+ char __buf[20]; \
+ char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \
+- int __len = (Len); \
++ size_t __len = (Len); \
+ char *__dest = (Buf); \
+ while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \
+ *__dest++ = *__cp++; \
+--- glibc-2.3.2/sysdeps/i386/i686/memcpy.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i686/memcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* Copy memory block and return pointer to beginning of destination block
+ For Intel 80x86, x>=6.
+ This file is part of the GNU C Library.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -59,3 +59,4 @@
+ LEAVE
+ RET_PTR
+ END (BP_SYM (memcpy))
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/i386/i686/memmove.S 2003-02-04 02:11:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i686/memmove.S 2003-05-12 12:13:07.000000000 -0400
+@@ -92,3 +92,4 @@
+ LEAVE
+ RET_PTR
+ END (BP_SYM (memmove))
++libc_hidden_builtin_def (memmove)
+--- glibc-2.3.2/sysdeps/i386/i686/memset.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/i686/memset.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* memset/bzero -- set memory area to CH/0
+ Highly optimized version for ix86, x>=6.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -93,3 +93,4 @@
+ RET_PTR
+ #endif
+ END (BP_SYM (memset))
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/i386/i686/strcmp.S 2002-03-11 20:28:14.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i686/strcmp.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Highly optimized version for ix86, x>=6.
+- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999.
+
+@@ -69,3 +69,4 @@
+ LEAVE
+ ret
+ END (BP_SYM (strcmp))
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/i386/i686/tst-stack-align.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/i686/tst-stack-align.h 2003-09-17 04:37:57.000000000 -0400
+@@ -0,0 +1,45 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdio.h>
++#include <stdint.h>
++#ifndef __SSE__
++#include_next <tst-stack-align.h>
++#else
++#include <xmmintrin.h>
++
++#define TEST_STACK_ALIGN() \
++ ({ \
++ __m128 _m; \
++ double _d = 12.0; \
++ long double _ld = 15.0; \
++ int _ret = 0; \
++ printf ("__m128: %p %zu\n", &_m, __alignof (__m128)); \
++ if ((((uintptr_t) &_m) & (__alignof (__m128) - 1)) != 0) \
++ _ret = 1; \
++ \
++ printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \
++ if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \
++ _ret = 1; \
++ \
++ printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \
++ if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \
++ _ret = 1; \
++ _ret; \
++ })
++#endif
+--- glibc-2.3.2/sysdeps/i386/memchr.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/memchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* memchr (str, chr, len) -- Return pointer to first occurrence of CHR in STR less
+ than LEN.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994-1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+ Optimised a little by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+@@ -330,3 +330,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/i386/memset.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/memset.c 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Set a block of memory to some byte value.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1991, 1992, 1993, 1997, 1998 Free Software Foundation, Inc.
++ Copyright (C) 1991,1992,1993,1997,1998,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+@@ -79,6 +79,7 @@
+
+ return dstpp;
+ }
++libc_hidden_builtin_def (memset)
+
+ #else
+ #include <sysdeps/generic/memset.c>
+--- glibc-2.3.2/sysdeps/i386/setfpucw.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/setfpucw.c 2003-07-22 18:21:12.000000000 -0400
+@@ -0,0 +1,55 @@
++/* Set the FPU control word for x86.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <math.h>
++#include <fpu_control.h>
++#include <fenv.h>
++#include <unistd.h>
++#include <ldsodefs.h>
++#include <dl-procinfo.h>
++
++void
++__setfpucw (fpu_control_t set)
++{
++ fpu_control_t cw;
++
++ /* Fetch the current control word. */
++ __asm__ ("fnstcw %0" : "=m" (*&cw));
++
++ /* Preserve the reserved bits, and set the rest as the user
++ specified (or the default, if the user gave zero). */
++ cw &= _FPU_RESERVED;
++ cw |= set & ~_FPU_RESERVED;
++
++ __asm__ ("fldcw %0" : : "m" (*&cw));
++
++ /* If the CPU supports SSE, we set the MXCSR as well. */
++ if ((GL(dl_hwcap) & HWCAP_I386_XMM) != 0)
++ {
++ unsigned int xnew_exc;
++
++ /* Get the current MXCSR. */
++ __asm__ ("stmxcsr %0" : "=m" (*&xnew_exc));
++
++ xnew_exc &= ~((0xc00 << 3) | (FE_ALL_EXCEPT << 7));
++ xnew_exc |= ((set & 0xc00) << 3) | ((set & FE_ALL_EXCEPT) << 7);
++
++ __asm__ ("ldmxcsr %0" : : "m" (*&xnew_exc));
++ }
++}
+--- glibc-2.3.2/sysdeps/i386/strchr.S 2002-08-11 20:17:45.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/strchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+ Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+@@ -289,3 +289,4 @@
+ END (BP_SYM (strchr))
+
+ weak_alias (BP_SYM (strchr), BP_SYM (index))
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/i386/strcspn.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/strcspn.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strcspn (str, ss) -- Return the length of the initial segment of STR
+ which contains no characters from SS.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994,1995,1996,1997,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+ Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+@@ -179,3 +179,4 @@
+ LEAVE
+ ret
+ END (BP_SYM (strcspn))
++libc_hidden_builtin_def (strcspn)
+--- glibc-2.3.2/sysdeps/i386/string-inlines.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/string-inlines.c 2003-04-29 18:49:14.000000000 -0400
+@@ -0,0 +1,189 @@
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* <bits/string.h> and <bits/string2.h> declare some extern inline
++ functions. These functions are declared additionally here if
++ inlining is not possible. */
++
++#undef __USE_STRING_INLINES
++#define __USE_STRING_INLINES
++#define _FORCE_INLINES
++#define __STRING_INLINE /* empty */
++#define __NO_INLINE__
++
++#include <string.h>
++#undef index
++#undef rindex
++
++#undef __NO_INLINE__
++#include <bits/string.h>
++#include <bits/string2.h>
++
++/* Functions which are inlines in i486 but not i386. */
++void *
++__memcpy_by2 (void *dest, const void *src, size_t n)
++{
++ return memcpy (dest, src, n);
++}
++strong_alias (__memcpy_by2, __memcpy_by4)
++strong_alias (__memcpy_by2, __memcpy_g)
++strong_alias (__memcpy_by2, __memcpy_g_internal)
++
++void *
++__memset_ccn_by2 (void *s, unsigned int c, size_t n)
++{
++ return memset (s, c & 0xff, n);
++}
++strong_alias (__memset_ccn_by2, __memset_ccn_by4)
++
++void *
++__memset_gcn_by2 (void *s, int c, size_t n)
++{
++ return memset (s, c, n);
++}
++strong_alias (__memset_gcn_by2, __memset_gcn_by4)
++
++size_t
++__strlen_g (const char *s)
++{
++ return strlen (s);
++}
++
++char *
++__strcpy_g (char *d, const char *s)
++{
++ return strcpy (d, s);
++}
++
++char *
++__mempcpy_by2 (char *d, const char *s, size_t n)
++{
++ return mempcpy (d, s, n);
++}
++strong_alias (__mempcpy_by2, __mempcpy_by4)
++strong_alias (__mempcpy_by2, __mempcpy_byn)
++
++char *
++__stpcpy_g (char *d, const char *s)
++{
++ return stpcpy (d, s);
++}
++
++char *
++__strncpy_by2 (char *d, const char s[], size_t srclen, size_t n)
++{
++ return strncpy (d, s, n);
++}
++strong_alias (__strncpy_by2, __strncpy_by4)
++strong_alias (__strncpy_by2, __strncpy_byn)
++
++char *
++__strncpy_gg (char *d, const char *s, size_t n)
++{
++ return strncpy (d, s, n);
++}
++
++char *
++__strcat_c (char *d, const char s[], size_t srclen)
++{
++ return strcat (d, s);
++}
++
++char *
++__strcat_g (char *d, const char *s)
++{
++ return strcat (d, s);
++}
++
++char *
++__strncat_g (char *d, const char s[], size_t n)
++{
++ return strncat (d, s, n);
++}
++
++int
++__strcmp_gg (const char *s1, const char *s2)
++{
++ return strcmp (s1, s2);
++}
++
++int
++__strncmp_g (const char *s1, const char *s2, size_t n)
++{
++ return strncmp (s1, s2, n);
++}
++
++char *
++__strrchr_c (const char *s, int c)
++{
++ return strrchr (s, c >> 8);
++}
++
++char *
++__strrchr_g (const char *s, int c)
++{
++ return strrchr (s, c);
++}
++
++size_t
++__strcspn_cg (const char *s, const char reject[], size_t reject_len)
++{
++ return strcspn (s, reject);
++}
++
++size_t
++__strcspn_g (const char *s, const char *reject)
++{
++ return strcspn (s, reject);
++}
++
++size_t
++__strspn_cg (const char *s, const char accept[], size_t accept_len)
++{
++ return strspn (s, accept);
++}
++
++size_t
++__strspn_g (const char *s, const char *accept)
++{
++ return strspn (s, accept);
++}
++
++char *
++__strpbrk_cg (const char *s, const char accept[], size_t accept_len)
++{
++ return strpbrk (s, accept);
++}
++
++char *
++__strpbrk_g (const char *s, const char *accept)
++{
++ return strpbrk (s, accept);
++}
++
++char *
++__strstr_cg (const char *haystack, const char needle[], size_t needle_len)
++{
++ return strstr (haystack, needle);
++}
++
++char *
++__strstr_g (const char *haystack, const char needle[])
++{
++ return strstr (haystack, needle);
++}
+--- glibc-2.3.2/sysdeps/i386/strlen.c 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/strlen.c 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Determine the length of a string. For Intel 80x86, x>=3.
+- Copyright (C) 1991, 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
++ Copyright (C) 1991,1992,1993,1996,1997,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+@@ -33,3 +33,4 @@
+
+ return -2 - cnt;
+ }
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/i386/strpbrk.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/strpbrk.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strcspn (str, ss) -- Return the length of the initial segement of STR
+ which contains no characters from SS.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+ Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+ This file is part of the GNU C Library.
+@@ -188,3 +188,4 @@
+ LEAVE
+ RET_PTR
+ END (BP_SYM (strpbrk))
++libc_hidden_builtin_def (strpbrk)
+--- glibc-2.3.2/sysdeps/i386/strrchr.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/strrchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strrchr (str, ch) -- Return pointer to last occurrence of CH in STR.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+ Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+@@ -331,3 +331,4 @@
+ END (BP_SYM (strrchr))
+
+ weak_alias (BP_SYM (strrchr), BP_SYM (rindex))
++libc_hidden_builtin_def (strrchr)
+--- glibc-2.3.2/sysdeps/i386/strspn.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/i386/strspn.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strcspn (str, ss) -- Return the length of the initial segment of STR
+ which contains only characters from SS.
+ For Intel 80x86, x>=3.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+ Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
+@@ -179,3 +179,4 @@
+ LEAVE
+ ret
+ END (BP_SYM (strspn))
++libc_hidden_builtin_def (strspn)
+--- glibc-2.3.2/sysdeps/i386/sysdep.h 2003-01-09 14:43:34.000000000 -0500
++++ glibc-2.3.2/sysdeps/i386/sysdep.h 2003-03-15 15:02:16.000000000 -0500
+@@ -64,6 +64,14 @@
+ ASM_SIZE_DIRECTIVE(name) \
+ STABS_FUN_END(name)
+
++#ifdef HAVE_CPP_ASM_DEBUGINFO
++/* Disable that goop, because we just pass -g through to the assembler
++ and it generates proper line number information directly. */
++# define STABS_CURRENT_FILE1(name)
++# define STABS_CURRENT_FILE(name)
++# define STABS_FUN(name)
++# define STABS_FUN_END(name)
++#else
+ /* Remove the following two lines once the gdb bug is fixed. */
+ #define STABS_CURRENT_FILE(name) \
+ STABS_CURRENT_FILE1 (#name)
+@@ -77,6 +85,7 @@
+ .stabs #namestr,36,0,0,name;
+ #define STABS_FUN_END(name) \
+ 1: .stabs "",36,0,0,1b-name;
++#endif
+
+ /* If compiled for profiling, call `mcount' at the start of each function. */
+ #ifdef PROF
+--- glibc-2.3.2/sysdeps/ia64/atomicity.h 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,48 +0,0 @@
+-/* Low-level functions for atomic operations. IA-64 version.
+- Copyright (C) 2001 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-#include <ia64intrin.h>
+-
+-
+-static inline uint32_t
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, uint32_t val)
+-{
+- return __sync_fetch_and_add (mem, val);
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- __sync_fetch_and_add (mem, val);
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- return __sync_bool_compare_and_swap (p, oldval, newval);
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/ia64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/bits/atomic.h 2003-08-21 08:37:09.000000000 -0400
+@@ -0,0 +1,126 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++#include <ia64intrin.h>
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
++ (!__sync_bool_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
++ (int) (long) (newval)))
++
++#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
++ (!__sync_bool_compare_and_swap_di ((long *) (mem), (long) (oldval), \
++ (long) (newval)))
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ __sync_val_compare_and_swap_si ((int *) (mem), (int) (long) (oldval), \
++ (int) (long) (newval))
++
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ __sync_val_compare_and_swap_di ((long *) (mem), (long) (oldval), \
++ (long) (newval))
++
++/* Atomically store newval and return the old value. */
++#define atomic_exchange_acq(mem, value) \
++ __sync_lock_test_and_set (mem, value)
++
++#define atomic_exchange_rel(mem, value) \
++ (__sync_synchronize (), __sync_lock_test_and_set (mem, value))
++
++
++#define atomic_exchange_and_add(mem, value) \
++ ({ __typeof (*mem) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __sync_fetch_and_add_si ((int *) (mem), (int) (value)); \
++ else if (sizeof (*mem) == 8) \
++ __result = __sync_fetch_and_add_di ((long *) (mem), (long) (value)); \
++ else \
++ abort (); \
++ __result; })
++
++#define atomic_decrement_if_positive(mem) \
++ ({ __typeof (*mem) __oldval, __val; \
++ __typeof (mem) __memp = (mem); \
++ \
++ __val = (*__memp); \
++ do \
++ { \
++ __oldval = __val; \
++ if (__builtin_expect (__val <= 0, 0)) \
++ break; \
++ __val = atomic_compare_and_exchange_val_acq (__memp, __oldval - 1, \
++ __oldval); \
++ } \
++ while (__builtin_expect (__val != __oldval, 0)); \
++ __oldval; })
++
++#define atomic_bit_test_set(mem, bit) \
++ ({ __typeof (*mem) __oldval, __val; \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*mem) __mask = ((__typeof (*mem)) 1 << (bit)); \
++ \
++ __val = (*__memp); \
++ do \
++ { \
++ __oldval = __val; \
++ __val = atomic_compare_and_exchange_val_acq (__memp, \
++ __oldval | __mask, \
++ __oldval); \
++ } \
++ while (__builtin_expect (__val != __oldval, 0)); \
++ __oldval & __mask; })
++
++#define atomic_full_barrier() __sync_synchronize ()
+--- glibc-2.3.2/sysdeps/ia64/dl-fptr.c 2002-11-13 16:41:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/dl-fptr.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,288 +0,0 @@
+-/* Manage function descriptors. IA-64 version.
+- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <ia64intrin.h>
+-#include <unistd.h>
+-#include <string.h>
+-#include <sys/param.h>
+-#include <sys/mman.h>
+-#include <link.h>
+-#include <ldsodefs.h>
+-#include <elf/dynamic-link.h>
+-#include <dl-machine.h>
+-#ifdef _LIBC_REENTRANT
+-# include <ia64intrin.h>
+-# include <signal.h>
+-# include <time.h>
+-#endif
+-
+-Elf64_Addr __ia64_boot_fptr_table[IA64_BOOT_FPTR_TABLE_LEN];
+-
+-static struct local
+- {
+- struct ia64_fdesc_table *root;
+- struct ia64_fdesc *free_list;
+- unsigned int npages; /* # of pages to allocate */
+-#ifdef _LIBC_REENTRANT
+- volatile int lock;
+- sigset_t full_sigset;
+-#endif
+- /* the next to members MUST be consecutive! */
+- struct ia64_fdesc_table boot_table;
+- struct ia64_fdesc boot_fdescs[1024];
+- }
+-local =
+- {
+- root: &local.boot_table,
+- npages: 2,
+- boot_table:
+- {
+- len: sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]),
+- first_unused: 0
+- }
+- };
+-
+-/* Locking is tricky: we may get a signal while holding the lock and
+- the signal handler may end up calling into the dynamic loader
+- again. Also, if a real-time process spins on the lock, a
+- non-realtime process may never get the chance to release it's lock,
+- unless the realtime process relinquishes the CPU from time to time.
+- Hence we (a) block signals before acquiring the lock and (b) do a
+- nanosleep() when we detect prolongued contention. */
+-#ifdef _LIBC_REENTRANT
+-# define lock(l) \
+-{ \
+- sigset_t _saved_set; \
+- int i = 10000; \
+- if (!__sigismember (&(l)->full_sigset, SIGINT)) \
+- __sigfillset (&(l)->full_sigset); \
+- \
+- while (__sync_lock_test_and_set (&(l)->lock, 1)) \
+- { \
+- struct timespec ts; \
+- if (i > 0) \
+- { \
+- --i; \
+- continue; \
+- } \
+- ts.tv_sec = 0; \
+- ts.tv_nsec = 1*1000*1000; \
+- __nanosleep (&ts, NULL); \
+- } \
+- __sigprocmask (SIG_BLOCK, &(l)->full_sigset, &_saved_set);
+-# define unlock(l) \
+- __sigprocmask (SIG_SETMASK, &_saved_set, NULL); \
+- __sync_lock_release (&(l)->lock); \
+-}
+-#else
+-# define lock(l)
+-# define unlock(l)
+-#endif
+-
+-/* Create a new fdesc table and return a pointer to the first fdesc
+- entry. The fdesc lock must have been acquired already. */
+-
+-static struct ia64_fdesc *
+-new_fdesc_table (struct local *l)
+-{
+- size_t size = l->npages * GL(dl_pagesize);
+- struct ia64_fdesc_table *new_table;
+- struct ia64_fdesc *fdesc;
+-
+- l->npages += l->npages;
+- new_table = __mmap (0, size, PROT_READ | PROT_WRITE,
+- MAP_ANON | MAP_PRIVATE, -1, 0);
+- if (new_table == MAP_FAILED)
+- _dl_signal_error (errno, NULL, NULL, "cannot map pages for fdesc table");
+-
+- new_table->len = (size - sizeof (*new_table)) / sizeof (struct ia64_fdesc);
+- fdesc = &new_table->fdesc[0];
+- new_table->first_unused = 1;
+- new_table->next = l->root;
+- l->root = new_table;
+- return fdesc;
+-}
+-
+-static Elf64_Addr
+-make_fdesc (Elf64_Addr ip, Elf64_Addr gp)
+-{
+- struct ia64_fdesc *fdesc = NULL;
+- struct ia64_fdesc_table *t;
+- unsigned int old;
+- struct local *l;
+-
+- asm ("movl %0 = @gprel (local);; add %0 = %0, gp" : "=&r"(l));
+-
+- t = l->root;
+- while (1)
+- {
+- old = t->first_unused;
+- if (old >= t->len)
+- break;
+- else if (__sync_bool_compare_and_swap (&t->first_unused, old, old + 1))
+- {
+- fdesc = &t->fdesc[old];
+- goto install;
+- }
+- }
+-
+- lock (l);
+- {
+- if (l->free_list)
+- {
+- fdesc = l->free_list; /* get it from free-list */
+- l->free_list = (struct ia64_fdesc *) fdesc->ip;
+- }
+- else
+- fdesc = new_fdesc_table (l); /* create new fdesc table */
+- }
+- unlock (l);
+-
+- install:
+- fdesc->ip = ip;
+- fdesc->gp = gp;
+-
+- return (Elf64_Addr) fdesc;
+-}
+-
+-static inline Elf64_Addr *
+-make_fptr_table (struct link_map *map)
+-{
+- const Elf64_Sym *symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+- Elf64_Addr *fptr_table;
+- size_t size;
+- size_t len;
+-
+- /* XXX Apparently the only way to find out the size of the dynamic
+- symbol section is to assume that the string table follows right
+- afterwards... */
+- len = ((strtab - (char *) symtab) / map->l_info[DT_SYMENT]->d_un.d_val);
+- size = ((len * sizeof (fptr_table[0]) + GL(dl_pagesize) - 1)
+- & -GL(dl_pagesize));
+- /* XXX We don't support here in the moment systems without MAP_ANON.
+- There probably are none for IA-64. In case this is proven wrong
+- we will have to open /dev/null here and use the file descriptor
+- instead of the hard-coded -1. */
+- fptr_table = __mmap (NULL, size, PROT_READ | PROT_WRITE,
+- MAP_ANON | MAP_PRIVATE, -1, 0);
+- if (fptr_table == MAP_FAILED)
+- _dl_signal_error (errno, NULL, NULL, "cannot map pages for fptr table");
+-
+- map->l_mach.fptr_table_len = len;
+- map->l_mach.fptr_table = fptr_table;
+- return fptr_table;
+-}
+-
+-Elf64_Addr
+-__ia64_make_fptr (struct link_map *map, const Elf64_Sym *sym, Elf64_Addr ip)
+-{
+- Elf64_Addr *ftab = map->l_mach.fptr_table;
+- const Elf64_Sym *symtab;
+- Elf_Symndx symidx;
+-
+- if (__builtin_expect (!map->l_mach.fptr_table, 0))
+- ftab = make_fptr_table (map);
+-
+- symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+- symidx = sym - symtab;
+-
+- if (symidx >= map->l_mach.fptr_table_len)
+- _dl_signal_error (0, NULL, NULL,
+- "internal error: symidx out of range of fptr table");
+-
+- if (!ftab[symidx])
+- {
+- /* GOT has already been relocated in elf_get_dynamic_info -
+- don't try to relocate it again. */
+- ftab[symidx] = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr);
+-#if 0
+- {
+- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+- struct local *l;
+-
+- asm ("addl %0 = @gprel (local), gp" : "=r" (l));
+- if (l->root != &l->boot_table || l->boot_table.first_unused > 20)
+- _dl_debug_printf ("created fdesc symbol `%s' at %lx\n",
+- strtab + sym->st_name, ftab[symidx]);
+- }
+-#endif
+- }
+-
+- return ftab[symidx];
+-}
+-
+-void
+-_dl_unmap (struct link_map *map)
+-{
+- Elf64_Addr *ftab = map->l_mach.fptr_table;
+- struct ia64_fdesc *head = NULL, *tail = NULL;
+- size_t i;
+-
+- __munmap ((void *) map->l_map_start, map->l_map_end - map->l_map_start);
+-
+- if (!ftab)
+- return;
+-
+- /* String together the fdesc structures that are being freed. */
+- for (i = 0; i < map->l_mach.fptr_table_len; ++i)
+- {
+- if (ftab[i])
+- {
+- *(struct ia64_fdesc **) ftab[i] = head;
+- head = (struct ia64_fdesc *) ftab[i];
+- if (!tail)
+- tail = head;
+- }
+- }
+-
+- /* Prepend the new list to the free_list: */
+- if (tail)
+- {
+- lock (&local);
+- {
+- *(struct ia64_fdesc **) tail = local.free_list;
+- local.free_list = head;
+- }
+- unlock (&local);
+- }
+-
+- __munmap (ftab,
+- map->l_mach.fptr_table_len * sizeof (map->l_mach.fptr_table[0]));
+- map->l_mach.fptr_table = NULL;
+-}
+-
+-Elf64_Addr
+-_dl_lookup_address (const void *address)
+-{
+- Elf64_Addr addr = (Elf64_Addr) address;
+- struct ia64_fdesc_table *t;
+- unsigned long int i;
+-
+- for (t = local.root; t != NULL; t = t->next)
+- {
+- i = (struct ia64_fdesc *) addr - &t->fdesc[0];
+- if (i < t->first_unused && addr == (Elf64_Addr) &t->fdesc[i])
+- {
+- addr = t->fdesc[i].ip;
+- break;
+- }
+- }
+- return addr;
+-}
+--- glibc-2.3.2/sysdeps/ia64/dl-fptr.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/dl-fptr.h 2003-08-21 08:37:09.000000000 -0400
+@@ -0,0 +1,36 @@
++/* Function descriptors. IA64 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef dl_ia64_fptr_h
++#define dl_ia64_fptr_h 1
++
++#include <ia64intrin.h>
++#include <sysdeps/generic/dl-fptr.h>
++
++#define COMPARE_AND_SWAP(ptr, old, new) \
++ __sync_bool_compare_and_swap (ptr, old, new)
++
++/* There are currently 123 dynamic symbols in ld.so.
++ ELF_MACHINE_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
++#define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 200
++
++#define ELF_MACHINE_LOAD_ADDRESS(var, symbol) \
++ asm ("movl %0 = @gprel (" #symbol ");; add %0 = %0, gp" : "=&r" (var));
++
++#endif /* !dl_ia64_fptr_h */
+--- glibc-2.3.2/sysdeps/ia64/dl-lookupcfg.h 2002-01-29 19:22:50.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/dl-lookupcfg.h 2003-04-12 11:39:45.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Configuration of lookup functions.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,11 +23,13 @@
+ #define ELF_FUNCTION_PTR_IS_SPECIAL
+ #define DL_UNMAP_IS_SPECIAL
+
++/* We do not support copy relocations for IA-64. */
++#define DL_NO_COPY_RELOCS
++
+ /* Forward declaration. */
+ struct link_map;
+
+-extern void *_dl_symbol_address (const struct link_map *map,
+- const Elf64_Sym *ref);
++extern void *_dl_symbol_address (struct link_map *map, const Elf64_Sym *ref);
+
+ #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref)
+
+--- glibc-2.3.2/sysdeps/ia64/dl-machine.h 2003-01-12 03:37:35.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -26,44 +26,22 @@
+ #include <string.h>
+ #include <link.h>
+ #include <errno.h>
++#include <dl-fptr.h>
+ #include <tls.h>
+
+ /* Translate a processor specific dynamic tag to the index
+ in l_info array. */
+ #define DT_IA_64(x) (DT_IA_64_##x - DT_LOPROC + DT_NUM)
+
+-/* There are currently 123 dynamic symbols in ld.so.
+- IA64_BOOT_FPTR_TABLE_LEN needs to be at least that big. */
+-#define IA64_BOOT_FPTR_TABLE_LEN 200
+-
+-/* An FDESC is a function descriptor. */
+-
+-struct ia64_fdesc
+- {
+- Elf64_Addr ip; /* code entry point */
+- Elf64_Addr gp; /* global pointer */
+- };
+-
+-struct ia64_fdesc_table
+- {
+- struct ia64_fdesc_table *next;
+- unsigned int len; /* # of entries in fdesc table */
+- volatile unsigned int first_unused; /* index of first available entry */
+- struct ia64_fdesc fdesc[0];
+- };
+-
+-extern Elf64_Addr __ia64_make_fptr (struct link_map *, const Elf64_Sym *,
+- Elf64_Addr);
+-
+ static inline void
+ __ia64_init_bootstrap_fdesc_table (struct link_map *map)
+ {
+ Elf64_Addr *boot_table;
+
+ /* careful: this will be called before got has been relocated... */
+- asm (";; addl %0 = @gprel (__ia64_boot_fptr_table), gp" : "=r"(boot_table));
++ asm (";; addl %0 = @gprel (_dl_boot_fptr_table), gp" : "=r"(boot_table));
+
+- map->l_mach.fptr_table_len = IA64_BOOT_FPTR_TABLE_LEN;
++ map->l_mach.fptr_table_len = ELF_MACHINE_BOOT_FPTR_TABLE_LEN;
+ map->l_mach.fptr_table = boot_table;
+ }
+
+@@ -142,7 +120,7 @@
+
+ /* This function will be called to perform the relocation. */
+ if (!profile)
+- doit = (Elf64_Addr) ((struct ia64_fdesc *) &_dl_runtime_resolve)->ip;
++ doit = (Elf64_Addr) ((struct fdesc *) &_dl_runtime_resolve)->ip;
+ else
+ {
+ if (_dl_name_match_p (GL(dl_profile), l))
+@@ -151,7 +129,7 @@
+ want profiling and the timers are started. */
+ GL(dl_profile_map) = l;
+ }
+- doit = (Elf64_Addr) ((struct ia64_fdesc *) &_dl_runtime_profile)->ip;
++ doit = (Elf64_Addr) ((struct fdesc *) &_dl_runtime_profile)->ip;
+ }
+
+ reserve[1] = doit;
+@@ -301,8 +279,10 @@
+ "_start:\n" \
+ "0: { .mii\n" \
+ " .prologue\n" \
+-" .save ar.pfs, r32\n" \
+ " .save rp, r0\n" \
++" .body\n" \
++" .prologue\n" \
++" .save ar.pfs, r32\n" \
+ " alloc loc0 = ar.pfs, 0, 3, 4, 0\n" \
+ " .body\n" \
+ " mov r2 = ip\n" \
+@@ -332,8 +312,10 @@
+ " .proc _dl_start_user#\n" \
+ "_dl_start_user:\n" \
+ " .prologue\n" \
+-" .save ar.pfs, r32\n" \
+ " .save rp, r0\n" \
++" .body\n" \
++" .prologue\n" \
++" .save ar.pfs, r32\n" \
+ " .body\n" \
+ " { .mii\n" \
+ " /* Save the pointer to the user entry point fptr in loc2. */\n" \
+@@ -525,8 +507,9 @@
+ const Elf64_Rela *reloc,
+ const Elf64_Sym *sym,
+ const struct r_found_version *version,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
+ Elf64_Addr value;
+
+@@ -575,7 +558,7 @@
+ return;
+ }
+ else if (R_IA64_TYPE (r_type) == R_IA64_TYPE (R_IA64_FPTR64LSB))
+- value = __ia64_make_fptr (sym_map, sym, value);
++ value = _dl_make_fptr (sym_map, sym, value);
+ else if (R_IA64_TYPE (r_type) == R_IA64_TYPE (R_IA64_PCREL64LSB))
+ value -= (Elf64_Addr) reloc_addr & -16;
+ #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || defined USE___THREAD)
+@@ -583,7 +566,7 @@
+ # ifdef RTLD_BOOTSTRAP
+ /* During startup the dynamic linker is always index 1. */
+ value = 1;
+-# else
++# else
+ /* Get the information from the link map returned by the
+ resolv function. */
+ value = sym_map->l_tls_modid;
+@@ -599,7 +582,7 @@
+ }
+ #endif
+ else
+- assert (! "unexpected dynamic reloc type");
++ _dl_reloc_bad_type (map, r_type, 0);
+ }
+ else
+ value = 0;
+@@ -616,7 +599,7 @@
+ reloc_addr[1] = 0;
+ }
+ else
+- assert (! "unexpected dynamic reloc format");
++ _dl_reloc_bad_type (map, r_type, 0);
+ }
+
+ /* Let do-rel.h know that on IA-64 if l_addr is 0, all RELATIVE relocs
+@@ -625,8 +608,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ /* ??? Ignore MSB and Instruction format for now. */
+ assert (ELF64_R_TYPE (reloc->r_info) == R_IA64_REL64LSB);
+
+@@ -649,7 +633,7 @@
+ else if (r_type == R_IA64_NONE)
+ return;
+ else
+- assert (! "unexpected PLT reloc type");
++ _dl_reloc_bad_type (map, r_type, 1);
+ }
+
+ #endif /* RESOLVE_MAP */
+--- glibc-2.3.2/sysdeps/ia64/dl-symaddr.c 2001-07-25 19:53:58.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/dl-symaddr.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,33 +0,0 @@
+-/* Get the symbol address. IA-64 version.
+- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <ldsodefs.h>
+-#include <dl-machine.h>
+-
+-void *
+-_dl_symbol_address (const struct link_map *map, const Elf64_Sym *ref)
+-{
+- Elf64_Addr value = (map ? map->l_addr : 0) + ref->st_value;
+-
+- /* On ia64, we have to return the pointer to function descriptor. */
+- if (ELFW(ST_TYPE) (ref->st_info) == STT_FUNC)
+- return (void *) __ia64_make_fptr (map, ref, value);
+- else
+- return (void *) value;
+-}
+--- glibc-2.3.2/sysdeps/ia64/elf/initfini.c 2002-11-08 14:35:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/elf/initfini.c 2003-06-03 09:36:28.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Special .init and .fini section support for ia64.
+- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -46,6 +46,7 @@
+ --davidm 02/10/29 */
+
+ static void
++__attribute__ ((used))
+ gmon_initializer (void)
+ {
+ extern void weak_function __gmon_start__ (void);
+--- glibc-2.3.2/sysdeps/ia64/elf/start.S 2002-12-09 22:41:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/elf/start.S 2003-04-12 11:39:45.000000000 -0400
+@@ -40,6 +40,9 @@
+ .type _start,@function
+ _start:
+ .prologue
++ .save rp, r0
++ .body
++ .prologue
+ { .mlx
+ alloc r2 = ar.pfs,0,0,7,0
+ movl r3 = FPSR_DEFAULT
+@@ -76,8 +79,7 @@
+ { .mmi
+ ld8 out3 = [out3] /* pointer to `init' function descriptor */
+ ld8 out4 = [out4] /* pointer to `fini' function descriptor */
+- .save rp, r4
+- mov r4 = r0 /* terminate unwind chain with a NULL return-pointer */
++ nop 0
+ }
+ .body
+ { .mib
+--- glibc-2.3.2/sysdeps/ia64/fpu/libm-test-ulps 2002-06-20 18:06:37.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
+@@ -1,10 +1,5 @@
+ # Begin of automatic generation
+
+-# acos
+-Test "acos (0.0625) == 1.50825556499840522843072005474337068":
+-ildouble: 622
+-ldouble: 622
+-
+ # cacos
+ Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
+ float: 1
+@@ -84,7 +79,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ ildouble: 1
+@@ -99,7 +94,7 @@
+ ldouble: 1
+
+ # ccosh
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -122,8 +117,6 @@
+ Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
+ float: 1
+ ifloat: 1
+-ildouble: 202
+-ldouble: 202
+ Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
+ ildouble: 1
+ ldouble: 1
+@@ -146,7 +139,7 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ idouble: 1
+ ildouble: 1
+@@ -223,6 +216,9 @@
+ ifloat: 1
+
+ # cos
++Test "cos (0.80190127184058835) == 0.69534156199418473":
++double: 1
++idouble: 1
+ Test "cos (M_PI_6l * 2.0) == 0.5":
+ double: 1
+ float: 1
+@@ -247,8 +243,6 @@
+ Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+ float: 1
+ ifloat: 1
+-ildouble: 587
+-ldouble: 587
+ Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+ float: 1
+ ifloat: 1
+@@ -259,8 +253,8 @@
+ float: 4
+ idouble: 1
+ ifloat: 4
+-ildouble: 768
+-ldouble: 768
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
+ ildouble: 1
+ ldouble: 1
+@@ -272,8 +266,8 @@
+ float: 3
+ idouble: 2
+ ifloat: 3
+-ildouble: 370
+-ldouble: 370
++ildouble: 3
++ldouble: 3
+ Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
+ ildouble: 1
+ ldouble: 1
+@@ -308,10 +302,10 @@
+ ifloat: 1
+
+ # csinh
+-Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -336,14 +330,16 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+-ildouble: 436
+-ldouble: 436
+-Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++ildouble: 2
++ldouble: 2
++Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ float: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+ Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+ ildouble: 1
+ ldouble: 1
+@@ -354,10 +350,10 @@
+ ifloat: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ ildouble: 1
+ ldouble: 1
+-Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ float: 1
+ ifloat: 1
+ ildouble: 24
+@@ -584,12 +580,12 @@
+ Test "lgamma (-0.5) == log(2*sqrt(pi))":
+ ildouble: 1
+ ldouble: 1
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -610,6 +606,9 @@
+ ldouble: 1
+
+ # sincos
++Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
++double: 1
++idouble: 1
+ Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+ double: 1
+ float: 1
+@@ -646,7 +645,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -794,10 +793,6 @@
+ idouble: 1
+
+ # Maximal error of functions:
+-Function: "acos":
+-ildouble: 622
+-ldouble: 622
+-
+ Function: Imaginary part of "cacos":
+ float: 1
+ ifloat: 1
+@@ -889,8 +884,6 @@
+ Function: Real part of "cexp":
+ float: 1
+ ifloat: 1
+-ildouble: 202
+-ldouble: 202
+
+ Function: Imaginary part of "cexp":
+ float: 1
+@@ -933,8 +926,8 @@
+ float: 5
+ idouble: 2
+ ifloat: 5
+-ildouble: 768
+-ldouble: 768
++ildouble: 3
++ldouble: 3
+
+ Function: Imaginary part of "cpow":
+ double: 2
+@@ -977,14 +970,16 @@
+ Function: Real part of "ctan":
+ double: 1
+ idouble: 1
+-ildouble: 436
+-ldouble: 436
++ildouble: 2
++ldouble: 2
+
+ Function: Imaginary part of "ctan":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ Function: Real part of "ctanh":
+ double: 1
+--- glibc-2.3.2/sysdeps/ia64/hp-timing.h 2002-08-24 23:59:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/hp-timing.h 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* High precision, low overhead timing functions. IA-64 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
+
+@@ -86,7 +86,7 @@
+ is not correct in some situations. The solution is to read again.
+ For now we always do this until we know how to recognize a fixed
+ processor implementation. */
+-#define REPEAT_READ(val) __builtin_expect ((int) val == -1, 0)
++#define REPEAT_READ(val) __builtin_expect ((long int) val == -1, 0)
+
+ /* That's quite simple. Use the `ar.itc' instruction. */
+ #define HP_TIMING_NOW(Var) \
+--- glibc-2.3.2/sysdeps/ia64/memccpy.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/memccpy.S 2003-09-19 22:37:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the memccpy() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -46,6 +46,7 @@
+ #define tmp r23
+ #define char r24
+ #define charx8 r25
++#define saved_ec r26
+ #define sh2 r28
+ #define sh1 r29
+ #define loopcnt r30
+@@ -56,25 +57,27 @@
+ alloc r2 = ar.pfs, 4, 40 - 4, 0, 40
+
+ #include "softpipe.h"
+- .rotr r[MEMLAT + 3], tmp1[4], tmp2[4], val[4], tmp3[2], pos0[2]
++ .rotr r[MEMLAT + 7], tmp1[4], tmp2[4], val[4], tmp3[2], pos0[2]
+ .rotp p[MEMLAT + 6 + 1]
+
+ mov ret0 = r0 // return NULL if no match
+ .save pr, saved_pr
+ mov saved_pr = pr // save the predicate registers
++ mov dest = in0 // dest
+ .save ar.lc, saved_lc
+ mov saved_lc = ar.lc // save the loop counter
++ mov saved_ec = ar.ec // save the loop counter
+ .body
+- mov dest = in0 // dest
+ mov src = in1 // src
+ extr.u char = in2, 0, 8 // char
+ mov len = in3 // len
+ sub tmp = r0, in0 // tmp = -dest
+ cmp.ne p7, p0 = r0, r0 // clear p7
+ ;;
+- and loopcnt = 7, tmp // loopcnt = -dest % 8
++ and loopcnt = 7, tmp // loopcnt = -dest % 8
+ cmp.ge p6, p0 = OP_T_THRES, len // is len <= OP_T_THRES
+-(p6) br.cond.spnt .cpyfew // copy byte by byte
++ mov ar.ec = 0 // ec not guaranteed zero on entry
++(p6) br.cond.spnt .cpyfew // copy byte by byte
+ ;;
+ cmp.eq p6, p0 = loopcnt, r0
+ mux1 charx8 = char, @brcst
+@@ -109,26 +112,31 @@
+ cmp.ne p6, p0 = r0, r0 ;; // clear p6
+ .align 32
+ .l2:
+-(p[0]) ld8 r[0] = [asrc], 8 // r[0] = w1
++(p[0]) ld8.s r[0] = [asrc], 8 // r[0] = w1
+ (p[MEMLAT]) shr.u tmp1[0] = r[1 + MEMLAT], sh1 // tmp1 = w0 >> sh1
+ (p[MEMLAT]) shl tmp2[0] = r[0 + MEMLAT], sh2 // tmp2 = w1 << sh2
+ (p[MEMLAT+4]) xor tmp3[0] = val[1], charx8
+ (p[MEMLAT+5]) czx1.r pos0[0] = tmp3[1]
++(p[MEMLAT+6]) chk.s r[6 + MEMLAT], .recovery1 // our data isn't
++ // valid - rollback!
+ (p[MEMLAT+6]) cmp.ne p6, p0 = 8, pos0[1]
+ (p6) br.cond.spnt .gotit
+ (p[MEMLAT+6]) st8 [dest] = val[3], 8 // store val to dest
+ (p[MEMLAT+3]) or val[0] = tmp1[3], tmp2[3] // val = tmp1 | tmp2
+ br.ctop.sptk .l2
+ br.cond.sptk .cpyfew
++
+ .src_aligned:
+ cmp.ne p6, p0 = r0, r0 // clear p6
+ mov ar.ec = MEMLAT + 2 + 1 ;; // set EC
+ .l3:
+-(p[0]) ld8 r[0] = [src], 8
++(p[0]) ld8.s r[0] = [src], 8
+ (p[MEMLAT]) xor tmp3[0] = r[MEMLAT], charx8
+ (p[MEMLAT+1]) czx1.r pos0[0] = tmp3[1]
+ (p[MEMLAT+2]) cmp.ne p7, p0 = 8, pos0[1]
++(p[MEMLAT+2]) chk.s r[MEMLAT+2], .recovery2
+ (p7) br.cond.spnt .gotit
++.back2:
+ (p[MEMLAT+2]) st8 [dest] = r[MEMLAT+2], 8
+ br.ctop.dptk .l3
+ .cpyfew:
+@@ -148,6 +156,7 @@
+ .restore_and_exit:
+ mov pr = saved_pr, -1 // restore the predicate registers
+ mov ar.lc = saved_lc // restore the loop counter
++ mov ar.ec = saved_ec ;; // restore the epilog counter
+ br.ret.sptk.many b0
+ .gotit:
+ .pred.rel "mutex" p6, p7
+@@ -163,4 +172,33 @@
+ mov pr = saved_pr, -1
+ mov ar.lc = saved_lc
+ br.ret.sptk.many b0
++
++.recovery1:
++ adds src = -(MEMLAT + 6 + 1) * 8, asrc
++ mov loopcnt = ar.lc
++ mov tmp = ar.ec ;;
++ sub sh1 = (MEMLAT + 6 + 1), tmp
++ shr.u sh2 = sh2, 3
++ ;;
++ shl loopcnt = loopcnt, 3
++ sub src = src, sh2
++ shl sh1 = sh1, 3
++ shl tmp = tmp, 3
++ ;;
++ add len = len, loopcnt
++ add src = sh1, src ;;
++ add len = tmp, len
++.back1:
++ br.cond.sptk .cpyfew
++
++.recovery2:
++ add tmp = -(MEMLAT + 3) * 8, src
++(p7) br.cond.spnt .gotit
++ ;;
++ ld8 r[MEMLAT+2] = [tmp] ;;
++ xor pos0[1] = r[MEMLAT+2], charx8 ;;
++ czx1.r pos0[1] = pos0[1] ;;
++ cmp.ne p7, p6 = 8, pos0[1]
++(p7) br.cond.spnt .gotit
++ br.cond.sptk .back2
+ END(memccpy)
+--- glibc-2.3.2/sysdeps/ia64/memchr.S 2001-08-17 22:57:52.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/memchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard memchr() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -130,3 +130,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/ia64/memcpy.S 2002-10-11 03:36:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/memcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard memcpy() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop for Itanium <Dan.Pop@cern.ch>.
+ Rewritten for McKinley by Sverre Jarp, HP Labs/CERN <Sverre.Jarp@cern.ch>
+
+@@ -409,6 +409,7 @@
+ LOOP(48)
+ LOOP(56)
+ END(memcpy)
++libc_hidden_builtin_def (memcpy)
+
+ .rodata
+ .align 8
+--- glibc-2.3.2/sysdeps/ia64/memmove.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/memmove.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard memmove() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -239,3 +239,4 @@
+ data8 .loop56 - .loop56
+
+ END(memmove)
++libc_hidden_builtin_def (memmove)
+--- glibc-2.3.2/sysdeps/ia64/memset.S 2002-10-11 03:36:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/memset.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard memset() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop for Itanium <Dan.Pop@cern.ch>.
+ Rewritten for McKinley by Sverre Jarp, HP Labs/CERN <Sverre.Jarp@cern.ch>
+
+@@ -389,4 +389,4 @@
+ br.ret.sptk.many rp
+ ;; }
+ END(memset)
+-
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/ia64/strcat.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/strcat.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* IA-64 assembly version of the standard strcat() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -60,3 +60,4 @@
+ mov ar.pfs = save_pfs
+ br.ret.sptk.many b0
+ END(strcat)
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/ia64/strchr.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/strchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard strchr() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -109,3 +109,4 @@
+ END(strchr)
+
+ weak_alias(strchr, index)
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/ia64/strcmp.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/strcmp.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard strcmp() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -51,3 +51,4 @@
+ sub ret0 = val1, val2
+ br.ret.sptk.many b0
+ END(strcmp)
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/ia64/strcpy.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/strcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard strcpy() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -142,3 +142,4 @@
+ ld8 r[MEMLAT] = [tmp]
+ br.cond.sptk .back3
+ END(strcpy)
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/ia64/strlen.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/strlen.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard strlen() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -95,3 +95,4 @@
+ ld8 val2 = [str], 8 // bomb out here
+ br.cond.sptk .back
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/ia64/strncmp.S 2001-07-07 15:21:23.000000000 -0400
++++ glibc-2.3.2/sysdeps/ia64/strncmp.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard strncmp() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -59,3 +59,4 @@
+ .restore_and_exit:
+ br.ret.sptk.many b0
+ END(strncmp)
++libc_hidden_builtin_def (strncmp)
+--- glibc-2.3.2/sysdeps/ia64/strncpy.S 2002-12-07 04:01:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/ia64/strncpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Optimized version of the standard strncpy() function.
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Dan Pop <Dan.Pop@cern.ch>
+ and Jakub Jelinek <jakub@redhat.com>.
+
+@@ -229,3 +229,4 @@
+ (p5) mov r[MEMLAT - 1] = r0
+ br.cond.sptk .back4
+ END(strncpy)
++libc_hidden_builtin_def (strncpy)
+--- glibc-2.3.2/sysdeps/ieee754/dbl-64/dbl2mpn.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/dbl-64/dbl2mpn.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1993,1994,1995,1996,1997,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -45,7 +45,7 @@
+ #elif BITS_PER_MP_LIMB == 64
+ /* Hopefully the compiler will combine the two bitfield extracts
+ and this composition into just the original quadword extract. */
+- res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
++ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+ #define N 1
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+@@ -101,7 +101,8 @@
+ }
+ else
+ /* Add the implicit leading one bit for a normalized number. */
+- res_ptr[N - 1] |= 1L << (DBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
++ res_ptr[N - 1] |= (mp_limb_t) 1 << (DBL_MANT_DIG - 1
++ - ((N - 1) * BITS_PER_MP_LIMB));
+
+ return N;
+ }
+--- glibc-2.3.2/sysdeps/ieee754/dbl-64/mpn2dbl.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/dbl-64/mpn2dbl.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,10 +34,12 @@
+ u.ieee.exponent = expt + IEEE754_DOUBLE_BIAS;
+ #if BITS_PER_MP_LIMB == 32
+ u.ieee.mantissa1 = frac_ptr[0];
+- u.ieee.mantissa0 = frac_ptr[1] & ((1 << (DBL_MANT_DIG - 32)) - 1);
++ u.ieee.mantissa0 = frac_ptr[1] & (((mp_limb_t) 1
++ << (DBL_MANT_DIG - 32)) - 1);
+ #elif BITS_PER_MP_LIMB == 64
+- u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
+- u.ieee.mantissa0 = (frac_ptr[0] >> 32) & ((1 << (DBL_MANT_DIG - 32)) - 1);
++ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
++ u.ieee.mantissa0 = (frac_ptr[0] >> 32) & (((mp_limb_t) 1
++ << (DBL_MANT_DIG - 32)) - 1);
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+ #endif
+--- glibc-2.3.2/sysdeps/ieee754/flt-32/mpn2flt.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/flt-32/mpn2flt.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1997,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,7 +33,7 @@
+ u.ieee.negative = sign;
+ u.ieee.exponent = expt + IEEE754_FLOAT_BIAS;
+ #if BITS_PER_MP_LIMB > FLT_MANT_DIG
+- u.ieee.mantissa = frac_ptr[0] & ((1 << FLT_MANT_DIG) - 1);
++ u.ieee.mantissa = frac_ptr[0] & (((mp_limb_t) 1 << FLT_MANT_DIG) - 1);
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+ #endif
+--- glibc-2.3.2/sysdeps/ieee754/flt-32/s_scalbnf.c 1999-07-13 23:43:53.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/flt-32/s_scalbnf.c 2003-09-19 22:37:07.000000000 -0400
+@@ -49,13 +49,13 @@
+ if (k==0xff) return x+x; /* NaN or Inf */
+ k = k+n;
+ if (n> 50000 || k > 0xfe)
+- return huge*copysignf(huge,x); /* overflow */
++ return huge*__copysignf(huge,x); /* overflow */
+ if (n< -50000)
+- return tiny*copysignf(tiny,x); /*underflow*/
++ return tiny*__copysignf(tiny,x); /*underflow*/
+ if (k > 0) /* normal result */
+ {SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23)); return x;}
+ if (k <= -25)
+- return tiny*copysignf(tiny,x); /*underflow*/
++ return tiny*__copysignf(tiny,x); /*underflow*/
+ k += 25; /* subnormal result */
+ SET_FLOAT_WORD(x,(ix&0x807fffff)|(k<<23));
+ return x*twom25;
+--- glibc-2.3.2/sysdeps/ieee754/ldbl-128/ldbl2mpn.c 2002-07-10 23:09:36.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/ldbl-128/ldbl2mpn.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1998,1999,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,8 +50,8 @@
+ #elif BITS_PER_MP_LIMB == 64
+ /* Hopefully the compiler will combine the two bitfield extracts
+ and this composition into just the original quadword extract. */
+- res_ptr[0] = ((unsigned long int) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
+- res_ptr[1] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
++ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
++ res_ptr[1] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+ #define N 2
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+@@ -133,7 +134,8 @@
+ }
+ else
+ /* Add the implicit leading one bit for a normalized number. */
+- res_ptr[N - 1] |= 1L << (LDBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
++ res_ptr[N - 1] |= (mp_limb_t) 1 << (LDBL_MANT_DIG - 1
++ - ((N - 1) * BITS_PER_MP_LIMB));
+
+ return N;
+ }
+--- glibc-2.3.2/sysdeps/ieee754/ldbl-128/mpn2ldbl.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/ldbl-128/mpn2ldbl.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1998,1999,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,12 +38,14 @@
+ u.ieee.mantissa3 = frac_ptr[0];
+ u.ieee.mantissa2 = frac_ptr[1];
+ u.ieee.mantissa1 = frac_ptr[2];
+- u.ieee.mantissa0 = frac_ptr[3] & ((1 << (LDBL_MANT_DIG - 96)) - 1);
++ u.ieee.mantissa0 = frac_ptr[3] & (((mp_limb_t) 1
++ << (LDBL_MANT_DIG - 96)) - 1);
+ #elif BITS_PER_MP_LIMB == 64
+- u.ieee.mantissa3 = frac_ptr[0] & ((1L << 32) - 1);
++ u.ieee.mantissa3 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa2 = frac_ptr[0] >> 32;
+- u.ieee.mantissa1 = frac_ptr[1] & ((1L << 32) - 1);
+- u.ieee.mantissa0 = (frac_ptr[1] >> 32) & ((1 << (LDBL_MANT_DIG - 96)) - 1);
++ u.ieee.mantissa1 = frac_ptr[1] & (((mp_limb_t) 1 << 32) - 1);
++ u.ieee.mantissa0 = (frac_ptr[1] >> 32) & (((mp_limb_t) 1
++ << (LDBL_MANT_DIG - 96)) - 1);
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+ #endif
+--- glibc-2.3.2/sysdeps/ieee754/ldbl-96/e_gammal_r.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/ldbl-96/e_gammal_r.c 2003-04-12 11:39:45.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Implementation of gamma function according to ISO C.
+- Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -45,8 +45,11 @@
+ return x - x;
+ }
+ if ((es & 0x7fff) == 0x7fff && ((hx & 0x7fffffff) | lx) != 0)
+- /* NaN, return it. */
+- return x;
++ {
++ /* NaN, return it. */
++ *signgamp = 0;
++ return x;
++ }
+ if ((es & 0x8000) != 0 && x < 0xffffffff && __rintl (x) == x)
+ {
+ /* Return value for integer x < 0 is NaN with invalid exception. */
+--- glibc-2.3.2/sysdeps/ieee754/ldbl-96/ldbl2mpn.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/ldbl-96/ldbl2mpn.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,7 +47,7 @@
+ #elif BITS_PER_MP_LIMB == 64
+ /* Hopefully the compiler will combine the two bitfield extracts
+ and this composition into just the original quadword extract. */
+- res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
++ res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+ #define N 1
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+--- glibc-2.3.2/sysdeps/ieee754/ldbl-96/mpn2ldbl.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/ieee754/ldbl-96/mpn2ldbl.c 2003-03-15 15:02:16.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,7 +37,7 @@
+ u.ieee.mantissa1 = frac_ptr[0];
+ u.ieee.mantissa0 = frac_ptr[1];
+ #elif BITS_PER_MP_LIMB == 64
+- u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
++ u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa0 = frac_ptr[0] >> 32;
+ #else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+--- glibc-2.3.2/sysdeps/m68k/Makefile 2003-02-05 18:26:43.000000000 -0500
++++ glibc-2.3.2/sysdeps/m68k/Makefile 2003-08-21 08:37:09.000000000 -0400
+@@ -26,7 +26,6 @@
+ asm-CPPFLAGS += $(m68k-syntax-flag)
+
+ pic-ccflag = -fpic
+-CFLAGS-.oS += -fPIC
+
+ # Make sure setjmp.c is compiled with a frame pointer
+ CFLAGS-setjmp.c := -fno-omit-frame-pointer
+--- glibc-2.3.2/sysdeps/m68k/dl-machine.h 2003-01-26 16:07:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/m68k/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Machine-dependent ELF dynamic relocation inline functions. m68k version.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -158,7 +158,7 @@
+ | Save the user entry point address in %a4.\n\
+ move.l %d0, %a4\n\
+ | Remember the highest stack address.\n\
+- lea __libc_stack_end(%pc), %a0\n\
++ move.l __libc_stack_end@GOTPC(%pc), %a0\n\
+ move.l %sp, (%a0)\n\
+ | See if we were run as a command with the executable file\n\
+ | name as an extra leading argument.\n\
+@@ -229,8 +229,9 @@
+ static inline void __attribute__ ((always_inline))
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ if (__builtin_expect (r_type == R_68K_RELATIVE, 0))
+@@ -260,8 +261,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ case R_68K_GLOB_DAT:
+ case R_68K_JMP_SLOT:
+@@ -298,8 +299,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/m68k/fpu/bits/mathinline.h 2002-09-23 20:00:25.000000000 -0400
++++ glibc-2.3.2/sysdeps/m68k/fpu/bits/mathinline.h 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Definitions of inline math functions implemented by the m68881/2.
+- Copyright (C) 1991,92,93,94,96,97,98,99,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,92,93,94,96,97,98,99,2000,2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -176,28 +177,6 @@
+ for the function names. */
+
+ #define __inline_functions(float_type, s) \
+-__m81_inline float_type \
+-__m81_u(__CONCAT(__frexp,s))(float_type __value, int *__expptr) __THROW \
+-{ \
+- float_type __mantissa, __exponent; \
+- int __iexponent; \
+- unsigned long __fpsr; \
+- __asm("ftst%.x %1\n" \
+- "fmove%.l %/fpsr, %0" : "=dm" (__fpsr) : "f" (__value)); \
+- if (__fpsr & (7 << 24)) \
+- { \
+- /* Not finite or zero. */ \
+- *__expptr = 0; \
+- return __value; \
+- } \
+- __asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value)); \
+- __iexponent = (int) __exponent + 1; \
+- *__expptr = __iexponent; \
+- __asm("fscale%.l %2, %0" : "=f" (__mantissa) \
+- : "0" (__value), "dmi" (-__iexponent)); \
+- return __mantissa; \
+-} \
+- \
+ __m81_defun (float_type, __CONCAT(__floor,s), (float_type __x)) __THROW \
+ { \
+ float_type __result; \
+@@ -386,8 +365,6 @@
+ return __CONCAT(__,name) args2; \
+ }
+
+-__inline_forward(double,frexp, (double __value, int *__expptr),
+- (__value, __expptr))
+ __inline_forward_c(double,floor, (double __x), (__x))
+ __inline_forward_c(double,ceil, (double __x), (__x))
+ # ifdef __USE_MISC
+@@ -416,8 +393,6 @@
+
+ # if defined __USE_MISC || defined __USE_ISOC99
+
+-__inline_forward(float,frexpf, (float __value, int *__expptr),
+- (__value, __expptr))
+ __inline_forward_c(float,floorf, (float __x), (__x))
+ __inline_forward_c(float,ceilf, (float __x), (__x))
+ # ifdef __USE_MISC
+@@ -438,8 +413,6 @@
+ (__x, __sinx, __cosx))
+ # endif
+
+-__inline_forward(long double,frexpl, (long double __value, int *__expptr),
+- (__value, __expptr))
+ __inline_forward_c(long double,floorl, (long double __x), (__x))
+ __inline_forward_c(long double,ceill, (long double __x), (__x))
+ # ifdef __USE_MISC
+--- glibc-2.3.2/sysdeps/m68k/fpu/libm-test-ulps 2003-01-12 02:54:07.000000000 -0500
++++ glibc-2.3.2/sysdeps/m68k/fpu/libm-test-ulps 2003-08-21 08:37:09.000000000 -0400
+@@ -119,14 +119,12 @@
+ ldouble: 1
+
+ # ccos
+-Test "Real part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+ float: 1
+ ifloat: 1
+@@ -139,10 +137,10 @@
+ ldouble: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ ildouble: 1
+@@ -189,10 +187,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Real part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
+-ildouble: 1
+-ldouble: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ ildouble: 1
+ ldouble: 1
+ Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+@@ -336,10 +331,10 @@
+ ldouble: 1
+
+ # csin
+-Test "Real part of: csin (-2 - 3 i) == -9.1544991469114295734 + 4.1689069599665643507 i":
++Test "Real part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: csin (-2 - 3 i) == -9.1544991469114295734 + 4.1689069599665643507 i":
++Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
+@@ -352,14 +347,12 @@
+ ifloat: 1
+
+ # csinh
+-Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ float: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+ float: 1
+ ifloat: 1
+@@ -370,10 +363,9 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
+-ildouble: 439
+-ldouble: 439
+-Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
++double: 1
++idouble: 1
+ ildouble: 1
+ ldouble: 1
+ Test "Real part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -384,12 +376,9 @@
+ ldouble: 2
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
+-ildouble: 2
+-ldouble: 2
+-Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
+-ildouble: 25
+-ldouble: 25
++Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
+ double: 1
+ idouble: 1
+@@ -599,12 +588,12 @@
+ Test "lgamma (0.5) == log(sqrt(pi))":
+ ildouble: 1
+ ldouble: 1
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ float: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -698,7 +687,7 @@
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -1032,28 +1021,24 @@
+ Function: Imaginary part of "csinh":
+ float: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
+
+ Function: Real part of "ctan":
+-ildouble: 439
+-ldouble: 439
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
+
+ Function: Imaginary part of "ctan":
+ ildouble: 2
+ ldouble: 2
+
+-Function: Real part of "ctanh":
+-ildouble: 2
+-ldouble: 2
+-
+ Function: Imaginary part of "ctanh":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 25
+-ldouble: 25
++ildouble: 1
++ldouble: 1
+
+ Function: "erfc":
+ float: 1
+--- glibc-2.3.2/sysdeps/m68k/fpu/s_frexp.c 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/m68k/fpu/s_frexp.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,11 +28,28 @@
+ #define __CONCATX(a,b) __CONCAT(a,b)
+
+ float_type
+-__CONCATX(__,FUNC) (value, expptr)
+- float_type value;
+- int *expptr;
++__CONCATX(__,FUNC) (float_type value, int *expptr)
+ {
+- return __m81_u(__CONCATX(__,FUNC))(value, expptr);
++ float_type mantissa, exponent;
++ int iexponent;
++ unsigned long fpsr;
++
++ __asm ("ftst%.x %1\n"
++ "fmove%.l %/fpsr, %0"
++ : "=dm" (fpsr) : "f" (value));
++ if (fpsr & (7 << 24))
++ {
++ /* Not finite or zero. */
++ *expptr = 0;
++ return value;
++ }
++ __asm ("fgetexp%.x %1, %0" : "=f" (exponent) : "f" (value));
++ iexponent = (int) exponent + 1;
++ *expptr = iexponent;
++ __asm ("fscale%.l %2, %0"
++ : "=f" (mantissa)
++ : "0" (value), "dmi" (-iexponent));
++ return mantissa;
+ }
+
+ #define weak_aliasx(a,b) weak_alias(a,b)
+--- glibc-2.3.2/sysdeps/m68k/fpu/s_frexpl.c 1996-06-06 01:22:18.000000000 -0400
++++ glibc-2.3.2/sysdeps/m68k/fpu/s_frexpl.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,3 +1,59 @@
+-#define FUNC frexpl
+-#define float_type long double
+-#include <s_frexp.c>
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <math.h>
++
++long double
++__frexpl (long double value, int *expptr)
++{
++ long double mantissa, exponent;
++ int iexponent;
++ unsigned long fpsr;
++
++ __asm ("ftst%.x %1\n"
++ "fmove%.l %/fpsr, %0"
++ : "=dm" (fpsr) : "f" (value));
++ if (fpsr & (7 << 24))
++ {
++ /* Not finite or zero. */
++ *expptr = 0;
++ return value;
++ }
++ __asm ("fgetexp%.x %1, %0" : "=f" (exponent) : "f" (value));
++ iexponent = (int) exponent + 1;
++ *expptr = iexponent;
++ /* Unnormalized numbers must be handled specially, otherwise fscale
++ results in overflow. */
++ if (iexponent <= -16384)
++ {
++ value *= 0x1p16383L;
++ iexponent += 16383;
++ }
++ else if (iexponent >= 16384)
++ {
++ value *= 0x1p-16383L;
++ iexponent -= 16383;
++ }
++
++ __asm ("fscale%.l %2, %0"
++ : "=f" (mantissa)
++ : "0" (value), "dmi" (-iexponent));
++ return mantissa;
++}
++
++weak_alias (__frexpl, frexpl)
+--- glibc-2.3.2/sysdeps/m68k/m68020/atomicity.h 2001-08-15 12:14:06.000000000 -0400
++++ glibc-2.3.2/sysdeps/m68k/m68020/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,64 +0,0 @@
+-/* Low-level functions for atomic operations. m680x0 version, x >= 2.
+- Copyright (C) 1997 Free Software Foundation, Inc.
+- Contributed by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-
+-static inline int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- register int result = *mem;
+- register int temp;
+- __asm__ __volatile__ ("1: move%.l %0,%1;"
+- " add%.l %2,%1;"
+- " cas%.l %0,%1,%3;"
+- " jbne 1b"
+- : "=d" (result), "=&d" (temp)
+- : "d" (val), "m" (*mem), "0" (result) : "memory");
+- return result;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- /* XXX Use cas here as well? */
+- __asm__ __volatile__ ("add%.l %0,%1"
+- : : "id" (val), "m" (*mem) : "memory");
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- char ret;
+- long int readval;
+-
+- __asm__ __volatile__ ("cas%.l %2,%3,%1; seq %0"
+- : "=dm" (ret), "=m" (*p), "=d" (readval)
+- : "d" (newval), "m" (*p), "2" (oldval));
+- return ret;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/m68k/m68020/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/m68k/m68020/bits/atomic.h 2003-05-12 12:13:07.000000000 -0400
+@@ -0,0 +1,261 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andreas Schwab <schwab@suse.de>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __ret; \
++ __asm __volatile ("cas%.b %0,%2,%1" \
++ : "=d" (__ret), "=m" (*(mem)) \
++ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
++ __ret; })
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __ret; \
++ __asm __volatile ("cas%.w %0,%2,%1" \
++ : "=d" (__ret), "=m" (*(mem)) \
++ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
++ __ret; })
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __ret; \
++ __asm __volatile ("cas%.l %0,%2,%1" \
++ : "=d" (__ret), "=m" (*(mem)) \
++ : "d" (newval), "m" (*(mem)), "0" (oldval)); \
++ __ret; })
++
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __ret; \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile ("cas2%.l %0:%R0,%1:%R1,(%2):(%3)" \
++ : "=d" (__ret) \
++ : "d" (newval), "r" (__memp), \
++ "r" ((char *) __memp + 4), "0" (oldval) \
++ : "memory"); \
++ __ret; })
++
++#define atomic_exchange_acq(mem, newvalue) \
++ ({ __typeof (*(mem)) __result = *(mem); \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("1: cas%.b %0,%2,%1;" \
++ " jbne 1b" \
++ : "=d" (__result), "=m" (*(mem)) \
++ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("1: cas%.w %0,%2,%1;" \
++ " jbne 1b" \
++ : "=d" (__result), "=m" (*(mem)) \
++ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("1: cas%.l %0,%2,%1;" \
++ " jbne 1b" \
++ : "=d" (__result), "=m" (*(mem)) \
++ : "d" (newvalue), "m" (*(mem)), "0" (__result)); \
++ else \
++ { \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile ("1: cas2%.l %0:%R0,%1:%R1,(%2):(%3);" \
++ " jbne 1b" \
++ : "=d" (__result) \
++ : "d" (newvalue), "r" (__memp), \
++ "r" ((char *) __memp + 4), "0" (__result) \
++ : "memory"); \
++ } \
++ __result; })
++
++#define atomic_exchange_and_add(mem, value) \
++ ({ __typeof (*(mem)) __result = *(mem); \
++ __typeof (*(mem)) __temp; \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("1: move%.b %0,%2;" \
++ " add%.b %3,%2;" \
++ " cas%.b %0,%2,%1;" \
++ " jbne 1b" \
++ : "=d" (__result), "=m" (*(mem)), \
++ "=&d" (__temp) \
++ : "d" (value), "1" (*(mem)), "0" (__result)); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("1: move%.w %0,%2;" \
++ " add%.w %3,%2;" \
++ " cas%.w %0,%2,%1;" \
++ " jbne 1b" \
++ : "=d" (__result), "=m" (*(mem)), \
++ "=&d" (__temp) \
++ : "d" (value), "1" (*(mem)), "0" (__result)); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("1: move%.l %0,%2;" \
++ " add%.l %3,%2;" \
++ " cas%.l %0,%2,%1;" \
++ " jbne 1b" \
++ : "=d" (__result), "=m" (*(mem)), \
++ "=&d" (__temp) \
++ : "d" (value), "1" (*(mem)), "0" (__result)); \
++ else \
++ { \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile ("1: move%.l %0,%1;" \
++ " move%.l %R0,%R1;" \
++ " add%.l %2,%1;" \
++ " addx%.l %R2,%R1;" \
++ " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \
++ " jbne 1b" \
++ : "=d" (__result), "=&d" (__temp) \
++ : "d" (value), "r" (__memp), \
++ "r" ((char *) __memp + 4), "0" (__result) \
++ : "memory"); \
++ } \
++ __result; })
++
++#define atomic_add(mem, value) \
++ (void) ({ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("add%.b %1,%0" \
++ : "=m" (*(mem)) \
++ : "id" (value), "0" (*(mem))); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("add%.w %1,%0" \
++ : "=m" (*(mem)) \
++ : "id" (value), "0" (*(mem))); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("add%.l %1,%0" \
++ : "=m" (*(mem)) \
++ : "id" (value), "0" (*(mem))); \
++ else \
++ { \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __oldval = *__memp; \
++ __typeof (*(mem)) __temp; \
++ __asm __volatile ("1: move%.l %0,%1;" \
++ " move%.l %R0,%R1;" \
++ " add%.l %2,%1;" \
++ " addx%.l %R2,%R1;" \
++ " cas2%.l %0:%R0,%1:%R1,(%3):(%4);" \
++ " jbne 1b" \
++ : "=d" (__oldval), "=&d" (__temp) \
++ : "d" (value), "r" (__memp), \
++ "r" ((char *) __memp + 4), "0" (__oldval) \
++ : "memory"); \
++ } \
++ })
++
++#define atomic_increment_and_test(mem) \
++ ({ char __result; \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("addq%.b %#1,%1; seq %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "1" (*(mem))); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("addq%.w %#1,%1; seq %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "1" (*(mem))); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("addq%.l %#1,%1; seq %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "1" (*(mem))); \
++ else \
++ { \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __oldval = *__memp; \
++ __typeof (*(mem)) __temp; \
++ __asm __volatile ("1: move%.l %1,%2;" \
++ " move%.l %R1,%R2;" \
++ " addq%.l %#1,%2;" \
++ " addx%.l %5,%R2;" \
++ " seq %0;" \
++ " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \
++ " jbne 1b" \
++ : "=&dm" (__result), "=d" (__oldval), \
++ "=&d" (__temp) \
++ : "r" (__memp), "r" ((char *) __memp + 4), \
++ "d" (0), "1" (__oldval) \
++ : "memory"); \
++ } \
++ __result; })
++
++#define atomic_decrement_and_test(mem) \
++ ({ char __result; \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("subq%.b %#1,%1; seq %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "1" (*(mem))); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("subq%.w %#1,%1; seq %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "1" (*(mem))); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("subq%.l %#1,%1; seq %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "1" (*(mem))); \
++ else \
++ { \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __oldval = *__memp; \
++ __typeof (*(mem)) __temp; \
++ __asm __volatile ("1: move%.l %1,%2;" \
++ " move%.l %R1,%R2;" \
++ " subq%.l %#1,%2;" \
++ " subx%.l %5,%R2;" \
++ " seq %0;" \
++ " cas2%.l %1:%R1,%2:%R2,(%3):(%4);" \
++ " jbne 1b" \
++ : "=&dm" (__result), "=d" (__oldval), \
++ "=&d" (__temp) \
++ : "r" (__memp), "r" ((char *) __memp + 4), \
++ "d" (0), "1" (__oldval) \
++ : "memory"); \
++ } \
++ __result; })
++
++#define atomic_bit_set(mem, bit) \
++ __asm __volatile ("bfset %0{%1,#1}" \
++ : "=m" (*(mem)) \
++ : "di" (sizeof (*(mem)) * 8 - (bit) - 1), "m" (*(mem)))
++
++#define atomic_bit_test_set(mem, bit) \
++ ({ char __result; \
++ __asm __volatile ("bfset %1{%2,#1}; sne %0" \
++ : "=dm" (__result), "=m" (*(mem)) \
++ : "di" (sizeof (*(mem)) * 8 - (bit) - 1), \
++ "m" (*(mem))); \
++ __result; })
+--- glibc-2.3.2/sysdeps/m68k/memchr.S 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/m68k/memchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* memchr (str, ch, n) -- Return pointer to first occurrence of CH in the
+ first N bytes of STR.
+ For Motorola 68000.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Schwab <schwab@gnu.org>.
+
+@@ -229,3 +229,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/m68k/setjmp.c 2001-10-31 12:35:22.000000000 -0500
++++ glibc-2.3.2/sysdeps/m68k/setjmp.c 2003-09-19 22:37:07.000000000 -0400
+@@ -58,3 +58,6 @@
+ /* Save the signal mask if requested. */
+ return __sigjmp_save (env, savemask);
+ }
++#if !defined BSD_SETJMP && !defined BSD__SETJMP
++hidden_def (__sigsetjmp)
++#endif
+--- glibc-2.3.2/sysdeps/m68k/strchr.S 2001-07-07 15:21:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/m68k/strchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
+ For Motorola 68000.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Schwab <schwab@gnu.org>.
+
+@@ -255,3 +255,4 @@
+ END(strchr)
+
+ weak_alias (strchr, index)
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/mach/configure 2003-02-25 19:46:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/mach/configure 2003-08-21 08:37:09.000000000 -0400
+@@ -96,7 +96,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/mach_types.h>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -119,7 +123,8 @@
+ ac_cv_header_mach_mach_types_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+- cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ ac_cv_header_mach_mach_types_h=no
+ fi
+ rm -f conftest.err conftest.$ac_ext
+@@ -142,7 +147,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/mach_types.defs>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -165,7 +174,8 @@
+ ac_cv_header_mach_mach_types_defs=yes
+ else
+ echo "$as_me: failed program was:" >&5
+- cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ ac_cv_header_mach_mach_types_defs=no
+ fi
+ rm -f conftest.err conftest.$ac_ext
+@@ -191,7 +201,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/mach_types.h>
+ int
+ main ()
+@@ -216,7 +230,8 @@
+ libc_cv_mach_task_t=task_t
+ else
+ echo "$as_me: failed program was:" >&5
+-cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ libc_cv_mach_task_t=task_port_t
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -233,7 +248,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/mach_types.h>
+ int
+ main ()
+@@ -258,7 +277,8 @@
+ libc_cv_mach_thread_t=thread_t
+ else
+ echo "$as_me: failed program was:" >&5
+-cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ libc_cv_mach_thread_t=thread_port_t
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -276,7 +296,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/task_info.h>
+ int
+ main ()
+@@ -304,7 +328,8 @@
+ libc_cv_mach_task_creation_time=yes
+ else
+ echo "$as_me: failed program was:" >&5
+-cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ libc_cv_mach_task_creation_time=no
+ fi
+ rm -f conftest.$ac_objext conftest.$ac_ext
+@@ -312,7 +337,9 @@
+ echo "$as_me:$LINENO: result: $libc_cv_mach_task_creation_time" >&5
+ echo "${ECHO_T}$libc_cv_mach_task_creation_time" >&6
+ if test $libc_cv_mach_task_creation_time = no; then
+- DEFINES="$DEFINES -DNO_CREATION_TIME=1"
++ { { echo "$as_me:$LINENO: error: you need Mach headers supporting task_info.creation_time" >&5
++echo "$as_me: error: you need Mach headers supporting task_info.creation_time" >&2;}
++ { (exit 1); exit 1; }; }
+ fi
+
+ mach_interface_list=
+@@ -330,7 +357,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/${ifc}.defs>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -353,7 +384,8 @@
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+- cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ eval "$as_ac_Header=no"
+ fi
+ rm -f conftest.err conftest.$ac_ext
+@@ -394,7 +426,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/mach_host.defs>
+
+ _ACEOF
+@@ -423,7 +459,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/machine/ndr_def.h>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -446,7 +486,8 @@
+ ac_cv_header_mach_machine_ndr_def_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+- cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ ac_cv_header_mach_machine_ndr_def_h=no
+ fi
+ rm -f conftest.err conftest.$ac_ext
+@@ -463,7 +504,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <machine/ndr_def.h>
+ _ACEOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+@@ -486,7 +531,8 @@
+ ac_cv_header_machine_ndr_def_h=yes
+ else
+ echo "$as_me: failed program was:" >&5
+- cat conftest.$ac_ext >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
+ ac_cv_header_machine_ndr_def_h=no
+ fi
+ rm -f conftest.err conftest.$ac_ext
+@@ -509,7 +555,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/i386/mach_i386.defs>
+
+ _ACEOF
+@@ -538,7 +588,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <mach/i386/mach_i386.defs>
+
+ _ACEOF
+--- glibc-2.3.2/sysdeps/mach/configure.in 2002-10-23 02:21:18.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/configure.in 2003-08-21 08:37:09.000000000 -0400
+@@ -41,7 +41,7 @@
+ long s = i->creation_time.seconds;
+ ], libc_cv_mach_task_creation_time=yes, libc_cv_mach_task_creation_time=no)])
+ if test $libc_cv_mach_task_creation_time = no; then
+- DEFINES="$DEFINES -DNO_CREATION_TIME=1"
++ AC_MSG_ERROR([you need Mach headers supporting task_info.creation_time])
+ fi
+
+ dnl
+--- glibc-2.3.2/sysdeps/mach/hurd/Makefile 2003-02-17 13:58:05.000000000 -0500
++++ glibc-2.3.2/sysdeps/mach/hurd/Makefile 2003-08-21 08:37:09.000000000 -0400
+@@ -190,7 +190,6 @@
+
+ ifeq ($(subdir),csu)
+
+-sysdep_routines += set-init
+ extra-objs += static-start.o
+
+ # We need special startup code for statically linked binaries.
+--- glibc-2.3.2/sysdeps/mach/hurd/alpha/init-first.c 2002-06-18 17:14:08.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/hurd/alpha/init-first.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Initialization code run first thing by the ELF startup code. Alpha/Hurd.
+- Copyright (C) 1995,96,97,98,99,2000,2001,02 Free Software Foundation, Inc.
++ Copyright (C) 1995,96,97,98,99,2000,01,02,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,7 +28,6 @@
+ #include "hurdmalloc.h" /* XXX */
+
+ extern void __mach_init (void);
+-extern void __libc_init (int, char **, char **);
+ extern void __init_misc (int, char **, char **);
+ #ifdef USE_NONOPTION_FLAGS
+ extern void __getopt_clean_environment (char **);
+@@ -72,7 +71,6 @@
+ _dl_non_dynamic_init ();
+ #endif
+ __init_misc (argc, argv, envp);
+- __libc_init (argc, argv, envp);
+
+ #ifdef USE_NONOPTION_FLAGS
+ /* This is a hack to make the special getopt in GNU libc working. */
+--- glibc-2.3.2/sysdeps/mach/hurd/bits/typesizes.h 2003-02-21 20:01:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/mach/hurd/bits/typesizes.h 2003-08-21 08:37:09.000000000 -0400
+@@ -57,6 +57,7 @@
+ #define __TIMER_T_TYPE __S32_TYPE
+ #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+ #define __FSID_T_TYPE __UQUAD_TYPE
++#define __SSIZE_T_TYPE __SWORD_TYPE
+
+ /* Number of descriptors that can fit in an `fd_set'. */
+ #define __FD_SETSIZE 256
+--- glibc-2.3.2/sysdeps/mach/hurd/getdents.c 2001-07-07 15:21:25.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/hurd/getdents.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,41 +1 @@
+-/* Copyright (C) 1992,93,94,95,97,98,99 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <stddef.h>
+-#include <errno.h>
+-#include <sys/types.h>
+-#include <hurd.h>
+-#include <hurd/fd.h>
+-#include <string.h>
+-#include <unistd.h>
+-
+-ssize_t
+-__getdirentries (int fd,
+- char *buf,
+- size_t nbytes,
+- off_t *basep)
+-{
+- /* Nothing should use this function. Use readdir instead. */
+- errno = ENOSYS;
+- return -1;
+-}
+-
+-weak_alias (__getdirentries, getdirentries)
+-
+-link_warning(getdirentries, "\
+-warning: getdirentries is obsolete and will always fail; use readdir instead")
++#include <sysdeps/generic/getdents.c>
+--- glibc-2.3.2/sysdeps/mach/hurd/i386/init-first.c 2002-12-02 17:36:40.000000000 -0500
++++ glibc-2.3.2/sysdeps/mach/hurd/i386/init-first.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Initialization code run first thing by the ELF startup code. For i386/Hurd.
+- Copyright (C) 1995,96,97,98,99,2000,2001,02 Free Software Foundation, Inc.
++ Copyright (C) 1995,96,97,98,99,2000,01,02,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,7 +32,6 @@
+ #include <fpu_control.h>
+
+ extern void __mach_init (void);
+-extern void __libc_init (int, char **, char **);
+ extern void __init_misc (int, char **, char **);
+ #ifdef USE_NONOPTION_FLAGS
+ extern void __getopt_clean_environment (char **);
+@@ -86,7 +85,6 @@
+ _dl_non_dynamic_init ();
+ #endif
+ __init_misc (argc, argv, envp);
+- __libc_init (argc, argv, envp);
+
+ #ifdef USE_NONOPTION_FLAGS
+ /* This is a hack to make the special getopt in GNU libc working. */
+--- glibc-2.3.2/sysdeps/mach/hurd/mips/init-first.c 2002-10-02 20:17:51.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/hurd/mips/init-first.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Initialization code run first thing by the ELF startup code. For Mips/Hurd.
+- Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1998,2000,01,02,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,7 +26,6 @@
+ #include "hurdmalloc.h" /* XXX */
+
+ extern void __mach_init (void);
+-extern void __libc_init (int, char **, char **);
+ extern void __init_misc (int, char **, char **);
+ #ifdef USE_NONOPTION_FLAGS
+ extern void __getopt_clean_environment (char **);
+@@ -114,7 +113,6 @@
+ _dl_non_dynamic_init ();
+ #endif
+ __init_misc (argc, argv, __environ);
+- __libc_init (argc, argv, __environ);
+
+ #ifdef USE_NONOPTION_FLAGS
+ /* This is a hack to make the special getopt in GNU libc working. */
+--- glibc-2.3.2/sysdeps/mach/hurd/mmap.c 2002-06-18 17:14:07.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/hurd/mmap.c 2003-09-19 22:37:07.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1994,95,96,97,99,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1994,1995,1996,1997,1999,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -97,7 +98,11 @@
+ {
+ mach_port_t robj, wobj;
+ if (err = HURD_DPORT_USE (fd, __io_map (port, &robj, &wobj)))
+- return (__ptr_t) (long int) __hurd_dfail (fd, err);
++ {
++ if (err == MIG_BAD_ID || err == EOPNOTSUPP || err == ENOSYS)
++ err = ENODEV; /* File descriptor doesn't support mmap. */
++ return (__ptr_t) (long int) __hurd_dfail (fd, err);
++ }
+ switch (prot & (PROT_READ|PROT_WRITE))
+ {
+ case PROT_READ:
+--- glibc-2.3.2/sysdeps/mach/hurd/powerpc/init-first.c 2002-03-12 22:39:01.000000000 -0500
++++ glibc-2.3.2/sysdeps/mach/hurd/powerpc/init-first.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Initialization code run first thing by the ELF startup code. PowerPC/Hurd.
+- Copyright (C) 1995-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,7 +28,6 @@
+ #include "hurdmalloc.h" /* XXX */
+
+ extern void __mach_init (void);
+-extern void __libc_init (int, char **, char **);
+ extern void __init_misc (int, char **, char **);
+ #ifdef USE_NONOPTION_FLAGS
+ extern void __getopt_clean_environment (char **);
+@@ -77,7 +76,6 @@
+ _dl_non_dynamic_init ();
+ #endif
+ __init_misc (argc, argv, envp);
+- __libc_init (argc, argv, envp);
+
+ #ifdef USE_NONOPTION_FLAGS
+ /* This is a hack to make the special getopt in GNU libc working. */
+--- glibc-2.3.2/sysdeps/mach/hurd/set-init.c 2001-07-07 15:20:52.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/hurd/set-init.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,23 +0,0 @@
+-/* Copyright (C) 1991, 1992, 1994, 1995, 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <stdlib.h>
+-#include <set-hooks.h>
+-
+-DEFINE_HOOK_RUNNER (__libc_subinit, __libc_init,
+- (int argc, char **argv, char **envp), (argc, argv, envp))
+--- glibc-2.3.2/sysdeps/mach/hurd/times.c 2002-02-19 02:34:49.000000000 -0500
++++ glibc-2.3.2/sysdeps/mach/hurd/times.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Return CPU and real time used by process and its children. Hurd version.
+- Copyright (C) 2001,02 Free Software Foundation, Inc.
++ Copyright (C) 2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,17 +33,6 @@
+ return t->seconds * 1000000 + t->microseconds;
+ }
+
+-#if NO_CREATION_TIME
+-static time_value_t startup_time;
+-static void times_init (void) __attribute__ ((unused));
+-static void
+-times_init (void)
+-{
+- __gettimeofday ((struct timeval *) &startup_time, NULL);
+-}
+-text_set_element (__libc_subinit, times_init);
+-#endif
+-
+ /* Store the CPU time used by this process and all its
+ dead children (and their dead children) in BUFFER.
+ Return the elapsed real time, or (clock_t) -1 for errors.
+@@ -80,12 +69,7 @@
+ if (__gettimeofday ((struct timeval *) &now, NULL) < 0)
+ return -1;
+
+-#if NO_CREATION_TIME
+-# define our_creation_time startup_time
+-#else
+-# define our_creation_time bi.creation_time
+-#endif
+ return (clock_from_time_value (&now)
+- - clock_from_time_value (&our_creation_time));
++ - clock_from_time_value (&bi.creation_time));
+ }
+ weak_alias (__times, times)
+--- glibc-2.3.2/sysdeps/mach/hurd/tmpfile.c 2002-06-12 16:57:55.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/hurd/tmpfile.c 2003-04-26 18:51:22.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Open a stdio stream on an anonymous temporary file. Hurd version.
+- Copyright (C) 2001,02 Free Software Foundation, Inc.
++ Copyright (C) 2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,19 +23,14 @@
+ #include <hurd/fd.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+-
+-#ifdef USE_IN_LIBIO
+-# include <iolibio.h>
+-# define __fdopen INTUSE(_IO_fdopen)
+-# define tmpfile __new_tmpfile
+-#endif
++#include <iolibio.h>
+
+ /* This returns a new stream opened on a temporary file (generated
+ by tmpnam). The file is opened with mode "w+b" (binary read/write).
+ If we couldn't generate a unique filename or the file couldn't
+ be opened, NULL is returned. */
+ FILE *
+-tmpfile (void)
++__tmpfile (void)
+ {
+ error_t err;
+ file_t file;
+@@ -62,16 +57,13 @@
+
+ /* Open a stream on the unnamed file.
+ It will cease to exist when this stream is closed. */
+- if ((f = __fdopen (fd, "w+b")) == NULL)
++ if ((f = INTUSE(_IO_fdopen) (fd, "w+b")) == NULL)
+ __close (fd);
+
+ return f;
+ }
+
+-#ifdef USE_IN_LIBIO
+-# undef tmpfile
+-# include <shlib-compat.h>
+-versioned_symbol (libc, __new_tmpfile, tmpfile, GLIBC_2_1);
+-#endif
++#include <shlib-compat.h>
++versioned_symbol (libc, __tmpfile, tmpfile, GLIBC_2_1);
+
+-weak_alias (tmpfile, tmpfile64)
++weak_alias (__tmpfile, tmpfile64)
+--- glibc-2.3.2/sysdeps/mach/sys/reboot.h 2002-07-10 03:24:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/mach/sys/reboot.h 2002-11-16 08:56:53.000000000 -0500
+@@ -26,124 +26,6 @@
+ /*
+ * HISTORY
+ * $Log: reboot.h,v $
+- * Revision 1.4 2002/07/06 06:36:00 aj
+- * * sysdeps/ia64/fpu/e_acos.S: Added text of Intel license.
+- * * sysdeps/ia64/fpu/e_acosf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_acosl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_asin.S: Likewise.
+- * * sysdeps/ia64/fpu/e_asinf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_asinl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_atan2.S: Likewise.
+- * * sysdeps/ia64/fpu/e_atan2f.S: Likewise.
+- * * sysdeps/ia64/fpu/e_cosh.S: Likewise.
+- * * sysdeps/ia64/fpu/e_coshf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_coshl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_exp.S: Likewise.
+- * * sysdeps/ia64/fpu/e_expf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_fmod.S: Likewise.
+- * * sysdeps/ia64/fpu/e_fmodf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_fmodl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_hypot.S: Likewise.
+- * * sysdeps/ia64/fpu/e_hypotf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_hypotl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_log.S: Likewise.
+- * * sysdeps/ia64/fpu/e_logf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_pow.S: Likewise.
+- * * sysdeps/ia64/fpu/e_powf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_powl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_remainder.S: Likewise.
+- * * sysdeps/ia64/fpu/e_remainderf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_remainderl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_scalb.S: Likewise.
+- * * sysdeps/ia64/fpu/e_scalbf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_scalbl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_sinh.S: Likewise.
+- * * sysdeps/ia64/fpu/e_sinhf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_sinhl.S: Likewise.
+- * * sysdeps/ia64/fpu/e_sqrt.S: Likewise.
+- * * sysdeps/ia64/fpu/e_sqrtf.S: Likewise.
+- * * sysdeps/ia64/fpu/e_sqrtl.S: Likewise.
+- * * sysdeps/ia64/fpu/libm_atan2_req.S: Likewise.
+- * * sysdeps/ia64/fpu/libm_error.c: Likewise.
+- * * sysdeps/ia64/fpu/libm_frexp4.S: Likewise.
+- * * sysdeps/ia64/fpu/libm_frexp4f.S: Likewise.
+- * * sysdeps/ia64/fpu/s_frexpl.c: Likewise.
+- * * sysdeps/ia64/fpu/s_ilogb.S: Likewise.
+- * * sysdeps/ia64/fpu/s_ilogbf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_ilogbl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_ldexp.S: Likewise.
+- * * sysdeps/ia64/fpu/s_ldexpf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_ldexpl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_log1p.S: Likewise.
+- * * sysdeps/ia64/fpu/s_log1pf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_log1pl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_logb.S: Likewise.
+- * * sysdeps/ia64/fpu/s_logbf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_logbl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_modf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_modff.S: Likewise.
+- * * sysdeps/ia64/fpu/s_modfl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_nearbyint.S: Likewise.
+- * * sysdeps/ia64/fpu/s_nearbyintf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_nearbyintl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_rint.S: Likewise.
+- * * sysdeps/ia64/fpu/s_rintf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_rintl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_round.S: Likewise.
+- * * sysdeps/ia64/fpu/s_roundf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_roundl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_scalbn.S: Likewise.
+- * * sysdeps/ia64/fpu/s_scalbnf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_scalbnl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_significand.S: Likewise.
+- * * sysdeps/ia64/fpu/s_significandf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_significandl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_tan.S: Likewise.
+- * * sysdeps/ia64/fpu/s_tanf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_tanl.S: Likewise.
+- * * sysdeps/ia64/fpu/s_trunc.S: Likewise.
+- * * sysdeps/ia64/fpu/s_truncf.S: Likewise.
+- * * sysdeps/ia64/fpu/s_truncl.S: Likewise.
+- * * sysdeps/ieee754/dbl-64/doasin.c: changed copyright notice to
+- * reflect IBM donation of math library to FSF
+- * * sysdeps/ieee754/dbl-64/dosincos.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_asin.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_atan2.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_exp.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_log.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_pow.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_remainder.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/halfulp.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mpa.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mpatan.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mpatan2.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mpexp.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mplog.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mpsqrt.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/mptan.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/s_atan.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/sincos32.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/slowexp.c: Likewise.
+- * * sysdeps/ieee754/dbl-64/slowpow.c: Likewise.
+- * * sysdeps/gnu/netinet/udp.h: Added BSD copying permission notice
+- * * sysdeps/vax/__longjmp.c: Likewise.
+- * * sysdeps/vax/setjmp.c: Likewise.
+- * * libio/filedoalloc.c: Fixed BSD copying permission notice to remove
+- * advertising clause
+- * * sysdeps/vax/htonl.s: Likewise.
+- * * sysdeps/vax/htons.s: Likewise.
+- * * libio/wfiledoalloc.c: Likewise.
+- * * stdlib/random.c: Likewise.
+- * * stdlib/random_r.c: Likewise.
+- * * sysdeps/mach/sys/reboot.h: Likewise.
+- * * inet/getnameinfo.c: Deleted advertising clause from Inner Net License
+- * * sysdeps/posix/getaddrinfo.c: Likewise.
+- * * sunrpc/des_impl.c: Updated license permission notice to Lesser GPL
+- * and corrected pointer to point to the correct license.
+- *
+ * Revision 1.3 2000/03/27 04:09:08 roland
+ * 2000-03-26 Roland McGrath <roland@baalperazim.frob.com>
+ *
+--- glibc-2.3.2/sysdeps/mips/Implies 2000-01-29 02:28:21.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/Implies 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,3 @@
+-wordsize-32
+ # MIPS uses IEEE 754 floating point.
+ ieee754/flt-32
+ ieee754/dbl-64
+--- glibc-2.3.2/sysdeps/mips/add_n.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/add_n.S 2003-03-15 15:02:16.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS2 __mpn_add_n -- Add two limb vectors of the same length > 0 and
+ store sum in a third limb vector.
+
+-Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -43,12 +43,12 @@
+
+ addiu $7,$7,-1
+ and $9,$7,4-1 /* number of limbs in first loop */
+- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
++ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
+ move $2,$0
+
+ subu $7,$7,$9
+
+-.Loop0: addiu $9,$9,-1
++L(Loop0): addiu $9,$9,-1
+ lw $12,4($5)
+ addu $11,$11,$2
+ lw $13,4($6)
+@@ -62,13 +62,13 @@
+ addiu $6,$6,4
+ move $10,$12
+ move $11,$13
+- bne $9,$0,.Loop0
+- addiu $4,$4,4
++ bne $9,$0,L(Loop0)
++ addiu $4,$4,4
+
+-.L0: beq $7,$0,.Lend
+- nop
++L(L0): beq $7,$0,L(end)
++ nop
+
+-.Loop: addiu $7,$7,-4
++L(Loop): addiu $7,$7,-4
+
+ lw $12,4($5)
+ addu $11,$11,$2
+@@ -109,10 +109,10 @@
+ addiu $5,$5,16
+ addiu $6,$6,16
+
+- bne $7,$0,.Loop
+- addiu $4,$4,16
++ bne $7,$0,L(Loop)
++ addiu $4,$4,16
+
+-.Lend: addu $11,$11,$2
++L(end): addu $11,$11,$2
+ sltu $8,$11,$2
+ addu $11,$10,$11
+ sltu $2,$11,$10
+--- glibc-2.3.2/sysdeps/mips/addmul_1.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/addmul_1.S 2003-03-15 15:02:16.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS __mpn_addmul_1 -- Multiply a limb vector with a single limb and
+ add the product to a second limb vector.
+
+-Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -46,14 +46,14 @@
+ multu $8,$7
+
+ addiu $6,$6,-1
+- beq $6,$0,$LC0
++ beq $6,$0,L(LC0)
+ move $2,$0 /* zero cy2 */
+
+ addiu $6,$6,-1
+- beq $6,$0,$LC1
++ beq $6,$0,L(LC1)
+ lw $8,0($5) /* load new s1 limb as early as possible */
+
+-Loop: lw $10,0($4)
++L(Loop): lw $10,0($4)
+ mflo $3
+ mfhi $9
+ addiu $5,$5,4
+@@ -67,11 +67,11 @@
+ addu $2,$2,$10
+ sw $3,0($4)
+ addiu $4,$4,4
+- bne $6,$0,Loop /* should be "bnel" */
++ bne $6,$0,L(Loop) /* should be "bnel" */
+ addu $2,$9,$2 /* add high product limb and carry from addition */
+
+ /* cool down phase 1 */
+-$LC1: lw $10,0($4)
++L(LC1): lw $10,0($4)
+ mflo $3
+ mfhi $9
+ addu $3,$3,$2
+@@ -85,7 +85,7 @@
+ addu $2,$9,$2 /* add high product limb and carry from addition */
+
+ /* cool down phase 0 */
+-$LC0: lw $10,0($4)
++L(LC0): lw $10,0($4)
+ mflo $3
+ mfhi $9
+ addu $3,$3,$2
+--- glibc-2.3.2/sysdeps/mips/atomicity.h 2002-07-15 20:52:17.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/atomicity.h 2003-03-15 15:02:16.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Low-level functions for atomic operations. Mips version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,7 +32,9 @@
+ ("/* Inline exchange & add */\n"
+ "1:\n\t"
+ ".set push\n\t"
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ ".set mips2\n\t"
++#endif
+ "ll %0,%3\n\t"
+ "addu %1,%4,%0\n\t"
+ "sc %1,%2\n\t"
+@@ -56,7 +58,9 @@
+ ("/* Inline atomic add */\n"
+ "1:\n\t"
+ ".set push\n\t"
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ ".set mips2\n\t"
++#endif
+ "ll %0,%2\n\t"
+ "addu %0,%3,%0\n\t"
+ "sc %0,%1\n\t"
+@@ -78,12 +82,22 @@
+ ("/* Inline compare & swap */\n"
+ "1:\n\t"
+ ".set push\n\t"
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ ".set mips2\n\t"
++#endif
++#if defined _ABI64 && _MIPS_SIM == _ABI64
++ "lld %1,%5\n\t"
++#else
+ "ll %1,%5\n\t"
++#endif
+ "move %0,$0\n\t"
+ "bne %1,%3,2f\n\t"
+ "move %0,%4\n\t"
++#if defined _ABI64 && _MIPS_SIM == _ABI64
++ "scd %0,%2\n\t"
++#else
+ "sc %0,%2\n\t"
++#endif
+ ".set pop\n\t"
+ "beqz %0,1b\n"
+ "2:\n\t"
+--- glibc-2.3.2/sysdeps/mips/bits/endian.h 1997-11-25 22:52:55.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/bits/endian.h 2003-04-12 11:39:45.000000000 -0400
+@@ -5,4 +5,9 @@
+ # error "Never use <bits/endian.h> directly; include <endian.h> instead."
+ #endif
+
+-#define __BYTE_ORDER __BIG_ENDIAN
++#if __MIPSEB
++# define __BYTE_ORDER __BIG_ENDIAN
++#endif
++#if __MIPSEL
++# define __BYTE_ORDER __LITTLE_ENDIAN
++#endif
+--- glibc-2.3.2/sysdeps/mips/bits/setjmp.h 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/bits/setjmp.h 2003-04-12 11:39:45.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Define the machine-dependent type `jmp_buf'. MIPS version.
+- Copyright (C) 1992,93,95,97,2000 Free Software Foundation, Inc.
++ Copyright (C) 1992, 1993, 1995, 1997, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,26 +24,47 @@
+
+ typedef struct
+ {
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ /* Program counter. */
+- void * __pc;
++ __ptr_t __pc;
+
+ /* Stack pointer. */
+- void * __sp;
++ __ptr_t __sp;
+
+ /* Callee-saved registers s0 through s7. */
+ int __regs[8];
+
+ /* The frame pointer. */
+- void * __fp;
++ __ptr_t __fp;
+
+ /* The global pointer. */
+- void * __gp;
++ __ptr_t __gp;
++#else
++ /* Program counter. */
++ __extension__ long long __pc;
++
++ /* Stack pointer. */
++ __extension__ long long __sp;
++
++ /* Callee-saved registers s0 through s7. */
++ __extension__ long long __regs[8];
++
++ /* The frame pointer. */
++ __extension__ long long __fp;
++
++ /* The global pointer. */
++ __extension__ long long __gp;
++#endif
+
+ /* Floating point status register. */
+ int __fpc_csr;
+
+ /* Callee-saved floating point registers. */
++#if defined _ABI64 && _MIPS_SIM == _ABI64
++ double __fpregs[8];
++#else
+ double __fpregs[6];
++#endif
+ } __jmp_buf[1];
+
+ #ifdef __USE_MISC
+--- glibc-2.3.2/sysdeps/mips/bits/wordsize.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/bits/wordsize.h 2003-03-17 10:47:12.000000000 -0500
+@@ -0,0 +1,19 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define __WORDSIZE _MIPS_SZPTR
+--- glibc-2.3.2/sysdeps/mips/dl-machine.h 2003-02-12 04:42:22.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -32,6 +32,8 @@
+ #error ENTRY_POINT needs to be defined for MIPS.
+ #endif
+
++#include <sys/asm.h>
++
+ /* The offset of gp from GOT might be system-dependent. It's set by
+ ld. The same value is also */
+ #define OFFSET_GP_GOT 0x7ff0
+@@ -72,6 +74,13 @@
+ static inline int __attribute_used__
+ elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
+ {
++#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
++ /* Don't link o32 and n32 together. */
++ if (((ehdr->e_flags & EF_MIPS_ABI2) != 0)
++ != (_MIPS_SIM != _MIPS_SIM_ABI32))
++ return 0;
++#endif
++
+ switch (ehdr->e_machine)
+ {
+ case EM_MIPS:
+@@ -91,7 +100,7 @@
+
+ /* Return the link-time address of _DYNAMIC. Conveniently, this is the
+ first element of the GOT. This must be inlined in a function which
+- uses global data. */
++ uses global data. We assume its $gp points to the primary GOT. */
+ static inline ElfW(Addr)
+ elf_machine_dynamic (void)
+ {
+@@ -99,6 +108,9 @@
+ return *elf_mips_got_from_gpreg (gp);
+ }
+
++#define STRINGXP(X) __STRING(X)
++#define STRINGXV(X) STRINGV_(X)
++#define STRINGV_(...) # __VA_ARGS__
+
+ /* Return the run-time load address of the shared object. */
+ static inline ElfW(Addr)
+@@ -106,10 +118,10 @@
+ {
+ ElfW(Addr) addr;
+ asm (" .set noreorder\n"
+- " la %0, here\n"
+- " bltzal $0, here\n"
++ " " STRINGXP (PTR_LA) " %0, 0f\n"
++ " bltzal $0, 0f\n"
+ " nop\n"
+- "here: subu %0, $31, %0\n"
++ "0: " STRINGXP (PTR_SUBU) " %0, $31, %0\n"
+ " .set reorder\n"
+ : "=r" (addr)
+ : /* No inputs */
+@@ -118,7 +130,11 @@
+ }
+
+ /* The MSB of got[1] of a gnu object is set to identify gnu objects. */
+-#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
++#if defined _ABI64 && _MIPS_SIM == _ABI64
++# define ELF_MIPS_GNU_GOT1_MASK 0x8000000000000000L
++#else
++# define ELF_MIPS_GNU_GOT1_MASK 0x80000000L
++#endif
+
+ /* We can't rely on elf_machine_got_rel because _dl_object_relocation_scope
+ fiddles with global data. */
+@@ -242,6 +258,55 @@
+ return NULL;
+ }
+
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++#define ELF_DL_FRAME_SIZE 40
++
++#define ELF_DL_SAVE_ARG_REGS "\
++ sw $15, 36($29)\n \
++ sw $4, 16($29)\n \
++ sw $5, 20($29)\n \
++ sw $6, 24($29)\n \
++ sw $7, 28($29)\n \
++"
++
++#define ELF_DL_RESTORE_ARG_REGS "\
++ lw $31, 36($29)\n \
++ lw $4, 16($29)\n \
++ lw $5, 20($29)\n \
++ lw $6, 24($29)\n \
++ lw $7, 28($29)\n \
++"
++
++#define IFABIO32(X) X
++
++#else /* _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _MIPS_SIM_ABI64 */
++
++#define ELF_DL_FRAME_SIZE 64
++
++#define ELF_DL_SAVE_ARG_REGS "\
++ sd $15, 56($29)\n \
++ sd $4, 8($29)\n \
++ sd $5, 16($29)\n \
++ sd $6, 24($29)\n \
++ sd $7, 32($29)\n \
++ sd $8, 40($29)\n \
++ sd $9, 48($29)\n \
++"
++
++#define ELF_DL_RESTORE_ARG_REGS "\
++ ld $31, 56($29)\n \
++ ld $4, 8($29)\n \
++ ld $5, 16($29)\n \
++ ld $6, 24($29)\n \
++ ld $7, 32($29)\n \
++ ld $8, 40($29)\n \
++ ld $9, 48($29)\n \
++"
++
++#define IFABIO32(X)
++
++#endif
++
+ /* Define mips specific runtime resolver. The function __dl_runtime_resolve
+ is called from assembler function _dl_runtime_resolve which converts
+ special argument registers t7 ($15) and t8 ($24):
+@@ -272,9 +337,8 @@
+ { \
+ struct link_map *l = elf_machine_runtime_link_map (old_gpreg, stub_pc); \
+ const ElfW(Sym) *const symtab \
+- = (const void *) D_PTR (l, l_info[DT_SYMTAB]); \
+- const char *strtab \
+- = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
++ = (const ElfW(Sym) *) D_PTR (l, l_info[DT_SYMTAB]); \
++ const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
+ ElfW(Addr) *got \
+ = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \
+ const ElfW(Word) local_gotno \
+@@ -333,36 +397,30 @@
+ .type _dl_runtime_resolve,@function\n \
+ .ent _dl_runtime_resolve\n \
+ _dl_runtime_resolve:\n \
+- .frame $29, 40, $31\n \
++ .frame $29, " STRINGXP(ELF_DL_FRAME_SIZE) ", $31\n \
+ .set noreorder\n \
+ # Save GP.\n \
+ move $3, $28\n \
++ # Save arguments and sp value in stack.\n \
++ " STRINGXP(PTR_SUBIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n \
+ # Modify t9 ($25) so as to point .cpload instruction.\n \
+- addu $25, 8\n \
++ " IFABIO32(STRINGXP(PTR_ADDIU) " $25, 12\n") " \
+ # Compute GP.\n \
+- .cpload $25\n \
++ " STRINGXP(SETUP_GP) "\n \
++ " STRINGXV(SETUP_GP64 (0, _dl_runtime_resolve)) "\n \
+ .set reorder\n \
+ # Save slot call pc.\n \
+ move $2, $31\n \
+- # Save arguments and sp value in stack.\n \
+- subu $29, 40\n \
+- .cprestore 32\n \
+- sw $15, 36($29)\n \
+- sw $4, 16($29)\n \
+- sw $5, 20($29)\n \
+- sw $6, 24($29)\n \
+- sw $7, 28($29)\n \
++ " IFABIO32(STRINGXP(CPRESTORE(32))) "\n \
++ " ELF_DL_SAVE_ARG_REGS " \
+ move $4, $24\n \
+ move $5, $15\n \
+ move $6, $3\n \
+ move $7, $2\n \
+ jal __dl_runtime_resolve\n \
+- lw $31, 36($29)\n \
+- lw $4, 16($29)\n \
+- lw $5, 20($29)\n \
+- lw $6, 24($29)\n \
+- lw $7, 28($29)\n \
+- addu $29, 40\n \
++ " ELF_DL_RESTORE_ARG_REGS " \
++ " STRINGXP(RESTORE_GP64) "\n \
++ " STRINGXP(PTR_ADDIU) " $29, " STRINGXP(ELF_DL_FRAME_SIZE) "\n \
+ move $25, $2\n \
+ jr $25\n \
+ .end _dl_runtime_resolve\n \
+@@ -374,7 +432,6 @@
+ #define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL
+
+
+-
+ /* Initial entry point code for the dynamic linker.
+ The C function `_dl_start' is the real entry point;
+ its return value is the user program's entry point.
+@@ -392,71 +449,71 @@
+
+ #define RTLD_START asm (\
+ ".text\n"\
+- _RTLD_PROLOGUE(ENTRY_POINT)\
+- ".set noreorder\n\
+- bltzal $0, 0f\n\
+- nop\n\
+-0: .cpload $31\n\
+- .set reorder\n\
++ _RTLD_PROLOGUE(ENTRY_POINT) "\
++ " STRINGXV(SETUP_GPX($25)) "\n\
++ " STRINGXV(SETUP_GPX64($18,$25)) "\n\
+ # i386 ABI book says that the first entry of GOT holds\n\
+ # the address of the dynamic structure. Though MIPS ABI\n\
+ # doesn't say nothing about this, I emulate this here.\n\
+- la $4, _DYNAMIC\n\
++ " STRINGXP(PTR_LA) " $4, _DYNAMIC\n\
+ # Subtract OFFSET_GP_GOT\n\
+- sw $4, -0x7ff0($28)\n\
++ " STRINGXP(PTR_S) " $4, -0x7ff0($28)\n\
+ move $4, $29\n\
+- subu $29, 16\n\
++ " STRINGXP(PTR_SUBIU) " $29, 16\n\
+ \n\
+- la $8, coff\n\
+- bltzal $8, coff\n\
+-coff: subu $8, $31, $8\n\
++ " STRINGXP(PTR_LA) " $8, .Lcoff\n\
++ bltzal $8, .Lcoff\n\
++.Lcoff: " STRINGXP(PTR_SUBU) " $8, $31, $8\n\
+ \n\
+- la $25, _dl_start\n\
+- addu $25, $8\n\
++ " STRINGXP(PTR_LA) " $25, _dl_start\n\
++ " STRINGXP(PTR_ADDU) " $25, $8\n\
+ jalr $25\n\
+ \n\
+- addiu $29, 16\n\
++ " STRINGXP(PTR_ADDIU) " $29, 16\n\
+ # Get the value of label '_dl_start_user' in t9 ($25).\n\
+- la $25, _dl_start_user\n\
++ " STRINGXP(PTR_LA) " $25, _dl_start_user\n\
+ .globl _dl_start_user\n\
++ .type _dl_start_user,@function\n\
++ .ent _dl_start_user\n\
+ _dl_start_user:\n\
+- .set noreorder\n\
+- .cpload $25\n\
+- .set reorder\n\
++ " STRINGXP(SETUP_GP) "\n\
++ " STRINGXV(SETUP_GP64($18,_dl_start_user)) "\n\
+ move $16, $28\n\
+ # Save the user entry point address in a saved register.\n\
+ move $17, $2\n\
+ # Store the highest stack address\n\
+- sw $29, __libc_stack_end\n\
++ " STRINGXP(PTR_S) " $29, __libc_stack_end\n\
+ # See if we were run as a command with the executable file\n\
+ # name as an extra leading argument.\n\
+ lw $2, _dl_skip_args\n\
+ beq $2, $0, 1f\n\
+ # Load the original argument count.\n\
+- lw $4, 0($29)\n\
++ " STRINGXP(PTR_L) " $4, 0($29)\n\
+ # Subtract _dl_skip_args from it.\n\
+ subu $4, $2\n\
+ # Adjust the stack pointer to skip _dl_skip_args words.\n\
+- sll $2, 2\n\
+- addu $29, $2\n\
++ sll $2, " STRINGXP (PTRLOG) "\n\
++ " STRINGXP(PTR_ADDU) " $29, $2\n\
+ # Save back the modified argument count.\n\
+- sw $4, 0($29)\n\
++ " STRINGXP(PTR_S) " $4, 0($29)\n\
+ 1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
+- lw $4, _rtld_local\n\
+- lw $5, 0($29)\n\
+- la $6, 4($29)\n\
+- sll $7, $5, 2\n\
+- addu $7, $7, $6\n\
+- addu $7, $7, 4\n\
+- subu $29, 16\n\
++ " STRINGXP(PTR_L) " $4, _rtld_local\n\
++ " STRINGXP(PTR_L) /* or lw??? fixme */ " $5, 0($29)\n\
++ " STRINGXP(PTR_LA) " $6, " STRINGXP (PTRSIZE) "($29)\n\
++ sll $7, $5, " STRINGXP (PTRLOG) "\n\
++ " STRINGXP(PTR_ADDU) " $7, $7, $6\n\
++ " STRINGXP(PTR_ADDU) " $7, $7, " STRINGXP (PTRSIZE) " \n\
++ " STRINGXP(PTR_SUBIU) " $29, 32\n\
++ " STRINGXP(SAVE_GP(16)) "\n\
+ # Call the function to run the initializers.\n\
+ jal _dl_init_internal\n\
+- addiu $29, 16\n\
++ " STRINGXP(PTR_ADDIU) " $29, 32\n\
+ # Pass our finalizer function to the user in $2 as per ELF ABI.\n\
+- la $2, _dl_fini\n\
++ " STRINGXP(PTR_LA) " $2, _dl_fini\n\
+ # Jump to the user entry point.\n\
+ move $25, $17\n\
+- jr $25\n\t"\
++ jr $25\n\
++ .end _dl_start_user\n\t"\
+ _RTLD_EPILOGUE(ENTRY_POINT)\
+ ".previous"\
+ );
+@@ -472,9 +529,12 @@
+ MAP is the object containing the reloc. */
+
+ static inline void
++#ifdef RTLD_BOOTSTRAP
++ __attribute__ ((always_inline))
++#endif
+ elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
+ const ElfW(Sym) *sym, const struct r_found_version *version,
+- ElfW(Addr) *const reloc_addr)
++ void *const reloc_addr)
+ {
+ const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
+
+@@ -490,21 +550,46 @@
+
+ switch (r_type)
+ {
++#if _MIPS_SIM == _MIPS_SIM_ABI64
++ case (R_MIPS_64 << 8) | R_MIPS_REL32:
++#else
+ case R_MIPS_REL32:
++#endif
+ {
+ int symidx = ELFW(R_SYM) (reloc->r_info);
++ ElfW(Addr) reloc_value;
++
++ /* Support relocations on mis-aligned offsets. Should we ever
++ implement RELA, this should be replaced with an assignment
++ from reloc->r_addend. */
++ __builtin_memcpy (&reloc_value, reloc_addr, sizeof (reloc_value));
+
+ if (symidx)
+ {
+ const ElfW(Word) gotsym
+ = (const ElfW(Word)) map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val;
+
+- if (symidx < gotsym)
++ if ((ElfW(Word))symidx < gotsym)
+ {
++ /* This wouldn't work for a symbol imported from other
++ libraries for which there's no GOT entry, but MIPS
++ requires every symbol referenced in a dynamic
++ relocation to have a GOT entry in the primary GOT,
++ so we only get here for locally-defined symbols.
++ For section symbols, we should *NOT* be adding
++ sym->st_value (per the definition of the meaning of
++ S in reloc expressions in the ELF64 MIPS ABI),
++ since it should have already been added to
++ reloc_value by the linker, but older versions of
++ GNU ld didn't add it, and newer versions don't emit
++ useless relocations to section symbols any more, so
++ it is safe to keep on adding sym->st_value, even
++ though it's not ABI compliant. Some day we should
++ bite the bullet and stop doing this. */
+ #ifndef RTLD_BOOTSTRAP
+ if (map != &GL(dl_rtld_map))
+ #endif
+- *reloc_addr += sym->st_value + map->l_addr;
++ reloc_value += sym->st_value + map->l_addr;
+ }
+ else
+ {
+@@ -515,7 +600,7 @@
+ = (const ElfW(Word))
+ map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
+
+- *reloc_addr += got[symidx + local_gotno - gotsym];
++ reloc_value += got[symidx + local_gotno - gotsym];
+ #endif
+ }
+ }
+@@ -523,11 +608,27 @@
+ #ifndef RTLD_BOOTSTRAP
+ if (map != &GL(dl_rtld_map))
+ #endif
+- *reloc_addr += map->l_addr;
++ reloc_value += map->l_addr;
++
++ __builtin_memcpy (reloc_addr, &reloc_value, sizeof (reloc_value));
+ }
+ break;
+ case R_MIPS_NONE: /* Alright, Wilbur. */
+ break;
++#if _MIPS_SIM == _MIPS_SIM_ABI64
++ case R_MIPS_64:
++ /* For full compliance with the ELF64 ABI, one must precede the
++ _REL32/_64 pair of relocations with a _64 relocation, such
++ that the in-place addend is read as a 64-bit value. IRIX
++ didn't pick up on this requirement, so we treat the
++ _REL32/_64 relocation as a 64-bit relocation even if it's by
++ itself. For ABI compliance, we ignore such _64 dummy
++ relocations. For RELA, this may be simply removed, since
++ it's totally unnecessary. */
++ if (ELFW(R_SYM) (reloc->r_info) == 0)
++ break;
++ /* Fall through. */
++#endif
+ default:
+ _dl_reloc_bad_type (map, r_type, 0);
+ break;
+@@ -536,7 +637,7 @@
+
+ static inline void
+ elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
+- ElfW(Addr) *const reloc_addr)
++ void *const reloc_addr)
+ {
+ /* XXX Nothing to do. There is no relative relocation, right? */
+ }
+@@ -661,7 +762,7 @@
+ of got[1] of a gnu object is set to identify gnu objects.
+ Where we can store l for non gnu objects? XXX */
+ if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
+- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
++ got[1] = ((ElfW(Addr)) l | ELF_MIPS_GNU_GOT1_MASK);
+ else
+ _dl_mips_gnu_objects = 0;
+ }
+--- glibc-2.3.2/sysdeps/mips/elf/ldsodefs.h 2002-02-06 17:56:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/elf/ldsodefs.h 2003-04-12 11:39:45.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Run-time dynamic linker data structures for loaded ELF shared objects.
+- Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,9 +17,93 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#ifndef _MIPS_LDSODEFS_H
++#define _MIPS_LDSODEFS_H
+
+ /* The MIPS ABI specifies that the dynamic section has to be read-only. */
+
+ #define DL_RO_DYN_SECTION 1
+
+ #include_next <ldsodefs.h>
++
++/* The 64-bit MIPS ELF ABI uses an unusual reloc format. Each
++ relocation entry specifies up to three actual relocations, all at
++ the same address. The first relocation which required a symbol
++ uses the symbol in the r_sym field. The second relocation which
++ requires a symbol uses the symbol in the r_ssym field. If all
++ three relocations require a symbol, the third one uses a zero
++ value.
++
++ We define these structures in internal headers because we're not
++ sure we want to make them part of the ABI yet. Eventually, some of
++ this may move into elf/elf.h. */
++
++/* An entry in a 64 bit SHT_REL section. */
++
++typedef struct
++{
++ Elf32_Word r_sym; /* Symbol index */
++ unsigned char r_ssym; /* Special symbol for 2nd relocation */
++ unsigned char r_type3; /* 3rd relocation type */
++ unsigned char r_type2; /* 2nd relocation type */
++ unsigned char r_type1; /* 1st relocation type */
++} _Elf64_Mips_R_Info;
++
++typedef union
++{
++ Elf64_Xword r_info_number;
++ _Elf64_Mips_R_Info r_info_fields;
++} _Elf64_Mips_R_Info_union;
++
++typedef struct
++{
++ Elf64_Addr r_offset; /* Address */
++ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
++} Elf64_Mips_Rel;
++
++typedef struct
++{
++ Elf64_Addr r_offset; /* Address */
++ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
++ Elf64_Sxword r_addend; /* Addend */
++} Elf64_Mips_Rela;
++
++#define ELF64_MIPS_R_SYM(i) \
++ ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
++#define ELF64_MIPS_R_TYPE(i) \
++ (((_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1 \
++ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
++ ).r_info_fields.r_type2 << 8) \
++ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
++ ).r_info_fields.r_type3 << 16) \
++ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
++ ).r_info_fields.r_ssym << 24))
++#define ELF64_MIPS_R_INFO(sym, type) \
++ (__extension__ (_Elf64_Mips_R_Info_union) \
++ (__extension__ (_Elf64_Mips_R_Info) \
++ { (sym), ELF64_MIPS_R_SSYM (type), \
++ ELF64_MIPS_R_TYPE3 (type), \
++ ELF64_MIPS_R_TYPE2 (type), \
++ ELF64_MIPS_R_TYPE1 (type) \
++ }).r_info_number)
++/* These macros decompose the value returned by ELF64_MIPS_R_TYPE, and
++ compose it back into a value that it can be used as an argument to
++ ELF64_MIPS_R_INFO. */
++#define ELF64_MIPS_R_SSYM(i) (((i) >> 24) & 0xff)
++#define ELF64_MIPS_R_TYPE3(i) (((i) >> 16) & 0xff)
++#define ELF64_MIPS_R_TYPE2(i) (((i) >> 8) & 0xff)
++#define ELF64_MIPS_R_TYPE1(i) ((i) & 0xff)
++#define ELF64_MIPS_R_TYPEENC(type1, type2, type3, ssym) \
++ ((type1) \
++ | ((Elf32_Word)(type2) << 8) \
++ | ((Elf32_Word)(type3) << 16) \
++ | ((Elf32_Word)(ssym) << 24))
++
++#undef ELF64_R_SYM
++#define ELF64_R_SYM(i) ELF64_MIPS_R_SYM (i)
++#undef ELF64_R_TYPE
++#define ELF64_R_TYPE(i) ELF64_MIPS_R_TYPE (i)
++#undef ELF64_R_INFO
++#define ELF64_R_INFO(sym, type) ELF64_MIPS_R_INFO ((sym), (type))
++
++#endif
+--- glibc-2.3.2/sysdeps/mips/elf/start.S 2002-12-09 22:41:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/elf/start.S 2003-03-18 16:46:09.000000000 -0500
+@@ -1,5 +1,6 @@
+ /* Startup code compliant to the ELF Mips ABI.
+- Copyright (C) 1995, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1997, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,6 +20,7 @@
+
+ #define __ASSEMBLY__ 1
+ #include <entry.h>
++#include <sys/asm.h>
+
+ #ifndef ENTRY_POINT
+ #error ENTRY_POINT needs to be defined for start.S on MIPS/ELF.
+@@ -52,42 +54,41 @@
+ char **argv, void (*init) (void), void (*fini) (void),
+ void (*rtld_fini) (void), void *stack_end)
+ */
+-#ifdef __PIC__
+-/* A macro to (re)initialize gp. We can get the run time address of 0f in
+- ra ($31) by blezal instruction. In this early phase, we can't save gp
+- in stack and .cprestore doesn't work properly. So we set gp by using
+- this macro. */
+-#define SET_GP \
+- .set noreorder; \
+- bltzal $0,0f; \
+- nop; \
+-0: .cpload $31; \
+- .set reorder;
+-#endif
+-
++
+ .text
+ .globl ENTRY_POINT
+ .type ENTRY_POINT,@function
+ ENTRY_POINT:
+ #ifdef __PIC__
+- SET_GP
++ SETUP_GPX($0)
++ SETUP_GPX64($25,$0)
+ #else
+- la $28, _gp /* Setup GP correctly if we're non-PIC. */
+-#endif
++ PTR_LA $28, _gp /* Setup GP correctly if we're non-PIC. */
+ move $31, $0
++#endif
+
+- la $4, main /* main */
+- lw $5, 0($29) /* argc */
+- addu $6, $29, 4 /* argv */
+- /* Allocate space on the stack for seven arguments and make sure
+- the stack is aligned to double words (8 bytes). */
+- and $29, 0xfffffff8
+- subu $29, 32
+- la $7, __libc_csu_init /* init */
+- la $8, __libc_csu_fini
+- sw $8, 16($29) /* fini */
+- sw $2, 20($29) /* rtld_fini */
+- sw $29, 24($29) /* stack_end */
++ PTR_LA $4, main /* main */
++ PTR_L $5, 0($29) /* argc */
++ PTR_ADDIU $6, $29, PTRSIZE /* argv */
++
++ /* Allocate space on the stack for seven arguments (o32 only)
++ and make sure the stack is aligned to double words (8 bytes)
++ on o32 and quad words (16 bytes) on n32 and n64. */
++
++ and $29, -2 * SZREG
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++ PTR_SUBIU $29, 32
++#endif
++ PTR_LA $7, __libc_csu_init /* init */
++ PTR_LA $8, __libc_csu_fini
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++ PTR_S $8, 16($29) /* fini */
++ PTR_S $2, 20($29) /* rtld_fini */
++ PTR_S $29, 24($29) /* stack_end */
++#else
++ move $9, $2 /* rtld_fini */
++ move $10, $29 /* stack_end */
++#endif
+ jal __libc_start_main
+ hlt: b hlt /* Crash if somehow it does return. */
+
+--- glibc-2.3.2/sysdeps/mips/fpu/bits/mathdef.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/fpu/bits/mathdef.h 2003-03-14 10:30:43.000000000 -0500
+@@ -0,0 +1,48 @@
++/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if !defined _MATH_H && !defined _COMPLEX_H
++# error "Never use <bits/mathdef.h> directly; include <math.h> instead"
++#endif
++
++#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF
++# define _MATH_H_MATHDEF 1
++
++/* Normally, there is no long double type and the `float' and `double'
++ expressions are evaluated as `double'. */
++typedef double float_t; /* `float' expressions are evaluated as
++ `double'. */
++typedef double double_t; /* `double' expressions are evaluated as
++ `double'. */
++
++/* Define `INFINITY' as value of type `float'. */
++# define INFINITY HUGE_VALF
++
++
++/* The values returned by `ilogb' for 0 and NaN respectively. */
++# define FP_ILOGB0 (-2147483647)
++# define FP_ILOGBNAN 2147483647
++
++#endif /* ISO C99 */
++
++#if ! defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _MIPS_SIM_ABI32
++/* Signal that we do not really have a `long double'. This disables the
++ declaration of all the `long double' function variants. */
++# define __NO_LONG_DOUBLE_MATH 1
++#endif
+--- glibc-2.3.2/sysdeps/mips/fpu/libm-test-ulps 2002-10-15 19:39:37.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/fpu/libm-test-ulps 2003-04-12 11:39:45.000000000 -0400
+@@ -94,7 +94,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -107,10 +107,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -145,7 +145,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -239,7 +239,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -258,7 +258,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -266,7 +266,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -453,12 +453,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -513,7 +513,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/mips/ieee754.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/ieee754.h 2003-03-20 12:59:45.000000000 -0500
+@@ -0,0 +1,325 @@
++/* Copyright (C) 1992, 1995, 1996, 1999, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _IEEE754_H
++
++#define _IEEE754_H 1
++#include <features.h>
++
++#include <endian.h>
++
++#include <float.h>
++
++__BEGIN_DECLS
++
++union ieee754_float
++ {
++ float f;
++
++ /* This is the IEEE 754 single-precision format. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:8;
++ unsigned int mantissa:23;
++#endif /* Big endian. */
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++ unsigned int mantissa:23;
++ unsigned int exponent:8;
++ unsigned int negative:1;
++#endif /* Little endian. */
++ } ieee;
++
++ /* This format makes it easier to see if a NaN is a signalling NaN. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:8;
++ unsigned int quiet_nan:1;
++ unsigned int mantissa:22;
++#endif /* Big endian. */
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++ unsigned int mantissa:22;
++ unsigned int quiet_nan:1;
++ unsigned int exponent:8;
++ unsigned int negative:1;
++#endif /* Little endian. */
++ } ieee_nan;
++ };
++
++#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
++
++
++union ieee754_double
++ {
++ double d;
++
++ /* This is the IEEE 754 double-precision format. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:11;
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa0:20;
++ unsigned int mantissa1:32;
++#endif /* Big endian. */
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++# if __FLOAT_WORD_ORDER == BIG_ENDIAN
++ unsigned int mantissa0:20;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++ unsigned int mantissa1:32;
++# else
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:20;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++# endif
++#endif /* Little endian. */
++ } ieee;
++
++ /* This format makes it easier to see if a NaN is a signalling NaN. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:11;
++ unsigned int quiet_nan:1;
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa0:19;
++ unsigned int mantissa1:32;
++#else
++# if __FLOAT_WORD_ORDER == BIG_ENDIAN
++ unsigned int mantissa0:19;
++ unsigned int quiet_nan:1;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++ unsigned int mantissa1:32;
++# else
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:19;
++ unsigned int quiet_nan:1;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++# endif
++#endif
++ } ieee_nan;
++ };
++
++#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
++
++#if LDBL_MANT_DIG == 113
++
++union ieee854_long_double
++ {
++ long double d;
++
++ /* This is the IEEE 854 quad-precision format. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:15;
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa0:16;
++ unsigned int mantissa1:32;
++ unsigned int mantissa2:32;
++ unsigned int mantissa3:32;
++#endif /* Big endian. */
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa3:32;
++ unsigned int mantissa2:32;
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:16;
++ unsigned int exponent:15;
++ unsigned int negative:1;
++#endif /* Little endian. */
++ } ieee;
++
++ /* This format makes it easier to see if a NaN is a signalling NaN. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:15;
++ unsigned int quiet_nan:1;
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa0:15;
++ unsigned int mantissa1:32;
++ unsigned int mantissa2:32;
++ unsigned int mantissa3:32;
++#endif /* Big endian. */
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa3:32;
++ unsigned int mantissa2:32;
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:15;
++ unsigned int quiet_nan:1;
++ unsigned int exponent:15;
++ unsigned int negative:1;
++#endif /* Little endian. */
++ } ieee_nan;
++ };
++
++#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
++
++#elif LDBL_MANT_DIG == 64
++
++union ieee854_long_double
++ {
++ long double d;
++
++ /* This is the IEEE 854 double-extended-precision format. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:15;
++ unsigned int empty:16;
++ unsigned int mantissa0:32;
++ unsigned int mantissa1:32;
++#endif
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++# if __FLOAT_WORD_ORDER == BIG_ENDIAN
++ unsigned int exponent:15;
++ unsigned int negative:1;
++ unsigned int empty:16;
++ unsigned int mantissa0:32;
++ unsigned int mantissa1:32;
++# else
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:32;
++ unsigned int exponent:15;
++ unsigned int negative:1;
++ unsigned int empty:16;
++# endif
++#endif
++ } ieee;
++
++ /* This is for NaNs in the IEEE 854 double-extended-precision format. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:15;
++ unsigned int empty:16;
++ unsigned int one:1;
++ unsigned int quiet_nan:1;
++ unsigned int mantissa0:30;
++ unsigned int mantissa1:32;
++#endif
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++# if __FLOAT_WORD_ORDER == BIG_ENDIAN
++ unsigned int exponent:15;
++ unsigned int negative:1;
++ unsigned int empty:16;
++ unsigned int mantissa0:30;
++ unsigned int quiet_nan:1;
++ unsigned int one:1;
++ unsigned int mantissa1:32;
++# else
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:30;
++ unsigned int quiet_nan:1;
++ unsigned int one:1;
++ unsigned int exponent:15;
++ unsigned int negative:1;
++ unsigned int empty:16;
++# endif
++#endif
++ } ieee_nan;
++ };
++
++#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
++
++#elif LDBL_MANT_DIG == 53
++
++union ieee854_long_double
++ {
++ long double d;
++
++ /* This is the IEEE 754 double-precision format. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:11;
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa0:20;
++ unsigned int mantissa1:32;
++#endif /* Big endian. */
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++# if __FLOAT_WORD_ORDER == BIG_ENDIAN
++ unsigned int mantissa0:20;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++ unsigned int mantissa1:32;
++# else
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:20;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++# endif
++#endif /* Little endian. */
++ } ieee;
++
++ /* This format makes it easier to see if a NaN is a signalling NaN. */
++ struct
++ {
++#if __BYTE_ORDER == __BIG_ENDIAN
++ unsigned int negative:1;
++ unsigned int exponent:11;
++ unsigned int quiet_nan:1;
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa0:19;
++ unsigned int mantissa1:32;
++#else
++# if __FLOAT_WORD_ORDER == BIG_ENDIAN
++ unsigned int mantissa0:19;
++ unsigned int quiet_nan:1;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++ unsigned int mantissa1:32;
++# else
++ /* Together these comprise the mantissa. */
++ unsigned int mantissa1:32;
++ unsigned int mantissa0:19;
++ unsigned int quiet_nan:1;
++ unsigned int exponent:11;
++ unsigned int negative:1;
++# endif
++#endif
++ } ieee_nan;
++ };
++
++#define IEEE854_LONG_DOUBLE_BIAS 0x3ff /* Added to exponent. */
++
++#endif /* LDBL_MANT_DIG == 53 */
++
++__END_DECLS
++
++#endif /* ieee754.h */
+--- glibc-2.3.2/sysdeps/mips/lshift.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/lshift.S 2003-03-15 15:02:16.000000000 -0500
+@@ -1,6 +1,6 @@
+ /* MIPS2 __mpn_lshift --
+
+-Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -44,12 +44,12 @@
+ addu $4,$4,$2 /* make r4 point at end of res */
+ addiu $6,$6,-1
+ and $9,$6,4-1 /* number of limbs in first loop */
+- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
+- srl $2,$10,$13 /* compute function result */
++ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
++ srl $2,$10,$13 /* compute function result */
+
+ subu $6,$6,$9
+
+-.Loop0: lw $3,-8($5)
++L(Loop0): lw $3,-8($5)
+ addiu $4,$4,-4
+ addiu $5,$5,-4
+ addiu $9,$9,-1
+@@ -57,13 +57,13 @@
+ srl $12,$3,$13
+ move $10,$3
+ or $8,$11,$12
+- bne $9,$0,.Loop0
+- sw $8,0($4)
++ bne $9,$0,L(Loop0)
++ sw $8,0($4)
+
+-.L0: beq $6,$0,.Lend
+- nop
++L(L0): beq $6,$0,L(Lend)
++ nop
+
+-.Loop: lw $3,-8($5)
++L(Loop): lw $3,-8($5)
+ addiu $4,$4,-16
+ addiu $6,$6,-4
+ sll $11,$10,$7
+@@ -89,10 +89,10 @@
+
+ addiu $5,$5,-16
+ or $8,$14,$9
+- bgtz $6,.Loop
+- sw $8,0($4)
++ bgtz $6,L(Loop)
++ sw $8,0($4)
+
+-.Lend: sll $8,$10,$7
++L(Lend): sll $8,$10,$7
+ j $31
+ sw $8,-4($4)
+ END (__mpn_lshift)
+--- glibc-2.3.2/sysdeps/mips/machine-gmon.h 2002-02-13 02:30:11.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/machine-gmon.h 2003-03-18 16:46:08.000000000 -0500
+@@ -1,5 +1,6 @@
+ /* Machine-specific calling sequence for `mcount' profiling function. MIPS
+- Copyright (C) 1996, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,14 +21,17 @@
+ #define _MCOUNT_DECL(frompc,selfpc) \
+ static void __attribute_used__ __mcount (u_long frompc, u_long selfpc)
+
+-/* Call __mcount with our the return PC for our caller,
++/* Call __mcount with the return PC for our caller,
+ and the return PC our caller will return to. */
++
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++
+ #ifdef __PIC__
+-#define CPLOAD ".cpload $25;"
+-#define CPRESTORE ".cprestore 44\n\t"
++# define CPLOAD ".cpload $25;"
++# define CPRESTORE ".cprestore 44\n\t"
+ #else
+-#define CPLOAD
+-#define CPRESTORE
++# define CPLOAD
++# define CPRESTORE
+ #endif
+
+ #define MCOUNT asm(\
+@@ -66,3 +70,70 @@
+ ".set reorder;\n\t" \
+ ".set at\n\t" \
+ ".end _mcount");
++
++#else
++
++#ifdef __PIC__
++# define CPSETUP ".cpsetup $25, 88, _mcount;"
++# define CPRETURN ".cpreturn;"
++#else
++# define CPSETUP
++# define CPRETURN
++#endif
++
++#if defined _ABIN32 && _MIPS_SIM == _ABIN32
++# define PTR_ADDU_STRING "add" /* no u */
++# define PTR_SUBU_STRING "sub" /* no u */
++#elif defined _ABI64 && _MIPS_SIM == _ABI64
++# define PTR_ADDU_STRING "daddu"
++# define PTR_SUBU_STRING "dsubu"
++#else
++# error "Unknown ABI"
++#endif
++
++#define MCOUNT asm(\
++ ".globl _mcount;\n\t" \
++ ".align 3;\n\t" \
++ ".type _mcount,@function;\n\t" \
++ ".ent _mcount\n\t" \
++ "_mcount:\n\t" \
++ ".frame $sp,88,$31\n\t" \
++ ".set noreorder;\n\t" \
++ ".set noat;\n\t" \
++ PTR_SUBU_STRING " $29,$29,96;\n\t" \
++ CPSETUP \
++ "sd $4,24($29);\n\t" \
++ "sd $5,32($29);\n\t" \
++ "sd $6,40($29);\n\t" \
++ "sd $7,48($29);\n\t" \
++ "sd $8,56($29);\n\t" \
++ "sd $9,64($29);\n\t" \
++ "sd $10,72($29);\n\t" \
++ "sd $11,80($29);\n\t" \
++ "sd $2,16($29);\n\t" \
++ "sd $1,0($29);\n\t" \
++ "sd $31,8($29);\n\t" \
++ "move $5,$31;\n\t" \
++ "move $4,$1;\n\t" \
++ "jal __mcount;\n\t" \
++ "nop;\n\t" \
++ "ld $4,24($29);\n\t" \
++ "ld $5,32($29);\n\t" \
++ "ld $6,40($29);\n\t" \
++ "ld $7,48($29);\n\t" \
++ "ld $8,56($29);\n\t" \
++ "ld $9,64($29);\n\t" \
++ "ld $10,72($29);\n\t" \
++ "ld $11,80($29);\n\t" \
++ "ld $2,16($29);\n\t" \
++ "ld $31,8($29);\n\t" \
++ "ld $1,0($29);\n\t" \
++ CPRETURN \
++ PTR_ADDU_STRING " $29,$29,96;\n\t" \
++ "j $31;\n\t" \
++ "move $31,$1;\n\t" \
++ ".set reorder;\n\t" \
++ ".set at\n\t" \
++ ".end _mcount");
++
++#endif
+--- glibc-2.3.2/sysdeps/mips/memcpy.S 2002-09-10 07:22:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/memcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
+
+@@ -21,12 +21,7 @@
+ #include <endian.h>
+
+
+-/* void *memcpy(void *s1, const void *s2, size_t n);
+-
+- This routine could be optimized further for MIPS64, but this is left
+- as an exercise for the future. When it is done, the file should be kept
+- as a sisterfile to this one, and placed in the sysdeps/mips/mips64
+- directory. */
++/* void *memcpy(void *s1, const void *s2, size_t n); */
+
+ #if __BYTE_ORDER == __BIG_ENDIAN
+ # define LWHI lwl /* high part is left in big-endian */
+@@ -44,27 +39,29 @@
+ .set noreorder
+
+ slti t0, a2, 8 # Less than 8?
+- bne t0, zero, $last8
++ bne t0, zero, L(last8)
+ move v0, a0 # Setup exit value before too late
+
+ xor t0, a1, a0 # Find a0/a1 displacement
+ andi t0, 0x3
+- bne t0, zero, $shift # Go handle the unaligned case
++ bne t0, zero, L(shift) # Go handle the unaligned case
+ subu t1, zero, a1
+ andi t1, 0x3 # a0/a1 are aligned, but are we
+- beq t1, zero, $chk8w # starting in the middle of a word?
++ beq t1, zero, L(chk8w) # starting in the middle of a word?
+ subu a2, t1
+ LWHI t0, 0(a1) # Yes we are... take care of that
+ addu a1, t1
+ SWHI t0, 0(a0)
+ addu a0, t1
+
+-$chk8w: andi t0, a2, 0x1f # 32 or more bytes left?
+- beq t0, a2, $chk1w
++L(chk8w):
++ andi t0, a2, 0x1f # 32 or more bytes left?
++ beq t0, a2, L(chk1w)
+ subu a3, a2, t0 # Yes
+ addu a3, a1 # a3 = end address of loop
+ move a2, t0 # a2 = what will be left after loop
+-$lop8w: lw t0, 0(a1) # Loop taking 8 words at a time
++L(lop8w):
++ lw t0, 0(a1) # Loop taking 8 words at a time
+ lw t1, 4(a1)
+ lw t2, 8(a1)
+ lw t3, 12(a1)
+@@ -81,50 +78,59 @@
+ sw t4, -16(a0)
+ sw t5, -12(a0)
+ sw t6, -8(a0)
+- bne a1, a3, $lop8w
++ bne a1, a3, L(lop8w)
+ sw t7, -4(a0)
+
+-$chk1w: andi t0, a2, 0x3 # 4 or more bytes left?
+- beq t0, a2, $last8
++L(chk1w):
++ andi t0, a2, 0x3 # 4 or more bytes left?
++ beq t0, a2, L(last8)
+ subu a3, a2, t0 # Yes, handle them one word at a time
+ addu a3, a1 # a3 again end address
+ move a2, t0
+-$lop1w: lw t0, 0(a1)
++L(lop1w):
++ lw t0, 0(a1)
+ addiu a0, 4
+ addiu a1, 4
+- bne a1, a3, $lop1w
++ bne a1, a3, L(lop1w)
+ sw t0, -4(a0)
+
+-$last8: blez a2, $lst8e # Handle last 8 bytes, one at a time
++L(last8):
++ blez a2, L(lst8e) # Handle last 8 bytes, one at a time
+ addu a3, a2, a1
+-$lst8l: lb t0, 0(a1)
++L(lst8l):
++ lb t0, 0(a1)
+ addiu a0, 1
+ addiu a1, 1
+- bne a1, a3, $lst8l
++ bne a1, a3, L(lst8l)
+ sb t0, -1(a0)
+-$lst8e: jr ra # Bye, bye
++L(lst8e):
++ jr ra # Bye, bye
+ nop
+
+-$shift: subu a3, zero, a0 # Src and Dest unaligned
++L(shift):
++ subu a3, zero, a0 # Src and Dest unaligned
+ andi a3, 0x3 # (unoptimized case...)
+- beq a3, zero, $shft1
++ beq a3, zero, L(shft1)
+ subu a2, a3 # a2 = bytes left
+ LWHI t0, 0(a1) # Take care of first odd part
+ LWLO t0, 3(a1)
+ addu a1, a3
+ SWHI t0, 0(a0)
+ addu a0, a3
+-$shft1: andi t0, a2, 0x3
++L(shft1):
++ andi t0, a2, 0x3
+ subu a3, a2, t0
+ addu a3, a1
+-$shfth: LWHI t1, 0(a1) # Limp through, word by word
++L(shfth):
++ LWHI t1, 0(a1) # Limp through, word by word
+ LWLO t1, 3(a1)
+ addiu a0, 4
+ addiu a1, 4
+- bne a1, a3, $shfth
++ bne a1, a3, L(shfth)
+ sw t1, -4(a0)
+- b $last8 # Handle anything which may be left
++ b L(last8) # Handle anything which may be left
+ move a2, t0
+
+ .set reorder
+ END (memcpy)
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/mips/memset.S 2002-09-10 07:22:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/memset.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
+
+@@ -21,12 +21,7 @@
+ #include <endian.h>
+
+
+-/* void *memset(void *s, int c, size_t n).
+-
+- This routine could be optimized further for MIPS64, but this is left
+- as an exercise for the future. When it is done, the file should be kept
+- as a sisterfile to this one, and placed in the sysdeps/mips/mips64
+- directory. */
++/* void *memset(void *s, int c, size_t n). */
+
+ #if __BYTE_ORDER == __BIG_ENDIAN
+ # define SWHI swl /* high part is left in big-endian */
+@@ -38,46 +33,54 @@
+ .set noreorder
+
+ slti t1, a2, 8 # Less than 8?
+- bne t1, zero, $last8
++ bne t1, zero, L(last8)
+ move v0, a0 # Setup exit value before too late
+
+- beq a1, zero, $ueven # If zero pattern, no need to extend
++ beq a1, zero, L(ueven) # If zero pattern, no need to extend
+ andi a1, 0xff # Avoid problems with bogus arguments
+ sll t0, a1, 8
+ or a1, t0
+ sll t0, a1, 16
+ or a1, t0 # a1 is now pattern in full word
+
+-$ueven: subu t0, zero, a0 # Unaligned address?
++L(ueven):
++ subu t0, zero, a0 # Unaligned address?
+ andi t0, 0x3
+- beq t0, zero, $chkw
++ beq t0, zero, L(chkw)
+ subu a2, t0
+ SWHI a1, 0(a0) # Yes, handle first unaligned part
+ addu a0, t0 # Now both a0 and a2 are updated
+
+-$chkw: andi t0, a2, 0x7 # Enough left for one loop iteration?
+- beq t0, a2, $chkl
++L(chkw):
++ andi t0, a2, 0x7 # Enough left for one loop iteration?
++ beq t0, a2, L(chkl)
+ subu a3, a2, t0
+ addu a3, a0 # a3 is last loop address +1
+ move a2, t0 # a2 is now # of bytes left after loop
+-$loopw: addiu a0, 8 # Handle 2 words pr. iteration
++L(loopw):
++ addiu a0, 8 # Handle 2 words pr. iteration
+ sw a1, -8(a0)
+- bne a0, a3, $loopw
++ bne a0, a3, L(loopw)
+ sw a1, -4(a0)
+
+-$chkl: andi t0, a2, 0x4 # Check if there is at least a full
+- beq t0, zero, $last8 # word remaining after the loop
++L(chkl):
++ andi t0, a2, 0x4 # Check if there is at least a full
++ beq t0, zero, L(last8) # word remaining after the loop
+ subu a2, t0
+ sw a1, 0(a0) # Yes...
+ addiu a0, 4
+
+-$last8: blez a2, $exit # Handle last 8 bytes (if cnt>0)
++L(last8):
++ blez a2, L(exit) # Handle last 8 bytes (if cnt>0)
+ addu a3, a2, a0 # a3 is last address +1
+-$lst8l: addiu a0, 1
+- bne a0, a3, $lst8l
++L(lst8l):
++ addiu a0, 1
++ bne a0, a3, L(lst8l)
+ sb a1, -1(a0)
+-$exit: j ra # Bye, bye
++L(exit):
++ j ra # Bye, bye
+ nop
+
+ .set reorder
+ END (memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/mips/mips32/Implies 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips32/Implies 2003-03-29 03:15:28.000000000 -0500
+@@ -0,0 +1,2 @@
++mips
++wordsize-32
+--- glibc-2.3.2/sysdeps/mips/mips32/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips32/Makefile 2003-03-29 03:15:28.000000000 -0500
+@@ -0,0 +1,3 @@
++ifeq ($(filter -mabi=32,$(CC)),)
++CC += -mabi=32
++endif
+--- glibc-2.3.2/sysdeps/mips/mips64/Implies 1999-07-14 03:27:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/Implies 2003-03-18 16:46:09.000000000 -0500
+@@ -1,4 +1,3 @@
+-wordsize-64
+ # MIPS uses IEEE 754 floating point.
+ ieee754/flt-32
+ ieee754/dbl-64
+--- glibc-2.3.2/sysdeps/mips/mips64/__longjmp.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/__longjmp.c 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1992, 1995, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+@@ -38,6 +38,7 @@
+ register int val asm ("a1");
+
+ /* Pull back the floating point callee-saved registers. */
++#if defined _ABI64 && _MIPS_SIM == _ABI64
+ asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[0]));
+ asm volatile ("l.d $f25, %0" : : "m" (env[0].__fpregs[1]));
+ asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[2]));
+@@ -46,6 +47,14 @@
+ asm volatile ("l.d $f29, %0" : : "m" (env[0].__fpregs[5]));
+ asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[6]));
+ asm volatile ("l.d $f31, %0" : : "m" (env[0].__fpregs[7]));
++#else
++ asm volatile ("l.d $f20, %0" : : "m" (env[0].__fpregs[0]));
++ asm volatile ("l.d $f22, %0" : : "m" (env[0].__fpregs[1]));
++ asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[2]));
++ asm volatile ("l.d $f26, %0" : : "m" (env[0].__fpregs[3]));
++ asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4]));
++ asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5]));
++#endif
+
+ /* Get and reconstruct the floating point csr. */
+ asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr));
+--- glibc-2.3.2/sysdeps/mips/mips64/add_n.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/add_n.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS3 __mpn_add_n -- Add two limb vectors of the same length > 0 and
+ * store sum in a third limb vector.
+ *
+- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -22,6 +22,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /*
+ * INPUT PARAMETERS
+@@ -38,10 +39,10 @@
+ .globl __mpn_add_n
+ .ent __mpn_add_n
+ __mpn_add_n:
+- .set noreorder
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ ld $10,0($5)
+@@ -49,12 +50,12 @@
+
+ daddiu $7,$7,-1
+ and $9,$7,4-1 # number of limbs in first loop
+- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
+- move $2,$0
++ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
++ move $2,$0
+
+ dsubu $7,$7,$9
+
+-.Loop0: daddiu $9,$9,-1
++L(Loop0): daddiu $9,$9,-1
+ ld $12,8($5)
+ daddu $11,$11,$2
+ ld $13,8($6)
+@@ -68,13 +69,13 @@
+ daddiu $6,$6,8
+ move $10,$12
+ move $11,$13
+- bne $9,$0,.Loop0
+- daddiu $4,$4,8
++ bne $9,$0,L(Loop0)
++ daddiu $4,$4,8
+
+-.L0: beq $7,$0,.Lend
+- nop
++L(L0): beq $7,$0,L(Lend)
++ nop
+
+-.Loop: daddiu $7,$7,-4
++L(Loop): daddiu $7,$7,-4
+
+ ld $12,8($5)
+ daddu $11,$11,$2
+@@ -115,10 +116,10 @@
+ daddiu $5,$5,32
+ daddiu $6,$6,32
+
+- bne $7,$0,.Loop
+- daddiu $4,$4,32
++ bne $7,$0,L(Loop)
++ daddiu $4,$4,32
+
+-.Lend: daddu $11,$11,$2
++L(Lend): daddu $11,$11,$2
+ sltu $8,$11,$2
+ daddu $11,$10,$11
+ sltu $2,$11,$10
+--- glibc-2.3.2/sysdeps/mips/mips64/addmul_1.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/addmul_1.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS3 __mpn_addmul_1 -- Multiply a limb vector with a single limb and
+ * add the product to a second limb vector.
+ *
+- * Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
++ * Copyright (C) 1992, 1994, 1995, 2002, 2003 Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -22,6 +22,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* INPUT PARAMETERS
+ * res_ptr $4
+@@ -38,10 +39,10 @@
+ .globl __mpn_addmul_1
+ .ent __mpn_addmul_1
+ __mpn_addmul_1:
+- .set noreorder
+ #ifdef PIC
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ # warm up phase 0
+@@ -52,14 +53,14 @@
+ dmultu $8,$7
+
+ daddiu $6,$6,-1
+- beq $6,$0,$LC0
+- move $2,$0 # zero cy2
++ beq $6,$0,L(LC0)
++ move $2,$0 # zero cy2
+
+ daddiu $6,$6,-1
+- beq $6,$0,$LC1
++ beq $6,$0,L(LC1)
+ ld $8,0($5) # load new s1 limb as early as possible
+
+-Loop: ld $10,0($4)
++L(Loop): ld $10,0($4)
+ mflo $3
+ mfhi $9
+ daddiu $5,$5,8
+@@ -73,11 +74,11 @@
+ daddu $2,$2,$10
+ sd $3,0($4)
+ daddiu $4,$4,8
+- bne $6,$0,Loop
+- daddu $2,$9,$2 # add high product limb and carry from addition
++ bne $6,$0,L(Loop)
++ daddu $2,$9,$2 # add high product limb and carry from addition
+
+ # cool down phase 1
+-$LC1: ld $10,0($4)
++L(LC1): ld $10,0($4)
+ mflo $3
+ mfhi $9
+ daddu $3,$3,$2
+@@ -91,7 +92,7 @@
+ daddu $2,$9,$2 # add high product limb and carry from addition
+
+ # cool down phase 0
+-$LC0: ld $10,0($4)
++L(LC0): ld $10,0($4)
+ mflo $3
+ mfhi $9
+ daddu $3,$3,$2
+--- glibc-2.3.2/sysdeps/mips/mips64/bits/setjmp.h 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/bits/setjmp.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,57 +0,0 @@
+-/* Define the machine-dependent type `jmp_buf'. MIPS version.
+- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _SETJMP_H
+-# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+-#endif
+-
+-typedef struct
+- {
+- /* Program counter. */
+- __ptr_t __pc;
+-
+- /* Stack pointer. */
+- __ptr_t __sp;
+-
+- /* Callee-saved registers s0 through s7. */
+- int __regs[8];
+-
+- /* The frame pointer. */
+- __ptr_t __fp;
+-
+- /* The global pointer. */
+- __ptr_t __gp;
+-
+- /* Floating point status register. */
+- int __fpc_csr;
+-
+- /* Callee-saved floating point registers. */
+- double __fpregs[8];
+- } __jmp_buf[1];
+-
+-#ifdef __USE_MISC
+-/* Offset to the program counter in `jmp_buf'. */
+-# define JB_PC 0
+-#endif
+-
+-
+-/* Test if longjmp to JMPBUF would unwind the frame
+- containing a local variable at ADDRESS. */
+-#define _JMPBUF_UNWINDS(jmpbuf, address) \
+- ((__ptr_t) (address) < (jmpbuf)[0].__sp)
+--- glibc-2.3.2/sysdeps/mips/mips64/bsd-_setjmp.S 2002-12-31 14:13:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/bsd-_setjmp.S 2003-06-03 09:36:28.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. MIPS64 version.
+- Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,16 +22,26 @@
+ in setjmp doesn't clobber the state restored by longjmp. */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ #ifdef __PIC__
+ .option pic2
+ #endif
+ ENTRY (_setjmp)
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP
+ #endif
+- dla t9, C_SYMBOL_NAME (__sigsetjmp)
++ SETUP_GP64 (v0, C_SYMBOL_NAME (_setjmp))
++ PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ nop
+- jr t9
+- dli a1, 0 /* Pass a second argument of zero. */
++#endif
++ RESTORE_GP64
++ move a1, zero /* Pass a second argument of zero. */
++#ifdef __PIC__
++ jr t9
++#else
++ j C_SYMBOL_NAME (__sigsetjmp)
++#endif
++ .end _setjmp
+ libc_hidden_def (_setjmp)
+--- glibc-2.3.2/sysdeps/mips/mips64/bsd-setjmp.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/bsd-setjmp.S 2003-03-18 16:46:09.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. MIPS64 version.
+- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,15 +22,25 @@
+ in setjmp doesn't clobber the state restored by longjmp. */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ #ifdef PIC
+ .option pic2
+ #endif
+ ENTRY (setjmp)
+-#ifdef PIC
+- .cpload t9
++#ifdef __PIC__
++ SETUP_GP
+ #endif
+- dla t9, C_SYMBOL_NAME (__sigsetjmp)
++ SETUP_GP64 (v0, C_SYMBOL_NAME (setjmp))
++ PTR_LA t9, C_SYMBOL_NAME (__sigsetjmp)
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ nop
+- jr t9
++#endif
++ RESTORE_GP64
+ dli a1, 1 /* Pass a second argument of one. */
++#ifdef __PIC__
++ jr t9
++#else
++ j C_SYMBOL_NAME (__sigsetjmp)
++#endif
++ .end setjmp
+--- glibc-2.3.2/sysdeps/mips/mips64/dl-machine.h 2002-02-28 16:35:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/dl-machine.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,594 +0,0 @@
+-/* Machine-dependent ELF dynamic relocation inline functions. MIPS64 version.
+- Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+- Contributed by Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef dl_machine_h
+-#define dl_machine_h
+-
+-#define ELF_MACHINE_NAME "MIPS"
+-
+-#define ELF_MACHINE_NO_PLT
+-
+-#include <entry.h>
+-
+-#ifndef ENTRY_POINT
+-#error ENTRY_POINT needs to be defined for MIPS.
+-#endif
+-
+-#ifndef _RTLD_PROLOGUE
+-# define _RTLD_PROLOGUE(entry) "\n\t.globl " __STRING(entry) \
+- "\n\t.ent " __STRING(entry) \
+- "\n\t" __STRING(entry) ":\n\t"
+-#endif
+-
+-#ifndef _RTLD_EPILOGUE
+-# define _RTLD_EPILOGUE(entry) "\t.end " __STRING(entry) "\n"
+-#endif
+-
+-/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.
+- This makes no sense on MIPS but we have to define this to R_MIPS_REL32
+- to avoid the asserts in dl-lookup.c from blowing. */
+-#define ELF_MACHINE_JMP_SLOT R_MIPS_REL32
+-#define elf_machine_type_class(type) ELF_RTYPE_CLASS_PLT
+-
+-/* Translate a processor specific dynamic tag to the index
+- in l_info array. */
+-#define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
+-
+-#if 0
+-/* We may need 64k alignment. */
+-#define ELF_MACHINE_ALIGN_MASK 0xffff
+-#endif
+-
+-/*
+- * MIPS libraries are usually linked to a non-zero base address. We
+- * subtrace the base address from the address where we map the object
+- * to. This results in more efficient address space usage.
+- */
+-#if 0
+-#define MAP_BASE_ADDR(l) ((l)->l_info[DT_MIPS(BASE_ADDRESS)] ? \
+- (l)->l_info[DT_MIPS(BASE_ADDRESS)]->d_un.d_ptr : 0)
+-#else
+-#define MAP_BASE_ADDR(l) 0x5ffe0000
+-#endif
+-
+-/* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in
+- with the run-time address of the r_debug structure */
+-#define ELF_MACHINE_DEBUG_SETUP(l,r) \
+-do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
+- *(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \
+- (ElfW(Addr)) (r); \
+- } while (0)
+-
+-/* Return nonzero iff ELF header is compatible with the running host. */
+-static inline int __attribute__ ((unused))
+-elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
+-{
+- switch (ehdr->e_machine)
+- {
+- case EM_MIPS:
+- case EM_MIPS_RS3_LE:
+- return 1;
+- default:
+- return 0;
+- }
+-}
+-
+-static inline ElfW(Addr) *
+-elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
+-{
+- /* FIXME: the offset of gp from GOT may be system-dependent. */
+- return (ElfW(Addr) *) (gpreg - 0x7ff0);
+-}
+-
+-/* Return the link-time address of _DYNAMIC. Conveniently, this is the
+- first element of the GOT. This must be inlined in a function which
+- uses global data. */
+-static inline ElfW(Addr)
+-elf_machine_dynamic (void)
+-{
+- register ElfW(Addr) gp __asm__ ("$28");
+-
+- return *elf_mips_got_from_gpreg (gp);
+-}
+-
+-
+-/* Return the run-time load address of the shared object. */
+-static inline ElfW(Addr)
+-elf_machine_load_address (void)
+-{
+- ElfW(Addr) addr;
+- asm (" .set noreorder\n"
+- " dla %0, here\n"
+- " bltzal $0, here\n"
+- " nop\n"
+- "here: dsubu %0, $31, %0\n"
+- " .set reorder\n"
+- : "=r" (addr)
+- : /* No inputs */
+- : "$31");
+- return addr;
+-}
+-
+-/* The MSB of got[1] of a gnu object is set to identify gnu objects. */
+-#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
+-
+-/* Relocate GOT. */
+-static inline void
+-elf_machine_got_rel (struct link_map *map, int lazy)
+-{
+- ElfW(Addr) *got;
+- ElfW(Sym) *sym;
+- int i, n;
+- const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+-
+-#define RESOLVE_GOTSYM(sym) \
+- ({ \
+- const ElfW(Sym) *ref = sym; \
+- ElfW(Addr) sym_loadaddr; \
+- sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, \
+- map->l_scope, \
+- map->l_name, R_MIPS_REL32);\
+- (ref)? sym_loadaddr + ref->st_value: 0; \
+- })
+-
+- got = (ElfW(Addr) *) D_PTR (map, l_info[DT_PLTGOT]);
+-
+- /* got[0] is reserved. got[1] is also reserved for the dynamic object
+- generated by gnu ld. Skip these reserved entries from relocation. */
+- i = (got[1] & ELF_MIPS_GNU_GOT1_MASK)? 2: 1;
+- n = map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
+- /* Add the run-time display to all local got entries. */
+- while (i < n)
+- got[i++] += map->l_addr;
+-
+- /* Handle global got entries. */
+- got += n;
+- sym = (ElfW(Sym) *) D_PTR (map, l_info[DT_SYMTAB]);
+- sym += map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val;
+- i = (map->l_info[DT_MIPS (SYMTABNO)]->d_un.d_val
+- - map->l_info[DT_MIPS (GOTSYM)]->d_un.d_val);
+-
+- while (i--)
+- {
+- if (sym->st_shndx == SHN_UNDEF)
+- {
+- if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC)
+- {
+- if (sym->st_value && lazy)
+- *got = sym->st_value + map->l_addr;
+- else
+- *got = RESOLVE_GOTSYM (sym);
+- }
+- else /* if (*got == 0 || *got == QS) */
+- *got = RESOLVE_GOTSYM (sym);
+- }
+- else if (sym->st_shndx == SHN_COMMON)
+- *got = RESOLVE_GOTSYM (sym);
+- else if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC
+- && *got != sym->st_value
+- && lazy)
+- *got += map->l_addr;
+- else if (ELFW(ST_TYPE) (sym->st_info) == STT_SECTION)
+- {
+- if (sym->st_other == 0)
+- *got += map->l_addr;
+- }
+- else
+- *got = RESOLVE_GOTSYM (sym);
+-
+- got++;
+- sym++;
+- }
+-
+-#undef RESOLVE_GOTSYM
+-
+- return;
+-}
+-
+-/* Set up the loaded object described by L so its stub function
+- will jump to the on-demand fixup code in dl-runtime.c. */
+-
+-static inline int
+-elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+-{
+- ElfW(Addr) *got;
+- extern void _dl_runtime_resolve (ElfW(Word));
+- extern int _dl_mips_gnu_objects;
+-
+-#ifdef RTLD_BOOTSTRAP
+- {
+- return lazy;
+- }
+-#endif
+- if (lazy)
+- {
+- /* The GOT entries for functions have not yet been filled in.
+- Their initial contents will arrange when called to put an
+- offset into the .dynsym section in t8, the return address
+- in t7 and then jump to _GLOBAL_OFFSET_TABLE[0]. */
+- got = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]);
+-
+- /* This function will get called to fix up the GOT entry indicated by
+- the register t8, and then jump to the resolved address. */
+- got[0] = (ElfW(Addr)) &_dl_runtime_resolve;
+-
+- /* Store l to _GLOBAL_OFFSET_TABLE[1] for gnu object. The MSB
+- of got[1] of a gnu object is set to identify gnu objects.
+- Where we can store l for non gnu objects? XXX */
+- if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
+- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
+- else
+- _dl_mips_gnu_objects = 0;
+- }
+-
+- /* Relocate global offset table. */
+- elf_machine_got_rel (l, lazy);
+-
+- return lazy;
+-}
+-
+-/* Get link_map for this object. */
+-static inline struct link_map *
+-elf_machine_runtime_link_map (ElfW(Addr) gpreg, ElfW(Addr) stub_pc)
+-{
+- extern int _dl_mips_gnu_objects;
+-
+- /* got[1] is reserved to keep its link map address for the shared
+- object generated by the gnu linker. If all are such objects, we
+- can find the link map from current GPREG simply. If not so, get
+- the link map for caller's object containing STUB_PC. */
+-
+- if (_dl_mips_gnu_objects)
+- {
+- ElfW(Addr) *got = elf_mips_got_from_gpreg (gpreg);
+- ElfW(Word) g1;
+-
+- g1 = ((ElfW(Word) *) got)[1];
+-
+- if ((g1 & ELF_MIPS_GNU_GOT1_MASK) != 0)
+- {
+- struct link_map *l =
+- (struct link_map *) (g1 & ~ELF_MIPS_GNU_GOT1_MASK);
+- ElfW(Addr) base, limit;
+- const ElfW(Phdr) *p = l->l_phdr;
+- ElfW(Half) this, nent = l->l_phnum;
+-
+- /* For the common case of a stub being called from the containing
+- object, STUB_PC will point to somewhere within the object that
+- is described by the link map fetched via got[1]. Otherwise we
+- have to scan all maps. */
+- for (this = 0; this < nent; this++)
+- {
+- if (p[this].p_type == PT_LOAD)
+- {
+- base = p[this].p_vaddr + l->l_addr;
+- limit = base + p[this].p_memsz;
+- if (stub_pc >= base && stub_pc < limit)
+- return l;
+- }
+- this++;
+- }
+- }
+- }
+-
+- {
+- struct link_map *l = GL(dl_loaded);
+-
+- while (l)
+- {
+- ElfW(Addr) base, limit;
+- const ElfW(Phdr) *p = l->l_phdr;
+- ElfW(Half) this, nent = l->l_phnum;
+-
+- for (this = 0; this < nent; this++)
+- {
+- if (p[this].p_type == PT_LOAD)
+- {
+- base = p[this].p_vaddr + l->l_addr;
+- limit = base + p[this].p_memsz;
+- if (stub_pc >= base && stub_pc < limit)
+- return l;
+- }
+- }
+- l = l->l_next;
+- }
+- }
+-
+- _dl_signal_error (0, NULL, NULL, "cannot find runtime link map");
+- return NULL;
+-}
+-
+-/* Mips has no PLT but define elf_machine_relplt to be elf_machine_rel. */
+-#define elf_machine_relplt elf_machine_rel
+-
+-/* Define mips specific runtime resolver. The function __dl_runtime_resolve
+- is called from assembler function _dl_runtime_resolve which converts
+- special argument registers t7 ($15) and t8 ($24):
+- t7 address to return to the caller of the function
+- t8 index for this function symbol in .dynsym
+- to usual c arguments. */
+-
+-#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
+-/* The flag _dl_mips_gnu_objects is set if all dynamic objects are \
+- generated by the gnu linker. */ \
+-int _dl_mips_gnu_objects = 1; \
+- \
+-/* This is called from assembly stubs below which the compiler can't see. */ \
+-static ElfW(Addr) \
+-__dl_runtime_resolve (ElfW(Word), ElfW(Word), ElfW(Addr), ElfW(Addr)) \
+- __attribute__ ((unused)); \
+- \
+-static ElfW(Addr) \
+-__dl_runtime_resolve (ElfW(Word) sym_index, \
+- ElfW(Word) return_address, \
+- ElfW(Addr) old_gpreg, \
+- ElfW(Addr) stub_pc) \
+-{ \
+- struct link_map *l = elf_machine_runtime_link_map (old_gpreg, stub_pc); \
+- const ElfW(Sym) *const symtab \
+- = (const ElfW(Sym) *) D_PTR (l, l_info[DT_SYMTAB]); \
+- const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]); \
+- const ElfW(Addr) *got \
+- = (const ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \
+- const ElfW(Word) local_gotno \
+- = (const ElfW(Word)) l->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val; \
+- const ElfW(Word) gotsym \
+- = (const ElfW(Word)) l->l_info[DT_MIPS (GOTSYM)]->d_un.d_val; \
+- const ElfW(Sym) *definer; \
+- ElfW(Addr) loadbase; \
+- ElfW(Addr) funcaddr; \
+- \
+- /* Look up the symbol's run-time value. */ \
+- definer = &symtab[sym_index]; \
+- \
+- loadbase = _dl_lookup_symbol (strtab + definer->st_name, &definer, \
+- l->l_scope, l->l_name, \
+- R_MIPS_REL32); \
+- \
+- /* Apply the relocation with that value. */ \
+- funcaddr = loadbase + definer->st_value; \
+- *(got + local_gotno + sym_index - gotsym) = funcaddr; \
+- \
+- return funcaddr; \
+-} \
+- \
+-asm ("\n \
+- .text\n \
+- .align 3\n \
+- .globl _dl_runtime_resolve\n \
+- .type _dl_runtime_resolve,@function\n \
+- .ent _dl_runtime_resolve\n \
+-_dl_runtime_resolve:\n \
+- .set noreorder\n \
+- # Save old GP to $3.\n \
+- move $3,$28\n \
+- # Modify t9 ($25) so as to point .cpload instruction.\n \
+- daddu $25,2*8\n \
+- # Compute GP.\n \
+- .cpload $25\n \
+- .set reorder\n \
+- # Save slot call pc.\n \
+- move $2, $31\n \
+- # Save arguments and sp value in stack.\n \
+- dsubu $29, 10*8\n \
+- .cprestore 8*8\n \
+- sd $15, 9*8($29)\n \
+- sd $4, 3*8($29)\n \
+- sd $5, 4*8($29)\n \
+- sd $6, 5*8($29)\n \
+- sd $7, 6*8($29)\n \
+- sd $16, 7*8($29)\n \
+- move $16, $29\n \
+- move $4, $24\n \
+- move $5, $15\n \
+- move $6, $3\n \
+- move $7, $2\n \
+- jal __dl_runtime_resolve\n \
+- move $29, $16\n \
+- ld $31, 9*8($29)\n \
+- ld $4, 3*8($29)\n \
+- ld $5, 4*8($29)\n \
+- ld $6, 5*8($29)\n \
+- ld $7, 6*8($29)\n \
+- ld $16, 7*8($29)\n \
+- daddu $29, 10*8\n \
+- move $25, $2\n \
+- jr $25\n \
+- .end _dl_runtime_resolve\n \
+- .previous\n \
+-");
+-
+-/* Mask identifying addresses reserved for the user program,
+- where the dynamic linker should not map anything. */
+-#define ELF_MACHINE_USER_ADDRESS_MASK 0x80000000UL
+-
+-
+-
+-/* Initial entry point code for the dynamic linker.
+- The C function `_dl_start' is the real entry point;
+- its return value is the user program's entry point.
+- Note how we have to be careful about two things:
+-
+- 1) That we allocate a minimal stack of 24 bytes for
+- every function call, the MIPS ABI states that even
+- if all arguments are passed in registers the procedure
+- called can use the 16 byte area pointed to by $sp
+- when it is called to store away the arguments passed
+- to it.
+-
+- 2) That under Linux the entry is named __start
+- and not just plain _start. */
+-
+-#define RTLD_START asm ("\
+- .text\n\
+- .align 3\n"\
+-_RTLD_PROLOGUE (ENTRY_POINT)\
+-" .globl _dl_start_user\n\
+- .set noreorder\n\
+- bltzal $0, 0f\n\
+- nop\n\
+-0: .cpload $31\n\
+- .set reorder\n\
+- # i386 ABI book says that the first entry of GOT holds\n\
+- # the address of the dynamic structure. Though MIPS ABI\n\
+- # doesn't say nothing about this, I emulate this here.\n\
+- dla $4, _DYNAMIC\n\
+- sd $4, -0x7ff0($28)\n\
+- dsubu $29, 16\n\
+- move $4, $29\n\
+- jal _dl_start\n\
+- daddiu $29, 16\n\
+- # Get the value of label '_dl_start_user' in t9 ($25).\n\
+- dla $25, _dl_start_user\n\
+-_dl_start_user:\n\
+- .set noreorder\n\
+- .cpload $25\n\
+- .set reorder\n\
+- move $16, $28\n\
+- # Save the user entry point address in saved register.\n\
+- move $17, $2\n\
+- # Store the highest stack address\n\
+- sd $29, __libc_stack_end\n\
+- # See if we were run as a command with the executable file\n\
+- # name as an extra leading argument.\n\
+- ld $2, _dl_skip_args\n\
+- beq $2, $0, 1f\n\
+- # Load the original argument count.\n\
+- ld $4, 0($29)\n\
+- # Subtract _dl_skip_args from it.\n\
+- dsubu $4, $2\n\
+- # Adjust the stack pointer to skip _dl_skip_args words.\n\
+- dsll $2,2\n\
+- daddu $29, $2\n\
+- # Save back the modified argument count.\n\
+- sd $4, 0($29)\n\
+-1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
+- ld $4, _rtld_local\n\
+- ld $5, 0($29)\n\
+- dla $6, 4($29)\n\
+- dla $7, 8($29)\n\
+- dsubu $29, 16\n\
+- # Call the function to run the initializers.\n\
+- jal _dl_init_internal\n\
+- daddiu $29, 16\n\
+- # Pass our finalizer function to the user in ra.\n\
+- dla $31, _dl_fini\n\
+- # Jump to the user entry point.\n\
+-1: # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) \n\
+- lw $4, _rtld_local\n\
+- lw $5, 0($29)\n\
+- la $6, 4($29)\n\
+- la $7, 8($29)\n\
+- subu $29, 16\n\
+- # Call the function to run the initializers.\n\
+- jal _dl_init_internal\n\
+- addiu $29, 16\n\
+- # Pass our finalizer function to the user in ra.\n\
+- dla $31, _dl_fini\n\
+- # Jump to the user entry point.\n\
+- move $25, $17\n\
+- ld $4, 0($29)\n\
+- ld $5, 1*8($29)\n\
+- ld $6, 2*8$29)\n\
+- ld $7, 3*8($29)\n\
+- jr $25\n"\
+-_RTLD_EPILOGUE(ENTRY_POINT) \
+- "\n.previous"\
+-);
+-
+-
+-/* The MIPS never uses Elfxx_Rela relocations. */
+-#define ELF_MACHINE_NO_RELA 1
+-
+-#endif /* !dl_machine_h */
+-
+-#ifdef RESOLVE
+-
+-/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
+- MAP is the object containing the reloc. */
+-
+-static inline void
+-elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
+- const ElfW(Sym) *sym, const struct r_found_version *version,
+- ElfW(Addr) *const reloc_addr)
+-{
+- const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
+- ElfW(Addr) loadbase;
+- ElfW(Addr) undo __attribute__ ((unused));
+-
+- switch (r_type)
+- {
+- case R_MIPS_REL32:
+- {
+- ElfW(Addr) undo = 0;
+-
+- if (ELFW(ST_BIND) (sym->st_info) == STB_LOCAL
+- && (ELFW(ST_TYPE) (sym->st_info) == STT_SECTION
+- || ELFW(ST_TYPE) (sym->st_info) == STT_NOTYPE))
+- {
+- *reloc_addr += map->l_addr;
+- break;
+- }
+-#ifndef RTLD_BOOTSTRAP
+- /* This is defined in rtld.c, but nowhere in the static libc.a;
+- make the reference weak so static programs can still link. This
+- declaration cannot be done when compiling rtld.c (i.e. #ifdef
+- RTLD_BOOTSTRAP) because rtld.c contains the common defn for
+- _dl_rtld_map, which is incompatible with a weak decl in the same
+- file. */
+-# ifndef SHARED
+- weak_extern (GL(dl_rtld_map));
+-# endif
+- if (map == &GL(dl_rtld_map))
+- /* Undo the relocation done here during bootstrapping. Now we will
+- relocate it anew, possibly using a binding found in the user
+- program or a loaded library rather than the dynamic linker's
+- built-in definitions used while loading those libraries. */
+- undo = map->l_addr + sym->st_value;
+-#endif
+- loadbase = RESOLVE (&sym, version, 0);
+- *reloc_addr += (sym ? (loadbase + sym->st_value) : 0) - undo;
+- }
+- break;
+-#ifndef RTLD_BOOTSTRAP
+- case R_MIPS_NONE: /* Alright, Wilbur. */
+- break;
+-#endif
+- default:
+- _dl_reloc_bad_type (map, r_type, 0);
+- break;
+- }
+-}
+-
+-static inline void
+-elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
+- ElfW(Addr) *const reloc_addr)
+-{
+- /* XXX Nothing to do. There is no relative relocation, right? */
+-}
+-
+-static inline void
+-elf_machine_lazy_rel (struct link_map *map, ElfW(Addr) l_addr,
+- const ElfW(Rel) *reloc)
+-{
+- /* Do nothing. */
+-}
+-
+-#endif /* RESOLVE */
+--- glibc-2.3.2/sysdeps/mips/mips64/gmp-mparam.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/gmp-mparam.h 2003-03-17 10:47:12.000000000 -0500
+@@ -0,0 +1,31 @@
++/* gmp-mparam.h -- Compiler/machine parameter header file.
++
++Copyright (C) 1991, 1993, 1994, 2002, 2003 Free Software Foundation, Inc.
++
++This file is part of the GNU MP Library.
++
++The GNU MP Library is free software; you can redistribute it and/or modify
++it under the terms of the GNU Lesser General Public License as published by
++the Free Software Foundation; either version 2.1 of the License, or (at your
++option) any later version.
++
++The GNU MP Library is distributed in the hope that it will be useful, but
++WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
++License for more details.
++
++You should have received a copy of the GNU Lesser General Public License
++along with the GNU MP Library; see the file COPYING.LIB. If not, write to
++the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
++
++#if defined __GMP_H__ && ! defined _LONG_LONG_LIMB
++#error "Included too late for _LONG_LONG_LIMB to take effect"
++#endif
++
++#define _LONG_LONG_LIMB
++#define BITS_PER_MP_LIMB 64
++#define BYTES_PER_MP_LIMB 8
++#define BITS_PER_LONGINT __WORDSIZE
++#define BITS_PER_INT 32
++#define BITS_PER_SHORTINT 16
++#define BITS_PER_CHAR 8
+--- glibc-2.3.2/sysdeps/mips/mips64/lshift.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/lshift.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,6 +1,6 @@
+ /* MIPS3 __mpn_lshift --
+ *
+- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -21,6 +21,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* INPUT PARAMETERS
+ * res_ptr $4
+@@ -37,10 +38,10 @@
+ .globl __mpn_lshift
+ .ent __mpn_lshift
+ __mpn_lshift:
+- .set noreorder
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ dsll $2,$6,3
+@@ -50,12 +51,12 @@
+ daddu $4,$4,$2 # make r4 point at end of res
+ daddiu $6,$6,-1
+ and $9,$6,4-1 # number of limbs in first loop
+- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
+- dsrl $2,$10,$13 # compute function result
++ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
++ dsrl $2,$10,$13 # compute function result
+
+ dsubu $6,$6,$9
+
+-.Loop0: ld $3,-16($5)
++L(Loop0): ld $3,-16($5)
+ daddiu $4,$4,-8
+ daddiu $5,$5,-8
+ daddiu $9,$9,-1
+@@ -63,13 +64,13 @@
+ dsrl $12,$3,$13
+ move $10,$3
+ or $8,$11,$12
+- bne $9,$0,.Loop0
+- sd $8,0($4)
++ bne $9,$0,L(Loop0)
++ sd $8,0($4)
+
+-.L0: beq $6,$0,.Lend
+- nop
++L(L0): beq $6,$0,L(Lend)
++ nop
+
+-.Loop: ld $3,-16($5)
++L(Loop): ld $3,-16($5)
+ daddiu $4,$4,-32
+ daddiu $6,$6,-4
+ dsll $11,$10,$7
+@@ -95,10 +96,10 @@
+
+ daddiu $5,$5,-32
+ or $8,$14,$9
+- bgtz $6,.Loop
+- sd $8,0($4)
++ bgtz $6,L(Loop)
++ sd $8,0($4)
+
+-.Lend: dsll $8,$10,$7
++L(Lend): dsll $8,$10,$7
+ j $31
+ sd $8,-8($4)
+ .end __mpn_lshift
+--- glibc-2.3.2/sysdeps/mips/mips64/memcpy.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/memcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -0,0 +1,140 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
++ Ported to mips3 n32/n64 by Alexandre Oliva <aoliva@redhat.com>
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <endian.h>
++#include <sys/asm.h>
++
++
++/* void *memcpy(void *s1, const void *s2, size_t n);
++
++ This could probably be optimized further. */
++
++#if __BYTE_ORDER == __BIG_ENDIAN
++# define LDHI ldl /* high part is left in big-endian */
++# define SDHI sdl /* high part is left in big-endian */
++# define LDLO ldr /* low part is right in big-endian */
++# define SDLO sdr /* low part is right in big-endian */
++#else
++# define LDHI ldr /* high part is right in little-endian */
++# define SDHI sdr /* high part is right in little-endian */
++# define LDLO ldl /* low part is left in little-endian */
++# define SDLO sdl /* low part is left in little-endian */
++#endif
++
++ENTRY (memcpy)
++ .set noreorder
++
++ slti t0, a2, 16 # Less than 16?
++ bne t0, zero, L(last16)
++ move v0, a0 # Setup exit value before too late
++
++ xor t0, a1, a0 # Find a0/a1 displacement
++ andi t0, 0x7
++ bne t0, zero, L(shift) # Go handle the unaligned case
++ PTR_SUBU t1, zero, a1
++ andi t1, 0x7 # a0/a1 are aligned, but are we
++ beq t1, zero, L(chk8w) # starting in the middle of a word?
++ PTR_SUBU a2, t1
++ LDHI t0, 0(a1) # Yes we are... take care of that
++ PTR_ADDU a1, t1
++ SDHI t0, 0(a0)
++ PTR_ADDU a0, t1
++
++L(chk8w):
++ andi t0, a2, 0x3f # 64 or more bytes left?
++ beq t0, a2, L(chk1w)
++ PTR_SUBU a3, a2, t0 # Yes
++ PTR_ADDU a3, a1 # a3 = end address of loop
++ move a2, t0 # a2 = what will be left after loop
++L(lop8w):
++ ld t0, 0(a1) # Loop taking 8 words at a time
++ ld t1, 8(a1)
++ ld t2, 16(a1)
++ ld t3, 24(a1)
++ ld ta0, 32(a1)
++ ld ta1, 40(a1)
++ ld ta2, 48(a1)
++ ld ta3, 56(a1)
++ PTR_ADDIU a0, 64
++ PTR_ADDIU a1, 64
++ sd t0, -64(a0)
++ sd t1, -56(a0)
++ sd t2, -48(a0)
++ sd t3, -40(a0)
++ sd ta0, -32(a0)
++ sd ta1, -24(a0)
++ sd ta2, -16(a0)
++ bne a1, a3, L(lop8w)
++ sd ta3, -8(a0)
++
++L(chk1w):
++ andi t0, a2, 0x7 # 8 or more bytes left?
++ beq t0, a2, L(last16)
++ PTR_SUBU a3, a2, t0 # Yes, handle them one dword at a time
++ PTR_ADDU a3, a1 # a3 again end address
++ move a2, t0
++L(lop1w):
++ ld t0, 0(a1)
++ PTR_ADDIU a0, 8
++ PTR_ADDIU a1, 8
++ bne a1, a3, L(lop1w)
++ sd t0, -8(a0)
++
++L(last16):
++ blez a2, L(lst16e) # Handle last 16 bytes, one at a time
++ PTR_ADDU a3, a2, a1
++L(lst16l):
++ lb t0, 0(a1)
++ PTR_ADDIU a0, 1
++ PTR_ADDIU a1, 1
++ bne a1, a3, L(lst16l)
++ sb t0, -1(a0)
++L(lst16e):
++ jr ra # Bye, bye
++ nop
++
++L(shift):
++ PTR_SUBU a3, zero, a0 # Src and Dest unaligned
++ andi a3, 0x7 # (unoptimized case...)
++ beq a3, zero, L(shft1)
++ PTR_SUBU a2, a3 # a2 = bytes left
++ LDHI t0, 0(a1) # Take care of first odd part
++ LDLO t0, 7(a1)
++ PTR_ADDU a1, a3
++ SDHI t0, 0(a0)
++ PTR_ADDU a0, a3
++L(shft1):
++ andi t0, a2, 0x7
++ PTR_SUBU a3, a2, t0
++ PTR_ADDU a3, a1
++L(shfth):
++ LDHI t1, 0(a1) # Limp through, dword by dword
++ LDLO t1, 7(a1)
++ PTR_ADDIU a0, 8
++ PTR_ADDIU a1, 8
++ bne a1, a3, L(shfth)
++ sd t1, -8(a0)
++ b L(last16) # Handle anything which may be left
++ move a2, t0
++
++ .set reorder
++END (memcpy)
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/mips/mips64/memset.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/memset.S 2003-05-12 12:13:07.000000000 -0400
+@@ -0,0 +1,92 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
++ Ported to mips3 n32/n64 by Alexandre Oliva <aoliva@redhat.com>
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <endian.h>
++#include <sys/asm.h>
++
++
++/* void *memset(void *s, int c, size_t n);
++
++ This could probably be optimized further. */
++
++#if __BYTE_ORDER == __BIG_ENDIAN
++# define SDHI sdl /* high part is left in big-endian */
++#else
++# define SDHI sdr /* high part is right in little-endian */
++#endif
++
++ENTRY (memset)
++ .set noreorder
++
++ slti ta1, a2, 16 # Less than 16?
++ bne ta1, zero, L(last16)
++ move v0, a0 # Setup exit value before too late
++
++ beq a1, zero, L(ueven) # If zero pattern, no need to extend
++ andi a1, 0xff # Avoid problems with bogus arguments
++ dsll ta0, a1, 8
++ or a1, ta0
++ dsll ta0, a1, 16
++ or a1, ta0 # a1 is now pattern in full word
++ dsll ta0, a1, 32
++ or a1, ta0 # a1 is now pattern in double word
++
++L(ueven):
++ PTR_SUBU ta0, zero, a0 # Unaligned address?
++ andi ta0, 0x7
++ beq ta0, zero, L(chkw)
++ PTR_SUBU a2, ta0
++ SDHI a1, 0(a0) # Yes, handle first unaligned part
++ PTR_ADDU a0, ta0 # Now both a0 and a2 are updated
++
++L(chkw):
++ andi ta0, a2, 0xf # Enough left for one loop iteration?
++ beq ta0, a2, L(chkl)
++ PTR_SUBU a3, a2, ta0
++ PTR_ADDU a3, a0 # a3 is last loop address +1
++ move a2, ta0 # a2 is now # of bytes left after loop
++L(loopw):
++ PTR_ADDIU a0, 16 # Handle 2 dwords pr. iteration
++ sd a1, -16(a0)
++ bne a0, a3, L(loopw)
++ sd a1, -8(a0)
++
++L(chkl):
++ andi ta0, a2, 0x8 # Check if there is at least a double
++ beq ta0, zero, L(last16) # word remaining after the loop
++ PTR_SUBU a2, ta0
++ sd a1, 0(a0) # Yes...
++ PTR_ADDIU a0, 8
++
++L(last16):
++ blez a2, L(exit) # Handle last 16 bytes (if cnt>0)
++ PTR_ADDU a3, a2, a0 # a3 is last address +1
++L(lst16l):
++ PTR_ADDIU a0, 1
++ bne a0, a3, L(lst16l)
++ sb a1, -1(a0)
++L(exit):
++ j ra # Bye, bye
++ nop
++
++ .set reorder
++END (memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/mips/mips64/mul_1.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/mul_1.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,8 @@
+ /* MIPS3 __mpn_mul_1 -- Multiply a limb vector with a single limb and
+ * store the product in a second limb vector.
+ *
+- * Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
++ * Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -22,6 +23,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* INPUT PARAMETERS
+ * res_ptr $4
+@@ -38,10 +40,10 @@
+ .globl __mpn_mul_1
+ .ent __mpn_mul_1
+ __mpn_mul_1:
+- .set noreorder
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ # warm up phase 0
+@@ -52,14 +54,14 @@
+ dmultu $8,$7
+
+ daddiu $6,$6,-1
+- beq $6,$0,$LC0
+- move $2,$0 # zero cy2
++ beq $6,$0,L(LC0)
++ move $2,$0 # zero cy2
+
+ daddiu $6,$6,-1
+- beq $6,$0,$LC1
++ beq $6,$0,L(LC1)
+ ld $8,0($5) # load new s1 limb as early as possible
+
+-Loop: mflo $10
++L(Loop): mflo $10
+ mfhi $9
+ daddiu $5,$5,8
+ daddu $10,$10,$2 # add old carry limb to low product limb
+@@ -69,11 +71,11 @@
+ sltu $2,$10,$2 # carry from previous addition -> $2
+ sd $10,0($4)
+ daddiu $4,$4,8
+- bne $6,$0,Loop
+- daddu $2,$9,$2 # add high product limb and carry from addition
++ bne $6,$0,L(Loop)
++ daddu $2,$9,$2 # add high product limb and carry from addition
+
+ # cool down phase 1
+-$LC1: mflo $10
++L(LC1): mflo $10
+ mfhi $9
+ daddu $10,$10,$2
+ sltu $2,$10,$2
+@@ -83,7 +85,7 @@
+ daddu $2,$9,$2 # add high product limb and carry from addition
+
+ # cool down phase 0
+-$LC0: mflo $10
++L(LC0): mflo $10
+ mfhi $9
+ daddu $10,$10,$2
+ sltu $2,$10,$2
+--- glibc-2.3.2/sysdeps/mips/mips64/n32/Implies 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/n32/Implies 2003-09-19 22:37:08.000000000 -0400
+@@ -0,0 +1,4 @@
++ieee754/ldbl-128
++mips/mips64
++mips
++wordsize-32
+--- glibc-2.3.2/sysdeps/mips/mips64/n32/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/n32/Makefile 2003-04-12 11:39:46.000000000 -0400
+@@ -0,0 +1,6 @@
++# `long double' is a distinct type we support.
++long-double-fcts = yes
++
++ifeq ($(filter -mabi=n32,$(CC)),)
++CC += -mabi=n32
++endif
+--- glibc-2.3.2/sysdeps/mips/mips64/n64/Implies 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/n64/Implies 2003-09-19 22:37:08.000000000 -0400
+@@ -0,0 +1,4 @@
++ieee754/ldbl-128
++mips/mips64
++mips
++wordsize-64
+--- glibc-2.3.2/sysdeps/mips/mips64/n64/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mips64/n64/Makefile 2003-04-12 11:39:46.000000000 -0400
+@@ -0,0 +1,6 @@
++# `long double' is a distinct type we support.
++long-double-fcts = yes
++
++ifeq ($(filter -mabi=64,$(CC)),)
++CC += -mabi=64
++endif
+--- glibc-2.3.2/sysdeps/mips/mips64/rshift.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/rshift.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,6 +1,6 @@
+ /* MIPS3 __mpn_rshift --
+ *
+- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -21,6 +21,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* INPUT PARAMETERS
+ * res_ptr $4
+@@ -37,22 +38,22 @@
+ .globl __mpn_rshift
+ .ent __mpn_rshift
+ __mpn_rshift:
+- .set noreorder
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ ld $10,0($5) # load first limb
+ dsubu $13,$0,$7
+ daddiu $6,$6,-1
+ and $9,$6,4-1 # number of limbs in first loop
+- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
+- dsll $2,$10,$13 # compute function result
++ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
++ dsll $2,$10,$13 # compute function result
+
+ dsubu $6,$6,$9
+
+-.Loop0: ld $3,8($5)
++L(Loop0): ld $3,8($5)
+ daddiu $4,$4,8
+ daddiu $5,$5,8
+ daddiu $9,$9,-1
+@@ -60,13 +61,13 @@
+ dsll $12,$3,$13
+ move $10,$3
+ or $8,$11,$12
+- bne $9,$0,.Loop0
+- sd $8,-8($4)
++ bne $9,$0,L(Loop0)
++ sd $8,-8($4)
+
+-.L0: beq $6,$0,.Lend
+- nop
++L(L0): beq $6,$0,L(Lend)
++ nop
+
+-.Loop: ld $3,8($5)
++L(Loop): ld $3,8($5)
+ daddiu $4,$4,32
+ daddiu $6,$6,-4
+ dsrl $11,$10,$7
+@@ -92,10 +93,10 @@
+
+ daddiu $5,$5,32
+ or $8,$14,$9
+- bgtz $6,.Loop
+- sd $8,-8($4)
++ bgtz $6,L(Loop)
++ sd $8,-8($4)
+
+-.Lend: dsrl $8,$10,$7
++L(Lend): dsrl $8,$10,$7
+ j $31
+ sd $8,0($4)
+ .end __mpn_rshift
+--- glibc-2.3.2/sysdeps/mips/mips64/setjmp.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/setjmp.S 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,6 +17,7 @@
+ 02111-1307 USA. */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* The function __sigsetjmp_aux saves all the registers, but it can't
+ reliably access the stack or frame pointers, so we pass them in as
+@@ -26,10 +27,18 @@
+ #endif
+ ENTRY (__sigsetjmp)
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP
+ #endif
++ SETUP_GP64 (v0, C_SYMBOL_NAME (__sigsetjmp))
+ move a2, sp
+ move a3, fp
+- dla t9, __sigsetjmp_aux
++ PTR_LA t9, __sigsetjmp_aux
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ nop
++#endif
++ RESTORE_GP64
++#if _MIPS_SIM != _MIPS_SIM_ABI32
++ move a4, gp
++#endif
+ jr t9
++ .end __sigsetjmp
+--- glibc-2.3.2/sysdeps/mips/mips64/setjmp_aux.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/setjmp_aux.c 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+@@ -25,9 +25,11 @@
+ access them in C. */
+
+ int
+-__sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
++__sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp,
++ long long gp)
+ {
+ /* Store the floating point callee-saved registers... */
++#if defined _ABI64 && _MIPS_SIM == _ABI64
+ asm volatile ("s.d $f24, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
+ asm volatile ("s.d $f25, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1]));
+ asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[2]));
+@@ -36,6 +38,14 @@
+ asm volatile ("s.d $f29, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5]));
+ asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[6]));
+ asm volatile ("s.d $f31, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[7]));
++#else
++ asm volatile ("s.d $f20, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
++ asm volatile ("s.d $f22, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1]));
++ asm volatile ("s.d $f24, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[2]));
++ asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[3]));
++ asm volatile ("s.d $f28, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[4]));
++ asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5]));
++#endif
+
+ /* .. and the PC; */
+ asm volatile ("sd $31, %0" : : "m" (env[0].__jmpbuf[0].__pc));
+@@ -47,7 +57,7 @@
+ env[0].__jmpbuf[0].__fp = fp;
+
+ /* .. and the GP; */
+- asm volatile ("sd $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
++ env[0].__jmpbuf[0].__gp = gp;
+
+ /* .. and the callee-saved registers; */
+ asm volatile ("sd $16, %0" : : "m" (env[0].__jmpbuf[0].__regs[0]));
+--- glibc-2.3.2/sysdeps/mips/mips64/soft-fp/sfp-machine.h 2000-09-05 04:37:09.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/soft-fp/sfp-machine.h 2003-03-18 16:46:09.000000000 -0500
+@@ -1,7 +1,7 @@
+ #define _FP_W_TYPE_SIZE 64
+-#define _FP_W_TYPE unsigned long
+-#define _FP_WS_TYPE signed long
+-#define _FP_I_TYPE long
++#define _FP_W_TYPE unsigned long long
++#define _FP_WS_TYPE signed long long
++#define _FP_I_TYPE long long
+
+ #define _FP_MUL_MEAT_S(R,X,Y) \
+ _FP_MUL_MEAT_1_imm(_FP_WFRACBITS_S,R,X,Y)
+--- glibc-2.3.2/sysdeps/mips/mips64/sub_n.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/sub_n.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS3 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
+ * store difference in a third limb vector.
+ *
+- * Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -22,6 +22,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* INPUT PARAMETERS
+ * res_ptr $4
+@@ -38,10 +39,10 @@
+ .globl __mpn_sub_n
+ .ent __mpn_sub_n
+ __mpn_sub_n:
+- .set noreorder
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ ld $10,0($5)
+@@ -49,12 +50,12 @@
+
+ daddiu $7,$7,-1
+ and $9,$7,4-1 # number of limbs in first loop
+- beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
+- move $2,$0
++ beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
++ move $2,$0
+
+ dsubu $7,$7,$9
+
+-.Loop0: daddiu $9,$9,-1
++L(Loop0): daddiu $9,$9,-1
+ ld $12,8($5)
+ daddu $11,$11,$2
+ ld $13,8($6)
+@@ -68,13 +69,13 @@
+ daddiu $6,$6,8
+ move $10,$12
+ move $11,$13
+- bne $9,$0,.Loop0
+- daddiu $4,$4,8
++ bne $9,$0,L(Loop0)
++ daddiu $4,$4,8
+
+-.L0: beq $7,$0,.Lend
+- nop
++L(L0): beq $7,$0,L(Lend)
++ nop
+
+-.Loop: daddiu $7,$7,-4
++L(Loop): daddiu $7,$7,-4
+
+ ld $12,8($5)
+ daddu $11,$11,$2
+@@ -115,10 +116,10 @@
+ daddiu $5,$5,32
+ daddiu $6,$6,32
+
+- bne $7,$0,.Loop
+- daddiu $4,$4,32
++ bne $7,$0,L(Loop)
++ daddiu $4,$4,32
+
+-.Lend: daddu $11,$11,$2
++L(Lend): daddu $11,$11,$2
+ sltu $8,$11,$2
+ dsubu $11,$10,$11
+ sltu $2,$10,$11
+--- glibc-2.3.2/sysdeps/mips/mips64/submul_1.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mips64/submul_1.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,8 @@
+ /* MIPS3 __mpn_submul_1 -- Multiply a limb vector with a single limb and
+ * subtract the product from a second limb vector.
+ *
+- * Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
++ * Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
++ * Free Software Foundation, Inc.
+ *
+ * This file is part of the GNU MP Library.
+ *
+@@ -22,6 +23,7 @@
+ */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ /* INPUT PARAMETERS
+ * res_ptr $4
+@@ -38,10 +40,10 @@
+ .globl __mpn_submul_1
+ .ent __mpn_submul_1
+ __mpn_submul_1:
+- .set noreorder
+ #ifdef __PIC__
+- .cpload t9
++ SETUP_GP /* ??? unused */
+ #endif
++ .set noreorder
+ .set nomacro
+
+ # warm up phase 0
+@@ -52,14 +54,14 @@
+ dmultu $8,$7
+
+ daddiu $6,$6,-1
+- beq $6,$0,$LC0
+- move $2,$0 # zero cy2
++ beq $6,$0,L(LC0)
++ move $2,$0 # zero cy2
+
+ daddiu $6,$6,-1
+- beq $6,$0,$LC1
++ beq $6,$0,L(LC1)
+ ld $8,0($5) # load new s1 limb as early as possible
+
+-Loop: ld $10,0($4)
++L(Loop): ld $10,0($4)
+ mflo $3
+ mfhi $9
+ daddiu $5,$5,8
+@@ -73,11 +75,11 @@
+ daddu $2,$2,$10
+ sd $3,0($4)
+ daddiu $4,$4,8
+- bne $6,$0,Loop
+- daddu $2,$9,$2 # add high product limb and carry from addition
++ bne $6,$0,L(Loop)
++ daddu $2,$9,$2 # add high product limb and carry from addition
+
+ # cool down phase 1
+-$LC1: ld $10,0($4)
++L(LC1): ld $10,0($4)
+ mflo $3
+ mfhi $9
+ daddu $3,$3,$2
+@@ -91,7 +93,7 @@
+ daddu $2,$9,$2 # add high product limb and carry from addition
+
+ # cool down phase 0
+-$LC0: ld $10,0($4)
++L(LC0): ld $10,0($4)
+ mflo $3
+ mfhi $9
+ daddu $3,$3,$2
+--- glibc-2.3.2/sysdeps/mips/mipsel/bits/endian.h 1997-11-25 22:53:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/mips/mipsel/bits/endian.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,8 +0,0 @@
+-/* The MIPS architecture has selectable endianness.
+- This file is for a machine using little-endian mode. */
+-
+-#ifndef _ENDIAN_H
+-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
+-#endif
+-
+-#define __BYTE_ORDER __LITTLE_ENDIAN
+--- glibc-2.3.2/sysdeps/mips/mul_1.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/mul_1.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS __mpn_mul_1 -- Multiply a limb vector with a single limb and
+ store the product in a second limb vector.
+
+-Copyright (C) 1995, 1998, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -46,14 +46,14 @@
+ multu $8,$7
+
+ addiu $6,$6,-1
+- beq $6,$0,$LC0
++ beq $6,$0,L(LC0)
+ move $2,$0 /* zero cy2 */
+
+ addiu $6,$6,-1
+- beq $6,$0,$LC1
++ beq $6,$0,L(LC1)
+ lw $8,0($5) /* load new s1 limb as early as possible */
+
+-Loop: mflo $10
++L(Loop): mflo $10
+ mfhi $9
+ addiu $5,$5,4
+ addu $10,$10,$2 /* add old carry limb to low product limb */
+@@ -63,11 +63,11 @@
+ sltu $2,$10,$2 /* carry from previous addition -> $2 */
+ sw $10,0($4)
+ addiu $4,$4,4
+- bne $6,$0,Loop /* should be "bnel" */
++ bne $6,$0,L(Loop) /* should be "bnel" */
+ addu $2,$9,$2 /* add high product limb and carry from addition */
+
+ /* cool down phase 1 */
+-$LC1: mflo $10
++L(LC1): mflo $10
+ mfhi $9
+ addu $10,$10,$2
+ sltu $2,$10,$2
+@@ -77,7 +77,7 @@
+ addu $2,$9,$2 /* add high product limb and carry from addition */
+
+ /* cool down phase 0 */
+-$LC0: mflo $10
++L(LC0): mflo $10
+ mfhi $9
+ addu $10,$10,$2
+ sltu $2,$10,$2
+--- glibc-2.3.2/sysdeps/mips/rshift.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/rshift.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,6 +1,6 @@
+ /* MIPS2 __mpn_rshift --
+
+-Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -41,12 +41,12 @@
+ subu $13,$0,$7
+ addiu $6,$6,-1
+ and $9,$6,4-1 /* number of limbs in first loop */
+- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop*/
++ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop*/
+ sll $2,$10,$13 /* compute function result */
+
+ subu $6,$6,$9
+
+-.Loop0: lw $3,4($5)
++L(Loop0): lw $3,4($5)
+ addiu $4,$4,4
+ addiu $5,$5,4
+ addiu $9,$9,-1
+@@ -54,13 +54,13 @@
+ sll $12,$3,$13
+ move $10,$3
+ or $8,$11,$12
+- bne $9,$0,.Loop0
++ bne $9,$0,L(Loop0)
+ sw $8,-4($4)
+
+-.L0: beq $6,$0,.Lend
++L(L0): beq $6,$0,L(Lend)
+ nop
+
+-.Loop: lw $3,4($5)
++L(Loop): lw $3,4($5)
+ addiu $4,$4,16
+ addiu $6,$6,-4
+ srl $11,$10,$7
+@@ -86,10 +86,10 @@
+
+ addiu $5,$5,16
+ or $8,$14,$9
+- bgtz $6,.Loop
++ bgtz $6,L(Loop)
+ sw $8,-4($4)
+
+-.Lend: srl $8,$10,$7
++L(Lend): srl $8,$10,$7
+ j $31
+ sw $8,0($4)
+ END (__mpn_rshift)
+--- glibc-2.3.2/sysdeps/mips/setjmp_aux.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/setjmp_aux.c 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+--- glibc-2.3.2/sysdeps/mips/sgidefs.h 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/sgidefs.h 2003-04-12 11:39:45.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.org>.
+
+@@ -28,6 +28,8 @@
+ #define _MIPS_ISA_MIPS3 3
+ #define _MIPS_ISA_MIPS4 4
+ #define _MIPS_ISA_MIPS5 5
++#define _MIPS_ISA_MIPS32 6
++#define _MIPS_ISA_MIPS64 7
+
+ /*
+ * Subprogram calling convention
+--- glibc-2.3.2/sysdeps/mips/sub_n.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/sub_n.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS2 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
+ store difference in a third limb vector.
+
+-Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -43,12 +43,12 @@
+
+ addiu $7,$7,-1
+ and $9,$7,4-1 /* number of limbs in first loop */
+- beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
+- move $2,$0
++ beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
++ move $2,$0
+
+ subu $7,$7,$9
+
+-.Loop0: addiu $9,$9,-1
++L(Loop0): addiu $9,$9,-1
+ lw $12,4($5)
+ addu $11,$11,$2
+ lw $13,4($6)
+@@ -62,13 +62,13 @@
+ addiu $6,$6,4
+ move $10,$12
+ move $11,$13
+- bne $9,$0,.Loop0
+- addiu $4,$4,4
++ bne $9,$0,L(Loop0)
++ addiu $4,$4,4
+
+-.L0: beq $7,$0,.Lend
+- nop
++L(L0): beq $7,$0,L(Lend)
++ nop
+
+-.Loop: addiu $7,$7,-4
++L(Loop): addiu $7,$7,-4
+
+ lw $12,4($5)
+ addu $11,$11,$2
+@@ -109,10 +109,10 @@
+ addiu $5,$5,16
+ addiu $6,$6,16
+
+- bne $7,$0,.Loop
+- addiu $4,$4,16
++ bne $7,$0,L(Loop)
++ addiu $4,$4,16
+
+-.Lend: addu $11,$11,$2
++L(Lend): addu $11,$11,$2
+ sltu $8,$11,$2
+ subu $11,$10,$11
+ sltu $2,$10,$11
+--- glibc-2.3.2/sysdeps/mips/submul_1.S 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/submul_1.S 2003-03-15 15:02:17.000000000 -0500
+@@ -1,7 +1,7 @@
+ /* MIPS __mpn_submul_1 -- Multiply a limb vector with a single limb and
+ subtract the product from a second limb vector.
+
+-Copyright (C) 1995, 2000 Free Software Foundation, Inc.
++Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
+
+ This file is part of the GNU MP Library.
+
+@@ -46,14 +46,14 @@
+ multu $8,$7
+
+ addiu $6,$6,-1
+- beq $6,$0,$LC0
++ beq $6,$0,L(LC0)
+ move $2,$0 /* zero cy2 */
+
+ addiu $6,$6,-1
+- beq $6,$0,$LC1
++ beq $6,$0,L(LC1)
+ lw $8,0($5) /* load new s1 limb as early as possible */
+
+-Loop: lw $10,0($4)
++L(Loop): lw $10,0($4)
+ mflo $3
+ mfhi $9
+ addiu $5,$5,4
+@@ -67,11 +67,11 @@
+ addu $2,$2,$10
+ sw $3,0($4)
+ addiu $4,$4,4
+- bne $6,$0,Loop /* should be "bnel" */
++ bne $6,$0,L(Loop) /* should be "bnel" */
+ addu $2,$9,$2 /* add high product limb and carry from addition */
+
+ /* cool down phase 1 */
+-$LC1: lw $10,0($4)
++L(LC1): lw $10,0($4)
+ mflo $3
+ mfhi $9
+ addu $3,$3,$2
+@@ -85,7 +85,7 @@
+ addu $2,$9,$2 /* add high product limb and carry from addition */
+
+ /* cool down phase 0 */
+-$LC0: lw $10,0($4)
++L(LC0): lw $10,0($4)
+ mflo $3
+ mfhi $9
+ addu $3,$3,$2
+--- glibc-2.3.2/sysdeps/mips/sys/asm.h 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/sys/asm.h 2003-04-12 11:39:46.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.org>.
+
+@@ -23,12 +23,12 @@
+ #include <sgidefs.h>
+
+ #ifndef CAT
+-#ifdef __STDC__
+-#define __CAT(str1,str2) str1##str2
+-#else
+-#define __CAT(str1,str2) str1/**/str2
+-#endif
+-#define CAT(str1,str2) __CAT(str1,str2)
++# ifdef __STDC__
++# define __CAT(str1,str2) str1##str2
++# else
++# define __CAT(str1,str2) str1/**/str2
++# endif
++# define CAT(str1,str2) __CAT(str1,str2)
+ #endif
+
+ /*
+@@ -37,26 +37,113 @@
+ * 64 bit address space isn't used yet, so we may use the R3000 32 bit
+ * defines for now.
+ */
+-#define PTR .word
+-#define PTRSIZE 4
+-#define PTRLOG 2
++#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
++# define PTR .word
++# define PTRSIZE 4
++# define PTRLOG 2
++#elif (_MIPS_SIM == _MIPS_SIM_ABI64)
++# define PTR .dword
++# define PTRSIZE 8
++# define PTRLOG 3
++#endif
+
+ /*
+ * PIC specific declarations
+ */
+-#ifdef __PIC__
+-#define CPRESTORE(register) \
++#if (_MIPS_SIM == _MIPS_SIM_ABI32)
++# ifdef __PIC__
++# define CPRESTORE(register) \
+ .cprestore register
+-#define CPADD(register) \
++# define CPLOAD(register) \
++ .cpload register
++# else
++# define CPRESTORE(register)
++# define CPLOAD(register)
++# endif
++
++# define CPADD(register) \
+ .cpadd register
+-#define CPLOAD(register) \
+- .cpload register
+-#else
+-#define CPRESTORE(register)
+-#define CPADD(register)
+-#define CPLOAD(register)
++
++/*
++ * Set gp when at 1st instruction
++ */
++# define SETUP_GP \
++ .set noreorder; \
++ .cpload $25; \
++ .set reorder
++/* Set gp when not at 1st instruction */
++# define SETUP_GPX(r) \
++ .set noreorder; \
++ move r, $31; /* Save old ra. */ \
++ bal 10f; /* Find addr of cpload. */ \
++ nop; \
++10: \
++ .cpload $31; \
++ move $31, r; \
++ .set reorder
++# define SETUP_GPX_L(r, l) \
++ .set noreorder; \
++ move r, $31; /* Save old ra. */ \
++ bal l; /* Find addr of cpload. */ \
++ nop; \
++l: \
++ .cpload $31; \
++ move $31, r; \
++ .set reorder
++# define SAVE_GP(x) \
++ .cprestore x /* Save gp trigger t9/jalr conversion. */
++# define SETUP_GP64(a, b)
++# define SETUP_GPX64(a, b)
++# define SETUP_GPX64_L(cp_reg, ra_save, l)
++# define RESTORE_GP64
++# define USE_ALT_CP(a)
++#else /* (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32) */
++/*
++ * For callee-saved gp calling convention:
++ */
++# define SETUP_GP
++# define SETUP_GPX(r)
++# define SETUP_GPX_L(r, l)
++# define SAVE_GP(x)
++
++# define SETUP_GP64(gpoffset, proc) \
++ .cpsetup $25, gpoffset, proc
++# define SETUP_GPX64(cp_reg, ra_save) \
++ move ra_save, $31; /* Save old ra. */ \
++ .set noreorder; \
++ bal 10f; /* Find addr of .cpsetup. */ \
++ nop; \
++10: \
++ .set reorder; \
++ .cpsetup $31, cp_reg, 10b; \
++ move $31, ra_save
++# define SETUP_GPX64_L(cp_reg, ra_save, l) \
++ move ra_save, $31; /* Save old ra. */ \
++ .set noreorder; \
++ bal l; /* Find addr of .cpsetup. */ \
++ nop; \
++l: \
++ .set reorder; \
++ .cpsetup $31, cp_reg, l; \
++ move $31, ra_save
++# define RESTORE_GP64 \
++ .cpreturn
++/* Use alternate register for context pointer. */
++# define USE_ALT_CP(reg) \
++ .cplocal reg
++#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
++
++/*
++ * Stack Frame Definitions
++ */
++#if (_MIPS_SIM == _MIPS_SIM_ABI32)
++# define NARGSAVE 4 /* Space for 4 argument registers must be allocated. */
++#endif
++#if (_MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32)
++# define NARGSAVE 0 /* No caller responsibilities. */
+ #endif
+
++
+ /*
+ * LEAF - declare leaf routine
+ */
+@@ -80,9 +167,11 @@
+ /*
+ * END - mark end of function
+ */
+-#define END(function) \
++#ifndef END
++# define END(function) \
+ .end function; \
+ .size function,.-function
++#endif
+
+ /*
+ * EXPORT - export definition of symbol
+@@ -141,237 +230,244 @@
+ * MIPS IV implementations are free to treat this as a nop. The R5000
+ * is one of them. So we should have an option not to use this instruction.
+ */
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
+-#define PREF(hint,addr) \
++#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
++ (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
++# define PREF(hint,addr) \
+ pref hint,addr
+-#define PREFX(hint,addr) \
++# define PREFX(hint,addr) \
+ prefx hint,addr
+ #else
+-#define PREF
+-#define PREFX
++# define PREF
++# define PREFX
+ #endif
+
+ /*
+ * MIPS ISA IV/V movn/movz instructions and equivalents for older CPUs.
+ */
+ #if _MIPS_ISA == _MIPS_ISA_MIPS1
+-#define MOVN(rd,rs,rt) \
++# define MOVN(rd,rs,rt) \
+ .set push; \
+ .set reorder; \
+- beqz rt,9f; \
+- move rd,rs; \
++ beqz rt,9f; \
++ move rd,rs; \
+ .set pop; \
+ 9:
+-#define MOVZ(rd,rs,rt) \
++# define MOVZ(rd,rs,rt) \
+ .set push; \
+ .set reorder; \
+- bnez rt,9f; \
+- move rd,rt; \
++ bnez rt,9f; \
++ move rd,rt; \
+ .set pop; \
+ 9:
+ #endif /* _MIPS_ISA == _MIPS_ISA_MIPS1 */
+ #if (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3)
+-#define MOVN(rd,rs,rt) \
++# define MOVN(rd,rs,rt) \
+ .set push; \
+ .set noreorder; \
+- bnezl rt,9f; \
+- move rd,rs; \
++ bnezl rt,9f; \
++ move rd,rs; \
+ .set pop; \
+ 9:
+-#define MOVZ(rd,rs,rt) \
++# define MOVZ(rd,rs,rt) \
+ .set push; \
+ .set noreorder; \
+- beqzl rt,9f; \
+- movz rd,rs; \
++ beqzl rt,9f; \
++ movz rd,rs; \
+ .set pop; \
+ 9:
+ #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS2) || (_MIPS_ISA == _MIPS_ISA_MIPS3) */
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5)
+-#define MOVN(rd,rs,rt) \
++#if (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) || \
++ (_MIPS_ISA == _MIPS_ISA_MIPS32) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
++# define MOVN(rd,rs,rt) \
+ movn rd,rs,rt
+-#define MOVZ(rd,rs,rt) \
++# define MOVZ(rd,rs,rt) \
+ movz rd,rs,rt
+ #endif /* (_MIPS_ISA == _MIPS_ISA_MIPS4) || (_MIPS_ISA == _MIPS_ISA_MIPS5) */
+
+ /*
+ * Stack alignment
+ */
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+-#define ALSZ 7
+-#define ALMASK ~7
+-#endif
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
+- (_MIPS_ISA == _MIPS_ISA_MIPS5)
+-#define ALSZ 15
+-#define ALMASK ~15
++#if (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32)
++# define ALSZ 15
++# define ALMASK ~15
++#else
++# define ALSZ 7
++# define ALMASK ~7
+ #endif
+
+ /*
+ * Size of a register
+ */
+-#ifdef __mips64
+-#define SZREG 8
++#if (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32)
++# define SZREG 8
+ #else
+-#define SZREG 4
++# define SZREG 4
+ #endif
+
+ /*
+ * Use the following macros in assemblercode to load/store registers,
+ * pointers etc.
+ */
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+-#define REG_S sw
+-#define REG_L lw
+-#define PTR_SUBU subu
+-#define PTR_ADDU addu
+-#endif
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
+- (_MIPS_ISA == _MIPS_ISA_MIPS5)
+-#define REG_S sd
+-#define REG_L ld
+-/* We still live in a 32 bit address space ... */
+-#define PTR_SUBU subu
+-#define PTR_ADDU addu
++#if (SZREG == 4)
++# define REG_S sw
++# define REG_L lw
++#else
++# define REG_S sd
++# define REG_L ld
+ #endif
+
+ /*
+ * How to add/sub/load/store/shift C int variables.
+ */
+ #if (_MIPS_SZINT == 32)
+-#define INT_ADD add
+-#define INT_ADDI addi
+-#define INT_ADDU addu
+-#define INT_ADDIU addiu
+-#define INT_SUB add
+-#define INT_SUBI subi
+-#define INT_SUBU subu
+-#define INT_SUBIU subu
+-#define INT_L lw
+-#define INT_S sw
+-#define LONG_SLL sll
+-#define LONG_SLLV sllv
+-#define LONG_SRL srl
+-#define LONG_SRLV srlv
+-#define LONG_SRA sra
+-#define LONG_SRAV srav
++# define INT_ADD add
++# define INT_ADDI addi
++# define INT_ADDU addu
++# define INT_ADDIU addiu
++# define INT_SUB add
++# define INT_SUBI subi
++# define INT_SUBU subu
++# define INT_SUBIU subu
++# define INT_L lw
++# define INT_S sw
+ #endif
+
+ #if (_MIPS_SZINT == 64)
+-#define INT_ADD dadd
+-#define INT_ADDI daddi
+-#define INT_ADDU daddu
+-#define INT_ADDIU daddiu
+-#define INT_SUB dadd
+-#define INT_SUBI dsubi
+-#define INT_SUBU dsubu
+-#define INT_SUBIU dsubu
+-#define INT_L ld
+-#define INT_S sd
+-#define LONG_SLL dsll
+-#define LONG_SLLV dsllv
+-#define LONG_SRL dsrl
+-#define LONG_SRLV dsrlv
+-#define LONG_SRA dsra
+-#define LONG_SRAV dsrav
++# define INT_ADD dadd
++# define INT_ADDI daddi
++# define INT_ADDU daddu
++# define INT_ADDIU daddiu
++# define INT_SUB dadd
++# define INT_SUBI dsubi
++# define INT_SUBU dsubu
++# define INT_SUBIU dsubu
++# define INT_L ld
++# define INT_S sd
+ #endif
+
+ /*
+ * How to add/sub/load/store/shift C long variables.
+ */
+ #if (_MIPS_SZLONG == 32)
+-#define LONG_ADD add
+-#define LONG_ADDI addi
+-#define LONG_ADDU addu
+-#define LONG_ADDIU addiu
+-#define LONG_SUB add
+-#define LONG_SUBI subi
+-#define LONG_SUBU subu
+-#define LONG_SUBIU subu
+-#define LONG_L lw
+-#define LONG_S sw
+-#define LONG_SLL sll
+-#define LONG_SLLV sllv
+-#define LONG_SRL srl
+-#define LONG_SRLV srlv
+-#define LONG_SRA sra
+-#define LONG_SRAV srav
++# define LONG_ADD add
++# define LONG_ADDI addi
++# define LONG_ADDU addu
++# define LONG_ADDIU addiu
++# define LONG_SUB add
++# define LONG_SUBI subi
++# define LONG_SUBU subu
++# define LONG_SUBIU subu
++# define LONG_L lw
++# define LONG_S sw
++# define LONG_SLL sll
++# define LONG_SLLV sllv
++# define LONG_SRL srl
++# define LONG_SRLV srlv
++# define LONG_SRA sra
++# define LONG_SRAV srav
+ #endif
+
+ #if (_MIPS_SZLONG == 64)
+-#define LONG_ADD dadd
+-#define LONG_ADDI daddi
+-#define LONG_ADDU daddu
+-#define LONG_ADDIU daddiu
+-#define LONG_SUB dadd
+-#define LONG_SUBI dsubi
+-#define LONG_SUBU dsubu
+-#define LONG_SUBIU dsubu
+-#define LONG_L ld
+-#define LONG_S sd
+-#define LONG_SLL dsll
+-#define LONG_SLLV dsllv
+-#define LONG_SRL dsrl
+-#define LONG_SRLV dsrlv
+-#define LONG_SRA dsra
+-#define LONG_SRAV dsrav
++# define LONG_ADD dadd
++# define LONG_ADDI daddi
++# define LONG_ADDU daddu
++# define LONG_ADDIU daddiu
++# define LONG_SUB dadd
++# define LONG_SUBI dsubi
++# define LONG_SUBU dsubu
++# define LONG_SUBIU dsubu
++# define LONG_L ld
++# define LONG_S sd
++# define LONG_SLL dsll
++# define LONG_SLLV dsllv
++# define LONG_SRL dsrl
++# define LONG_SRLV dsrlv
++# define LONG_SRA dsra
++# define LONG_SRAV dsrav
+ #endif
+
+ /*
+ * How to add/sub/load/store/shift pointers.
+ */
+-#if (_MIPS_SZLONG == 32)
+-#define PTR_ADD add
+-#define PTR_ADDI addi
+-#define PTR_ADDU addu
+-#define PTR_ADDIU addiu
+-#define PTR_SUB add
+-#define PTR_SUBI subi
+-#define PTR_SUBU subu
+-#define PTR_SUBIU subu
+-#define PTR_L lw
+-#define PTR_S sw
+-#define PTR_SLL sll
+-#define PTR_SLLV sllv
+-#define PTR_SRL srl
+-#define PTR_SRLV srlv
+-#define PTR_SRA sra
+-#define PTR_SRAV srav
+-
+-#define PTR_SCALESHIFT 2
+-#endif
+-
+-#if (_MIPS_SZLONG == 64)
+-#define PTR_ADD dadd
+-#define PTR_ADDI daddi
+-#define PTR_ADDU daddu
+-#define PTR_ADDIU daddiu
+-#define PTR_SUB dadd
+-#define PTR_SUBI dsubi
+-#define PTR_SUBU dsubu
+-#define PTR_SUBIU dsubu
+-#define PTR_L ld
+-#define PTR_S sd
+-#define PTR_SLL dsll
+-#define PTR_SLLV dsllv
+-#define PTR_SRL dsrl
+-#define PTR_SRLV dsrlv
+-#define PTR_SRA dsra
+-#define PTR_SRAV dsrav
++#if (_MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 32)
++# define PTR_ADD add
++# define PTR_ADDI addi
++# define PTR_ADDU addu
++# define PTR_ADDIU addiu
++# define PTR_SUB add
++# define PTR_SUBI subi
++# define PTR_SUBU subu
++# define PTR_SUBIU subu
++# define PTR_L lw
++# define PTR_LA la
++# define PTR_S sw
++# define PTR_SLL sll
++# define PTR_SLLV sllv
++# define PTR_SRL srl
++# define PTR_SRLV srlv
++# define PTR_SRA sra
++# define PTR_SRAV srav
++
++# define PTR_SCALESHIFT 2
++#endif
++
++#if _MIPS_SIM == _MIPS_SIM_NABI32
++# define PTR_ADD add
++# define PTR_ADDI addi
++# define PTR_ADDU add /* no u */
++# define PTR_ADDIU addi /* no u */
++# define PTR_SUB add
++# define PTR_SUBI subi
++# define PTR_SUBU sub /* no u */
++# define PTR_SUBIU sub /* no u */
++# define PTR_L lw
++# define PTR_LA la
++# define PTR_S sw
++# define PTR_SLL sll
++# define PTR_SLLV sllv
++# define PTR_SRL srl
++# define PTR_SRLV srlv
++# define PTR_SRA sra
++# define PTR_SRAV srav
++
++# define PTR_SCALESHIFT 2
++#endif
++
++#if (_MIPS_SIM == _MIPS_SIM_ABI32 && _MIPS_SZPTR == 64 /* o64??? */) \
++ || _MIPS_SIM == _MIPS_SIM_ABI64
++# define PTR_ADD dadd
++# define PTR_ADDI daddi
++# define PTR_ADDU daddu
++# define PTR_ADDIU daddiu
++# define PTR_SUB dadd
++# define PTR_SUBI dsubi
++# define PTR_SUBU dsubu
++# define PTR_SUBIU dsubu
++# define PTR_L ld
++# define PTR_LA dla
++# define PTR_S sd
++# define PTR_SLL dsll
++# define PTR_SLLV dsllv
++# define PTR_SRL dsrl
++# define PTR_SRLV dsrlv
++# define PTR_SRA dsra
++# define PTR_SRAV dsrav
+
+-#define PTR_SCALESHIFT 3
++# define PTR_SCALESHIFT 3
+ #endif
+
+ /*
+ * Some cp0 registers were extended to 64bit for MIPS III.
+ */
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+-#define MFC0 mfc0
+-#define MTC0 mtc0
++#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2) || \
++ (_MIPS_ISA == _MIPS_ISA_MIPS32)
++# define MFC0 mfc0
++# define MTC0 mtc0
+ #endif
+ #if (_MIPS_ISA == _MIPS_ISA_MIPS3) || (_MIPS_ISA == _MIPS_ISA_MIPS4) || \
+- (_MIPS_ISA == _MIPS_ISA_MIPS5)
+-#define MFC0 dmfc0
+-#define MTC0 dmtc0
++ (_MIPS_ISA == _MIPS_ISA_MIPS5) || (_MIPS_ISA == _MIPS_ISA_MIPS64)
++# define MFC0 dmfc0
++# define MTC0 dmtc0
+ #endif
+
+ #endif /* sys/asm.h */
+--- glibc-2.3.2/sysdeps/mips/sys/regdef.h 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/sys/regdef.h 2003-04-12 11:39:46.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.org>.
+
+@@ -31,6 +31,20 @@
+ #define a1 $5
+ #define a2 $6
+ #define a3 $7
++#if _MIPS_SIM != _MIPS_SIM_ABI32
++#define a4 $8
++#define a5 $9
++#define a6 $10
++#define a7 $11
++#define t0 $12
++#define t1 $13
++#define t2 $14
++#define t3 $15
++#define ta0 a4
++#define ta1 a5
++#define ta2 a6
++#define ta3 a7
++#else /* if _MIPS_SIM == _MIPS_SIM_ABI32 */
+ #define t0 $8 /* caller saved */
+ #define t1 $9
+ #define t2 $10
+@@ -39,6 +53,11 @@
+ #define t5 $13
+ #define t6 $14
+ #define t7 $15
++#define ta0 t4
++#define ta1 t5
++#define ta2 t6
++#define ta3 t7
++#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
+ #define s0 $16 /* callee saved */
+ #define s1 $17
+ #define s2 $18
+--- glibc-2.3.2/sysdeps/mips/sys/ucontext.h 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/mips/sys/ucontext.h 2003-03-18 16:46:09.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,7 +25,11 @@
+ #include <signal.h>
+
+ /* Type for general register. */
+-typedef unsigned int greg_t;
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++typedef __uint32_t greg_t;
++#else
++typedef __uint64_t greg_t;
++#endif
+
+ /* Number of general registers. */
+ #define NGREG 36
+@@ -115,9 +119,15 @@
+ {
+ union
+ {
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ double fp_dregs[16];
+ float fp_fregs[32];
+ unsigned int fp_regs[32];
++#else
++ double fp_dregs[32];
++ /* float fp_fregs[32]; */
++ __uint64_t fp_regs[32];
++#endif
+ } fp_r;
+ unsigned int fp_csr;
+ unsigned int fp_pad;
+@@ -133,12 +143,16 @@
+ /* Userlevel context. */
+ typedef struct ucontext
+ {
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ unsigned long int uc_flags;
++#else
++ __uint64_t uc_flags;
++#endif
+ struct ucontext *uc_link;
+ __sigset_t uc_sigmask;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+- long int uc_filler[48];
++ int uc_filler[48];
+ } ucontext_t;
+
+ #endif /* sys/ucontext.h */
+--- glibc-2.3.2/sysdeps/posix/clock_getres.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/clock_getres.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,7 +24,7 @@
+ #include <libc-internal.h>
+
+
+-#if HP_TIMING_AVAIL
++#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
+ /* Clock frequency of the processor. */
+ static long int nsec;
+ #endif
+@@ -38,26 +38,45 @@
+
+ switch (clock_id)
+ {
+- case CLOCK_REALTIME:
+- {
+- long int clk_tck = sysconf (_SC_CLK_TCK);
++#define HANDLE_REALTIME \
++ do { \
++ long int clk_tck = sysconf (_SC_CLK_TCK); \
++ \
++ if (__builtin_expect (clk_tck != -1, 1)) \
++ { \
++ /* This implementation assumes that the realtime clock has a \
++ resolution higher than 1 second. This is the case for any \
++ reasonable implementation. */ \
++ res->tv_sec = 0; \
++ res->tv_nsec = 1000000000 / clk_tck; \
++ \
++ retval = 0; \
++ } \
++ } while (0)
+
+- if (__builtin_expect (clk_tck != -1, 1))
+- {
+- /* This implementation assumes that the realtime clock has a
+- resolution higher than 1 second. This is the case for any
+- reasonable implementation. */
+- res->tv_sec = 0;
+- res->tv_nsec = 1000000000 / clk_tck;
++#ifdef SYSDEP_GETRES
++ SYSDEP_GETRES;
++#endif
+
+- retval = 0;
+- }
+- }
++#ifndef HANDLED_REALTIME
++ case CLOCK_REALTIME:
++ HANDLE_REALTIME;
+ break;
++#endif /* handled REALTIME */
+
++ default:
+ #if HP_TIMING_AVAIL
++ if ((clock_id & ((1 << CLOCK_IDFIELD_SIZE) - 1))
++ != CLOCK_THREAD_CPUTIME_ID)
++#endif
++ {
++ __set_errno (EINVAL);
++ break;
++ }
++
++#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
++ /* FALLTHROUGH. */
+ case CLOCK_PROCESS_CPUTIME_ID:
+- case CLOCK_THREAD_CPUTIME_ID:
+ {
+ if (__builtin_expect (nsec == 0, 0))
+ {
+@@ -84,10 +103,6 @@
+ }
+ break;
+ #endif
+-
+- default:
+- __set_errno (EINVAL);
+- break;
+ }
+
+ return retval;
+--- glibc-2.3.2/sysdeps/posix/fpathconf.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/fpathconf.c 2003-03-15 15:02:17.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,1995,1996,1998,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1998,2000,2001,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -229,6 +230,10 @@
+ /* In general there are no limits. If a system has one it should
+ overwrite this case. */
+ return -1;
++
++ case _PC_2_SYMLINKS:
++ /* Unix systems generally have symlinks. */
++ return 1;
+ }
+ }
+
+--- glibc-2.3.2/sysdeps/posix/getaddrinfo.c 2002-12-16 20:13:35.000000000 -0500
++++ glibc-2.3.2/sysdeps/posix/getaddrinfo.c 2003-08-21 08:37:09.000000000 -0400
+@@ -37,8 +37,10 @@
+
+ #include <assert.h>
+ #include <errno.h>
++#include <ifaddrs.h>
+ #include <netdb.h>
+ #include <resolv.h>
++#include <stdbool.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -111,12 +113,17 @@
+ const struct addrinfo *req, struct addrinfo **pai);
+ };
+
+-#if PF_UNSPEC == 0
+-static const struct addrinfo default_hints;
+-#else
+ static const struct addrinfo default_hints =
+- { 0, PF_UNSPEC, 0, 0, 0, NULL, NULL, NULL };
+-#endif
++ {
++ .ai_flags = AI_DEFAULT,
++ .ai_family = PF_UNSPEC,
++ .ai_socktype = 0,
++ .ai_protocol = 0,
++ .ai_addrlen = 0,
++ .ai_addr = NULL,
++ .ai_canonname = NULL,
++ .ai_next = NULL
++ };
+
+
+ #if 0
+@@ -265,93 +272,137 @@
+ return 0;
+ }
+
+-#define gethosts(_family, _type) \
+- { \
+- int i, herrno; \
+- size_t tmpbuflen; \
+- struct hostent th; \
+- char *tmpbuf = NULL; \
+- tmpbuflen = 512; \
+- no_data = 0; \
+- do { \
+- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
+- rc = __gethostbyname2_r (name, _family, &th, tmpbuf, \
+- tmpbuflen, &h, &herrno); \
+- } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
+- if (rc != 0) \
+- { \
+- if (herrno == NETDB_INTERNAL) \
+- { \
+- __set_h_errno (herrno); \
+- return -EAI_SYSTEM; \
+- } \
+- if (herrno == TRY_AGAIN) \
+- no_data = EAI_AGAIN; \
+- else \
+- no_data = herrno == NO_DATA; \
+- } \
+- else if (h != NULL) \
+- { \
+- for (i = 0; h->h_addr_list[i]; i++) \
+- { \
+- if (*pat == NULL) { \
+- *pat = __alloca (sizeof (struct gaih_addrtuple)); \
+- (*pat)->scopeid = 0; \
+- } \
+- (*pat)->next = NULL; \
+- (*pat)->family = _family; \
+- memcpy ((*pat)->addr, h->h_addr_list[i], \
+- sizeof(_type)); \
+- pat = &((*pat)->next); \
+- } \
+- } \
++#define gethosts(_family, _type) \
++ { \
++ int i, herrno; \
++ size_t tmpbuflen; \
++ struct hostent th; \
++ char *tmpbuf = NULL; \
++ tmpbuflen = 512; \
++ no_data = 0; \
++ do { \
++ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
++ rc = __gethostbyname2_r (name, _family, &th, tmpbuf, \
++ tmpbuflen, &h, &herrno); \
++ } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
++ if (rc != 0) \
++ { \
++ if (herrno == NETDB_INTERNAL) \
++ { \
++ __set_h_errno (herrno); \
++ return -EAI_SYSTEM; \
++ } \
++ if (herrno == TRY_AGAIN) \
++ no_data = EAI_AGAIN; \
++ else \
++ no_data = herrno == NO_DATA; \
++ } \
++ else if (h != NULL) \
++ { \
++ for (i = 0; h->h_addr_list[i]; i++) \
++ { \
++ if (*pat == NULL) { \
++ *pat = __alloca (sizeof (struct gaih_addrtuple)); \
++ (*pat)->scopeid = 0; \
++ } \
++ (*pat)->next = NULL; \
++ (*pat)->family = _family; \
++ memcpy ((*pat)->addr, h->h_addr_list[i], \
++ sizeof(_type)); \
++ pat = &((*pat)->next); \
++ } \
++ if (_family == AF_INET6) \
++ got_ipv6 = true; \
++ } \
++ else if (_family == AF_INET6 && (req->ai_flags & AI_V4MAPPED)) \
++ { \
++ /* We have to add V4 mapped addresses. Maybe we discard them \
++ later again but we get them anyhow for now. */ \
++ while ((rc = __gethostbyname2_r (name, AF_INET6, &th, tmpbuf, \
++ tmpbuflen, &h, &herrno)) == ERANGE \
++ && herrno == NETDB_INTERNAL) \
++ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
++ \
++ if (rc != 0) \
++ { \
++ if (herrno == NETDB_INTERNAL) \
++ { \
++ __set_h_errno (herrno); \
++ return -EAI_SYSTEM; \
++ } \
++ if (herrno == TRY_AGAIN) \
++ no_data = EAI_AGAIN; \
++ else \
++ no_data = herrno == NO_DATA; \
++ } \
++ else if (h != NULL) \
++ { \
++ for (i = 0; h->h_addr_list[i]; ++i) \
++ { \
++ if (*pat == NULL) \
++ { \
++ *pat = __alloca (sizeof (struct gaih_addrtuple)); \
++ (*pat)->scopeid = 0; \
++ } \
++ uint32_t *addr = (uint32_t *) (*pat)->addr; \
++ (*pat)->next = NULL; \
++ (*pat)->family = _family; \
++ addr[3] = *(uint32_t *) h->h_addr_list[i]; \
++ addr[2] = htonl (0xffff); \
++ addr[1] = 0; \
++ addr[0] = 0; \
++ pat = &((*pat)->next); \
++ } \
++ } \
++ } \
+ }
+
+-#define gethosts2(_family, _type) \
+- { \
+- int i, herrno; \
+- size_t tmpbuflen; \
+- struct hostent th; \
+- char *tmpbuf = NULL; \
+- tmpbuflen = 512; \
+- no_data = 0; \
+- do { \
+- tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
+- rc = 0; \
+- status = DL_CALL_FCT (fct, (name, _family, &th, tmpbuf, \
+- tmpbuflen, &rc, &herrno)); \
+- } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
+- if (status == NSS_STATUS_SUCCESS && rc == 0) \
+- h = &th; \
+- else \
+- h = NULL; \
+- if (rc != 0) \
+- { \
+- if (herrno == NETDB_INTERNAL) \
+- { \
+- __set_h_errno (herrno); \
+- return -EAI_SYSTEM; \
+- } \
+- if (herrno == TRY_AGAIN) \
+- no_data = EAI_AGAIN; \
+- else \
+- no_data = herrno == NO_DATA; \
+- } \
+- else if (h != NULL) \
+- { \
+- for (i = 0; h->h_addr_list[i]; i++) \
+- { \
+- if (*pat == NULL) { \
+- *pat = __alloca (sizeof (struct gaih_addrtuple)); \
+- (*pat)->scopeid = 0; \
+- } \
+- (*pat)->next = NULL; \
+- (*pat)->family = _family; \
+- memcpy ((*pat)->addr, h->h_addr_list[i], \
+- sizeof(_type)); \
+- pat = &((*pat)->next); \
+- } \
+- } \
++
++#define gethosts2(_family, _type) \
++ { \
++ int i, herrno; \
++ size_t tmpbuflen; \
++ struct hostent th; \
++ char *tmpbuf = NULL; \
++ tmpbuflen = 512; \
++ no_data = 0; \
++ do { \
++ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, 2 * tmpbuflen); \
++ rc = 0; \
++ status = DL_CALL_FCT (fct, (name, _family, &th, tmpbuf, \
++ tmpbuflen, &rc, &herrno)); \
++ } while (rc == ERANGE && herrno == NETDB_INTERNAL); \
++ if (status == NSS_STATUS_SUCCESS && rc == 0) \
++ h = &th; \
++ else \
++ h = NULL; \
++ if (rc != 0) \
++ { \
++ if (herrno == NETDB_INTERNAL) \
++ { \
++ __set_h_errno (herrno); \
++ return -EAI_SYSTEM; \
++ } \
++ if (herrno == TRY_AGAIN) \
++ no_data = EAI_AGAIN; \
++ else \
++ no_data = herrno == NO_DATA; \
++ } \
++ else if (h != NULL) \
++ { \
++ for (i = 0; h->h_addr_list[i]; i++) \
++ { \
++ if (*pat == NULL) { \
++ *pat = __alloca (sizeof (struct gaih_addrtuple)); \
++ (*pat)->scopeid = 0; \
++ } \
++ (*pat)->next = NULL; \
++ (*pat)->family = _family; \
++ memcpy ((*pat)->addr, h->h_addr_list[i], \
++ sizeof(_type)); \
++ pat = &((*pat)->next); \
++ } \
++ } \
+ }
+
+ typedef enum nss_status (*nss_gethostbyname2_r)
+@@ -368,6 +419,7 @@
+ struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
+ struct gaih_addrtuple *at = NULL;
+ int rc;
++ bool got_ipv6 = false;
+
+ if (req->ai_protocol || req->ai_socktype)
+ {
+@@ -490,6 +542,13 @@
+ {
+ if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET)
+ at->family = AF_INET;
++ else if (req->ai_flags & AI_V4MAPPED)
++ {
++ ((uint32_t *) at->addr)[3] = *(uint32_t *) at->addr;
++ ((uint32_t *) at->addr)[2] = htonl (0xffff);
++ ((uint32_t *) at->addr)[1] = 0;
++ ((uint32_t *) at->addr)[0] = 0;
++ }
+ else
+ return -EAI_ADDRFAMILY;
+ }
+@@ -507,6 +566,8 @@
+ {
+ if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6)
+ at->family = AF_INET6;
++ else if (IN6_IS_ADDR_V4MAPPED (at->addr))
++ *(uint32_t *) at->addr = ((uint32_t *) at->addr)[3];
+ else
+ return -EAI_ADDRFAMILY;
+
+@@ -610,7 +671,10 @@
+ no_inet6_data = no_data;
+ }
+ else if (req->ai_family == AF_INET)
+- gethosts (AF_INET, struct in_addr);
++ {
++ gethosts (AF_INET, struct in_addr);
++ no_inet6_data = no_data;
++ }
+
+ if (no_data != 0 && no_inet6_data != 0)
+ {
+@@ -677,13 +741,11 @@
+ int herrno;
+ struct hostent th;
+ size_t tmpbuflen = 512;
+- char *tmpbuf;
++ char *tmpbuf = NULL;
+
+ do
+ {
+- tmpbuflen *= 2;
+- tmpbuf = __alloca (tmpbuflen);
+-
++ tmpbuf = extend_alloca (tmpbuf, tmpbuflen, tmpbuflen * 2);
+ rc = __gethostbyaddr_r (at2->addr,
+ ((at2->family == AF_INET6)
+ ? sizeof(struct in6_addr)
+@@ -692,7 +754,7 @@
+ &h, &herrno);
+
+ }
+- while (rc == errno && herrno == NETDB_INTERNAL);
++ while (rc == ERANGE && herrno == NETDB_INTERNAL);
+
+ if (rc != 0 && herrno == NETDB_INTERNAL)
+ {
+@@ -749,6 +811,14 @@
+ {
+ family = AF_INET6;
+ socklen = sizeof (struct sockaddr_in6);
++
++ /* If we looked up IPv4 mapped address discard them here if
++ the caller isn't interested in all address and we have
++ found at least one IPv6 address. */
++ if (! got_ipv6
++ && (req->ai_flags & (AI_V4MAPPED|AI_ALL)) == AI_V4MAPPED
++ && IN6_IS_ADDR_V4MAPPED (at2->addr))
++ goto ignore;
+ }
+ else
+ {
+@@ -767,7 +837,7 @@
+ (*pai)->ai_socktype = st2->socktype;
+ (*pai)->ai_protocol = st2->protocol;
+ (*pai)->ai_addrlen = socklen;
+- (*pai)->ai_addr = (void *) (*pai) + sizeof(struct addrinfo);
++ (*pai)->ai_addr = (void *) (*pai) + sizeof (struct addrinfo);
+ #if SALEN
+ (*pai)->ai_addr->sa_len = socklen;
+ #endif /* SALEN */
+@@ -807,6 +877,7 @@
+ pai = &((*pai)->ai_next);
+ }
+
++ ignore:
+ at2 = at2->next;
+ }
+ }
+@@ -831,6 +902,7 @@
+ struct addrinfo *p = NULL, **end;
+ struct gaih *g = gaih, *pg = NULL;
+ struct gaih_service gaih_service, *pservice;
++ struct addrinfo local_hints;
+
+ if (name != NULL && name[0] == '*' && name[1] == 0)
+ name = NULL;
+@@ -844,12 +916,41 @@
+ if (hints == NULL)
+ hints = &default_hints;
+
+- if (hints->ai_flags & ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST))
++ if (hints->ai_flags
++ & ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST|AI_ADDRCONFIG|AI_V4MAPPED
++ |AI_ALL))
+ return EAI_BADFLAGS;
+
+ if ((hints->ai_flags & AI_CANONNAME) && name == NULL)
+ return EAI_BADFLAGS;
+
++ if (hints->ai_flags & AI_ADDRCONFIG)
++ {
++ /* Determine whether we have IPv4 or IPv6 interfaces or both.
++ We cannot cache the results since new interfaces could be
++ added at any time. */
++ bool seen_ipv4;
++ bool seen_ipv6;
++ __check_pf (&seen_ipv4, &seen_ipv6);
++
++ /* Now make a decision on what we return, if anything. */
++ if (hints->ai_family == PF_UNSPEC)
++ {
++ /* If we haven't seen both IPv4 and IPv6 interfaces we can
++ narrow down the search. */
++ if (! seen_ipv4 || ! seen_ipv6)
++ {
++ local_hints = *hints;
++ local_hints.ai_family = seen_ipv4 ? PF_INET : PF_INET6;
++ hints = &local_hints;
++ }
++ }
++ else if ((hints->ai_family == PF_INET && ! seen_ipv4)
++ || (hints->ai_family == PF_INET6 && ! seen_ipv6))
++ /* We cannot possibly return a valid answer. */
++ return EAI_NONAME;
++ }
++
+ if (service && service[0])
+ {
+ char *c;
+@@ -923,6 +1024,8 @@
+ }
+ libc_hidden_def (getaddrinfo)
+
++static_link_warning (getaddrinfo)
++
+ void
+ freeaddrinfo (struct addrinfo *ai)
+ {
+--- glibc-2.3.2/sysdeps/posix/libc_fatal.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/libc_fatal.c 2003-08-21 08:37:09.000000000 -0400
+@@ -56,3 +56,4 @@
+
+ abort ();
+ }
++libc_hidden_def (__libc_fatal)
+--- glibc-2.3.2/sysdeps/posix/pathconf.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/pathconf.c 2003-03-15 15:02:17.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,1995,1996,1998,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1998,2000,2001,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -225,6 +226,10 @@
+ /* In general there are no limits. If a system has one it should
+ overwrite this case. */
+ return -1;
++
++ case _PC_2_SYMLINKS:
++ /* Unix systems generally have symlinks. */
++ return 1;
+ }
+ }
+
+--- glibc-2.3.2/sysdeps/posix/posix_fallocate.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/posix_fallocate.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,7 +25,7 @@
+ /* Reserve storage for the data of the file associated with FD. */
+
+ int
+-posix_fallocate (int fd, __off_t offset, size_t len)
++posix_fallocate (int fd, __off_t offset, __off_t len)
+ {
+ struct stat64 st;
+ struct statfs f;
+@@ -33,7 +33,7 @@
+
+ /* `off_t´ is a signed type. Therefore we can determine whether
+ OFFSET + LEN is too large if it is a negative value. */
+- if (offset < 0 || len == 0)
++ if (offset < 0 || len < 0)
+ return EINVAL;
+ if (offset + len < 0)
+ return EFBIG;
+--- glibc-2.3.2/sysdeps/posix/posix_fallocate64.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/posix_fallocate64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,7 +25,7 @@
+ /* Reserve storage for the data of the file associated with FD. */
+
+ int
+-posix_fallocate64 (int fd, __off64_t offset, size_t len)
++__posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
+ {
+ struct stat64 st;
+ struct statfs64 f;
+@@ -33,7 +33,7 @@
+
+ /* `off64_t´ is a signed type. Therefore we can determine whether
+ OFFSET + LEN is too large if it is a negative value. */
+- if (offset < 0 || len == 0)
++ if (offset < 0 || len < 0)
+ return EINVAL;
+ if (offset + len < 0)
+ return EFBIG;
+@@ -69,3 +69,21 @@
+
+ return 0;
+ }
++
++#include <shlib-compat.h>
++#include <bits/wordsize.h>
++
++#if __WORDSIZE == 32 && SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
++
++int
++__posix_fallocate64_l32 (int fd, off64_t offset, size_t len)
++{
++ return __posix_fallocate64_l64 (fd, offset, len);
++}
++
++versioned_symbol (libc, __posix_fallocate64_l64, posix_fallocate64,
++ GLIBC_2_3_3);
++compat_symbol (libc, __posix_fallocate64_l32, posix_fallocate64, GLIBC_2_2);
++#else
++strong_alias (__posix_fallocate64_l64, posix_fallocate64);
++#endif
+--- glibc-2.3.2/sysdeps/posix/remove.c 2002-08-10 14:09:09.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/remove.c 2003-04-24 20:06:00.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* ANSI C `remove' function to delete a file or directory. POSIX.1 version.
+- Copyright (C) 1995,96,97,2002 Free Software Foundation, Inc.
++ Copyright (C) 1995,96,97,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,17 +25,15 @@
+ remove (file)
+ const char *file;
+ {
+- int save;
++ /* First try to unlink since this is more frequently the necessary action. */
++ if (__unlink (file) != 0
++ /* If it is indeed a directory... */
++ && (errno != EISDIR
++ /* ...try to remove it. */
++ || __rmdir (file) != 0))
++ /* Cannot remove the object for whatever reason. */
++ return -1;
+
+- save = errno;
+- if (__rmdir (file) == 0)
+- return 0;
+- else if (errno == ENOTDIR && __unlink (file) == 0)
+- {
+- __set_errno (save);
+- return 0;
+- }
+-
+- return -1;
++ return 0;
+ }
+ libc_hidden_def (remove)
+--- glibc-2.3.2/sysdeps/posix/sigpause.c 2003-01-28 04:02:08.000000000 -0500
++++ glibc-2.3.2/sysdeps/posix/sigpause.c 2003-08-21 08:37:09.000000000 -0400
+@@ -34,14 +34,15 @@
+ {
+ /* The modern X/Open implementation is requested. */
+ if (__sigprocmask (0, NULL, &set) < 0
+- /* Perform the tests from sigdelset ourselves. */
+- || sig_or_mask <= 0 || sig_or_mask >= NSIG
+- || __sigdelset (&set, sig_or_mask) < 0)
++ || sigdelset (&set, sig_or_mask) < 0)
+ return -1;
+ }
+ else if (sigset_set_old_mask (&set, sig_or_mask) < 0)
+ return -1;
+
++ /* Note the sigpause() is a cancellation point. But since we call
++ sigsuspend() which itself is a cancellation point we do not have
++ to do anything here. */
+ return __sigsuspend (&set);
+ }
+
+--- glibc-2.3.2/sysdeps/posix/spawni.c 2002-08-03 22:20:03.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/spawni.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Guts of POSIX spawn interface. Generic POSIX.1 version.
+- Copyright (C) 2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 2000,01,02, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,6 +25,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include "spawn_int.h"
++#include <not-cancel.h>
+
+
+ /* The Unix standard contains a long explanation of the way to signal
+@@ -158,7 +159,7 @@
+ switch (action->tag)
+ {
+ case spawn_do_close:
+- if (__close (action->action.close_action.fd) != 0)
++ if (close_not_cancel (action->action.close_action.fd) != 0)
+ /* Signal the error. */
+ _exit (SPAWN_ERROR);
+ break;
+--- glibc-2.3.2/sysdeps/posix/sprofil.c 2002-12-15 23:26:25.000000000 -0500
++++ glibc-2.3.2/sysdeps/posix/sprofil.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001,02 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
+ This file is part of the GNU C Library.
+
+@@ -104,7 +104,7 @@
+ return pc;
+ }
+
+-static inline void
++static void
+ profil_count (void *pcp, int prof_uint)
+ {
+ struct region *region, *r = prof_info.last;
+--- glibc-2.3.2/sysdeps/posix/sysconf.c 2003-02-17 17:45:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/posix/sysconf.c 2003-04-12 11:39:46.000000000 -0400
+@@ -938,7 +938,7 @@
+ #endif
+
+ case _SC_MONOTONIC_CLOCK:
+-#ifdef _POSIX_MONOTONIC_CLOCK
++#if _POSIX_MONOTONIC_CLOCK
+ return _POSIX_MONOTONIC_CLOCK;
+ #else
+ return -1;
+--- glibc-2.3.2/sysdeps/posix/system.c 2003-01-04 19:30:53.000000000 -0500
++++ glibc-2.3.2/sysdeps/posix/system.c 2003-08-21 08:37:09.000000000 -0400
+@@ -162,6 +162,9 @@
+ }
+ while (child != pid);
+ #else
++ /* Note the system() is a cancellation point. But since we call
++ waitpid() which itself is a cancellation point we do not
++ have to do anything here. */
+ if (TEMP_FAILURE_RETRY (__waitpid (pid, &status, 0)) != pid)
+ status = -1;
+ #endif
+--- glibc-2.3.2/sysdeps/posix/utimes.c 2001-07-07 15:21:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/posix/utimes.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,8 +31,8 @@
+ if (tvp)
+ {
+ times = &buf;
+- times->actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
+- times->modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
++ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
++ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
+ }
+ else
+ times = NULL;
+--- glibc-2.3.2/sysdeps/posix/waitid.c 2002-12-15 04:38:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/posix/waitid.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Pseudo implementation of waitid.
+- Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1997.
+
+@@ -66,6 +66,9 @@
+ return -1;
+ }
+
++ /* Note the waitid() is a cancellation point. But since we call
++ waitpid() which itself is a cancellation point we do not have
++ to do anything here. */
+ child = __waitpid (pid, &status, options);
+
+ if (child == -1)
+--- glibc-2.3.2/sysdeps/powerpc/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/bits/atomic.h 2003-05-24 14:06:22.000000000 -0400
+@@ -0,0 +1,236 @@
++/* Atomic operations. PowerPC Common version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/*
++ * Never include sysdeps/powerpc/bits/atomic.h directly.
++ * Alway use include/atomic.h which will include either
++ * sysdeps/powerpc/powerpc32/bits/atomic.h
++ * or
++ * sysdeps/powerpc/powerpc64/bits/atomic.h
++ * as appropriate and which in turn include this file.
++ */
++
++#include <stdint.h>
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++/*
++ * Powerpc does not have byte and halfword forms of load and reserve and
++ * store conditional. So for powerpc we stub out the 8- and 16-bit forms.
++ */
++#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_bool_8_rel(mem, newval, oldval) \
++ (abort (), 0)
++
++#define __arch_compare_and_exchange_bool_16_rel(mem, newval, oldval) \
++ (abort (), 0)
++
++#ifdef UP
++# define __ARCH_ACQ_INSTR ""
++# define __ARCH_REL_INSTR ""
++#else
++# define __ARCH_ACQ_INSTR "isync"
++# ifndef __ARCH_REL_INSTR
++# define __ARCH_REL_INSTR "sync"
++# endif
++#endif
++
++#define atomic_full_barrier() __asm ("sync" ::: "memory")
++#define atomic_write_barrier() __asm ("eieio" ::: "memory")
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ \
++ __typeof (*(mem)) __tmp; \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile ( \
++ "1: lwarx %0,0,%1\n" \
++ " cmpw %0,%2\n" \
++ " bne 2f\n" \
++ " stwcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&r" (__tmp) \
++ : "b" (__memp), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp; \
++ })
++
++#define __arch_compare_and_exchange_val_32_rel(mem, newval, oldval) \
++ ({ \
++ __typeof (*(mem)) __tmp; \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: lwarx %0,0,%1\n" \
++ " cmpw %0,%2\n" \
++ " bne 2f\n" \
++ " stwcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " \
++ : "=&r" (__tmp) \
++ : "b" (__memp), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp; \
++ })
++
++#define __arch_atomic_exchange_32_acq(mem, value) \
++ ({ \
++ __typeof (*mem) __val; \
++ __asm __volatile ( \
++ "1: lwarx %0,0,%2\n" \
++ " stwcx. %3,0,%2\n" \
++ " bne- 1b\n" \
++ " " __ARCH_ACQ_INSTR \
++ : "=&r" (__val), "=m" (*mem) \
++ : "b" (mem), "r" (value), "1" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++#define __arch_atomic_exchange_32_rel(mem, value) \
++ ({ \
++ __typeof (*mem) __val; \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: lwarx %0,0,%2\n" \
++ " stwcx. %3,0,%2\n" \
++ " bne- 1b" \
++ : "=&r" (__val), "=m" (*mem) \
++ : "b" (mem), "r" (value), "1" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++#define __arch_atomic_exchange_and_add_32(mem, value) \
++ ({ \
++ __typeof (*mem) __val, __tmp; \
++ __asm __volatile ("1: lwarx %0,0,%3\n" \
++ " add %1,%0,%4\n" \
++ " stwcx. %1,0,%3\n" \
++ " bne- 1b" \
++ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
++ : "b" (mem), "r" (value), "2" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++#define __arch_atomic_decrement_if_positive_32(mem) \
++ ({ int __val, __tmp; \
++ __asm __volatile ("1: lwarx %0,0,%3\n" \
++ " cmpwi 0,%0,0\n" \
++ " addi %1,%0,-1\n" \
++ " ble 2f\n" \
++ " stwcx. %1,0,%3\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
++ : "b" (mem), "2" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
++ ({ \
++ __typeof (*(mem)) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __arch_compare_and_exchange_val_32_acq(mem, newval, oldval); \
++ else if (sizeof (*mem) == 8) \
++ __result = __arch_compare_and_exchange_val_64_acq(mem, newval, oldval); \
++ else \
++ abort (); \
++ __result; \
++ })
++
++#define atomic_compare_and_exchange_val_rel(mem, newval, oldval) \
++ ({ \
++ __typeof (*(mem)) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __arch_compare_and_exchange_val_32_rel(mem, newval, oldval); \
++ else if (sizeof (*mem) == 8) \
++ __result = __arch_compare_and_exchange_val_64_rel(mem, newval, oldval); \
++ else \
++ abort (); \
++ __result; \
++ })
++
++#define atomic_exchange_acq(mem, value) \
++ ({ \
++ __typeof (*(mem)) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __arch_atomic_exchange_32_acq (mem, value); \
++ else if (sizeof (*mem) == 8) \
++ __result = __arch_atomic_exchange_64_acq (mem, value); \
++ else \
++ abort (); \
++ __result; \
++ })
++
++#define atomic_exchange_rel(mem, value) \
++ ({ \
++ __typeof (*(mem)) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __arch_atomic_exchange_32_rel (mem, value); \
++ else if (sizeof (*mem) == 8) \
++ __result = __arch_atomic_exchange_64_rel (mem, value); \
++ else \
++ abort (); \
++ __result; \
++ })
++
++#define atomic_exchange_and_add(mem, value) \
++ ({ \
++ __typeof (*(mem)) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __arch_atomic_exchange_and_add_32 (mem, value); \
++ else if (sizeof (*mem) == 8) \
++ __result = __arch_atomic_exchange_and_add_64 (mem, value); \
++ else \
++ abort (); \
++ __result; \
++ })
++
++
++/* Decrement *MEM if it is > 0, and return the old value. */
++#define atomic_decrement_if_positive(mem) \
++ ({ __typeof (*(mem)) __result; \
++ if (sizeof (*mem) == 4) \
++ __result = __arch_atomic_decrement_if_positive_32 (mem); \
++ else if (sizeof (*mem) == 8) \
++ __result = __arch_atomic_decrement_if_positive_64 (mem); \
++ else \
++ abort (); \
++ __result; \
++ })
+--- glibc-2.3.2/sysdeps/powerpc/bits/setjmp.h 2002-12-15 14:44:44.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/bits/setjmp.h 2003-04-12 11:39:46.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,8 +17,10 @@
+ 02111-1307 USA. */
+
+ /* Define the machine-dependent type `jmp_buf'. PowerPC version. */
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
+
+-#ifndef _SETJMP_H
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -43,7 +45,7 @@
+ # define JB_CR 21 /* Condition code registers. */
+ # define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
+ # define JB_SIZE (58*4)
+-# endif
++# endif
+ #endif
+
+ #ifndef _ASM
+@@ -58,3 +60,5 @@
+ containing a local variable at ADDRESS. */
+ #define _JMPBUF_UNWINDS(jmpbuf, address) \
+ ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/powerpc/dl-tls.h 2003-02-27 23:54:53.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/dl-tls.h 2003-04-28 08:20:36.000000000 -0400
+@@ -25,19 +25,25 @@
+ unsigned long int ti_offset;
+ } tls_index;
+
+-
+-#ifdef SHARED
+-
+-extern void *__tls_get_addr (tls_index *ti);
+-
+ /* The thread pointer points 0x7000 past the first static TLS block. */
+-# define TLS_TP_OFFSET 0x7000
++#define TLS_TP_OFFSET 0x7000
+
+ /* Dynamic thread vector pointers point 0x8000 past the start of each
+ TLS block. */
+-# define TLS_DTV_OFFSET 0x8000
++#define TLS_DTV_OFFSET 0x8000
++
++/* Compute the value for a @tprel reloc. */
++#define TLS_TPREL_VALUE(sym_map, sym, reloc) \
++ ((sym_map)->l_tls_offset + (sym)->st_value + (reloc)->r_addend \
++ - TLS_TP_OFFSET)
++
++/* Compute the value for a @dtprel reloc. */
++#define TLS_DTPREL_VALUE(sym, reloc) \
++ ((sym)->st_value + (reloc)->r_addend - TLS_DTV_OFFSET)
++
++#ifdef SHARED
++extern void *__tls_get_addr (tls_index *ti);
+
+ # define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET)
+ # define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET)
+-
+ #endif
+--- glibc-2.3.2/sysdeps/powerpc/elf/libc-start.c 2003-02-25 18:40:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/elf/libc-start.c 2003-03-18 16:46:09.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,31 +22,9 @@
+ #include <bp-start.h>
+ #include <bp-sym.h>
+
+-extern void __libc_init_first (int argc, char **argv, char **envp);
+-
+ extern int __cache_line_size;
+ weak_extern (__cache_line_size)
+
+-extern int __libc_multiple_libcs;
+-extern void *__libc_stack_end;
+-
+-#ifndef SHARED
+-# include <tls.h>
+-extern void __pthread_initialize_minimal (void)
+-# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
+- __attribute__ ((weak))
+-# endif
+- ;
+-#endif
+-
+-struct startup_info
+-{
+- void *__unbounded sda_base;
+- int (*main) (int, char **, char **, void *);
+- int (*init) (int, char **, char **, void *);
+- void (*fini) (void);
+-};
+-
+ /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
+ verify that the static extern __cache_line_size is defined by checking
+ for not NULL. If it is defined then assign the cache block size
+@@ -66,16 +44,35 @@
+ break;
+ }
+ }
++/* This is used in sysdeps/generic/libc-start.c. */
++#define AUX_VECTOR_INIT __aux_init_cache
++
++/* The main work is done in the generic function. */
++#define LIBC_START_MAIN generic_start_main
++#define LIBC_START_MAIN_AUXVEC_ARG
++#define MAIN_AUXVEC_ARG
++#define INIT_MAIN_ARGS
++#include <sysdeps/generic/libc-start.c>
++
++
++struct startup_info
++{
++ void *__unbounded sda_base;
++ int (*main) (int, char **, char **, void *);
++ int (*init) (int, char **, char **, void *);
++ void (*fini) (void);
++};
+
+
+ int
+ /* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
+ BPs in the arglist of startup_info.main and startup_info.init. */
+ BP_SYM (__libc_start_main) (int argc, char *__unbounded *__unbounded ubp_av,
+- char *__unbounded *__unbounded ubp_ev,
+- ElfW(auxv_t) *__unbounded auxvec, void (*rtld_fini) (void),
+- struct startup_info *__unbounded stinfo,
+- char *__unbounded *__unbounded stack_on_entry)
++ char *__unbounded *__unbounded ubp_ev,
++ ElfW(auxv_t) *__unbounded auxvec,
++ void (*rtld_fini) (void),
++ struct startup_info *__unbounded stinfo,
++ char *__unbounded *__unbounded stack_on_entry)
+ {
+ #if __BOUNDED_POINTERS__
+ char **argv;
+@@ -83,15 +80,6 @@
+ # define argv ubp_av
+ #endif
+
+-#ifndef SHARED
+- /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
+- If the address would be taken inside the expression the optimizer
+- would try to be too smart and throws it away. Grrr. */
+- int *dummy_addr = &_dl_starting_up;
+-
+- __libc_multiple_libcs = dummy_addr && !_dl_starting_up;
+-#endif
+-
+ /* the PPC SVR4 ABI says that the top thing on the stack will
+ be a NULL pointer, so if not we assume that we're being called
+ as a statically-linked program by Linux... */
+@@ -110,78 +98,14 @@
+ while (*temp != NULL)
+ ++temp;
+ auxvec = (ElfW(auxv_t) *)++temp;
+-
+-# ifndef SHARED
+- _dl_aux_init (auxvec);
+-# endif
+ #endif
+ rtld_fini = NULL;
+ }
+
+- INIT_ARGV_and_ENVIRON;
+-
+ /* Initialize the __cache_line_size variable from the aux vector. */
+- __aux_init_cache(auxvec);
+-
+- /* Store something that has some relationship to the end of the
+- stack, for backtraces. This variable should be thread-specific.
+- Use +8 so it works for both 32- and 64-bit. */
+- __libc_stack_end = stack_on_entry + 8;
+-
+-#ifndef SHARED
+-# ifdef DL_SYSDEP_OSCHECK
+- if (!__libc_multiple_libcs)
+- {
+- /* This needs to run to initiliaze _dl_osversion before TLS
+- setup might check it. */
+- DL_SYSDEP_OSCHECK (__libc_fatal);
+- }
+-# endif
+- /* Initialize the thread library at least a bit since the libgcc
+- functions are using thread functions if these are available and
+- we need to setup errno. If there is no thread library and we
+- handle TLS the function is defined in the libc to initialized the
+- TLS handling. */
+-# if !(USE_TLS - 0) && !defined NONTLS_INIT_TP
+- if (__pthread_initialize_minimal)
+-# endif
+- __pthread_initialize_minimal ();
+-
+- /* Some security at this point. Prevent starting a SUID binary where
+- the standard file descriptors are not opened. We have to do this
+- only for statically linked applications since otherwise the dynamic
+- loader did the work already. */
+- if (__builtin_expect (__libc_enable_secure, 0))
+- __libc_check_standard_fds ();
+-#endif
+-
+- /* Register the destructor of the dynamic linker if there is any. */
+- if (rtld_fini != NULL)
+- __cxa_atexit ((void (*) (void *)) rtld_fini, NULL, NULL);
+-
+- /* Call the initializer of the libc. */
+-#ifdef SHARED
+- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
+- _dl_debug_printf ("\ninitialize libc\n\n");
+-#endif
+- __libc_init_first (argc, argv, __environ);
+-
+- /* Register the destructor of the program, if any. */
+- if (stinfo->fini)
+- __cxa_atexit ((void (*) (void *)) stinfo->fini, NULL, NULL);
+-
+- /* Call the initializer of the program, if any. */
+-#ifdef SHARED
+- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
+- _dl_debug_printf ("\ninitialize program: %s\n\n", argv[0]);
+-#endif
+- if (stinfo->init)
+- stinfo->init (argc, argv, __environ, auxvec);
+-
+-#ifdef SHARED
+- if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
+- _dl_debug_printf ("\ntransferring control: %s\n\n", argv[0]);
+-#endif
++ __aux_init_cache (auxvec);
+
+- exit (stinfo->main (argc, argv, __environ, auxvec));
++ return generic_start_main (stinfo->main, argc, ubp_av, auxvec,
++ stinfo->init, stinfo->fini, rtld_fini,
++ stack_on_entry);
+ }
+--- glibc-2.3.2/sysdeps/powerpc/fpu/bits/mathdef.h 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/fpu/bits/mathdef.h 2003-04-12 11:39:46.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,9 +39,6 @@
+ typedef double double_t; /* `double' expressions are evaluated as
+ `double'. */
+
+-/* Signal that types stay as they were declared. */
+-# define FLT_EVAL_METHOD 0
+-
+ /* Define `INFINITY' as value of type `float'. */
+ # define INFINITY HUGE_VALF
+
+--- glibc-2.3.2/sysdeps/powerpc/fpu/libm-test-ulps 2002-09-02 18:15:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
+@@ -91,7 +91,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -104,10 +104,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -142,7 +142,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -236,7 +236,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -255,7 +255,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -263,7 +263,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -437,12 +437,12 @@
+ ifloat: 1
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -497,7 +497,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrt.c 2002-05-14 16:46:17.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrt.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+-/* Single-precision floating point square root.
+- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
++/* Double-precision floating point square root.
++ Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,8 +23,8 @@
+ #include <inttypes.h>
+
+ static const double almost_half = 0.5000000000000001; /* 0.5 + 2^-53 */
+-static const uint32_t a_nan = 0x7fc00000;
+-static const uint32_t a_inf = 0x7f800000;
++static const ieee_float_shape_type a_nan = { .word = 0x7fc00000 };
++static const ieee_float_shape_type a_inf = { .word = 0x7f800000 };
+ static const float two108 = 3.245185536584267269e+32;
+ static const float twom54 = 5.551115123125782702e-17;
+ extern const float __t_sqrt[1024];
+@@ -45,7 +45,7 @@
+ double
+ __sqrt(double x)
+ {
+- const float inf = *(const float *)&a_inf;
++ const float inf = a_inf.value;
+ /* x = f_wash(x); *//* This ensures only one exception for SNaN. */
+ if (x > 0)
+ {
+@@ -79,7 +79,7 @@
+ t_sqrt = __t_sqrt + (xi0 >> (52-32-8-1) & 0x3fe);
+ sg = t_sqrt[0];
+ sy = t_sqrt[1];
+-
++
+ /* Here we have three Newton-Rhapson iterations each of a
+ division and a square root and the remainder of the
+ argument reduction, all interleaved. */
+@@ -130,7 +130,7 @@
+ x = __kernel_standard(x,x,26);
+ else
+ #endif
+- x = *(const float*)&a_nan;
++ x = a_nan.value;
+ }
+ return f_wash(x);
+ }
+--- glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrtf.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/fpu/w_sqrtf.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Single-precision floating point square root.
+- Copyright (C) 1997 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,8 +23,8 @@
+ #include <inttypes.h>
+
+ static const float almost_half = 0.50000006; /* 0.5 + 2^-24 */
+-static const uint32_t a_nan = 0x7fc00000;
+-static const uint32_t a_inf = 0x7f800000;
++static const ieee_float_shape_type a_nan = { .word = 0x7fc00000 };
++static const ieee_float_shape_type a_inf = { .word = 0x7f800000 };
+ static const float two48 = 281474976710656.0;
+ static const float twom24 = 5.9604644775390625e-8;
+ extern const float __t_sqrt[1024];
+@@ -45,7 +45,7 @@
+ float
+ __sqrtf(float x)
+ {
+- const float inf = *(const float *)&a_inf;
++ const float inf = a_inf.value;
+ /* x = f_washf(x); *//* This ensures only one exception for SNaN. */
+ if (x > 0)
+ {
+@@ -125,7 +125,7 @@
+ x = __kernel_standard(x,x,126);
+ else
+ #endif
+- x = *(const float*)&a_nan;
++ x = a_nan.value;
+ }
+ return f_washf(x);
+ }
+--- glibc-2.3.2/sysdeps/powerpc/nofpu/libm-test-ulps 2002-10-19 16:06:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/nofpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
+@@ -94,7 +94,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -107,10 +107,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -145,7 +145,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -239,7 +239,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -258,7 +258,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -266,7 +266,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -453,12 +453,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -513,7 +513,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/atomicity.h 2003-02-20 17:11:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,98 +0,0 @@
+-/* Low-level functions for atomic operations. PowerPC version.
+- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-static inline int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- int tmp, result;
+- __asm__ ("\n\
+-0: lwarx %0,0,%2 \n\
+- add%I3 %1,%0,%3 \n\
+- stwcx. %1,0,%2 \n\
+- bne- 0b \n\
+-" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+- return result;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- int tmp;
+- __asm__ ("\n\
+-0: lwarx %0,0,%1 \n\
+- add%I2 %0,%0,%2 \n\
+- stwcx. %0,0,%1 \n\
+- bne- 0b \n\
+-" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- int result;
+- __asm__ ("\n\
+-0: lwarx %0,0,%1 \n\
+- sub%I2c. %0,%0,%2 \n\
+- cntlzw %0,%0 \n\
+- bne- 1f \n\
+- stwcx. %3,0,%1 \n\
+- bne- 0b \n\
+-1: \n\
+-" : "=&b"(result) : "r"(p), "Ir"(oldval), "r"(newval) : "cr0", "memory");
+- return result >> 5;
+-}
+-
+-static inline long int
+-__attribute__ ((unused))
+-always_swap (volatile long int *p, long int newval)
+-{
+- long int result;
+- __asm__ ("\n\
+-0: lwarx %0,0,%1 \n\
+- stwcx. %2,0,%1 \n\
+- bne- 0b \n\
+-" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
+- return result;
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-test_and_set (volatile long int *p, long int newval)
+-{
+- int result;
+- __asm__ ("\n\
+-0: lwarx %0,0,%1 \n\
+- cmpwi %0,0 \n\
+- bne- 1f \n\
+- stwcx. %2,0,%1 \n\
+- bne- 0b \n\
+-1: \n\
+-" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
+- return result;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/bits/atomic.h 2003-05-24 14:06:22.000000000 -0400
+@@ -0,0 +1,100 @@
++/* Atomic operations. PowerPC32 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/*
++ * The 32-bit exchange_bool is different on powerpc64 because the subf
++ * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
++ * (a load word and zero (high 32) form). So powerpc64 has a slightly
++ * different version in sysdeps/powerpc/powerpc64/bits/atomic.h.
++ */
++# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
++({ \
++ unsigned int __tmp; \
++ __asm __volatile ( \
++ "1: lwarx %0,0,%1\n" \
++ " subf. %0,%2,%0\n" \
++ " bne 2f\n" \
++ " stwcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&r" (__tmp) \
++ : "b" (mem), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp != 0; \
++})
++
++# define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval) \
++({ \
++ unsigned int __tmp; \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: lwarx %0,0,%1\n" \
++ " subf. %0,%2,%0\n" \
++ " bne 2f\n" \
++ " stwcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " \
++ : "=&r" (__tmp) \
++ : "b" (mem), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp != 0; \
++})
++
++/*
++ * Powerpc32 processors don't implement the 64-bit (doubleword) forms of
++ * load and reserve (ldarx) and store conditional (stdcx.) instructions.
++ * So for powerpc32 we stub out the 64-bit forms.
++ */
++# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
++ (abort (), 0)
++
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
++ (abort (), 0)
++
++# define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++# define __arch_atomic_exchange_64_acq(mem, value) \
++ ({ abort (); (*mem) = (value); })
++
++# define __arch_atomic_exchange_64_rel(mem, value) \
++ ({ abort (); (*mem) = (value); })
++
++# define __arch_atomic_exchange_and_add_64(mem, value) \
++ ({ abort (); (*mem) = (value); })
++
++# define __arch_atomic_decrement_if_positive_64(mem) \
++ ({ abort (); (*mem)--; })
++
++/*
++ * Older powerpc32 processors don't support the new "light weight"
++ * sync (lwsync). So the only safe option is to use normal sync
++ * for all powerpc32 applications.
++ */
++# define atomic_read_barrier() __asm ("sync" ::: "memory")
++
++/*
++ * Include the rest of the atomic ops macros which are common to both
++ * powerpc32 and powerpc64.
++ */
++#include_next <bits/atomic.h>
++
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.c 2002-11-21 14:09:30.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.c 2003-05-24 14:06:22.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Machine-dependent ELF dynamic relocation functions. PowerPC version.
+- Copyright (C) 1995-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -368,26 +368,24 @@
+ return finaladdr;
+ }
+
+-static void
+-dl_reloc_overflow (struct link_map *map,
+- const char *name,
+- Elf32_Addr *const reloc_addr,
+- const Elf32_Sym *sym,
+- const Elf32_Sym *refsym)
++void
++_dl_reloc_overflow (struct link_map *map,
++ const char *name,
++ Elf32_Addr *const reloc_addr,
++ const Elf32_Sym *refsym)
+ {
+ char buffer[128];
+ char *t;
+- const Elf32_Sym *errsym = sym ?: refsym;
+ t = stpcpy (buffer, name);
+ t = stpcpy (t, " relocation at 0x00000000");
+ _itoa_word ((unsigned) reloc_addr, t, 16, 0);
+- if (errsym)
++ if (refsym)
+ {
+ const char *strtab;
+
+ strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+ t = stpcpy (t, " for symbol `");
+- t = stpcpy (t, strtab + errsym->st_name);
++ t = stpcpy (t, strtab + refsym->st_name);
+ t = stpcpy (t, "'");
+ }
+ t = stpcpy (t, " out of range");
+@@ -397,6 +395,7 @@
+ void
+ __process_machine_rela (struct link_map *map,
+ const Elf32_Rela *reloc,
++ struct link_map *sym_map,
+ const Elf32_Sym *sym,
+ const Elf32_Sym *refsym,
+ Elf32_Addr *const reloc_addr,
+@@ -423,19 +422,19 @@
+
+ case R_PPC_ADDR24:
+ if (__builtin_expect (finaladdr > 0x01fffffc && finaladdr < 0xfe000000, 0))
+- dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, refsym);
+ *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
+ break;
+
+ case R_PPC_ADDR16:
+ if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
+- dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, refsym);
+ *(Elf32_Half*) reloc_addr = finaladdr;
+ break;
+
+ case R_PPC_UADDR16:
+ if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
+- dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, refsym);
+ ((char *) reloc_addr)[0] = finaladdr >> 8;
+ ((char *) reloc_addr)[1] = finaladdr;
+ break;
+@@ -456,7 +455,7 @@
+ case R_PPC_ADDR14_BRTAKEN:
+ case R_PPC_ADDR14_BRNTAKEN:
+ if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
+- dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, refsym);
+ *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
+ if (rinfo != R_PPC_ADDR14)
+ *reloc_addr = ((*reloc_addr & 0xffdfffff)
+@@ -468,7 +467,7 @@
+ {
+ Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
+ if (delta << 6 >> 6 != delta)
+- dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, refsym);
+ *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
+ }
+ break;
+@@ -541,6 +540,53 @@
+ }
+ break;
+
++#ifdef USE_TLS
++#define CHECK_STATIC_TLS(map, sym_map) \
++ do { \
++ if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
++ _dl_allocate_static_tls (sym_map); \
++ } while (0)
++# define DO_TLS_RELOC(suffix) \
++ case R_PPC_DTPREL##suffix: \
++ /* During relocation all TLS symbols are defined and used. \
++ Therefore the offset is already correct. */ \
++ if (sym_map != NULL) \
++ do_reloc##suffix ("R_PPC_DTPREL"#suffix, \
++ TLS_DTPREL_VALUE (sym, reloc)); \
++ break; \
++ case R_PPC_TPREL##suffix: \
++ if (sym_map != NULL) \
++ { \
++ CHECK_STATIC_TLS (map, sym_map); \
++ do_reloc##suffix ("R_PPC_TPREL"#suffix, \
++ TLS_TPREL_VALUE (sym_map, sym, reloc)); \
++ } \
++ break;
++
++ inline void do_reloc16 (const char *r_name, Elf32_Addr value)
++ {
++ if (__builtin_expect (value > 0x7fff && value < 0xffff8000, 0))
++ _dl_reloc_overflow (map, r_name, reloc_addr, refsym);
++ *(Elf32_Half *) reloc_addr = value;
++ }
++ inline void do_reloc16_LO (const char *r_name, Elf32_Addr value)
++ {
++ *(Elf32_Half *) reloc_addr = value;
++ }
++ inline void do_reloc16_HI (const char *r_name, Elf32_Addr value)
++ {
++ *(Elf32_Half *) reloc_addr = value >> 16;
++ }
++ inline void do_reloc16_HA (const char *r_name, Elf32_Addr value)
++ {
++ *(Elf32_Half *) reloc_addr = (value + 0x8000) >> 16;
++ }
++ DO_TLS_RELOC (16)
++ DO_TLS_RELOC (16_LO)
++ DO_TLS_RELOC (16_HI)
++ DO_TLS_RELOC (16_HA)
++#endif
++
+ default:
+ _dl_reloc_bad_type (map, rinfo, 0);
+ return;
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.h 2003-01-30 15:25:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -23,6 +23,7 @@
+ #define ELF_MACHINE_NAME "powerpc"
+
+ #include <assert.h>
++#include <dl-tls.h>
+
+ /* Return nonzero iff ELF header is compatible with the running host. */
+ static inline int
+@@ -275,11 +276,21 @@
+ /* We never want to use a PLT entry as the destination of a
+ reloc, when what is being relocated is a branch. This is
+ partly for efficiency, but mostly so we avoid loops. */
++#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
++#define elf_machine_type_class(type) \
++ ((((type) == R_PPC_JMP_SLOT \
++ || (type) == R_PPC_REL24 \
++ || ((type) >= R_PPC_DTPMOD32 /* contiguous TLS */ \
++ && (type) <= R_PPC_DTPREL32) \
++ || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT) \
++ | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
++#else
+ #define elf_machine_type_class(type) \
+ ((((type) == R_PPC_JMP_SLOT \
+ || (type) == R_PPC_REL24 \
+ || (type) == R_PPC_ADDR24) * ELF_RTYPE_CLASS_PLT) \
+ | (((type) == R_PPC_COPY) * ELF_RTYPE_CLASS_COPY))
++#endif
+
+ /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */
+ #define ELF_MACHINE_JMP_SLOT R_PPC_JMP_SLOT
+@@ -325,11 +336,18 @@
+ has been determined. */
+ extern void __process_machine_rela (struct link_map *map,
+ const Elf32_Rela *reloc,
++ struct link_map *sym_map,
+ const Elf32_Sym *sym,
+ const Elf32_Sym *refsym,
+ Elf32_Addr *const reloc_addr,
+ Elf32_Addr finaladdr,
+- int rinfo);
++ int rinfo) attribute_hidden;
++
++/* Call _dl_signal_error when a resolved value overflows a relocated area. */
++extern void _dl_reloc_overflow (struct link_map *map,
++ const char *name,
++ Elf32_Addr *const reloc_addr,
++ const Elf32_Sym *refsym) attribute_hidden;
+
+ /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
+ LOADADDR is the load address of the object; INFO is an array indexed
+@@ -338,46 +356,45 @@
+ inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const Elf32_Sym *const refsym = sym;
+- Elf32_Word finaladdr;
+- const int rinfo = ELF32_R_TYPE (reloc->r_info);
++ Elf32_Addr value;
++ const int r_type = ELF32_R_TYPE (reloc->r_info);
++ struct link_map *sym_map = NULL;
+
+ #ifndef RESOLVE_CONFLICT_FIND_MAP
+- if (__builtin_expect (rinfo == R_PPC_NONE, 0))
+- return;
+-
+- /* The condition on the next two lines is a hack around a bug in Solaris
+- tools on Sparc. It's not clear whether it should really be here at all,
+- but if not the binutils need to be changed. */
+- if (rinfo == R_PPC_RELATIVE
+- || (sym->st_shndx != SHN_UNDEF
+- && ELF32_ST_BIND (sym->st_info) == STB_LOCAL))
++ if (r_type == R_PPC_RELATIVE)
+ {
+- /* Has already been relocated. */
+- Elf32_Word loadbase = map->l_addr;
+- finaladdr = loadbase + reloc->r_addend;
++ *reloc_addr = map->l_addr + reloc->r_addend;
++ return;
+ }
++
++ if (__builtin_expect (r_type == R_PPC_NONE, 0))
++ return;
++
++ /* binutils on ppc32 includes st_value in r_addend for relocations
++ against local symbols. */
++ if (__builtin_expect (ELF32_ST_BIND (sym->st_info) == STB_LOCAL, 0)
++ && sym->st_shndx != SHN_UNDEF)
++ value = map->l_addr;
+ else
+ {
+- Elf32_Word loadbase
+- = (Elf32_Word) (char *) (RESOLVE (&sym, version,
+- ELF32_R_TYPE(reloc->r_info)));
+- if (sym == NULL)
+- {
+- /* Weak symbol that wasn't actually defined anywhere. */
+- assert (loadbase == 0);
+- finaladdr = reloc->r_addend;
+- }
+- else
+- finaladdr = (loadbase + (Elf32_Word) (char *) sym->st_value
+- + reloc->r_addend);
++# if defined USE_TLS && !defined RTLD_BOOTSTRAP
++ sym_map = RESOLVE_MAP (&sym, version, r_type);
++ value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
++# else
++ value = RESOLVE (&sym, version, r_type);
++# ifndef RTLD_BOOTSTRAP
++ if (sym != NULL)
++# endif
++ value += sym->st_value;
++# endif
+ }
++ value += reloc->r_addend;
+ #else
+- finaladdr = reloc->r_addend;
+- if (rinfo == R_PPC_JMP_SLOT)
+- RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
++ value = reloc->r_addend;
+ #endif
+
+ /* A small amount of code is duplicated here for speed. In libc,
+@@ -386,21 +403,63 @@
+ R_PPC_ADDR32, and 16% are R_PPC_JMP_SLOT (which this routine
+ wouldn't usually handle). As an bonus, doing this here allows
+ the switch statement in __process_machine_rela to work. */
+- if (rinfo == R_PPC_RELATIVE
+- || rinfo == R_PPC_GLOB_DAT
+- || rinfo == R_PPC_ADDR32)
++ switch (r_type)
+ {
+- *reloc_addr = finaladdr;
++ case R_PPC_GLOB_DAT:
++ case R_PPC_ADDR32:
++ *reloc_addr = value;
++ break;
++
++#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
++ && !defined RESOLVE_CONFLICT_FIND_MAP
++# ifdef RTLD_BOOTSTRAP
++# define NOT_BOOTSTRAP 0
++# else
++# define NOT_BOOTSTRAP 1
++# endif
++
++ case R_PPC_DTPMOD32:
++ if (!NOT_BOOTSTRAP)
++ /* During startup the dynamic linker is always index 1. */
++ *reloc_addr = 1;
++ else if (sym_map != NULL)
++ /* Get the information from the link map returned by the
++ RESOLVE_MAP function. */
++ *reloc_addr = sym_map->l_tls_modid;
++ break;
++ case R_PPC_DTPREL32:
++ /* During relocation all TLS symbols are defined and used.
++ Therefore the offset is already correct. */
++ if (NOT_BOOTSTRAP && sym_map != NULL)
++ *reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
++ break;
++ case R_PPC_TPREL32:
++ if (!NOT_BOOTSTRAP || sym_map != NULL)
++ {
++ if (NOT_BOOTSTRAP)
++ CHECK_STATIC_TLS (map, sym_map);
++ *reloc_addr = TLS_TPREL_VALUE (sym_map, sym, reloc);
++ }
++ break;
++#endif /* USE_TLS etc. */
++
++#ifdef RESOLVE_CONFLICT_FIND_MAP
++ case R_PPC_JMP_SLOT:
++ RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
++ /* FALLTHROUGH */
++#endif
++
++ default:
++ __process_machine_rela (map, reloc, sym_map, sym, refsym,
++ reloc_addr, value, r_type);
+ }
+- else
+- __process_machine_rela (map, reloc, sym, refsym,
+- reloc_addr, finaladdr, rinfo);
+ }
+
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure 2003-03-03 16:20:51.000000000 -0500
+@@ -0,0 +1,52 @@
++# This file is generated from configure.in by Autoconf. DO NOT EDIT!
++ # Local configure fragment for sysdeps/powerpc32/elf.
++
++if test "$usetls" != no; then
++# Check for support of thread-local storage handling in assembler and
++# linker.
++echo "$as_me:$LINENO: checking for powerpc32 TLS support" >&5
++echo $ECHO_N "checking for powerpc32 TLS support... $ECHO_C" >&6
++if test "${libc_cv_powerpc32_tls+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat > conftest.s <<\EOF
++ .section ".tdata","awT",@progbits
++x: .long 1
++x1: .long 1
++x2: .long 1
++ .text
++ addi 3,31,x@got@tlsgd
++ addi 3,31,x1@got@tlsld
++ addi 9,3,x1@dtprel
++ addis 9,3,x2@dtprel@ha
++ addi 9,9,x2@dtprel@l
++ lwz 0,x1@dtprel(3)
++ addis 9,3,x2@dtprel@ha
++ lwz 0,x2@dtprel@l(9)
++ lwz 9,x3@got@tprel(31)
++ add 9,9,x@tls
++ addi 9,2,x1@tprel
++ addis 9,2,x2@tprel@ha
++ addi 9,9,x2@tprel@l
++EOF
++if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ libc_cv_powerpc32_tls=yes
++else
++ libc_cv_powerpc32_tls=no
++fi
++rm -f conftest*
++fi
++echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
++echo "${ECHO_T}$libc_cv_powerpc32_tls" >&6
++if test $libc_cv_powerpc32_tls = yes; then
++ cat >>confdefs.h <<\_ACEOF
++#define HAVE_TLS_SUPPORT 1
++_ACEOF
++
++fi
++fi
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure.in 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/configure.in 2003-03-03 16:20:51.000000000 -0500
+@@ -0,0 +1,38 @@
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/powerpc32/elf.
++
++if test "$usetls" != no; then
++# Check for support of thread-local storage handling in assembler and
++# linker.
++AC_CACHE_CHECK(for powerpc32 TLS support, libc_cv_powerpc32_tls, [dnl
++cat > conftest.s <<\EOF
++ .section ".tdata","awT",@progbits
++x: .long 1
++x1: .long 1
++x2: .long 1
++ .text
++ addi 3,31,x@got@tlsgd
++ addi 3,31,x1@got@tlsld
++ addi 9,3,x1@dtprel
++ addis 9,3,x2@dtprel@ha
++ addi 9,9,x2@dtprel@l
++ lwz 0,x1@dtprel(3)
++ addis 9,3,x2@dtprel@ha
++ lwz 0,x2@dtprel@l(9)
++ lwz 9,x3@got@tprel(31)
++ add 9,9,x@tls
++ addi 9,2,x1@tprel
++ addis 9,2,x2@tprel@ha
++ addi 9,9,x2@tprel@l
++EOF
++dnl
++if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
++ libc_cv_powerpc32_tls=yes
++else
++ libc_cv_powerpc32_tls=no
++fi
++rm -f conftest*])
++if test $libc_cv_powerpc32_tls = yes; then
++ AC_DEFINE(HAVE_TLS_SUPPORT)
++fi
++fi
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/start.S 2002-12-09 22:41:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/elf/start.S 2003-06-03 09:36:29.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup code for programs linked with GNU libc.
+- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,29 +21,50 @@
+ #include "bp-sym.h"
+
+ /* These are the various addresses we require. */
++#ifdef PIC
++ .section ".data"
++#else
+ .section ".rodata"
++#endif
+ .align 2
+ L(start_addresses):
+ .long _SDA_BASE_
+- .long JUMPTARGET(BP_SYM (main))
+- .long JUMPTARGET(__libc_csu_init)
+- .long JUMPTARGET(__libc_csu_fini)
++ .long BP_SYM (main)
++ .long __libc_csu_init
++ .long __libc_csu_fini
+ ASM_SIZE_DIRECTIVE(L(start_addresses))
+
+ .section ".text"
++#ifdef PIC
++L(start_addressesp):
++ .long L(start_addresses)-L(branch)
++#endif
+ ENTRY(_start)
+ /* Save the stack pointer, in case we're statically linked under Linux. */
+ mr r9,r1
+ /* Set up an initial stack frame, and clear the LR. */
+ clrrwi r1,r1,4
++#ifdef PIC
++ bcl 20,31,L(branch)
++L(branch):
++ li r0,0
++ mflr r13
++#else
+ li r0,0
++#endif
+ stwu r1,-16(r1)
+ mtlr r0
+ stw r0,0(r1)
+ /* Set r13 to point at the 'small data area', and put the address of
+ start_addresses in r8... */
++#ifdef PIC
++ lwz r8,L(start_addressesp)-L(branch)(r13)
++ add r8,r13,r8
++ lwz r13,0(r8)
++#else
+ lis r8,L(start_addresses)@ha
+ lwzu r13,L(start_addresses)@l(r8)
++#endif
+ /* and continue in libc-start, in glibc. */
+ b JUMPTARGET(BP_SYM (__libc_start_main))
+ END(_start)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/memset.S 2002-08-23 15:46:49.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/memset.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized memset implementation for PowerPC.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,27 +21,23 @@
+ #include <bp-sym.h>
+ #include <bp-asm.h>
+
+-/* Define a global static that can hold the cache line size. The
++/* Define a global static that can hold the cache line size. The
+ assumption is that startup code will access the "aux vector" to
+- to obtain the value set by the kernel and store it into this
++ to obtain the value set by the kernel and store it into this
+ variable. */
+-
++
+ .globl __cache_line_size
+- .section ".data","aw"
+- .align 2
+- .type __cache_line_size,@object
+- .size __cache_line_size,4
+-__cache_line_size:
+- .long 0
+- .section ".text"
++ .lcomm __cache_line_size,4,4
++
+ /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
+ Returns 's'.
+
+ The memset is done in four sizes: byte (8 bits), word (32 bits),
+ 32-byte blocks (256 bits) and __cache_line_size (128, 256, 1024 bits).
+- There is a special case for setting whole cache lines to 0, which
++ There is a special case for setting whole cache lines to 0, which
+ takes advantage of the dcbz instruction. */
+
++ .section ".text"
+ EALIGN (BP_SYM (memset), 5, 1)
+
+ #define rTMP r0
+@@ -123,14 +119,14 @@
+ cmplwi cr1, rCHR, 0
+ clrrwi. rALIGN, rLEN, 5
+ mtcrf 0x01, rLEN /* 40th instruction from .align */
+-
++
+ /* Check if we can use the special case for clearing memory using dcbz.
+- This requires that we know the correct cache line size for this
++ This requires that we know the correct cache line size for this
+ processor. Getting the __cache_line_size may require establishing GOT
+ addressability, so branch out of line to set this up. */
+- beq cr1, L(checklinesize)
+-
+-/* Store blocks of 32-bytes (256-bits) starting on a 32-byte boundary.
++ beq cr1, L(checklinesize)
++
++/* Store blocks of 32-bytes (256-bits) starting on a 32-byte boundary.
+ Can't assume that rCHR is zero or that the cache line size is either
+ 32-bytes or even known. */
+ L(nondcbz):
+@@ -172,7 +168,7 @@
+
+ .align 5
+ nop
+-/* Clear cache lines of memory in 128-byte chunks.
++/* Clear cache lines of memory in 128-byte chunks.
+ This code is optimized for processors with 32-byte cache lines.
+ It is further optimized for the 601 processor, which requires
+ some care in how the code is aligned in the i-cache. */
+@@ -259,22 +255,22 @@
+ stw rCHR, -4(rMEMP)
+ stw rCHR, -8(rMEMP)
+ blr
+-
++
+ L(checklinesize):
+ #ifdef SHARED
+ mflr rTMP
+ /* If the remaining length is less the 32 bytes then don't bother getting
+ the cache line size. */
+- beq L(medium)
+-/* Establishes GOT addressability so we can load __cache_line_size
++ beq L(medium)
++/* Establishes GOT addressability so we can load __cache_line_size
+ from static. This value was set from the aux vector during startup. */
+ bl _GLOBAL_OFFSET_TABLE_@local-4
+ mflr rGOT
+ lwz rGOT,__cache_line_size@got(rGOT)
+ lwz rCLS,0(rGOT)
+ mtlr rTMP
+-#else
+-/* Load __cache_line_size from static. This value was set from the
++#else
++/* Load __cache_line_size from static. This value was set from the
+ aux vector during startup. */
+ lis rCLS,__cache_line_size@ha
+ /* If the remaining length is less the 32 bytes then don't bother getting
+@@ -282,22 +278,22 @@
+ beq L(medium)
+ lwz rCLS,__cache_line_size@l(rCLS)
+ #endif
+-
++
+ /*If the cache line size was not set then goto to L(nondcbz), which is
+- safe for any cache line size. */
++ safe for any cache line size. */
+ cmplwi cr1,rCLS,0
+ beq cr1,L(nondcbz)
+-
++
+ /* If the cache line size is 32 bytes then goto to L(zloopstart),
+- which is coded specificly for 32-byte lines (and 601). */
++ which is coded specificly for 32-byte lines (and 601). */
+ cmplwi cr1,rCLS,32
+ beq cr1,L(zloopstart)
+-
+-/* Now we know the cache line size and it is not 32-bytes. However
+- we may not yet be aligned to the cache line and may have a partial
+- line to fill. Touch it 1st to fetch the cache line. */
+- dcbtst 0,rMEMP
+-
++
++/* Now we know the cache line size and it is not 32-bytes. However
++ we may not yet be aligned to the cache line and may have a partial
++ line to fill. Touch it 1st to fetch the cache line. */
++ dcbtst 0,rMEMP
++
+ addi rCLM,rCLS,-1
+ L(getCacheAligned):
+ cmplwi cr1,rLEN,32
+@@ -317,8 +313,8 @@
+ stw rCHR,-8(rMEMP)
+ stw rCHR,-4(rMEMP)
+ b L(getCacheAligned)
+-
+-/* Now we are aligned to the cache line and can use dcbz. */
++
++/* Now we are aligned to the cache line and can use dcbz. */
+ L(cacheAligned):
+ cmplw cr1,rLEN,rCLS
+ blt cr1,L(handletail32)
+@@ -327,12 +323,13 @@
+ add rMEMP,rMEMP,rCLS
+ b L(cacheAligned)
+
+-/* We are here because; the cache line size was set, it was not
+- 32-bytes, and the remainder (rLEN) is now less than the actual cache
+- line size. Set up the preconditions for L(nondcbz) and go there to
+- store the remaining bytes. */
++/* We are here because; the cache line size was set, it was not
++ 32-bytes, and the remainder (rLEN) is now less than the actual cache
++ line size. Set up the preconditions for L(nondcbz) and go there to
++ store the remaining bytes. */
+ L(handletail32):
+ clrrwi. rALIGN, rLEN, 5
+ b L(nondcbz)
+-
++
+ END (BP_SYM (memset))
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/strchr.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strchr.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strchr implementation for PowerPC.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -128,3 +128,4 @@
+ END (BP_SYM (strchr))
+
+ weak_alias (BP_SYM (strchr), BP_SYM (index))
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/strcmp.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strcmp.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strcmp implementation for PowerPC.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -124,3 +124,4 @@
+ /* GKM FIXME: check high bounds. */
+ blr
+ END (BP_SYM (strcmp))
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/strcpy.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strcpy.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strcpy implementation for PowerPC.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -118,3 +118,4 @@
+ blr
+
+ END (BP_SYM (strcpy))
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/strlen.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/strlen.S 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strlen implementation for PowerPC.
+- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -157,3 +157,4 @@
+ /* GKM FIXME: check high bound. */
+ blr
+ END (BP_SYM (strlen))
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc32/sysdep.h 2003-02-20 15:26:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc32/sysdep.h 2003-08-21 08:37:09.000000000 -0400
+@@ -131,6 +131,32 @@
+ #define PSEUDO_END(name) \
+ END (name)
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .section ".text"; \
++ ENTRY (name) \
++ DO_CALL (SYS_ify (syscall_name));
++
++#define PSEUDO_RET_NOERRNO \
++ blr
++#define ret_NOERRNO PSEUDO_RET_NOERRNO
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .section ".text"; \
++ ENTRY (name) \
++ DO_CALL (SYS_ify (syscall_name));
++
++#define PSEUDO_RET_ERRVAL \
++ blr
++#define ret_ERRVAL PSEUDO_RET_ERRVAL
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
+ /* Local labels stripped out by the linker. */
+ #undef L
+ #define L(x) .L##x
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/atomicity.h 2002-09-17 19:50:02.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,132 +0,0 @@
+-/* Low-level functions for atomic operations. PowerPC64 version.
+- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Library General Public License as
+- published by the Free Software Foundation; either version 2 of the
+- License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Library General Public License for more details.
+-
+- You should have received a copy of the GNU Library General Public
+- License along with the GNU C Library; see the file COPYING.LIB. If not,
+- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+- Boston, MA 02111-1307, USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-#if BROKEN_PPC_ASM_CR0
+-# define __ATOMICITY_INLINE /* nothing */
+-#else
+-# define __ATOMICITY_INLINE inline
+-#endif
+-
+-static __ATOMICITY_INLINE int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- int tmp, result;
+- __asm__ ("\n\
+-0: lwarx %0,0,%2 \n\
+- add%I3 %1,%0,%3 \n\
+- stwcx. %1,0,%2 \n\
+- bne- 0b \n\
+-" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+- return result;
+-}
+-
+-static __ATOMICITY_INLINE void
+-__attribute__ ((unused))
+-atomic_add_long (volatile long *mem, int val)
+-{
+- int tmp;
+- __asm__ ("\n\
+-0: ldarx %0,0,%1 \n\
+- add%I2 %0,%0,%2 \n\
+- stdcx. %0,0,%1 \n\
+- bne- 0b \n\
+-" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+-}
+-
+-
+-static __ATOMICITY_INLINE int
+-__attribute__ ((unused))
+-exchange_and_add_long (volatile long *mem, int val)
+-{
+- int tmp, result;
+- __asm__ ("\n\
+-0: ldarx %0,0,%2 \n\
+- add%I3 %1,%0,%3 \n\
+- stdcx. %1,0,%2 \n\
+- bne- 0b \n\
+-" : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+- return result;
+-}
+-
+-static __ATOMICITY_INLINE void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- int tmp;
+- __asm__ ("\n\
+-0: lwarx %0,0,%1 \n\
+- add%I2 %0,%0,%2 \n\
+- stwcx. %0,0,%1 \n\
+- bne- 0b \n\
+-" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
+-}
+-
+-static __ATOMICITY_INLINE int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- int result;
+- __asm__ ("\n\
+-0: ldarx %0,0,%1 \n\
+- sub%I2c. %0,%0,%2 \n\
+- cntlzw %0,%0 \n\
+- bne- 1f \n\
+- stdcx. %3,0,%1 \n\
+- bne- 0b \n\
+-1: \n\
+-" : "=&b"(result) : "r"(p), "Ir"(oldval), "r"(newval) : "cr0", "memory");
+- return result >> 5;
+-}
+-
+-static __ATOMICITY_INLINE long int
+-__attribute__ ((unused))
+-always_swap (volatile long int *p, long int newval)
+-{
+- long int result;
+- __asm__ ("\n\
+-0: ldarx %0,0,%1 \n\
+- stdcx. %2,0,%1 \n\
+- bne- 0b \n\
+-" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
+- return result;
+-}
+-
+-static __ATOMICITY_INLINE int
+-__attribute__ ((unused))
+-test_and_set (volatile long int *p, long int newval)
+-{
+- int result;
+- __asm__ ("\n\
+-0: ldarx %0,0,%1 \n\
+- cmpdi %0,0 \n\
+- bne- 1f \n\
+- stdcx. %2,0,%1 \n\
+- bne- 0b \n\
+-1: \n\
+-" : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory");
+- return result;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/bits/atomic.h 2003-05-24 14:06:22.000000000 -0400
+@@ -0,0 +1,205 @@
++/* Atomic operations. PowerPC64 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/*
++ * The 32-bit exchange_bool is different on powerpc64 because the subf
++ * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
++ * (a load word and zero (high 32) form) load.
++ * In powerpc64 register values are 64-bit by default, including oldval.
++ * Net we need to extend sign word the result of lwarx to 64-bit so the
++ * 64-bit subtract from gives the expected result and sets the condition
++ * correctly.
++ */
++# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
++({ \
++ unsigned int __tmp; \
++ __asm __volatile ( \
++ "1: lwarx %0,0,%1\n" \
++ " extsw %0,%0\n" \
++ " subf. %0,%2,%0\n" \
++ " bne 2f\n" \
++ " stwcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&r" (__tmp) \
++ : "b" (mem), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp != 0; \
++})
++
++# define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval) \
++({ \
++ unsigned int __tmp; \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: lwarx %0,0,%1\n" \
++ " extsw %0,%0\n" \
++ " subf. %0,%2,%0\n" \
++ " bne 2f\n" \
++ " stwcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " \
++ : "=&r" (__tmp) \
++ : "b" (mem), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp != 0; \
++})
++
++/*
++ * Only powerpc64 processors support Load doubleword and reserve index (ldarx)
++ * and Store doubleword conditional indexed (stdcx) instructions. So here
++ * we define the 64-bit forms.
++ */
++# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
++({ \
++ unsigned long __tmp; \
++ __asm __volatile ( \
++ "1: ldarx %0,0,%1\n" \
++ " subf. %0,%2,%0\n" \
++ " bne 2f\n" \
++ " stdcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&r" (__tmp) \
++ : "b" (mem), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp != 0; \
++})
++
++# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
++({ \
++ unsigned long __tmp; \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: ldarx %0,0,%1\n" \
++ " subf. %0,%2,%0\n" \
++ " bne 2f\n" \
++ " stdcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " \
++ : "=&r" (__tmp) \
++ : "b" (mem), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp != 0; \
++})
++
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ \
++ __typeof (*(mem)) __tmp; \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile ( \
++ "1: ldarx %0,0,%1\n" \
++ " cmpd %0,%2\n" \
++ " bne 2f\n" \
++ " stdcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&r" (__tmp) \
++ : "b" (__memp), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp; \
++ })
++
++#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
++ ({ \
++ __typeof (*(mem)) __tmp; \
++ __typeof (mem) __memp = (mem); \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: ldarx %0,0,%1\n" \
++ " cmpd %0,%2\n" \
++ " bne 2f\n" \
++ " stdcx. %3,0,%1\n" \
++ " bne- 1b\n" \
++ "2: " \
++ : "=&r" (__tmp) \
++ : "b" (__memp), "r" (oldval), "r" (newval) \
++ : "cr0", "memory"); \
++ __tmp; \
++ })
++
++# define __arch_atomic_exchange_64_acq(mem, value) \
++ ({ \
++ __typeof (*mem) __val; \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: ldarx %0,0,%2\n" \
++ " stdcx. %3,0,%2\n" \
++ " bne- 1b\n" \
++ " " __ARCH_ACQ_INSTR \
++ : "=&r" (__val), "=m" (*mem) \
++ : "b" (mem), "r" (value), "1" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++# define __arch_atomic_exchange_64_rel(mem, value) \
++ ({ \
++ __typeof (*mem) __val; \
++ __asm __volatile (__ARCH_REL_INSTR "\n" \
++ "1: ldarx %0,0,%2\n" \
++ " stdcx. %3,0,%2\n" \
++ " bne- 1b" \
++ : "=&r" (__val), "=m" (*mem) \
++ : "b" (mem), "r" (value), "1" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++# define __arch_atomic_exchange_and_add_64(mem, value) \
++ ({ \
++ __typeof (*mem) __val, __tmp; \
++ __asm __volatile ("1: ldarx %0,0,%3\n" \
++ " add %1,%0,%4\n" \
++ " stdcx. %1,0,%3\n" \
++ " bne- 1b" \
++ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
++ : "b" (mem), "r" (value), "2" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++# define __arch_atomic_decrement_if_positive_64(mem) \
++ ({ int __val, __tmp; \
++ __asm __volatile ("1: ldarx %0,0,%3\n" \
++ " cmpdi 0,%0,0\n" \
++ " addi %1,%0,-1\n" \
++ " ble 2f\n" \
++ " stdcx. %1,0,%3\n" \
++ " bne- 1b\n" \
++ "2: " __ARCH_ACQ_INSTR \
++ : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
++ : "b" (mem), "2" (*mem) \
++ : "cr0", "memory"); \
++ __val; \
++ })
++
++/*
++ * All powerpc64 processors support the new "light weight" sync (lwsync).
++ */
++# define atomic_read_barrier() __asm ("lwsync" ::: "memory")
++/*
++ * "light weight" sync can also be used for the release barrier.
++ */
++# ifndef UP
++# define __ARCH_REL_INSTR "lwsync"
++# endif
++
++/*
++ * Include the rest of the atomic ops macros which are common to both
++ * powerpc32 and powerpc64.
++ */
++#include_next <bits/atomic.h>
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.c 2002-09-28 16:12:57.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.c 2003-05-24 14:06:22.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Machine-dependent ELF dynamic relocation functions. PowerPC64 version.
+- Copyright (C) 1995,96,97,98,99,2000,01, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,22 +27,20 @@
+ _dl_reloc_overflow (struct link_map *map,
+ const char *name,
+ Elf64_Addr *const reloc_addr,
+- const Elf64_Sym *sym,
+ const Elf64_Sym *refsym)
+ {
+ char buffer[128];
+ char *t;
+- const Elf64_Sym *errsym = sym ?: refsym;
+ t = stpcpy (buffer, name);
+ t = stpcpy (t, " reloc at 0x");
+ _itoa_word ((unsigned long) reloc_addr, t, 16, 0);
+- if (errsym)
++ if (refsym)
+ {
+ const char *strtab;
+
+ strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+ t = stpcpy (t, " for symbol `");
+- t = stpcpy (t, strtab + errsym->st_name);
++ t = stpcpy (t, strtab + refsym->st_name);
+ t = stpcpy (t, "'");
+ }
+ t = stpcpy (t, " out of range");
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.h 2003-02-28 19:06:31.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -26,6 +26,7 @@
+
+ #include <assert.h>
+ #include <sys/param.h>
++#include <dl-tls.h>
+
+ /* Translate a processor specific dynamic tag to the index
+ in l_info array. */
+@@ -238,6 +239,18 @@
+ "_dl_start_user:\n" \
+ " .quad ._dl_start_user, .TOC.@tocbase, 0\n" \
+ " .previous\n" \
++" .section \".toc\",\"aw\"\n" \
++".LC__dl_starting_up:\n" \
++" .tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n" \
++".LC__rtld_global:\n" \
++" .tc _rtld_global[TC],_rtld_global\n" \
++".LC__dl_argc:\n" \
++" .tc _dl_argc[TC],_dl_argc\n" \
++".LC__dl_argv:\n" \
++" .tc _dl_argv_internal[TC],_dl_argv_internal\n" \
++".LC__dl_fini:\n" \
++" .tc _dl_fini[TC],_dl_fini\n" \
++" .previous\n" \
+ " .globl ._dl_start_user\n" \
+ " .type ._dl_start_user,@function\n" \
+ /* Now, we do our main work of calling initialisation procedures. \
+@@ -249,9 +262,9 @@
+ /* the address of _start in r30. */ \
+ " mr 30,3\n" \
+ /* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */ \
+-" ld 28,_rtld_global@got(2)\n" \
+-" ld 29,_dl_argc@got(2)\n" \
+-" ld 27,_dl_argv@got(2)\n" \
++" ld 28,.LC__rtld_global@toc(2)\n" \
++" ld 29,.LC__dl_argc@toc(2)\n" \
++" ld 27,.LC__dl_argv@toc(2)\n" \
+ /* _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1). */ \
+ " ld 3,0(28)\n" \
+ " lwa 4,0(29)\n" \
+@@ -278,8 +291,8 @@
+ " addi 6,6,8\n" \
+ /* Pass a termination function pointer (in this case _dl_fini) in \
+ r7. */ \
+-" ld 7,_dl_fini@got(2)\n" \
+-" ld 26,_dl_starting_up@got(2)\n" \
++" ld 7,.LC__dl_fini@toc(2)\n" \
++" ld 26,.LC__dl_starting_up@toc(2)\n" \
+ /* Pass the stack pointer in r1 (so far so good), pointing to a NULL \
+ value. This lets our startup code distinguish between a program \
+ linked statically, which linux will call with argc on top of the \
+@@ -330,12 +343,11 @@
+ of the main executable's symbols, as for a COPY reloc. */
+
+ #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+-#define elf_machine_type_class(type) \
+- ( (((type) == R_PPC64_DTPMOD64 \
+- || (type) == R_PPC64_DTPREL64 \
+- || (type) == R_PPC64_TPREL64 \
+- || (type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
+- | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
++#define elf_machine_type_class(type) \
++ /* This covers all the TLS relocs, though most won't appear. */ \
++ (((((type) >= R_PPC64_DTPMOD64 && (type) <= R_PPC64_TPREL16_HIGHESTA) \
++ || (type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
++ | (((type) == R_PPC64_COPY) * ELF_RTYPE_CLASS_COPY))
+ #else
+ #define elf_machine_type_class(type) \
+ ((((type) == R_PPC64_ADDR24) * ELF_RTYPE_CLASS_PLT) \
+@@ -472,9 +484,6 @@
+ Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
+ Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
+ Elf64_Addr offset = 0;
+-#ifndef RTLD_BOOTSTRAP
+- weak_extern (GL(dl_rtld_map));
+-#endif
+
+ /* If sym_map is NULL, it's a weak undefined sym; Leave the plt zero. */
+ if (sym_map == NULL)
+@@ -483,7 +492,7 @@
+ /* If the opd entry is not yet relocated (because it's from a shared
+ object that hasn't been processed yet), then manually reloc it. */
+ if (map != sym_map && !sym_map->l_relocated
+-#ifndef RTLD_BOOTSTRAP
++#if !defined RTLD_BOOTSTRAP && defined SHARED
+ /* Bootstrap map doesn't have l_relocated set for it. */
+ && sym_map != &GL(dl_rtld_map)
+ #endif
+@@ -509,6 +518,21 @@
+ return finaladdr;
+ }
+
++static inline void
++elf_machine_plt_conflict (Elf64_Addr *reloc_addr, Elf64_Addr finaladdr)
++{
++ Elf64_FuncDesc *plt = (Elf64_FuncDesc *) reloc_addr;
++ Elf64_FuncDesc *rel = (Elf64_FuncDesc *) finaladdr;
++
++ plt->fd_func = rel->fd_func;
++ plt->fd_aux = rel->fd_aux;
++ plt->fd_toc = rel->fd_toc;
++ PPC_DCBST (&plt->fd_func);
++ PPC_DCBST (&plt->fd_aux);
++ PPC_DCBST (&plt->fd_toc);
++ PPC_SYNC;
++}
++
+ /* Return the final value of a plt relocation. */
+ static inline Elf64_Addr
+ elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
+@@ -528,24 +552,46 @@
+ #define PPC_HIGHERA(v) PPC_HIGHER ((v) + 0x8000)
+ #define PPC_HIGHEST(v) (((v) >> 48) & 0xffff)
+ #define PPC_HIGHESTA(v) PPC_HIGHEST ((v) + 0x8000)
+-#define BIT_INSERT(old, val, mask) ((old & ~(Elf64_Addr) mask) | (val & mask))
++#define BIT_INSERT(var, val, mask) \
++ ((var) = ((var) & ~(Elf64_Addr) (mask)) | ((val) & (mask)))
+
+ #define dont_expect(X) __builtin_expect ((X), 0)
+
+ extern void _dl_reloc_overflow (struct link_map *map,
+ const char *name,
+ Elf64_Addr *const reloc_addr,
+- const Elf64_Sym *sym,
+ const Elf64_Sym *refsym)
+ attribute_hidden;
+
+ static inline void
+ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
++#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
++/* This computes the value used by TPREL* relocs. */
++static Elf64_Addr __attribute__ ((const))
++elf_machine_tprel (struct link_map *map,
++ struct link_map *sym_map,
++ const Elf64_Sym *sym,
++ const Elf64_Rela *reloc)
++{
++# ifndef RTLD_BOOTSTRAP
++ if (sym_map)
++ {
++ CHECK_STATIC_TLS (map, sym_map);
++# endif
++ return TLS_TPREL_VALUE (sym_map, sym, reloc);
++# ifndef RTLD_BOOTSTRAP
++ }
++# endif
++ return 0;
++}
++#endif
++
+ /* Perform the relocation specified by RELOC and SYM (which is fully
+ resolved). MAP is the object containing the reloc. */
+ static inline void
+@@ -553,11 +599,10 @@
+ const Elf64_Rela *reloc,
+ const Elf64_Sym *sym,
+ const struct r_found_version *version,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
+- int r_type = ELF64_R_TYPE (reloc->r_info);
+- struct link_map *sym_map;
+- Elf64_Addr value, raw_value;
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
++ const int r_type = ELF64_R_TYPE (reloc->r_info);
+ #ifndef RTLD_BOOTSTRAP
+ const Elf64_Sym *const refsym = sym;
+ #endif
+@@ -568,17 +613,16 @@
+ return;
+ }
+
+- if (r_type == R_PPC64_NONE)
++ if (__builtin_expect (r_type == R_PPC64_NONE, 0))
+ return;
+
+- sym_map = RESOLVE_MAP (&sym, version, r_type);
+- value = raw_value = reloc->r_addend;
+- if (sym_map)
+- {
+- raw_value += sym->st_value;
+- value = raw_value + sym_map->l_addr;
+- }
++ /* We need SYM_MAP even in the absence of TLS, for elf_machine_fixup_plt. */
++ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
++ Elf64_Addr value = ((sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value)
++ + reloc->r_addend);
+
++ /* For relocs that don't edit code, return.
++ For relocs that might edit instructions, break from the switch. */
+ switch (r_type)
+ {
+ case R_PPC64_ADDR64:
+@@ -586,132 +630,135 @@
+ *reloc_addr = value;
+ return;
+
+-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+-
+- case R_PPC64_DTPMOD64:
+-#ifdef RTLD_BOOTSTRAP
+- /* During startup the dynamic linker is always index 1. */
+- *reloc_addr = 1;
++ case R_PPC64_JMP_SLOT:
++#ifdef RESOLVE_CONFLICT_FIND_MAP
++ elf_machine_plt_conflict (reloc_addr, value);
+ #else
+- /* Get the information from the link map returned by the
+- resolve function. */
+- if (sym_map != NULL)
+- *reloc_addr = sym_map->l_tls_modid;
++ elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
+ #endif
+ return;
+
+- case R_PPC64_TPREL64:
+-#ifdef RTLD_BOOTSTRAP
+- *reloc_addr = (sym_map->l_tls_offset - TLS_TCB_SIZE
+- + raw_value - TLS_TP_OFFSET);
+-#else
+- if (sym_map)
+- {
+- CHECK_STATIC_TLS (map, sym_map);
+- *reloc_addr = (sym_map->l_tls_offset - TLS_TCB_SIZE
+- + raw_value - TLS_TP_OFFSET);
+- }
+-#endif
++#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
++ case R_PPC64_DTPMOD64:
++# ifdef RTLD_BOOTSTRAP
++ /* During startup the dynamic linker is always index 1. */
++ *reloc_addr = 1;
++# else
++ /* Get the information from the link map returned by the
++ resolve function. */
++ if (sym_map != NULL)
++ *reloc_addr = sym_map->l_tls_modid;
++# endif
+ return;
+
+ case R_PPC64_DTPREL64:
+-#ifndef RTLD_BOOTSTRAP
+ /* During relocation all TLS symbols are defined and used.
+- Therefore the offset is already correct. */
+- *reloc_addr = raw_value - TLS_DTV_OFFSET;
+-#endif
++ Therefore the offset is already correct. */
++# ifndef RTLD_BOOTSTRAP
++ if (sym_map != NULL)
++ *reloc_addr = TLS_DTPREL_VALUE (sym, reloc);
++# endif
+ return;
+-#endif
+-
+- case R_PPC64_JMP_SLOT:
+
+- elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value);
++ case R_PPC64_TPREL64:
++ *reloc_addr = elf_machine_tprel (map, sym_map, sym, reloc);
+ return;
+
+-#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
+- case R_PPC64_ADDR16_LO_DS:
++ case R_PPC64_TPREL16_LO_DS:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
+ if (dont_expect ((value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS",
+- reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC64_TPREL16_LO_DS", reloc_addr, refsym);
+ *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+ value, 0xfffc);
+ break;
+
+- case R_PPC64_TPREL16_LO_DS:
+- if (dont_expect ((value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_TPREL16_LO_DS",
+- reloc_addr, sym, refsym);
++ case R_PPC64_TPREL16_DS:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
++ _dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr, refsym);
+ *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
++ value, 0xfffc);
+ break;
+
+- case R_PPC64_DTPREL16_LO_DS:
+- if (dont_expect ((value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_DTPREL16_LO_DS",
+- reloc_addr, sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
++ case R_PPC64_TPREL16:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ if (dont_expect ((value + 0x8000) >= 0x10000))
++ _dl_reloc_overflow (map, "R_PPC64_TPREL16", reloc_addr, refsym);
++ *(Elf64_Half *) reloc_addr = PPC_LO (value);
+ break;
+
+- case R_PPC64_GOT_TPREL16_LO_DS:
+- if (dont_expect ((value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_GOT_TPREL16_LO_DS",
+- reloc_addr, sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
++ case R_PPC64_TPREL16_LO:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_LO (value);
++ break;
++
++ case R_PPC64_TPREL16_HI:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_HI (value);
++ break;
++
++ case R_PPC64_TPREL16_HA:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_HA (value);
++ break;
++
++ case R_PPC64_TPREL16_HIGHER:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
++ break;
++
++ case R_PPC64_TPREL16_HIGHEST:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
++ break;
++
++ case R_PPC64_TPREL16_HIGHERA:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
++ break;
++
++ case R_PPC64_TPREL16_HIGHESTA:
++ value = elf_machine_tprel (map, sym_map, sym, reloc);
++ *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
+ break;
++#endif /* USE_TLS etc. */
+
+- case R_PPC64_GOT_DTPREL16_LO_DS:
++#ifndef RTLD_BOOTSTRAP /* None of the following appear in ld.so */
++ case R_PPC64_ADDR16_LO_DS:
+ if (dont_expect ((value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_GOT_DTPREL16_LO_DS",
+- reloc_addr, sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
++ _dl_reloc_overflow (map, "R_PPC64_ADDR16_LO_DS", reloc_addr, refsym);
++ BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
+ break;
+
+ case R_PPC64_ADDR16_LO:
+- case R_PPC64_TPREL16_LO:
+- case R_PPC64_DTPREL16_LO:
+- case R_PPC64_GOT_TLSGD16_LO:
+- case R_PPC64_GOT_TLSLD16_LO:
+ *(Elf64_Half *) reloc_addr = PPC_LO (value);
+ break;
+
+ case R_PPC64_ADDR16_HI:
+- case R_PPC64_TPREL16_HI:
+- case R_PPC64_DTPREL16_HI:
+- case R_PPC64_GOT_TPREL16_HI:
+- case R_PPC64_GOT_DTPREL16_HI:
+- case R_PPC64_GOT_TLSGD16_HI:
+- case R_PPC64_GOT_TLSLD16_HI:
+ *(Elf64_Half *) reloc_addr = PPC_HI (value);
+ break;
+
+ case R_PPC64_ADDR16_HA:
+- case R_PPC64_TPREL16_HA:
+- case R_PPC64_DTPREL16_HA:
+- case R_PPC64_GOT_TLSGD16_HA:
+- case R_PPC64_GOT_TLSLD16_HA:
+ *(Elf64_Half *) reloc_addr = PPC_HA (value);
+ break;
+
+- case R_PPC64_REL24:
++ case R_PPC64_ADDR30:
+ {
+ Elf64_Addr delta = value - (Elf64_Xword) reloc_addr;
+- if (dont_expect ((delta + 0x2000000) >= 0x4000000 || (delta & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_REL24", reloc_addr, sym, refsym);
+- *(Elf64_Word *) reloc_addr = BIT_INSERT (*(Elf64_Word *) reloc_addr,
+- delta, 0x3fffffc);
++ if (dont_expect ((delta + 0x80000000) >= 0x10000000
++ || (delta & 3) != 0))
++ _dl_reloc_overflow (map, "R_PPC64_ADDR30", reloc_addr, refsym);
++ BIT_INSERT (*(Elf64_Word *) reloc_addr, delta, 0xfffffffc);
+ }
+ break;
+
+ case R_PPC64_COPY:
+ if (dont_expect (sym == NULL))
+- /* This can happen in trace mode when an object could not be found. */
++ /* This can happen in trace mode when an object could not be found. */
+ return;
+ if (dont_expect (sym->st_size > refsym->st_size
+- || (GL(dl_verbose) && sym->st_size < refsym->st_size)))
+- {
++ || (GL(dl_verbose) && sym->st_size < refsym->st_size)))
++ {
+ const char *strtab;
+
+ strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+@@ -719,112 +766,77 @@
+ " in shared object," \
+ " consider re-linking\n",
+ _dl_argv[0] ?: "<program name unknown>",
+- strtab + refsym->st_name);
+- }
+- memcpy (reloc_addr, (char *) value, MIN (sym->st_size, refsym->st_size));
++ strtab + refsym->st_name);
++ }
++ memcpy (reloc_addr_arg, (char *) value,
++ MIN (sym->st_size, refsym->st_size));
+ return;
+
+ case R_PPC64_UADDR64:
+ /* We are big-endian. */
+- ((char *) reloc_addr)[0] = (value >> 56) & 0xff;
+- ((char *) reloc_addr)[1] = (value >> 48) & 0xff;
+- ((char *) reloc_addr)[2] = (value >> 40) & 0xff;
+- ((char *) reloc_addr)[3] = (value >> 32) & 0xff;
+- ((char *) reloc_addr)[4] = (value >> 24) & 0xff;
+- ((char *) reloc_addr)[5] = (value >> 16) & 0xff;
+- ((char *) reloc_addr)[6] = (value >> 8) & 0xff;
+- ((char *) reloc_addr)[7] = (value >> 0) & 0xff;
++ ((char *) reloc_addr_arg)[0] = (value >> 56) & 0xff;
++ ((char *) reloc_addr_arg)[1] = (value >> 48) & 0xff;
++ ((char *) reloc_addr_arg)[2] = (value >> 40) & 0xff;
++ ((char *) reloc_addr_arg)[3] = (value >> 32) & 0xff;
++ ((char *) reloc_addr_arg)[4] = (value >> 24) & 0xff;
++ ((char *) reloc_addr_arg)[5] = (value >> 16) & 0xff;
++ ((char *) reloc_addr_arg)[6] = (value >> 8) & 0xff;
++ ((char *) reloc_addr_arg)[7] = (value >> 0) & 0xff;
+ return;
+
+ case R_PPC64_UADDR32:
+ /* We are big-endian. */
+- ((char *) reloc_addr)[0] = (value >> 24) & 0xff;
+- ((char *) reloc_addr)[1] = (value >> 16) & 0xff;
+- ((char *) reloc_addr)[2] = (value >> 8) & 0xff;
+- ((char *) reloc_addr)[3] = (value >> 0) & 0xff;
++ ((char *) reloc_addr_arg)[0] = (value >> 24) & 0xff;
++ ((char *) reloc_addr_arg)[1] = (value >> 16) & 0xff;
++ ((char *) reloc_addr_arg)[2] = (value >> 8) & 0xff;
++ ((char *) reloc_addr_arg)[3] = (value >> 0) & 0xff;
++ return;
++
++ case R_PPC64_ADDR32:
++ if (dont_expect ((value + 0x80000000) >= 0x10000000))
++ _dl_reloc_overflow (map, "R_PPC64_ADDR32", reloc_addr, refsym);
++ *(Elf64_Word *) reloc_addr = value;
+ return;
+
+ case R_PPC64_ADDR24:
+ if (dont_expect ((value + 0x2000000) >= 0x4000000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_ADDR24", reloc_addr, sym, refsym);
+- *(Elf64_Word *) reloc_addr = BIT_INSERT (*(Elf64_Word *) reloc_addr,
+- value, 0x3fffffc);
++ _dl_reloc_overflow (map, "R_PPC64_ADDR24", reloc_addr, refsym);
++ BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0x3fffffc);
+ break;
+
+ case R_PPC64_ADDR16:
+ if (dont_expect ((value + 0x8000) >= 0x10000))
+- _dl_reloc_overflow (map, "R_PPC64_ADDR16", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC64_ADDR16", reloc_addr, refsym);
+ *(Elf64_Half *) reloc_addr = value;
+ break;
+
+ case R_PPC64_UADDR16:
+ if (dont_expect ((value + 0x8000) >= 0x10000))
+- _dl_reloc_overflow (map, "R_PPC64_UADDR16", reloc_addr, sym, refsym);
++ _dl_reloc_overflow (map, "R_PPC64_UADDR16", reloc_addr, refsym);
+ /* We are big-endian. */
+- ((char *) reloc_addr)[0] = (value >> 8) & 0xff;
+- ((char *) reloc_addr)[1] = (value >> 0) & 0xff;
++ ((char *) reloc_addr_arg)[0] = (value >> 8) & 0xff;
++ ((char *) reloc_addr_arg)[1] = (value >> 0) & 0xff;
+ break;
+
+ case R_PPC64_ADDR16_DS:
+ if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_ADDR16_DS", reloc_addr, sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
+- break;
+-
+- case R_PPC64_TPREL16_DS:
+- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_TPREL16_DS", reloc_addr,
+- sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
+- break;
+-
+- case R_PPC64_DTPREL16_DS:
+- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_DTPREL16_DS", reloc_addr,
+- sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
+- break;
+-
+- case R_PPC64_GOT_TPREL16_DS:
+- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_GOT_TPREL16_DS", reloc_addr,
+- sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
+- break;
+-
+- case R_PPC64_GOT_DTPREL16_DS:
+- if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_GOT_DTPREL16_DS",
+- reloc_addr, sym, refsym);
+- *(Elf64_Half *) reloc_addr = BIT_INSERT (*(Elf64_Half *) reloc_addr,
+- value, 0xfffc);
++ _dl_reloc_overflow (map, "R_PPC64_ADDR16_DS", reloc_addr, refsym);
++ BIT_INSERT (*(Elf64_Half *) reloc_addr, value, 0xfffc);
+ break;
+
+ case R_PPC64_ADDR16_HIGHER:
+- case R_PPC64_TPREL16_HIGHER:
+- case R_PPC64_DTPREL16_HIGHER:
+ *(Elf64_Half *) reloc_addr = PPC_HIGHER (value);
+ break;
+
+ case R_PPC64_ADDR16_HIGHEST:
+- case R_PPC64_TPREL16_HIGHEST:
+- case R_PPC64_DTPREL16_HIGHEST:
+ *(Elf64_Half *) reloc_addr = PPC_HIGHEST (value);
+ break;
+
+ case R_PPC64_ADDR16_HIGHERA:
+- case R_PPC64_TPREL16_HIGHERA:
+- case R_PPC64_DTPREL16_HIGHERA:
+ *(Elf64_Half *) reloc_addr = PPC_HIGHERA (value);
+ break;
+
+ case R_PPC64_ADDR16_HIGHESTA:
+- case R_PPC64_TPREL16_HIGHESTA:
+- case R_PPC64_DTPREL16_HIGHESTA:
+ *(Elf64_Half *) reloc_addr = PPC_HIGHESTA (value);
+ break;
+
+@@ -832,26 +844,30 @@
+ case R_PPC64_ADDR14_BRTAKEN:
+ case R_PPC64_ADDR14_BRNTAKEN:
+ {
+- Elf64_Word insn;
+ if (dont_expect ((value + 0x8000) >= 0x10000 || (value & 3) != 0))
+- _dl_reloc_overflow (map, "R_PPC64_ADDR14", reloc_addr, sym, refsym);
+- insn = BIT_INSERT (*(Elf64_Word *) reloc_addr, value, 0xfffc);
++ _dl_reloc_overflow (map, "R_PPC64_ADDR14", reloc_addr, refsym);
++ Elf64_Word insn = *(Elf64_Word *) reloc_addr;
++ BIT_INSERT (insn, value, 0xfffc);
+ if (r_type != R_PPC64_ADDR14)
+- {
+- insn &= ~(1 << 21);
+- if (r_type == R_PPC64_ADDR14_BRTAKEN)
+- insn |= 1 << 21;
+- if ((insn & (0x14 << 21)) == (0x04 << 21))
+- insn |= 0x02 << 21;
+- else if ((insn & (0x14 << 21)) == (0x10 << 21))
+- insn |= 0x08 << 21;
+- }
++ {
++ insn &= ~(1 << 21);
++ if (r_type == R_PPC64_ADDR14_BRTAKEN)
++ insn |= 1 << 21;
++ if ((insn & (0x14 << 21)) == (0x04 << 21))
++ insn |= 0x02 << 21;
++ else if ((insn & (0x14 << 21)) == (0x10 << 21))
++ insn |= 0x08 << 21;
++ }
+ *(Elf64_Word *) reloc_addr = insn;
+ }
+ break;
+
+ case R_PPC64_REL32:
+- *(Elf64_Word *) reloc_addr = value - (Elf64_Xword) reloc_addr;
++ *(Elf64_Word *) reloc_addr = value - (Elf64_Addr) reloc_addr;
++ return;
++
++ case R_PPC64_REL64:
++ *reloc_addr = value - (Elf64_Addr) reloc_addr;
+ return;
+ #endif /* !RTLD_BOOTSTRAP */
+
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/Makefile 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/Makefile 2003-08-27 00:35:46.000000000 -0400
+@@ -0,0 +1,11 @@
++# powerpc64/ELF specific definitions.
++
++# Need to prevent gcc from using fprs in code used during dynamic linking.
++
++CFLAGS-dl-runtime.os := -msoft-float
++CFLAGS-dl-lookup.os := -msoft-float
++CFLAGS-dl-misc.os := -msoft-float
++CFLAGS-rtld-mempcpy.os := -msoft-float
++CFLAGS-rtld-memmove.os := -msoft-float
++CFLAGS-rtld-memchr.os := -msoft-float
++CFLAGS-rtld-strnlen.os := -msoft-float
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure 2003-02-25 18:41:08.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure 2003-03-12 16:39:43.000000000 -0500
+@@ -70,7 +70,3 @@
+ fi
+ fi
+
+-cat >>confdefs.h <<\_ACEOF
+-#define PI_STATIC_AND_HIDDEN 1
+-_ACEOF
+-
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure.in 2003-02-25 18:26:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/configure.in 2003-03-12 16:39:43.000000000 -0500
+@@ -56,6 +56,3 @@
+ fi
+ fi
+
+-dnl It is always possible to access static and hidden symbols in an
+-dnl position independent way.
+-AC_DEFINE(PI_STATIC_AND_HIDDEN)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/start.S 2002-12-09 22:41:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/elf/start.S 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup code for programs linked with GNU libc. PowerPC64 version.
+- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,7 +21,11 @@
+ #include "bp-sym.h"
+
+ /* These are the various addresses we require. */
++#ifdef PIC
++ .section ".data.rel.ro.local","aw"
++#else
+ .section ".rodata"
++#endif
+ .align 3
+ L(start_addresses):
+ .quad 0 /* was _SDA_BASE_ but not in 64-bit ABI*/
+@@ -52,6 +56,9 @@
+
+ /* and continue in libc-start, in glibc. */
+ b JUMPTARGET(BP_SYM(__libc_start_main))
++/* The linker needs this nop to recognize that it's OK to call via a
++ TOC adjusting stub. */
++ nop
+
+ END(_start)
+
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/memcpy.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/memcpy.S 2003-05-12 12:13:08.000000000 -0400
+@@ -0,0 +1,211 @@
++/* Optimized memcpy implementation for PowerPC64.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <bp-sym.h>
++#include <bp-asm.h>
++
++/* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
++ Returns 'dst'.
++
++ Memcpy handles short copies (< 32-bytes) using an unaligned
++ word lwz/stw loop. The tail (remaining 1-3) bytes is handled with the
++ appropriate combination of byte and halfword load/stores. There is no
++ attempt to optimize the alignment of short moves. The 64-bit
++ implementations of POWER3 and POWER4 do a reasonable job of handling
++ unligned load/stores that do not cross 32-byte boundries.
++
++ Longer moves (>= 32-bytes) justify the effort to get at least the
++ destination doubleword (8-byte) aligned. Further optimization is
++ posible when both source and destination are doubleword aligned.
++ Each case has a optimized unrolled loop. */
++
++EALIGN (BP_SYM (memcpy), 5, 0)
++ cmpldi cr1,5,31
++ neg 0,3
++ std 30,-16(1)
++ std 31,-8(1)
++ rldicl. 0,0,0,61
++ mr 12,4
++ mr 31,5
++ mr 30,3
++ ble- cr1,.L2
++ subf 31,0,5
++
++ /* Move 0-7 bytes as needed to get the destination doubleword alligned. */
++ beq 0f
++ mtcrf 0x01,0
++1: bf 31,2f
++ lbz 6,0(12)
++ addi 12,12,1
++ stb 6,0(3)
++ addi 3,3,1
++2: bf 30,4f
++ lhz 6,0(12)
++ addi 12,12,2
++ sth 6,0(3)
++ addi 3,3,2
++4: bf 29,0f
++ lwz 6,0(12)
++ addi 12,12,4
++ stw 6,0(3)
++ addi 3,3,4
++0:
++ /* Copy doublewords from source to destination, assumpting the
++ destination is aligned on a doubleword boundary.
++
++ First verify that there is > 7 bytes to copy and check if the source
++ is also doubleword aligned. If there are < 8 bytes to copy fall
++ through to the tail byte copy code. Otherwise if the source and
++ destination are both doubleword aligned use an optimized doubleword
++ copy loop. Otherwise the source has a different alignment and we use
++ a load, shift, store strategy. */
++ rldicl. 0,12,0,61
++ cmpldi cr6,31,7
++ ble- cr6,.L2 /* less than 8 bytes left. */
++ bne- 0,.L6 /* Source is not DW aligned. */
++ srdi. 9,31,3
++ mr 10,3
++ mr 11,12
++
++ /* Move doublewords where destination and source are aligned.
++ Use a unrolled loop to copy 4 doubleword (32-bytes) per iteration.
++ If the remainder is >0 and < 32 bytes copy 1-3 doublewords. */
++ cmpldi cr1,9,4
++ beq 0f
++ mtcrf 0x01,9
++ blt cr1,2f
++ ld 6,0(11)
++ .align 4
++4:
++ ld 7,8(11)
++ addi 9,9,-4
++ std 6,0(10)
++ ld 6,16(11)
++ std 7,8(10)
++ ld 7,24(11)
++ addi 11,11,32
++ cmpldi cr1,9,4
++ std 6,16(10)
++ blt cr1,3f
++ ld 6,0(11)
++ std 7,24(10)
++ addi 10,10,32
++ b 4b
++3: std 7,24(10)
++ addi 10,10,32
++2: bf 30,1f
++ ld 6,0(11)
++ ld 7,8(11)
++ addi 11,11,16
++ std 6,0(10)
++ std 7,8(10)
++ addi 10,10,16
++1: bf 31,0f
++ ld 6,0(11)
++ addi 11,11,8
++ std 6,0(10)
++ addi 10,10,8
++0:
++
++.L8:
++ rldicr 0,31,0,60
++ rldicl 31,31,0,61
++ add 3,3,0
++ add 12,12,0
++
++ /* Copy the tail for up to 31 bytes. If this is the tail of a longer
++ copy then the destination will be aligned and the length will be
++ less than 8. So it is normally not worth the set-up overhead to
++ get doubleword aligned and do doubleword load/store. */
++.L2:
++ mr. 10,31
++ cmpldi cr1,31,4
++ beq 0f
++ mtcrf 0x01,31
++ blt cr1,2f
++4: lwz 6,0(12)
++ addi 12,12,4
++ addi 10,10,-4
++ stw 6,0(3)
++ cmpldi cr1,10,4
++ addi 3,3,4
++ bge cr1,4b
++2: bf 30,1f
++ lhz 6,0(12)
++ addi 12,12,2
++ sth 6,0(3)
++ addi 3,3,2
++1: bf 31,0f
++ lbz 6,0(12)
++ addi 12,12,1
++ stb 6,0(3)
++ addi 3,3,1
++0:
++ /* Return original dst pointer. */
++ ld 31,-8(1)
++ mr 3,30
++ ld 30,-16(1)
++ blr
++
++.L6:
++ srdi 11,31,3
++ mr 4,3
++ mr 5,12
++
++ /* Copy doublewords where the destination is aligned but the source is
++ not. Use aligned doubleword loads from the source, shifted to realign
++ the data, to allow aligned destination stores. */
++ andi. 10,5,7
++ andi. 0,11,1
++ subf 5,10,5
++ ld 6,0(5)
++ sldi 10,10,3
++ ld 7,8(5)
++ subfic 9,10,64
++ beq 2f
++ sld 0,6,10
++ addi 11,11,-1
++ mr 6,7
++ addi 4,4,-8
++ cmpldi 11,0
++ b 1f
++2: addi 5,5,8
++ .align 4
++0: sld 0,6,10
++ srd 8,7,9
++ addi 11,11,-2
++ ld 6,8(5)
++ or 0,0,8
++ cmpldi 11,0
++ std 0,0(4)
++ sld 0,7,10
++1: srd 8,6,9
++ or 0,0,8
++ beq 8f
++ ld 7,16(5)
++ std 0,8(4)
++ addi 5,5,16
++ addi 4,4,16
++ b 0b
++8:
++ std 0,8(4)
++ b .L8
++END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS)
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/memset.S 2002-09-17 19:50:02.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/memset.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized memset implementation for PowerPC64.
+- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,17 +21,12 @@
+ #include <bp-sym.h>
+ #include <bp-asm.h>
+
+-/* Define a global static that can hold the cache line size. The
++/* Define a global static that can hold the cache line size. The
+ assumption is that startup code will access the "aux vector" to
+- to obtain the value set by the kernel and store it into this
++ to obtain the value set by the kernel and store it into this
+ variable. */
+ .globl __cache_line_size
+- .section ".data"
+- .align 2
+- .type __cache_line_size,@object
+- .size __cache_line_size,4
+-__cache_line_size:
+- .long 0
++ .lcomm __cache_line_size,4,4
+ .section ".toc","aw"
+ .LC0:
+ .tc __cache_line_size[TC],__cache_line_size
+@@ -81,7 +76,7 @@
+ andi. rALIGN, rMEMP0, 7
+ mr rMEMP, rMEMP0
+ ble- cr1, L(small)
+-
++
+ /* Align to doubleword boundary. */
+ cmpldi cr5, rLEN, 31
+ rlwimi rCHR, rCHR, 8, 16, 23 /* Replicate byte to halfword. */
+@@ -108,9 +103,9 @@
+ bf+ 31, L(g0)
+ stb rCHR, 0(rMEMP0)
+ bt 30, L(aligned)
+-L(g0):
+- sth rCHR, -2(rMEMP)
+-
++L(g0):
++ sth rCHR, -2(rMEMP)
++
+ /* Handle the case of size < 31. */
+ L(aligned2):
+ rlwimi rCHR, rCHR, 16, 0, 15 /* Replicate halfword to word. */
+@@ -138,9 +133,9 @@
+ L(caligned):
+ cmpldi cr1, rCHR, 0
+ clrrdi. rALIGN, rLEN, 5
+- mtcrf 0x01, rLEN
++ mtcrf 0x01, rLEN
+ beq cr1, L(zloopstart) /* Special case for clearing memory using dcbz. */
+-L(nondcbz):
++L(nondcbz):
+ srdi rTMP, rALIGN, 5
+ mtctr rTMP
+ beq L(medium) /* We may not actually get to do a full line. */
+@@ -168,21 +163,21 @@
+ .align 5
+ /* Clear lines of memory in 128-byte chunks. */
+ L(zloopstart):
+-/* If the remaining length is less the 32 bytes, don't bother getting
++/* If the remaining length is less the 32 bytes, don't bother getting
+ the cache line size. */
+ beq L(medium)
+ ld rCLS,.LC0@toc(r2)
+- lwz rCLS,0(rCLS)
+-/* If the cache line size was not set just goto to L(nondcbz) which is
+- safe for any cache line size. */
++ lwz rCLS,0(rCLS)
++/* If the cache line size was not set just goto to L(nondcbz) which is
++ safe for any cache line size. */
+ cmpldi cr1,rCLS,0
+ beq cr1,L(nondcbz)
+-
+-
++
++
+ /* Now we know the cache line size, and it is not 32-bytes, but
+- we may not yet be aligned to the cache line. May have a partial
+- line to fill, so touch it 1st. */
+- dcbt 0,rMEMP
++ we may not yet be aligned to the cache line. May have a partial
++ line to fill, so touch it 1st. */
++ dcbt 0,rMEMP
+ addi rCLM,rCLS,-1
+ L(getCacheAligned):
+ cmpldi cr1,rLEN,32
+@@ -196,8 +191,8 @@
+ std rCHR,-16(rMEMP)
+ std rCHR,-8(rMEMP)
+ b L(getCacheAligned)
+-
+-/* Now we are aligned to the cache line and can use dcbz. */
++
++/* Now we are aligned to the cache line and can use dcbz. */
+ L(cacheAligned):
+ cmpld cr1,rLEN,rCLS
+ blt cr1,L(handletail32)
+@@ -208,7 +203,7 @@
+
+ /* We are here because the cache line size was set and was not 32-bytes
+ and the remainder (rLEN) is less than the actual cache line size.
+- So set up the preconditions for L(nondcbz) and go there. */
++ So set up the preconditions for L(nondcbz) and go there. */
+ L(handletail32):
+ clrrwi. rALIGN, rLEN, 5
+ b L(nondcbz)
+@@ -264,7 +259,7 @@
+ bf- 29, L(medium_29f)
+ L(medium_29t):
+ stwu rCHR, -4(rMEMP)
+- blt- cr1, L(medium_27f)
++ blt- cr1, L(medium_27f)
+ L(medium_27t):
+ std rCHR, -8(rMEMP)
+ stdu rCHR, -16(rMEMP)
+@@ -274,8 +269,9 @@
+ std rCHR, -8(rMEMP)
+ blr
+ END_GEN_TB (BP_SYM (memset),TB_TOCLESS)
++libc_hidden_builtin_def (memset)
+
+-/* Copied from bzero.S to prevent the linker from inserting a stub
++/* Copied from bzero.S to prevent the linker from inserting a stub
+ between bzero and memset. */
+ ENTRY (BP_SYM (__bzero))
+ #if __BOUNDED_POINTERS__
+@@ -293,4 +289,3 @@
+ END_GEN_TB (BP_SYM (__bzero),TB_TOCLESS)
+
+ weak_alias (BP_SYM (__bzero), BP_SYM (bzero))
+-
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/strchr.S 2002-09-17 19:50:02.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strchr.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strchr implementation for PowerPC64.
+- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,6 +29,11 @@
+
+ #define rTMP1 r0
+ #define rRTN r3 /* outgoing result */
++/* Note: The Bounded pointer support in this code is broken. This code
++ was inherited from PPC32 and and that support was never completed.
++ Currently PPC gcc does not support -fbounds-check or -fbounded-pointers.
++ These artifacts are left in the code as a reminder in case we need
++ bounded pointer support in the future. */
+ #if __BOUNDED_POINTERS__
+ # define rSTR r4
+ # define rCHR r5 /* byte we're looking for, spread over the whole word */
+@@ -39,8 +44,8 @@
+ # define rWORD r5 /* the current word */
+ #endif
+ #define rCLZB rCHR /* leading zero byte count */
+-#define rFEFE r6 /* constant 0xfefefeff (-0x01010101) */
+-#define r7F7F r7 /* constant 0x7f7f7f7f */
++#define rFEFE r6 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
++#define r7F7F r7 /* constant 0x7f7f7f7f7f7f7f7f */
+ #define rTMP2 r9
+ #define rIGN r10 /* number of bits we should ignore in the first word */
+ #define rMASK r11 /* mask with the bits to ignore set to 0 */
+@@ -49,18 +54,23 @@
+ CHECK_BOUNDS_LOW (rSTR, rTMP1, rTMP2)
+ STORE_RETURN_BOUNDS (rTMP1, rTMP2)
+
++ dcbt 0,rRTN
+ rlwimi rCHR, rCHR, 8, 16, 23
+ li rMASK, -1
+ rlwimi rCHR, rCHR, 16, 0, 15
+- rlwinm rIGN, rRTN, 3, 27, 28
++ rlwinm rIGN, rRTN, 3, 26, 28
++ insrdi rCHR, rCHR, 32, 0
+ lis rFEFE, -0x101
+ lis r7F7F, 0x7f7f
+- clrrdi rSTR, rRTN, 2
++ clrrdi rSTR, rRTN, 3
+ addi rFEFE, rFEFE, -0x101
+ addi r7F7F, r7F7F, 0x7f7f
++ sldi rTMP1, rFEFE, 32
++ insrdi r7F7F, r7F7F, 32, 0
++ add rFEFE, rFEFE, rTMP1
+ /* Test the first (partial?) word. */
+- lwz rWORD, 0(rSTR)
+- srw rMASK, rMASK, rIGN
++ ld rWORD, 0(rSTR)
++ srd rMASK, rMASK, rIGN
+ orc rWORD, rWORD, rMASK
+ add rTMP1, rFEFE, rWORD
+ nor rTMP2, r7F7F, rWORD
+@@ -71,7 +81,7 @@
+
+ /* The loop. */
+
+-L(loop):lwzu rWORD, 4(rSTR)
++L(loop):ldu rWORD, 8(rSTR)
+ and. rTMP1, rTMP1, rTMP2
+ /* Test for 0. */
+ add rTMP1, rFEFE, rWORD
+@@ -104,12 +114,12 @@
+ add rTMP1, rTMP1, r7F7F
+ nor rWORD, rMASK, rFEFE
+ nor rTMP2, rIGN, rTMP1
+- cmplw rWORD, rTMP2
++ cmpld rWORD, rTMP2
+ bgtlr
+- cntlzw rCLZB, rTMP2
+- srwi rCLZB, rCLZB, 3
++ cntlzd rCLZB, rTMP2
++ srdi rCLZB, rCLZB, 3
+ add rRTN, rSTR, rCLZB
+- CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge)
++ CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, tdlge)
+ STORE_RETURN_VALUE (rSTR)
+ blr
+
+@@ -118,13 +128,14 @@
+ or rIGN, r7F7F, rTMP3
+ add rTMP1, rTMP1, r7F7F
+ nor rTMP2, rIGN, rTMP1
+- cntlzw rCLZB, rTMP2
+- subi rSTR, rSTR, 4
+- srwi rCLZB, rCLZB, 3
++ cntlzd rCLZB, rTMP2
++ subi rSTR, rSTR, 8
++ srdi rCLZB, rCLZB, 3
+ add rRTN, rSTR, rCLZB
+- CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge)
++ CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, tdlge)
+ STORE_RETURN_VALUE (rSTR)
+ blr
+ END (BP_SYM (strchr))
+
+ weak_alias (BP_SYM (strchr), BP_SYM (index))
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/strcmp.S 2002-09-17 19:50:02.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strcmp.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strcmp implementation for PowerPC64.
+- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,42 +31,50 @@
+ #define rRTN r3
+ #define rSTR1 r3 /* first string arg */
+ #define rSTR2 r4 /* second string arg */
++/* Note: The Bounded pointer support in this code is broken. This code
++ was inherited from PPC32 and and that support was never completed.
++ Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
++ These artifacts are left in the code as a reminder in case we need
++ bounded pointer support in the future. */
+ #if __BOUNDED_POINTERS__
+ # define rHIGH1 r11
+ # define rHIGH2 r12
+ #endif
+ #define rWORD1 r5 /* current word in s1 */
+ #define rWORD2 r6 /* current word in s2 */
+-#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
+-#define r7F7F r8 /* constant 0x7f7f7f7f */
+-#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
++#define rFEFE r7 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
++#define r7F7F r8 /* constant 0x7f7f7f7f7f7f7f7f */
++#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
+ #define rBITDIF r10 /* bits that differ in s1 & s2 words */
+
+ CHECK_BOUNDS_LOW (rSTR1, rTMP, rHIGH1)
+ CHECK_BOUNDS_LOW (rSTR2, rTMP, rHIGH2)
+
++ dcbt 0,rSTR1
+ or rTMP, rSTR2, rSTR1
+- clrldi. rTMP, rTMP, 62
++ dcbt 0,rSTR2
++ clrldi. rTMP, rTMP, 61
+ lis rFEFE, -0x101
+ bne L(unaligned)
+
+- lwz rWORD1, 0(rSTR1)
+- lwz rWORD2, 0(rSTR2)
++ ld rWORD1, 0(rSTR1)
++ ld rWORD2, 0(rSTR2)
+ lis r7F7F, 0x7f7f
+ addi rFEFE, rFEFE, -0x101
+- clrldi rFEFE,rFEFE,32 /* clear upper 32 */
+ addi r7F7F, r7F7F, 0x7f7f
++ sldi rTMP, rFEFE, 32
++ insrdi r7F7F, r7F7F, 32, 0
++ add rFEFE, rFEFE, rTMP
+ b L(g1)
+
+-L(g0): lwzu rWORD1, 4(rSTR1)
++L(g0): ldu rWORD1, 8(rSTR1)
+ bne cr1, L(different)
+- lwzu rWORD2, 4(rSTR2)
++ ldu rWORD2, 8(rSTR2)
+ L(g1): add rTMP, rFEFE, rWORD1
+ nor rNEG, r7F7F, rWORD1
+
+- clrldi rNEG,rNEG,32 /* clear upper 32 */
+ and. rTMP, rTMP, rNEG
+- cmpw cr1, rWORD1, rWORD2
++ cmpd cr1, rWORD1, rWORD2
+ beq+ L(g0)
+ L(endstring):
+ /* OK. We've hit the end of the string. We need to be careful that
+@@ -77,29 +85,34 @@
+ add rTMP, rTMP, r7F7F
+ xor. rBITDIF, rWORD1, rWORD2
+
+- extsw. rBITDIF,rBITDIF /* propagate sign for blt */
+ andc rNEG, rNEG, rTMP
+ blt- L(highbit)
+- cntlzw rBITDIF, rBITDIF
+- cntlzw rNEG, rNEG
++ cntlzd rBITDIF, rBITDIF
++ cntlzd rNEG, rNEG
+ addi rNEG, rNEG, 7
+- cmpw cr1, rNEG, rBITDIF
++ cmpd cr1, rNEG, rBITDIF
+ sub rRTN, rWORD1, rWORD2
+- bgelr+ cr1
++ blt- cr1, L(equal)
++ sradi rRTN, rRTN, 63
++ ori rRTN, rRTN, 1
++ blr
+ L(equal):
+ li rRTN, 0
+ /* GKM FIXME: check high bounds. */
+ blr
+
+ L(different):
+- lwz rWORD1, -4(rSTR1)
++ ld rWORD1, -8(rSTR1)
+ xor. rBITDIF, rWORD1, rWORD2
+-
+- extsw. rBITDIF,rBITDIF /* propagate sign for bgelr */
+ sub rRTN, rWORD1, rWORD2
+- bgelr+
++ blt- L(highbit)
++ sradi rRTN, rRTN, 63
++ ori rRTN, rRTN, 1
++ blr
+ L(highbit):
+- ori rRTN, rWORD2, 1
++ srdi rWORD2, rWORD2, 56
++ srdi rWORD1, rWORD1, 56
++ sub rRTN, rWORD1, rWORD2
+ /* GKM FIXME: check high bounds. */
+ blr
+
+@@ -116,12 +129,12 @@
+ lbzu rWORD2, 1(rSTR2)
+ L(u1): cmpwi cr1, rWORD1, 0
+ beq- cr1, L(u3)
+- cmpw rWORD1, rWORD2
++ cmpd rWORD1, rWORD2
+ bne- L(u3)
+ lbzu rWORD1, 1(rSTR1)
+ lbzu rWORD2, 1(rSTR2)
+- cmpwi cr1, rWORD1, 0
+- cmpw rWORD1, rWORD2
++ cmpdi cr1, rWORD1, 0
++ cmpd rWORD1, rWORD2
+ bne+ cr1, L(u0)
+ L(u3): sub rRTN, rWORD1, rWORD2
+ /* GKM FIXME: check high bounds. */
+@@ -131,3 +144,4 @@
+ /* GKM FIXME: check high bounds. */
+ blr
+ END (BP_SYM (strcmp))
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/strcpy.S 2002-09-17 19:50:02.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strcpy.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strcpy implementation for PowerPC64.
+- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,6 +29,11 @@
+
+ #define rTMP r0
+ #define rRTN r3 /* incoming DEST arg preserved as result */
++/* Note. The Bounded pointer support in this code is broken. This code
++ was inherited from PPC32 and and that support was never completed.
++ Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
++ These artifacts are left in the code as a reminder in case we need
++ bounded pointer support in the future. */
+ #if __BOUNDED_POINTERS__
+ # define rDEST r4 /* pointer to previous word in dest */
+ # define rSRC r5 /* pointer to previous word in src */
+@@ -39,39 +44,44 @@
+ # define rDEST r5 /* pointer to previous word in dest */
+ #endif
+ #define rWORD r6 /* current word from src */
+-#define rFEFE r7 /* constant 0xfefefeff (-0x01010101) */
+-#define r7F7F r8 /* constant 0x7f7f7f7f */
+-#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f) */
++#define rFEFE r7 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
++#define r7F7F r8 /* constant 0x7f7f7f7f7f7f7f7f */
++#define rNEG r9 /* ~(word in s1 | 0x7f7f7f7f7f7f7f7f) */
+ #define rALT r10 /* alternate word from src */
+
+ CHECK_BOUNDS_LOW (rSRC, rLOW, rHIGH)
+ CHECK_BOUNDS_LOW (rDEST, rLOW, rHIGH)
+ STORE_RETURN_BOUNDS (rLOW, rHIGH)
+
++ dcbt 0,rSRC
+ or rTMP, rSRC, rRTN
+- clrldi. rTMP, rTMP, 62
++ clrldi. rTMP, rTMP, 61
+ #if __BOUNDED_POINTERS__
+- addi rDEST, rDEST, -4
++ addi rDEST, rDEST, -8
+ #else
+- addi rDEST, rRTN, -4
++ addi rDEST, rRTN, -8
+ #endif
++ dcbtst 0,rRTN
+ bne L(unaligned)
+
+ lis rFEFE, -0x101
+ lis r7F7F, 0x7f7f
+- lwz rWORD, 0(rSRC)
++ ld rWORD, 0(rSRC)
+ addi rFEFE, rFEFE, -0x101
+ addi r7F7F, r7F7F, 0x7f7f
++ sldi rTMP, rFEFE, 32
++ insrdi r7F7F, r7F7F, 32, 0
++ add rFEFE, rFEFE, rTMP
+ b L(g2)
+
+-L(g0): lwzu rALT, 4(rSRC)
+- stwu rWORD, 4(rDEST)
++L(g0): ldu rALT, 8(rSRC)
++ stdu rWORD, 8(rDEST)
+ add rTMP, rFEFE, rALT
+ nor rNEG, r7F7F, rALT
+ and. rTMP, rTMP, rNEG
+ bne- L(g1)
+- lwzu rWORD, 4(rSRC)
+- stwu rALT, 4(rDEST)
++ ldu rWORD, 8(rSRC)
++ stdu rALT, 8(rDEST)
+ L(g2): add rTMP, rFEFE, rWORD
+ nor rNEG, r7F7F, rWORD
+ and. rTMP, rTMP, rNEG
+@@ -79,16 +89,29 @@
+
+ mr rALT, rWORD
+ /* We've hit the end of the string. Do the rest byte-by-byte. */
+-L(g1): rlwinm. rTMP, rALT, 8, 24, 31
+- stb rTMP, 4(rDEST)
++L(g1):
++ extrdi. rTMP, rALT, 8, 0
++ stb rTMP, 8(rDEST)
+ beqlr-
+- rlwinm. rTMP, rALT, 16, 24, 31
+- stb rTMP, 5(rDEST)
++ extrdi. rTMP, rALT, 8, 8
++ stb rTMP, 9(rDEST)
+ beqlr-
+- rlwinm. rTMP, rALT, 24, 24, 31
+- stb rTMP, 6(rDEST)
++ extrdi. rTMP, rALT, 8, 16
++ stb rTMP, 10(rDEST)
+ beqlr-
+- stb rALT, 7(rDEST)
++ extrdi. rTMP, rALT, 8, 24
++ stb rTMP, 11(rDEST)
++ beqlr-
++ extrdi. rTMP, rALT, 8, 32
++ stb rTMP, 12(rDEST)
++ beqlr-
++ extrdi. rTMP, rALT, 8, 40
++ stb rTMP, 13(rDEST)
++ beqlr-
++ extrdi. rTMP, rALT, 8, 48
++ stb rTMP, 14(rDEST)
++ beqlr-
++ stb rALT, 15(rDEST)
+ /* GKM FIXME: check high bound. */
+ blr
+
+@@ -118,3 +141,4 @@
+ blr
+
+ END (BP_SYM (strcpy))
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/strlen.S 2002-09-17 19:50:02.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/strlen.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Optimized strlen implementation for PowerPC64.
+- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -60,7 +60,12 @@
+ 2) How popular are bytes with the high bit set? If they are very rare,
+ on some processors it might be useful to use the simpler expression
+ ~((x - 0x01010101) | 0x7f7f7f7f) (that is, on processors with only one
+- ALU), but this fails when any character has its high bit set. */
++ ALU), but this fails when any character has its high bit set.
++
++ Answer:
++ 1) Added a Data Cache Block Touch early to prefetch the first 128
++ byte cache line. Adding dcbt instructions to the loop would not be
++ effective since most strings will be shorter than the cache line.*/
+
+ /* Some notes on register usage: Under the SVR4 ABI, we can use registers
+ 0 and 3 through 12 (so long as we don't call any procedures) without
+@@ -80,63 +85,68 @@
+ #define rSTR r4 /* current string position */
+ #define rPADN r5 /* number of padding bits we prepend to the
+ string to make it start at a word boundary */
+-#define rFEFE r6 /* constant 0xfefefeff (-0x01010101) */
+-#define r7F7F r7 /* constant 0x7f7f7f7f */
+-#define rWORD1 r8 /* current string word */
+-#define rWORD2 r9 /* next string word */
+-#define rMASK r9 /* mask for first string word */
++#define rFEFE r6 /* constant 0xfefefefefefefeff (-0x0101010101010101) */
++#define r7F7F r7 /* constant 0x7f7f7f7f7f7f7f7f */
++#define rWORD1 r8 /* current string doubleword */
++#define rWORD2 r9 /* next string doubleword */
++#define rMASK r9 /* mask for first string doubleword */
+ #define rTMP2 r10
+ #define rTMP3 r11
+ #define rTMP4 r12
+
++/* Note: The Bounded pointer support in this code is broken. This code
++ was inherited from PPC32 and and that support was never completed.
++ Current PPC gcc does not support -fbounds-check or -fbounded-pointers.
++ These artifacts are left in the code as a reminder in case we need
++ bounded pointer support in the future. */
+ CHECK_BOUNDS_LOW (rRTN, rTMP1, rTMP2)
+
+- clrrdi rSTR, rRTN, 2
++ dcbt 0,rRTN
++ clrrdi rSTR, rRTN, 3
+ lis r7F7F, 0x7f7f
+- rlwinm rPADN, rRTN, 3, 27, 28
+- lwz rWORD1, 0(rSTR)
+- li rMASK, -1
++ rlwinm rPADN, rRTN, 3, 26, 28
++ ld rWORD1, 0(rSTR)
+ addi r7F7F, r7F7F, 0x7f7f
+-/* That's the setup done, now do the first pair of words.
+- We make an exception and use method (2) on the first two words, to reduce
+- overhead. */
+- srw rMASK, rMASK, rPADN
++ li rMASK, -1
++ insrdi r7F7F, r7F7F, 32, 0
++/* That's the setup done, now do the first pair of doublewords.
++ We make an exception and use method (2) on the first two doublewords,
++ to reduce overhead. */
++ srd rMASK, rMASK, rPADN
+ and rTMP1, r7F7F, rWORD1
+ or rTMP2, r7F7F, rWORD1
++ lis rFEFE, -0x101
+ add rTMP1, rTMP1, r7F7F
++ addi rFEFE, rFEFE, -0x101
+ nor rTMP1, rTMP2, rTMP1
+ and. rWORD1, rTMP1, rMASK
+ mtcrf 0x01, rRTN
+ bne L(done0)
+- lis rFEFE, -0x101
+- addi rFEFE, rFEFE, -0x101
+- clrldi rFEFE,rFEFE,32 /* clear upper 32 */
++ sldi rTMP1, rFEFE, 32
++ add rFEFE, rFEFE, rTMP1
+ /* Are we now aligned to a doubleword boundary? */
+- bt 29, L(loop)
++ bt 28, L(loop)
+
+-/* Handle second word of pair. */
+- lwzu rWORD1, 4(rSTR)
++/* Handle second doubleword of pair. */
++ ldu rWORD1, 8(rSTR)
+ and rTMP1, r7F7F, rWORD1
+ or rTMP2, r7F7F, rWORD1
+ add rTMP1, rTMP1, r7F7F
+ nor. rWORD1, rTMP2, rTMP1
+- clrldi. rWORD1,rWORD1,32 /* clear upper 32 */
+ bne L(done0)
+
+ /* The loop. */
+
+ L(loop):
+- lwz rWORD1, 4(rSTR)
+- lwzu rWORD2, 8(rSTR)
++ ld rWORD1, 8(rSTR)
++ ldu rWORD2, 16(rSTR)
+ add rTMP1, rFEFE, rWORD1
+ nor rTMP2, r7F7F, rWORD1
+ and. rTMP1, rTMP1, rTMP2
+- clrldi. rTMP1,rTMP1,32 /* clear upper 32 */
+ add rTMP3, rFEFE, rWORD2
+ nor rTMP4, r7F7F, rWORD2
+ bne L(done1)
+ and. rTMP1, rTMP3, rTMP4
+- clrldi. rTMP1,rTMP1,32 /* clear upper 32 */
+ beq L(loop)
+
+ and rTMP1, r7F7F, rWORD2
+@@ -146,18 +156,19 @@
+
+ L(done1):
+ and rTMP1, r7F7F, rWORD1
+- subi rSTR, rSTR, 4
++ subi rSTR, rSTR, 8
+ add rTMP1, rTMP1, r7F7F
+ andc rWORD1, rTMP2, rTMP1
+
+-/* When we get to here, rSTR points to the first word in the string that
++/* When we get to here, rSTR points to the first doubleword in the string that
+ contains a zero byte, and the most significant set bit in rWORD1 is in that
+ byte. */
+ L(done0):
+- cntlzw rTMP3, rWORD1
++ cntlzd rTMP3, rWORD1
+ subf rTMP1, rRTN, rSTR
+- srwi rTMP3, rTMP3, 3
++ srdi rTMP3, rTMP3, 3
+ add rRTN, rTMP1, rTMP3
+ /* GKM FIXME: check high bound. */
+ blr
+ END (BP_SYM (strlen))
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/powerpc/powerpc64/sysdep.h 2003-01-12 03:09:45.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/powerpc64/sysdep.h 2003-08-21 08:37:09.000000000 -0400
+@@ -34,11 +34,16 @@
+ .pushsection; \
+ .section ".data"; \
+ .align ALIGNARG(2); \
+-0: .long 0; \
++__mcount: \
++ .long 0; \
++ .previous; \
++ .section ".toc","aw"; \
++.LC__mcount:; \
++ .tc __mcount[TC],__mcount; \
+ .previous; \
+ mflr r0; \
+ std r0,16(r1); \
+- ld r0,0b@got(r2); \
++ ld r0,.LC__mcount@toc(r2); \
+ bl JUMPTARGET(_mcount);
+ #else /* SYSV_ELF_PROFILING */
+ #define CALL_MCOUNT \
+@@ -52,11 +57,16 @@
+ .pushsection; \
+ .section ".data"; \
+ .align ALIGNARG(2); \
+-0: .long 0; \
++__mcount: \
++ .long 0; \
++ .previous; \
++ .section ".toc","aw"; \
++.LC__mcount:; \
++ .tc __mcount[TC],__mcount; \
+ .previous; \
+ mflr r0; \
+ std r0,16(r1); \
+- ld r0,0b@got(r2); \
++ ld r0,.LC__mcount@toc(r2); \
+ bl JUMPTARGET(_mcount);
+ #else /* SYSV_ELF_PROFILING */
+ #define CALL_MCOUNT \
+@@ -225,6 +235,34 @@
+ #define PSEUDO_END(name) \
+ END (name)
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .section ".text"; \
++ ENTRY (name) \
++ DO_CALL (SYS_ify (syscall_name));
++
++#define PSEUDO_RET_NOERRNO \
++ blr
++
++#define ret_NOERRNO PSEUDO_RET_NOERRNO
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .section ".text"; \
++ ENTRY (name) \
++ DO_CALL (SYS_ify (syscall_name));
++
++#define PSEUDO_RET_ERRVAL \
++ blr
++
++#define ret_ERRVAL PSEUDO_RET_ERRVAL
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
+ /* Label in text section. */
+ /* ppc64 function descriptors which requires . notation */
+ #define C_TEXT(name) .##name
+--- glibc-2.3.2/sysdeps/powerpc/strcat.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/powerpc/strcat.c 2003-05-12 12:13:07.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* strcat version that uses fast strcpy/strlen.
+- Copyright (C) 1997 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,3 +28,4 @@
+ strcpy (dest + strlen (dest), src);
+ return dest;
+ }
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/powerpc/test-arith.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/test-arith.c 2002-11-16 08:56:55.000000000 -0500
+@@ -0,0 +1,605 @@
++/* Test floating-point arithmetic operations.
++ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++#include <math.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <fenv.h>
++#include <assert.h>
++
++#ifndef ESIZE
++typedef double tocheck_t;
++#define ESIZE 11
++#define MSIZE 52
++#define FUNC(x) x
++#endif
++
++#define R_NEAREST 1
++#define R_ZERO 2
++#define R_UP 4
++#define R_DOWN 8
++#define R_ALL (R_NEAREST|R_ZERO|R_UP|R_DOWN)
++static fenv_t rmodes[4];
++static const char * const rmnames[4] =
++{ "nearest","zero","+Inf","-Inf" };
++
++typedef union {
++ tocheck_t tc;
++ unsigned char c[sizeof(tocheck_t)];
++} union_t;
++
++/* Don't try reading these in a font that doesn't distinguish
++ O and zero. */
++typedef enum {
++ P_Z = 0x0, /* 00000...0 */
++ P_000O = 0x1, /* 00011...1 */
++ P_001Z = 0x2, /* 00100...0 */
++ P_00O = 0x3, /* 00111...1 */
++ P_01Z = 0x4, /* 01000...0 */
++ P_010O = 0x5, /* 01011...1 */
++ P_011Z = 0x6, /* 01100...0 */
++ P_0O = 0x7, /* 01111...1 */
++ P_1Z = 0x8, /* 10000...0 */
++ P_100O = 0x9, /* 10011...1 */
++ P_101Z = 0xa, /* 10100...0 */
++ P_10O = 0xb, /* 10111...1 */
++ P_11Z = 0xc, /* 11000...0 */
++ P_110O = 0xd, /* 11011...1 */
++ P_111Z = 0xe, /* 11100...0 */
++ P_O = 0xf, /* 11111...1 */
++ P_Z1 = 0x11, /* 000...001 */
++ P_Z10 = 0x12, /* 000...010 */
++ P_Z11 = 0x13, /* 000...011 */
++ P_0O00 = 0x14, /* 011...100 */
++ P_0O01 = 0x15, /* 011...101 */
++ P_0O0 = 0x16, /* 011...110 */
++ P_1Z1 = 0x19, /* 100...001 */
++ P_1Z10 = 0x1a, /* 100...010 */
++ P_1Z11 = 0x1b, /* 100...011 */
++ P_O00 = 0x1c, /* 111...100 */
++ P_O01 = 0x1d, /* 111...101 */
++ P_O0 = 0x1e, /* 111...110 */
++ P_R = 0x20, /* rrr...rrr */ /* ('r' means random. ) */
++ P_Ro = 0x21, /* rrr...rrr, with odd parity. */
++ P_0R = 0x22, /* 0rr...rrr */
++ P_1R = 0x23, /* 1rr...rrr */
++ P_Rno = 0x24, /* rrr...rrr, but not all ones. */
++} pattern_t;
++
++static void
++pattern_fill(pattern_t ptn, unsigned char *start, int bitoffset, int count)
++{
++#define bitset(count, value) \
++ start[(count)/8] = (start[(count)/8] & ~(1 << 7-(count)%8) \
++ | (value) << 7-(count)%8)
++ int i;
++
++ if (ptn >= 0 && ptn <= 0xf)
++ {
++ /* Patterns between 0 and 0xF have the following format:
++ The LSBit is used to fill the last n-3 bits of the pattern;
++ The next 3 bits are the first 3 bits of the pattern. */
++ for (i = 0; i < count; i++)
++ if (i < 3)
++ bitset((bitoffset+i), ptn >> (3-i) & 1);
++ else
++ bitset((bitoffset+i), ptn >> 0 & 1);
++ }
++ else if (ptn <= 0x1f)
++ {
++ /* Patterns between 0x10 and 0x1F have the following format:
++ The two LSBits are the last two bits of the pattern;
++ The 0x8 bit is the first bit of the pattern;
++ The 0x4 bit is used to fill the remainder. */
++ for (i = 0; i < count; i++)
++ if (i == 0)
++ bitset((bitoffset+i), ptn >> 3 & 1);
++ else if (i >= count-2)
++ bitset((bitoffset+i), ptn >> (count-1-i) & 1);
++ else
++ bitset((bitoffset+i), ptn >> 2 & 1);
++ }
++ else switch (ptn)
++ {
++ case P_0R: case P_1R:
++ assert(count > 0);
++ bitset(bitoffset, ptn & 1);
++ count--;
++ bitoffset++;
++ case P_R:
++ for (; count > 0; count--, bitoffset++)
++ bitset(bitoffset, rand() & 1);
++ break;
++ case P_Ro:
++ {
++ int op = 1;
++ assert(count > 0);
++ for (; count > 1; count--, bitoffset++)
++ bitset(bitoffset, op ^= (rand() & 1));
++ bitset(bitoffset, op);
++ break;
++ }
++ case P_Rno:
++ {
++ int op = 1;
++ assert(count > 0);
++ for (; count > 1; count--, bitoffset++)
++ {
++ int r = rand() & 1;
++ op &= r;
++ bitset(bitoffset, r);
++ }
++ bitset(bitoffset, rand() & (op ^ 1));
++ break;
++ }
++
++ default:
++ assert(0);
++ }
++#undef bitset
++}
++
++static tocheck_t
++pattern(int negative, pattern_t exp, pattern_t mant)
++{
++ union_t result;
++#if 0
++ int i;
++#endif
++
++ pattern_fill(negative ? P_O : P_Z, result.c, 0, 1);
++ pattern_fill(exp, result.c, 1, ESIZE);
++ pattern_fill(mant, result.c, ESIZE+1, MSIZE);
++#if 0
++ printf("neg=%d exp=%02x mant=%02x: ", negative, exp, mant);
++ for (i = 0; i < sizeof(tocheck_t); i++)
++ printf("%02x", result.c[i]);
++ printf("\n");
++#endif
++ return result.tc;
++}
++
++/* Return the closest different tocheck_t to 'x' in the direction of
++ 'direction', or 'x' if there is no such value. Assumes 'x' is not
++ a NaN. */
++static tocheck_t
++delta(tocheck_t x, int direction)
++{
++ union_t xx;
++ int i;
++
++ xx.tc = x;
++ if (xx.c[0] & 0x80)
++ direction = -direction;
++ if (direction == +1)
++ {
++ union_t tx;
++ tx.tc = pattern(xx.c[0] >> 7, P_O, P_Z);
++ if (memcmp(tx.c, xx.c, sizeof(tocheck_t)) == 0)
++ return x;
++ }
++ for (i = sizeof(tocheck_t)-1; i > 0; i--)
++ {
++ xx.c[i] += direction;
++ if (xx.c[i] != (direction > 0 ? 0 : 0xff))
++ return xx.tc;
++ }
++ if (direction < 0 && (xx.c[0] & 0x7f) == 0)
++ return pattern(~(xx.c[0] >> 7) & 1, P_Z, P_Z1);
++ else
++ {
++ xx.c[0] += direction;
++ return xx.tc;
++ }
++}
++
++static int nerrors = 0;
++
++#ifdef FE_ALL_INVALID
++static const int all_exceptions = FE_ALL_INVALID | FE_ALL_EXCEPT;
++#else
++static const int all_exceptions = FE_ALL_EXCEPT;
++#endif
++
++static void
++check_result(int line, const char *rm, tocheck_t expected, tocheck_t actual)
++{
++ if (memcmp(&expected, &actual, sizeof(tocheck_t)) != 0)
++ {
++ unsigned char *ex, *ac;
++ size_t i;
++
++ printf("%s:%d:round %s:result failed\n"
++ " expected result 0x", __FILE__, line, rm);
++ ex = (unsigned char *)&expected;
++ ac = (unsigned char *)&actual;
++ for (i = 0; i < sizeof(tocheck_t); i++)
++ printf("%02x", ex[i]);
++ printf(" got 0x");
++ for (i = 0; i < sizeof(tocheck_t); i++)
++ printf("%02x", ac[i]);
++ printf("\n");
++ nerrors++;
++ }
++}
++
++static const struct {
++ int except;
++ const char *name;
++} excepts[] = {
++#define except_entry(ex) { ex, #ex } ,
++#ifdef FE_INEXACT
++ except_entry(FE_INEXACT)
++#else
++# define FE_INEXACT 0
++#endif
++#ifdef FE_DIVBYZERO
++ except_entry(FE_DIVBYZERO)
++#else
++# define FE_DIVBYZERO 0
++#endif
++#ifdef FE_UNDERFLOW
++ except_entry(FE_UNDERFLOW)
++#else
++# define FE_UNDERFLOW 0
++#endif
++#ifdef FE_OVERFLOW
++ except_entry(FE_OVERFLOW)
++#else
++# define FE_OVERFLOW 0
++#endif
++#ifdef FE_INVALID
++ except_entry(FE_INVALID)
++#else
++# define FE_INVALID 0
++#endif
++#ifdef FE_INVALID_SNAN
++ except_entry(FE_INVALID_SNAN)
++#else
++# define FE_INVALID_SNAN FE_INVALID
++#endif
++#ifdef FE_INVALID_ISI
++ except_entry(FE_INVALID_ISI)
++#else
++# define FE_INVALID_ISI FE_INVALID
++#endif
++#ifdef FE_INVALID_IDI
++ except_entry(FE_INVALID_IDI)
++#else
++# define FE_INVALID_IDI FE_INVALID
++#endif
++#ifdef FE_INVALID_ZDZ
++ except_entry(FE_INVALID_ZDZ)
++#else
++# define FE_INVALID_ZDZ FE_INVALID
++#endif
++#ifdef FE_INVALID_COMPARE
++ except_entry(FE_INVALID_COMPARE)
++#else
++# define FE_INVALID_COMPARE FE_INVALID
++#endif
++#ifdef FE_INVALID_SOFTWARE
++ except_entry(FE_INVALID_SOFTWARE)
++#else
++# define FE_INVALID_SOFTWARE FE_INVALID
++#endif
++#ifdef FE_INVALID_SQRT
++ except_entry(FE_INVALID_SQRT)
++#else
++# define FE_INVALID_SQRT FE_INVALID
++#endif
++#ifdef FE_INVALID_INTEGER_CONVERSION
++ except_entry(FE_INVALID_INTEGER_CONVERSION)
++#else
++# define FE_INVALID_INTEGER_CONVERSION FE_INVALID
++#endif
++};
++
++static int excepts_missing = 0;
++
++static void
++check_excepts(int line, const char *rm, int expected, int actual)
++{
++ if (expected & excepts_missing)
++ expected = expected & ~excepts_missing | FE_INVALID_SNAN;
++ if ((expected & all_exceptions) != actual)
++ {
++ size_t i;
++ printf("%s:%d:round %s:exceptions failed\n"
++ " expected exceptions ", __FILE__, line,rm);
++ for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
++ if (expected & excepts[i].except)
++ printf("%s ",excepts[i].name);
++ if ((expected & all_exceptions) == 0)
++ printf("- ");
++ printf("got");
++ for (i = 0; i < sizeof(excepts)/sizeof(excepts[0]); i++)
++ if (actual & excepts[i].except)
++ printf(" %s",excepts[i].name);
++ if ((actual & all_exceptions) == 0)
++ printf("- ");
++ printf(".\n");
++ nerrors++;
++ }
++}
++
++typedef enum {
++ B_ADD, B_SUB, B_MUL, B_DIV, B_NEG, B_ABS, B_SQRT
++} op_t;
++typedef struct {
++ int line;
++ op_t op;
++ int a_sgn;
++ pattern_t a_exp, a_mant;
++ int b_sgn;
++ pattern_t b_exp, b_mant;
++ int rmode;
++ int excepts;
++ int x_sgn;
++ pattern_t x_exp, x_mant;
++} optest_t;
++static const optest_t optests[] = {
++ /* Additions of zero. */
++ {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_Z,P_Z },
++ {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_ALL & ~R_DOWN,0, 0,P_Z,P_Z },
++ {__LINE__,B_ADD, 1,P_Z,P_Z, 0,P_Z,P_Z, R_DOWN,0, 1,P_Z,P_Z },
++ {__LINE__,B_ADD, 1,P_Z,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_Z,P_Z },
++
++ /* Additions with NaN. */
++ {__LINE__,B_ADD, 0,P_O,P_101Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_101Z },
++ {__LINE__,B_ADD, 0,P_O,P_01Z, 0,P_Z,P_Z, R_ALL,
++ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
++ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_0O, R_ALL,
++ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_O },
++ {__LINE__,B_ADD, 0,P_Z,P_Z, 0,P_O,P_11Z, R_ALL,0, 0,P_O,P_11Z },
++ {__LINE__,B_ADD, 0,P_O,P_001Z, 0,P_O,P_001Z, R_ALL,
++ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_101Z },
++ {__LINE__,B_ADD, 0,P_O,P_1Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_1Z },
++ {__LINE__,B_ADD, 0,P_0O,P_Z, 0,P_O,P_10O, R_ALL,0, 0,P_O,P_10O },
++
++ /* Additions with infinity. */
++ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
++ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 0,P_O,P_Z },
++ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
++ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_Z,P_Z, R_ALL,0, 1,P_O,P_Z },
++ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_O,P_Z, R_ALL,0, 0,P_O,P_Z },
++ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_O,P_Z, R_ALL,0, 1,P_O,P_Z },
++ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_O,P_Z, R_ALL,
++ FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
++ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_O,P_Z, R_ALL,
++ FE_INVALID | FE_INVALID_ISI, 0,P_O,P_1Z },
++ {__LINE__,B_ADD, 0,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
++ {__LINE__,B_ADD, 1,P_O,P_Z, 0,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
++ {__LINE__,B_ADD, 0,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 0,P_O,P_Z },
++ {__LINE__,B_ADD, 1,P_O,P_Z, 1,P_0O,P_Z, R_ALL,0, 1,P_O,P_Z },
++
++ /* Overflow (and zero). */
++ {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_NEAREST | R_UP,
++ FE_INEXACT | FE_OVERFLOW, 0,P_O,P_Z },
++ {__LINE__,B_ADD, 0,P_O0,P_Z, 0,P_O0,P_Z, R_ZERO | R_DOWN,
++ FE_INEXACT | FE_OVERFLOW, 0,P_O0,P_O },
++ {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_NEAREST | R_DOWN,
++ FE_INEXACT | FE_OVERFLOW, 1,P_O,P_Z },
++ {__LINE__,B_ADD, 1,P_O0,P_Z, 1,P_O0,P_Z, R_ZERO | R_UP,
++ FE_INEXACT | FE_OVERFLOW, 1,P_O0,P_O },
++ {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_ALL & ~R_DOWN,
++ 0, 0,P_Z,P_Z },
++ {__LINE__,B_ADD, 0,P_O0,P_Z, 1,P_O0,P_Z, R_DOWN,
++ 0, 1,P_Z,P_Z },
++
++ /* Negation. */
++ {__LINE__,B_NEG, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 1,P_Z,P_Z },
++ {__LINE__,B_NEG, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
++ {__LINE__,B_NEG, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 1,P_O,P_Z },
++ {__LINE__,B_NEG, 1,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
++ {__LINE__,B_NEG, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 1,P_O,P_1Z },
++ {__LINE__,B_NEG, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
++ {__LINE__,B_NEG, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 1,P_O,P_01Z },
++ {__LINE__,B_NEG, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
++ {__LINE__,B_NEG, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 1,P_1Z,P_1Z1 },
++ {__LINE__,B_NEG, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
++ {__LINE__,B_NEG, 0,P_Z,P_Z1, 0,0,0, R_ALL, 0, 1,P_Z,P_Z1 },
++ {__LINE__,B_NEG, 1,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
++
++ /* Absolute value. */
++ {__LINE__,B_ABS, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
++ {__LINE__,B_ABS, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
++ {__LINE__,B_ABS, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
++ {__LINE__,B_ABS, 1,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
++ {__LINE__,B_ABS, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
++ {__LINE__,B_ABS, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
++ {__LINE__,B_ABS, 0,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
++ {__LINE__,B_ABS, 1,P_O,P_01Z, 0,0,0, R_ALL, 0, 0,P_O,P_01Z },
++ {__LINE__,B_ABS, 0,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
++ {__LINE__,B_ABS, 1,P_1Z,P_1Z1, 0,0,0, R_ALL, 0, 0,P_1Z,P_1Z1 },
++ {__LINE__,B_ABS, 0,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
++ {__LINE__,B_ABS, 1,P_Z,P_Z1, 0,0,0, R_ALL, 0, 0,P_Z,P_Z1 },
++
++ /* Square root. */
++ {__LINE__,B_SQRT, 0,P_Z,P_Z, 0,0,0, R_ALL, 0, 0,P_Z,P_Z },
++ {__LINE__,B_SQRT, 1,P_Z,P_Z, 0,0,0, R_ALL, 0, 1,P_Z,P_Z },
++ {__LINE__,B_SQRT, 0,P_O,P_1Z, 0,0,0, R_ALL, 0, 0,P_O,P_1Z },
++ {__LINE__,B_SQRT, 1,P_O,P_1Z, 0,0,0, R_ALL, 0, 1,P_O,P_1Z },
++ {__LINE__,B_SQRT, 0,P_O,P_01Z, 0,0,0, R_ALL,
++ FE_INVALID | FE_INVALID_SNAN, 0,P_O,P_11Z },
++ {__LINE__,B_SQRT, 1,P_O,P_01Z, 0,0,0, R_ALL,
++ FE_INVALID | FE_INVALID_SNAN, 1,P_O,P_11Z },
++
++ {__LINE__,B_SQRT, 0,P_O,P_Z, 0,0,0, R_ALL, 0, 0,P_O,P_Z },
++ {__LINE__,B_SQRT, 0,P_0O,P_Z, 0,0,0, R_ALL, 0, 0,P_0O,P_Z },
++
++ {__LINE__,B_SQRT, 1,P_O,P_Z, 0,0,0, R_ALL,
++ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
++ {__LINE__,B_SQRT, 1,P_1Z,P_1Z1, 0,0,0, R_ALL,
++ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
++ {__LINE__,B_SQRT, 1,P_Z,P_Z1, 0,0,0, R_ALL,
++ FE_INVALID | FE_INVALID_SQRT, 0,P_O,P_1Z },
++
++};
++
++static void
++check_op(void)
++{
++ size_t i;
++ int j;
++ tocheck_t r, a, b, x;
++ int raised;
++
++ for (i = 0; i < sizeof(optests)/sizeof(optests[0]); i++)
++ {
++ a = pattern(optests[i].a_sgn, optests[i].a_exp,
++ optests[i].a_mant);
++ b = pattern(optests[i].b_sgn, optests[i].b_exp,
++ optests[i].b_mant);
++ x = pattern(optests[i].x_sgn, optests[i].x_exp,
++ optests[i].x_mant);
++ for (j = 0; j < 4; j++)
++ if (optests[i].rmode & 1<<j)
++ {
++ fesetenv(rmodes+j);
++ switch (optests[i].op)
++ {
++ case B_ADD: r = a + b; break;
++ case B_SUB: r = a - b; break;
++ case B_MUL: r = a * b; break;
++ case B_DIV: r = a / b; break;
++ case B_NEG: r = -a; break;
++ case B_ABS: r = FUNC(fabs)(a); break;
++ case B_SQRT: r = FUNC(sqrt)(a); break;
++ }
++ raised = fetestexcept(all_exceptions);
++ check_result(optests[i].line,rmnames[j],x,r);
++ check_excepts(optests[i].line,rmnames[j],
++ optests[i].excepts,raised);
++ }
++ }
++}
++
++static void
++fail_xr(int line, const char *rm, tocheck_t x, tocheck_t r, tocheck_t xx,
++ int xflag)
++{
++ size_t i;
++ unsigned char *cx, *cr, *cxx;
++
++ printf("%s:%d:round %s:fail\n with x=0x", __FILE__, line,rm);
++ cx = (unsigned char *)&x;
++ cr = (unsigned char *)&r;
++ cxx = (unsigned char *)&xx;
++ for (i = 0; i < sizeof(tocheck_t); i++)
++ printf("%02x", cx[i]);
++ printf(" r=0x");
++ for (i = 0; i < sizeof(tocheck_t); i++)
++ printf("%02x", cr[i]);
++ printf(" xx=0x");
++ for (i = 0; i < sizeof(tocheck_t); i++)
++ printf("%02x", cxx[i]);
++ printf(" inexact=%d\n", xflag != 0);
++ nerrors++;
++}
++
++static void
++check_sqrt(tocheck_t a)
++{
++ int j;
++ tocheck_t r0, r1, r2, x0, x1, x2;
++ int raised = 0;
++ int ok;
++
++ for (j = 0; j < 4; j++)
++ {
++ int excepts;
++
++ fesetenv(rmodes+j);
++ r1 = FUNC(sqrt)(a);
++ excepts = fetestexcept(all_exceptions);
++ fesetenv(FE_DFL_ENV);
++ raised |= excepts & ~FE_INEXACT;
++ x1 = r1 * r1 - a;
++ if (excepts & FE_INEXACT)
++ {
++ r0 = delta(r1,-1); r2 = delta(r1,1);
++ switch (1 << j)
++ {
++ case R_NEAREST:
++ x0 = r0 * r0 - a; x2 = r2 * r2 - a;
++ ok = fabs(x0) >= fabs(x1) && fabs(x1) <= fabs(x2);
++ break;
++ case R_ZERO: case R_DOWN:
++ x2 = r2 * r2 - a;
++ ok = x1 <= 0 && x2 >= 0;
++ break;
++ case R_UP:
++ x0 = r0 * r0 - a;
++ ok = x1 >= 0 && x0 <= 0;
++ break;
++ default:
++ assert(0);
++ }
++ }
++ else
++ ok = x1 == 0;
++ if (!ok)
++ fail_xr(__LINE__,rmnames[j],a,r1,x1,excepts&FE_INEXACT);
++ }
++ check_excepts(__LINE__,"all",0,raised);
++}
++
++int main(int argc, char **argv)
++{
++ int i;
++
++ _LIB_VERSION = _IEEE_;
++
++ /* Set up environments for rounding modes. */
++ fesetenv(FE_DFL_ENV);
++ fesetround(FE_TONEAREST);
++ fegetenv(rmodes+0);
++ fesetround(FE_TOWARDZERO);
++ fegetenv(rmodes+1);
++ fesetround(FE_UPWARD);
++ fegetenv(rmodes+2);
++ fesetround(FE_DOWNWARD);
++ fegetenv(rmodes+3);
++
++#if defined(FE_INVALID_SOFTWARE) || defined(FE_INVALID_SQRT)
++ /* There's this really stupid feature of the 601... */
++ fesetenv(FE_DFL_ENV);
++ feraiseexcept(FE_INVALID_SOFTWARE);
++ if (!fetestexcept(FE_INVALID_SOFTWARE))
++ excepts_missing |= FE_INVALID_SOFTWARE;
++ fesetenv(FE_DFL_ENV);
++ feraiseexcept(FE_INVALID_SQRT);
++ if (!fetestexcept(FE_INVALID_SQRT))
++ excepts_missing |= FE_INVALID_SQRT;
++#endif
++
++ check_op();
++ for (i = 0; i < 100000; i++)
++ check_sqrt(pattern(0, P_Rno, P_R));
++ for (i = 0; i < 100; i++)
++ check_sqrt(pattern(0, P_Z, P_R));
++ check_sqrt(pattern(0,P_Z,P_Z1));
++
++ printf("%d errors.\n", nerrors);
++ return nerrors == 0 ? 0 : 1;
++}
+--- glibc-2.3.2/sysdeps/powerpc/test-arithf.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/powerpc/test-arithf.c 2002-11-16 08:56:55.000000000 -0500
+@@ -0,0 +1,6 @@
++typedef float tocheck_t;
++#define ESIZE 8
++#define MSIZE 23
++#define FUNC(x) x##f
++
++#include "test-arith.c"
+--- glibc-2.3.2/sysdeps/pthread/aio_cancel.c 2002-08-28 19:39:22.000000000 -0400
++++ glibc-2.3.2/sysdeps/pthread/aio_cancel.c 2003-08-21 08:37:09.000000000 -0400
+@@ -60,7 +60,13 @@
+ {
+ /* If the AIO request is not for this descriptor it has no value
+ to look for the request block. */
+- if (aiocbp->aio_fildes == fildes)
++ if (aiocbp->aio_fildes != fildes)
++ {
++ pthread_mutex_unlock (&__aio_requests_mutex);
++ __set_errno (EINVAL);
++ return -1;
++ }
++ else if (aiocbp->__error_code == EINPROGRESS)
+ {
+ struct requestlist *last = NULL;
+
+--- glibc-2.3.2/sysdeps/pthread/aio_misc.c 2002-11-01 21:15:59.000000000 -0500
++++ glibc-2.3.2/sysdeps/pthread/aio_misc.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Handle general operations.
+- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -328,8 +328,10 @@
+ return NULL;
+ }
+ newp->aiocbp = aiocbp;
++#ifdef BROKEN_THREAD_SIGNALS
+ newp->caller_pid = (aiocbp->aiocb.aio_sigevent.sigev_notify == SIGEV_SIGNAL
+ ? getpid () : 0);
++#endif
+ newp->waiting = NULL;
+
+ aiocbp->aiocb.__abs_prio = prio;
+--- glibc-2.3.2/sysdeps/pthread/aio_misc.h 2002-03-11 03:32:01.000000000 -0500
++++ glibc-2.3.2/sysdeps/pthread/aio_misc.h 2003-08-21 08:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -50,9 +50,11 @@
+ volatile int *counterp;
+ /* The next field is used in asynchronous `lio_listio' operations. */
+ struct sigevent *sigevp;
++#ifdef BROKEN_THREAD_SIGNALS
+ /* XXX See requestlist, it's used to work around the broken signal
+ handling in Linux. */
+ pid_t caller_pid;
++#endif
+ };
+
+
+@@ -80,9 +82,11 @@
+ /* Pointer to the actual data. */
+ aiocb_union *aiocbp;
+
++#ifdef BROKEN_THREAD_SIGNALS
+ /* PID of the initiator thread.
+ XXX This is only necessary for the broken signal handling on Linux. */
+ pid_t caller_pid;
++#endif
+
+ /* List of waiting processes. */
+ struct waitlist *waiting;
+@@ -90,38 +94,46 @@
+
+
+ /* Lock for global I/O list of requests. */
+-extern pthread_mutex_t __aio_requests_mutex;
++extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
+
+
+ /* Enqueue request. */
+ extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
+ int operation)
+- internal_function;
++ attribute_hidden internal_function;
+
+ /* Find request entry for given AIO control block. */
+ extern struct requestlist *__aio_find_req (aiocb_union *elem)
+- internal_function;
++ attribute_hidden internal_function;
+
+ /* Find request entry for given file descriptor. */
+-extern struct requestlist *__aio_find_req_fd (int fildes) internal_function;
++extern struct requestlist *__aio_find_req_fd (int fildes)
++ attribute_hidden internal_function;
+
+ /* Remove request from the list. */
+ extern void __aio_remove_request (struct requestlist *last,
+ struct requestlist *req, int all)
+- internal_function;
++ attribute_hidden internal_function;
+
+ /* Release the entry for the request. */
+-extern void __aio_free_request (struct requestlist *req) internal_function;
++extern void __aio_free_request (struct requestlist *req)
++ attribute_hidden internal_function;
+
+ /* Notify initiator of request and tell this everybody listening. */
+-extern void __aio_notify (struct requestlist *req) internal_function;
++extern void __aio_notify (struct requestlist *req)
++ attribute_hidden internal_function;
+
+ /* Notify initiator of request. */
++#ifdef BROKEN_THREAD_SIGNALS
+ extern int __aio_notify_only (struct sigevent *sigev, pid_t caller_pid)
+- internal_function;
++ attribute_hidden internal_function;
++#else
++extern int __aio_notify_only (struct sigevent *sigev)
++ attribute_hidden internal_function;
++#endif
+
+ /* Send the signal. */
+ extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
+- internal_function;
++ attribute_hidden internal_function;
+
+ #endif /* aio_misc.h */
+--- glibc-2.3.2/sysdeps/pthread/aio_notify.c 2003-01-03 03:16:18.000000000 -0500
++++ glibc-2.3.2/sysdeps/pthread/aio_notify.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Notify initiator of AIO request.
+- Copyright (C) 1997,98,99,2000,01 Free Software Foundation, Inc.
++ Copyright (C) 1997,98,99,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -45,12 +45,16 @@
+
+ int
+ internal_function
++#ifdef BROKEN_THREAD_SIGNALS
+ __aio_notify_only (struct sigevent *sigev, pid_t caller_pid)
++#else
++__aio_notify_only (struct sigevent *sigev)
++#endif
+ {
+ int result = 0;
+
+ /* Send the signal to notify about finished processing of the request. */
+- if (sigev->sigev_notify == SIGEV_THREAD)
++ if (__builtin_expect (sigev->sigev_notify == SIGEV_THREAD, 0))
+ {
+ /* We have to start a thread. */
+ pthread_t tid;
+@@ -91,9 +95,15 @@
+ #if _POSIX_REALTIME_SIGNALS
+ /* Note that the standard gives us the option of using a plain
+ non-queuing signal here when SA_SIGINFO is not set for the signal. */
++# ifdef BROKEN_THREAD_SIGNALS
+ if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, caller_pid)
+ < 0)
+ result = -1;
++# else
++ if (__aio_sigqueue (sigev->sigev_signo, sigev->sigev_value, getpid ())
++ < 0)
++ result = -1;
++# endif
+ #else
+ /* There are no queued signals on this system at all. */
+ result = raise (sigev->sigev_signo);
+@@ -111,7 +121,11 @@
+ struct waitlist *waitlist;
+ struct aiocb *aiocbp = &req->aiocbp->aiocb;
+
++#ifdef BROKEN_THREAD_SIGNALS
+ if (__aio_notify_only (&aiocbp->aio_sigevent, req->caller_pid) != 0)
++#else
++ if (__aio_notify_only (&aiocbp->aio_sigevent) != 0)
++#endif
+ {
+ /* XXX What shall we do if already an error is set by
+ read/write/fsync? */
+@@ -135,7 +149,11 @@
+ this request is the last one, send the signal. */
+ if (*waitlist->counterp == 0)
+ {
++#ifdef BROKEN_THREAD_SIGNALS
+ __aio_notify_only (waitlist->sigevp, waitlist->caller_pid);
++#else
++ __aio_notify_only (waitlist->sigevp);
++#endif
+ /* This is tricky. See lio_listio.c for the reason why
+ this works. */
+ free ((void *) waitlist->counterp);
+--- glibc-2.3.2/sysdeps/pthread/aio_suspend.c 2003-01-03 03:15:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/pthread/aio_suspend.c 2003-08-21 08:37:09.000000000 -0400
+@@ -35,9 +35,54 @@
+ #include <stdlib.h>
+ #include <sys/time.h>
+
++#include <bits/libc-lock.h>
+ #include "aio_misc.h"
+
+
++struct clparam
++{
++ const struct aiocb *const *list;
++ struct waitlist *waitlist;
++ struct requestlist **requestlist;
++ pthread_cond_t *cond;
++ int nent;
++};
++
++
++static void
++cleanup (void *arg)
++{
++ const struct clparam *param = (const struct clparam *) arg;
++
++ /* Now remove the entry in the waiting list for all requests
++ which didn't terminate. */
++ int cnt = param->nent;
++ while (cnt-- > 0)
++ if (param->list[cnt] != NULL
++ && param->list[cnt]->__error_code == EINPROGRESS)
++ {
++ struct waitlist **listp;
++
++ assert (param->requestlist[cnt] != NULL);
++
++ /* There is the chance that we cannot find our entry anymore. This
++ could happen if the request terminated and restarted again. */
++ listp = &param->requestlist[cnt]->waiting;
++ while (*listp != NULL && *listp != &param->waitlist[cnt])
++ listp = &(*listp)->next;
++
++ if (*listp != NULL)
++ *listp = (*listp)->next;
++ }
++
++ /* Release the conditional variable. */
++ (void) pthread_cond_destroy (param->cond);
++
++ /* Release the mutex. */
++ pthread_mutex_unlock (&__aio_requests_mutex);
++}
++
++
+ int
+ aio_suspend (list, nent, timeout)
+ const struct aiocb *const list[];
+@@ -70,7 +115,9 @@
+ waitlist[cnt].next = requestlist[cnt]->waiting;
+ waitlist[cnt].counterp = &dummy;
+ waitlist[cnt].sigevp = NULL;
++#ifdef BROKEN_THREAD_SIGNALS
+ waitlist[cnt].caller_pid = 0; /* Not needed. */
++#endif
+ requestlist[cnt]->waiting = &waitlist[cnt];
+ any = true;
+ }
+@@ -87,12 +134,16 @@
+ /* Only if none of the entries is NULL or finished to be wait. */
+ if (cnt == nent && any)
+ {
+- int oldstate;
++ struct clparam clparam =
++ {
++ .list = list,
++ .waitlist = waitlist,
++ .requestlist = requestlist,
++ .cond = &cond,
++ .nent = nent
++ };
+
+- /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancelation
+- points we must be careful. We added entries to the waiting lists
+- which we must remove. So defer cancelation for now. */
+- pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
++ pthread_cleanup_push (cleanup, &clparam);
+
+ if (timeout == NULL)
+ result = pthread_cond_wait (&cond, &__aio_requests_mutex);
+@@ -116,8 +167,7 @@
+ &abstime);
+ }
+
+- /* Now it's time to restore the cancellation state. */
+- pthread_setcancelstate (oldstate, NULL);
++ pthread_cleanup_pop (0);
+ }
+
+ /* Now remove the entry in the waiting list for all requests
+@@ -151,6 +201,8 @@
+ form expected from `aio_suspend'. */
+ if (result == ETIMEDOUT)
+ __set_errno (EAGAIN);
++ else
++ __set_errno (result);
+
+ result = -1;
+ }
+--- glibc-2.3.2/sysdeps/pthread/lio_listio.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/pthread/lio_listio.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Enqueue and list of read or write requests.
+- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -18,6 +18,7 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#ifndef lio_listio
+ #include <aio.h>
+ #include <assert.h>
+ #include <errno.h>
+@@ -26,6 +27,8 @@
+
+ #include "aio_misc.h"
+
++#define LIO_OPCODE_BASE 0
++#endif
+
+ /* We need this special structure to handle asynchronous I/O. */
+ struct async_waitlist
+@@ -72,7 +75,8 @@
+ {
+ list[cnt]->aio_sigevent.sigev_notify = SIGEV_NONE;
+ requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
+- list[cnt]->aio_lio_opcode);
++ (list[cnt]->aio_lio_opcode
++ | LIO_OPCODE_BASE));
+
+ if (requests[cnt] != NULL)
+ /* Successfully enqueued. */
+@@ -96,8 +100,14 @@
+ pthread_mutex_unlock (&__aio_requests_mutex);
+
+ if (mode == LIO_NOWAIT)
++ {
++#ifdef BROKEN_THREAD_SIGNALS
+ __aio_notify_only (sig,
+ sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0);
++#else
++ __aio_notify_only (sig);
++#endif
++ }
+
+ return result;
+ }
+@@ -118,7 +128,9 @@
+ waitlist[cnt].next = requests[cnt]->waiting;
+ waitlist[cnt].counterp = &total;
+ waitlist[cnt].sigevp = NULL;
++#ifdef BROKEN_THREAD_SIGNALS
+ waitlist[cnt].caller_pid = 0; /* Not needed. */
++#endif
+ requests[cnt]->waiting = &waitlist[cnt];
+ ++total;
+ }
+@@ -155,7 +167,9 @@
+ }
+ else
+ {
++#ifdef BROKEN_THREAD_SIGNALS
+ pid_t caller_pid = sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0;
++#endif
+ total = 0;
+
+ for (cnt = 0; cnt < nent; ++cnt)
+@@ -169,7 +183,9 @@
+ waitlist->list[cnt].next = requests[cnt]->waiting;
+ waitlist->list[cnt].counterp = &waitlist->counter;
+ waitlist->list[cnt].sigevp = &waitlist->sigev;
++#ifdef BROKEN_THREAD_SIGNALS
+ waitlist->list[cnt].caller_pid = caller_pid;
++#endif
+ requests[cnt]->waiting = &waitlist->list[cnt];
+ ++total;
+ }
+--- glibc-2.3.2/sysdeps/pthread/lio_listio64.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/pthread/lio_listio64.c 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Enqueue and list of read or write requests, 64bit offset version.
+- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -19,151 +19,14 @@
+ 02111-1307 USA. */
+
+ #include <aio.h>
++#include <assert.h>
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ #include "aio_misc.h"
+
+-
+-/* We need this special structure to handle asynchronous I/O. */
+-struct async_waitlist
+- {
+- int counter;
+- struct sigevent sigev;
+- struct waitlist list[0];
+- };
+-
+-
+-int
+-lio_listio64 (mode, list, nent, sig)
+- int mode;
+- struct aiocb64 *const list[];
+- int nent;
+- struct sigevent *sig;
+-{
+- struct requestlist *requests[nent];
+- int cnt;
+- volatile int total = 0;
+- int result = 0;
+-
+- /* Check arguments. */
+- if (mode != LIO_WAIT && mode != LIO_NOWAIT)
+- {
+- __set_errno (EINVAL);
+- return -1;
+- }
+-
+- /* Request the mutex. */
+- pthread_mutex_lock (&__aio_requests_mutex);
+-
+- /* Now we can enqueue all requests. Since we already acquired the
+- mutex the enqueue function need not do this. */
+- for (cnt = 0; cnt < nent; ++cnt)
+- if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP)
+- {
+- requests[cnt] = __aio_enqueue_request ((aiocb_union *) list[cnt],
+- (list[cnt]->aio_lio_opcode
+- | 128));
+- if (requests[cnt] != NULL)
+- /* Successfully enqueued. */
+- ++total;
+- else
+- /* Signal that we've seen an error. `errno' and the error code
+- of the aiocb will tell more. */
+- result = -1;
+- }
+-
+- if (total == 0)
+- {
+- /* We don't have anything to do except signalling if we work
+- asynchronously. */
+-
+- /* Release the mutex. We do this before raising a signal since the
+- signal handler might do a `siglongjmp' and then the mutex is
+- locked forever. */
+- pthread_mutex_unlock (&__aio_requests_mutex);
+-
+- if (mode == LIO_NOWAIT)
+- __aio_notify_only (sig,
+- sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0);
+-
+- return result;
+- }
+- else if (mode == LIO_WAIT)
+- {
+- pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+- struct waitlist waitlist[nent];
+- int oldstate;
+-
+- total = 0;
+- for (cnt = 0; cnt < nent; ++cnt)
+- if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP
+- && requests[cnt] != NULL)
+- {
+- waitlist[cnt].cond = &cond;
+- waitlist[cnt].next = requests[cnt]->waiting;
+- waitlist[cnt].counterp = &total;
+- waitlist[cnt].sigevp = NULL;
+- waitlist[cnt].caller_pid = 0; /* Not needed. */
+- requests[cnt]->waiting = &waitlist[cnt];
+- ++total;
+- }
+-
+- /* Since `pthread_cond_wait'/`pthread_cond_timedwait' are cancelation
+- points we must be careful. We added entries to the waiting lists
+- which we must remove. So defer cancelation for now. */
+- pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate);
+-
+- while (total > 0)
+- pthread_cond_wait (&cond, &__aio_requests_mutex);
+-
+- /* Now it's time to restore the cancelation state. */
+- pthread_setcancelstate (oldstate, NULL);
+-
+- /* Release the conditional variable. */
+- if (pthread_cond_destroy (&cond) != 0)
+- /* This must never happen. */
+- abort ();
+- }
+- else
+- {
+- struct async_waitlist *waitlist;
+-
+- waitlist = (struct async_waitlist *)
+- malloc (sizeof (struct async_waitlist)
+- + (nent * sizeof (struct waitlist)));
+-
+- if (waitlist == NULL)
+- {
+- __set_errno (EAGAIN);
+- result = -1;
+- }
+- else
+- {
+- pid_t caller_pid = sig->sigev_notify == SIGEV_SIGNAL ? getpid () : 0;
+- total = 0;
+-
+- for (cnt = 0; cnt < nent; ++cnt)
+- if (list[cnt] != NULL && list[cnt]->aio_lio_opcode != LIO_NOP
+- && requests[cnt] != NULL)
+- {
+- waitlist->list[cnt].cond = NULL;
+- waitlist->list[cnt].next = requests[cnt]->waiting;
+- waitlist->list[cnt].counterp = &waitlist->counter;
+- waitlist->list[cnt].sigevp = &waitlist->sigev;
+- waitlist->list[cnt].caller_pid = caller_pid;
+- requests[cnt]->waiting = &waitlist->list[cnt];
+- ++total;
+- }
+-
+- waitlist->counter = total;
+- waitlist->sigev = *sig;
+- }
+- }
+-
+- /* Release the mutex. */
+- pthread_mutex_unlock (&__aio_requests_mutex);
+-
+- return result;
+-}
++#define lio_listio lio_listio64
++#define aiocb aiocb64
++#define LIO_OPCODE_BASE 128
++#include <lio_listio.c>
+--- glibc-2.3.2/sysdeps/s390/Versions 2003-01-28 05:20:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/Versions 2003-04-12 11:39:46.000000000 -0400
+@@ -3,4 +3,3 @@
+ # runtime interface to TLS
+ __tls_get_offset;
+ }
+-}
+\ No newline at end of file
+--- glibc-2.3.2/sysdeps/s390/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/bits/atomic.h 2003-05-12 12:13:08.000000000 -0400
+@@ -0,0 +1,76 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ __typeof (mem) __archmem = (mem); \
++ __typeof (*mem) __archold = (oldval); \
++ __asm __volatile ("cs %0,%2,%1" \
++ : "+d" (__archold), "=Q" (*__archmem) \
++ : "d" (newval), "m" (*__archmem) : "cc" ); \
++ __archold; })
++
++#ifdef __s390x__
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ __typeof (mem) __archmem = (mem); \
++ __typeof (*mem) __archold = (oldval); \
++ __asm __volatile ("csg %0,%2,%1" \
++ : "+d" (__archold), "=Q" (*__archmem) \
++ : "d" ((long) (newval)), "m" (*__archmem) : "cc" ); \
++ __archold; })
++#else
++/* For 31 bit we do not really need 64-bit compare-and-exchange. We can
++ implement them by use of the csd instruction. The straightforward
++ implementation causes warnings so we skip the definition for now. */
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++#endif
+--- glibc-2.3.2/sysdeps/s390/fpu/fegetenv.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/fpu/fegetenv.c 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Store current floating-point environment.
+- Copyright (C) 2000 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
+
+@@ -36,7 +36,7 @@
+ no way to find out the ieee instruction pointer if there was no fault. */
+ _FPU_GETCW (envp->fpc);
+ envp->ieee_instruction_pointer =
+- ptrace (PTRACE_PEEKUSER, getpid (), PT_IEEE_IP);
++ (void *) ptrace (PTRACE_PEEKUSER, getpid (), PT_IEEE_IP);
+
+ /* Success. */
+ return 0;
+--- glibc-2.3.2/sysdeps/s390/fpu/libm-test-ulps 2002-09-04 19:12:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
+@@ -94,7 +94,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -107,10 +107,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -145,7 +145,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -239,7 +239,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -258,7 +258,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -266,7 +266,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -453,12 +453,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -513,7 +513,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/s390/s390-32/atomicity.h 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,76 +0,0 @@
+-/* Low-level functions for atomic operations. S390 version.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-static inline int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- int result;
+- __asm__ __volatile__(
+- " L %0,%2\n"
+- " LA 2,%1\n"
+- "0: LR 0,%0\n"
+- " AR 0,%3\n"
+- " CS %0,0,0(2)\n"
+- " JL 0b"
+- : "=&d" (result), "=m" (*mem)
+- : "1" (*mem), "d" (val) : "0", "1", "2" );
+- return result;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- __asm__ __volatile__(
+- " LA 2,%0\n"
+- "0: L 0,%1\n"
+- " LR 1,0\n"
+- " AR 1,%2\n"
+- " CS 0,1,0(2)\n"
+- " JL 0b"
+- : "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- int retval;
+-
+- __asm__ __volatile__(
+- " la 1,%1\n"
+- " lr 0,%2\n"
+- " cs 0,%3,0(1)\n"
+- " ipm %0\n"
+- " srl %0,28\n"
+- "0:"
+- : "=&r" (retval), "+m" (*p)
+- : "d" (oldval) , "d" (newval)
+- : "memory", "0", "1", "cc");
+- return !retval;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/s390/s390-32/backtrace.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/backtrace.c 2003-04-12 11:39:46.000000000 -0400
+@@ -71,7 +71,7 @@
+ out of range. */
+ break;
+
+- array[cnt++] = stack->save_grps[8];
++ array[cnt++] = stack->save_grps[8] & 0x7fffffff;
+
+ stack = (struct layout *) stack->back_chain;
+ }
+--- glibc-2.3.2/sysdeps/s390/s390-32/dl-machine.h 2003-01-28 05:27:31.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/s390-32/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -376,9 +376,10 @@
+
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+- const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ const Elf32_Sym *sym, const struct r_found_version *version,
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+@@ -404,7 +405,9 @@
+ return;
+ else
+ {
++#ifndef RESOLVE_CONFLICT_FIND_MAP
+ const Elf32_Sym *const refsym = sym;
++#endif
+ #if defined USE_TLS && !defined RTLD_BOOTSTRAP
+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
+ Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
+@@ -424,7 +427,8 @@
+ *reloc_addr = value + reloc->r_addend;
+ break;
+
+-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
++#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
++ && !defined RESOLVE_CONFLICT_FIND_MAP
+ case R_390_TLS_DTPMOD:
+ # ifdef RTLD_BOOTSTRAP
+ /* During startup the dynamic linker is always the module
+@@ -466,6 +470,8 @@
+ #endif /* use TLS */
+
+ #ifndef RTLD_BOOTSTRAP
++# ifndef RESOLVE_CONFLICT_FIND_MAP
++ /* Not needed in dl-conflict.c. */
+ case R_390_COPY:
+ if (sym == NULL)
+ /* This can happen in trace mode if an object could not be
+@@ -483,9 +489,10 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
++# endif
+ case R_390_32:
+ *reloc_addr = value + reloc->r_addend;
+ break;
+@@ -495,6 +502,7 @@
+ case R_390_8:
+ *(char *) reloc_addr = value + reloc->r_addend;
+ break;
++# ifndef RESOLVE_CONFLICT_FIND_MAP
+ case R_390_PC32:
+ *reloc_addr = value + reloc->r_addend - (Elf32_Addr) reloc_addr;
+ break;
+@@ -509,6 +517,7 @@
+ break;
+ case R_390_NONE:
+ break;
++# endif
+ #endif
+ #if !defined(RTLD_BOOTSTRAP) || defined(_NDEBUG)
+ default:
+@@ -523,8 +532,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/s390/s390-32/elf/start.S 2002-12-09 22:41:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/s390-32/elf/start.S 2003-08-21 08:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup code compliant to the ELF s390 ABI.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -66,19 +66,35 @@
+ l %r6,.L2-.Llit(%r13) # load pointer to __libc_csu_fini
+ l %r5,.L1-.Llit(%r13) # load pointer to __libc_csu_init
+ l %r2,.L3-.Llit(%r13) # load pointer to main
++ l %r1,.L4-.Llit(%r13) # load pointer to __libc_start_main
++#ifdef PIC
++ l %r12,.L5-.Llit(%r13) # load .got pointer
++ la %r6,0(%r13,%r6)
++ la %r5,0(%r13,%r5)
++ la %r2,0(%r13,%r2)
++ la %r1,0(%r13,%r1)
++ la %r12,0(%r13,%r12)
++#endif
+
+ /* ok, now branch to the libc main routine */
+- l %r1,.L4-.Llit(%r13)
+ basr %r14,%r1
+
+ /* crash if __libc_start_main returns */
+ .word 0
+
+ .Llit:
++#ifndef PIC
+ .L1: .long __libc_csu_init
+ .L2: .long __libc_csu_fini
+ .L3: .long main
+ .L4: .long __libc_start_main
++#else
++.L1: .long __libc_csu_init-.Llit
++.L2: .long __libc_csu_fini-.Llit
++.L3: .long main-.Llit
++.L4: .long __libc_start_main@plt-.Llit
++.L5: .long _GLOBAL_OFFSET_TABLE_-.Llit
++#endif
+
+ /* FIXME: FPU flags or what ?!? */
+
+--- glibc-2.3.2/sysdeps/s390/s390-32/memchr.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/memchr.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Search a character in a block of memory. For IBM S390
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+@@ -39,3 +39,4 @@
+ slr %r2,%r2
+ 1: br %r14
+ END(memchr)
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/s390/s390-32/memcpy.S 2001-08-02 19:39:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/memcpy.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* memcpy - copy a block from source to destination. S/390 version.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+@@ -56,4 +56,4 @@
+ lr %r2,%r1 # return destination address
+ br %r14
+ END(memcpy)
+-
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/s390/s390-32/memset.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/memset.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Set a block of memory to some byte value. For IBM S390
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+@@ -42,3 +42,4 @@
+ .L1:
+ br %r14
+ END(memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/s390/s390-32/strcmp.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/strcmp.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strcmp - compare two string. S/390 version.
+ This file is part of the GNU C Library.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,3 +39,4 @@
+ 2: lhi %r2,-1
+ br %r14
+ END(strcmp)
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/s390/s390-32/strcpy.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/strcpy.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strcpy - copy a string from source to destination. For IBM S390
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -34,3 +34,4 @@
+ jo 0b
+ br %r14
+ END(strcpy)
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/s390/s390-32/strncpy.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-32/strncpy.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strncpy - copy at most n characters from a string from source to
+ destination. For IBM S390
+ This file is part of the GNU C Library.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -77,3 +77,4 @@
+ .Lexit: l %r2,24(%r15) # return dst pointer
+ br %r14
+ END(strncpy)
++libc_hidden_builtin_def (strncpy)
+--- glibc-2.3.2/sysdeps/s390/s390-32/sysdep.h 2003-01-13 20:04:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/s390-32/sysdep.h 2003-03-15 15:02:17.000000000 -0500
+@@ -111,7 +111,7 @@
+
+ /* Local label name for asm code. */
+ #ifndef L
+-#define L(name) name
++#define L(name) .L##name
+ #endif
+
+ #endif /* __ASSEMBLER__ */
+--- glibc-2.3.2/sysdeps/s390/s390-64/atomicity.h 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,76 +0,0 @@
+-/* Low-level functions for atomic operations. 64 bit S/390 version.
+- Copyright (C) 2001 Free Software Foundation, Inc.
+- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-static inline int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- int result;
+- __asm__ __volatile__(
+- " L %0,%2\n"
+- " LA 2,%1\n"
+- "0: LR 0,%0\n"
+- " AR 0,%3\n"
+- " CS %0,0,0(2)\n"
+- " JL 0b"
+- : "=&d" (result), "=m" (*mem)
+- : "1" (*mem), "d" (val) : "0", "1", "2" );
+- return result;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- __asm__ __volatile__(
+- " LA 2,%0\n"
+- "0: L 0,%1\n"
+- " LR 1,0\n"
+- " AR 1,%2\n"
+- " CS 0,1,0(2)\n"
+- " JL 0b"
+- : "=m" (*mem) : "0" (*mem), "d" (val) : "0", "1", "2" );
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- int retval;
+-
+- __asm__ __volatile__(
+- " la 1,%1\n"
+- " lgr 0,%2\n"
+- " csg 0,%3,0(1)\n"
+- " ipm %0\n"
+- " srl %0,28\n"
+- "0:"
+- : "=&r" (retval), "+m" (*p)
+- : "d" (oldval) , "d" (newval)
+- : "memory", "0", "1", "cc");
+- return !retval;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/s390/s390-64/backtrace.c 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/backtrace.c 2003-05-12 12:13:08.000000000 -0400
+@@ -70,7 +70,7 @@
+ out of range. */
+ break;
+
+- array[cnt++] = stack->save_grps[8];
++ array[cnt++] = (void *) stack->save_grps[8];
+
+ stack = (struct layout *) stack->back_chain;
+ }
+--- glibc-2.3.2/sysdeps/s390/s390-64/dl-machine.h 2003-01-28 05:28:21.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/s390-64/dl-machine.h 2003-08-21 08:37:09.000000000 -0400
+@@ -344,9 +344,10 @@
+
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
+- const Elf64_Sym *sym, const struct r_found_version *version,
+- Elf64_Addr *const reloc_addr)
++ const Elf64_Sym *sym, const struct r_found_version *version,
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+@@ -372,7 +373,9 @@
+ return;
+ else
+ {
++#ifndef RESOLVE_CONFLICT_FIND_MAP
+ const Elf64_Sym *const refsym = sym;
++#endif
+ #if defined USE_TLS && !defined RTLD_BOOTSTRAP
+ struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
+ Elf64_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
+@@ -392,7 +395,8 @@
+ *reloc_addr = value + reloc->r_addend;
+ break;
+
+-#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
++#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
++ && !defined RESOLVE_CONFLICT_FIND_MAP
+ case R_390_TLS_DTPMOD:
+ # ifdef RTLD_BOOTSTRAP
+ /* During startup the dynamic linker is always the module
+@@ -434,6 +438,8 @@
+ #endif /* use TLS */
+
+ #ifndef RTLD_BOOTSTRAP
++# ifndef RESOLVE_CONFLICT_FIND_MAP
++ /* Not needed for dl-conflict.c. */
+ case R_390_COPY:
+ if (sym == NULL)
+ /* This can happen in trace mode if an object could not be
+@@ -451,9 +457,10 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
++# endif
+ case R_390_64:
+ *reloc_addr = value + reloc->r_addend;
+ break;
+@@ -466,6 +473,7 @@
+ case R_390_8:
+ *(char *) reloc_addr = value + reloc->r_addend;
+ break;
++# ifndef RESOLVE_CONFLICT_FIND_MAP
+ case R_390_PC64:
+ *reloc_addr = value +reloc->r_addend - (Elf64_Addr) reloc_addr;
+ break;
+@@ -489,6 +497,7 @@
+ break;
+ case R_390_NONE:
+ break;
++# endif
+ #endif
+ #if !defined(RTLD_BOOTSTRAP) || defined(_NDEBUG)
+ default:
+@@ -503,8 +512,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/s390/s390-64/elf/start.S 2002-12-09 22:41:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/s390-64/elf/start.S 2003-08-21 08:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup code compliant to the 64 bit S/390 ELF ABI.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -64,7 +64,11 @@
+ larl %r2,main # load pointer to main
+
+ /* Ok, now branch to the libc main routine. */
++#ifdef PIC
++ brasl %r14,__libc_start_main@plt
++#else
+ brasl %r14,__libc_start_main
++#endif
+
+ /* Crash if __libc_start_main returns. */
+ .word 0
+--- glibc-2.3.2/sysdeps/s390/s390-64/memchr.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/memchr.S 2003-05-12 12:13:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Search a character in a block of memory. 64 bit S/390 version.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -38,3 +38,4 @@
+ slgr %r2,%r2
+ 1: br %r14
+ END(memchr)
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/s390/s390-64/memcpy.S 2001-08-02 19:39:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/memcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* memcpy - copy a block from source to destination. 64 bit S/390 version.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+@@ -55,4 +55,4 @@
+ lgr %r2,%r1 # return destination address
+ br %r14
+ END(memcpy)
+-
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/s390/s390-64/memset.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/memset.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Set a block of memory to some byte value. 64 bit S/390 version.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -41,3 +41,4 @@
+ .L1:
+ br %r14
+ END(memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/s390/s390-64/strcmp.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/strcmp.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strcmp - compare two string. 64 bit S/390 version.
+ This file is part of the GNU C Library.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -39,3 +39,4 @@
+ 2: lghi %r2,-1
+ br %r14
+ END(strcmp)
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/s390/s390-64/strcpy.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/strcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* strcpy - copy a string from source to destination. 64 bit S/390 version.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -33,3 +33,4 @@
+ jo 0b
+ br %r14
+ END(strcpy)
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/s390/s390-64/strncpy.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/s390/s390-64/strncpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strncpy - copy at most n characters from a string from source to
+ destination. 64 bit S/390 version
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -88,3 +88,4 @@
+ .Lexit: lg %r2,48(%r15) # return dst pointer
+ br %r14
+ END(strncpy)
++libc_hidden_builtin_def (strncpy)
+--- glibc-2.3.2/sysdeps/s390/s390-64/sysdep.h 2003-01-13 20:04:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/s390/s390-64/sysdep.h 2003-03-15 15:02:17.000000000 -0500
+@@ -66,7 +66,7 @@
+ #else
+ #define CALL_MCOUNT \
+ lgr 0,14 ; larl 1,0f ; brasl 14,_mcount ; lgr 14,0 ; \
+- .data ; .align 4 ; 0: .long 0 ; .text ;
++ .data ; .align 4 ; 0: .long 0 ; .text ;
+ #endif
+ #else
+ #define CALL_MCOUNT /* Do nothing. */
+@@ -104,8 +104,7 @@
+
+ /* Local label name for asm code. */
+ #ifndef L
+-#define L(name) name
++#define L(name) .L##name
+ #endif
+
+ #endif /* __ASSEMBLER__ */
+-
+--- glibc-2.3.2/sysdeps/sh/bits/setjmp.h 2002-11-05 19:40:03.000000000 -0500
++++ glibc-2.3.2/sysdeps/sh/bits/setjmp.h 2003-04-12 11:39:46.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,8 +17,10 @@
+ 02111-1307 USA. */
+
+ /* Define the machine-dependent type `jmp_buf'. SH version. */
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
+
+-#ifndef _SETJMP_H
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -43,10 +45,12 @@
+ #endif
+
+ #if defined __USE_MISC || defined _ASM
+-#define JB_SIZE (4 * 15)
++# define JB_SIZE (4 * 15)
+ #endif
+
+ /* Test if longjmp to JMPBUF would unwind the frame
+ containing a local variable at ADDRESS. */
+ #define _JMPBUF_UNWINDS(jmpbuf, address) \
+ ((void *) (address) < &(jmpbuf)[0].__regs[7])
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/sh/dl-machine.h 2003-01-12 03:37:35.000000000 -0500
++++ glibc-2.3.2/sysdeps/sh/dl-machine.h 2003-08-21 08:37:10.000000000 -0400
+@@ -456,15 +456,16 @@
+
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+- const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ const Elf32_Sym *sym, const struct r_found_version *version,
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+ Elf32_Addr value;
+
+-#define COPY_UNALIGNED_WORD(sw, tw, align) \
++#define COPY_UNALIGNED_WORD(swp, twp, align) \
+ { \
+- void *__s = &(sw), *__t = &(tw); \
++ void *__s = (swp), *__t = (twp); \
+ switch ((align)) \
+ { \
+ case 0: \
+@@ -493,10 +494,12 @@
+ value = map->l_addr + reloc->r_addend;
+ else
+ {
+- COPY_UNALIGNED_WORD (*reloc_addr, value, (int) reloc_addr & 3);
++ COPY_UNALIGNED_WORD (reloc_addr_arg, &value,
++ (int) reloc_addr_arg & 3);
+ value += map->l_addr;
+ }
+- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg,
++ (int) reloc_addr_arg & 3);
+ }
+ }
+ #ifndef RTLD_BOOTSTRAP
+@@ -538,8 +541,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ case R_SH_GLOB_DAT:
+ case R_SH_JMP_SLOT:
+@@ -606,12 +609,14 @@
+ used while loading those libraries. */
+ value -= map->l_addr + refsym->st_value + reloc->r_addend;
+ #endif
+- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg,
++ (int) reloc_addr_arg & 3);
+ break;
+ }
+ case R_SH_REL32:
+ value = (value - (Elf32_Addr) reloc_addr);
+- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg,
++ (int) reloc_addr_arg & 3);
+ break;
+ default:
+ _dl_reloc_bad_type (map, r_type, 0);
+@@ -622,18 +627,19 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ Elf32_Addr value;
+
+ if (reloc->r_addend)
+ value = l_addr + reloc->r_addend;
+ else
+ {
+- COPY_UNALIGNED_WORD (*reloc_addr, value, (int) reloc_addr & 3);
++ COPY_UNALIGNED_WORD (reloc_addr_arg, &value, (int) reloc_addr_arg & 3);
+ value += l_addr;
+ }
+- COPY_UNALIGNED_WORD (value, *reloc_addr, (int) reloc_addr & 3);
++ COPY_UNALIGNED_WORD (&value, reloc_addr_arg, (int) reloc_addr_arg & 3);
+
+ #undef COPY_UNALIGNED_WORD
+ }
+--- glibc-2.3.2/sysdeps/sh/memcpy.S 2003-01-03 04:53:33.000000000 -0500
++++ glibc-2.3.2/sysdeps/sh/memcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
+ Optimized by Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
+@@ -197,3 +197,4 @@
+ rts
+ mov r3,r0 /* Return destination. */
+ END(memcpy)
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/sh/memset.S 2003-01-03 04:53:33.000000000 -0500
++++ glibc-2.3.2/sysdeps/sh/memset.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
+ Optimized by Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
+@@ -85,3 +85,4 @@
+ rts
+ mov r7,r0
+ END(memset)
++libc_hidden_builtin_def (memset)
+--- glibc-2.3.2/sysdeps/sh/sh4/fpu/libm-test-ulps 2001-04-22 00:53:11.000000000 -0400
++++ glibc-2.3.2/sysdeps/sh/sh4/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
+@@ -145,7 +145,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
+@@ -156,10 +156,10 @@
+ idouble: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
+@@ -198,7 +198,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -291,7 +291,7 @@
+ ifloat: 1
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
+@@ -318,7 +318,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
+@@ -331,7 +331,7 @@
+ ifloat: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -520,12 +520,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -615,7 +615,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/sh/strlen.S 2001-07-07 15:21:28.000000000 -0400
++++ glibc-2.3.2/sysdeps/sh/strlen.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
+
+@@ -82,3 +82,4 @@
+ rts
+ mov r2, r0
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/atomicity.h 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc32/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,98 +0,0 @@
+-/* Low-level functions for atomic operations. Sparc32 version.
+- Copyright (C) 1999 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-static int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- static unsigned char lock;
+- int result, tmp;
+-
+- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
+- " cmp %0, 0\n\t"
+- " bne 1b\n\t"
+- " nop"
+- : "=&r" (tmp)
+- : "r" (&lock)
+- : "memory");
+- result = *mem;
+- *mem += val;
+- __asm__ __volatile__("stb %%g0, [%0]"
+- : /* no outputs */
+- : "r" (&lock)
+- : "memory");
+- return result;
+-}
+-
+-static void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- static unsigned char lock;
+- int tmp;
+-
+- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
+- " cmp %0, 0\n\t"
+- " bne 1b\n\t"
+- " nop"
+- : "=&r" (tmp)
+- : "r" (&lock)
+- : "memory");
+- *mem += val;
+- __asm__ __volatile__("stb %%g0, [%0]"
+- : /* no outputs */
+- : "r" (&lock)
+- : "memory");
+-}
+-
+-static int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- static unsigned char lock;
+- int ret, tmp;
+-
+- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
+- " cmp %0, 0\n\t"
+- " bne 1b\n\t"
+- " nop"
+- : "=&r" (tmp)
+- : "r" (&lock)
+- : "memory");
+- if (*p != oldval)
+- ret = 0;
+- else
+- {
+- *p = newval;
+- ret = 1;
+- }
+- __asm__ __volatile__("stb %%g0, [%0]"
+- : /* no outputs */
+- : "r" (&lock)
+- : "memory");
+-
+- return ret;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/sparc/sparc32/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/bits/atomic.h 2003-08-21 08:37:10.000000000 -0400
+@@ -0,0 +1,81 @@
++/* Atomic operations. sparc32 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_ATOMIC_H
++#define _BITS_ATOMIC_H 1
++
++/* We have no compare and swap, just test and set.
++ The following implementation contends on 64 global locks
++ per library and assumes no variable will be accessed using atomic.h
++ macros from two different libraries. */
++
++volatile unsigned char __sparc32_atomic_locks[64]
++ __attribute__ ((nocommon, section (".gnu.linkonce.b.__sparc32_atomic_locks"),
++ visibility ("hidden")));
++
++#define __sparc32_atomic_do_lock(addr) \
++ do \
++ { \
++ unsigned int __old_lock; \
++ unsigned int __idx = (((long) addr >> 2) ^ ((long) addr >> 12)) \
++ & 63; \
++ do \
++ __asm ("ldstub %1, %0" \
++ : "=r" (__old_lock), \
++ "=m" (__sparc32_atomic_locks[__idx]) \
++ : "m" (__sparc32_atomic_locks[__idx])); \
++ while (__old_lock); \
++ } \
++ while (0)
++
++#define __sparc32_atomic_do_unlock(addr) \
++ do \
++ __sparc32_atomic_locks[(((long) addr >> 2) \
++ ^ ((long) addr >> 12)) & 63] = 0; \
++ while (0)
++
++/* The only basic operation needed is compare and exchange. */
++#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
++ ({ __typeof (mem) __acev_memp = (mem); \
++ __typeof (*mem) __acev_ret; \
++ __typeof (*mem) __acev_newval = (newval); \
++ \
++ __sparc32_atomic_do_lock (__acev_memp); \
++ __acev_ret = *__acev_memp; \
++ if (__acev_ret == (oldval)) \
++ *__acev_memp = __acev_newval; \
++ __sparc32_atomic_do_unlock (__acev_memp); \
++ __acev_ret; })
++
++#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
++ ({ __typeof (mem) __aceb_memp = (mem); \
++ int __aceb_ret; \
++ __typeof (*mem) __aceb_newval = (newval); \
++ \
++ __sparc32_atomic_do_lock (__aceb_memp); \
++ __aceb_ret = 0; \
++ if (*__aceb_memp == (oldval)) \
++ *__aceb_memp = __aceb_newval; \
++ else \
++ __aceb_ret = 1; \
++ __sparc32_atomic_do_unlock (__aceb_memp); \
++ __aceb_ret; })
++
++#endif /* bits/atomic.h */
+--- glibc-2.3.2/sysdeps/sparc/sparc32/dl-machine.h 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/dl-machine.h 2003-08-21 08:37:10.000000000 -0400
+@@ -40,12 +40,6 @@
+ #define OPCODE_SAVE_SP 0x9de3bfa8 /* save %sp, -(16+6)*4, %sp */
+ #define OPCODE_BA 0x30800000 /* b,a ?; add PC-rel word address */
+
+-/* Protect some broken versions of gcc from misinterpreting weak addresses. */
+-#define WEAKADDR(x) ({ __typeof(x) *_px = &x; \
+- __asm ("" : "=r" (_px) : "0" (_px)); \
+- _px; })
+-
+-
+ /* Use a different preload file when running in 32-bit emulation mode
+ on a 64-bit host. */
+ #define LD_SO_PRELOAD ((GL(dl_hwcap) & HWCAP_SPARC_V9) \
+@@ -61,16 +55,13 @@
+ return 1;
+ else if (ehdr->e_machine == EM_SPARC32PLUS)
+ {
+- unsigned long *hwcap;
+-#ifndef SHARED
+- weak_extern (_dl_hwcap);
+- weak_extern (_dl_hwcap_mask);
+-#endif
+-
+- hwcap = WEAKADDR (GL(dl_hwcap));
+ /* XXX The following is wrong! Dave Miller rejected to implement it
+ correctly. If this causes problems shoot *him*! */
+- return hwcap == NULL || (*hwcap & GL(dl_hwcap_mask) & HWCAP_SPARC_V9);
++#ifdef SHARED
++ return GL(dl_hwcap) & GL(dl_hwcap_mask) & HWCAP_SPARC_V9;
++#else
++ return GL(dl_hwcap) & HWCAP_SPARC_V9;
++#endif
+ }
+ else
+ return 0;
+@@ -170,17 +161,12 @@
+ || __builtin_expect (l->l_info [VALIDX (DT_GNU_LIBLISTSZ)] != NULL, 0))
+ {
+ /* Need to reinitialize .plt to undo prelinking. */
+- unsigned long *hwcap;
+ int do_flush;
+ Elf32_Rela *rela = (Elf32_Rela *) D_PTR (l, l_info[DT_JMPREL]);
+ Elf32_Rela *relaend
+ = (Elf32_Rela *) ((char *) rela
+ + l->l_info[DT_PLTRELSZ]->d_un.d_val);
+-#ifndef SHARED
+- weak_extern (_dl_hwcap);
+-#endif
+- hwcap = WEAKADDR (GL(dl_hwcap));
+- do_flush = (!hwcap || (*hwcap & HWCAP_SPARC_FLUSH));
++ do_flush = GL(dl_hwcap) & HWCAP_SPARC_FLUSH;
+
+ /* prelink must ensure there are no R_SPARC_NONE relocs left
+ in .rela.plt. */
+@@ -367,13 +353,7 @@
+ #ifndef RTLD_BOOTSTRAP
+ /* Note that we don't mask the hwcap here, as the flush is essential to
+ functionality on those cpu's that implement it. */
+- unsigned long *hwcap;
+- int do_flush;
+-# ifndef SHARED
+- weak_extern (_dl_hwcap);
+-# endif
+- hwcap = WEAKADDR (GL(dl_hwcap));
+- do_flush = (!hwcap || (*hwcap & HWCAP_SPARC_FLUSH));
++ int do_flush = GL(dl_hwcap) & HWCAP_SPARC_FLUSH;
+ #else
+ /* Unfortunately, this is necessary, so that we can ensure
+ ld.so will not execute corrupt PLT entry instructions. */
+@@ -435,8 +415,9 @@
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
+@@ -510,8 +491,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ #endif
+ case R_SPARC_GLOB_DAT:
+@@ -587,14 +568,14 @@
+ *reloc_addr = (*reloc_addr & 0xffc00000) | (value >> 10);
+ break;
+ case R_SPARC_UA16:
+- ((unsigned char *) reloc_addr) [0] = value >> 8;
+- ((unsigned char *) reloc_addr) [1] = value;
++ ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
++ ((unsigned char *) reloc_addr_arg) [1] = value;
+ break;
+ case R_SPARC_UA32:
+- ((unsigned char *) reloc_addr) [0] = value >> 24;
+- ((unsigned char *) reloc_addr) [1] = value >> 16;
+- ((unsigned char *) reloc_addr) [2] = value >> 8;
+- ((unsigned char *) reloc_addr) [3] = value;
++ ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
++ ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
++ ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
++ ((unsigned char *) reloc_addr_arg) [3] = value;
+ break;
+ #endif
+ case R_SPARC_NONE: /* Alright, Wilbur. */
+@@ -610,8 +591,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+- Elf32_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf32_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr += l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure 2003-02-21 01:27:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure 2003-08-21 08:37:10.000000000 -0400
+@@ -29,7 +29,7 @@
+ add %o0, %l1, %l1, %tldo_add(bar)
+ sethi %tie_hi22(foo), %l1
+ add %l1, %tie_lo10(foo), %l1
+- ld %l7 + %l1, %l1, %tie_ld(foo)
++ ld [%l7 + %l1], %l1, %tie_ld(foo)
+ add %g7, %l1, %l1, %tie_add(foo)
+ sethi %tle_hix22(foo), %l1
+ xor %l1, %tle_lox10(foo), %l1
+--- glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure.in 2003-02-04 03:35:22.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/elf/configure.in 2003-08-21 08:37:10.000000000 -0400
+@@ -4,6 +4,7 @@
+ if test "$usetls" != no; then
+ # Check for support of thread-local storage handling in assembler and linker.
+ AC_CACHE_CHECK(for sparc32 TLS support, libc_cv_sparc32_tls, [dnl
++changequote(,)dnl
+ cat > conftest.s <<\EOF
+ .section ".tdata", "awT", @progbits
+ .globl foo
+@@ -30,6 +31,7 @@
+ sethi %tle_hix22(foo), %l1
+ xor %l1, %tle_lox10(foo), %l1
+ EOF
++changequote([,])dnl
+ dnl
+ if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+ libc_cv_sparc32_tls=yes
+--- glibc-2.3.2/sysdeps/sparc/sparc32/fpu/libm-test-ulps 2002-09-17 12:46:01.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc32/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
+@@ -94,7 +94,7 @@
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+@@ -107,10 +107,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+ Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+@@ -145,7 +145,7 @@
+ Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -239,7 +239,7 @@
+ ifloat: 2
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+@@ -258,7 +258,7 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+@@ -266,7 +266,7 @@
+ idouble: 1
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -453,12 +453,12 @@
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -513,7 +513,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/sparc/sparc32/memchr.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/memchr.S 2003-05-12 12:13:09.000000000 -0400
+@@ -144,3 +144,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/memcpy.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/memcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -966,3 +966,5 @@
+ 110: retl
+ sub %o7, %g6, %o5
+ END(memcpy)
++libc_hidden_builtin_def (memcpy)
++libc_hidden_builtin_def (memmove)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/memset.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc32/memset.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Set a block of memory to some byte value.
+ For SPARC v7.
+- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David S. Miller <davem@caip.rutgers.edu> and
+ Jakub Jelinek <jj@ultra.linux.cz>.
+@@ -150,5 +150,6 @@
+ 0: retl
+ nop
+ END(memset)
++libc_hidden_builtin_def (memset)
+
+ weak_alias(__bzero, bzero)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/atomicity.h 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,82 +0,0 @@
+-/* Low-level functions for atomic operations. Sparc32+v9 version.
+- Copyright (C) 1999 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-static inline int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- uint32_t tmp1, tmp2;
+-
+- __asm__ __volatile__("1: lduw [%2], %0\n\t"
+- " add %0, %3, %1\n\t"
+- " cas [%2], %0, %1\n\t"
+- " sub %0, %1, %0\n\t"
+- " brnz,pn %0, 1b\n\t"
+- " nop"
+- : "=&r" (tmp1), "=&r" (tmp2)
+- : "r" (mem), "r" (val)
+- : "memory");
+- return tmp2;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- uint32_t tmp1, tmp2;
+-
+- __asm__ __volatile__("1: lduw [%2], %0\n\t"
+- " add %0, %3, %1\n\t"
+- " cas [%2], %0, %1\n\t"
+- " sub %0, %1, %0\n\t"
+- " brnz,pn %0, 1b\n\t"
+- " nop"
+- : "=&r" (tmp1), "=&r" (tmp2)
+- : "r" (mem), "r" (val)
+- : "memory");
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- register long int tmp, tmp2;
+-
+- __asm__ __volatile__("1: lduw [%4], %0\n\t"
+- " mov %2, %1\n\t"
+- " cmp %0, %3\n\t"
+- " bne,a,pn %%xcc, 2f\n\t"
+- " mov 0, %0\n\t"
+- " cas [%4], %0, %1\n\t"
+- " sub %0, %1, %0\n\t"
+- " brnz,pn %0, 1b\n\t"
+- " mov 1, %0\n\t"
+- "2:"
+- : "=&r" (tmp), "=&r" (tmp2)
+- : "r" (newval), "r" (oldval), "r" (p)
+- : "memory");
+- return tmp;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h 2003-05-12 12:13:09.000000000 -0400
+@@ -0,0 +1,88 @@
++/* Atomic operations. sparcv9 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++({ \
++ __typeof (*(mem)) __acev_tmp; \
++ __typeof (mem) __acev_mem = (mem); \
++ __asm __volatile ("cas [%4], %2, %0" \
++ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
++ : "r" (oldval), "m" (*__acev_mem), "r" (__acev_mem), \
++ "0" (newval)); \
++ __acev_tmp; })
++
++/* This can be implemented if needed. */
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define atomic_exchange_acq(mem, newvalue) \
++ ({ __typeof (*(mem)) __oldval; \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __value = (newvalue); \
++ \
++ if (sizeof (*(mem)) == 4) \
++ __asm ("swap %0, %1" \
++ : "=m" (*__memp), "=r" (__oldval) \
++ : "m" (*__memp), "1" (__value)); \
++ else \
++ abort (); \
++ __oldval; })
++
++#define atomic_full_barrier() \
++ __asm __volatile ("membar #LoadLoad | #LoadStore" \
++ " | #StoreLoad | #StoreStore" : : : "memory")
++#define atomic_read_barrier() \
++ __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
++#define atomic_write_barrier() \
++ __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
+--- glibc-2.3.2/sysdeps/sparc/sparc32/strcat.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/strcat.S 2003-05-12 12:13:09.000000000 -0400
+@@ -346,3 +346,4 @@
+ retl
+ mov %g2, %o0
+ END(strcat)
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/strchr.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/strchr.S 2003-05-12 12:13:09.000000000 -0400
+@@ -280,3 +280,5 @@
+
+ weak_alias(strchr, index)
+ weak_alias(strrchr, rindex)
++libc_hidden_builtin_def (strchr)
++libc_hidden_builtin_def (strrchr)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/strcmp.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/strcmp.S 2003-05-12 12:13:09.000000000 -0400
+@@ -255,3 +255,4 @@
+ jmpl %i7 + 8, %g0
+ restore %g4, %g0, %o0
+ END(strcmp)
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/strcpy.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc32/strcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -272,3 +272,4 @@
+ retl
+ mov %g2, %o0
+ END(strcpy)
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/sparc/sparc32/strlen.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc32/strlen.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Determine the length of a string.
+ For SPARC v7.
+- Copyright (C) 1996, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
+
+@@ -101,3 +101,4 @@
+ 13: retl
+ sub %o4, %o1, %o0
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/atomicity.h 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,82 +0,0 @@
+-/* Low-level functions for atomic operations. Sparc64 version.
+- Copyright (C) 1999 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-static inline int
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, int val)
+-{
+- uint32_t tmp1, tmp2;
+-
+- __asm__ __volatile__("1: lduw [%2], %0\n\t"
+- " add %0, %3, %1\n\t"
+- " cas [%2], %0, %1\n\t"
+- " sub %0, %1, %0\n\t"
+- " brnz,pn %0, 1b\n\t"
+- " nop"
+- : "=&r" (tmp1), "=&r" (tmp2)
+- : "r" (mem), "r" (val)
+- : "memory");
+- return tmp2;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- uint32_t tmp1, tmp2;
+-
+- __asm__ __volatile__("1: lduw [%2], %0\n\t"
+- " add %0, %3, %1\n\t"
+- " cas [%2], %0, %1\n\t"
+- " sub %0, %1, %0\n\t"
+- " brnz,pn %0, 1b\n\t"
+- " nop"
+- : "=&r" (tmp1), "=&r" (tmp2)
+- : "r" (mem), "r" (val)
+- : "memory");
+-}
+-
+-static inline int
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- register long int tmp, tmp2;
+-
+- __asm__ __volatile__("1: ldx [%4], %0\n\t"
+- " mov %2, %1\n\t"
+- " cmp %0, %3\n\t"
+- " bne,a,pn %%xcc, 2f\n\t"
+- " mov 0, %0\n\t"
+- " casx [%4], %0, %1\n\t"
+- " sub %0, %1, %0\n\t"
+- " brnz,pn %0, 1b\n\t"
+- " mov 1, %0\n\t"
+- "2:"
+- : "=&r" (tmp), "=&r" (tmp2)
+- : "r" (newval), "r" (oldval), "r" (p)
+- : "memory");
+- return tmp;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/sparc/sparc64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/bits/atomic.h 2003-05-12 12:13:09.000000000 -0400
+@@ -0,0 +1,103 @@
++/* Atomic operations. sparc64 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++({ \
++ __typeof (*(mem)) __acev_tmp; \
++ __typeof (mem) __acev_mem = (mem); \
++ __asm __volatile ("cas [%4], %2, %0" \
++ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
++ : "r" (oldval), "m" (*__acev_mem), "r" (__acev_mem), \
++ "0" (newval)); \
++ __acev_tmp; })
++
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++({ \
++ __typeof (*(mem)) __acev_tmp; \
++ __typeof (mem) __acev_mem = (mem); \
++ __asm __volatile ("casx [%4], %2, %0" \
++ : "=r" (__acev_tmp), "=m" (*__acev_mem) \
++ : "r" ((long) (oldval)), "m" (*__acev_mem), \
++ "r" (__acev_mem), "0" ((long) (newval))); \
++ __acev_tmp; })
++
++#define atomic_exchange_acq(mem, newvalue) \
++ ({ __typeof (*(mem)) __oldval, __val; \
++ __typeof (mem) __memp = (mem); \
++ __typeof (*(mem)) __value = (newvalue); \
++ \
++ if (sizeof (*(mem)) == 4) \
++ __asm ("swap %0, %1" \
++ : "=m" (*__memp), "=r" (__oldval) \
++ : "m" (*__memp), "1" (__value)); \
++ else \
++ { \
++ __val = *__memp; \
++ do \
++ { \
++ __oldval = __val; \
++ __val = atomic_compare_and_exchange_val_acq (__memp, __value, \
++ __oldval); \
++ } \
++ while (__builtin_expect (__val != __oldval, 0)); \
++ } \
++ __oldval; })
++
++#define atomic_full_barrier() \
++ __asm __volatile ("membar #LoadLoad | #LoadStore" \
++ " | #StoreLoad | #StoreStore" : : : "memory")
++#define atomic_read_barrier() \
++ __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
++#define atomic_write_barrier() \
++ __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
+--- glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h 2002-09-27 23:35:31.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h 2003-08-21 08:37:10.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* Machine-dependent ELF dynamic relocation inline functions. Sparc64 version.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2001,2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -240,8 +241,9 @@
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
+ const Elf64_Sym *sym, const struct r_found_version *version,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned long int r_type = ELF64_R_TYPE_ID (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+@@ -292,8 +294,8 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
+ #endif
+ case R_SPARC_64:
+@@ -392,31 +394,31 @@
+ break;
+ #ifndef RTLD_BOOTSTRAP
+ case R_SPARC_UA16:
+- ((unsigned char *) reloc_addr) [0] = value >> 8;
+- ((unsigned char *) reloc_addr) [1] = value;
++ ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
++ ((unsigned char *) reloc_addr_arg) [1] = value;
+ break;
+ case R_SPARC_UA32:
+- ((unsigned char *) reloc_addr) [0] = value >> 24;
+- ((unsigned char *) reloc_addr) [1] = value >> 16;
+- ((unsigned char *) reloc_addr) [2] = value >> 8;
+- ((unsigned char *) reloc_addr) [3] = value;
++ ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
++ ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
++ ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
++ ((unsigned char *) reloc_addr_arg) [3] = value;
+ break;
+ case R_SPARC_UA64:
+- if (! ((long) reloc_addr & 3))
++ if (! ((long) reloc_addr_arg & 3))
+ {
+ /* Common in .eh_frame */
+- ((unsigned int *) reloc_addr) [0] = value >> 32;
+- ((unsigned int *) reloc_addr) [1] = value;
++ ((unsigned int *) reloc_addr_arg) [0] = value >> 32;
++ ((unsigned int *) reloc_addr_arg) [1] = value;
+ break;
+ }
+- ((unsigned char *) reloc_addr) [0] = value >> 56;
+- ((unsigned char *) reloc_addr) [1] = value >> 48;
+- ((unsigned char *) reloc_addr) [2] = value >> 40;
+- ((unsigned char *) reloc_addr) [3] = value >> 32;
+- ((unsigned char *) reloc_addr) [4] = value >> 24;
+- ((unsigned char *) reloc_addr) [5] = value >> 16;
+- ((unsigned char *) reloc_addr) [6] = value >> 8;
+- ((unsigned char *) reloc_addr) [7] = value;
++ ((unsigned char *) reloc_addr_arg) [0] = value >> 56;
++ ((unsigned char *) reloc_addr_arg) [1] = value >> 48;
++ ((unsigned char *) reloc_addr_arg) [2] = value >> 40;
++ ((unsigned char *) reloc_addr_arg) [3] = value >> 32;
++ ((unsigned char *) reloc_addr_arg) [4] = value >> 24;
++ ((unsigned char *) reloc_addr_arg) [5] = value >> 16;
++ ((unsigned char *) reloc_addr_arg) [6] = value >> 8;
++ ((unsigned char *) reloc_addr_arg) [7] = value;
+ break;
+ #endif
+ #if !defined RTLD_BOOTSTRAP || defined _NDEBUG
+@@ -430,8 +432,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+
+--- glibc-2.3.2/sysdeps/sparc/sparc64/fpu/libm-test-ulps 2001-09-30 19:31:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/fpu/libm-test-ulps 2003-04-12 11:39:46.000000000 -0400
+@@ -1,85 +1,31 @@
+-
+ # Begin of automatic generation
+
+-# acos
+-Test "acos (0.7) == 0.79539883018414355549096833892476432":
+-ldouble: 1
+-ildouble: 1
+-
+-# asin
+-Test "asin (-0.5) == -pi/6":
+-float: 2
+-ifloat: 2
+-Test "asin (0.5) == pi/6":
+-float: 2
+-ifloat: 2
+-Test "asin (0.7) == 0.77539749661075306374035335271498708":
+-double: 1
+-float: 2
+-idouble: 1
+-ifloat: 2
+-
+-# atan
+-Test "atan (0.7) == 0.61072596438920861654375887649023613":
+-ildouble: 1
+-ldouble: 1
+-
+-# atanh
+-Test "atanh (0.7) == 0.8673005276940531944":
+-double: 1
+-idouble: 1
+-
+ # atan2
+-Test "atan2 (0.4, 0.0003) == 1.5700463269355215717704032607580829":
++Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
++float: 3
++ifloat: 3
+ ildouble: 1
+ ldouble: 1
+-Test "atan2 (0.7, 1) == 0.61072596438920861654375887649023613":
++Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
++float: 3
++ifloat: 3
+ ildouble: 1
+ ldouble: 1
+-Test "atan2 (-0.7, 1.0) == -0.61072596438920861654375887649023613":
++Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
+-float: 3
+-ifloat: 3
+-Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
+-float: 3
+-ifloat: 3
+-Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
+-float: 4
+-ifloat: 4
+
+-# cabs
+-Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
+-float: 1
+-ifloat: 1
+-Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
+-float: 1
+-ifloat: 1
+-Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
+-float: 1
+-ifloat: 1
+-Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
+-float: 1
+-ifloat: 1
+-Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
+-double: 1
+-idouble: 1
+-Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
++# atanh
++Test "atanh (0.75) == 0.972955074527656652552676371721589865":
+ float: 1
+ ifloat: 1
+
+ # cacos
+-Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
+-float: 1
+-ifloat: 1
+-ildouble: 3
+-ldouble: 3
++Test "Imaginary part of: cacos (0.75 + 1.25 i) == 1.11752014915610270578240049553777969 - 1.13239363160530819522266333696834467 i":
++ildouble: 1
++ldouble: 1
+
+ # cacosh
+ Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
+@@ -96,25 +42,16 @@
+ ifloat: 3
+ ildouble: 1
+ ldouble: 1
+-Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
++
++# casin
++Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-
+-# casin
+-Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
+-double: 3
+-float: 2
+-idouble: 3
+-ifloat: 2
++Test "Imaginary part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
+ ildouble: 1
+ ldouble: 1
+-Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
+-float: 1
+-ifloat: 1
+-ildouble: 3
+-ldouble: 3
+
+ # casinh
+ Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
+@@ -131,13 +68,15 @@
+ ifloat: 6
+ ildouble: 2
+ ldouble: 2
+-Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
+-double: 1
+-idouble: 1
++Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
++float: 1
++ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
++Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -151,12 +90,10 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
++Test "Real part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+ float: 4
+ ifloat: 4
+-Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
+-double: 1
+-idouble: 1
++Test "Imaginary part of: catan (0.75 + 1.25 i) == 1.10714871779409050301706546017853704 + 0.549306144334054845697622618461262852 i":
+ ildouble: 1
+ ldouble: 1
+
+@@ -167,49 +104,59 @@
+ Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+ float: 4
+ ifloat: 4
+-Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
+-float: 1
+-ifloat: 1
+-Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
++Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+ double: 1
+-float: 6
+ idouble: 1
++ildouble: 1
++ldouble: 1
++Test "Imaginary part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
++float: 6
+ ifloat: 6
++ildouble: 1
++ldouble: 1
+
+ # cbrt
++Test "cbrt (-0.001) == -0.1":
++ildouble: 1
++ldouble: 1
+ Test "cbrt (-27.0) == -3.0":
+ double: 1
+ idouble: 1
+-Test "cbrt (0.970299) == 0.99":
++Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
++double: 1
++idouble: 1
++Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
+ double: 1
+ idouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+-Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
+-double: 1
+-idouble: 1
+-Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
++Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+ double: 1
++float: 1
+ idouble: 1
++ifloat: 1
++Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
++float: 1
++ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
++Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
+-double: 1
+-idouble: 1
++Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
++float: 1
++ifloat: 1
+
+ # cexp
+ Test "Real part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
+@@ -220,23 +167,22 @@
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "Real part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i":
++Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
+ float: 1
+ ifloat: 1
++Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
+ ildouble: 1
+ ldouble: 1
+
+ # clog
+ Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
+-double: 1
+ float: 3
+-idouble: 1
+ ifloat: 3
++Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ # clog10
+ Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
+@@ -249,7 +195,7 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -297,14 +243,12 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
+-double: 1
++Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
+-double: 1
+-idouble: 1
++Test "Imaginary part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
++ildouble: 1
++ldouble: 1
+ Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
+ double: 1
+ float: 1
+@@ -327,16 +271,11 @@
+ ifloat: 1
+
+ # cos
+-Test "cos (0.7) == 0.76484218728448842625585999019186495":
++Test "cos (M_PI_6l * 2.0) == 0.5":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "cos (M_PI_6l * 2.0) == 0.5":
+-double: 1
+-float: 0.5
+-idouble: 1
+-ifloat: 0.5
+ ildouble: 1
+ ldouble: 1
+ Test "cos (M_PI_6l * 4.0) == -0.5":
+@@ -347,14 +286,40 @@
+ ildouble: 1
+ ldouble: 1
+ Test "cos (pi/2) == 0":
+-double: 0.2758
+-float: 0.3667
+-idouble: 0.2758
+-ifloat: 0.3667
+-ildouble: 0.2252
+-ldouble: 0.2252
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ # cpow
++Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
++float: 1
++ifloat: 1
++Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
++float: 1
++ifloat: 1
++Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
++double: 1
++float: 4
++idouble: 1
++ifloat: 4
++ildouble: 4
++ldouble: 4
++Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
++ildouble: 2
++ldouble: 2
++Test "Imaginary part of: cpow (0.75 + 1.25 i, 1.0 + 0.0 i) == 0.75 + 1.25 i":
++ildouble: 1
++ldouble: 1
++Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
++double: 2
++float: 3
++idouble: 2
++ifloat: 3
++ildouble: 1
++ldouble: 1
+ Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
+ ildouble: 2
+ ldouble: 2
+@@ -369,26 +334,26 @@
+ float: 2
+ ifloat: 2
+ Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
+-double: 1.1031
+-float: 1.4668
+-idouble: 1.1031
+-ifloat: 1.4668
+-ildouble: 0.9006
+-ldouble: 0.9006
++double: 2
++float: 2
++idouble: 2
++ifloat: 2
++ildouble: 1
++ldouble: 1
+
+ # csin
+-Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
+-float: 1
+-ifloat: 1
++Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
++ildouble: 1
++ldouble: 1
+
+ # csinh
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+-Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
++Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
++Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+ float: 1
+ ifloat: 1
+
+@@ -403,32 +368,22 @@
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+-Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
+-float: 1
+-ifloat: 1
++Test "Imaginary part of: csqrt (0.75 + 1.25 i) == 1.05065169626078392338656675760808326 + 0.594868882070379067881984030639932657 i":
+ ildouble: 1
+ ldouble: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+-Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
+-float: 1
+-ifloat: 1
+-Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
++Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
++ildouble: 2
++ldouble: 2
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -436,34 +391,25 @@
+ Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
+ float: 1
+ ifloat: 1
+-Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
++Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
++double: 1
++idouble: 1
++
++# erf
++Test "erf (1.25) == 0.922900128256458230136523481197281140":
++double: 1
++idouble: 1
+
+ # erfc
+-Test "erfc (0.7) == 0.32219880616258152702":
++Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
+ double: 1
+ idouble: 1
+-Test "erfc (1.2) == 0.089686021770364619762":
+-double: 2
+-float: 2
+-idouble: 2
+-ifloat: 2
+-Test "erfc (2.0) == 0.0046777349810472658379":
++Test "erfc (27.0) == 0.523704892378925568501606768284954709e-318":
++ildouble: 1
++ldouble: 1
++Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
+ double: 1
+ idouble: 1
+-Test "erfc (4.1) == 0.67000276540848983727e-8":
+-double: 24
+-float: 12
+-idouble: 24
+-ifloat: 12
+
+ # exp10
+ Test "exp10 (-1) == 0.1":
+@@ -471,11 +417,11 @@
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "exp10 (0.7) == 5.0118723362727228500155418688494574":
++Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+ Test "exp10 (3) == 1000":
+ double: 6
+ float: 2
+@@ -485,44 +431,21 @@
+ ldouble: 1
+
+ # expm1
++Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
++double: 1
++idouble: 1
+ Test "expm1 (1) == M_El - 1.0":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
+-
++ildouble: 1
++ldouble: 1
+
+-# fmod
+-Test "fmod (-6.5, -2.3) == -1.9":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
+-Test "fmod (-6.5, 2.3) == -1.9":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
+-Test "fmod (6.5, -2.3) == 1.9":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
+-Test "fmod (6.5, 2.3) == 1.9":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
++# gamma
++Test "gamma (-0.5) == log(2*sqrt(pi))":
++ildouble: 1
++ldouble: 1
+
+ # hypot
+ Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
+@@ -540,9 +463,6 @@
+ Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
+ float: 1
+ ifloat: 1
+-Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
+-double: 1
+-idouble: 1
+ Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
+ float: 1
+ ifloat: 1
+@@ -554,161 +474,213 @@
+ ifloat: 1
+
+ # j0
+-Test "j0 (10.0) == -0.24593576445134833520":
++Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++Test "j0 (0.75) == 0.864242275166648623555731103820923211":
++float: 1
++ifloat: 1
++Test "j0 (10.0) == -0.245935764451348335197760862485328754":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "j0 (2.0) == 0.22389077914123566805":
++ildouble: 2
++ldouble: 2
++Test "j0 (2.0) == 0.223890779141235668051827454649948626":
+ float: 2
+ ifloat: 2
+-Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1"
++ildouble: 2
++ldouble: 2
++Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
+-idouble: 1
+ float: 1
+-ifloat: 1
+-Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1"
+-double: 1
+ idouble: 1
+-float: 1
+ ifloat: 1
+-Test "j0 (8.0) == 0.17165080713755390609":
++Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ # j1
+-Test "j1 (10.0) == 0.043472746168861436670":
++Test "j1 (-1.0) == -0.440050585744933515959682203718914913":
++ildouble: 1
++ldouble: 1
++Test "j1 (0.75) == 0.349243602174862192523281016426251335":
++ildouble: 1
++ldouble: 1
++Test "j1 (1.0) == 0.440050585744933515959682203718914913":
++ildouble: 1
++ldouble: 1
++Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
+ float: 2
+ ifloat: 2
+-Test "j1 (2.0) == 0.57672480775687338720":
++ildouble: 2
++ldouble: 2
++Test "j1 (2.0) == 0.576724807756873387202448242269137087":
+ double: 1
+ idouble: 1
+-Test "j1 (8.0) == 0.23463634685391462438":
++Test "j1 (8.0) == 0.234636346853914624381276651590454612":
+ double: 1
+ idouble: 1
++ildouble: 4
++ldouble: 4
+
+ # jn
+-Test "jn (0, 10.0) == -0.24593576445134833520":
+-double: 2
++Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
++double: 1
+ float: 1
+-idouble: 2
++idouble: 1
+ ifloat: 1
+-Test "jn (0, 2.0) == 0.22389077914123566805":
+-float: 2
+-ifloat: 2
+-Test "jn (0, 8.0) == 0.17165080713755390609":
++Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
++float: 1
++ifloat: 1
++Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
++double: 2
+ float: 1
++idouble: 2
+ ifloat: 1
+-Test "jn (1, 10.0) == 0.043472746168861436670":
++ildouble: 2
++ldouble: 2
++Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
+ float: 2
+ ifloat: 2
+-Test "jn (1, 2.0) == 0.57672480775687338720":
+-double: 1
+-idouble: 1
+-Test "jn (1, 8.0) == 0.23463634685391462438":
++ildouble: 2
++ldouble: 2
++Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
+ double: 1
++float: 1
+ idouble: 1
+-Test "jn (10, 0.1) == 0.26905328954342155795e-19":
+-double: 6
+-float: 4
+-idouble: 6
+-ifloat: 4
+-Test "jn (10, 0.7) == 0.75175911502153953928e-11":
+-double: 3
++ifloat: 1
++Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+ float: 1
+-idouble: 3
+ ifloat: 1
+-Test "jn (10, 10.0) == 0.20748610663335885770":
++ildouble: 1
++ldouble: 1
++Test "jn (1, -1.0) == -0.440050585744933515959682203718914913":
++ildouble: 1
++ldouble: 1
++Test "jn (1, 0.75) == 0.349243602174862192523281016426251335":
++ildouble: 1
++ldouble: 1
++Test "jn (1, 1.0) == 0.440050585744933515959682203718914913":
++ildouble: 1
++ldouble: 1
++Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
++float: 2
++ifloat: 2
++ildouble: 2
++ldouble: 2
++Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
++double: 1
++idouble: 1
++Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
++double: 1
++idouble: 1
++ildouble: 4
++ldouble: 4
++Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
++ildouble: 1
++ldouble: 1
++Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
++ildouble: 1
++ldouble: 1
++Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
+ double: 4
+ float: 3
+ idouble: 4
+ ifloat: 3
+-Test "jn (10, 2.0) == 0.25153862827167367096e-6":
++ildouble: 2
++ldouble: 2
++Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
+ float: 4
+ ifloat: 4
+-Test "jn (3, 0.1) == 0.000020820315754756261429":
++Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
+ double: 1
++float: 1
+ idouble: 1
+-Test "jn (3, 0.7) == 0.0069296548267508408077":
++ifloat: 1
++Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
+-Test "jn (3, 10.0) == 0.058379379305186812343":
++Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
+ double: 3
+ float: 1
+ idouble: 3
+ ifloat: 1
+-Test "jn (3, 2.0) == 0.12894324947440205110":
++ildouble: 2
++ldouble: 2
++Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+
+ # lgamma
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (-0.5) == log(2*sqrt(pi))":
++ildouble: 1
++ldouble: 1
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+
+-# log
+-Test "log (0.7) == -0.35667494393873237891263871124118447":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-ildouble: 1
+-ldouble: 1
+-
+ # log10
+-Test "log10 (0.7) == -0.15490195998574316929":
++Test "log10 (0.75) == -0.124938736608299953132449886193870744":
+ double: 1
+-float: 1
++float: 2
+ idouble: 1
+-ifloat: 1
++ifloat: 2
+ Test "log10 (e) == log10(e)":
+ float: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ # log1p
+-Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
+-double: 1
++Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
+ float: 1
+-idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++Test "log1p (M_El - 1.0) == 1":
++ildouble: 1
++ldouble: 1
+
+ # log2
+-Test "log2 (0.7) == -0.51457317282975824043":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-
+-# remquo
+-Test "remquo (-1.625, 1.0, &x) sets x to -2":
+-ildouble: 4
+-ldouble: 4
+-Test "remquo (1.625, -1.0, &x) sets x to -2":
+-ildouble: 4
+-ldouble: 4
++Test "log2 (0.75) == -.415037499278843818546261056052183492":
++ildouble: 1
++ldouble: 1
+
+ # sincos
+-Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842625585999019186495 in cos_res":
++Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+-double: 1
+-float: 0.5
+-idouble: 1
+-ifloat: 0.5
+ ildouble: 1
+ ldouble: 1
+ Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+@@ -719,22 +691,15 @@
+ ildouble: 1
+ ldouble: 1
+ Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
+-double: 0.2758
+-float: 0.3667
+-idouble: 0.2758
+-ifloat: 0.3667
+-ildouble: 0.2252
+-ldouble: 0.2252
+-Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
+-float: 1
+-ifloat: 1
+-
+-# sinh
+-Test "sinh (0.7) == 0.75858370183953350346":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
++Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
++float: 1
++ifloat: 1
+
+ # sqrt
+ Test "sqrt (2) == M_SQRT2l":
+@@ -742,31 +707,23 @@
+ ldouble: 1
+
+ # tan
+-Test "tan (0.7) == 0.84228838046307944812813500221293775":
+-ildouble: 1
+-ldouble: 1
+ Test "tan (pi/4) == 1":
+-double: 0.5
+-idouble: 0.5
+-
+-# tanh
+-Test "tanh (0.7) == 0.60436777711716349631":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "tanh (-0.7) == -0.60436777711716349631":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+-Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
+-ldouble: 1
+-ildouble: 1
++
++# tanh
++Test "tanh (-0.75) == -0.635148952387287319214434357312496495":
++ildouble: 1
++ldouble: 1
+ Test "tanh (-1.0) == -0.7615941559557648881194582826047935904":
+-ldouble: 1
+-ildouble: 1
+-Function: "tanh":
++ildouble: 1
++ldouble: 1
++Test "tanh (0.75) == 0.635148952387287319214434357312496495":
++ildouble: 1
++ldouble: 1
++Test "tanh (1.0) == 0.7615941559557648881194582826047935904":
++ildouble: 1
++ldouble: 1
+
+ # tgamma
+ Test "tgamma (-0.5) == -2 sqrt (pi)":
+@@ -774,198 +731,193 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++Test "tgamma (4) == 6":
++ildouble: 1
++ldouble: 1
+
+ # y0
+-Test "y0 (0.7) == -0.19066492933739506743":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-Test "y0 (1.0) == 0.088256964215676957983":
++Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "y0 (1.5) == 0.38244892379775884396":
++Test "y0 (1.5) == 0.382448923797758843955068554978089862":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "y0 (10.0) == 0.055671167283599391424":
++Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
+ float: 1
+ ifloat: 1
+-Test "y0 (8.0) == 0.22352148938756622053":
++ildouble: 3
++ldouble: 3
++Test "y0 (8.0) == 0.223521489387566220527323400498620359":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++ildouble: 3
++ldouble: 3
+
+ # y1
+-Test "y1 (0.1) == -6.4589510947020269877":
++Test "y1 (0.125) == -5.19993611253477499595928744876579921":
+ double: 1
+ idouble: 1
+-Test "y1 (0.7) == -1.1032498719076333697":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-Test "y1 (1.5) == -0.41230862697391129595":
++Test "y1 (0.75) == -1.03759455076928541973767132140642198":
++ildouble: 1
++ldouble: 1
++Test "y1 (1.5) == -0.412308626973911295952829820633445323":
+ float: 1
+ ifloat: 1
+-Test "y1 (10.0) == 0.24901542420695388392":
++ildouble: 1
++ldouble: 1
++Test "y1 (10.0) == 0.249015424206953883923283474663222803":
+ double: 3
+ float: 1
+ idouble: 3
+ ifloat: 1
+-Test "y1 (2.0) == -0.10703243154093754689":
++Test "y1 (2.0) == -0.107032431540937546888370772277476637":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "y1 (8.0) == -0.15806046173124749426":
++ildouble: 1
++ldouble: 1
++Test "y1 (8.0) == -0.158060461731247494255555266187483550":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
++ildouble: 1
++ldouble: 1
+
+ # yn
+-Test "yn (0, 0.7) == -0.19066492933739506743":
++Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "yn (0, 1.0) == 0.088256964215676957983":
++Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
+-Test "yn (0, 1.5) == 0.38244892379775884396":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-Test "yn (0, 10.0) == 0.055671167283599391424":
++Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
+ float: 1
+ ifloat: 1
+-Test "yn (0, 8.0) == 0.22352148938756622053":
++ildouble: 3
++ldouble: 3
++Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "yn (1, 0.1) == -6.4589510947020269877":
+-double: 1
+-idouble: 1
+-Test "yn (1, 0.7) == -1.1032498719076333697":
++ildouble: 3
++ldouble: 3
++Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+-Test "yn (1, 1.5) == -0.41230862697391129595":
++Test "yn (1, 0.75) == -1.03759455076928541973767132140642198":
++ildouble: 1
++ldouble: 1
++Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
+ float: 1
+ ifloat: 1
+-Test "yn (1, 10.0) == 0.24901542420695388392":
++ildouble: 1
++ldouble: 1
++Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
+ double: 3
+ float: 1
+ idouble: 3
+ ifloat: 1
+-Test "yn (1, 2.0) == -0.10703243154093754689":
++Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "yn (1, 8.0) == -0.15806046173124749426":
++ildouble: 1
++ldouble: 1
++Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+-Test "yn (10, 0.1) == -0.11831335132045197885e19":
+-double: 2
+-float: 2
+-idouble: 2
+-ifloat: 2
+-Test "yn (10, 0.7) == -0.42447194260703866924e10":
+-double: 3
+-idouble: 3
+-Test "yn (10, 1.0) == -0.12161801427868918929e9":
++ildouble: 1
++ldouble: 1
++Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
+ double: 1
+ idouble: 1
+-Test "yn (10, 10.0) == -0.35981415218340272205":
++ildouble: 2
++ldouble: 2
++Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "yn (10, 2.0) == -129184.54220803928264":
+-double: 2
+-idouble: 2
+-Test "yn (3, 0.1) == -5099.3323786129048894":
++ildouble: 5
++ldouble: 5
++Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
++Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "yn (3, 0.7) == -15.819479052819633505":
+-double: 3
++ildouble: 2
++ldouble: 2
++Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
++double: 2
++idouble: 2
++ildouble: 2
++ldouble: 2
++Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
++double: 1
++idouble: 1
++Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
++double: 1
+ float: 1
+-idouble: 3
++idouble: 1
+ ifloat: 1
+-Test "yn (3, 10.0) == -0.25136265718383732978":
++ildouble: 2
++ldouble: 2
++Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "yn (3, 2.0) == -1.1277837768404277861":
++ildouble: 1
++ldouble: 1
++Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
+ double: 1
+ idouble: 1
+
+ # Maximal error of functions:
+-Function: "acos":
+-ldouble: 1
+-ildouble: 1
+-
+-Function: "asin":
+-double: 1
+-float: 2
+-idouble: 1
+-ifloat: 2
+-
+-Function: "atan":
+-ildouble: 1
+-ldouble: 1
+-
+ Function: "atan2":
++float: 3
++ifloat: 3
+ ildouble: 1
+ ldouble: 1
+-float: 4
+-ifloat: 4
+
+ Function: "atanh":
+-double: 1
+-idouble: 1
+-
+-Function: "cabs":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-
+-Function: Real part of "cacos":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+
+ Function: Imaginary part of "cacos":
+-float: 1
+-ifloat: 1
+-ildouble: 3
+-ldouble: 3
++ildouble: 1
++ldouble: 1
+
+ Function: Real part of "cacosh":
+ double: 1
+@@ -984,18 +936,14 @@
+ ldouble: 1
+
+ Function: Real part of "casin":
+-double: 3
+-float: 2
+-idouble: 3
+-ifloat: 2
+-ildouble: 1
+-ldouble: 1
+-
+-Function: Imaginary part of "casin":
++double: 1
+ float: 1
++idouble: 1
+ ifloat: 1
+-ildouble: 3
+-ldouble: 3
++
++Function: Imaginary part of "casin":
++ildouble: 1
++ldouble: 1
+
+ Function: Real part of "casinh":
+ double: 5
+@@ -1027,28 +975,30 @@
+
+ Function: Real part of "catanh":
+ double: 4
+-float: 1
+ idouble: 4
+-ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ Function: Imaginary part of "catanh":
+-double: 1
+ float: 6
+-idouble: 1
+ ifloat: 6
++ildouble: 1
++ldouble: 1
+
+ Function: "cbrt":
+ double: 1
+ idouble: 1
++ildouble: 1
++ldouble: 1
+
+ Function: Real part of "ccos":
+ double: 1
++float: 1
+ idouble: 1
++ifloat: 1
+
+ Function: Imaginary part of "ccos":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+
+ Function: Real part of "ccosh":
+@@ -1058,15 +1008,11 @@
+ ifloat: 1
+
+ Function: Imaginary part of "ccosh":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+
+ Function: Real part of "cexp":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+@@ -1077,16 +1023,18 @@
+ ildouble: 1
+ ldouble: 1
+
++Function: Real part of "clog":
++float: 1
++ifloat: 1
++ildouble: 1
++ldouble: 1
++
+ Function: Imaginary part of "clog":
+-double: 1
+ float: 3
+-idouble: 1
+ ifloat: 3
+
+ Function: Real part of "clog10":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+
+ Function: Imaginary part of "clog10":
+@@ -1094,6 +1042,7 @@
+ float: 5
+ idouble: 1
+ ifloat: 5
++ldouble: 1
+
+ Function: "cos":
+ double: 2
+@@ -1104,24 +1053,24 @@
+ ldouble: 1
+
+ Function: Real part of "cpow":
+-double: 1
++double: 2
+ float: 4
+-idouble: 1
++idouble: 2
+ ifloat: 4
+-ildouble: 3
+-ldouble: 3
++ildouble: 1
++ldouble: 1
+
+ Function: Imaginary part of "cpow":
+-double: 1.1031
++double: 2
+ float: 2
+-idouble: 1.1031
++idouble: 2
+ ifloat: 2
+-ildouble: 0.9006
+-ldouble: 0.9006
++ildouble: 1
++ldouble: 1
+
+-Function: Imaginary part of "csin":
+-float: 1
+-ifloat: 1
++Function: Real part of "csin":
++ildouble: 1
++ldouble: 1
+
+ Function: Real part of "csinh":
+ float: 1
+@@ -1134,48 +1083,44 @@
+ ifloat: 1
+
+ Function: Real part of "csqrt":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+ ildouble: 1
+ ldouble: 1
+
+ Function: Imaginary part of "csqrt":
+-float: 1
+-ifloat: 1
+ ildouble: 1
+ ldouble: 1
+
+ Function: Real part of "ctan":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
+
+ Function: Imaginary part of "ctan":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
++ildouble: 2
++ldouble: 2
+
+ Function: Real part of "ctanh":
+-double: 2
++double: 1
+ float: 2
+-idouble: 2
++idouble: 1
+ ifloat: 2
+
+ Function: Imaginary part of "ctanh":
+-double: 2
+ float: 1
+-idouble: 2
+ ifloat: 1
+
++Function: "erf":
++double: 1
++idouble: 1
++
+ Function: "erfc":
+-double: 24
+-float: 12
+-idouble: 24
+-ifloat: 12
++double: 1
++idouble: 1
++ildouble: 1
++ldouble: 1
+
+ Function: "exp10":
+ double: 6
+@@ -1190,19 +1135,15 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+
+-Function: "fmod":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
++Function: "gamma":
++ildouble: 1
++ldouble: 1
+
+ Function: "hypot":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+
+ Function: "j0":
+@@ -1210,52 +1151,50 @@
+ float: 2
+ idouble: 2
+ ifloat: 2
++ildouble: 2
++ldouble: 2
+
+ Function: "j1":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
++ildouble: 4
++ldouble: 4
+
+ Function: "jn":
+-double: 6
++double: 4
+ float: 4
+-idouble: 6
++idouble: 4
+ ifloat: 4
++ildouble: 4
++ldouble: 4
+
+ Function: "lgamma":
+ double: 1
+ float: 2
+ idouble: 1
+ ifloat: 2
+-
+-Function: "log":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+ ildouble: 1
+ ldouble: 1
+
+ Function: "log10":
+ double: 1
+-float: 1
++float: 2
+ idouble: 1
+-ifloat: 1
++ifloat: 2
++ildouble: 1
++ldouble: 1
+
+ Function: "log1p":
+-double: 1
+ float: 1
+-idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ildouble: 1
++ldouble: 1
+
+ Function: "log2":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ Function: "sincos":
+ double: 1
+@@ -1265,50 +1204,48 @@
+ ildouble: 1
+ ldouble: 1
+
+-Function: "sinh":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-
+ Function: "sqrt":
+ ildouble: 1
+ ldouble: 1
+
+ Function: "tan":
+-double: 0.5
+-idouble: 0.5
+-ildouble: 1
+-ldouble: 1
+-
+-Function: "tanh":
+ double: 1
+-float: 1
+ idouble: 1
+-ifloat: 1
++
++Function: "tanh":
++ildouble: 1
++ldouble: 1
+
+ Function: "tgamma":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
++ildouble: 1
++ldouble: 1
+
+ Function: "y0":
+ double: 2
+ float: 1
+ idouble: 2
+ ifloat: 1
++ildouble: 3
++ldouble: 3
+
+ Function: "y1":
+ double: 3
+ float: 2
+ idouble: 3
+ ifloat: 2
++ildouble: 1
++ldouble: 1
+
+ Function: "yn":
+ double: 3
+ float: 2
+ idouble: 3
+ ifloat: 2
++ildouble: 5
++ldouble: 5
+
+ # end of automatic generation
+--- glibc-2.3.2/sysdeps/sparc/sparc64/memchr.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/memchr.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* memchr (str, ch, n) -- Return pointer to first occurrence of CH in STR less
+ than N.
+ For SPARC v9.
+- Copyright (C) 1998,1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
+ Jakub Jelinek <jj@ultra.linux.cz>.
+@@ -260,3 +260,4 @@
+ #if !__BOUNDED_POINTERS__
+ weak_alias (__memchr, __ubp_memchr)
+ #endif
++libc_hidden_builtin_def (memchr)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/memcpy.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/memcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -917,3 +917,5 @@
+ weak_alias(memcpy, __align_cpy_1)
+ weak_alias(memcpy, __align_cpy_2)
+ #endif
++libc_hidden_builtin_def (memcpy)
++libc_hidden_builtin_def (memmove)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/memset.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/memset.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Set a block of memory to some byte value.
+ For UltraSPARC.
+- Copyright (C) 1996, 97, 98, 99 Free Software Foundation, Inc.
++ Copyright (C) 1996, 97, 98, 99, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David S. Miller (davem@caip.rutgers.edu) and
+ Jakub Jelinek (jj@ultra.linux.cz).
+@@ -178,6 +178,7 @@
+ ba,pt %xcc, 18b
+ ldd [%o0], %f0
+ END(memset)
++libc_hidden_builtin_def (memset)
+
+ #define ZERO_BLOCKS(base, offset, source) \
+ stx source, [base - offset - 0x38]; \
+--- glibc-2.3.2/sysdeps/sparc/sparc64/sparcv9b/memcpy.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/sparcv9b/memcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -711,3 +711,5 @@
+ weak_alias(memcpy, __align_cpy_8)
+ weak_alias(memcpy, __align_cpy_16)
+ #endif
++libc_hidden_builtin_def (memcpy)
++libc_hidden_builtin_def (memmove)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strcat.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strcat.S 2003-05-12 12:13:09.000000000 -0400
+@@ -337,3 +337,4 @@
+ retl /* CTI+IEU1 Group */
+ mov %g6, %o0 /* IEU0 */
+ END(strcat)
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strchr.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strchr.S 2003-05-12 12:13:09.000000000 -0400
+@@ -479,3 +479,5 @@
+
+ weak_alias (strchr, index)
+ weak_alias (strrchr, rindex)
++libc_hidden_builtin_def (strchr)
++libc_hidden_builtin_def (strrchr)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strcmp.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strcmp.S 2003-05-12 12:13:09.000000000 -0400
+@@ -277,3 +277,4 @@
+ ba,pt %xcc, 11b /* CTI Group */
+ ldxa [%o1 + %o0] ASI_PNF, %g6 /* Load */
+ END(strcmp)
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strcpy.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strcpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -242,3 +242,4 @@
+ retl /* CTI+IEU1 Group */
+ mov %g6, %o0 /* IEU0 */
+ END(strcpy)
++libc_hidden_builtin_def (strcpy)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strcspn.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strcspn.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strcspn (str, ss) -- Return the length of the initial segment of STR
+ which contains no characters from SS.
+ For SPARC v9.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+@@ -210,3 +210,4 @@
+ retl /* CTI+IEU1 Group */
+ sub %o0, %g4, %o0 /* IEU0 */
+ END(strcspn)
++libc_hidden_builtin_def (strcspn)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strlen.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strlen.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Determine the length of a string. For SPARC v9.
+- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
+ Jakub Jelinek <jj@ultra.linux.cz>.
+@@ -171,3 +171,4 @@
+ retl /* CTI+IEU1 Group */
+ sub %o0, %o1, %o0 /* IEU0 */
+ END(strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strncmp.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strncmp.S 2003-05-12 12:13:09.000000000 -0400
+@@ -361,3 +361,4 @@
+ ba,pt %xcc, 13b /* CTI */
+ add %o1, 8, %o1 /* IEU0 */
+ END(strncmp)
++libc_hidden_builtin_def (strncmp)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strncpy.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strncpy.S 2003-05-12 12:13:09.000000000 -0400
+@@ -394,3 +394,4 @@
+ ba,pt %xcc, 3b /* CTI */
+ sllx %o4, 56, %g3 /* IEU0 Group */
+ END(strncpy)
++libc_hidden_builtin_def (strncpy)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strpbrk.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strpbrk.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strpbrk (s, accept) -- Find the first occurrence in S of any character in
+ ACCEPT.
+ For SPARC v9.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+@@ -228,3 +228,4 @@
+
+ movrz %g1, 0, %o0 /* Single Group */
+ END(strpbrk)
++libc_hidden_builtin_def (strpbrk)
+--- glibc-2.3.2/sysdeps/sparc/sparc64/strspn.S 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/sparc/sparc64/strspn.S 2003-05-12 12:13:09.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strspn (str, ss) -- Return the length of the maximum initial segment
+ of S which contains only characters in ACCEPT.
+ For SPARC v9.
+- Copyright (C) 1999 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>
+
+@@ -210,3 +210,4 @@
+ retl /* CTI+IEU1 Group */
+ sub %o0, %g4, %o0 /* IEU0 */
+ END(strspn)
++libc_hidden_builtin_def (strspn)
+--- glibc-2.3.2/sysdeps/unix/Makefile 2003-01-15 19:47:25.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/Makefile 2003-05-12 12:13:09.000000000 -0400
+@@ -1,4 +1,5 @@
+-# Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
++# Copyright (C) 1991,1992,1993,1994,1995,1996,1997,1998,1999,2003
++# Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -281,11 +282,49 @@
+
+ ifeq (misc,$(subdir))
+ sysdep_routines += $(unix-extra-syscalls)
++
++ifdef unix-stub-syscalls
++# The system call entry points in this list are supposed to be additional
++# functions not overriding any other sysdeps/.../call.c implementation, but
++# their system call numbers are unavailable in the kernel headers we're
++# using. Instead of a system call stub, these get a function that fails
++# with ENOSYS. We just generate a single module defining one function and
++# making all these entry point names aliases for it.
++sysdep_routines += stub-syscalls
++$(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \
++ $(..)sysdeps/unix/Makefile
++ $(make-target-directory)
++ (echo '#include <errno.h>'; \
++ echo 'long int _no_syscall (void)'; \
++ echo '{ __set_errno (ENOSYS); return -1L; }'; \
++ for call in $(unix-stub-syscalls); do \
++ case $$call in \
++ *@@*) ver=$${call##*@}; call=$${call%%*@}; \
++ echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
++ echo "default_symbol_version \
++ ($${call}_$${ver}, $$call, $$ver);" ;; \
++ *@@*) ver=$${call##*@}; call=$${call%%*@}; \
++ echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
++ echo "symbol_version ($${call}_$${ver}, $$call, $$ver);" ;; \
++ *) echo "weak_alias (_no_syscall, $$call)"; \
++ echo "stub_warning ($$call)"; \
++ echo "weak_alias (_no_syscall, __GI_$$call)" ;; \
++ esac; \
++ echo '#include <stub-tag.h>'; \
++ done) > $@T
++ mv -f $@T $@
++generated += stub-syscalls.c
++endif
+ endif
+
+ export sysdirs
+ export asm_CPP := $(COMPILE.S) -E -x assembler-with-cpp
+
++# This is the end of the pipeline for compiling the syscall stubs.
++# The stdin in assembler with cpp using sysdep.h macros.
++# Be sure to disable debugging info since it would all just say "<stdin>".
++compile-syscall = $(filter-out -g%,$(COMPILE.S)) -x assembler-with-cpp -o $@ -
++
+ ifndef avoid-generated
+ $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
+ $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
+@@ -300,10 +339,10 @@
+ # The syscall objects depend on s-proto.d or s-proto-cancel.d, which
+ # are generated to specify dependencies generated syscalls have on
+ # headers.
+-ifdef subdir
+-ifndef no_deps
+ # These deps use file names relative to a subdir, so don't
+ # include them in the parent directory.
++ifneq (,$(filter $(unix-syscalls),$(routines) $(sysdep_routines) $(aux)))
++ifndef no_deps
+ -include $(common-objpfx)s-proto.d
+ -include $(common-objpfx)s-proto-bp.d
+ -include $(common-objpfx)s-proto-cancel.d
+@@ -312,8 +351,7 @@
+
+ $(common-objpfx)s-%.d: $(..)sysdeps/unix/s-%.S \
+ $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
+-# Don't try to use compat.h in the db2 subdir
+- $(subst -include ./compat.h,,$(+make-deps))
++ $(+make-deps)
+
+ common-generated += s-proto.d s-proto-bp.d s-proto-cancel.d
+ postclean-generated += sysd-syscalls
+--- glibc-2.3.2/sysdeps/unix/alpha/sysdep.h 2003-01-26 16:07:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/alpha/sysdep.h 2003-08-21 08:37:10.000000000 -0400
+@@ -119,6 +119,36 @@
+ END(sym)
+ #endif
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .globl name; \
++ .align 4; \
++ .ent name,0; \
++__LABEL(name) \
++ PSEUDO_PROLOGUE; \
++ PSEUDO_PREPARE_ARGS \
++ lda v0, SYS_ify(syscall_name); \
++ call_pal PAL_callsys;
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(sym) END(sym)
++
++#define ret_NOERRNO ret
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .globl name; \
++ .align 4; \
++ .ent name,0; \
++__LABEL(name) \
++ PSEUDO_PROLOGUE; \
++ PSEUDO_PREPARE_ARGS \
++ lda v0, SYS_ify(syscall_name); \
++ call_pal PAL_callsys;
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(sym) END(sym)
++
++#define ret_ERRVAL ret
++
+ #define r0 v0
+ #define r1 a4
+
+@@ -137,7 +167,7 @@
+ ({ \
+ long _sc_ret, _sc_err; \
+ inline_syscall##nr(name, args); \
+- if (_sc_err) \
++ if (__builtin_expect (_sc_err, 0)) \
+ { \
+ __set_errno (_sc_ret); \
+ _sc_ret = -1L; \
+@@ -167,8 +197,8 @@
+ /* If TLS is in use, we have a conflict between the PAL_rduniq primitive,
+ as modeled within GCC, and explicit use of the R0 register. If we use
+ the register via the asm, the scheduler may place the PAL_rduniq insn
+- before we've copied the data from R0 into _sc_ret. If this happens
+- we'll get a reload abort, since R0 is live at the same time it is
++ before we've copied the data from R0 into _sc_ret. If this happens
++ we'll get a reload abort, since R0 is live at the same time it is
+ needed for the PAL_rduniq.
+
+ Solve this by using the "v" constraint instead of an asm for the syscall
+--- glibc-2.3.2/sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h 2002-11-02 20:21:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/bsd/bsd4.4/freebsd/bits/typesizes.h 2003-08-21 08:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* bits/typesizes.h -- underlying types for *_t. FreeBSD version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -57,6 +57,7 @@
+ #define __TIMER_T_TYPE __S32_TYPE
+ #define __BLKSIZE_T_TYPE __U32_TYPE
+ #define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
+
+ /* Number of descriptors that can fit in an `fd_set'. */
+ #define __FD_SETSIZE 1024
+--- glibc-2.3.2/sysdeps/unix/clock_gettime.c 2002-01-31 18:39:56.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/clock_gettime.c 2003-08-21 08:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,7 +32,8 @@
+
+
+ /* This function is defined in the thread library. */
+-extern int __pthread_clock_gettime (hp_timing_t freq, struct timespec *tp)
++extern int __pthread_clock_gettime (clockid_t clock_id, hp_timing_t freq,
++ struct timespec *tp)
+ __attribute__ ((__weak__));
+ #endif
+
+@@ -41,21 +42,42 @@
+ int
+ clock_gettime (clockid_t clock_id, struct timespec *tp)
+ {
+- struct timeval tv;
+ int retval = -1;
+
+ switch (clock_id)
+ {
++#define HANDLE_REALTIME \
++ do { \
++ struct timeval tv; \
++ retval = gettimeofday (&tv, NULL); \
++ if (retval == 0) \
++ /* Convert into `timespec'. */ \
++ TIMEVAL_TO_TIMESPEC (&tv, tp); \
++ } while (0)
++
++#ifdef SYSDEP_GETTIME
++ SYSDEP_GETTIME;
++#endif
++
++#ifndef HANDLED_REALTIME
+ case CLOCK_REALTIME:
+- retval = gettimeofday (&tv, NULL);
+- if (retval == 0)
+- /* Convert into `timespec'. */
+- TIMEVAL_TO_TIMESPEC (&tv, tp);
++ HANDLE_REALTIME;
+ break;
++#endif
+
++ default:
+ #if HP_TIMING_AVAIL
++ if ((clock_id & ((1 << CLOCK_IDFIELD_SIZE) - 1))
++ != CLOCK_THREAD_CPUTIME_ID)
++#endif
++ {
++ __set_errno (EINVAL);
++ break;
++ }
++
++#if HP_TIMING_AVAIL
++ /* FALLTHROUGH. */
+ case CLOCK_PROCESS_CPUTIME_ID:
+- case CLOCK_THREAD_CPUTIME_ID:
+ {
+ hp_timing_t tsc;
+
+@@ -71,10 +93,10 @@
+ break;
+ }
+
+- if (clock_id == CLOCK_THREAD_CPUTIME_ID
++ if (clock_id != CLOCK_PROCESS_CPUTIME_ID
+ && __pthread_clock_gettime != NULL)
+ {
+- retval = __pthread_clock_gettime (freq, tp);
++ retval = __pthread_clock_gettime (clock_id, freq, tp);
+ break;
+ }
+
+@@ -95,10 +117,6 @@
+ }
+ break;
+ #endif
+-
+- default:
+- __set_errno (EINVAL);
+- break;
+ }
+
+ return retval;
+--- glibc-2.3.2/sysdeps/unix/clock_nanosleep.c 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/clock_nanosleep.c 2003-08-21 08:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* High-resolution sleep with the specified clock.
+- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,14 +21,19 @@
+ #include <errno.h>
+ #include <time.h>
+ #include <hp-timing.h>
+-
++#include <sysdep-cancel.h>
+
+ #if HP_TIMING_AVAIL
+-# define CLOCK_P(clock) \
+- (clock) != CLOCK_PROCESS_CPUTIME_ID \
+- && (clock) != CLOCK_THREAD_CPUTIME_ID
++# define CPUCLOCK_P(clock) \
++ ((clock) == CLOCK_PROCESS_CPUTIME_ID \
++ || ((clock) & ((1 << CLOCK_IDFIELD_SIZE) - 1)) == CLOCK_THREAD_CPUTIME_ID)
+ #else
+-# define CLOCK_P(clock) 0
++# define CPUCLOCK_P(clock) 0
++#endif
++
++#ifndef INVALID_CLOCK_P
++# define INVALID_CLOCK_P(cl) \
++ ((cl) < CLOCK_REALTIME || (cl) > CLOCK_THREAD_CPUTIME_ID)
+ #endif
+
+
+@@ -44,6 +49,16 @@
+ || __builtin_expect (req->tv_nsec, 0) >= 1000000000)
+ return EINVAL;
+
++ if (CPUCLOCK_P (clock_id))
++ return ENOTSUP;
++
++ if (INVALID_CLOCK_P (clock_id))
++ return EINVAL;
++
++#ifdef SYSDEP_NANOSLEEP
++ SYSDEP_NANOSLEEP;
++#endif
++
+ /* If we got an absolute time, remap it. */
+ if (flags == TIMER_ABSTIME)
+ {
+@@ -76,11 +91,8 @@
+ else if (__builtin_expect (flags, 0) != 0)
+ return EINVAL;
+ else if (clock_id != CLOCK_REALTIME)
+- {
+- /* Make sure the clock ID is correct. */
+- if (__builtin_expect (! CLOCK_P (clock_id), 0))
+- return EINVAL;
+- }
++ /* Not supported. */
++ return ENOTSUP;
+
+ return __builtin_expect (nanosleep (req, rem), 0) ? errno : 0;
+ }
+--- glibc-2.3.2/sysdeps/unix/clock_settime.c 2002-01-31 18:40:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/clock_settime.c 2003-08-21 08:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,7 +31,7 @@
+
+
+ /* This function is defined in the thread library. */
+-extern void __pthread_clock_settime (hp_timing_t offset)
++extern void __pthread_clock_settime (clockid_t clock_id, hp_timing_t offset)
+ __attribute__ ((__weak__));
+ #endif
+
+@@ -40,7 +40,6 @@
+ int
+ clock_settime (clockid_t clock_id, const struct timespec *tp)
+ {
+- struct timeval tv;
+ int retval;
+
+ /* Make sure the time cvalue is OK. */
+@@ -52,15 +51,38 @@
+
+ switch (clock_id)
+ {
+- case CLOCK_REALTIME:
+- TIMESPEC_TO_TIMEVAL (&tv, tp);
++#define HANDLE_REALTIME \
++ do { \
++ struct timeval tv; \
++ TIMESPEC_TO_TIMEVAL (&tv, tp); \
++ \
++ retval = settimeofday (&tv, NULL); \
++ } while (0)
++
++#ifdef SYSDEP_GETTIME
++ SYSDEP_GETTIME;
++#endif
+
+- retval = settimeofday (&tv, NULL);
++#ifndef HANDLED_REALTIME
++ case CLOCK_REALTIME:
++ HANDLE_REALTIME;
+ break;
++#endif
+
++ default:
+ #if HP_TIMING_AVAIL
++ if ((clock_id & ((1 << CLOCK_IDFIELD_SIZE) - 1))
++ != CLOCK_THREAD_CPUTIME_ID)
++#endif
++ {
++ __set_errno (EINVAL);
++ retval = -1;
++ break;
++ }
++
++#if HP_TIMING_AVAIL
++ /* FALLTHROUGH. */
+ case CLOCK_PROCESS_CPUTIME_ID:
+- case CLOCK_THREAD_CPUTIME_ID:
+ {
+ hp_timing_t tsc;
+ hp_timing_t usertime;
+@@ -87,21 +109,16 @@
+ usertime = tp->tv_sec * freq + (tp->tv_nsec * freq) / 1000000000ull;
+
+ /* Determine the offset and use it as the new base value. */
+- if (clock_id != CLOCK_THREAD_CPUTIME_ID
++ if (clock_id == CLOCK_PROCESS_CPUTIME_ID
+ || __pthread_clock_settime == NULL)
+ GL(dl_cpuclock_offset) = tsc - usertime;
+ else
+- __pthread_clock_settime (tsc - usertime);
++ __pthread_clock_settime (clock_id, tsc - usertime);
+
+ retval = 0;
+ }
+ break;
+ #endif
+-
+- default:
+- __set_errno (EINVAL);
+- retval = -1;
+- break;
+ }
+
+ return retval;
+--- glibc-2.3.2/sysdeps/unix/closedir.c 2002-12-10 04:59:22.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/closedir.c 2003-08-21 08:37:10.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1991,1993,1995,1996,1998,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1993,1995,1996,1998,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,6 +23,8 @@
+ #include <dirent.h>
+ #include <unistd.h>
+ #include <dirstream.h>
++#include <not-cancel.h>
++
+
+ /* Close the directory stream DIRP.
+ Return 0 if successful, -1 if not. */
+@@ -46,6 +49,6 @@
+
+ free ((void *) dirp);
+
+- return __close (fd);
++ return close_not_cancel (fd);
+ }
+ weak_alias (__closedir, closedir)
+--- glibc-2.3.2/sysdeps/unix/make-syscalls.sh 2003-01-15 19:47:25.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/make-syscalls.sh 2003-08-21 08:37:10.000000000 -0400
+@@ -84,8 +84,11 @@
+ esac
+
+ cancellable=
++ noerrno=
+ case $args in
+ C*) cancellable=-cancel; args=`echo $args | sed 's/C:\?//'`;;
++ E*) noerrno=_NOERRNO; args=`echo $args | sed 's/E:\?//'`;;
++ V*) noerrno=_ERRVAL; args=`echo $args | sed 's/V:\?//'`;;
+ esac
+
+ # Derive the number of arguments from the argument signature
+@@ -109,6 +112,16 @@
+ echo "#### CALL=$file NUMBER=$callnum ARGS=$args SOURCE=$srcfile"
+
+ case x$srcfile"$callnum" in
++ x--)
++ # Undefined callnum for an extra syscall.
++ if [ x$caller != x- ]; then
++ if [ x$noerrno != x ]; then
++ echo >&2 "$0: no number for $fileno, no-error syscall ($strong $weak)"
++ exit 2
++ fi
++ echo "unix-stub-syscalls += $strong $weak"
++ fi
++ ;;
+ x*-) ;; ### Do nothing for undefined callnum
+ x-*)
+ echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
+@@ -149,9 +162,9 @@
+ echo "\
+ \$(make-target-directory)
+ (echo '#include <sysdep$cancellable.h>'; \\
+- echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
+- echo ' ret'; \\
+- echo 'PSEUDO_END($strong)'; \\
++ echo 'PSEUDO$noerrno ($strong, $syscall, $nargs)'; \\
++ echo ' ret$noerrno'; \\
++ echo 'PSEUDO_END$noerrno($strong)'; \\
+ echo 'libc_hidden_def ($strong)'; \\"
+ ;;
+ esac
+@@ -190,6 +203,11 @@
+ fi
+ echo " echo 'symbol_version($source, $base, $ver)'; \\"
+ ;;
++ !*)
++ name=`echo $name | sed 's/.//'`
++ echo " echo 'strong_alias ($strong, $name)'; \\"
++ echo " echo 'libc_hidden_def ($name)'; \\"
++ ;;
+ *)
+ echo " echo 'weak_alias ($strong, $name)'; \\"
+ echo " echo 'libc_hidden_weak ($name)'; \\"
+@@ -198,7 +216,7 @@
+ done
+
+ # And finally, pipe this all into the compiler.
+- echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
++ echo ' ) | $(compile-syscall)'
+
+ case $weak in
+ *@*)
+--- glibc-2.3.2/sysdeps/unix/mips/brk.S 2003-01-12 02:54:14.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/mips/brk.S 2003-03-18 16:46:09.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1995, 1997, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+@@ -18,6 +18,7 @@
+ 02111-1307 USA. */
+
+ #include <sysdep.h>
++#include <sys/asm.h>
+
+ #ifndef SYS_brk
+ #define SYS_brk 17
+@@ -37,9 +38,9 @@
+ .set reorder
+ /* Handle the query case. */
+ bnez a0, 1f
+- move a0,v0
++ move a0, v0
+ 1: /* Update __curbrk and exit cleanly. */
+- sw a0, __curbrk
++ PTR_S a0, __curbrk
+ move v0, zero
+ jr ra
+ PSEUDO_END(__brk)
+--- glibc-2.3.2/sysdeps/unix/mips/mips32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/mips/mips32/sysdep.h 2003-03-29 03:15:28.000000000 -0500
+@@ -0,0 +1,52 @@
++/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Brendan Kehoe (brendan@zen.org).
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdeps/unix/mips/sysdep.h>
++
++/* Note that while it's better structurally, going back to call __syscall_error
++ can make things confusing if you're debugging---it looks like it's jumping
++ backwards into the previous fn. */
++#ifdef __PIC__
++#define PSEUDO(name, syscall_name, args) \
++ .align 2; \
++ 99: la t9,__syscall_error; \
++ jr t9; \
++ ENTRY(name) \
++ .set noreorder; \
++ .cpload t9; \
++ li v0, SYS_ify(syscall_name); \
++ syscall; \
++ .set reorder; \
++ bne a3, zero, 99b; \
++L(syse1):
++#else
++#define PSEUDO(name, syscall_name, args) \
++ .set noreorder; \
++ .align 2; \
++ 99: j __syscall_error; \
++ nop; \
++ ENTRY(name) \
++ .set noreorder; \
++ li v0, SYS_ify(syscall_name); \
++ syscall; \
++ .set reorder; \
++ bne a3, zero, 99b; \
++L(syse1):
++#endif
+--- glibc-2.3.2/sysdeps/unix/mips/mips64/n32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/mips/mips64/n32/sysdep.h 2003-04-12 11:39:48.000000000 -0400
+@@ -0,0 +1,57 @@
++/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Alexandre Oliva <aoliva@redhat.com>.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdeps/unix/mips/sysdep.h>
++
++#ifdef __ASSEMBLER__
++
++/* Note that while it's better structurally, going back to call __syscall_error
++ can make things confusing if you're debugging---it looks like it's jumping
++ backwards into the previous fn. */
++#ifdef __PIC__
++#define PSEUDO(name, syscall_name, args) \
++ .align 2; \
++ 99:; \
++ .set noat; \
++ .cpsetup t9, $1, name; \
++ .set at; \
++ la t9,__syscall_error; \
++ .cpreturn; \
++ jr t9; \
++ ENTRY(name) \
++ li v0, SYS_ify(syscall_name); \
++ syscall; \
++ bne a3, zero, 99b; \
++L(syse1):
++#else
++#define PSEUDO(name, syscall_name, args) \
++ .set noreorder; \
++ .align 2; \
++ 99: j __syscall_error; \
++ ENTRY(name) \
++ .set noreorder; \
++ li v0, SYS_ify(syscall_name); \
++ syscall; \
++ .set reorder; \
++ bne a3, zero, 99b; \
++L(syse1):
++#endif
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/mips/mips64/n64/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/mips/mips64/n64/sysdep.h 2003-04-12 11:39:48.000000000 -0400
+@@ -0,0 +1,57 @@
++/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Alexandre Oliva <aoliva@redhat.com>.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdeps/unix/mips/sysdep.h>
++
++#ifdef __ASSEMBLER__
++
++/* Note that while it's better structurally, going back to call __syscall_error
++ can make things confusing if you're debugging---it looks like it's jumping
++ backwards into the previous fn. */
++#ifdef __PIC__
++#define PSEUDO(name, syscall_name, args) \
++ .align 2; \
++ 99:; \
++ .set noat; \
++ .cpsetup t9, $1, name; \
++ .set at; \
++ dla t9,__syscall_error; \
++ .cpreturn; \
++ jr t9; \
++ ENTRY(name) \
++ li v0, SYS_ify(syscall_name); \
++ syscall; \
++ bne a3, zero, 99b; \
++L(syse1):
++#else
++#define PSEUDO(name, syscall_name, args) \
++ .set noreorder; \
++ .align 2; \
++ 99: j __syscall_error; \
++ ENTRY(name) \
++ .set noreorder; \
++ li v0, SYS_ify(syscall_name); \
++ syscall; \
++ .set reorder; \
++ bne a3, zero, 99b; \
++L(syse1):
++#endif
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/mips/sysdep.S 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/mips/sysdep.S 2003-04-12 11:39:47.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1992,93,94,97,98,99,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+@@ -20,47 +21,52 @@
+ #include <sysdep.h>
+ #define _ERRNO_H
+ #include <bits/errno.h>
++#include <sys/asm.h>
+
+ #ifdef _LIBC_REENTRANT
+
++LOCALSZ= 3
++FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
++RAOFF= FRAMESZ-(1*SZREG)
++GPOFF= FRAMESZ-(2*SZREG)
++V0OFF= FRAMESZ-(3*SZREG)
++
+ ENTRY(__syscall_error)
+ #ifdef __PIC__
+- .set noreorder
+- .set noat
+- move AT, ra
+- bltzal zero, 0f
+- nop
+-0: .cpload ra
+- move ra, AT
+- .set at
+- .set reorder
++ .set noat
++ SETUP_GPX (AT)
++ .set at
+ #endif
+- subu sp, 32
++ PTR_SUBU sp, FRAMESZ
++ .set noat
++ SETUP_GPX64(GPOFF,AT)
++ .set at
+ #ifdef __PIC__
+- .cprestore 16
++ SAVE_GP(GPOFF)
+ #endif
+- sw v0, 20(sp)
+- sw ra, 24(sp)
++ REG_S v0, V0OFF(sp)
++ REG_S ra, RAOFF(sp)
+
+ #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
+ /* We translate the system's EWOULDBLOCK error into EAGAIN.
+ The GNU C library always defines EWOULDBLOCK==EAGAIN.
+ EWOULDBLOCK_sys is the original number. */
+- bne v0, EWOULDBLOCK_sys, skip
++ bne v0, EWOULDBLOCK_sys, L(skip)
+ nop
+ li v0, EAGAIN
+-skip:
++L(skip):
+ #endif
+ /* Find our per-thread errno address */
+ jal __errno_location
+
+ /* Store the error value. */
+- lw t0, 20(sp)
++ REG_L t0, V0OFF(sp)
+ sw t0, 0(v0)
+
+ /* And just kick back a -1. */
+- lw ra, 24(sp)
+- addiu sp, 32
++ REG_L ra, RAOFF(sp)
++ RESTORE_GP64
++ PTR_ADDU sp, FRAMESZ
+ li v0, -1
+ j ra
+ END(__syscall_error)
+@@ -70,29 +76,25 @@
+
+ ENTRY(__syscall_error)
+ #ifdef __PIC__
+- .set noreorder
+- .set noat
+- move AT, ra
+- bltzal zero, 0f
+- nop
+-0: .cpload ra
+- move ra, AT
+- .set at
+- .set reorder
++ SETUP_GPX (AT)
+ #endif
++ SETUP_GPX64 (t9, AT)
++
+ #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
+ /* We translate the system's EWOULDBLOCK error into EAGAIN.
+ The GNU C library always defines EWOULDBLOCK==EAGAIN.
+ EWOULDBLOCK_sys is the original number. */
+- bne v0, EWOULDBLOCK_sys, skip
++ bne v0, EWOULDBLOCK_sys, L(skip)
+ li v0, EAGAIN
+-skip:
++L(skip):
+ #endif
+ /* Store it in errno... */
+ sw v0, errno
+
+ /* And just kick back a -1. */
+ li v0, -1
++
++ RESTORE_GP64
+ j ra
+ END(__syscall_error)
+ #endif /* _LIBC_REENTRANT */
+--- glibc-2.3.2/sysdeps/unix/mips/sysdep.h 2002-11-06 13:22:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/mips/sysdep.h 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1992,95,97,99,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+@@ -29,48 +30,49 @@
+ .ent name,0; \
+ name##:
+
+-/* Note that while it's better structurally, going back to call __syscall_error
+- can make things confusing if you're debugging---it looks like it's jumping
+- backwards into the previous fn. */
+-#ifdef __PIC__
+- #define PSEUDO(name, syscall_name, args) \
+- .align 2; \
+- 99: la t9,__syscall_error; \
+- jr t9; \
+- ENTRY(name) \
+- .set noreorder; \
+- .cpload t9; \
+- li v0, SYS_ify(syscall_name); \
+- syscall; \
+- .set reorder; \
+- bne a3, zero, 99b; \
+-syse1:
+-#else
+-#define PSEUDO(name, syscall_name, args) \
+- .set noreorder; \
+- .align 2; \
+- 99: j __syscall_error; \
+- nop; \
+- ENTRY(name) \
+- .set noreorder; \
+- li v0, SYS_ify(syscall_name); \
+- syscall; \
+- .set reorder; \
+- bne a3, zero, 99b; \
+-syse1:
+-#endif
++#undef END
++#define END(function) \
++ .end function; \
++ .size function,.-function
++
++#define ret j ra ; nop
+
+ #undef PSEUDO_END
+-#define PSEUDO_END(sym) .end sym
++#define PSEUDO_END(sym) .end sym; .size sym,.-sym
+
+-#define ret j ra ; nop
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .align 2; \
++ ENTRY(name) \
++ .set noreorder; \
++ li v0, SYS_ify(syscall_name); \
++ syscall
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(sym) .end sym; .size sym,.-sym
++
++#define ret_NOERRNO ret
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .align 2; \
++ ENTRY(name) \
++ .set noreorder; \
++ li v0, SYS_ify(syscall_name); \
++ syscall
+
+-#undef END
+-#define END(sym) .end sym
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(sym) .end sym; .size sym,.-sym
++
++#define ret_ERRVAL ret
+
+ #define r0 v0
+ #define r1 v1
+ /* The mips move insn is d,s. */
+ #define MOVE(x,y) move y , x
+
++#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_ABIO64
++# define L(label) $L ## label
++#else
++# define L(label) .L ## label
++#endif
++
+ #endif
+--- glibc-2.3.2/sysdeps/unix/mips/wait.S 2001-07-07 15:21:30.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/mips/wait.S 2003-03-15 15:02:18.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1992, 1994, 1995, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1994, 1995, 1997, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Brendan Kehoe (brendan@zen.org).
+
+@@ -28,18 +29,18 @@
+
+ li v0, SYS_wait
+ syscall
+- beqz a3, noerror
++ beqz a3, L(noerror)
+ nop
+ j __syscall_error
+ nop
+
+-noerror:
++L(noerror):
+ /* If the arg is not NULL, store v1 there. */
+- beqz a0, noarg
++ beqz a0, L(noarg)
+ nop
+ sw v1, 0(a0)
+ nop
+-noarg:
++L(noarg):
+ ret
+ .end __wait
+
+--- glibc-2.3.2/sysdeps/unix/opendir.c 2002-08-26 17:16:13.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/opendir.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1996,98,2000-2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1996,98,2000-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,6 +28,8 @@
+ #include <stdio.h>
+
+ #include <dirstream.h>
++#include <not-cancel.h>
++
+
+ /* opendir() must not accidentally open something other than a directory.
+ Some OS's have kernel support for that, some don't. In the worst
+@@ -50,11 +52,11 @@
+ tryopen_o_directory (void)
+ {
+ int serrno = errno;
+- int x = __open ("/dev/null", O_RDONLY|O_NDELAY|O_DIRECTORY);
++ int x = open_not_cancel_2 ("/dev/null", O_RDONLY|O_NDELAY|O_DIRECTORY);
+
+ if (x >= 0)
+ {
+- __close (x);
++ close_not_cancel_no_status (x);
+ o_directory_works = -1;
+ }
+ else if (errno != ENOTDIR)
+@@ -110,7 +112,7 @@
+ }
+ }
+
+- fd = __open64 (name, O_RDONLY|O_NDELAY|EXTRA_FLAGS);
++ fd = open_not_cancel_2 (name, O_RDONLY|O_NDELAY|EXTRA_FLAGS|O_LARGEFILE);
+ if (__builtin_expect (fd, 0) < 0)
+ return NULL;
+
+@@ -135,24 +137,27 @@
+ goto lose;
+
+ #ifdef _STATBUF_ST_BLKSIZE
+- if (__builtin_expect ((size_t) statbuf.st_blksize >= sizeof (struct dirent),
++ if (__builtin_expect ((size_t) statbuf.st_blksize >= sizeof (struct dirent64),
+ 1))
+ allocation = statbuf.st_blksize;
+ else
+ #endif
+- allocation = (BUFSIZ < sizeof (struct dirent)
+- ? sizeof (struct dirent) : BUFSIZ);
++ allocation = (BUFSIZ < sizeof (struct dirent64)
++ ? sizeof (struct dirent64) : BUFSIZ);
++
++ const int pad = -sizeof (DIR) % __alignof__ (struct dirent64);
+
+- dirp = (DIR *) calloc (1, sizeof (DIR) + allocation); /* Zero-fill. */
++ dirp = (DIR *) malloc (sizeof (DIR) + allocation + pad);
+ if (dirp == NULL)
+ lose:
+ {
+ save_errno = errno;
+- (void) __close (fd);
++ close_not_cancel_no_status (fd);
+ __set_errno (save_errno);
+ return NULL;
+ }
+- dirp->data = (char *) (dirp + 1);
++ memset (dirp, '\0', sizeof (DIR));
++ dirp->data = (char *) (dirp + 1) + pad;
+ dirp->allocation = allocation;
+ dirp->fd = fd;
+
+--- glibc-2.3.2/sysdeps/unix/sparc/sysdep.h 2001-07-07 15:21:30.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sparc/sysdep.h 2003-08-21 08:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1994, 1995, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,7 +52,21 @@
+ jmp %g1 + %lo(syscall_error); nop; \
+ 1:
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .global syscall_error; \
++ ENTRY (name) \
++ mov SYS_ify(syscall_name), %g1; \
++ ta 0
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .global syscall_error; \
++ ENTRY (name) \
++ mov SYS_ify(syscall_name), %g1; \
++ ta 0
++
+ #define ret retl; nop
++#define ret_NOERRNO retl; nop
++#define ret_ERRVAL retl; nop
+ #define r0 %o0
+ #define r1 %o1
+ #define MOVE(x,y) mov x, y
+--- glibc-2.3.2/sysdeps/unix/syscalls.list 2003-01-30 22:39:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/syscalls.list 2003-08-21 08:37:10.000000000 -0400
+@@ -14,17 +14,17 @@
+ fstatfs - fstatfs i:ip __fstatfs fstatfs
+ fsync - fsync Ci:i __libc_fsync fsync
+ getdomain - getdomainname i:si getdomainname
+-getgid - getgid i: __getgid getgid
++getgid - getgid Ei: __getgid getgid
+ getgroups - getgroups i:ip __getgroups getgroups
+ getitimer - getitimer i:ip __getitimer getitimer
+-getpid - getpid i: __getpid getpid
++getpid - getpid Ei: __getpid getpid
+ getpriority - getpriority i:ii getpriority
+ getrlimit - getrlimit i:ip __getrlimit getrlimit
+-getuid - getuid i: __getuid getuid
++getuid - getuid Ei: __getuid getuid
+ ioctl - ioctl i:iiI __ioctl ioctl
+ kill - kill i:ii __kill kill
+ link - link i:ss __link link
+-lseek - lseek Ci:iii __libc_lseek __lseek lseek
++lseek - lseek i:iii __libc_lseek __lseek lseek
+ mkdir - mkdir i:si __mkdir mkdir
+ open - open Ci:siv __libc_open __open open
+ profil - profil i:piii __profil profil
+@@ -57,7 +57,7 @@
+ sys_fstat fxstat fstat i:ip __syscall_fstat
+ sys_mknod xmknod mknod i:sii __syscall_mknod
+ sys_stat xstat stat i:sp __syscall_stat
+-umask - umask i:i __umask umask
++umask - umask Ei:i __umask umask
+ uname - uname i:p __uname uname
+ unlink - unlink i:s __unlink unlink
+ utimes - utimes i:sp __utimes utimes
+--- glibc-2.3.2/sysdeps/unix/sysdep.h 2001-07-07 15:21:29.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysdep.h 2003-08-21 08:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 92, 93, 96, 98 Free Software Foundation, Inc.
++/* Copyright (C) 1991, 92, 93, 96, 98, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,6 +47,12 @@
+ #ifndef PSEUDO_END
+ #define PSEUDO_END(sym)
+ #endif
++#ifndef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym)
++#endif
++#ifndef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(sym) PSEUDO_END(sym)
++#endif
+
+ /* Wrappers around system calls should normally inline the system call code.
+ But sometimes it is not possible or implemented and we use this code. */
+--- glibc-2.3.2/sysdeps/unix/sysv/aix/posix_madvise.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/aix/posix_madvise.c 2003-08-16 02:13:49.000000000 -0400
+@@ -0,0 +1,8 @@
++#include <errno.h>
++#include <sys/mman.h>
++
++int
++posix_madvise (void *addr, size_t len, int advise)
++{
++ return madvise (addr, len, advise) ? errno : 0;
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/i386/time.S 2002-08-03 12:57:45.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/i386/time.S 2003-08-21 08:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,96,97,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,92,96,97,2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,12 +19,12 @@
+ #include <sysdep.h>
+ #include <asm-syntax.h>
+
+-SYSCALL (time, 1)
++PSEUDO_NOERRNO (time, time, 1)
+ movl 4(%esp), %edx /* Put passed pointer in %edx. */
+ testl %edx, %edx /* Is it non-nil? */
+ je L(null)
+ movl %eax, (%edx) /* Yes; store the time there. */
+ L(null):
+ ret
+-PSEUDO_END (time)
++PSEUDO_END_NOERRNO (time)
+ libc_hidden_def (time)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/Dist 2003-02-21 01:30:10.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/Dist 2003-09-19 22:37:08.000000000 -0400
+@@ -3,6 +3,7 @@
+ dl-brk.c
+ dl-sbrk.c
+ exit-thread.S
++fatal-prepare.h
+ getdirentries.c
+ getdirentries64.c
+ ipc_priv.h
+@@ -10,7 +11,6 @@
+ kernel_sigaction.h
+ kernel_stat.h
+ kernel_termios.h
+-internal_statvfs.c
+ ldd-rewrite.sed
+ lddlibc4.c
+ linux_fsinfo.h
+@@ -39,7 +39,6 @@
+ neteconet/ec.h
+ netinet/if_fddi.h
+ netinet/if_tr.h
+-netinet/igmp.h
+ netpacket/packet.h
+ netipx/ipx.h
+ netrom/netrom.h
+@@ -78,6 +77,7 @@
+ sys/user.h
+ sys/vt.h
+ xstatconv.c
++xstatconv.h
+ getdents64.c
+ umount.S
+ umount2.S
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/Makefile 2002-12-16 18:36:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/Makefile 2003-09-19 22:37:08.000000000 -0400
+@@ -2,25 +2,29 @@
+ sysdep_routines += errno-loc
+ endif
+
+-ifeq ($(subdir),db2)
+-CPPFLAGS += -DHAVE_LLSEEK=1
++ifeq ($(subdir),assert)
++CFLAGS-assert.c += -DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'
++CFLAGS-assert-perr.c += -DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'
+ endif
+
+ ifeq ($(subdir),malloc)
+-CFLAGS-malloc.c = -DMORECORE_CLEARS=2
++CFLAGS-malloc.c += -DMORECORE_CLEARS=2
+ endif
+
+ ifeq ($(subdir),misc)
+ sysdep_routines += sysctl clone llseek umount umount2 readahead \
+ setfsuid setfsgid
+
++CFLAGS-gethostid.c = -fexceptions
++
+ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
+ sys/klog.h sys/kdaemon.h \
+ sys/user.h sys/procfs.h sys/prctl.h \
+ sys/kd.h sys/soundcard.h sys/vt.h \
+ sys/quota.h sys/fsuid.h \
+ scsi/sg.h scsi/scsi.h scsi/scsi_ioctl.h sys/pci.h \
+- sys/ultrasound.h sys/raw.h sys/personality.h sys/epoll.h
++ sys/ultrasound.h sys/raw.h sys/personality.h sys/epoll.h \
++ bits/a.out.h
+
+ install-others += $(inst_includedir)/bits/syscall.h
+
+@@ -28,7 +32,7 @@
+ # For bi-arch platforms, the CPU/Makefile defines {32,64}bit-predefine and
+ # we generate a file that uses <bits/wordsize.h>.
+ $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h
+- rm -f $(@:.h=.d)-t
++ $(make-target-directory)
+ { \
+ echo '/* Generated at libc build time from kernel syscall list. */';\
+ echo ''; \
+@@ -36,14 +40,14 @@
+ echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
+ echo '#endif'; \
+ echo ''; \
+- SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
+- $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
+- $(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \
++ $(CC) -E -MD -MP -MF $(@:.h=.d)-t1 -MT '$(@:.d=.h) $(@:.h=.d)' \
++ -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
++ $(addprefix -D,$(32bit-predefine)) -D_LIBC -dM | \
+ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
+ LC_ALL=C sort > $(@:.d=.h).new32; \
+- SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \
+- $(CC) -E -x c $(sysincludes) $< $(addprefix -U,$(64bit-predefine)) \
+- $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \
++ $(CC) -E -MD -MP -MF $(@:.h=.d)-t2 -MT '$(@:.d=.h) $(@:.h=.d)' \
++ -x c $(sysincludes) $< $(addprefix -U,$(32bit-predefine)) \
++ $(addprefix -D,$(64bit-predefine)) -D_LIBC -dM | \
+ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
+ LC_ALL=C sort > $(@:.d=.h).new64; \
+ if cmp -s $(@:.d=.h).new32 $(@:.d=.h).new64; then \
+@@ -61,12 +65,13 @@
+ rm -f $(@:.d=.h).new32 $(@:.d=.h).new64; \
+ } > $(@:.d=.h).new
+ mv -f $(@:.d=.h).new $(@:.d=.h)
+- sed < $(@:.h=.d)-t > $(@:.h=.d)-t2 \
+- -e 's,$(subst .,\.,$@),$(patsubst $(objpfx)%,$$(objpfx)%,\
+- $(@:.d=.h) $(@:.h=.d)),'
+- rm -f $(@:.h=.d)-t
+- mv -f $(@:.h=.d)-t2 $(@:.h=.d)
+-
++ifneq (,$(objpfx))
++ sed $(sed-remove-objpfx) $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3
++else
++ cat $(@:.h=.d)-t1 $(@:.h=.d)-t2 > $(@:.h=.d)-t3
++endif
++ rm -f $(@:.h=.d)-t1 $(@:.h=.d)-t2
++ mv -f $(@:.h=.d)-t3 $(@:.h=.d)
+
+ $(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h $(+force)
+ $(make-target-directory)
+@@ -114,7 +119,7 @@
+ endif
+
+ ifeq ($(subdir),inet)
+-sysdep_headers += netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \
++sysdep_headers += netinet/if_fddi.h netinet/if_tr.h \
+ netipx/ipx.h netash/ash.h netax25/ax25.h netatalk/at.h \
+ netrom/netrom.h netpacket/packet.h netrose/rose.h \
+ neteconet/ec.h
+@@ -131,6 +136,10 @@
+ CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
+ endif
+
++ifeq ($(subdir),io)
++sysdep_routines += xstatconv internal_statvfs
++endif
++
+ ifeq ($(subdir),elf)
+ sysdep-rtld-routines += dl-brk dl-sbrk
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/_exit.c 2002-10-03 12:36:49.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/_exit.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,9 +22,6 @@
+ #include <sysdep.h>
+ #include <abort-instr.h>
+
+-extern void __syscall_exit_group (int status);
+-extern void __syscall_exit (int status);
+-
+
+ void
+ _exit (status)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/a.out.h 1997-01-22 00:25:51.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/a.out.h 2003-08-21 08:37:11.000000000 -0400
+@@ -1,5 +1,138 @@
+-#ifdef _LIBC
+-# include_next <linux/a.out.h>
+-#else
+-# include <linux/a.out.h>
+-#endif
++#ifndef __A_OUT_GNU_H__
++#define __A_OUT_GNU_H__
++
++#include <bits/a.out.h>
++
++#define __GNU_EXEC_MACROS__
++
++struct exec
++{
++ unsigned long a_info; /* Use macros N_MAGIC, etc for access. */
++ unsigned int a_text; /* Length of text, in bytes. */
++ unsigned int a_data; /* Length of data, in bytes. */
++ unsigned int a_bss; /* Length of uninitialized data area for file, in bytes. */
++ unsigned int a_syms; /* Length of symbol table data in file, in bytes. */
++ unsigned int a_entry; /* Start address. */
++ unsigned int a_trsize;/* Length of relocation info for text, in bytes. */
++ unsigned int a_drsize;/* Length of relocation info for data, in bytes. */
++};
++
++enum machine_type
++{
++ M_OLDSUN2 = 0,
++ M_68010 = 1,
++ M_68020 = 2,
++ M_SPARC = 3,
++ M_386 = 100,
++ M_MIPS1 = 151,
++ M_MIPS2 = 152
++};
++
++#define N_MAGIC(exec) ((exec).a_info & 0xffff)
++#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
++#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
++#define N_SET_INFO(exec, magic, type, flags) \
++ ((exec).a_info = ((magic) & 0xffff) \
++ | (((int)(type) & 0xff) << 16) \
++ | (((flags) & 0xff) << 24))
++#define N_SET_MAGIC(exec, magic) \
++ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
++#define N_SET_MACHTYPE(exec, machtype) \
++ ((exec).a_info = \
++ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
++#define N_SET_FLAGS(exec, flags) \
++ ((exec).a_info = \
++ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
++
++/* Code indicating object file or impure executable. */
++#define OMAGIC 0407
++/* Code indicating pure executable. */
++#define NMAGIC 0410
++/* Code indicating demand-paged executable. */
++#define ZMAGIC 0413
++/* This indicates a demand-paged executable with the header in the text.
++ The first page is unmapped to help trap NULL pointer references. */
++#define QMAGIC 0314
++/* Code indicating core file. */
++#define CMAGIC 0421
++
++#define N_TRSIZE(a) ((a).a_trsize)
++#define N_DRSIZE(a) ((a).a_drsize)
++#define N_SYMSIZE(a) ((a).a_syms)
++#define N_BADMAG(x) \
++ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
++ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
++#define _N_HDROFF(x) (1024 - sizeof (struct exec))
++#define N_TXTOFF(x) \
++ (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : \
++ (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
++#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
++#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
++#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
++#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
++#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
++
++/* Address of text segment in memory after it is loaded. */
++#define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? 4096 : 0)
++
++/* Address of data segment in memory after it is loaded. */
++#define SEGMENT_SIZE 1024
++
++#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
++#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
++
++#define N_DATADDR(x) \
++ (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) \
++ : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
++#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
++
++#if !defined (N_NLIST_DECLARED)
++struct nlist
++{
++ union
++ {
++ char *n_name;
++ struct nlist *n_next;
++ long n_strx;
++ } n_un;
++ unsigned char n_type;
++ char n_other;
++ short n_desc;
++ unsigned long n_value;
++};
++#endif /* no N_NLIST_DECLARED. */
++
++#define N_UNDF 0
++#define N_ABS 2
++#define N_TEXT 4
++#define N_DATA 6
++#define N_BSS 8
++#define N_FN 15
++#define N_EXT 1
++#define N_TYPE 036
++#define N_STAB 0340
++#define N_INDR 0xa
++#define N_SETA 0x14 /* Absolute set element symbol. */
++#define N_SETT 0x16 /* Text set element symbol. */
++#define N_SETD 0x18 /* Data set element symbol. */
++#define N_SETB 0x1A /* Bss set element symbol. */
++#define N_SETV 0x1C /* Pointer to set vector in data area. */
++
++#if !defined (N_RELOCATION_INFO_DECLARED)
++/* This structure describes a single relocation to be performed.
++ The text-relocation section of the file is a vector of these structures,
++ all of which apply to the text section.
++ Likewise, the data-relocation section applies to the data section. */
++
++struct relocation_info
++{
++ int r_address;
++ unsigned int r_symbolnum:24;
++ unsigned int r_pcrel:1;
++ unsigned int r_length:2;
++ unsigned int r_extern:1;
++ unsigned int r_pad:4;
++};
++#endif /* no N_RELOCATION_INFO_DECLARED. */
++
++#endif /* __A_OUT_GNU_H__ */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/aio_sigqueue.c 2002-03-11 03:32:01.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/aio_sigqueue.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,8 +28,6 @@
+ #include "aio_misc.h"
+
+ #ifdef __NR_rt_sigqueueinfo
+-extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *__unbounded);
+-
+
+ /* Return any pending signal or wait for one for the given time. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/Makefile 2002-03-28 18:41:51.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/Makefile 2003-09-19 22:37:09.000000000 -0400
+@@ -6,12 +6,12 @@
+ sysdep_headers += alpha/ptrace.h alpha/regdef.h sys/io.h
+
+ sysdep_routines += ieee_get_fp_control ieee_set_fp_control \
+- ioperm osf_sigprocmask llseek adjtimex
++ ioperm llseek
+
+ # Support old timeval32 entry points
+ sysdep_routines += osf_select osf_gettimeofday osf_settimeofday \
+ osf_getitimer osf_setitimer osf_utimes \
+- osf_getrusage osf_wait4 old_adjtimex
++ osf_getrusage osf_wait4
+
+ # Support old ipc control
+ sysdep_routines += oldmsgctl oldsemctl oldshmctl
+@@ -20,6 +20,5 @@
+ endif
+
+ ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending
++sysdep_routines += rt_sigaction
+ endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/a.out.h 2003-07-25 05:04:57.000000000 -0400
+@@ -0,0 +1,197 @@
++#ifndef __A_OUT_GNU_H__
++#define __A_OUT_GNU_H__
++
++#include <bits/a.out.h>
++
++#define __GNU_EXEC_MACROS__
++
++/*
++ * OSF/1 ECOFF header structs. ECOFF files consist of:
++ * - a file header (struct filehdr),
++ * - an a.out header (struct aouthdr),
++ * - one or more section headers (struct scnhdr).
++ * The filhdr's "f_nscns" field contains the
++ * number of section headers.
++ */
++
++struct filehdr
++{
++ /* OSF/1 "file" header */
++ unsigned short f_magic, f_nscns;
++ unsigned int f_timdat;
++ unsigned long f_symptr;
++ unsigned int f_nsyms;
++ unsigned short f_opthdr, f_flags;
++};
++
++struct aouthdr
++{
++ unsigned long info; /* After that it looks quite normal.. */
++ unsigned long tsize;
++ unsigned long dsize;
++ unsigned long bsize;
++ unsigned long entry;
++ unsigned long text_start; /* With a few additions that actually make sense. */
++ unsigned long data_start;
++ unsigned long bss_start;
++ unsigned int gprmask, fprmask; /* Bitmask of general & floating point regs used in binary. */
++ unsigned long gpvalue;
++};
++
++struct scnhdr
++{
++ char s_name[8];
++ unsigned long s_paddr;
++ unsigned long s_vaddr;
++ unsigned long s_size;
++ unsigned long s_scnptr;
++ unsigned long s_relptr;
++ unsigned long s_lnnoptr;
++ unsigned short s_nreloc;
++ unsigned short s_nlnno;
++ unsigned int s_flags;
++};
++
++struct exec
++{
++ /* OSF/1 "file" header */
++ struct filehdr fh;
++ struct aouthdr ah;
++};
++
++#define a_info ah.info
++#define a_text ah.tsize
++#define a_data ah.dsize
++#define a_bss ah.bsize
++#define a_entry ah.entry
++#define a_textstart ah.text_start
++#define a_datastart ah.data_start
++#define a_bssstart ah.bss_start
++#define a_gprmask ah.gprmask
++#define a_fprmask ah.fprmask
++#define a_gpvalue ah.gpvalue
++
++
++#define AOUTHSZ sizeof(struct aouthdr)
++#define SCNHSZ sizeof(struct scnhdr)
++#define SCNROUND 16
++
++enum machine_type
++{
++ M_OLDSUN2 = 0,
++ M_68010 = 1,
++ M_68020 = 2,
++ M_SPARC = 3,
++ M_386 = 100,
++ M_MIPS1 = 151,
++ M_MIPS2 = 152
++};
++
++#define N_MAGIC(exec) ((exec).a_info & 0xffff)
++#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
++#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
++#define N_SET_INFO(exec, magic, type, flags) \
++ ((exec).a_info = ((magic) & 0xffff) \
++ | (((int)(type) & 0xff) << 16) \
++ | (((flags) & 0xff) << 24))
++#define N_SET_MAGIC(exec, magic) \
++ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
++#define N_SET_MACHTYPE(exec, machtype) \
++ ((exec).a_info = \
++ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
++#define N_SET_FLAGS(exec, flags) \
++ ((exec).a_info = \
++ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
++
++/* Code indicating object file or impure executable. */
++#define OMAGIC 0407
++/* Code indicating pure executable. */
++#define NMAGIC 0410
++/* Code indicating demand-paged executable. */
++#define ZMAGIC 0413
++/* This indicates a demand-paged executable with the header in the text.
++ The first page is unmapped to help trap NULL pointer references. */
++#define QMAGIC 0314
++/* Code indicating core file. */
++#define CMAGIC 0421
++
++#define N_TRSIZE(x) 0
++#define N_DRSIZE(x) 0
++#define N_SYMSIZE(x) 0
++#define N_BADMAG(x) \
++ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
++ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
++#define _N_HDROFF(x) (1024 - sizeof (struct exec))
++#define N_TXTOFF(x) \
++ ((long) N_MAGIC(x) == ZMAGIC ? 0 : \
++ (sizeof (struct exec) + (x).fh.f_nscns * SCNHSZ + SCNROUND - 1) \
++ & ~(SCNROUND - 1))
++
++#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
++#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
++#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
++#define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
++#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
++
++/* Address of text segment in memory after it is loaded. */
++#define N_TXTADDR(x) ((x).a_textstart)
++
++/* Address of data segment in memory after it is loaded. */
++#define SEGMENT_SIZE 1024
++
++#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
++#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
++
++#define N_DATADDR(x) ((x).a_datastart)
++#define N_BSSADDR(x) ((x).a_bssstart)
++
++#if !defined (N_NLIST_DECLARED)
++struct nlist
++{
++ union
++ {
++ char *n_name;
++ struct nlist *n_next;
++ long n_strx;
++ } n_un;
++ unsigned char n_type;
++ char n_other;
++ short n_desc;
++ unsigned long n_value;
++};
++#endif /* no N_NLIST_DECLARED. */
++
++#define N_UNDF 0
++#define N_ABS 2
++#define N_TEXT 4
++#define N_DATA 6
++#define N_BSS 8
++#define N_FN 15
++#define N_EXT 1
++#define N_TYPE 036
++#define N_STAB 0340
++#define N_INDR 0xa
++#define N_SETA 0x14 /* Absolute set element symbol. */
++#define N_SETT 0x16 /* Text set element symbol. */
++#define N_SETD 0x18 /* Data set element symbol. */
++#define N_SETB 0x1A /* Bss set element symbol. */
++#define N_SETV 0x1C /* Pointer to set vector in data area. */
++
++#if !defined (N_RELOCATION_INFO_DECLARED)
++/* This structure describes a single relocation to be performed.
++ The text-relocation section of the file is a vector of these structures,
++ all of which apply to the text section.
++ Likewise, the data-relocation section applies to the data section. */
++
++struct relocation_info
++{
++ int r_address;
++ unsigned int r_symbolnum:24;
++ unsigned int r_pcrel:1;
++ unsigned int r_length:2;
++ unsigned int r_extern:1;
++ unsigned int r_pad:4;
++};
++#endif /* no N_RELOCATION_INFO_DECLARED. */
++
++#endif /* __A_OUT_GNU_H__ */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/adjtime.c 2003-01-07 18:51:31.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/adjtime.c 2003-08-21 08:37:12.000000000 -0400
+@@ -17,7 +17,11 @@
+ 02111-1307 USA. */
+
+ #include <shlib-compat.h>
++#include <sysdep.h>
++#include <sys/time.h>
++#include "kernel-features.h"
+
++#if !defined __ASSUME_TIMEVAL64 || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+ struct timeval32
+ {
+ int tv_sec, tv_usec;
+@@ -55,7 +59,7 @@
+ #define TIMEVAL timeval32
+ #define TIMEX timex32
+ #define ADJTIME __adjtime_tv32
+-#define ADJTIMEX(x) __adjtimex_tv32 (x)
++#define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x)
+ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+ #define LINKAGE
+ #else
+@@ -63,13 +67,18 @@
+ #endif
+
+ LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
+-extern int ADJTIMEX (struct TIMEX *);
+
+ #include <sysdeps/unix/sysv/linux/adjtime.c>
+
+ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
++int __adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); }
++strong_alias (__adjtimex_tv32, __adjtimex_tv32_1);
++strong_alias (__adjtimex_tv32, __adjtimex_tv32_2);
++compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0);
++compat_symbol (libc, __adjtimex_tv32_2, adjtimex, GLIBC_2_0);
+ compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2_0);
+ #endif
++#endif /* !__ASSUME_TIMEVAL64 || SHLIB_COMPAT */
+
+ #undef TIMEVAL
+ #define TIMEVAL timeval
+@@ -78,34 +87,38 @@
+ #undef ADJTIME
+ #define ADJTIME __adjtime_tv64
+ #undef ADJTIMEX
+-#define ADJTIMEX(x) __syscall_adjtimex_tv64 (x)
++#define ADJTIMEX(x) INLINE_SYSCALL (adjtimex, 1, x)
+ #undef LINKAGE
+ #define LINKAGE static
+
+ LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
+-extern int ADJTIMEX (struct TIMEX *);
+
+ #include <sysdeps/unix/sysv/linux/adjtime.c>
+-static int missing_adjtimex = 0;
++#include <stdbool.h>
++
++#if !defined __ASSUME_TIMEVAL64
++static bool missing_adjtimex;
+
+ int
+ __adjtime (itv, otv)
+ const struct timeval *itv;
+ struct timeval *otv;
+ {
++ struct timeval32 itv32, otv32;
+ int ret;
+
+- if (!missing_adjtimex)
++ switch (missing_adjtimex)
+ {
++ case false:
+ ret = __adjtime_tv64 (itv, otv);
+ if (ret && errno == ENOSYS)
+ missing_adjtimex = 1;
+- }
++ else
++ break;
+
+- if (missing_adjtimex)
+- {
+- struct timeval32 itv32, otv32;
++ /* FALLTHRU */
+
++ default:
+ itv32.tv_sec = itv->tv_sec;
+ itv32.tv_usec = itv->tv_usec;
+ ret = __adjtime_tv32 (&itv32, &otv32);
+@@ -114,31 +127,38 @@
+ otv->tv_sec = otv32.tv_sec;
+ otv->tv_usec = otv32.tv_usec;
+ }
++ break;
+ }
+
+ return ret;
+ }
++#else
++strong_alias (__adjtime_tv64, __adjtime);
++#endif
+
+ versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
+
+-extern int __syscall_adjtimex_tv64 (struct timex *tx);
+-
+ int
+ __adjtimex_tv64 (struct timex *tx)
+ {
++#if defined __ASSUME_TIMEVAL64
++ return ADJTIMEX (tx);
++#else
++ struct timex32 tx32;
+ int ret;
+
+- if (!missing_adjtimex)
+- {
+- ret = __syscall_adjtimex_tv64 (tx);
+- if (ret && errno == ENOSYS)
++ switch (missing_adjtimex)
++ {
++ case false:
++ ret = ADJTIMEX (tx);
++ if (ret && errno == ENOSYS)
+ missing_adjtimex = 1;
+- }
++ else
++ break;
+
+- if (missing_adjtimex)
+- {
+- struct timex32 tx32;
++ /* FALLTHRU */
+
++ default:
+ tx32.modes = tx->modes;
+ tx32.offset = tx->offset;
+ tx32.freq = tx->freq;
+@@ -184,9 +204,11 @@
+ tx->errcnt = tx32.errcnt;
+ tx->stbcnt = tx32.stbcnt;
+ }
++ break;
+ }
+
+ return ret;
++#endif
+ }
+
+ strong_alias (__adjtimex_tv64, __adjtimex_internal);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
+@@ -0,0 +1,9 @@
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h 2003-04-24 20:06:01.000000000 -0400
+@@ -168,6 +168,6 @@
+ # define POSIX_FADV_RANDOM 1 /* Expect random page references. */
+ # define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
+ # define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
+-# define POSIX_FADV_DONTNEED 6 /* Don't need these pages. */
+-# define POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */
++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/mman.h 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/mman.h 2003-03-15 15:02:19.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/Alpha version.
+- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -60,11 +60,13 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x1000 /* Stack-like segment. */
+-# define MAP_DENYWRITE 0x2000 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x4000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x8000 /* Lock the mapping. */
++# define MAP_GROWSDOWN 0x01000 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x02000 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x04000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x08000 /* Lock the mapping. */
+ # define MAP_NORESERVE 0x10000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x20000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x40000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h 2002-12-04 19:21:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/siginfo.h 2003-04-24 20:06:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* siginfo_t, sigevent and constants. Linux/Alpha version.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,8 +22,6 @@
+ # error "Never include this file directly. Use <signal.h> instead"
+ #endif
+
+-#include <bits/wordsize.h>
+-
+ #if (!defined __have_sigval_t \
+ && (defined _SIGNAL_H || defined __need_siginfo_t \
+ || defined __need_sigevent_t))
+@@ -42,11 +40,7 @@
+ # define __have_siginfo_t 1
+
+ # define __SI_MAX_SIZE 128
+-# if __WORDSIZE == 64
+-# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
+-# else
+-# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
+-# endif
++# define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
+
+ typedef struct siginfo
+ {
+@@ -69,8 +63,9 @@
+ /* POSIX.1b timers. */
+ struct
+ {
+- unsigned int _timer1;
+- unsigned int _timer2;
++ int si_tid; /* Timer ID. */
++ int si_overrun; /* Overrun count. */
++ sigval_t si_sigval; /* Signal value. */
+ } _timer;
+
+ /* POSIX.1b signals. */
+@@ -110,8 +105,8 @@
+ /* X/Open requires some more fields with fixed names. */
+ # define si_pid _sifields._kill.si_pid
+ # define si_uid _sifields._kill.si_uid
+-# define si_timer1 _sifields._timer._timer1
+-# define si_timer2 _sifields._timer._timer2
++# define si_timerid _sifields._timer.si_tid
++# define si_overrun _sifields._timer.si_overrun
+ # define si_status _sifields._sigchld.si_status
+ # define si_utime _sifields._sigchld.si_utime
+ # define si_stime _sifields._sigchld.si_stime
+@@ -127,8 +122,10 @@
+ signals. */
+ enum
+ {
+- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
++ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+ # define SI_ASYNCNL SI_ASYNCNL
++ SI_TKILL = -6, /* Sent by tkill. */
++# define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+ # define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+@@ -261,14 +258,7 @@
+
+ /* Structure to transport application-defined values with signals. */
+ # define __SIGEV_MAX_SIZE 64
+-# if __WORDSIZE == 64
+-# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+-# else
+-# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+-# endif
+-
+-/* Forward declaration of the `pthread_attr_t' type. */
+-struct __pthread_attr_s;
++# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+
+ typedef struct sigevent
+ {
+@@ -280,6 +270,10 @@
+ {
+ int _pad[__SIGEV_PAD_SIZE];
+
++ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
++ thread to receive the signal. */
++ __pid_t _tid;
++
+ struct
+ {
+ void (*_function) (sigval_t); /* Function to start. */
+@@ -299,8 +293,11 @@
+ # define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+ # define SIGEV_NONE SIGEV_NONE
+- SIGEV_THREAD /* Deliver via thread creation. */
++ SIGEV_THREAD, /* Deliver via thread creation. */
+ # define SIGEV_THREAD SIGEV_THREAD
++
++ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
++#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+ };
+
+ #endif /* have _SIGNAL_H. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/signum.h 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/signum.h 2003-04-12 11:39:49.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Signal number definitions. Linux/Alpha version.
+- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -69,7 +69,7 @@
+ #define SIGPWR SIGINFO
+ #define SIGIOT SIGABRT
+
+-#define _NSIG 64 /* Biggest signal number + 1. */
++#define _NSIG 65 /* Biggest signal number + 1. */
+
+ #define SIGRTMIN (__libc_current_sigrtmin ())
+ #define SIGRTMAX (__libc_current_sigrtmax ())
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/statfs.h 2002-10-23 19:48:55.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/statfs.h 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,7 +41,8 @@
+ #endif
+ __fsid_t f_fsid;
+ int f_namelen;
+- int f_spare[6];
++ int f_frsize;
++ int f_spare[5];
+ };
+
+ #ifdef __USE_LARGEFILE64
+@@ -56,9 +57,11 @@
+ __fsfilcnt64_t f_ffree;
+ __fsid_t f_fsid;
+ int f_namelen;
+- int f_spare[6];
++ int f_frsize;
++ int f_spare[5];
+ };
+ #endif
+
+ /* Tell code we have this member. */
+ #define _STATFS_F_NAMELEN
++#define _STATFS_F_FRSIZE
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/termios.h 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/termios.h 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* termios type and macro definitions. Linux version.
+- Copyright (C) 1993, 94, 95, 96, 97, 99 Free Software Foundation, Inc.
++ Copyright (C) 1993,1994,1995,1996,1997,1999,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,6 +37,8 @@
+ cc_t c_line; /* line discipline (== c_cc[33]) */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
++#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
++#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
+ };
+
+ /* c_cc characters */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2002-10-23 19:48:49.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* bits/typesizes.h -- underlying types for *_t. Linux/Alpha version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -54,9 +54,10 @@
+ #define __SWBLK_T_TYPE __SLONGWORD_TYPE
+ #define __KEY_T_TYPE __S32_TYPE
+ #define __CLOCKID_T_TYPE __S32_TYPE
+-#define __TIMER_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE void *
+ #define __BLKSIZE_T_TYPE __U32_TYPE
+ #define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
+
+ /* Number of descriptors that can fit in an `fd_set'. */
+ #define __FD_SETSIZE 1024
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/clone.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/clone.S 2003-08-21 08:37:12.000000000 -0400
+@@ -24,9 +24,13 @@
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
+
+-/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
+- pid_t *tid, void *tls);
+- */
++/* int clone(int (*fn)(void *arg), void *child_stack, int flags,
++ void *arg, pid_t *ptid, void *tls, pid_t *ctid);
++
++ Note that everything past ARG is technically optional, based
++ on FLAGS, and that CTID is arg 7, and thus is on the stack.
++ However, since a load from top-of-stack better be legal always,
++ we don't bother checking FLAGS. */
+
+ .text
+ ENTRY(__clone)
+@@ -51,11 +55,13 @@
+ stq a0,0(a1)
+ stq a3,8(a1)
+
+- /* Shift the flags, tid and tls arguments into place; the
++ /* The syscall is of the form clone(flags, usp, ptid, ctid, tls).
++ Shift the flags, ptid, ctid, tls arguments into place; the
+ child_stack argument is already correct. */
+ mov a2,a0
+ mov a4,a2
+- mov a5,a3
++ ldq a3,0(sp)
++ mov a5,a4
+
+ /* Do the system call. */
+ ldiq v0,__NR_clone
+@@ -83,8 +89,7 @@
+
+ .ent thread_start
+ thread_start:
+- .frame fp,0,zero,0
+- mov zero,fp
++ .frame zero,0,zero,0
+ .prologue 0
+
+ /* Load up the arguments. */
+@@ -98,7 +103,11 @@
+
+ /* Call _exit rather than doing it inline for breakpoint purposes. */
+ mov v0,a0
+- jsr ra,_exit
++#ifdef PIC
++ bsr ra, HIDDEN_JUMPTARGET(_exit) !samegp
++#else
++ jsr ra, HIDDEN_JUMPTARGET(_exit)
++#endif
+
+ /* Die horribly. */
+ halt
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gethostname.c 2001-09-04 20:07:17.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gethostname.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001
+
+@@ -25,9 +25,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_gethostname (char *name, size_t len);
+-
+-
+ int
+ __gethostname (char *name, size_t len)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getitimer.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getitimer.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,7 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define GETITIMER __getitimer_tv64
++#else
++#define GETITIMER getitimer
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(GETITIMER, getitimer, 2)
++ ret
++PSEUDO_END(GETITIMER)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define GETITIMER __getitimer_tv64
+-#else
+-#define GETITIMER getitimer
+-#endif
+-
+ LEAF(GETITIMER, 16)
+ ldgp gp, 0(pv)
+ subq sp, 16, sp
+@@ -100,6 +106,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(GETITIMER)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__getitimer_tv64, getitimer, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getrusage.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/getrusage.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,7 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define GETRUSAGE __getrusage_tv64
++#else
++#define GETRUSAGE __getrusage
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(GETRUSAGE, getrusage, 2)
++ ret
++PSEUDO_END(GETRUSAGE)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define GETRUSAGE __getrusage_tv64
+-#else
+-#define GETRUSAGE __getrusage
+-#endif
+-
+ LEAF(GETRUSAGE, 16)
+ ldgp gp, 0(pv)
+ subq sp, 16, sp
+@@ -132,6 +138,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(GETRUSAGE)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ strong_alias(__getrusage_tv64, ____getrusage_tv64)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gettimeofday.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/gettimeofday.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,6 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
++
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define GETTIMEOFDAY __gettimeofday_tv64
++#else
++#define GETTIMEOFDAY __gettimeofday
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(GETTIMEOFDAY, gettimeofday, 2)
++ ret
++PSEUDO_END(GETTIMEOFDAY)
++#else
+
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+@@ -30,14 +45,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define GETTIMEOFDAY __gettimeofday_tv64
+-#else
+-#define GETTIMEOFDAY __gettimeofday
+-#endif
+-
+ LEAF(GETTIMEOFDAY, 16)
+ ldgp gp, 0(pv)
+ subq sp, 16, sp
+@@ -86,7 +93,7 @@
+ ldl t0, 0(a0)
+ ldl t1, 4(a0)
+ stq t0, 0(a0)
+- stq t1, 0(a0)
++ stq t1, 8(a0)
+
+ 2: addq sp, 16, sp
+ ret
+@@ -97,6 +104,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(GETTIMEOFDAY)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
+
+@@ -32,9 +32,13 @@
+ jsr AT, (AT), _mcount
+ .set at
+ .prologue 1
+-#else
++#elif defined PIC
+ lda sp, -16(sp)
+ .prologue 0
++#else
++ ldgp gp, 0(pv)
++ lda sp, -16(sp)
++ .prologue 1
+ #endif
+
+ mov sp, a1
+@@ -48,13 +52,10 @@
+ ret
+
+ $error:
+-#ifndef PROF
+- br gp, 1f
+-1: ldgp gp, 0(gp)
+-#endif
+ lda sp, 16(sp)
+ SYSCALL_ERROR_HANDLER
+
+ END(__ieee_get_fp_control)
+
++libc_hidden_def(__ieee_get_fp_control)
+ weak_alias (__ieee_get_fp_control, ieee_get_fp_control)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
+
+@@ -30,9 +30,13 @@
+ jsr AT, (AT), _mcount
+ .set at
+ .prologue 1
+-#else
++#elif defined PIC
+ lda sp, -16(sp)
+ .prologue 0
++#else
++ ldgp gp, 0(pv)
++ lda sp, -16(sp)
++ .prologue 1
+ #endif
+
+ stq a0, 0(sp)
+@@ -47,13 +51,10 @@
+ ret
+
+ $error:
+-#ifndef PROF
+- br gp, 1f
+-1: ldgp gp, 0(gp)
+-#endif
+ lda sp, 16(sp)
+ SYSCALL_ERROR_HANDLER
+
+ END(__ieee_set_fp_control)
+
++libc_hidden_def(__ieee_set_fp_control)
+ weak_alias (__ieee_set_fp_control, ieee_set_fp_control)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ipc_priv.h 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ipc_priv.h 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995-1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,18 +32,11 @@
+ };
+
+
+-__BEGIN_DECLS
+-
+-/* The actual system call: all functions are multiplexed by this. */
+-extern int __syscall_ipc (int __call, int __first, int __second,
+- int __third, void *__ptr);
+-
+-__END_DECLS
+-
+-/* The codes for the functions to use the multiplexer `__syscall_ipc'. */
++/* The codes for the functions to use the ipc syscall multiplexer. */
+ #define IPCOP_semop 1
+ #define IPCOP_semget 2
+ #define IPCOP_semctl 3
++#define IPCOP_semtimedop 4
+ #define IPCOP_msgsnd 11
+ #define IPCOP_msgrcv 12
+ #define IPCOP_msgget 13
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/msgctl.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/msgctl.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -45,8 +45,6 @@
+ __ipc_pid_t msg_lrpid; /* pid of last msgrcv() */
+ };
+
+-extern int __syscall_msgctl (int, int, void *);
+-
+ /* Allows to control internal state and destruction of message queue
+ objects. */
+ int __new_msgctl (int, int, struct msqid_ds *);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/rt_sigaction.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson <rth@cygnus.com>, 1998
+
+@@ -28,55 +28,92 @@
+
+ #ifdef __NR_rt_sigaction
+ .text
++
+ ENTRY(__syscall_rt_sigaction)
+ .frame sp,0,ra,0
+-#ifdef PROF
+ ldgp gp,0(pv)
++#ifdef PROF
+ .set noat
+ lda AT, _mcount
+ jsr AT, (AT), _mcount
+ .set at
+ #endif
+- /* Indicate non-standard use of our PV. */
+- .prologue 2
++ .prologue 1
+
+ beq a1, 0f
+- ldl t0, 8(a1) # sa_flags
+- lda a4, sigreturn-__syscall_rt_sigaction(pv)
+- lda t1, rt_sigreturn-__syscall_rt_sigaction(pv)
+- and t0, 0x00000040, t0 # SA_SIGINFO
++ ldl t0, 8(a1) # sa_flags
++ ldah a4, sigreturn(gp) !gprelhigh
++ ldah t1, rt_sigreturn(gp) !gprelhigh
++ lda a4, sigreturn(a4) !gprellow
++ lda t1, rt_sigreturn(a4) !gprellow
++ and t0, 0x00000040, t0 # SA_SIGINFO
+ cmovne t0, t1, a4
+-0: ldi v0,__NR_rt_sigaction
++0: ldi v0, __NR_rt_sigaction
+ callsys
+- bne a3,1f
++ bne a3, SYSCALL_ERROR_LABEL
+ ret
+
+-1:
+-#ifndef PROF
+- br gp,2f
+-2: ldgp gp,0(gp)
+-#endif
+- SYSCALL_ERROR_HANDLER
++PSEUDO_END(__syscall_rt_sigaction)
+
+-END(__syscall_rt_sigaction)
++/* To enable unwinding through the signal frame without special hackery
++ elsewhere, describe the entire struct sigcontext with unwind info.
++ Note that we begin the unwind info one instruction before the start
++ of the function; the unwinder will subtract one from the return address
++ attempting to find the call instruction that led us here, since we
++ didn't get here via a normal call. */
++
++ .macro SIGCONTEXT_REGS_I base, from=0
++ cfi_offset (\from, \base + (4 + \from) * 8)
++ .if 30-\from
++ SIGCONTEXT_REGS_I \base, "(\from+1)"
++ .endif
++ .endm
++
++ .macro SIGCONTEXT_REGS_F base, from=32
++ cfi_offset (\from, \base + (4 + 1 + \from) * 8)
++ .if 62-\from
++ SIGCONTEXT_REGS_F \base, "(\from+1)"
++ .endif
++ .endm
++
++ .macro SIGCONTEXT_REGS base
++ SIGCONTEXT_REGS_I \base
++ SIGCONTEXT_REGS_F \base
++ cfi_offset (63, \base + (4 + 32 + 1 + 32) * 8)
++ cfi_offset (64, \base + 2 * 8)
++ .endm
+
+- .align 5
+- .ent sigreturn
++ .align 4
++ nop
++ nop
++ nop
++
++ cfi_startproc
++ cfi_return_column (64)
++ SIGCONTEXT_REGS -648
++ cfi_def_cfa_offset (648)
++ nop
+ sigreturn:
+- .prologue 0
+- mov sp,a0
+- ldi v0,__NR_sigreturn
++ mov sp, a0
++ ldi v0, __NR_sigreturn
+ callsys
+- .end sigreturn
+-
+- .align 4
+- .ent rt_sigreturn
++ cfi_endproc
++ .size sigreturn, .-sigreturn
++ .type sigreturn, @function
++
++ cfi_startproc
++ cfi_return_column (64)
++ SIGCONTEXT_REGS -648
++ cfi_def_cfa_offset (176 + 648)
++ nop
+ rt_sigreturn:
+- .prologue 0
+ mov sp,a0
+ ldi v0,__NR_rt_sigreturn
+ callsys
+- .end rt_sigreturn
++ cfi_endproc
++ .size rt_sigreturn, .-rt_sigreturn
++ .type rt_sigreturn, @function
++
+ #else
+ ENTRY(__syscall_rt_sigaction)
+ ldgp $29,0($27)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/select.S 2003-01-06 19:45:23.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/select.S 2003-08-21 08:37:12.000000000 -0400
+@@ -19,7 +19,21 @@
+ #include <sysdep-cancel.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define SELECT __select_tv64
++#else
++#define SELECT __select
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(SELECT, select, 5)
++ ret
++PSEUDO_END(SELECT)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define SELECT __select_tv64
+-#else
+-#define SELECT __select
+-#endif
+-
+ LEAF(SELECT, 64)
+ ldgp gp, 0(pv)
+ subq sp, 64, sp
+@@ -210,6 +216,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(SELECT)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__select_tv64, __select, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/semctl.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/semctl.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -52,8 +52,6 @@
+ #include <bp-checks.h>
+ #include <bp-semctl.h> /* definition of CHECK_SEMCTL needs union semum */
+
+-extern int __syscall_semctl (int, int, int, void *);
+-
+ /* Return identifier for array of NSEMS semaphores associated with
+ KEY. */
+ int __new_semctl (int semid, int semnum, int cmd, ...);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setfpucw.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setfpucw.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Set FP exception mask and rounding mode.
+- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,9 +20,11 @@
+ #include <fpu_control.h>
+ #include <asm/fpu.h>
+
+-
+ extern void __ieee_set_fp_control (unsigned long);
++libc_hidden_proto(__ieee_set_fp_control)
++
+ extern unsigned long __ieee_get_fp_control (void);
++libc_hidden_proto(__ieee_get_fp_control)
+
+ static inline unsigned long
+ rdfpcr (void)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setitimer.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/setitimer.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,7 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define SETITIMER __setitimer_tv64
++#else
++#define SETITIMER __setitimer
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(SETITIMER, setitimer, 3)
++ ret
++PSEUDO_END(SETITIMER)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define SETITIMER __setitimer_tv64
+-#else
+-#define SETITIMER __setitimer
+-#endif
+-
+ LEAF(SETITIMER, 48)
+ ldgp gp, 0(pv)
+ subq sp, 48, sp
+@@ -116,6 +122,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(SETITIMER)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/settimeofday.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/settimeofday.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,7 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define SETTIMEOFDAY __settimeofday_tv64
++#else
++#define SETTIMEOFDAY __settimeofday
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(SETTIMEOFDAY, settimeofday, 2)
++ ret
++PSEUDO_END(SETTIMEOFDAY)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define SETTIMEOFDAY __settimeofday_tv64
+-#else
+-#define SETTIMEOFDAY __settimeofday
+-#endif
+-
+ LEAF(SETTIMEOFDAY, 16)
+ ldgp gp, 0(pv)
+ subq sp, 16, sp
+@@ -97,6 +103,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(SETTIMEOFDAY)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/shmctl.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/shmctl.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -53,8 +53,6 @@
+ int shmall;
+ };
+
+-extern int __syscall_shmctl (int, int, void *);
+-
+ /* Provide operations to control over shared memory segments. */
+ int __new_shmctl (int, int, struct shmid_ds *);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigaction.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigaction.c 2003-09-19 22:37:09.000000000 -0400
+@@ -0,0 +1,36 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++/*
++ * In order to get the hidden arguments for rt_sigaction set up
++ * properly, we need to call the assembly version. Detect this in the
++ * INLINE_SYSCALL macro, and fail to expand inline in that case.
++ */
++
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ (__NR_##name == __NR_rt_sigaction \
++ ? __syscall_rt_sigaction(args) \
++ : INLINE_SYSCALL1(name, nr, args))
++
++extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
++ struct kernel_sigaction *__unbounded, size_t);
++
++#include <sysdeps/unix/sysv/linux/sigaction.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigprocmask.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sigprocmask.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger (davidm@azstarnet.com).
+
+@@ -17,14 +17,13 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
+ #include <sysdep.h>
+ #include <signal.h>
+
+ /* When there is kernel support for more than 64 signals, we'll have to
+ switch to a new system call convention here. */
+
+-extern unsigned long __osf_sigprocmask (int how, unsigned long newmask);
+-
+ int
+ __sigprocmask (int how, const sigset_t *set, sigset_t *oset)
+ {
+@@ -32,15 +31,14 @@
+ long result;
+
+ if (set)
+- {
+- setval = set->__val[0];
+- }
++ setval = set->__val[0];
+ else
+ {
+ setval = 0;
+ how = SIG_BLOCK; /* ensure blocked mask doesn't get changed */
+ }
+- result = __osf_sigprocmask (how, setval);
++
++ result = INLINE_SYSCALL (osf_sigprocmask, 2, how, setval);
+ if (result == -1)
+ /* If there are ever more than 63 signals, we need to recode this
+ in assembler since we wouldn't be able to distinguish a mask of
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/syscalls.list 2003-02-05 16:41:03.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/syscalls.list 2003-08-21 08:37:12.000000000 -0400
+@@ -1,69 +1,66 @@
+ # File name Caller Syscall name # args Strong name Weak names
+
+-oldmsgctl EXTRA msgctl 3 __old_msgctl msgctl@GLIBC_2.0
+-msgget - msgget 2 __msgget msgget
+-msgrcv - msgrcv C:5 __msgrcv msgrcv
+-msgsnd - msgsnd C:4 __msgsnd msgsnd
+-shmat - osf_shmat 3 __shmat shmat
+-oldshmctl EXTRA shmctl 3 __old_shmctl shmctl@GLIBC_2.0
+-shmdt - shmdt 1 __shmdt shmdt
+-shmget - shmget 3 __shmget shmget
+-semop - semop 3 __semop semop
+-semget - semget 3 __semget semget
+-oldsemctl EXTRA semctl 4 __old_semctl semctl@GLIBC_2.0
++oldmsgctl EXTRA msgctl i:iip __old_msgctl msgctl@GLIBC_2.0
++msgget - msgget i:ii __msgget msgget
++msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
++msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
++shmat - osf_shmat i:ipi __shmat shmat
++oldshmctl EXTRA shmctl i:iip __old_shmctl shmctl@GLIBC_2.0
++shmdt - shmdt i:s __shmdt shmdt
++shmget - shmget i:iii __shmget shmget
++semop - semop i:ipi __semop semop
++semtimedop - semtimedop i:ipip semtimedop
++semget - semget i:iii __semget semget
++oldsemctl EXTRA semctl i:iiii __old_semctl semctl@GLIBC_2.0
+
+-osf_sigprocmask - osf_sigprocmask 2 __osf_sigprocmask
+ sigstack - sigstack 2 sigstack
+ vfork - vfork 0 __vfork vfork
+
+-getpeername - getpeername 3 __getpeername getpeername
+-getpriority - getpriority 2 __getpriority getpriority
+-mmap - mmap 6 __mmap mmap __mmap64 mmap64
+-llseek EXTRA lseek C:3 __libc_lseek64 __llseek llseek __lseek64 lseek64
+-posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
+-pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
+-pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+-fstatfs - fstatfs 2 __fstatfs fstatfs __fstatfs64 fstatfs64
+-statfs - statfs 2 __statfs statfs statfs64
++getpeername - getpeername i:ipp __getpeername getpeername
++getpriority - getpriority i:ii __getpriority getpriority
++mmap - mmap b:aniiii __mmap mmap __mmap64 mmap64
++llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
++lseek llseek -
++posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
++pread - pread64 C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
++pwrite - pwrite64 C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
++fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64
++statfs - statfs i:sp __statfs statfs statfs64
+ getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64
+ setrlimit - setrlimit 2 __setrlimit setrlimit64 setrlimit
+ ftruncate - ftruncate 2 __ftruncate ftruncate __ftruncate64 ftruncate64
+ truncate - truncate 2 truncate truncate64
+ readahead - readahead 3 __readahead readahead
+ sendfile - sendfile i:iipi sendfile sendfile64
+-
+-# these are actually common with the x86:
+-sys_ustat ustat ustat 2 __syscall_ustat
+-sys_mknod xmknod mknod 3 __syscall_mknod
++open - open Ci:siv __libc_open __open open !__libc_open64 __open64 open64
++open64 open -
+
+ # proper socket implementations:
+-accept - accept C:3 __libc_accept __accept accept
+-bind - bind 3 __bind bind
+-connect - connect C:3 __libc_connect __connect_internal __connect connect
+-getpeername - getpeername 3 __getpeername getpeername
+-getsockname - getsockname 3 __getsockname getsockname
+-getsockopt - getsockopt 5 __getsockopt getsockopt
+-listen - listen 2 __listen listen
+-recv - recv C:4 __libc_recv __recv recv
+-recvfrom - recvfrom C:6 __libc_recvfrom __recvfrom recvfrom
+-recvmsg - recvmsg C:3 __libc_recvmsg __recvmsg recvmsg
++accept - accept Ci:iBN __libc_accept __accept accept
++bind - bind i:ipi __bind bind
++connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
++getpeername - getpeername i:ipp __getpeername getpeername
++getsockname - getsockname i:ipp __getsockname getsockname
++getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
++listen - listen i:ii __listen listen
++recv - recv Ci:ibni __libc_recv __recv recv
++recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
++recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
++send - send Ci:ibni __libc_send __send send
++sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
++sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
++setsockopt - setsockopt i:iiibn __setsockopt setsockopt
++shutdown - shutdown i:ii __shutdown shutdown
++socket - socket i:iii __socket socket
++socketpair - socketpair i:iiif __socketpair socketpair
++
+ ptrace - ptrace 4 __ptrace ptrace
+-send - send C:4 __libc_send __send send
+-sendmsg - sendmsg C:3 __libc_sendmsg __sendmsg sendmsg
+-sendto - sendto C:6 __libc_sendto __sendto sendto
+-setsockopt - setsockopt 5 __setsockopt setsockopt
+-shutdown - shutdown 2 __shutdown shutdown
+-socket - socket 3 __socket socket
+-socketpair - socketpair 4 __socketpair socketpair
+
+ # access pci space protected from machine checks:
+ pciconfig_read EXTRA pciconfig_read 5 pciconfig_read
+ pciconfig_write EXTRA pciconfig_write 5 pciconfig_write
+ pciconfig_iobase EXTRA pciconfig_iobase 3 __pciconfig_iobase pciconfig_iobase
+
+-# Wrapper for adjtimex.
+-adjtimex - syscall_adjtimex 1 __syscall_adjtimex syscall_adjtimex
+-
+ # support old timeval32 entry points
+ osf_select - osf_select C:5 __select_tv32 __select@GLIBC_2.0 select@GLIBC_2.0
+ osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0
+@@ -73,7 +70,3 @@
+ osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0
+ osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0
+ osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0
+-old_adjtimex - old_adjtimex 1 __adjtimex_tv32 __adjtimex@GLIBC_2.0 adjtimex@GLIBC_2.0
+-
+-# and one for timeval64 entry points
+-adjtimex adjtime adjtimex 1 __syscall_adjtimex_tv64
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2003-01-26 16:07:33.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2003-08-21 08:37:12.000000000 -0400
+@@ -60,17 +60,25 @@
+ #define __NR_osf_getsysinfo 256
+ #define __NR_osf_setsysinfo 257
+
++/* Help old kernel headers where particular syscalls are not available. */
++#ifndef __NR_semtimedop
++# define __NR_semtimedop 423
++#endif
++
+ /*
+ * In order to get the hidden arguments for rt_sigaction set up
+- * properly, we need to call the assembly version. Detect this in the
+- * INLINE_SYSCALL macro, and fail to expand inline in that case.
++ * properly, we need to call the assembly version. This shouldn't
++ * happen except for inside sigaction.c, where we handle this
++ * specially. Catch other uses and error.
+ */
+
+ #undef INLINE_SYSCALL
+-#define INLINE_SYSCALL(name, nr, args...) \
+- (__NR_##name == __NR_rt_sigaction \
+- ? __syscall_##name(args) \
+- : INLINE_SYSCALL1(name, nr, args))
++#define INLINE_SYSCALL(name, nr, args...) \
++({ \
++ extern char ChEcK[__NR_##name == __NR_rt_sigaction ? -1 : 1] \
++ __attribute__((unused)); \
++ INLINE_SYSCALL1(name, nr, args); \
++})
+
+ #undef INTERNAL_SYSCALL
+ #define INTERNAL_SYSCALL(name, err_out, nr, args...) \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ustat.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/ustat.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -17,11 +17,10 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
+ #include <sys/ustat.h>
+ #include <sys/sysmacros.h>
+-
+-
+-extern int __syscall_ustat (unsigned int dev, struct ustat *ubuf);
++#include <sysdep.h>
+
+ int
+ ustat (dev_t dev, struct ustat *ubuf)
+@@ -31,5 +30,5 @@
+ /* We must convert the value to dev_t type used by the kernel. */
+ k_dev = ((major (dev) & 0xff) << 8) | (minor (dev) & 0xff);
+
+- return __syscall_ustat (k_dev, ubuf);
++ return INLINE_SYSCALL (ustat, 2, k_dev, ubuf);
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/utimes.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/utimes.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,7 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define UTIMES __utimes_tv64
++#else
++#define UTIMES __utimes
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(UTIMES, utimes, 2)
++ ret
++PSEUDO_END(UTIMES)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define UTIMES __utimes_tv64
+-#else
+-#define UTIMES __utimes
+-#endif
+-
+ LEAF(UTIMES, 16)
+ ldgp gp, 0(pv)
+ subq sp, 16, sp
+@@ -102,6 +108,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(UTIMES)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/wait4.S 2002-11-08 14:35:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/wait4.S 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,7 +19,21 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include "kernel-features.h"
+
++.text
++
++#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
++#define WAIT4 __wait4_tv64
++#else
++#define WAIT4 __wait4
++#endif
++
++#if defined __ASSUME_TIMEVAL64
++PSEUDO(WAIT4, wait4, 4)
++ ret
++PSEUDO_END(WAIT4)
++#else
+ /* The problem here is that initially we made struct timeval compatible with
+ OSF/1, using int32. But we defined time_t with uint64, and later found
+ that POSIX requires tv_sec to be time_t.
+@@ -30,14 +44,6 @@
+ functions which have RT equivalents. */
+ .comm __libc_missing_axp_tv64, 4
+
+-.text
+-
+-#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+-#define WAIT4 __wait4_tv64
+-#else
+-#define WAIT4 __wait4
+-#endif
+-
+ LEAF(WAIT4, 32)
+ ldgp gp, 0(pv)
+ subq sp, 32, sp
+@@ -135,6 +141,7 @@
+ SYSCALL_ERROR_HANDLER
+
+ END(WAIT4)
++#endif /* __ASSUME_TIMEVAL64 */
+
+ #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+ default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xmknod.c 2002-08-04 04:23:07.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xmknod.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* xmknod call using old-style Unix mknod system call.
+- Copyright (C) 1991,1993,1995,1996,1997,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1993,1995,1996,1997,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,8 +22,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/sysmacros.h>
+-
+-extern int __syscall_mknod (const char *, unsigned int, unsigned int);
++#include <sysdep.h>
+
+ /* Create a device file named PATH, with permission and special bits MODE
+ and device number DEV (which can be constructed from major and minor
+@@ -41,7 +41,7 @@
+ /* We must convert the value to dev_t type used by the kernel. */
+ k_dev = ((major (*dev) & 0xff) << 8) | (minor (*dev) & 0xff);
+
+- return __syscall_mknod (path, mode, k_dev);
++ return INLINE_SYSCALL (mknod, 3, path, mode, k_dev);
+ }
+
+ weak_alias (__xmknod, _xmknod)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xstatconv.c 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/xstatconv.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Convert between the kernel's `struct stat' format, and libc's.
+- Copyright (C) 1997 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,11 +17,15 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
+ #include <string.h>
++#include <sys/stat.h>
++#include <kernel_stat.h>
++#include <xstatconv.h>
+
+
+-static inline int
+-xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
++int
++__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
+ {
+ switch (vers)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Makefile 2002-10-14 00:04:15.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Makefile 2003-09-19 22:37:09.000000000 -0400
+@@ -4,9 +4,7 @@
+ endif
+
+ ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending \
+- sigrestorer
++sysdep_routines += sigrestorer
+ endif
+
+ ifeq ($(subdir),resource)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Versions 2002-08-23 15:46:56.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/Versions 2003-09-19 22:37:09.000000000 -0400
+@@ -31,4 +31,7 @@
+ # v*
+ versionsort64;
+ }
++ GLIBC_2.3.3 {
++ posix_fadvise64; posix_fallocate64;
++ }
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/bits/mman.h 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/ARM version.
+- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,11 +52,13 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x2000 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2002-04-03 01:53:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/dl-procinfo.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Data for Linux/ARM version of processor capability information.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Philip Blundell <philb@gnu.org>, 2001.
+
+@@ -40,13 +40,14 @@
+ needed.
+ */
+
+-#ifdef PROCINFO_DECL
+-EXTERN
++#ifndef PROCINFO_CLASS
++#define PROCINFO_CLASS
+ #endif
++
+ #if !defined PROCINFO_DECL && defined SHARED
+ ._dl_arm_cap_flags
+ #else
+-const char _dl_arm_cap_flags[8][10]
++PROCINFO_CLASS const char _dl_arm_cap_flags[8][10]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+@@ -60,3 +61,4 @@
+ #endif
+
+ #undef PROCINFO_DECL
++#undef PROCINFO_CLASS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap.S 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap.S 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,11 +17,47 @@
+ 02111-1307 USA. */
+
+ #include <sysdep.h>
++#include <kernel-features.h>
++
++#define EINVAL 22
+
+ .text
+
+ ENTRY (__mmap)
++# ifdef __ASSUME_MMAP2_SYSCALL
++ /* This code is actually a couple of cycles slower than the
++ sys_mmap version below, so it might seem like a loss. But the
++ code path inside the kernel is sufficiently much shorter to
++ make it a net gain to use mmap2 when it's known to be
++ available. */
++
++ /* shuffle args */
++ str r5, [sp, #-4]!
++ ldr r5, [sp, #8]
++ str r4, [sp, #-4]!
++ ldr r4, [sp, #8]
++
++ /* convert offset to pages */
++ movs ip, r5, lsl #20
++ bne .Linval
++ mov r5, r5, lsr #12
++
++ /* do the syscall */
++ swi SYS_ify (mmap2)
++
++ /* restore registers */
++2:
++ ldr r4, [sp], #4
++ ldr r5, [sp], #4
++
++ cmn r0, $4096
++ RETINSTR(movcc, pc, lr)
++ b PLTJMP(syscall_error)
+
++.Linval:
++ mov r0, #-EINVAL
++ b 2b
++# else
+ /* Because we can only get five args through the syscall interface, and
+ mmap() takes six, we need to build a parameter block and pass its
+ address instead. The 386 port does a similar trick. */
+@@ -49,6 +85,7 @@
+ cmn r0, $4096
+ RETINSTR(movcc, pc, lr)
+ b PLTJMP(syscall_error);
++#endif
+
+ PSEUDO_END (__mmap)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap64.S 2001-07-07 15:21:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/mmap64.S 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,37 +21,50 @@
+ #define EINVAL 22
+ #define ENOSYS 38
+
++#include "kernel-features.h"
++
+ /* The mmap2 system call takes six arguments, all in registers. */
+ .text
+ ENTRY (__mmap64)
+ #ifdef __NR_mmap2
+- stmfd sp!, {r4, r5, lr}
+- ldr r5, [sp, $16]
+- ldr r4, [sp, $12]
+- movs ip, r5, lsl $20 @ check that offset is page-aligned
++ ldr ip, [sp, $4] @ offset low part
++ str r5, [sp, #-4]!
++ ldr r5, [sp, $12] @ offset high part
++ str r4, [sp, #-4]!
++ movs r4, ip, lsl $20 @ check that offset is page-aligned
++ mov ip, ip, lsr $12
++ moveqs r4, r5, lsr $12 @ check for overflow
+ bne .Linval
+- ldr ip, [sp, $20]
+- mov r5, r5, lsr $12
+- orr r5, r5, ip, lsl $20 @ compose page offset
+- movs ip, ip, lsr $12
+- bne .Linval @ check for overflow
++ ldr r4, [sp, $8] @ load fd
++ orr r5, ip, r5, lsl $20 @ compose page offset
+ mov ip, r0
+ swi SYS_ify (mmap2)
+ cmn r0, $4096
+- LOADREGS(ccfd, sp!, {r4, r5, pc})
++# ifdef __ASSUME_MMAP2_SYSCALL
++ ldr r4, [sp], #4
++ ldr r5, [sp], #4
++ RETINSTR(movcc, pc, lr)
++ b PLTJMP(syscall_error)
++# else
++ ldrcc r4, [sp], #4
++ ldrcc r5, [sp], #4
++ RETINSTR(movcc, pc, lr)
+ cmn r0, $ENOSYS
+- ldmnefd sp!, {r4, r5, lr}
+- bne PLTJMP(syscall_error)
++ bne .Lerror
+ /* The current kernel does not support mmap2. Fall back to plain
+ mmap if the offset is small enough. */
+- ldr r5, [sp, $20]
++ ldr r5, [sp, $16]
+ mov r0, ip @ first arg was clobbered
+ teq r5, $0
+- ldmeqfd sp!, {r4, r5, lr}
++ ldreq r4, [sp], #4
++ ldreq r5, [sp], #4
+ beq PLTJMP(__mmap)
++# endif
+ .Linval:
+ mov r0, $-EINVAL
+- ldmfd sp!, {r4, r5, lr}
++.Lerror:
++ ldr r4, [sp], #4
++ ldr r5, [sp], #4
+ b PLTJMP(syscall_error)
+ #else
+ /* The kernel headers do not support mmap2. Fall back to plain
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sigaction.c 2003-01-02 18:26:04.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sigaction.c 2003-09-19 22:37:09.000000000 -0400
+@@ -22,17 +22,13 @@
+
+ #include <sysdep.h>
+ #include <sys/syscall.h>
++#include <kernel-features.h>
+
+ /* The difference here is that the sigaction structure used in the
+ kernel is not the same as we use in the libc. Therefore we must
+ translate it here. */
+ #include <kernel_sigaction.h>
+
+-extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded,
+- struct old_kernel_sigaction *__unbounded);
+-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
+- struct kernel_sigaction *__unbounded, size_t);
+-
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. */
+ int __libc_missing_rt_sigs;
+@@ -60,15 +56,21 @@
+ const struct sigaction *act;
+ struct sigaction *oact;
+ {
++#ifndef __ASSUME_REALTIME_SIGNALS
+ struct old_kernel_sigaction k_sigact, k_osigact;
++#endif
+ int result;
+
+ #ifdef __NR_rt_sigaction
+ /* First try the RT signals. */
++# ifndef __ASSUME_REALTIME_SIGNALS
+ if (!__libc_missing_rt_sigs)
++# endif
+ {
+ struct kernel_sigaction kact, koact;
++# ifndef __ASSUME_REALTIME_SIGNALS
+ int saved_errno = errno;
++# endif
+
+ if (act)
+ {
+@@ -99,7 +101,9 @@
+ act ? __ptrvalue (&kact) : NULL,
+ oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
+
++# ifndef __ASSUME_REALTIME_SIGNALS
+ if (result >= 0 || errno != ENOSYS)
++# endif
+ {
+ if (oact && result >= 0)
+ {
+@@ -113,17 +117,20 @@
+ return result;
+ }
+
++# ifndef __ASSUME_REALTIME_SIGNALS
+ __set_errno (saved_errno);
+ __libc_missing_rt_sigs = 1;
++# endif
+ }
+ #endif
+
++#ifndef __ASSUME_REALTIME_SIGNALS
+ if (act)
+ {
+ k_sigact.k_sa_handler = act->sa_handler;
+ k_sigact.sa_mask = act->sa_mask.__val[0];
+ k_sigact.sa_flags = act->sa_flags;
+-#ifdef HAVE_SA_RESTORER
++# ifdef HAVE_SA_RESTORER
+ /* See the comments above for why we test SA_ONSTACK. */
+ if (k_sigact.sa_flags & (SA_RESTORER | SA_ONSTACK))
+ k_sigact.sa_restorer = act->sa_restorer;
+@@ -132,7 +139,7 @@
+ k_sigact.sa_restorer = choose_restorer (k_sigact.sa_flags);
+ k_sigact.sa_flags |= SA_RESTORER;
+ }
+-#endif
++# endif
+ }
+ result = INLINE_SYSCALL (sigaction, 3, sig,
+ act ? __ptrvalue (&k_sigact) : NULL,
+@@ -142,11 +149,12 @@
+ oact->sa_handler = k_osigact.k_sa_handler;
+ oact->sa_mask.__val[0] = k_osigact.sa_mask;
+ oact->sa_flags = k_osigact.sa_flags;
+-#ifdef HAVE_SA_RESTORER
++# ifdef HAVE_SA_RESTORER
+ oact->sa_restorer = k_osigact.sa_restorer;
+-#endif
++# endif
+ }
+ return result;
++#endif
+ }
+ libc_hidden_def (__libc_sigaction)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/syscalls.list 2000-08-01 15:10:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/syscalls.list 2003-09-19 22:37:09.000000000 -0400
+@@ -1,16 +1,5 @@
+ # File name Caller Syscall name # args Strong name Weak names
+
+-s_getgroups getgroups getgroups 2 __syscall_getgroups
+-s_llseek llseek _llseek 5 __syscall__llseek
+-s_setfsgid setfsgid setfsgid 1 __syscall_setfsgid
+-s_setfsuid setfsuid setfsuid 1 __syscall_setfsuid
+-s_setgid setgid setgid 1 __syscall_setgid
+-s_setgroups setgroups setgroups 2 __syscall_setgroups
+-s_setregid setregid setregid 2 __syscall_setregid
+-s_setresgid setresgid setresgid 3 __syscall_setresgid
+-s_setresuid setresuid setresuid 3 __syscall_setresuid
+-s_setreuid setreuid setreuid 2 __syscall_setreuid
+-s_setuid setuid setuid 1 __syscall_setuid
+ syscall - syscall 7 syscall
+ oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
+ oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h 2003-02-20 15:22:10.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h 2003-09-19 22:37:09.000000000 -0400
+@@ -64,6 +64,36 @@
+ SYSCALL_ERROR_HANDLER \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name); \
++ DO_CALL (syscall_name, args);
++
++#define PSEUDO_RET_NOERRNO \
++ RETINSTR(mov, pc, lr);
++
++#undef ret_NOERRNO
++#define ret_NOERRNO PSEUDO_RET_NOERRNO
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++/* The function has to return the error code. */
++#undef PSEUDO_ERRVAL
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args); \
++ rsb r0, r0, #0
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
++#define ret_ERRVAL PSEUDO_RET_NOERRNO
++
+ #if NOT_IN_libc
+ # define SYSCALL_ERROR __local_syscall_error
+ # define SYSCALL_ERROR_HANDLER \
+@@ -158,7 +188,7 @@
+ asm volatile ("swi %1 @ syscall " #name \
+ : "=r" (_a1) \
+ : "i" (SYS_ify(name)) ASM_ARGS_##nr \
+- : "a1", "memory"); \
++ : "memory"); \
+ _sys_result = _a1; \
+ } \
+ (int) _sys_result; })
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/vfork.S 2002-12-31 14:13:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/vfork.S 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Philip Blundell <philb@gnu.org>.
+
+@@ -20,6 +20,7 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include <kernel-features.h>
+
+ /* Clone the calling process, but without copying the whole address space.
+ The calling process is suspended until the new process exits or is
+@@ -33,17 +34,24 @@
+ cmn a1, #4096
+ RETINSTR(movcc, pc, lr)
+
++# ifdef __ASSUME_VFORK_SYSCALL
++ b PLTJMP(C_SYMBOL_NAME(__syscall_error))
++# else
+ /* Check if vfork syscall is known at all. */
+- ldr a2, =-ENOSYS
+- teq a1, a2
++ cmn a2, #ENOSYS
+ bne PLTJMP(C_SYMBOL_NAME(__syscall_error))
++# endif
+ #endif
+
++#ifndef __ASSUME_VFORK_SYSCALL
+ /* If we don't have vfork, fork is close enough. */
+ swi __NR_fork
+ cmn a1, #4096
+ RETINSTR(movcc, pc, lr)
+ b PLTJMP(C_SYMBOL_NAME(__syscall_error))
++#elif !defined __NR_vfork
++# error "__NR_vfork not available and __ASSUME_VFORK_SYSCALL defined"
++#endif
+
+ PSEUDO_END (__vfork)
+ libc_hidden_def (__vfork)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
+@@ -0,0 +1,7 @@
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
++
++/* Signal to users of this header that this architecture really doesn't
++ support a.out binary format. */
++#define __NO_A_OUT_SUPPORT 1
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/in.h 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/in.h 2003-08-21 08:37:13.000000000 -0400
+@@ -115,6 +115,11 @@
+ #define IPV6_MTU_DISCOVER 23
+ #define IPV6_MTU 24
+ #define IPV6_RECVERR 25
++#define IPV6_V6ONLY 26
++#define IPV6_JOIN_ANYCAST 27
++#define IPV6_LEAVE_ANYCAST 28
++#define IPV6_IPSEC_POLICY 34
++#define IPV6_XFRM_POLICY 35
+
+ #define SCM_SRCRT IPV6_RXSRCRT
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/posix_opt.h 2002-11-28 20:32:18.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/posix_opt.h 2003-03-15 15:02:20.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Define POSIX options for Linux.
+- Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -90,4 +90,7 @@
+ /* The `spawn' function family is supported. */
+ #define _POSIX_SPAWN 200112L
+
++/* The monotonic clock might be available. */
++#define _POSIX_MONOTONIC_CLOCK 0
++
+ #endif /* bits/posix_opt.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/sched.h 2002-11-21 19:08:21.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/sched.h 2003-08-21 08:37:13.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Definitions of constants and data structure for POSIX 1003.1b-1993
+ scheduling interface.
+- Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,7 +37,6 @@
+ # define CLONE_FS 0x00000200 /* Set if fs info shared between processes. */
+ # define CLONE_FILES 0x00000400 /* Set if open files shared between processes. */
+ # define CLONE_SIGHAND 0x00000800 /* Set if signal handlers shared. */
+-# define CLONE_PID 0x00001000 /* Set if pid shared. */
+ # define CLONE_PTRACE 0x00002000 /* Set if tracing continues on the child. */
+ # define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to
+ wake it up on mm_release. */
+@@ -56,6 +55,7 @@
+ force CLONE_PTRACE on this clone. */
+ # define CLONE_CHILD_SETTID 0x01000000 /* Store TID in userlevel buffer in
+ the child. */
++# define CLONE_STOPPED 0x02000000 /* Start in stopped state. */
+ #endif
+
+ /* The official definition. */
+@@ -86,3 +86,39 @@
+ };
+ # undef __need_schedparam
+ #endif
++
++
++#if defined _SCHED_H && !defined __cpu_set_t_defined
++# define __cpu_set_t_defined
++/* Size definition for CPU sets. */
++# define __CPU_SETSIZE 1024
++# define __NCPUBITS (8 * sizeof (__cpu_mask))
++
++/* Type for array elements in 'cpu_set'. */
++typedef unsigned long int __cpu_mask;
++
++/* Basic access functions. */
++# define __CPUELT(cpu) ((cpu) / __NCPUBITS)
++# define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
++
++/* Data structure to describe CPU mask. */
++typedef struct
++{
++ __cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
++} cpu_set_t;
++
++/* Access functions for CPU masks. */
++# define __CPU_ZERO(cpusetp) \
++ do { \
++ unsigned int __i; \
++ cpu_set_t *__arr = (cpusetp); \
++ for (__i = 0; __i < sizeof (cpu_set_t) / sizeof (__cpu_mask); ++__i) \
++ __arr->__bits[__i] = 0; \
++ } while (0)
++# define __CPU_SET(cpu, cpusetp) \
++ ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
++# define __CPU_CLR(cpu, cpusetp) \
++ ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
++# define __CPU_ISSET(cpu, cpusetp) \
++ (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/siginfo.h 2002-12-04 19:09:55.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/siginfo.h 2003-04-24 20:06:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* siginfo_t, sigevent and constants. Linux version.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -69,8 +69,9 @@
+ /* POSIX.1b timers. */
+ struct
+ {
+- unsigned int _timer1;
+- unsigned int _timer2;
++ int si_tid; /* Timer ID. */
++ int si_overrun; /* Overrun count. */
++ sigval_t si_sigval; /* Signal value. */
+ } _timer;
+
+ /* POSIX.1b signals. */
+@@ -110,8 +111,8 @@
+ /* X/Open requires some more fields with fixed names. */
+ # define si_pid _sifields._kill.si_pid
+ # define si_uid _sifields._kill.si_uid
+-# define si_timer1 _sifields._timer._timer1
+-# define si_timer2 _sifields._timer._timer2
++# define si_timerid _sifields._timer.si_tid
++# define si_overrun _sifields._timer.si_overrun
+ # define si_status _sifields._sigchld.si_status
+ # define si_utime _sifields._sigchld.si_utime
+ # define si_stime _sifields._sigchld.si_stime
+@@ -127,8 +128,10 @@
+ signals. */
+ enum
+ {
+- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
++ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+ # define SI_ASYNCNL SI_ASYNCNL
++ SI_TKILL = -6, /* Sent by tkill. */
++# define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+ # define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+@@ -267,9 +270,6 @@
+ # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+ # endif
+
+-/* Forward declaration of the `pthread_attr_t' type. */
+-struct __pthread_attr_s;
+-
+ typedef struct sigevent
+ {
+ sigval_t sigev_value;
+@@ -280,6 +280,10 @@
+ {
+ int _pad[__SIGEV_PAD_SIZE];
+
++ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
++ thread to receive the signal. */
++ __pid_t _tid;
++
+ struct
+ {
+ void (*_function) (sigval_t); /* Function to start. */
+@@ -299,8 +303,11 @@
+ # define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+ # define SIGEV_NONE SIGEV_NONE
+- SIGEV_THREAD /* Deliver via thread creation. */
++ SIGEV_THREAD, /* Deliver via thread creation. */
+ # define SIGEV_THREAD SIGEV_THREAD
++
++ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
++#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+ };
+
+ #endif /* have _SIGNAL_H. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/signum.h 2003-02-21 19:01:06.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/signum.h 2003-04-12 11:39:49.000000000 -0400
+@@ -66,7 +66,7 @@
+ #define SIGSYS 31 /* Bad system call. */
+ #define SIGUNUSED 31
+
+-#define _NSIG 64 /* Biggest signal number + 1
++#define _NSIG 65 /* Biggest signal number + 1
+ (including real-time signals). */
+
+ #define SIGRTMIN (__libc_current_sigrtmin ())
+@@ -75,6 +75,6 @@
+ /* These are the hard limits of the kernel. These values should not be
+ used directly at user level. */
+ #define __SIGRTMIN 32
+-#define __SIGRTMAX _NSIG
++#define __SIGRTMAX (_NSIG - 1)
+
+ #endif /* <signal.h> included. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/stat.h 2002-12-30 19:00:47.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/stat.h 2003-08-21 08:37:13.000000000 -0400
+@@ -131,6 +131,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/statfs.h 2002-10-25 04:02:40.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/statfs.h 2003-08-21 08:37:13.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,7 +41,8 @@
+ #endif
+ __fsid_t f_fsid;
+ __SWORD_TYPE f_namelen;
+- __SWORD_TYPE f_spare[6];
++ __SWORD_TYPE f_frsize;
++ __SWORD_TYPE f_spare[5];
+ };
+
+ #ifdef __USE_LARGEFILE64
+@@ -56,9 +57,11 @@
+ __fsfilcnt64_t f_ffree;
+ __fsid_t f_fsid;
+ __SWORD_TYPE f_namelen;
+- __SWORD_TYPE f_spare[6];
++ __SWORD_TYPE f_frsize;
++ __SWORD_TYPE f_spare[5];
+ };
+ #endif
+
+-/* Tell code we have this member. */
++/* Tell code we have these members. */
+ #define _STATFS_F_NAMELEN
++#define _STATFS_F_FRSIZE
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/bits/termios.h 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/bits/termios.h 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* termios type and macro definitions. Linux version.
+- Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
++ Copyright (C) 1993,1994,1995,1996,1997,1998,1999,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,6 +37,8 @@
+ cc_t c_cc[NCCS]; /* control characters */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
++#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
++#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
+ };
+
+ /* c_cc characters */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/check_pf.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/check_pf.c 2003-06-14 04:44:59.000000000 -0400
+@@ -0,0 +1,193 @@
++/* Determine protocol families for which interfaces exist. Linux version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <ifaddrs.h>
++#include <netdb.h>
++#include <string.h>
++#include <time.h>
++#include <unistd.h>
++#include <sys/socket.h>
++
++#include <asm/types.h>
++#include <linux/netlink.h>
++#include <linux/rtnetlink.h>
++
++#include "kernel-features.h"
++
++
++static int
++make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6)
++{
++ struct
++ {
++ struct nlmsghdr nlh;
++ struct rtgenmsg g;
++ } req;
++ struct sockaddr_nl nladdr;
++
++ req.nlh.nlmsg_len = sizeof (req);
++ req.nlh.nlmsg_type = RTM_GETADDR;
++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
++ req.nlh.nlmsg_pid = 0;
++ req.nlh.nlmsg_seq = time (NULL);
++ req.g.rtgen_family = AF_UNSPEC;
++
++ memset (&nladdr, '\0', sizeof (nladdr));
++ nladdr.nl_family = AF_NETLINK;
++
++ if (TEMP_FAILURE_RETRY (__sendto (fd, (void *) &req, sizeof (req), 0,
++ (struct sockaddr *) &nladdr,
++ sizeof (nladdr))) < 0)
++ return -1;
++
++ *seen_ipv4 = false;
++ *seen_ipv6 = false;
++
++ bool done = false;
++ char buf[4096];
++ struct iovec iov = { buf, sizeof (buf) };
++
++ do
++ {
++ struct msghdr msg =
++ {
++ (void *) &nladdr, sizeof (nladdr),
++ &iov, 1,
++ NULL, 0,
++ 0
++ };
++
++ ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
++ if (read_len < 0)
++ return -1;
++
++ if (msg.msg_flags & MSG_TRUNC)
++ return -1;
++
++ struct nlmsghdr *nlmh;
++ for (nlmh = (struct nlmsghdr *) buf;
++ NLMSG_OK (nlmh, (size_t) read_len);
++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
++ {
++ if ((pid_t) nlmh->nlmsg_pid != pid
++ || nlmh->nlmsg_seq != req.nlh.nlmsg_seq)
++ continue;
++
++ if (nlmh->nlmsg_type == RTM_NEWADDR)
++ {
++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlmh);
++
++ switch (ifam->ifa_family)
++ {
++ case AF_INET:
++ *seen_ipv4 = true;
++ break;
++ case AF_INET6:
++ *seen_ipv6 = true;
++ break;
++ default:
++ /* Ignore. */
++ break;
++ }
++ }
++ else if (nlmh->nlmsg_type == NLMSG_DONE)
++ /* We found the end, leave the loop. */
++ done = true;
++ else ;
++ }
++ }
++ while (! done);
++
++ __close (fd);
++
++ return 0;
++}
++
++
++/* We don't know if we have NETLINK support compiled in in our
++ Kernel. */
++#if __ASSUME_NETLINK_SUPPORT == 0
++/* Define in ifaddrs.h. */
++extern int __no_netlink_support attribute_hidden;
++#else
++# define __no_netlink_support 0
++#endif
++
++
++void
++attribute_hidden
++__check_pf (bool *seen_ipv4, bool *seen_ipv6)
++{
++ if (! __no_netlink_support)
++ {
++ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
++
++ struct sockaddr_nl nladdr;
++ memset (&nladdr, '\0', sizeof (nladdr));
++ nladdr.nl_family = AF_NETLINK;
++
++ socklen_t addr_len = sizeof (nladdr);
++
++ if (fd >= 0
++ && __bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
++ && __getsockname (fd, (struct sockaddr *) &nladdr, &addr_len) == 0
++ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6) == 0)
++ /* It worked. */
++ return;
++
++ if (fd >= 0)
++ __close (fd);
++
++#if __ASSUME_NETLINK_SUPPORT == 0
++ /* Remember that there is no netlink support. */
++ __no_netlink_support = 1;
++#else
++ /* We cannot determine what interfaces are available. Be
++ pessimistic. */
++ *seen_ipv4 = true;
++ *seen_ipv6 = true;
++#endif
++ }
++
++#if __ASSUME_NETLINK_SUPPORT == 0
++ /* No netlink. Get the interface list via getifaddrs. */
++ struct ifaddrs *ifa = NULL;
++ if (getifaddrs (&ifa) != 0)
++ {
++ /* We cannot determine what interfaces are available. Be
++ pessimistic. */
++ *seen_ipv4 = true;
++ *seen_ipv6 = true;
++ return;
++ }
++
++ *seen_ipv4 = false;
++ *seen_ipv6 = false;
++
++ struct ifaddrs *runp;
++ for (runp = ifa; runp != NULL; runp = runp->ifa_next)
++ if (runp->ifa_addr->sa_family == PF_INET)
++ *seen_ipv4 = true;
++ else if (runp->ifa_addr->sa_family == PF_INET6)
++ *seen_ipv6 = true;
++
++ (void) freeifaddrs (ifa);
++#endif
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_getres.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_getres.c 2003-03-02 23:48:47.000000000 -0500
+@@ -0,0 +1,76 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#include "kernel-features.h"
++
++
++#ifdef __ASSUME_POSIX_TIMERS
++/* This means the REALTIME and MONOTONIC clock are definitely
++ supported in the kernel. */
++# define SYSDEP_GETRES \
++ case CLOCK_REALTIME: \
++ case CLOCK_MONOTONIC: \
++ retval = INLINE_SYSCALL (clock_getres, 2, clock_id, res); \
++ break
++#elif defined __NR_clock_getres
++/* Is the syscall known to exist? */
++extern int __libc_missing_posix_timers attribute_hidden;
++
++/* The REALTIME and MONOTONIC clock might be available. Try the
++ syscall first. */
++# define SYSDEP_GETRES \
++ case CLOCK_REALTIME: \
++ case CLOCK_MONOTONIC: \
++ { \
++ int e = EINVAL; \
++ \
++ if (!__libc_missing_posix_timers) \
++ { \
++ INTERNAL_SYSCALL_DECL (err); \
++ int r = INTERNAL_SYSCALL (clock_getres, err, 2, clock_id, res); \
++ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
++ { \
++ retval = 0; \
++ break; \
++ } \
++ \
++ e = INTERNAL_SYSCALL_ERRNO (r, err); \
++ if (e == ENOSYS) \
++ { \
++ __libc_missing_posix_timers = 1; \
++ e = EINVAL; \
++ } \
++ } \
++ \
++ /* Fallback code. */ \
++ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
++ HANDLE_REALTIME; \
++ else \
++ __set_errno (e); \
++ } \
++ break
++#endif
++
++#ifdef __NR_clock_getres
++/* We handled the REALTIME clock here. */
++# define HANDLED_REALTIME 1
++#endif
++
++#include <sysdeps/posix/clock_getres.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_gettime.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_gettime.c 2003-03-02 23:49:06.000000000 -0500
+@@ -0,0 +1,76 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#include "kernel-features.h"
++
++
++#ifdef __ASSUME_POSIX_TIMERS
++/* This means the REALTIME and MONOTONIC clock are definitely
++ supported in the kernel. */
++# define SYSDEP_GETTIME \
++ case CLOCK_REALTIME: \
++ case CLOCK_MONOTONIC: \
++ retval = INLINE_SYSCALL (clock_gettime, 2, clock_id, tp); \
++ break
++#elif defined __NR_clock_gettime
++/* Is the syscall known to exist? */
++int __libc_missing_posix_timers attribute_hidden;
++
++/* The REALTIME and MONOTONIC clock might be available. Try the
++ syscall first. */
++# define SYSDEP_GETTIME \
++ case CLOCK_REALTIME: \
++ case CLOCK_MONOTONIC: \
++ { \
++ int e = EINVAL; \
++ \
++ if (!__libc_missing_posix_timers) \
++ { \
++ INTERNAL_SYSCALL_DECL (err); \
++ int r = INTERNAL_SYSCALL (clock_gettime, err, 2, clock_id, tp); \
++ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
++ { \
++ retval = 0; \
++ break; \
++ } \
++ \
++ e = INTERNAL_SYSCALL_ERRNO (r, err); \
++ if (e == ENOSYS) \
++ { \
++ __libc_missing_posix_timers = 1; \
++ e = EINVAL; \
++ } \
++ } \
++ \
++ /* Fallback code. */ \
++ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
++ HANDLE_REALTIME; \
++ else \
++ __set_errno (e); \
++ } \
++ break
++#endif
++
++#ifdef __NR_clock_gettime
++/* We handled the REALTIME clock here. */
++# define HANDLED_REALTIME 1
++#endif
++
++#include <sysdeps/unix/clock_gettime.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_nanosleep.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_nanosleep.c 2003-08-21 08:37:11.000000000 -0400
+@@ -0,0 +1,81 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <time.h>
++
++#include <sysdep-cancel.h>
++#include "kernel-features.h"
++
++
++#ifdef __ASSUME_POSIX_TIMERS
++/* We can simply use the syscall. The CPU clocks are not supported
++ with this function. */
++int
++clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
++ struct timespec *rem)
++{
++ INTERNAL_SYSCALL_DECL (err);
++ int r;
++
++ if (SINGLE_THREAD_P)
++ r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, req, rem);
++ else
++ {
++ int oldstate = LIBC_CANCEL_ASYNC ();
++
++ r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, req,
++ rem);
++
++ LIBC_CANCEL_RESET (oldstate);
++ }
++
++ return (INTERNAL_SYSCALL_ERROR_P (r, err)
++ ? INTERNAL_SYSCALL_ERRNO (r, err) : 0);
++}
++
++#else
++# ifdef __NR_clock_nanosleep
++/* Is the syscall known to exist? */
++extern int __libc_missing_posix_timers attribute_hidden;
++
++/* The REALTIME and MONOTONIC clock might be available. Try the
++ syscall first. */
++# define SYSDEP_NANOSLEEP \
++ if (!__libc_missing_posix_timers) \
++ { \
++ INTERNAL_SYSCALL_DECL (err); \
++ \
++ int oldstate = LIBC_CANCEL_ASYNC (); \
++ \
++ int r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, clock_id, flags, \
++ req, rem); \
++ \
++ LIBC_CANCEL_RESET (oldstate); \
++ \
++ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
++ return 0; \
++ \
++ if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS) \
++ return INTERNAL_SYSCALL_ERRNO (r, err); \
++ \
++ __libc_missing_posix_timers = 1; \
++ }
++# endif
++
++# include <sysdeps/unix/clock_nanosleep.c>
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/clock_settime.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/clock_settime.c 2003-03-02 23:49:24.000000000 -0500
+@@ -0,0 +1,73 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#include "kernel-features.h"
++
++
++#ifdef __ASSUME_POSIX_TIMERS
++/* This means the REALTIME clock is definitely supported in the
++ kernel. */
++# define SYSDEP_SETTIME \
++ case CLOCK_REALTIME: \
++ retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \
++ break
++#elif defined __NR_clock_settime
++/* Is the syscall known to exist? */
++extern int __libc_missing_posix_timers attribute_hidden;
++
++/* The REALTIME clock might be available. Try the syscall first. */
++# define SYSDEP_SETTIME \
++ case CLOCK_REALTIME: \
++ { \
++ int e = EINVAL; \
++ \
++ if (!__libc_missing_posix_timers) \
++ { \
++ INTERNAL_SYSCALL_DECL (err); \
++ int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp); \
++ if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
++ { \
++ retval = 0; \
++ break; \
++ } \
++ \
++ e = INTERNAL_SYSCALL_ERRNO (r, err); \
++ if (e == ENOSYS) \
++ { \
++ __libc_missing_posix_timers = 1; \
++ e = EINVAL; \
++ } \
++ } \
++ \
++ /* Fallback code. */ \
++ if (e == EINVAL && clock_id == CLOCK_REALTIME) \
++ HANDLE_REALTIME; \
++ else \
++ __set_errno (e); \
++ } \
++ break
++#endif
++
++#ifdef __NR_clock_settime
++/* We handled the REALTIME clock here. */
++# define HANDLED_REALTIME 1
++#endif
++
++#include <sysdeps/unix/clock_settime.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/configure 2003-02-25 20:07:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/configure 2003-04-12 11:39:48.000000000 -0400
+@@ -44,7 +44,11 @@
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <linux/version.h>
+ #if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE < (2 *65536+ 0 *256+ 10) /* 2.0.10 */
+ eat flaming death
+@@ -165,7 +169,11 @@
+ abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
+ cat >conftest.$ac_ext <<_ACEOF
+ #line $LINENO "configure"
+-#include "confdefs.h"
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
+ #include <linux/version.h>
+ #if LINUX_VERSION_CODE < $decnum
+ eat flaming death
+@@ -216,7 +224,8 @@
+ /usr | /usr/)
+ # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib
+ case $machine in
+- sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 )
++ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \
++ mips/mips64/n64/* )
+ libc_cv_slibdir="/lib64"
+ if test "$libdir" = '${exec_prefix}/lib'; then
+ libdir='${exec_prefix}/lib64';
+@@ -224,6 +233,14 @@
+ libc_cv_localedir='${exec_prefix}/lib/locale'
+ fi
+ ;;
++ mips/mips64/n32/* )
++ libc_cv_slibdir="/lib32"
++ if test "$libdir" = '${exec_prefix}/lib'; then
++ libdir='${exec_prefix}/lib32';
++ # Locale data can be shared between 32bit and 64bit libraries
++ libc_cv_localedir='${exec_prefix}/lib/locale'
++ fi
++ ;;
+ *)
+ libc_cv_slibdir="/lib"
+ ;;
+@@ -303,6 +320,9 @@
+ ia64*)
+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
+ ;;
++ mips/*64*)
++ ldd_rewrite_script=../sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
++ ;;
+ s390*)
+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
+ ;;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/configure.in 2003-02-01 15:22:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/configure.in 2003-04-12 11:39:48.000000000 -0400
+@@ -157,7 +157,8 @@
+ /usr | /usr/)
+ # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib
+ case $machine in
+- sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 )
++ sparc/sparc64 | x86_64 | powerpc/powerpc64 | s390/s390-64 | \
++ mips/mips64/n64/* )
+ libc_cv_slibdir="/lib64"
+ if test "$libdir" = '${exec_prefix}/lib'; then
+ libdir='${exec_prefix}/lib64';
+@@ -165,6 +166,14 @@
+ libc_cv_localedir='${exec_prefix}/lib/locale'
+ fi
+ ;;
++ mips/mips64/n32/* )
++ libc_cv_slibdir="/lib32"
++ if test "$libdir" = '${exec_prefix}/lib'; then
++ libdir='${exec_prefix}/lib32';
++ # Locale data can be shared between 32bit and 64bit libraries
++ libc_cv_localedir='${exec_prefix}/lib/locale'
++ fi
++ ;;
+ *)
+ libc_cv_slibdir="/lib"
+ ;;
+@@ -244,6 +253,9 @@
+ ia64*)
+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed
+ ;;
++ mips/*64*)
++ ldd_rewrite_script=../sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed
++ ;;
+ s390*)
+ ldd_rewrite_script=../sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed
+ ;;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/cris/Makefile 2002-10-14 00:04:15.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/cris/Makefile 1969-12-31 19:00:00.000000000 -0500
+@@ -1,4 +0,0 @@
+-ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending
+-endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/cris/sysdep.h 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/cris/sysdep.h 2003-08-21 08:37:13.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Assembler macros for CRIS.
+- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -106,6 +106,18 @@
+ PLTJUMP (syscall_error) @ \
+ END (name)
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ ENTRY (name) @ \
++ DOARGS_##args @ \
++ movu.w SYS_ify (syscall_name),$r9 @ \
++ break 13 @ \
++ UNDOARGS_return_##args
++
++#define ret_NOERRNO
++
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
+ #define DOARGS_0
+ #define DOARGS_1
+ #define DOARGS_2
+@@ -158,7 +170,7 @@
+ __set_errno (- __sys_res); \
+ __sys_res = (unsigned long) -1; \
+ } \
+- __sys_res; \
++ (long int) __sys_res; \
+ })
+
+ #define LOAD_ARGS_c_0()
+@@ -197,7 +209,7 @@
+ #define LOAD_ARGS_c_5(r10, r11, r12, r13, mof) \
+ LOAD_ARGS_c_4(r10, r11, r12, r13)
+ #define LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
+- LOAD_ARGS_asm_4 (r10, r11, r12, r13) "move %5,$mof\n\t"
++ LOAD_ARGS_asm_4 (r10, r11, r12, r13) "move %6,$mof\n\t"
+ #define ASM_CLOBBER_5 ASM_CLOBBER_4
+ #define ASM_ARGS_5(r10, r11, r12, r13, mof) \
+ ASM_ARGS_4 (r10, r11, r12, r13), "g" (mof)
+@@ -206,7 +218,7 @@
+ LOAD_ARGS_c_5(r10, r11, r12, r13, mof)
+ #define LOAD_ARGS_asm_6(r10, r11, r12, r13, mof, srp) \
+ LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
+- "move %6,$srp\n\t"
++ "move %7,$srp\n\t"
+ #define ASM_CLOBBER_6 ASM_CLOBBER_5, "srp"
+ #define ASM_ARGS_6(r10, r11, r12, r13, mof, srp) \
+ ASM_ARGS_5 (r10, r11, r12, r13, mof), "g" (srp)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/execve.c 2002-10-11 03:58:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/execve.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,11 +24,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_execve (const char *__unbounded file,
+- char *__unbounded const *__unbounded argv,
+- char *__unbounded const *__unbounded envp);
+-
+-
+ int
+ __execve (file, argv, envp)
+ const char *file;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fatal-prepare.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fatal-prepare.h 2003-04-19 12:53:22.000000000 -0400
+@@ -0,0 +1,39 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <pthread.h>
++
++/* We have to completely disable cancellation. assert() must not be a
++ cancellation point but the implementation uses write() etc. */
++#ifdef SHARED
++# include <pthread-functions.h>
++# define FATAL_PREPARE \
++ { \
++ int (*fp) (int, int *); \
++ fp = __libc_pthread_functions.ptr_pthread_setcancelstate; \
++ if (fp != NULL) \
++ fp (PTHREAD_CANCEL_DISABLE, NULL); \
++ }
++#else
++# pragma weak pthread_setcancelstate
++# define FATAL_PREPARE \
++ { \
++ if (pthread_setcancelstate != NULL) \
++ pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL); \
++ }
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fcntl.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fcntl.c 2003-09-05 03:50:17.000000000 -0400
+@@ -0,0 +1,67 @@
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <assert.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <stdarg.h>
++
++#include <sysdep-cancel.h>
++#include <sys/syscall.h>
++
++
++int
++__fcntl_nocancel (int fd, int cmd, ...)
++{
++ va_list ap;
++ void *arg;
++
++ va_start (ap, cmd);
++ arg = va_arg (ap, void *);
++ va_end (ap);
++
++ return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
++}
++
++
++int
++__libc_fcntl (int fd, int cmd, ...)
++{
++ va_list ap;
++ void *arg;
++
++ va_start (ap, cmd);
++ arg = va_arg (ap, void *);
++ va_end (ap);
++
++ if (SINGLE_THREAD_P || cmd != F_SETLKW)
++ return __fcntl_nocancel (fd, cmd, arg);
++
++ int oldtype = LIBC_CANCEL_ASYNC ();
++
++ int result = __fcntl_nocancel (fd, cmd, arg);
++
++ LIBC_CANCEL_RESET (oldtype);
++
++ return result;
++}
++libc_hidden_def (__libc_fcntl)
++
++weak_alias (__libc_fcntl, __fcntl)
++libc_hidden_weak (__fcntl)
++weak_alias (__libc_fcntl, fcntl)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fpathconf.c 2002-10-23 02:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fpathconf.c 2003-08-21 08:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Get file-specific information about descriptor FD. Linux version.
+- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995,1996,1998-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,9 +37,14 @@
+ switch (name)
+ {
+ case _PC_LINK_MAX:
+- return statfs_link_max (__fstatfs (fd, &fsbuf), &fsbuf);
++ return __statfs_link_max (__fstatfs (fd, &fsbuf), &fsbuf);
++
+ case _PC_FILESIZEBITS:
+- return statfs_filesize_max (__fstatfs (fd, &fsbuf), &fsbuf);
++ return __statfs_filesize_max (__fstatfs (fd, &fsbuf), &fsbuf);
++
++ case _PC_2_SYMLINKS:
++ return __statfs_symlinks (__fstatfs (fd, &fsbuf), &fsbuf);
++
+ default:
+ return posix_fpathconf (fd, name);
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fstatfs64.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fstatfs64.c 2003-08-21 08:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Return information about the filesystem on which FD resides.
+- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,11 +21,34 @@
+ #include <string.h>
+ #include <sys/statfs.h>
+ #include <stddef.h>
++#include <sysdep.h>
++
++/* Defined in statfs64.c. */
++extern int __no_statfs64 attribute_hidden;
+
+ /* Return information about the filesystem on which FD resides. */
+ int
+ __fstatfs64 (int fd, struct statfs64 *buf)
+ {
++#ifdef __NR_fstatfs64
++# if __ASSUME_STATFS64 == 0
++ if (! __no_statfs64)
++# endif
++ {
++ int result = INLINE_SYSCALL (fstatfs64, 3, fd, sizeof (*buf), buf);
++
++# if __ASSUME_STATFS64 == 0
++ if (result == 0 || errno != ENOSYS)
++# endif
++ return result;
++
++# if __ASSUME_STATFS64 == 0
++ __no_statfs64 = 1;
++# endif
++ }
++#endif
++
++#if __ASSUME_STATFS64 == 0
+ struct statfs buf32;
+
+ if (__fstatfs (fd, &buf32) < 0)
+@@ -40,8 +63,10 @@
+ buf->f_ffree = buf32.f_ffree;
+ buf->f_fsid = buf32.f_fsid;
+ buf->f_namelen = buf32.f_namelen;
++ buf->f_frsize = buf32.f_frsize;
+ memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
+
+ return 0;
++#endif
+ }
+ weak_alias (__fstatfs64, fstatfs64)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fstatvfs.c 2002-09-21 01:37:05.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fstatvfs.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -17,16 +17,14 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <errno.h>
+-#include <mntent.h>
+-#include <paths.h>
+-#include <stdio_ext.h>
+-#include <string.h>
+-#include <sys/mount.h>
++#include <stddef.h>
+ #include <sys/stat.h>
+ #include <sys/statfs.h>
+ #include <sys/statvfs.h>
+
++extern void __internal_statvfs (const char *name, struct statvfs *buf,
++ struct statfs *fsbuf, struct stat64 *st);
++
+
+ int
+ fstatvfs (int fd, struct statvfs *buf)
+@@ -38,8 +36,8 @@
+ if (__fstatfs (fd, &fsbuf) < 0)
+ return -1;
+
+-#define STAT(st) fstat64 (fd, st)
+-#include "internal_statvfs.c"
++ /* Convert the result. */
++ __internal_statvfs (NULL, buf, &fsbuf, fstat64 (fd, &st) == -1 ? NULL : &st);
+
+ /* We signal success if the statfs call succeeded. */
+ return 0;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ftruncate64.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ftruncate64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,9 +32,6 @@
+ extern int __have_no_truncate64;
+ #endif
+
+-/* The order of hight, low depends on endianness. */
+-extern int __syscall_ftruncate64 (int fd, int high_length, int low_length);
+-
+
+ /* Truncate the file FD refers to to LENGTH bytes. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/futimes.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/futimes.c 2003-07-31 15:04:13.000000000 -0400
+@@ -0,0 +1,70 @@
++/* futimes -- change access and modification times of open file. Linux version.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <sysdep.h>
++#include <string.h>
++#include <utime.h>
++#include <sys/time.h>
++#include <stdio-common/_itoa.h>
++
++#include "kernel-features.h"
++
++/* Change the access time of FILE to TVP[0] and
++ the modification time of FILE to TVP[1], but do not follow symlinks.
++
++ The Linux kernel has no futimes() syscall so we use the /proc
++ filesystem. */
++int
++__futimes (int fd, const struct timeval tvp[2])
++{
++ static const char selffd[] = "/proc/self/fd/";
++ char fname[sizeof (selffd) + 3 * sizeof (int)];
++ fname[sizeof (fname) - 1] = '\0';
++ char *cp = _itoa_word ((unsigned int) fd, fname + sizeof (fname) - 1, 10, 0);
++ cp = memcpy (cp - sizeof (selffd) + 1, selffd, sizeof (selffd) - 1);
++
++#ifdef __NR_utimes
++ int result = INLINE_SYSCALL (utimes, 2, cp, tvp);
++# ifndef __ASSUME_UTIMES
++ if (result != -1 || errno != ENOSYS)
++# endif
++ return result;
++#endif
++
++ /* The utimes() syscall does not exist or is not available in the
++ used kernel. Use utime(). For this we have to convert to the
++ data format utime() expects. */
++#ifndef __ASSUME_UTIMES
++ struct utimbuf buf;
++ struct utimbuf *times;
++
++ if (tvp != NULL)
++ {
++ times = &buf;
++ buf.actime = tvp[0].tv_sec + (tvp[0].tv_usec + 500000) / 1000000;
++ buf.modtime = tvp[1].tv_sec + (tvp[1].tv_usec + 500000) / 1000000;
++ }
++ else
++ times = NULL;
++
++ return INLINE_SYSCALL (utime, 2, cp, times);
++#endif
++}
++weak_alias (__futimes, futimes)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat.c 2002-10-02 04:53:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat.c 2003-08-21 08:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* fxstat using old-style Unix fstat system call.
+- Copyright (C) 1991,1995-1998,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995-1998,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,9 +31,7 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-#include <xstatconv.c>
+-
+-extern int __syscall_fstat (int, struct kernel_stat *__unbounded);
++#include <xstatconv.h>
+
+ /* Get information about the file FD in BUF. */
+ int
+@@ -51,7 +49,7 @@
+
+ result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat_conv (vers, &kbuf, buf);
++ result = __xstat_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat64.c 2002-10-11 14:58:50.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/fxstat64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* fxstat64 using old-style Unix fstat system call.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,13 +29,10 @@
+ #include "kernel-features.h"
+
+ #if __ASSUME_STAT64_SYSCALL == 0
+-# include <xstatconv.c>
++# include <xstatconv.h>
+ #endif
+
+-extern int __syscall_fstat (int, struct kernel_stat *__unbounded);
+-
+ #ifdef __NR_fstat64
+-extern int __syscall_fstat64 (int, struct stat64 *__unbounded);
+ # if __ASSUME_STAT64_SYSCALL == 0
+ /* The variable is shared between all wrappers around *stat64 calls. */
+ extern int __have_no_stat64;
+@@ -78,7 +75,7 @@
+ # endif
+ result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat64_conv (vers, &kbuf, buf);
++ result = __xstat64_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/gai_sigqueue.c 2001-08-17 02:41:53.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/gai_sigqueue.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,8 +28,6 @@
+ #include "gai_misc.h"
+
+ #ifdef __NR_rt_sigqueueinfo
+-extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *__unbounded);
+-
+
+ /* Return any pending signal or wait for one for the given time. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/getcwd.c 2002-09-24 01:12:26.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/getcwd.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Determine current working directory. Linux version.
+- Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -31,11 +31,17 @@
+ #include "kernel-features.h"
+
+
++/* If we compile the file for use in ld.so we don't need the feature
++ that getcwd() allocates the buffers itself. */
++#ifdef IS_IN_rtld
++# define NO_ALLOCATION 1
++#endif
++
++
+ #if __ASSUME_GETCWD_SYSCALL > 0
+ /* Kernel 2.1.92 introduced a third way to get the current working
+ directory: a syscall. We've got to be careful that even when
+ compiling under 2.1.92+ the libc still runs under older kernels. */
+-extern int __syscall_getcwd (char *__unbounded buf, unsigned long size);
+ # define no_syscall_getcwd 0
+ # define have_new_dcache 1
+ /* This is a trick since we don't define generic_getcwd. */
+@@ -52,7 +58,6 @@
+ /* Kernel 2.1.92 introduced a third way to get the current working
+ directory: a syscall. We've got to be careful that even when
+ compiling under 2.1.92+ the libc still runs under older kernels. */
+-extern int __syscall_getcwd (char *__unbounded buf, unsigned long size);
+ static int no_syscall_getcwd;
+ static int have_new_dcache;
+ # else
+@@ -67,11 +72,12 @@
+ char *path;
+ int n;
+ char *result;
+- size_t alloc_size = size;
+
+ if (no_syscall_getcwd && !have_new_dcache)
+ return generic_getcwd (buf, size);
+
++#ifndef NO_ALLOCATION
++ size_t alloc_size = size;
+ if (size == 0)
+ {
+ if (buf != NULL)
+@@ -83,14 +89,17 @@
+ alloc_size = PATH_MAX;
+ }
+
+- if (buf != NULL)
+- path = buf;
+- else
++ if (buf == NULL)
+ {
+ path = malloc (alloc_size);
+ if (path == NULL)
+ return NULL;
+ }
++ else
++#else
++# define alloc_size size
++#endif
++ path = buf;
+
+ #if defined __NR_getcwd || __LINUX_GETCWD_SYSCALL > 0
+ if (!no_syscall_getcwd)
+@@ -100,6 +109,7 @@
+ retval = INLINE_SYSCALL (getcwd, 2, CHECK_STRING (path), alloc_size);
+ if (retval >= 0)
+ {
++# ifndef NO_ALLOCATION
+ if (buf == NULL && size == 0)
+ /* Ensure that the buffer is only as large as necessary. */
+ buf = realloc (path, (size_t) retval);
+@@ -108,6 +118,7 @@
+ /* Either buf was NULL all along, or `realloc' failed but
+ we still have the original string. */
+ buf = path;
++# endif
+
+ return buf;
+ }
+@@ -118,8 +129,10 @@
+ large enough. */
+ assert (errno != ERANGE || buf != NULL || size != 0);
+
++# ifndef NO_ALLOCATION
+ if (buf == NULL)
+ free (path);
++# endif
+
+ return NULL;
+ # else
+@@ -130,8 +143,10 @@
+ }
+ else if (errno != ERANGE || buf != NULL)
+ {
++# ifndef NO_ALLOCATION
+ if (buf == NULL)
+ free (path);
++# endif
+ return NULL;
+ }
+ # endif
+@@ -145,12 +160,15 @@
+ {
+ if ((size_t) n >= alloc_size - 1)
+ {
++#ifndef NO_ALLOCATION
+ if (buf == NULL)
+ free (path);
++#endif
+ return NULL;
+ }
+
+ path[n] = '\0';
++#ifndef NO_ALLOCATION
+ if (buf == NULL && size == 0)
+ /* Ensure that the buffer is only as large as necessary. */
+ buf = realloc (path, (size_t) n + 1);
+@@ -158,6 +176,7 @@
+ /* Either buf was NULL all along, or `realloc' failed but
+ we still have the original string. */
+ buf = path;
++#endif
+
+ return buf;
+ }
+@@ -174,17 +193,21 @@
+ have_new_dcache = 0;
+ #endif
+
++#ifndef NO_ALLOCATION
+ /* Don't put restrictions on the length of the path unless the user does. */
+ if (size == 0)
+ {
+ free (path);
+ path = NULL;
+ }
++#endif
+
+ result = generic_getcwd (path, size);
+
++#ifndef NO_ALLOCATION
+ if (result == NULL && buf == NULL && size != 0)
+ free (path);
++#endif
+
+ return result;
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/getdents.c 2002-12-29 21:23:37.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/getdents.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993, 1995-2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993, 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -48,9 +48,6 @@
+
+ #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+
+-extern int __syscall_getdents (int fd, char *__unbounded buf, unsigned int nbytes);
+-extern int __syscall_getdents64 (int fd, char *__unbounded buf, unsigned int nbytes);
+-
+ /* For Linux we need a special version of this file since the
+ definition of `struct dirent' is not the same for the kernel and
+ the libc. There is one additional field which might be introduced
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/gethostid.c 2002-09-24 01:12:26.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/gethostid.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995,1996,1998,1999,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1998-2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,6 +21,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <netdb.h>
++#include <not-cancel.h>
+
+ #define HOSTIDFILE "/etc/hostid"
+ #define OLD_HOSTIDFILE "/etc/hostid"
+@@ -41,13 +42,13 @@
+ }
+
+ /* Open file for writing. Everybody is allowed to read this file. */
+- fd = __open64 (HOSTIDFILE, O_CREAT|O_WRONLY|O_TRUNC, 0644);
++ fd = open_not_cancel (HOSTIDFILE, O_CREAT|O_WRONLY|O_TRUNC, 0644);
+ if (fd < 0)
+ return -1;
+
+- written = __write (fd, &id, sizeof (id));
++ written = write_not_cancel (fd, &id, sizeof (id));
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ return written != sizeof (id) ? -1 : 0;
+ }
+@@ -71,14 +72,14 @@
+ int fd;
+
+ /* First try to get the ID from a former invocation of sethostid. */
+- fd = __open64 (HOSTIDFILE, O_RDONLY);
++ fd = open_not_cancel (HOSTIDFILE, O_RDONLY|O_LARGEFILE, 0);
+ if (fd < 0)
+- fd = __open64 (OLD_HOSTIDFILE, O_RDONLY);
++ fd = open_not_cancel (OLD_HOSTIDFILE, O_RDONLY|O_LARGEFILE, 0);
+ if (fd >= 0)
+ {
+- ssize_t n = __read (fd, &id, sizeof (id));
++ ssize_t n = read_not_cancel (fd, &id, sizeof (id));
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ if (n == sizeof (id))
+ return id;
+@@ -100,11 +101,8 @@
+ if (herr != NETDB_INTERNAL || errno != ERANGE)
+ return 0;
+ else
+- {
+- /* Enlarge buffer. */
+- buflen *= 2;
+- buffer = __alloca (buflen);
+- }
++ /* Enlarge buffer. */
++ buffer = extend_alloca (buffer, buflen, 2 * buflen);
+
+ in.s_addr = 0;
+ memcpy (&in, hp->h_addr,
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/getloadavg.c 2002-04-08 03:02:27.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/getloadavg.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Get system load averages. Linux (/proc/loadavg) version.
+- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,6 +22,7 @@
+ #include <locale.h>
+ #include <stdlib.h>
+ #include <unistd.h>
++#include <not-cancel.h>
+
+ /* Put the 1 minute, 5 minute and 15 minute load averages
+ into the first NELEM elements of LOADAVG.
+@@ -33,7 +34,7 @@
+ {
+ int fd;
+
+- fd = __open ("/proc/loadavg", O_RDONLY);
++ fd = open_not_cancel_2 ("/proc/loadavg", O_RDONLY);
+ if (fd < 0)
+ return -1;
+ else
+@@ -42,8 +43,8 @@
+ ssize_t nread;
+ int i;
+
+- nread = __read (fd, buf, sizeof buf - 1);
+- __close (fd);
++ nread = read_not_cancel (fd, buf, sizeof buf - 1);
++ close_not_cancel_no_status (fd);
+ if (nread < 0)
+ return -1;
+ buf[nread - 1] = '\0';
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/getpriority.c 2002-08-04 00:32:53.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/getpriority.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* getpriority for Linux.
+- Copyright (C) 1996,98,2000,02 Free Software Foundation, Inc.
++ Copyright (C) 1996,98,2000,02,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,9 +23,7 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_getpriority (int, id_t);
+-
+-/* The return value of __syscall_getpriority is biased by this value
++/* The return value of getpriority syscall is biased by this value
+ to avoid returning negative values. */
+ #define PZERO 20
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/getsysstats.c 2002-11-01 21:16:02.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/getsysstats.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Determine various system internal values, Linux version.
+- Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -31,7 +31,7 @@
+ #include <unistd.h>
+ #include <sys/sysinfo.h>
+
+-#include <atomicity.h>
++#include <atomic.h>
+
+
+ /* The default value for the /proc filesystem mount point. */
+@@ -85,8 +85,7 @@
+
+ /* Now store the copied value. But do it atomically. */
+ assert (sizeof (long int) == sizeof (void *__unbounded));
+- if (compare_and_swap ((long int *) &mount_proc, (long int) 0,
+- (long int) copy_result) == 0)
++ if (atomic_compare_and_exchange_bool_acq (&mount_proc, copy_result, NULL))
+ /* Replacing the value failed. This means another thread was
+ faster and we don't need the copy anymore. */
+ free (copy_result);
+@@ -155,7 +154,7 @@
+ /* The /proc/stat format is more uniform, use it by default. */
+ __stpcpy (__stpcpy (proc_fname, proc_path), "/stat");
+
+- fp = fopen (proc_fname, "r");
++ fp = fopen (proc_fname, "rc");
+ if (fp != NULL)
+ {
+ /* No threads use this stream. */
+@@ -172,7 +171,7 @@
+ {
+ __stpcpy (__stpcpy (proc_fname, proc_path), "/cpuinfo");
+
+- fp = fopen (proc_fname, "r");
++ fp = fopen (proc_fname, "rc");
+ if (fp != NULL)
+ {
+ /* No threads use this stream. */
+@@ -210,7 +209,7 @@
+ char *proc_cpuinfo = alloca (strlen (proc_path) + sizeof ("/cpuinfo"));
+ __stpcpy (__stpcpy (proc_cpuinfo, proc_path), "/cpuinfo");
+
+- fp = fopen (proc_cpuinfo, "r");
++ fp = fopen (proc_cpuinfo, "rc");
+ if (fp != NULL)
+ {
+ /* No threads use this stream. */
+@@ -250,7 +249,7 @@
+ char *proc_meminfo = alloca (strlen (proc_path) + sizeof ("/meminfo"));
+ __stpcpy (__stpcpy (proc_meminfo, proc_path), "/meminfo");
+
+- fp = fopen (proc_meminfo, "r");
++ fp = fopen (proc_meminfo, "rc");
+ if (fp != NULL)
+ {
+ /* No threads use this stream. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/mman.h 2000-10-14 23:12:00.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
+@@ -1,4 +1,21 @@
+-/* Definitions for POSIX memory map interface. Insert rest of disclaimer here */
++/* Definitions for POSIX memory map interface. Linux/HPPA version.
++ Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
+
+ #ifndef _SYS_MMAN_H
+ # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
+@@ -22,6 +39,8 @@
+ #define MAP_LOCKED 0x2000 /* pages are locked */
+ #define MAP_NORESERVE 0x4000 /* don't check for reservations */
+ #define MAP_GROWSDOWN 0x8000 /* stack-like segment */
++#define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
++#define MAP_NONBLOCK 0x20000 /* do not block on IO */
+
+ #define MS_SYNC 1 /* synchronous memory sync */
+ #define MS_ASYNC 2 /* sync memory asynchronously */
+@@ -58,4 +77,3 @@
+ #ifdef __USE_GNU
+ # define MREMAP_MAYMOVE 1
+ #endif
+-
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/signum.h 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/bits/signum.h 2003-04-12 11:39:49.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Signal number definitions. Linux/HPPA version.
+- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -68,7 +68,7 @@
+ #define SIGXFSZ 34 /* File size limit exceeded (4.2 BSD). */
+ #define SIGSTKFLT 36 /* Stack fault. */
+
+-#define _NSIG 64 /* Biggest signal number + 1
++#define _NSIG 65 /* Biggest signal number + 1
+ (including real-time signals). */
+
+ #define SIGRTMIN (__libc_current_sigrtmin ())
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/syscalls.list 2003-01-30 22:39:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/syscalls.list 2003-09-19 22:37:09.000000000 -0400
+@@ -10,6 +10,7 @@
+ shmdt - shmdt i:s __shmdt shmdt
+ shmget - shmget i:iii __shmget shmget
+ semop - semop i:ipi __semop semop
++semtimedop - semtimedop i:ipip semtimedop
+ semget - semget i:iii __semget semget
+ semctl - semctl i:iiii __semctl semctl
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2002-08-26 17:16:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/hppa/sysdep.h 2003-04-12 11:39:49.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Assembler macros for PA-RISC.
+- Copyright (C) 1999,2001,02 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
+ Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
+@@ -84,6 +84,10 @@
+ bv 0(2) ASM_LINE_SEP \
+ nop
+
++#define ret_NOERRNO \
++ bv 0(2) ASM_LINE_SEP \
++ nop
++
+ #undef END
+ #define END(name) \
+ 1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
+@@ -115,6 +119,15 @@
+ #define PSEUDO_END(name) \
+ END (name)
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ ENTRY (name) \
++ DO_CALL(syscall_name, args) ASM_LINE_SEP \
++ nop
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
+ #define JUMPTARGET(name) name
+ #define SYSCALL_PIC_SETUP /* Nothing. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/Versions 2002-08-25 03:43:06.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/Versions 2003-09-19 22:37:09.000000000 -0400
+@@ -33,6 +33,9 @@
+ # v*
+ versionsort64;
+ }
++ GLIBC_2.3.3 {
++ posix_fadvise64; posix_fallocate64;
++ }
+ GLIBC_PRIVATE {
+ __modify_ldt;
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
+@@ -0,0 +1,3 @@
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/mman.h 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/i386 version.
+- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,11 +52,13 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x2000 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bp-thunks.h 2003-01-15 17:10:10.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/bp-thunks.h 2003-05-12 12:13:11.000000000 -0400
+@@ -1,3 +1,4 @@
+-#include <sysdeps/generic/bp-thunks.h>
+-
+-#include <sys/vm86.h>
++#ifndef __ASSEMBLER__
++# include <sysdeps/generic/bp-thunks.h>
++# include <sys/vm86.h>
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/chown.c 2002-08-02 17:46:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/chown.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,9 +37,6 @@
+ has therefore to route calls to chown to the old chown function.
+ */
+
+-extern int __syscall_chown (const char *__file,
+- __kernel_uid_t __owner, __kernel_gid_t __group);
+-
+ extern int __chown_is_lchown (const char *__file, uid_t __owner,
+ gid_t __group);
+ extern int __real_chown (const char *__file, uid_t __owner, gid_t __group);
+@@ -49,8 +46,6 @@
+ /* Running under Linux > 2.1.80. */
+
+ # ifdef __NR_chown32
+-extern int __syscall_chown32 (const char *__file,
+- __kernel_uid32_t owner, __kernel_gid32_t group);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+@@ -148,20 +143,15 @@
+ #endif
+
+ #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+-strong_alias (__chown_is_lchown, _chown_is_lchown)
+-compat_symbol (libc, __chown_is_lchown, __chown, GLIBC_2_0);
+-compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0);
++compat_symbol (libc, __chown_is_lchown, chown, GLIBC_2_0);
+ #endif
+
+ #ifdef __NR_lchown
+-strong_alias (__real_chown, _real_chown)
+-versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1);
+-versioned_symbol (libc, _real_chown, chown, GLIBC_2_1);
+-libc_hidden_ver (__real_chown, __chown)
++versioned_symbol (libc, __real_chown, chown, GLIBC_2_1);
++strong_alias (__real_chown, __chown)
+ #else
+ strong_alias (__chown_is_lchown, __chown_is_lchown21)
+-strong_alias (__chown_is_lchown, _chown_is_lchown21)
+-versioned_symbol (libc, __chown_is_lchown21, __chown, GLIBC_2_1);
+-versioned_symbol (libc, _chown_is_lchown21, chown, GLIBC_2_1);
+-libc_hidden_ver (__chown_is_lchown, __chown)
++versioned_symbol (libc, __chown_is_lchown21, chown, GLIBC_2_1);
++strong_alias (__chown_is_lchown, __chown)
+ #endif
++libc_hidden_def (__chown)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/clone.S 2002-11-21 18:59:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/clone.S 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997,98,99,2000,02 Free Software Foundation, Inc.
++/* Copyright (C) 1996,1997,98,99,2000,02,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@tamu.edu)
+
+@@ -28,7 +28,7 @@
+ #include <bp-asm.h>
+
+ /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
+- pid_t *tid, struct user_desc *tls); */
++ pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
+
+ #define PARMS LINKAGE /* no space for saved regs */
+ #define FUNC PARMS
+@@ -61,8 +61,10 @@
+ jz SYSCALL_ERROR_LABEL
+ #endif
+
+- /* Insert the argument onto the new stack. */
+- subl $16,%ecx
++ /* Insert the argument onto the new stack. Make sure the new
++ thread is started with an alignment of (mod 16). */
++ andl $0xfffffff0, %ecx
++ subl $24,%ecx
+ movl ARG(%esp),%eax /* no negative argument counts */
+ movl %eax,12(%ecx)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.c 2003-01-14 04:59:14.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.c 2003-08-21 08:37:13.000000000 -0400
+@@ -40,13 +40,14 @@
+ needed.
+ */
+
+-#ifdef PROCINFO_DECL
+-EXTERN
++#ifndef PROCINFO_CLASS
++#define PROCINFO_CLASS
+ #endif
++
+ #if !defined PROCINFO_DECL && defined SHARED
+ ._dl_x86_cap_flags
+ #else
+-const char _dl_x86_cap_flags[32][8]
++PROCINFO_CLASS const char _dl_x86_cap_flags[32][8]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+@@ -62,13 +63,10 @@
+ ,
+ #endif
+
+-#ifdef PROCINFO_DECL
+-EXTERN
+-#endif
+ #if !defined PROCINFO_DECL && defined SHARED
+ ._dl_x86_platforms
+ #else
+-const char _dl_x86_platforms[4][5]
++PROCINFO_CLASS const char _dl_x86_platforms[4][5]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+@@ -82,3 +80,4 @@
+ #endif
+
+ #undef PROCINFO_DECL
++#undef PROCINFO_CLASS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h 2002-09-23 20:00:49.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h 2003-08-21 08:37:13.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Linux/i386 version of processor capability information handling macros.
+- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -97,7 +97,7 @@
+ };
+
+ static inline int
+-__attribute__ ((unused))
++__attribute__ ((unused, always_inline))
+ _dl_string_hwcap (const char *str)
+ {
+ int i;
+@@ -112,7 +112,7 @@
+
+
+ static inline int
+-__attribute__ ((unused))
++__attribute__ ((unused, always_inline))
+ _dl_string_platform (const char *str)
+ {
+ int i;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fchown.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fchown.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,12 +25,7 @@
+ #include <linux/posix_types.h>
+ #include "kernel-features.h"
+
+-extern int __syscall_fchown (int __fd,
+- __kernel_uid_t __owner, __kernel_gid_t __group);
+-
+ #ifdef __NR_fchown32
+-extern int __syscall_fchown32 (int __fd,
+- __kernel_uid32_t __owner, __kernel_gid32_t __group);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fcntl.c 2002-12-15 19:57:48.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fcntl.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,19 +25,23 @@
+ #include <sys/syscall.h>
+ #include "../kernel-features.h"
+
+-extern int __syscall_fcntl (int __fd, int __cmd, ...);
+-#ifdef __NR_fcntl64
+-extern int __syscall_fcntl64 (int __fd, int __cmd, ...);
+-#endif
+-
+ #if __ASSUME_FCNTL64 == 0
+ /* This variable is shared with all files that check for fcntl64. */
+ int __have_no_fcntl64;
++#endif
+
+
+-static int
+-do_fcntl (int fd, int cmd, void *arg)
++int
++__fcntl_nocancel (int fd, int cmd, ...)
+ {
++ va_list ap;
++ void *arg;
++
++ va_start (ap, cmd);
++ arg = va_arg (ap, void *);
++ va_end (ap);
++
++#if __ASSUME_FCNTL64 == 0
+ # ifdef __NR_fcntl64
+ if (! __have_no_fcntl64)
+ {
+@@ -118,8 +122,10 @@
+ return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
+ }
+ return -1;
++#else
++ return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
++#endif /* !__ASSUME_FCNTL64 */
+ }
+-#endif /* __ASSUME_FCNTL64 */
+
+
+ int
+@@ -133,19 +139,19 @@
+ va_end (ap);
+
+ #if __ASSUME_FCNTL64 > 0
+- if (SINGLE_THREAD_P)
++ if (SINGLE_THREAD_P || (cmd != F_SETLKW && cmd != F_SETLKW64))
+ return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ int result = INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
+ #else
+- if (SINGLE_THREAD_P)
+- return do_fcntl (fd, cmd, arg);
++ if (SINGLE_THREAD_P || (cmd != F_SETLKW && cmd != F_SETLKW64))
++ return __fcntl_nocancel (fd, cmd, arg);
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+- int result = do_fcntl (fd, cmd, arg);
++ int result = __fcntl_nocancel (fd, cmd, arg);
+ #endif
+
+ LIBC_CANCEL_RESET (oldtype);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fxstat.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/fxstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* fxstat using old-style Unix fstat system call.
+- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995-1998,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,12 +32,9 @@
+
+ #include "kernel-features.h"
+
+-#include <xstatconv.c>
+-
+-extern int __syscall_fstat (int, struct kernel_stat *__unbounded);
++#include <xstatconv.h>
+
+ #ifdef __NR_stat64
+-extern int __syscall_fstat64 (int, struct stat64 *__unbounded);
+ # if __ASSUME_STAT64_SYSCALL == 0
+ /* The variable is shared between all wrappers around *stat64 calls. */
+ extern int __have_no_stat64;
+@@ -62,7 +59,7 @@
+
+ result = INLINE_SYSCALL (fstat64, 2, fd, __ptrvalue (&buf64));
+ if (result == 0)
+- result = xstat32_conv (vers, &buf64, buf);
++ result = __xstat32_conv (vers, &buf64, buf);
+ return result;
+ }
+ #else
+@@ -77,7 +74,7 @@
+ result = INLINE_SYSCALL (fstat64, 2, fd, __ptrvalue (&buf64));
+
+ if (result == 0)
+- result = xstat32_conv (vers, &buf64, buf);
++ result = __xstat32_conv (vers, &buf64, buf);
+
+ if (result != -1 || errno != ENOSYS)
+ return result;
+@@ -88,7 +85,7 @@
+
+ result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat_conv (vers, &kbuf, buf);
++ result = __xstat_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif /* __ASSUME_STAT64_SYSCALL */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getcontext.S 2002-12-19 22:56:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getcontext.S 2003-08-21 08:37:13.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Save current context.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+@@ -56,6 +56,10 @@
+ movl %ecx, oFPREGS(%eax)
+ /* Save the floating-point context. */
+ fnstenv (%ecx)
++ /* And load it right back since the processor changes the mask.
++ Intel thought this opcode to be used in interrupt handlers which
++ would block all exceptions. */
++ fldenv (%ecx)
+
+ /* Save the current signal mask. */
+ pushl %ebx
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getegid.c 2003-02-21 18:53:24.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getegid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -23,10 +23,7 @@
+ #include <sys/syscall.h>
+ #include "kernel-features.h"
+
+-extern int __syscall_getegid (void);
+-
+ #ifdef __NR_getegid32
+-extern int __syscall_getegid32 (void);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/geteuid.c 2003-02-21 20:01:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/geteuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -23,10 +23,7 @@
+ #include <sys/syscall.h>
+ #include "kernel-features.h"
+
+-extern int __syscall_geteuid (void);
+-
+ #ifdef __NR_geteuid32
+-extern int __syscall_geteuid32 (void);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgid.c 2003-02-21 20:01:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -24,10 +24,7 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_getgid (void);
+-
+ #ifdef __NR_getgid32
+-extern int __syscall_getgid32 (void);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgroups.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getgroups.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,14 +29,11 @@
+ #include <kernel-features.h>
+
+
+-extern int __syscall_getgroups (int, __kernel_gid_t *__unbounded);
+-
+ #ifdef __NR_getgroups32
+-extern int __syscall_getgroups32 (int, __kernel_gid32_t *__unbounded);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+-extern int __libc_missing_32bit_uids;
++extern int __libc_missing_32bit_uids attribute_hidden;
+ # endif
+ #endif /* __NR_getgroups32 */
+
+@@ -64,7 +61,7 @@
+ int saved_errno = errno;
+
+ result = INLINE_SYSCALL (getgroups32, 2, n, CHECK_N (groups, n));
+- if (result == 0 || errno != ENOSYS)
++ if (result != -1 || errno != ENOSYS)
+ return result;
+
+ __set_errno (saved_errno);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getmsg.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getmsg.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,9 +23,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_getpmsg (int fildes, struct strbuf *ctlptr,
+- struct strbuf *dataptr, int *bandp, int *flagsp);
+-
+ #ifdef __NR_getpmsg
+ int
+ getmsg (fildes, ctlptr, dataptr, flagsp)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresgid.c 2002-10-14 00:04:15.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresgid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,15 +30,7 @@
+
+ #ifdef __NR_getresgid
+
+-extern int __syscall_getresgid (__kernel_gid_t *__unbounded rgid,
+- __kernel_gid_t *__unbounded egid,
+- __kernel_gid_t *__unbounded sgid);
+-
+ # ifdef __NR_getresgid32
+-extern int __syscall_getresgid32 (__kernel_gid32_t *__unbounded rgid,
+- __kernel_gid32_t *__unbounded egid,
+- __kernel_gid32_t *__unbounded sgid);
+-
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresuid.c 2002-10-14 00:04:15.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getresuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,14 +30,7 @@
+
+ #ifdef __NR_getresuid
+
+-extern int __syscall_getresuid (__kernel_uid_t *__unbounded ruid,
+- __kernel_uid_t *__unbounded euid,
+- __kernel_uid_t *__unbounded suid);
+-
+ # ifdef __NR_getresuid32
+-extern int __syscall_getresuid32 (__kernel_uid32_t *__unbounded ruid,
+- __kernel_uid32_t *__unbounded euid,
+- __kernel_uid32_t *__unbounded suid);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getrlimit.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getrlimit.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,11 +26,6 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_ugetrlimit (unsigned int resource,
+- struct rlimit *__unbounded rlimits);
+-extern int __syscall_getrlimit (unsigned int resource,
+- struct rlimit *__unbounded rlimits);
+-
+ extern int __new_getrlimit (enum __rlimit_resource resource,
+ struct rlimit *__unbounded rlimits);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getuid.c 2003-02-21 18:55:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/getuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -24,10 +24,7 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_getuid (void);
+-
+ #ifdef __NR_getuid32
+-extern int __syscall_getuid32 (void);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. This is the definition.
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lchown.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lchown.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,12 +27,7 @@
+ #include "kernel-features.h"
+
+ #ifdef __NR_lchown
+-extern int __syscall_lchown (const char *__unbounded __file,
+- __kernel_uid_t __owner, __kernel_gid_t __group);
+-
+ # ifdef __NR_lchown32
+-extern int __syscall_lchown32 (const char *__unbounded __file,
+- __kernel_uid32_t __owner, __kernel_gid32_t __group);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lockf64.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lockf64.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,8 +29,6 @@
+ /* lockf is a simplified interface to fcntl's locking facilities. */
+
+ #ifdef __NR_fcntl64
+-extern int __syscall_fcntl64 (int __fd, int __cmd, ...);
+-
+ # if __ASSUME_FCNTL64 == 0
+ /* This variable is shared with all files that check for fcntl64. The
+ declaration is in fcntl.c. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lxstat.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/lxstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* lxstat using old-style Unix lstat system call.
+- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,14 +33,9 @@
+
+ #include "kernel-features.h"
+
+-#include <xstatconv.c>
+-
+-extern int __syscall_lstat (const char *__unbounded,
+- struct kernel_stat *__unbounded);
++#include <xstatconv.h>
+
+ #ifdef __NR_stat64
+-extern int __syscall_lstat64 (const char *__unbounded,
+- struct stat64 *__unbounded);
+ # if __ASSUME_STAT64_SYSCALL == 0
+ /* The variable is shared between all wrappers around *stat64 calls. */
+ extern int __have_no_stat64;
+@@ -65,7 +61,7 @@
+
+ result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
+ if (result == 0)
+- result = xstat32_conv (vers, &buf64, buf);
++ result = __xstat32_conv (vers, &buf64, buf);
+ return result;
+ }
+ #else
+@@ -79,7 +75,7 @@
+ result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
+
+ if (result == 0)
+- result = xstat32_conv (vers, &buf64, buf);
++ result = __xstat32_conv (vers, &buf64, buf);
+
+ if (result != -1 || errno != ENOSYS)
+ return result;
+@@ -90,7 +86,7 @@
+
+ result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat_conv (vers, &kbuf, buf);
++ result = __xstat_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/posix_fadvise64.S 2003-08-19 04:29:26.000000000 -0400
+@@ -0,0 +1,132 @@
++/* Copyright (C) 1995,96,97,98,99,2000,2002,2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <bp-sym.h>
++#include <bp-asm.h>
++
++#include "kernel-features.h"
++
++#define EINVAL 22
++#define ENOSYS 38
++#define EOVERFLOW 75
++
++#define SVRSP 16 /* saved register space */
++#define PARMS LINKAGE+SVRSP /* space for 4 saved regs */
++#define FD PARMS
++#define OFFLO FD+4
++#define OFFHI OFFLO+4
++#define LENLO OFFHI+4
++#define LENHI LENLO+4
++#define FLAGS LENHI+4
++
++ .text
++ENTRY (BP_SYM (__posix_fadvise64_l64))
++
++#ifdef __NR_fadvise64_64
++
++ /* Save registers. */
++ pushl %ebp
++ pushl %ebx
++ pushl %esi
++ pushl %edi
++
++ movl FD(%esp), %ebx
++ movl OFFLO(%esp), %ecx
++ movl OFFHI(%esp), %edx
++ movl LENLO(%esp), %esi
++ movl LENHI(%esp), %edi
++ movl FLAGS(%esp), %ebp
++
++ movl $SYS_ify(fadvise64_64), %eax
++ ENTER_KERNEL
++
++ /* Restore registers. */
++ popl %edi
++ popl %esi
++ popl %ebx
++ popl %ebp
++
++#ifndef __ASSUME_FADVISE64_64_SYSCALL
++ cmpl $-ENOSYS, %eax
++ je 1f
++#endif
++
++ /* The function returns zero, or the error number. So all we
++ have to do is negate the value passed back from the kernel. */
++ /* If 0 > %eax > -4096 there was an error. */
++ negl %eax
++
++ /* Successful; return the syscall's value. */
++ ret
++#endif
++
++#if defined __NR_fadvise64 \
++ && (!defined __ASSUME_FADVISE64_64_SYSCALL || !defined __NR_fadvise64_64)
++1: /* Save registers. */
++ pushl %ebx
++ pushl %esi
++ pushl %edi
++
++ /* Overflow check. */
++ cmpl $0, LENHI(%esp)
++ jne L(overflow)
++
++ movl FD(%esp), %ebx
++ movl OFFLO(%esp), %ecx
++ movl OFFHI(%esp), %edx
++ movl LENLO(%esp), %esi
++ movl FLAGS(%esp), %edi
++
++ movl $SYS_ify(fadvise64), %eax
++ ENTER_KERNEL
++
++ /* Restore registers. */
++ popl %edi
++ popl %esi
++ popl %ebx
++
++ /* If 0 > %eax > -4096 there was an error. */
++ negl %eax
++
++ /* Successful; return the syscall's value. */
++ ret
++
++L(overflow):
++ movl $EOVERFLOW, %eax
++ ret
++#else
++ movl $ENOSYS, %eax
++ ret
++#endif
++
++END (BP_SYM (__posix_fadvise64_l64))
++
++#ifdef __NR_fadvise64
++PSEUDO_ERRVAL (__posix_fadvise64_l32, fadvise64, 5)
++ ret
++PSEUDO_END_ERRVAL (__posix_fadvise64_l32)
++#else
++ENTRY (BP_SYM (__posix_fadvise64_l32))
++ movl $ENOSYS, %eax
++ ret
++END (BP_SYM (__posix_fadvise64_l32))
++#endif
++
++default_symbol_version (__posix_fadvise64_l64, posix_fadvise64, GLIBC_2.3.3)
++symbol_version (__posix_fadvise64_l32, posix_fadvise64, GLIBC_2.2)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/putmsg.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/putmsg.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,10 +23,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_putpmsg (int fildes, const struct strbuf *ctlptr,
+- const struct strbuf *dataptr, int band,
+- int flags);
+-
+ #ifdef __NR_putpmsg
+ int
+ putmsg (fildes, ctlptr, dataptr, flags)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semctl.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semctl.c 2003-08-21 08:37:13.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -48,6 +48,7 @@
+ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
+ unsigned short int *array; /* array for GETALL & SETALL */
+ struct seminfo *__buf; /* buffer for IPC_INFO */
++ struct __old_semid_ds *__old_buf;
+ };
+
+ #include <bp-checks.h>
+@@ -145,7 +146,7 @@
+ #endif
+
+ buf = arg.buf;
+- arg.buf = (struct semid_ds *)&old;
++ arg.__old_buf = &old;
+ if (cmd == IPC_SET)
+ {
+ old.sem_perm.uid = buf->sem_perm.uid;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semtimedop.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/semtimedop.S 2003-04-02 18:46:19.000000000 -0500
+@@ -0,0 +1,63 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#define SYSOP_semtimedop 4
++
++#define SVRSP 12 /* saved register space */
++#define PARMS LINKAGE+SVRSP /* space for 3 saved regs */
++#define SEMID PARMS
++#define SOPS SEMID+4
++#define NSOPS SOPS+PTR_SIZE
++#define TIMEOUT NSOPS+4
++
++ .text
++ENTRY (BP_SYM (semtimedop))
++
++ pushl %ebp
++ pushl %ebx
++ pushl %edi
++
++ movl $SYSOP_semtimedop, %ebx
++ movl SEMID(%esp), %ecx
++ movl NSOPS(%esp), %edx
++ movl SOPS(%esp), %edi
++ movl TIMEOUT(%esp), %ebp
++ movl $__NR_ipc, %eax
++
++ ENTER_KERNEL
++
++ /* Restore registers. */
++ popl %edi
++ popl %ebx
++ popl %ebp
++
++ /* If 0 > %eax > -4096 there was an error. */
++ cmpl $-4096, %eax
++ ja SYSCALL_ERROR_LABEL
++
++ /* Successful; return the syscall's value. */
++L(pseudo_end):
++ ret
++
++#ifdef PIC
++ .align 4
++#endif
++PSEUDO_END (BP_SYM (semtimedop))
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setcontext.S 2002-12-19 22:56:48.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setcontext.S 2003-04-12 11:39:50.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Install given context.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+@@ -53,39 +53,26 @@
+ movl oFS(%eax), %ecx
+ movw %cx, %fs
+
++ /* Fetch the address to return to. */
++ movl oEIP(%eax), %ecx
++
+ /* Load the new stack pointer. */
+- movl oESP(%eax), %ecx
+- /* Make room for 8 registers and the return address. We will load
+- the values from the stack. */
+- subl $36, %ecx
+-
+- /* Move the values of all the 32-bit registers (except ESP) on
+- the stack. This happens in the form the 'popa' instruction
+- expects it. Before this block put the address of the code
+- to execute. */
+- movl oEDI(%eax), %ebx
+- movl oESI(%eax), %edx
+- movl oEBP(%eax), %esi
+- movl oEBX(%eax), %edi
+- movl %ebx, (%ecx)
+- movl %edx, 4(%ecx)
+- movl %esi, 8(%ecx)
+- movl %edi, 16(%ecx)
+- movl oEDX(%eax), %ebx
+- movl oECX(%eax), %edx
+- movl oEAX(%eax), %esi
+- movl oEIP(%eax), %edi
+- movl %ebx, 20(%ecx)
+- movl %edx, 24(%ecx)
+- movl %esi, 28(%ecx)
+- movl %edi, 32(%ecx)
+-
+- /* Set the new stack address. The stack points now to the block
+- we put the register content in. */
+- movl %ecx, %esp
+- /* Restore the register content. */
+- popa
+- /* The following 'ret' will pop the addres of the code and jump
++ movl oESP(%eax), %esp
++
++ /* Push the return address on the new stack so we can return there. */
++ pushl %ecx
++
++ /* Load the values of all the 32-bit registers (except ESP).
++ Since we are loading from EAX, it must be last. */
++ movl oEDI(%eax), %edi
++ movl oESI(%eax), %esi
++ movl oEBP(%eax), %ebp
++ movl oEBX(%eax), %ebx
++ movl oEDX(%eax), %edx
++ movl oECX(%eax), %ecx
++ movl oEAX(%eax), %eax
++
++ /* The following 'ret' will pop the address of the code and jump
+ to it. */
+
+ L(pseudo_end):
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setegid.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setegid.c 2003-08-21 08:37:13.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 96, 97, 98, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995-1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -16,13 +16,41 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+
++#include <sysdep.h>
++#include "kernel-features.h"
++
++
++#ifdef __NR_setresgid
++extern int __setresgid (uid_t rgid, uid_t egid, uid_t sgid);
++#endif
++
+ int
+ setegid (gid)
+ gid_t gid;
+ {
+- return __setregid (-1, gid);
++#if __ASSUME_32BITUIDS > 0
++ return INLINE_SYSCALL (setresgid32, 3, -1, gid, -1);
++#else
++ int result;
++ /* First try the syscall. */
++# ifdef __NR_setresgid
++ result = __setresgid (-1, gid, -1);
++# if __ASSUME_SETRESGID_SYSCALL > 0
++ if (0)
++# else
++ if (result == -1 && errno == ENOSYS)
++# endif
++ /* No system call available. Use emulation. This may not work
++ since `setregid' also sets the saved user ID when GID is not
++ equal to the real user ID, making it impossible to switch back. */
++# endif
++ result = __setregid (-1, gid);
++
++ return result;
++#endif
+ }
+ libc_hidden_def (setegid)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/seteuid.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/seteuid.c 2003-08-21 08:37:13.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,10 +17,12 @@
+ 02111-1307 USA. */
+
+ #include <errno.h>
+-#include <sys/syscall.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#include <sysdep.h>
++#include "kernel-features.h"
++
+
+ #ifdef __NR_setresuid
+ extern int __setresuid (uid_t ruid, uid_t euid, uid_t suid);
+@@ -29,21 +31,25 @@
+ int
+ seteuid (uid_t uid)
+ {
++#if __ASSUME_32BITUIDS > 0
++ return INLINE_SYSCALL (setresuid32, 3, -1, uid, -1);
++#else
+ int result;
+ /* First try the syscall. */
+-#ifdef __NR_setresuid
++# ifdef __NR_setresuid
+ result = __setresuid (-1, uid, -1);
+-#if __ASSUME_SETRESUID_SYSCALL > 0
++# if __ASSUME_SETRESUID_SYSCALL > 0
+ if (0)
+-#else
++# else
+ if (result == -1 && errno == ENOSYS)
+-#endif
++# endif
+ /* No system call available. Use emulation. This may not work
+ since `setreuid' also sets the saved user ID when UID is not
+ equal to the real user ID, making it impossible to switch back. */
+-#endif
++# endif
+ result = __setreuid (-1, uid);
+
+ return result;
++#endif
+ }
+ libc_hidden_def (seteuid)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsgid.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsgid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,34 +28,32 @@
+
+ #ifdef __NR_setfsgid
+
+-extern int __syscall_setfsgid (__kernel_gid_t);
+-
+ # ifdef __NR_setfsgid32
+-extern int __syscall_setfsgid32 (__kernel_gid32_t);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+-extern int __libc_missing_32bit_uids;
++extern int __libc_missing_32bit_uids attribute_hidden;
+ # endif
+ # endif /* __NR_setfsgid32 */
+
+ int
+ setfsgid (gid_t gid)
+ {
++ INTERNAL_SYSCALL_DECL (err);
+ # if __ASSUME_32BITUIDS > 0
+- return INLINE_SYSCALL (setfsgid32, 1, gid);
++ /* No error checking. */
++ return INTERNAL_SYSCALL (setfsgid32, err, 1, gid);
+ # else
+ # ifdef __NR_setfsgid32
+ if (__libc_missing_32bit_uids <= 0)
+ {
+ int result;
+- int saved_errno = errno;
+
+- result = INLINE_SYSCALL (setfsgid32, 1, gid);
+- if (result == 0 || errno != ENOSYS)
++ result = INTERNAL_SYSCALL (setfsgid32, err, 1, gid);
++ if (! INTERNAL_SYSCALL_ERROR_P (result, err)
++ || INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
+ return result;
+
+- __set_errno (saved_errno);
+ __libc_missing_32bit_uids = 1;
+ }
+ # endif /* __NR_setfsgid32 */
+@@ -65,7 +63,8 @@
+ return -1;
+ }
+
+- return INLINE_SYSCALL (setfsgid, 1, gid);
++ /* No error checking. */
++ return INTERNAL_SYSCALL (setfsgid, err, 1, gid);
+ # endif
+ }
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsuid.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setfsuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,34 +28,32 @@
+
+ #ifdef __NR_setfsuid
+
+-extern int __syscall_setfsuid (__kernel_uid_t);
+-
+ # ifdef __NR_setfsuid32
+-extern int __syscall_setfsuid32 (__kernel_uid32_t);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+-extern int __libc_missing_32bit_uids;
++extern int __libc_missing_32bit_uids attribute_hidden;
+ # endif
+ # endif /* __NR_setfsuid32 */
+
+ int
+ setfsuid (uid_t uid)
+ {
++ INTERNAL_SYSCALL_DECL (err);
+ # if __ASSUME_32BITUIDS > 0
+- return INLINE_SYSCALL (setfsuid32, 1, uid);
+-# else
++ /* No error checking. */
++ return INTERNAL_SYSCALL (setfsuid32, err, 1, uid);
++# else
+ # ifdef __NR_setfsuid32
+ if (__libc_missing_32bit_uids <= 0)
+ {
+ int result;
+- int saved_errno = errno;
+
+- result = INLINE_SYSCALL (setfsuid32, 1, uid);
+- if (result == 0 || errno != ENOSYS)
++ result = INTERNAL_SYSCALL (setfsuid32, err, 1, uid);
++ if (! INTERNAL_SYSCALL_ERROR_P (result, err)
++ || INTERNAL_SYSCALL_ERRNO (result, err) != ENOSYS)
+ return result;
+
+- __set_errno (saved_errno);
+ __libc_missing_32bit_uids = 1;
+ }
+ # endif /* __NR_setfsuid32 */
+@@ -66,7 +64,8 @@
+ return -1;
+ }
+
+- return INLINE_SYSCALL (setfsuid, 1, uid);
++ /* No error checking. */
++ return INTERNAL_SYSCALL (setfsuid, err, 1, uid);
+ # endif
+ }
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgid.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,10 +27,7 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_setgid (__kernel_gid_t);
+-
+ #ifdef __NR_setgid32
+-extern int __syscall_setgid32 (__kernel_gid32_t);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgroups.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setgroups.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997,98,2000,02 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,10 +29,7 @@
+ #include "kernel-features.h"
+
+
+-extern int __syscall_setgroups (int, const __kernel_gid_t *__unbounded);
+-
+ #ifdef __NR_setgroups32
+-extern int __syscall_setgroups32 (int, const __kernel_gid32_t *__unbounded);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setregid.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setregid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,10 +27,7 @@
+ #include "kernel-features.h"
+
+
+-extern int __syscall_setregid (__kernel_gid_t, __kernel_gid_t);
+-
+ #ifdef __NR_setregid32
+-extern int __syscall_setregid32 (__kernel_gid32_t, __kernel_gid32_t);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresgid.c 2002-10-14 00:04:15.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresgid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,12 +28,7 @@
+
+ #ifdef __NR_setresgid
+
+-extern int __syscall_setresgid (__kernel_gid_t rgid, __kernel_gid_t egid,
+- __kernel_gid_t sgid);
+-
+ # ifdef __NR_setresgid32
+-extern int __syscall_setresgid32 (__kernel_gid32_t rgid, __kernel_gid32_t egid,
+- __kernel_gid32_t sgid);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresuid.c 2002-10-14 00:04:15.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setresuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,12 +28,7 @@
+
+ #ifdef __NR_setresuid
+
+-extern int __syscall_setresuid (__kernel_uid_t rgid, __kernel_uid_t egid,
+- __kernel_uid_t sgid);
+-
+ # ifdef __NR_setresuid32
+-extern int __syscall_setresuid32 (__kernel_uid32_t rgid, __kernel_uid32_t egid,
+- __kernel_uid32_t sgid);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setreuid.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setreuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,10 +27,7 @@
+ #include "kernel-features.h"
+
+
+-extern int __syscall_setreuid (__kernel_uid_t, __kernel_uid_t);
+-
+ #ifdef __NR_setreuid32
+-extern int __syscall_setreuid32 (__kernel_uid32_t, __kernel_uid32_t);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setrlimit.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setrlimit.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,10 +27,6 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_setrlimit (unsigned int resource,
+- const struct rlimit *__unbounded rlimits);
+-extern int __syscall_ugetrlimit (unsigned int resource,
+- const struct rlimit *__unbounded rlimits);
+ extern int __new_setrlimit (enum __rlimit_resource resource,
+ const struct rlimit *__unboundedrlimits);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setuid.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/setuid.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,10 +26,7 @@
+ #include <linux/posix_types.h>
+ #include "kernel-features.h"
+
+-extern int __syscall_setuid (__kernel_uid_t);
+-
+ #ifdef __NR_setuid32
+-extern int __syscall_setuid32 (__kernel_uid32_t);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sigaction.c 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sigaction.c 2003-09-19 22:37:10.000000000 -0400
+@@ -37,9 +37,6 @@
+ #define SA_RESTORER 0x04000000
+
+
+-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
+- struct kernel_sigaction *__unbounded, size_t);
+-
+ #if __ASSUME_REALTIME_SIGNALS == 0
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. */
+@@ -88,10 +85,15 @@
+ {
+ kact.k_sa_handler = act->sa_handler;
+ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
++
++# if __ASSUME_VSYSCALL == 0
+ kact.sa_flags = act->sa_flags | SA_RESTORER;
+
+ kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
+ ? &restore_rt : &restore);
++# else
++ kact.sa_flags = act->sa_flags;
++# endif
+ }
+
+ /* XXX The size argument hopefully will have to be changed to the
+@@ -157,6 +159,7 @@
+ weak_alias (__libc_sigaction, sigaction)
+ #endif
+
++#if __ASSUME_VSYSCALL == 0
+ /* NOTE: Please think twice before making any changes to the bits of
+ code below. GDB needs some intimate knowledge about it to
+ recognize them as signal trampolines, and make backtraces through
+@@ -165,8 +168,8 @@
+ If you ever feel the need to make any changes, please notify the
+ appropriate GDB maintainer. */
+
+-#define RESTORE(name, syscall) RESTORE2 (name, syscall)
+-#define RESTORE2(name, syscall) \
++# define RESTORE(name, syscall) RESTORE2 (name, syscall)
++# define RESTORE2(name, syscall) \
+ asm \
+ ( \
+ ".text\n" \
+@@ -176,10 +179,10 @@
+ " int $0x80" \
+ );
+
+-#ifdef __NR_rt_sigaction
++# ifdef __NR_rt_sigaction
+ /* The return code for realtime-signals. */
+ RESTORE (restore_rt, __NR_rt_sigreturn)
+-#endif
++# endif
+
+ /* For the boring old signals. */
+ # undef RESTORE2
+@@ -195,3 +198,4 @@
+ );
+
+ RESTORE (restore, __NR_sigreturn)
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/socket.S 2002-12-18 06:37:37.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/socket.S 2003-08-21 08:37:13.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,6 +41,7 @@
+ #endif
+
+ .globl __socket
++ cfi_startproc
+ ENTRY (__socket)
+ #if defined NEED_CANCELLATION && defined CENABLE
+ SINGLE_THREAD_P
+@@ -49,6 +50,7 @@
+
+ /* Save registers. */
+ movl %ebx, %edx
++ cfi_register (3, 2)
+
+ movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
+
+@@ -61,6 +63,7 @@
+
+ /* Restore registers. */
+ movl %edx, %ebx
++ cfi_restore (3)
+
+ /* %eax is < 0 if there was an error. */
+ cmpl $-125, %eax
+@@ -74,13 +77,16 @@
+ #if defined NEED_CANCELLATION && defined CENABLE
+ /* We need one more register. */
+ 1: pushl %esi
++ cfi_adjust_cfa_offset(4)
+
+ /* Enable asynchronous cancellation. */
+ CENABLE
+ movl %eax, %esi
++ cfi_offset(6, -8) /* %esi */
+
+ /* Save registers. */
+ movl %ebx, %edx
++ cfi_register (3, 2)
+
+ movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
+
+@@ -93,6 +99,7 @@
+
+ /* Restore registers. */
+ movl %edx, %ebx
++ cfi_restore (3)
+
+ /* Restore the cancellation. */
+ xchgl %esi, %eax
+@@ -101,6 +108,8 @@
+ /* Restore registers. */
+ movl %esi, %eax
+ popl %esi
++ cfi_restore (6)
++ cfi_adjust_cfa_offset(-4)
+
+ /* %eax is < 0 if there was an error. */
+ cmpl $-125, %eax
+@@ -109,6 +118,7 @@
+ /* Successful; return the syscall's value. */
+ ret
+ #endif
++ cfi_endproc
+ PSEUDO_END (__socket)
+
+ #ifndef NO_WEAK_ALIAS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/swapcontext.S 2002-12-19 22:57:24.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/swapcontext.S 2003-04-12 11:39:50.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Save current context and install the given one.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+@@ -78,43 +78,31 @@
+ movl oFPREGS(%eax), %ecx
+ fldenv (%ecx)
+
+- /* Restore the FS segment registers. */
++ /* Restore the FS segment register. We don't touch the GS register
++ since it is used for threads. */
+ movl oFS(%eax), %edx
+ movw %dx, %fs
+
++ /* Fetch the address to return to. */
++ movl oEIP(%eax), %ecx
++
+ /* Load the new stack pointer. */
+- movl oESP(%eax), %ecx
+- /* Make room for 8 registers and the return address. We will load
+- the values from the stack. */
+- subl $36, %ecx
+-
+- /* Move the values of all the 32-bit registers (except ESP) on
+- the stack. This happens in the form the 'popa' instruction
+- expects it. Before this block put the address of the code
+- to execute. */
+- movl oEDI(%eax), %ebx
+- movl oESI(%eax), %edx
+- movl oEBP(%eax), %esi
+- movl oEBX(%eax), %edi
+- movl %ebx, (%ecx)
+- movl %edx, 4(%ecx)
+- movl %esi, 8(%ecx)
+- movl %edi, 16(%ecx)
+- movl oEDX(%eax), %ebx
+- movl oECX(%eax), %edx
+- movl oEAX(%eax), %esi
+- movl oEIP(%eax), %edi
+- movl %ebx, 20(%ecx)
+- movl %edx, 24(%ecx)
+- movl %esi, 28(%ecx)
+- movl %edi, 32(%ecx)
+-
+- /* Set the new stack address. The stack points now to the block
+- we put the register content in. */
+- movl %ecx, %esp
+- /* Restore the register content. */
+- popa
+- /* The following 'ret' will pop the addres of the code and jump
++ movl oESP(%eax), %esp
++
++ /* Push the return address on the new stack so we can return there. */
++ pushl %ecx
++
++ /* Load the values of all the 32-bit registers (except ESP).
++ Since we are loading from EAX, it must be last. */
++ movl oEDI(%eax), %edi
++ movl oESI(%eax), %esi
++ movl oEBP(%eax), %ebp
++ movl oEBX(%eax), %ebx
++ movl oEDX(%eax), %edx
++ movl oECX(%eax), %ecx
++ movl oEAX(%eax), %eax
++
++ /* The following 'ret' will pop the address of the code and jump
+ to it. */
+
+ L(pseudo_end):
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/syscalls.list 2000-06-13 02:49:41.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -4,3 +4,5 @@
+ vm86 - vm86 i:p __vm86 vm86
+ oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
+ oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
++time - time Ei:p time
++waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sysdep.h 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/sysdep.h 2003-09-19 22:37:10.000000000 -0400
+@@ -78,6 +78,32 @@
+ SYSCALL_ERROR_HANDLER \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args)
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#define ret_NOERRNO ret
++
++/* The function has to return the error code. */
++#undef PSEUDO_ERRVAL
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args); \
++ negl %eax
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
++#define ret_ERRVAL ret
++
+ #ifndef PIC
+ # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
+ #else
+@@ -152,7 +178,7 @@
+ # else
+ /* Store (- %eax) into errno through the GOT. */
+ # define SYSCALL_ERROR_HANDLER \
+-0:SETUP_PIC_REG(cx); \
++0:SETUP_PIC_REG(cx); \
+ addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
+ xorl %edx, %edx; \
+ subl %eax, %edx; \
+@@ -235,12 +261,12 @@
+ #define _DOARGS_0(n) /* No arguments to frob. */
+ #define _POPARGS_0 /* No arguments to pop. */
+
+-#define PUSHARGS_1 movl %ebx, %edx; PUSHARGS_0
++#define PUSHARGS_1 movl %ebx, %edx; L(SAVEBX1): PUSHARGS_0
+ #define DOARGS_1 _DOARGS_1 (4)
+-#define POPARGS_1 POPARGS_0; movl %edx, %ebx
+-#define _PUSHARGS_1 pushl %ebx; _PUSHARGS_0
++#define POPARGS_1 POPARGS_0; movl %edx, %ebx; L(RESTBX1):
++#define _PUSHARGS_1 pushl %ebx; L(PUSHBX1): _PUSHARGS_0
+ #define _DOARGS_1(n) movl n(%esp), %ebx; _DOARGS_0(n-4)
+-#define _POPARGS_1 _POPARGS_0; popl %ebx
++#define _POPARGS_1 _POPARGS_0; popl %ebx; L(POPBX1):
+
+ #define PUSHARGS_2 PUSHARGS_1
+ #define DOARGS_2 _DOARGS_2 (8)
+@@ -259,16 +285,16 @@
+ #define PUSHARGS_4 _PUSHARGS_4
+ #define DOARGS_4 _DOARGS_4 (24)
+ #define POPARGS_4 _POPARGS_4
+-#define _PUSHARGS_4 pushl %esi; _PUSHARGS_3
++#define _PUSHARGS_4 pushl %esi; L(PUSHSI1): _PUSHARGS_3
+ #define _DOARGS_4(n) movl n(%esp), %esi; _DOARGS_3 (n-4)
+-#define _POPARGS_4 _POPARGS_3; popl %esi
++#define _POPARGS_4 _POPARGS_3; popl %esi; L(POPSI1):
+
+ #define PUSHARGS_5 _PUSHARGS_5
+ #define DOARGS_5 _DOARGS_5 (32)
+ #define POPARGS_5 _POPARGS_5
+-#define _PUSHARGS_5 pushl %edi; _PUSHARGS_4
++#define _PUSHARGS_5 pushl %edi; L(PUSHDI1): _PUSHARGS_4
+ #define _DOARGS_5(n) movl n(%esp), %edi; _DOARGS_4 (n-4)
+-#define _POPARGS_5 _POPARGS_4; popl %edi
++#define _POPARGS_5 _POPARGS_4; popl %edi; L(POPDI1):
+
+ #else /* !__ASSEMBLER__ */
+
+@@ -285,7 +311,7 @@
+ ".macro bpushl name reg\n\t"
+ ".if 1 - \\name\n\t"
+ ".if 2 - \\name\n\t"
+- "pushl %ebx\n\t"
++ "error\n\t"
+ ".else\n\t"
+ "xchgl \\reg, %ebx\n\t"
+ ".endif\n\t"
+@@ -294,18 +320,11 @@
+ ".macro bpopl name reg\n\t"
+ ".if 1 - \\name\n\t"
+ ".if 2 - \\name\n\t"
+- "popl %ebx\n\t"
++ "error\n\t"
+ ".else\n\t"
+ "xchgl \\reg, %ebx\n\t"
+ ".endif\n\t"
+ ".endif\n\t"
+- ".endm\n\t"
+- ".macro bmovl name reg\n\t"
+- ".if 1 - \\name\n\t"
+- ".if 2 - \\name\n\t"
+- "movl \\reg, %ebx\n\t"
+- ".endif\n\t"
+- ".endif\n\t"
+ ".endm\n\t");
+
+ /* Define a macro which expands inline into the wrapper code for a system
+@@ -330,7 +349,8 @@
+ # ifdef SHARED
+ # define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+- unsigned int resultvar; \
++ register unsigned int resultvar; \
++ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "movl %1, %%eax\n\t" \
+@@ -343,7 +363,8 @@
+ # else
+ # define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+- unsigned int resultvar; \
++ register unsigned int resultvar; \
++ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "movl %1, %%eax\n\t" \
+@@ -356,11 +377,12 @@
+ #else
+ # define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+- unsigned int resultvar; \
++ register unsigned int resultvar; \
++ EXTRAVAR_##nr \
+ asm volatile ( \
+ LOADARGS_##nr \
+ "movl %1, %%eax\n\t" \
+- "int $0x80\n\t" \
++ "int $0x80\n\t" \
+ RESTOREARGS_##nr \
+ : "=a" (resultvar) \
+ : "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
+@@ -378,44 +400,92 @@
+ #define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
+
+ #define LOADARGS_0
+-#if defined I386_USE_SYSENTER && defined SHARED
+-# define LOADARGS_1 \
+- "bpushl .L__X'%k3, %k3\n\t" \
+- "bmovl .L__X'%k3, %k3\n\t"
++#ifdef __PIC__
++# if defined I386_USE_SYSENTER
++# define LOADARGS_1 \
++ "bpushl .L__X'%k3, %k3\n\t"
++# define LOADARGS_5 \
++ "movl %%ebx, %4\n\t" \
++ "movl %3, %%ebx\n\t"
++# else
++# define LOADARGS_1 \
++ "bpushl .L__X'%k2, %k2\n\t"
++# define LOADARGS_5 \
++ "movl %%ebx, %3\n\t" \
++ "movl %2, %%ebx\n\t"
++# endif
++# define LOADARGS_2 LOADARGS_1
++# define LOADARGS_3 \
++ "xchgl %%ebx, %%edi\n\t"
++# define LOADARGS_4 LOADARGS_3
+ #else
+-# define LOADARGS_1 \
+- "bpushl .L__X'%k2, %k2\n\t" \
+- "bmovl .L__X'%k2, %k2\n\t"
++# define LOADARGS_1
++# define LOADARGS_2
++# define LOADARGS_3
++# define LOADARGS_4
++# define LOADARGS_5
+ #endif
+-#define LOADARGS_2 LOADARGS_1
+-#define LOADARGS_3 LOADARGS_1
+-#define LOADARGS_4 LOADARGS_1
+-#define LOADARGS_5 LOADARGS_1
+
+ #define RESTOREARGS_0
+-#if defined I386_USE_SYSENTER && defined SHARED
+-# define RESTOREARGS_1 \
++#ifdef __PIC__
++# if defined I386_USE_SYSENTER && defined SHARED
++# define RESTOREARGS_1 \
+ "bpopl .L__X'%k3, %k3\n\t"
+-#else
+-# define RESTOREARGS_1 \
++# define RESTOREARGS_5 \
++ "movl %4, %%ebx"
++# else
++# define RESTOREARGS_1 \
+ "bpopl .L__X'%k2, %k2\n\t"
++# define RESTOREARGS_5 \
++ "movl %3, %%ebx"
++# endif
++# define RESTOREARGS_2 RESTOREARGS_1
++# define RESTOREARGS_3 \
++ "xchgl %%edi, %%ebx\n\t"
++# define RESTOREARGS_4 RESTOREARGS_3
++#else
++# define RESTOREARGS_1
++# define RESTOREARGS_2
++# define RESTOREARGS_3
++# define RESTOREARGS_4
++# define RESTOREARGS_5
+ #endif
+-#define RESTOREARGS_2 RESTOREARGS_1
+-#define RESTOREARGS_3 RESTOREARGS_1
+-#define RESTOREARGS_4 RESTOREARGS_1
+-#define RESTOREARGS_5 RESTOREARGS_1
+
+ #define ASMFMT_0()
+-#define ASMFMT_1(arg1) \
+- , "acdSD" (arg1)
+-#define ASMFMT_2(arg1, arg2) \
+- , "adSD" (arg1), "c" (arg2)
+-#define ASMFMT_3(arg1, arg2, arg3) \
+- , "aSD" (arg1), "c" (arg2), "d" (arg3)
+-#define ASMFMT_4(arg1, arg2, arg3, arg4) \
+- , "aD" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
+-#define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
+- , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
++#ifdef __PIC__
++# define ASMFMT_1(arg1) \
++ , "cd" (arg1)
++# define ASMFMT_2(arg1, arg2) \
++ , "d" (arg1), "c" (arg2)
++# define ASMFMT_3(arg1, arg2, arg3) \
++ , "D" (arg1), "c" (arg2), "d" (arg3)
++# define ASMFMT_4(arg1, arg2, arg3, arg4) \
++ , "D" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
++# define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
++ , "0" (arg1), "m" (_xv), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
++#else
++# define ASMFMT_1(arg1) \
++ , "b" (arg1)
++# define ASMFMT_2(arg1, arg2) \
++ , "b" (arg1), "c" (arg2)
++# define ASMFMT_3(arg1, arg2, arg3) \
++ , "b" (arg1), "c" (arg2), "d" (arg3)
++# define ASMFMT_4(arg1, arg2, arg3, arg4) \
++ , "b" (arg1), "c" (arg2), "d" (arg3), "S" (arg4)
++# define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
++ , "b" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
++#endif
++
++#define EXTRAVAR_0
++#define EXTRAVAR_1
++#define EXTRAVAR_2
++#define EXTRAVAR_3
++#define EXTRAVAR_4
++#ifdef __PIC__
++# define EXTRAVAR_5 int _xv;
++#else
++# define EXTRAVAR_5
++#endif
+
+ #endif /* __ASSEMBLER__ */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/system.c 2003-01-28 01:24:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/system.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,73 +0,0 @@
+-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <sched.h>
+-#include <signal.h>
+-#include <sysdep.h>
+-#include <unistd.h>
+-#include <sys/wait.h>
+-#include <bits/libc-lock.h>
+-#include <kernel-features.h>
+-
+-/* We have to and actually can handle cancelable system(). The big
+- problem: we have to kill the child process if necessary. To do
+- this a cleanup handler has to be registered and is has to be able
+- to find the PID of the child. The main problem is to reliable have
+- the PID when needed. It is not necessary for the parent thread to
+- return. It might still be in the kernel when the cancellation
+- request comes. Therefore we have to use the clone() calls ability
+- to have the kernel write the PID into the user-level variable. */
+-#ifdef __ASSUME_CLONE_THREAD_FLAGS
+-# define FORK() \
+- INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
+-#endif
+-
+-static void cancel_handler (void *arg);
+-
+-#define CLEANUP_HANDLER \
+- __libc_cleanup_region_start (1, cancel_handler, &pid)
+-
+-#define CLEANUP_RESET \
+- __libc_cleanup_region_end (0)
+-
+-
+-/* Linux has waitpid(), so override the generic unix version. */
+-#include <sysdeps/posix/system.c>
+-
+-
+-/* The cancellation handler. */
+-static void
+-cancel_handler (void *arg)
+-{
+- pid_t child = *(pid_t *) arg;
+-
+- INTERNAL_SYSCALL_DECL (err);
+- INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL);
+-
+- TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0));
+-
+- DO_LOCK ();
+-
+- if (SUB_REF () == 0)
+- {
+- (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
+- (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
+- }
+-
+- DO_UNLOCK ();
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/i386/xstat.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/i386/xstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* xstat using old-style Unix stat system call.
+- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,95,96,97,98,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,14 +32,9 @@
+
+ #include "kernel-features.h"
+
+-#include <xstatconv.c>
+-
+-extern int __syscall_stat (const char *__unbounded,
+- struct kernel_stat *__unbounded);
++#include <xstatconv.h>
+
+ #ifdef __NR_stat64
+-extern int __syscall_stat64 (const char *__unbounded,
+- struct stat64 *__unbounded);
+ # if __ASSUME_STAT64_SYSCALL == 0
+ /* The variable is shared between all wrappers around *stat64 calls. */
+ extern int __have_no_stat64;
+@@ -65,7 +60,7 @@
+
+ result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
+ if (result == 0)
+- result = xstat32_conv (vers, &buf64, buf);
++ result = __xstat32_conv (vers, &buf64, buf);
+ return result;
+ }
+ #else
+@@ -79,7 +74,7 @@
+ result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
+
+ if (result == 0)
+- result = xstat32_conv (vers, &buf64, buf);
++ result = __xstat32_conv (vers, &buf64, buf);
+
+ if (result != -1 || errno != ENOSYS)
+ return result;
+@@ -89,7 +84,7 @@
+ # endif
+ result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat_conv (vers, &kbuf, buf);
++ result = __xstat_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif /* __ASSUME_STAT64_SYSCALL */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/Makefile 2002-08-24 20:35:53.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/Makefile 2003-06-03 09:36:39.000000000 -0400
+@@ -4,6 +4,7 @@
+
+ ifeq ($(subdir),stdlib)
+ sysdep_routines += __start_context
++gen-as-const-headers += sigcontext-offsets.sym
+ endif
+
+ ifeq ($(subdir),misc)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/fcntl.h 2003-04-24 20:06:01.000000000 -0400
+@@ -169,6 +169,6 @@
+ # define POSIX_FADV_RANDOM 1 /* Expect random page references. */
+ # define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
+ # define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
+-# define POSIX_FADV_DONTNEED 6 /* Don't need these pages. */
+-# define POSIX_FADV_NOREUSE 7 /* Data will be accessed once. */
++# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
++# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2002-07-17 19:38:55.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/mman.h 2003-03-15 15:02:20.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/ia64 version.
+- Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,12 +52,14 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x2000 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_GROWSUP 0x00200 /* Register stack-like segment */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/setjmp.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/setjmp.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Define the machine-dependent type `jmp_buf'. Linux/IA-64 version.
+- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
+
+@@ -18,7 +18,10 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#ifndef _SETJMP_H
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
++
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -33,3 +36,5 @@
+ variable at ADDRESS. */
+ #define _JMPBUF_UNWINDS(_jmpbuf, _address) \
+ ((void *)(_address) < (void *)(((long *)_jmpbuf)[0]))
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h 2001-09-24 20:46:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigaction.h 2003-06-03 09:36:39.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Definitions for Linux/ia64 sigaction.
+- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,6 +49,7 @@
+
+ /* Bits in `sa_flags'. */
+ #define SA_NOCLDSTOP 0x00000001 /* Don't send SIGCHLD when children stop. */
++#define SA_NOCLDWAIT 0x00000002 /* Don't create zombie on child death. */
+ #define SA_SIGINFO 0x00000004
+ #if defined __USE_UNIX98 || defined __USE_MISC
+ # define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h 2002-02-14 03:26:50.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h 2003-08-21 08:37:13.000000000 -0400
+@@ -50,7 +50,9 @@
+ struct ia64_fpreg sc_fr[128]; /* floating-point registers */
+ unsigned long int sc_rbs_base;/* NULL or new base of sighandler's rbs */
+ unsigned long int sc_loadrs; /* see description above */
+- unsigned long int sc_rsvd[14];/* reserved for future use */
++ unsigned long int sc_ar25; /* cmp8xchg16 uses this */
++ unsigned long int sc_ar26; /* rsvd for scratch use */
++ unsigned long int sc_rsvd[12];/* reserved for future use */
+
+ /* sc_mask is actually an sigset_t but we don't want to
+ * include the kernel headers here. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h 2002-12-04 19:21:53.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h 2003-04-24 20:06:01.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* siginfo_t, sigevent and constants. Linux/ia64 version.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
+
+@@ -65,8 +65,9 @@
+ /* POSIX.1b timers. */
+ struct
+ {
+- unsigned int _timer1;
+- unsigned int _timer2;
++ int si_tid; /* Timer ID. */
++ int si_overrun; /* Overrun count. */
++ sigval_t si_sigval; /* Signal value. */
+ } _timer;
+
+ /* POSIX.1b signals. */
+@@ -109,6 +110,8 @@
+ /* X/Open requires some more fields with fixed names. */
+ # define si_pid _sifields._kill.si_pid
+ # define si_uid _sifields._kill.si_uid
++# define si_timerid _sifields._timer.si_tid
++# define si_overrun _sifields._timer.si_overrun
+ # define si_status _sifields._sigchld.si_status
+ # define si_utime _sifields._sigchld.si_utime
+ # define si_stime _sifields._sigchld.si_stime
+@@ -128,8 +131,10 @@
+ signals. */
+ enum
+ {
+- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
++ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+ # define SI_ASYNCNL SI_ASYNCNL
++ SI_TKILL = -6, /* Sent by tkill. */
++# define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+ # define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+@@ -294,9 +299,6 @@
+ # define __SIGEV_MAX_SIZE 64
+ # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+
+-/* Forward declaration of the `pthread_attr_t' type. */
+-struct __pthread_attr_s;
+-
+ typedef struct sigevent
+ {
+ sigval_t sigev_value;
+@@ -326,8 +328,11 @@
+ # define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+ # define SIGEV_NONE SIGEV_NONE
+- SIGEV_THREAD /* Deliver via thread creation. */
++ SIGEV_THREAD, /* Deliver via thread creation. */
+ # define SIGEV_THREAD SIGEV_THREAD
++
++ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
++#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+ };
+
+ #endif /* have _SIGNAL_H. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h 2002-10-01 16:10:31.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/sigstack.h 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* sigstack, sigaltstack definitions.
+- Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -42,7 +42,7 @@
+ };
+
+ /* Minimum stack size for a signal handler. */
+-#define MINSIGSTKSZ 131027
++#define MINSIGSTKSZ 131072
+
+ /* System default stack size. */
+ #define SIGSTKSZ 262144
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/stat.h 2002-12-31 15:08:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/bits/stat.h 2003-08-21 08:37:13.000000000 -0400
+@@ -108,6 +108,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/brk.S 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/brk.S 2003-03-15 15:02:20.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* brk system call for Linux/ia64
+- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Stephane Eranian <eranian@hpl.hp.com> and
+ Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
+@@ -25,6 +25,8 @@
+ #include <asm/errno.h>
+
+ .global __curbrk
++ .type __curbrk,@object
++ .size __curbrk,8
+ .data
+ .align 8
+ __curbrk:
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/clone2.S 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/clone2.S 2003-03-15 15:02:20.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,10 +22,11 @@
+
+
+ /* int __clone2(int (*fn) (void *arg), void *child_stack_base, */
+-/* size_t child_stack_size, int flags, void *arg) */
++/* size_t child_stack_size, int flags, void *arg, */
++/* pid_t *parent_tid, void *tls, pid_t *child_tid) */
+
+ ENTRY(__clone2)
+- alloc r2=ar.pfs,5,2,3,0
++ alloc r2=ar.pfs,8,2,6,0
+ cmp.eq p6,p0=0,in0
+ mov r8=EINVAL
+ (p6) br.cond.spnt.few __syscall_error
+@@ -41,6 +42,9 @@
+ mov out0=in3 /* Flags are first syscall argument. */
+ mov out1=in1 /* Stack address. */
+ mov out2=in2 /* Stack size. */
++ mov out3=in5 /* Parent TID Pointer */
++ mov out4=in7 /* Child TID Pointer */
++ mov out5=in6 /* TLS pointer */
+ DO_CALL (SYS_ify (clone2))
+ cmp.eq p6,p0=-1,r10
+ ;;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fork.S 2002-12-31 14:13:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fork.S 2003-04-12 11:39:50.000000000 -0400
+@@ -32,7 +32,6 @@
+ ;;
+ DO_CALL (SYS_ify (clone))
+ cmp.eq p6,p0=-1,r10
+- ;;
+ (p6) br.cond.spnt.few __syscall_error
+ ret
+ PSEUDO_END(__libc_fork)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fxstat.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/fxstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* fxstat using old-style Unix fstat system call.
+- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,8 +30,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_fstat (int, struct stat *__unbounded);
+-
+ /* Get information about the file FD in BUF. */
+ int
+ __fxstat (int vers, int fd, struct stat *buf)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/getcontext.S 2002-10-09 05:57:31.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/getcontext.S 2003-04-12 11:39:50.000000000 -0400
+@@ -34,6 +34,7 @@
+ other than the PRESERVED state. */
+
+ ENTRY(__getcontext)
++ .prologue
+ alloc r16 = ar.pfs, 1, 0, 3, 0
+
+ // sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask):
+@@ -53,7 +54,9 @@
+ add r2 = SC_GR+1*8, r32
+ ;;
+ mov.m rBSP = ar.bsp
++ .save ar.unat, rUNAT
+ mov.m rUNAT = ar.unat
++ .body
+ add r3 = SC_GR+4*8, r32
+ ;;
+
+@@ -65,8 +68,8 @@
+ .mem.offset 8,0; st8.spill [r3] = r6, 48
+ and rTMP = ~0x3, rRSC
+ ;;
+- st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
+- st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
++.mem.offset 0,0; st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8))
++.mem.offset 8,0; st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8))
+ ;;
+ mov.m ar.rsc = rTMP // put RSE into enforced lazy mode
+ mov.m rNAT = ar.unat
+@@ -119,8 +122,8 @@
+ stf.spill [r3] = f31, 32
+ mov rB1 = b1
+ ;;
++ mov ar.unat = rUNAT // we're done spilling integer regs; restore caller's UNaT
+ add r2 = SC_NAT, r32
+- nop 0
+ add r3 = SC_BSP, r32
+ ;;
+ st8 [r2] = rNAT, (SC_RNAT-SC_NAT)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/kernel_stat.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/kernel_stat.h 2003-06-12 12:15:15.000000000 -0400
+@@ -0,0 +1,21 @@
++/* Definition of `struct stat' used in the kernel.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define STAT_IS_KERNEL_STAT 1
++#define XSTAT_IS_XSTAT64 1
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/lxstat.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/lxstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* lxstat using old-style Unix fstat system call.
+- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,8 +30,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_lstat (const char *__unbounded, struct stat *__unbounded);
+-
+ /* Get information about the file FD in BUF. */
+ int
+ __lxstat (int vers, const char *name, struct stat *buf)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setcontext.S 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setcontext.S 2003-06-03 09:36:39.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
+
+@@ -32,7 +32,7 @@
+ other than the PRESERVED state. */
+
+ ENTRY(__setcontext)
+- alloc r16 = ar.pfs, 1, 0, 3, 0
++ alloc r16 = ar.pfs, 1, 0, 4, 0
+
+ // sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL):
+
+@@ -42,6 +42,7 @@
+ mov out0 = SIG_SETMASK
+ add out1 = r2, in0
+ mov out2 = 0
++ mov out3 = 8 // sizeof kernel sigset_t
+
+ invala
+ break __BREAK_SYSCALL
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setjmp.S 2002-12-31 14:13:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/setjmp.S 2003-05-24 14:06:23.000000000 -0400
+@@ -86,22 +86,23 @@
+
+ ENTRY(__sigsetjmp)
+ .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
+- alloc loc1=ar.pfs,2,2,2,0
+- mov r16=ar.unat
++ alloc loc1=ar.pfs,2,3,2,0
++ .save ar.unat, loc2
++ mov loc2=ar.unat
+ ;;
+ mov r17=ar.fpsr
+ mov r2=in0
+ add r3=8,in0
+ ;;
+- st8.spill.nta [r2]=sp,16 // r12 (sp)
+- st8.spill.nta [r3]=gp,16 // r1 (gp)
++.mem.offset 8,0; st8.spill.nta [r2]=sp,16 // r12 (sp)
++.mem.offset 0,0; st8.spill.nta [r3]=gp,16 // r1 (gp)
+ ;;
+- st8.nta [r2]=r16,16 // save caller's unat
++ st8.nta [r2]=loc2,16 // save caller's unat
+ st8.nta [r3]=r17,16 // save fpsr
+ add r8=0xa0,in0
+ ;;
+- st8.spill.nta [r2]=r4,16 // r4
+- st8.spill.nta [r3]=r5,16 // r5
++.mem.offset 8,0; st8.spill.nta [r2]=r4,16 // r4
++.mem.offset 0,0; st8.spill.nta [r3]=r5,16 // r5
+ add r9=0xb0,in0
+ ;;
+ stf.spill.nta [r8]=f2,32
+@@ -143,8 +144,8 @@
+ stf.spill.nta [r8]=f30
+ stf.spill.nta [r9]=f31
+
+- st8.spill.nta [r2]=r6,16 // r6
+- st8.spill.nta [r3]=r7,16 // r7
++.mem.offset 8,0; st8.spill.nta [r2]=r6,16 // r6
++.mem.offset 0,0; st8.spill.nta [r3]=r7,16 // r7
+ ;;
+ mov r23=ar.bsp
+ mov r25=ar.unat
+@@ -170,9 +171,10 @@
+ st8.nta [r3]=in0 // &__jmp_buf
+ br.call.dpnt.few rp=__sigjmp_save
+ .ret0: // force a new bundle ::q
+- mov r8=0
++ mov.m ar.unat=loc2 // restore caller's unat
+ mov rp=loc0
+ mov ar.pfs=loc1
++ mov r8=0
+ ret
+ END(__sigsetjmp)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigaction.c 2003-01-02 18:26:04.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigaction.c 2003-09-19 22:37:10.000000000 -0400
+@@ -29,9 +29,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_rt_sigaction (int, const struct sigaction *__unbounded,
+- struct sigaction *__unbounded, size_t);
+-
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. This is the definition. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym 2003-06-02 15:56:22.000000000 -0400
+@@ -0,0 +1,16 @@
++#include <stddef.h>
++#include <sys/ucontext.h>
++
++--
++SC_NAT offsetof (struct sigcontext, sc_nat)
++SC_BSP offsetof (struct sigcontext, sc_ar_bsp)
++SC_RNAT offsetof (struct sigcontext, sc_ar_rnat)
++SC_UNAT offsetof (struct sigcontext, sc_ar_unat)
++SC_FPSR offsetof (struct sigcontext, sc_ar_fpsr)
++SC_PFS offsetof (struct sigcontext, sc_ar_pfs)
++SC_LC offsetof (struct sigcontext, sc_ar_lc)
++SC_PR offsetof (struct sigcontext, sc_pr)
++SC_BR offsetof (struct sigcontext, sc_br)
++SC_GR offsetof (struct sigcontext, sc_gr)
++SC_FR offsetof (struct sigcontext, sc_fr)
++SC_MASK offsetof (struct sigcontext, sc_mask)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigpending.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigpending.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,9 +27,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_rt_sigpending (sigset_t *__unbounded, size_t);
+-
+-
+ /* Change the set of blocked signals to SET,
+ wait until a signal arrives, and restore the set of blocked signals. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigprocmask.c 2001-07-07 15:21:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigprocmask.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Linux/IA64 specific sigprocmask
+ Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
+@@ -29,9 +29,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_rt_sigprocmask (int, const sigset_t *__unbounded,
+- sigset_t *__unbounded, size_t);
+-
+ /* Get and/or change the set of blocked signals. */
+ int
+ __sigprocmask (how, set, oset)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigsuspend.c 2002-12-17 19:57:21.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sigsuspend.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,9 +25,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
+-
+-
+ /* Change the set of blocked signals to SET,
+ wait until a signal arrives, and restore the set of blocked signals. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/syscalls.list 2003-02-05 16:40:50.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -5,7 +5,7 @@
+ # Whee! 64-bit systems naturally implement llseek.
+ llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
+ lseek llseek -
+-posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
++posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
+ pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
+ pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+ fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64
+@@ -30,6 +30,7 @@
+ shmdt - shmdt i:s __shmdt shmdt
+ shmget - shmget i:iii __shmget shmget
+ semop - semop i:ipi __semop semop
++semtimedop - semtimedop i:ipip semtimedop
+ semget - semget i:iii __semget semget
+ semctl - semctl i:iiii __semctl semctl
+
+@@ -58,34 +59,8 @@
+
+ ptrace - ptrace 4 __ptrace ptrace
+
+-rt_sigaction EXTRA rt_sigaction i:ippi __syscall_rt_sigaction rt_sigaction
+-rt_sigpending EXTRA rt_sigpending i:pi __syscall_rt_sigpending rt_sigpending
+-rt_sigprocmask EXTRA rt_sigprocmask i:ippi __syscall_rt_sigprocmask rt_sigprocmask
+-rt_sigqueueinfo EXTRA rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo rt_sigqueueinfo
+-rt_sigsuspend EXTRA rt_sigsuspend i:pi __syscall_rt_sigsuspend rt_sigsuspend
+-rt_sigtimedwait EXTRA rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait rt_sigtimedwait
+
+ # System calls with wrappers.
+-s_execve EXTRA execve i:spp __syscall_execve
+-s_exit exit exit i:i __syscall_exit
+-s_exit_group exit_group exit_group i:i __syscall_exit_group
+-s_getcwd getcwd getcwd i:pi __syscall_getcwd getcwd
+-s_getdents getdents getdents i:ipi __syscall_getdents getdents
+-s_getdents64 getdents64 getdents64 i:ipi __syscall_getdents64
+-s_mknod xmknod mknod i:sii __syscall_mknod
+-s_readv readv readv i:ipi __syscall_readv
+-s_writev writev writev i:ipi __syscall_writev
+-s_poll poll poll i:pii __syscall_poll
+-s_reboot reboot reboot i:iii __syscall_reboot
+-s_ustat ustat ustat i:ip __syscall_ustat
+-s_stat xstat stat i:sp __syscall_stat
+-s_lstat lxstat lstat i:sp __syscall_lstat
+-s_fstat fxstat fstat i:ip __syscall_fstat
+-s_sysctl sysctl _sysctl i:p __syscall__sysctl
+-s_open open open i:siv __syscall_open
+-s_wait4 wait4 wait4 i:iWiP __syscall_wait4
+-s_ioctl ioctl ioctl i:iiI __syscall_ioctl
+-s_write write write i:ibn __syscall_write
+
+ # IA-64 specific
+ getunwind EXTRA getunwind i:pi getunwind
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sysdep.h 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/sysdep.h 2003-08-21 08:37:13.000000000 -0400
+@@ -45,6 +45,12 @@
+ # define __NR_pwrite __NR_pwrite64
+ #endif
+
++/* This is to help the old kernel headers where __NR_semtimedop is not
++ available. */
++#ifndef __NR_semtimedop
++# define __NR_semtimedop 1247
++#endif
++
+ #ifdef __ASSEMBLER__
+
+ #undef CALL_MCOUNT
+@@ -96,15 +102,39 @@
+ #undef PSEUDO_END
+ #define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ ENTRY(name) \
++ DO_CALL (SYS_ify(syscall_name));
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) .endp C_SYMBOL_NAME(name);
++
++#undef PSEUDO_ERRVAL
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ ENTRY(name) \
++ DO_CALL (SYS_ify(syscall_name)); \
++ cmp.eq p6,p0=-1,r10; \
++(p6) mov r10=r8;
++
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) .endp C_SYMBOL_NAME(name);
++
+ #undef END
+ #define END(name) \
+ .size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
+ .endp C_SYMBOL_NAME(name)
+
+ #define ret br.ret.sptk.few b0
++#define ret_NOERRNO ret
++#define ret_ERRVAL ret
+
+ #else /* not __ASSEMBLER__ */
+
++#define BREAK_INSN_1(num) "break " #num ";;\n\t"
++#define BREAK_INSN(num) BREAK_INSN_1(num)
++
+ /* On IA-64 we have stacked registers for passing arguments. The
+ "out" registers end up being the called function's "in"
+ registers.
+@@ -121,10 +151,10 @@
+ register long _r15 asm ("r15") = __NR_##name; \
+ long _retval; \
+ LOAD_ARGS_##nr (args); \
+- __asm __volatile ("break %3;;\n\t" \
++ __asm __volatile (BREAK_INSN (__BREAK_SYSCALL) \
+ : "=r" (_r8), "=r" (_r10), "=r" (_r15) \
+- : "i" (__BREAK_SYSCALL), "2" (_r15) \
+- ASM_ARGS_##nr \
++ ASM_OUTARGS_##nr \
++ : "2" (_r15) ASM_ARGS_##nr \
+ : "memory" ASM_CLOBBERS_##nr); \
+ _retval = _r8; \
+ if (_r10 == -1) \
+@@ -145,10 +175,10 @@
+ register long _r15 asm ("r15") = __NR_##name; \
+ long _retval; \
+ LOAD_ARGS_##nr (args); \
+- __asm __volatile ("break %3;;\n\t" \
++ __asm __volatile (BREAK_INSN (__BREAK_SYSCALL) \
+ : "=r" (_r8), "=r" (_r10), "=r" (_r15) \
+- : "i" (__BREAK_SYSCALL), "2" (_r15) \
+- ASM_ARGS_##nr \
++ ASM_OUTARGS_##nr \
++ : "2" (_r15) ASM_ARGS_##nr \
+ : "memory" ASM_CLOBBERS_##nr); \
+ _retval = _r8; \
+ err = _r10; \
+@@ -176,20 +206,33 @@
+ #define LOAD_ARGS_5(out0, out1, out2, out3, out4) \
+ register long _out4 asm ("out4") = (long) (out4); \
+ LOAD_ARGS_4 (out0, out1, out2, out3)
++#define LOAD_ARGS_6(out0, out1, out2, out3, out4, out5) \
++ register long _out5 asm ("out5") = (long) (out5); \
++ LOAD_ARGS_5 (out0, out1, out2, out3, out4)
++
++#define ASM_OUTARGS_0
++#define ASM_OUTARGS_1 ASM_OUTARGS_0, "=r" (_out0)
++#define ASM_OUTARGS_2 ASM_OUTARGS_1, "=r" (_out1)
++#define ASM_OUTARGS_3 ASM_OUTARGS_2, "=r" (_out2)
++#define ASM_OUTARGS_4 ASM_OUTARGS_3, "=r" (_out3)
++#define ASM_OUTARGS_5 ASM_OUTARGS_4, "=r" (_out4)
++#define ASM_OUTARGS_6 ASM_OUTARGS_5, "=r" (_out5)
+
+ #define ASM_ARGS_0
+-#define ASM_ARGS_1 ASM_ARGS_0, "r" (_out0)
+-#define ASM_ARGS_2 ASM_ARGS_1, "r" (_out1)
+-#define ASM_ARGS_3 ASM_ARGS_2, "r" (_out2)
+-#define ASM_ARGS_4 ASM_ARGS_3, "r" (_out3)
+-#define ASM_ARGS_5 ASM_ARGS_4, "r" (_out4)
++#define ASM_ARGS_1 ASM_ARGS_0, "3" (_out0)
++#define ASM_ARGS_2 ASM_ARGS_1, "4" (_out1)
++#define ASM_ARGS_3 ASM_ARGS_2, "5" (_out2)
++#define ASM_ARGS_4 ASM_ARGS_3, "6" (_out3)
++#define ASM_ARGS_5 ASM_ARGS_4, "7" (_out4)
++#define ASM_ARGS_6 ASM_ARGS_5, "8" (_out5)
+
+ #define ASM_CLOBBERS_0 ASM_CLOBBERS_1, "out0"
+ #define ASM_CLOBBERS_1 ASM_CLOBBERS_2, "out1"
+ #define ASM_CLOBBERS_2 ASM_CLOBBERS_3, "out2"
+ #define ASM_CLOBBERS_3 ASM_CLOBBERS_4, "out3"
+ #define ASM_CLOBBERS_4 ASM_CLOBBERS_5, "out4"
+-#define ASM_CLOBBERS_5 , "out5", "out6", "out7", \
++#define ASM_CLOBBERS_5 ASM_CLOBBERS_6, "out5"
++#define ASM_CLOBBERS_6 , "out6", "out7", \
+ /* Non-stacked integer registers, minus r8, r10, r15. */ \
+ "r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18", \
+ "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/system.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/system.c 2003-03-18 16:46:10.000000000 -0500
+@@ -0,0 +1,35 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <kernel-features.h>
++
++/* We have to and actually can handle cancelable system(). The big
++ problem: we have to kill the child process if necessary. To do
++ this a cleanup handler has to be registered and is has to be able
++ to find the PID of the child. The main problem is to reliable have
++ the PID when needed. It is not necessary for the parent thread to
++ return. It might still be in the kernel when the cancellation
++ request comes. Therefore we have to use the clone() calls ability
++ to have the kernel write the PID into the user-level variable. */
++#ifdef __ASSUME_CLONE_THREAD_FLAGS
++# define FORK() \
++ INLINE_SYSCALL (clone2, 6, CLONE_PARENT_SETTID | SIGCHLD, NULL, 0, \
++ &pid, NULL, NULL)
++#endif
++
++#include "../system.c"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/ucontext_i.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/ucontext_i.h 2003-06-03 09:36:39.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
+
+@@ -24,19 +24,7 @@
+ #define SIG_UNBLOCK 1
+ #define SIG_SETMASK 2
+
+-#define SC_NAT 0x008
+-#define SC_BSP 0x048
+-#define SC_RNAT 0x050
+-#define SC_UNAT 0x060
+-#define SC_FPSR 0x068
+-#define SC_PFS 0x070
+-#define SC_LC 0x078
+-#define SC_PR 0x080
+-#define SC_BR 0x088
+-#define SC_GR 0x0c8
+-#define SC_FR 0x1d0
+-#define SC_MASK 0x9d0
+-
++#include <sigcontext-offsets.h>
+
+ #define rTMP r16
+ #define rPOS r16
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/umount.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/umount.c 2003-05-14 20:26:00.000000000 -0400
+@@ -0,0 +1,31 @@
++/* umount system call for Linux/ia64.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/mount.h>
++#include <errno.h>
++
++#include <sysdep.h>
++#include <bp-checks.h>
++
++/* Unmount a filesystem. */
++int
++umount (const char *special_file)
++{
++ return INLINE_SYSCALL (umount, 2, CHECK_STRING (special_file), 0);
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/xstat.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ia64/xstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* xstat using old-style Unix stat system call.
+- Copyright (C) 1991,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,8 +30,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_stat (const char *__unbounded, struct stat *__unbounded);
+-
+ /* Get information about the file NAME in BUF. */
+ int
+ __xstat (int vers, const char *name, struct stat *buf)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/if_index.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/if_index.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997,98,99,2000,02 Free Software Foundation, Inc.
++/* Copyright (C) 1997,98,99,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,6 +25,7 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <bits/libc-lock.h>
++#include <not-cancel.h>
+
+ #include "kernel-features.h"
+
+@@ -53,12 +54,12 @@
+ if (__ioctl (fd, SIOCGIFINDEX, &ifr) < 0)
+ {
+ int saved_errno = errno;
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ if (saved_errno == EINVAL)
+ __set_errno (ENOSYS);
+ return 0;
+ }
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return ifr.ifr_ifindex;
+ #endif
+ }
+@@ -120,9 +121,9 @@
+ do
+ {
+ ifc.ifc_buf = alloca (ifc.ifc_len = rq_len);
+- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
++ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
+ {
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return NULL;
+ }
+ rq_len *= 2;
+@@ -134,7 +135,7 @@
+ idx = malloc ((nifs + 1) * sizeof (struct if_nameindex));
+ if (idx == NULL)
+ {
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ __set_errno (ENOBUFS);
+ return NULL;
+ }
+@@ -152,7 +153,7 @@
+ for (j = 0; j < i; ++j)
+ free (idx[j].if_name);
+ free (idx);
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ if (saved_errno == EINVAL)
+ saved_errno = ENOSYS;
+ else if (saved_errno == ENOMEM)
+@@ -166,7 +167,7 @@
+ idx[i].if_index = 0;
+ idx[i].if_name = NULL;
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return idx;
+ #endif
+ }
+@@ -208,7 +209,7 @@
+ ifr.ifr_ifindex = ifindex;
+ status = __ioctl (fd, SIOCGIFNAME, &ifr);
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+
+ # if __ASSUME_SIOCGIFNAME == 0
+ if (status < 0)
+@@ -288,9 +289,9 @@
+ do
+ {
+ ifc.ifc_buf = alloca (ifc.ifc_len = rq_len);
+- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
++ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
+ {
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ return;
+ }
+ rq_len *= 2;
+@@ -317,6 +318,6 @@
+ break;
+ }
+
+- __close (fd);
++ close_not_cancel_no_status (fd);
+ }
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ifaddrs.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ifaddrs.c 2003-08-21 08:37:11.000000000 -0400
+@@ -0,0 +1,810 @@
++/* getifaddrs -- get names and addresses of all network interfaces
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <assert.h>
++#include <errno.h>
++#include <ifaddrs.h>
++#include <net/if.h>
++#include <netinet/in.h>
++#include <netpacket/packet.h>
++#include <stdbool.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/ioctl.h>
++#include <sys/socket.h>
++#include <sysdep.h>
++#include <time.h>
++#include <unistd.h>
++
++#include <asm/types.h>
++#include <linux/netlink.h>
++#include <linux/rtnetlink.h>
++
++#include "kernel-features.h"
++
++/* We don't know if we have NETLINK support compiled in in our
++ Kernel, so include the old implementation as fallback. */
++#if __ASSUME_NETLINK_SUPPORT == 0
++int __no_netlink_support attribute_hidden;
++
++# define getifaddrs fallback_getifaddrs
++# include "sysdeps/gnu/ifaddrs.c"
++# undef getifaddrs
++
++#else
++
++# define __no_netlink_support 0
++
++#endif
++
++
++struct netlink_res
++{
++ struct netlink_res *next;
++ struct nlmsghdr *nlh;
++ size_t size; /* Size of response. */
++ uint32_t seq; /* sequential number we used. */
++};
++
++
++struct netlink_handle
++{
++ int fd; /* Netlink file descriptor. */
++ pid_t pid; /* Process ID. */
++ uint32_t seq; /* The sequence number we use currently. */
++ struct netlink_res *nlm_list; /* Pointer to list of responses. */
++ struct netlink_res *end_ptr; /* For faster append of new entries. */
++};
++
++
++/* struct to hold the data for one ifaddrs entry, so we can allocate
++ everything at once. */
++struct ifaddrs_storage
++{
++ struct ifaddrs ifa;
++ union
++ {
++ /* Save space for the biggest of the four used sockaddr types and
++ avoid a lot of casts. */
++ struct sockaddr sa;
++ struct sockaddr_ll sl;
++ struct sockaddr_in s4;
++ struct sockaddr_in6 s6;
++ } addr, netmask, broadaddr;
++ char name[IF_NAMESIZE + 1];
++};
++
++
++static void
++free_netlink_handle (struct netlink_handle *h)
++{
++ struct netlink_res *ptr;
++ int saved_errno = errno;
++
++ ptr = h->nlm_list;
++ while (ptr != NULL)
++ {
++ struct netlink_res *tmpptr;
++
++ tmpptr = ptr->next;
++ free (ptr);
++ ptr = tmpptr;
++ }
++
++ errno = saved_errno;
++}
++
++
++static int
++netlink_sendreq (struct netlink_handle *h, int type)
++{
++ struct
++ {
++ struct nlmsghdr nlh;
++ struct rtgenmsg g;
++ } req;
++ struct sockaddr_nl nladdr;
++
++ if (h->seq == 0)
++ h->seq = time (NULL);
++
++ req.nlh.nlmsg_len = sizeof (req);
++ req.nlh.nlmsg_type = type;
++ req.nlh.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
++ req.nlh.nlmsg_pid = 0;
++ req.nlh.nlmsg_seq = h->seq;
++ req.g.rtgen_family = AF_UNSPEC;
++
++ memset (&nladdr, '\0', sizeof (nladdr));
++ nladdr.nl_family = AF_NETLINK;
++
++ return TEMP_FAILURE_RETRY (__sendto (h->fd, (void *) &req, sizeof (req), 0,
++ (struct sockaddr *) &nladdr,
++ sizeof (nladdr)));
++}
++
++
++static int
++netlink_receive (struct netlink_handle *h)
++{
++ struct netlink_res *nlm_next;
++ char buf[4096];
++ struct iovec iov = { buf, sizeof (buf) };
++ struct sockaddr_nl nladdr;
++ struct nlmsghdr *nlmh;
++ int read_len;
++ bool done = false;
++
++ while (! done)
++ {
++ struct msghdr msg =
++ {
++ (void *) &nladdr, sizeof (nladdr),
++ &iov, 1,
++ NULL, 0,
++ 0
++ };
++
++ read_len = TEMP_FAILURE_RETRY (__recvmsg (h->fd, &msg, 0));
++ if (read_len < 0)
++ return -1;
++
++ if (msg.msg_flags & MSG_TRUNC)
++ return -1;
++
++ nlm_next = (struct netlink_res *) malloc (sizeof (struct netlink_res)
++ + read_len);
++ if (nlm_next == NULL)
++ return -1;
++ nlm_next->next = NULL;
++ nlm_next->nlh = memcpy (nlm_next + 1, buf, read_len);
++ nlm_next->size = read_len;
++ nlm_next->seq = h->seq;
++ if (h->nlm_list == NULL)
++ h->nlm_list = nlm_next;
++ else
++ h->end_ptr->next = nlm_next;
++ h->end_ptr = nlm_next;
++
++ for (nlmh = (struct nlmsghdr *) buf;
++ NLMSG_OK (nlmh, (size_t) read_len);
++ nlmh = (struct nlmsghdr *) NLMSG_NEXT (nlmh, read_len))
++ {
++ if ((pid_t) nlmh->nlmsg_pid != h->pid || nlmh->nlmsg_seq != h->seq)
++ continue;
++
++ if (nlmh->nlmsg_type == NLMSG_DONE)
++ {
++ /* We found the end, leave the loop. */
++ done = true;
++ break;
++ }
++ if (nlmh->nlmsg_type == NLMSG_ERROR)
++ {
++ struct nlmsgerr *nlerr = (struct nlmsgerr *) NLMSG_DATA (nlmh);
++ if (nlmh->nlmsg_len < NLMSG_LENGTH (sizeof (struct nlmsgerr)))
++ errno = EIO;
++ else
++ errno = -nlerr->error;
++ return -1;
++ }
++ }
++ }
++ return 0;
++}
++
++
++static void
++netlink_close (struct netlink_handle *h)
++{
++ /* Don't modify errno. */
++ INTERNAL_SYSCALL_DECL (err);
++ (void) INTERNAL_SYSCALL (close, err, 1, h->fd);
++}
++
++
++/* Open a NETLINK socket. */
++static int
++netlink_open (struct netlink_handle *h)
++{
++ struct sockaddr_nl nladdr;
++
++ h->fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
++ if (h->fd < 0)
++ return -1;
++
++ memset (&nladdr, '\0', sizeof (nladdr));
++ nladdr.nl_family = AF_NETLINK;
++ if (__bind (h->fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) < 0)
++ {
++ close_and_out:
++ netlink_close (h);
++ return -1;
++ }
++ /* Determine the ID the kernel assigned for this netlink connection.
++ It is not necessarily the PID if there is more than one socket
++ open. */
++ socklen_t addr_len = sizeof (nladdr);
++ if (__getsockname (h->fd, (struct sockaddr *) &nladdr, &addr_len) < 0)
++ goto close_and_out;
++ h->pid = nladdr.nl_pid;
++ return 0;
++}
++
++
++/* We know the number of RTM_NEWLINK entries, so we reserve the first
++ # of entries for this type. All RTM_NEWADDR entries have an index
++ pointer to the RTM_NEWLINK entry. To find the entry, create
++ a table to map kernel index entries to our index numbers.
++ Since we get at first all RTM_NEWLINK entries, it can never happen
++ that a RTM_NEWADDR index is not known to this map. */
++static int
++internal_function
++map_newlink (int index, struct ifaddrs_storage *ifas, int *map, int max)
++{
++ int i;
++
++ for (i = 0; i < max; i++)
++ {
++ if (map[i] == -1)
++ {
++ map[i] = index;
++ if (i > 0)
++ ifas[i - 1].ifa.ifa_next = &ifas[i].ifa;
++ return i;
++ }
++ else if (map[i] == index)
++ return i;
++ }
++ /* This should never be reached. If this will be reached, we have
++ a very big problem. */
++ abort ();
++}
++
++
++/* Create a linked list of `struct ifaddrs' structures, one for each
++ network interface on the host machine. If successful, store the
++ list in *IFAP and return 0. On errors, return -1 and set `errno'. */
++int
++getifaddrs (struct ifaddrs **ifap)
++{
++ struct netlink_handle nh = { 0, 0, 0, NULL, NULL };
++ struct netlink_res *nlp;
++ struct ifaddrs_storage *ifas;
++ unsigned int i, newlink, newaddr, newaddr_idx;
++ int *map_newlink_data;
++ size_t ifa_data_size = 0; /* Size to allocate for all ifa_data. */
++ char *ifa_data_ptr; /* Pointer to the unused part of memory for
++ ifa_data. */
++ int result = 0;
++
++ if (ifap)
++ *ifap = NULL;
++
++ if (! __no_netlink_support && netlink_open (&nh) < 0)
++ {
++#if __ASSUME_NETLINK_SUPPORT == 0
++ __no_netlink_support = 1;
++#else
++ return -1;
++#endif
++ }
++
++#if __ASSUME_NETLINK_SUPPORT == 0
++ if (__no_netlink_support)
++ return fallback_getifaddrs (ifap);
++#endif
++
++ /* Tell the kernel that we wish to get a list of all
++ active interfaces. */
++ if (netlink_sendreq (&nh, RTM_GETLINK) < 0)
++ {
++ result = -1;
++ goto exit_close;
++ }
++ /* Collect all data for every interface. */
++ if (netlink_receive (&nh) < 0)
++ {
++ result = -1;
++ goto exit_free;
++ }
++
++
++ /* Now ask the kernel for all addresses which are assigned
++ to an interface. Since we store the addresses after the
++ interfaces in the list, we will later always find the
++ interface before the corresponding addresses. */
++ ++nh.seq;
++ if (netlink_sendreq (&nh, RTM_GETADDR) < 0
++ /* Collect all data for every interface. */
++ || netlink_receive (&nh) < 0)
++ {
++ result = -1;
++ goto exit_free;
++ }
++
++ /* Count all RTM_NEWLINK and RTM_NEWADDR entries to allocate
++ enough memory. */
++ newlink = newaddr = 0;
++ for (nlp = nh.nlm_list; nlp; nlp = nlp->next)
++ {
++ struct nlmsghdr *nlh;
++ size_t size = nlp->size;
++
++ if (nlp->nlh == NULL)
++ continue;
++
++ /* Walk through all entries we got from the kernel and look, which
++ message type they contain. */
++ for (nlh = nlp->nlh; NLMSG_OK (nlh, size); nlh = NLMSG_NEXT (nlh, size))
++ {
++ /* check if the message is what we want */
++ if ((pid_t) nlh->nlmsg_pid != nh.pid || nlh->nlmsg_seq != nlp->seq)
++ continue;
++
++ if (nlh->nlmsg_type == NLMSG_DONE)
++ break; /* ok */
++
++ if (nlh->nlmsg_type == RTM_NEWLINK)
++ {
++ /* A RTM_NEWLINK message can have IFLA_STATS data. We need to
++ know the size before creating the list to allocate enough
++ memory. */
++ struct ifinfomsg *ifim = (struct ifinfomsg *) NLMSG_DATA (nlh);
++ struct rtattr *rta = IFLA_RTA (ifim);
++ size_t rtasize = IFLA_PAYLOAD (nlh);
++
++ while (RTA_OK (rta, rtasize))
++ {
++ size_t rta_payload = RTA_PAYLOAD (rta);
++
++ if (rta->rta_type == IFLA_STATS)
++ {
++ ifa_data_size += rta_payload;
++ break;
++ }
++ else
++ rta = RTA_NEXT (rta, rtasize);
++ }
++ ++newlink;
++ }
++ else if (nlh->nlmsg_type == RTM_NEWADDR)
++ ++newaddr;
++ }
++ }
++
++ /* Return if no interface is up. */
++ if ((newlink + newaddr) == 0)
++ goto exit_free;
++
++ /* Allocate memory for all entries we have and initialize next
++ pointer. */
++ ifas = (struct ifaddrs_storage *) calloc (1,
++ (newlink + newaddr)
++ * sizeof (struct ifaddrs_storage)
++ + ifa_data_size);
++ if (ifas == NULL)
++ {
++ result = -1;
++ goto exit_free;
++ }
++
++ /* Table for mapping kernel index to entry in our list. */
++ map_newlink_data = alloca (newlink * sizeof (int));
++ memset (map_newlink_data, '\xff', newlink * sizeof (int));
++
++ ifa_data_ptr = (char *) &ifas[newlink + newaddr];
++ newaddr_idx = 0; /* Counter for newaddr index. */
++
++ /* Walk through the list of data we got from the kernel. */
++ for (nlp = nh.nlm_list; nlp; nlp = nlp->next)
++ {
++ struct nlmsghdr *nlh;
++ size_t size = nlp->size;
++
++ if (nlp->nlh == NULL)
++ continue;
++
++ /* Walk through one message and look at the type: If it is our
++ message, we need RTM_NEWLINK/RTM_NEWADDR and stop if we reach
++ the end or we find the end marker (in this case we ignore the
++ following data. */
++ for (nlh = nlp->nlh; NLMSG_OK (nlh, size); nlh = NLMSG_NEXT (nlh, size))
++ {
++ int ifa_index = 0;
++
++ /* Check if the message is the one we want */
++ if ((pid_t) nlh->nlmsg_pid != nh.pid || nlh->nlmsg_seq != nlp->seq)
++ continue;
++
++ if (nlh->nlmsg_type == NLMSG_DONE)
++ break; /* ok */
++
++ if (nlh->nlmsg_type == RTM_NEWLINK)
++ {
++ /* We found a new interface. Now extract everything from the
++ interface data we got and need. */
++ struct ifinfomsg *ifim = (struct ifinfomsg *) NLMSG_DATA (nlh);
++ struct rtattr *rta = IFLA_RTA (ifim);
++ size_t rtasize = IFLA_PAYLOAD (nlh);
++
++ /* Interfaces are stored in the first "newlink" entries
++ of our list, starting in the order as we got from the
++ kernel. */
++ ifa_index = map_newlink (ifim->ifi_index - 1, ifas,
++ map_newlink_data, newlink);
++ ifas[ifa_index].ifa.ifa_flags = ifim->ifi_flags;
++
++ while (RTA_OK (rta, rtasize))
++ {
++ char *rta_data = RTA_DATA (rta);
++ size_t rta_payload = RTA_PAYLOAD (rta);
++
++ switch (rta->rta_type)
++ {
++ case IFLA_ADDRESS:
++ if (rta_payload <= sizeof (ifas[ifa_index].addr))
++ {
++ ifas[ifa_index].addr.sl.sll_family = AF_PACKET;
++ memcpy (ifas[ifa_index].addr.sl.sll_addr,
++ (char *) rta_data, rta_payload);
++ ifas[ifa_index].addr.sl.sll_halen = rta_payload;
++ ifas[ifa_index].addr.sl.sll_ifindex
++ = ifim->ifi_index;
++ ifas[ifa_index].addr.sl.sll_hatype = ifim->ifi_type;
++
++ ifas[ifa_index].ifa.ifa_addr
++ = &ifas[ifa_index].addr.sa;
++ }
++ break;
++
++ case IFLA_BROADCAST:
++ if (rta_payload <= sizeof (ifas[ifa_index].broadaddr))
++ {
++ ifas[ifa_index].broadaddr.sl.sll_family = AF_PACKET;
++ memcpy (ifas[ifa_index].broadaddr.sl.sll_addr,
++ (char *) rta_data, rta_payload);
++ ifas[ifa_index].broadaddr.sl.sll_halen = rta_payload;
++ ifas[ifa_index].broadaddr.sl.sll_ifindex
++ = ifim->ifi_index;
++ ifas[ifa_index].broadaddr.sl.sll_hatype
++ = ifim->ifi_type;
++
++ ifas[ifa_index].ifa.ifa_broadaddr
++ = &ifas[ifa_index].broadaddr.sa;
++ }
++ break;
++
++ case IFLA_IFNAME: /* Name of Interface */
++ if ((rta_payload + 1) <= sizeof (ifas[ifa_index].name))
++ {
++ ifas[ifa_index].ifa.ifa_name = ifas[ifa_index].name;
++ *(char *) __mempcpy (ifas[ifa_index].name, rta_data,
++ rta_payload) = '\0';
++ }
++ break;
++
++ case IFLA_STATS: /* Statistics of Interface */
++ ifas[ifa_index].ifa.ifa_data = ifa_data_ptr;
++ ifa_data_ptr += rta_payload;
++ memcpy (ifas[ifa_index].ifa.ifa_data, rta_data,
++ rta_payload);
++ break;
++
++ case IFLA_UNSPEC:
++ break;
++ case IFLA_MTU:
++ break;
++ case IFLA_LINK:
++ break;
++ case IFLA_QDISC:
++ break;
++ default:
++ break;
++ }
++
++ rta = RTA_NEXT (rta, rtasize);
++ }
++ }
++ else if (nlh->nlmsg_type == RTM_NEWADDR)
++ {
++ struct ifaddrmsg *ifam = (struct ifaddrmsg *) NLMSG_DATA (nlh);
++ struct rtattr *rta = IFA_RTA (ifam);
++ size_t rtasize = IFA_PAYLOAD (nlh);
++
++ /* New Addresses are stored in the order we got them from
++ the kernel after the interfaces. Theoretically it is possible
++ that we have holes in the interface part of the list,
++ but we always have already the interface for this address. */
++ ifa_index = newlink + newaddr_idx;
++ ifas[ifa_index].ifa.ifa_flags
++ = ifas[map_newlink (ifam->ifa_index - 1, ifas,
++ map_newlink_data, newlink)].ifa.ifa_flags;
++ if (ifa_index > 0)
++ ifas[ifa_index - 1].ifa.ifa_next = &ifas[ifa_index].ifa;
++ ++newaddr_idx;
++
++ while (RTA_OK (rta, rtasize))
++ {
++ char *rta_data = RTA_DATA (rta);
++ size_t rta_payload = RTA_PAYLOAD (rta);
++
++ switch (rta->rta_type)
++ {
++ case IFA_ADDRESS:
++ {
++ struct sockaddr *sa;
++
++ if (ifas[ifa_index].ifa.ifa_addr != NULL)
++ {
++ /* In a point-to-poing network IFA_ADDRESS
++ contains the destination address, local
++ address is supplied in IFA_LOCAL attribute.
++ destination address and broadcast address
++ are stored in an union, so it doesn't matter
++ which name we use. */
++ ifas[ifa_index].ifa.ifa_broadaddr
++ = &ifas[ifa_index].broadaddr.sa;
++ sa = &ifas[ifa_index].broadaddr.sa;
++ }
++ else
++ {
++ ifas[ifa_index].ifa.ifa_addr
++ = &ifas[ifa_index].addr.sa;
++ sa = &ifas[ifa_index].addr.sa;
++ }
++
++ sa->sa_family = ifam->ifa_family;
++
++ switch (ifam->ifa_family)
++ {
++ case AF_INET:
++ /* Size must match that of an address for IPv4. */
++ if (rta_payload == 4)
++ memcpy (&((struct sockaddr_in *) sa)->sin_addr,
++ rta_data, rta_payload);
++ break;
++
++ case AF_INET6:
++ /* Size must match that of an address for IPv6. */
++ if (rta_payload == 16)
++ {
++ memcpy (&((struct sockaddr_in6 *) sa)->sin6_addr,
++ rta_data, rta_payload);
++ if (IN6_IS_ADDR_LINKLOCAL (rta_data)
++ || IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
++ ((struct sockaddr_in6 *) sa)->sin6_scope_id
++ = ifam->ifa_scope;
++ }
++ break;
++
++ default:
++ if (rta_payload <= sizeof (ifas[ifa_index].addr))
++ memcpy (sa->sa_data, rta_data, rta_payload);
++ break;
++ }
++ }
++ break;
++
++ case IFA_LOCAL:
++ if (ifas[ifa_index].ifa.ifa_addr != NULL)
++ {
++ /* If ifa_addr is set and we get IFA_LOCAL,
++ assume we have a point-to-point network.
++ Move address to correct field. */
++ ifas[ifa_index].broadaddr = ifas[ifa_index].addr;
++ ifas[ifa_index].ifa.ifa_broadaddr
++ = &ifas[ifa_index].broadaddr.sa;
++ memset (&ifas[ifa_index].addr, '\0',
++ sizeof (ifas[ifa_index].addr));
++ }
++
++ ifas[ifa_index].ifa.ifa_addr = &ifas[ifa_index].addr.sa;
++ ifas[ifa_index].ifa.ifa_addr->sa_family
++ = ifam->ifa_family;
++
++ switch (ifam->ifa_family)
++ {
++ case AF_INET:
++ /* Size must match that of an address for IPv4. */
++ if (rta_payload == 4)
++ memcpy (&ifas[ifa_index].addr.s4.sin_addr,
++ rta_data, rta_payload);
++ break;
++
++ case AF_INET6:
++ /* Size must match that of an address for IPv6. */
++ if (rta_payload == 16)
++ {
++ memcpy (&ifas[ifa_index].addr.s6.sin6_addr,
++ rta_data, rta_payload);
++ if (IN6_IS_ADDR_LINKLOCAL (rta_data) ||
++ IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
++ ifas[ifa_index].addr.s6.sin6_scope_id =
++ ifam->ifa_scope;
++ }
++ break;
++
++ default:
++ if (rta_payload <= sizeof (ifas[ifa_index].addr))
++ memcpy (ifas[ifa_index].addr.sa.sa_data,
++ rta_data, rta_payload);
++ break;
++ }
++ break;
++
++ case IFA_BROADCAST:
++ /* We get IFA_BROADCAST, so IFA_LOCAL was too much. */
++ if (ifas[ifa_index].ifa.ifa_broadaddr != NULL)
++ memset (&ifas[ifa_index].broadaddr, '\0',
++ sizeof (ifas[ifa_index].broadaddr));
++
++ ifas[ifa_index].ifa.ifa_broadaddr
++ = &ifas[ifa_index].broadaddr.sa;
++ ifas[ifa_index].ifa.ifa_broadaddr->sa_family
++ = ifam->ifa_family;
++
++ switch (ifam->ifa_family)
++ {
++ case AF_INET:
++ /* Size must match that of an address for IPv4. */
++ if (rta_payload == 4)
++ memcpy (&ifas[ifa_index].broadaddr.s4.sin_addr,
++ rta_data, rta_payload);
++ break;
++
++ case AF_INET6:
++ /* Size must match that of an address for IPv6. */
++ if (rta_payload == 16)
++ {
++ memcpy (&ifas[ifa_index].broadaddr.s6.sin6_addr,
++ rta_data, rta_payload);
++ if (IN6_IS_ADDR_LINKLOCAL (rta_data)
++ || IN6_IS_ADDR_MC_LINKLOCAL (rta_data))
++ ifas[ifa_index].broadaddr.s6.sin6_scope_id
++ = ifam->ifa_scope;
++ }
++ break;
++
++ default:
++ if (rta_payload <= sizeof (ifas[ifa_index].addr))
++ memcpy (&ifas[ifa_index].broadaddr.sa.sa_data,
++ rta_data, rta_payload);
++ break;
++ }
++ break;
++
++ case IFA_LABEL:
++ if (rta_payload + 1 <= sizeof (ifas[ifa_index].name))
++ {
++ ifas[ifa_index].ifa.ifa_name = ifas[ifa_index].name;
++ *(char *) __mempcpy (ifas[ifa_index].name, rta_data,
++ rta_payload) = '\0';
++ }
++ else
++ abort ();
++ break;
++
++ case IFA_UNSPEC:
++ break;
++ case IFA_CACHEINFO:
++ break;
++ default:
++ break;
++ }
++
++ rta = RTA_NEXT (rta, rtasize);
++ }
++
++ /* If we didn't get the interface name with the
++ address, use the name from the interface entry. */
++ if (ifas[ifa_index].ifa.ifa_name == NULL)
++ ifas[ifa_index].ifa.ifa_name
++ = ifas[map_newlink (ifam->ifa_index - 1, ifas,
++ map_newlink_data, newlink)].ifa.ifa_name;
++
++ /* Calculate the netmask. */
++ if (ifas[ifa_index].ifa.ifa_addr
++ && ifas[ifa_index].ifa.ifa_addr->sa_family != AF_UNSPEC
++ && ifas[ifa_index].ifa.ifa_addr->sa_family != AF_PACKET)
++ {
++ uint32_t max_prefixlen = 0;
++ char *cp = NULL;
++
++ ifas[ifa_index].ifa.ifa_netmask
++ = &ifas[ifa_index].netmask.sa;
++
++ switch (ifas[ifa_index].ifa.ifa_addr->sa_family)
++ {
++ case AF_INET:
++ cp = (char *) &ifas[ifa_index].netmask.s4.sin_addr;
++ max_prefixlen = 32;
++ break;
++
++ case AF_INET6:
++ cp = (char *) &ifas[ifa_index].netmask.s6.sin6_addr;
++ max_prefixlen = 128;
++ break;
++ }
++
++ ifas[ifa_index].ifa.ifa_netmask->sa_family
++ = ifas[ifa_index].ifa.ifa_addr->sa_family;
++
++ if (cp != NULL)
++ {
++ char c;
++ unsigned int preflen;
++
++ if ((max_prefixlen > 0) &&
++ (ifam->ifa_prefixlen > max_prefixlen))
++ preflen = max_prefixlen;
++ else
++ preflen = ifam->ifa_prefixlen;
++
++ for (i = 0; i < (preflen / 8); i++)
++ *cp++ = 0xff;
++ c = 0xff;
++ c <<= (8 - (preflen % 8));
++ *cp = c;
++ }
++ }
++ }
++ }
++ }
++
++ assert (ifa_data_ptr <= (char *) &ifas[newlink + newaddr] + ifa_data_size);
++
++ if (newaddr_idx > 0)
++ {
++ for (i = 0; i < newlink; ++i)
++ if (map_newlink_data[i] == -1)
++ {
++ /* We have fewer links then we anticipated. Adjust the
++ forward pointer to the first address entry. */
++ ifas[i - 1].ifa.ifa_next = &ifas[newlink].ifa;
++ }
++
++ if (i == 0 && newlink > 0)
++ /* No valid link, but we allocated memory. We have to
++ populate the first entry. */
++ memmove (ifas, &ifas[newlink], sizeof (struct ifaddrs_storage));
++ }
++
++ if (ifap != NULL)
++ *ifap = &ifas[0].ifa;
++
++ exit_free:
++ free_netlink_handle (&nh);
++
++ exit_close:
++ netlink_close (&nh);
++
++ return result;
++}
++libc_hidden_def (getifaddrs)
++
++
++#if __ASSUME_NETLINK_SUPPORT != 0
++void
++freeifaddrs (struct ifaddrs *ifa)
++{
++ free (ifa);
++}
++libc_hidden_def (freeifaddrs)
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.c 2003-06-13 17:02:28.000000000 -0400
+@@ -0,0 +1,100 @@
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andreas Jaeger <aj@suse.de>.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include "ifreq.h"
++
++/* Variable to signal whether SIOCGIFCONF is not available. */
++#if __ASSUME_SIOCGIFNAME == 0 || 1
++static int old_siocgifconf;
++#else
++# define old_siocgifconf 0
++#endif
++
++
++void
++__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
++{
++ int fd = sockfd;
++ struct ifconf ifc;
++ int rq_len;
++ int nifs;
++# define RQ_IFS 4
++
++ if (fd < 0)
++ fd = __opensock ();
++ if (fd < 0)
++ {
++ *num_ifs = 0;
++ *ifreqs = NULL;
++ return;
++ }
++
++ ifc.ifc_buf = NULL;
++
++ /* We may be able to get the needed buffer size directly, rather than
++ guessing. */
++ if (! old_siocgifconf)
++ {
++ ifc.ifc_buf = NULL;
++ ifc.ifc_len = 0;
++ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
++ {
++# if __ASSUME_SIOCGIFNAME == 0
++ old_siocgifconf = 1;
++# endif
++ rq_len = RQ_IFS * sizeof (struct ifreq);
++ }
++ else
++ rq_len = ifc.ifc_len;
++ }
++ else
++ rq_len = RQ_IFS * sizeof (struct ifreq);
++
++ /* Read all the interfaces out of the kernel. */
++ while (1)
++ {
++ ifc.ifc_len = rq_len;
++ ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
++ if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
++ {
++ if (ifc.ifc_buf)
++ free (ifc.ifc_buf);
++
++ if (fd != sockfd)
++ __close (fd);
++
++ *num_ifs = 0;
++ *ifreqs = NULL;
++ return;
++ }
++
++ if (!old_siocgifconf || ifc.ifc_len < rq_len)
++ break;
++
++ rq_len *= 2;
++ }
++
++ nifs = ifc.ifc_len / sizeof (struct ifreq);
++
++ if (fd != sockfd)
++ __close (fd);
++
++ *num_ifs = nifs;
++ *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.h 2002-09-20 20:28:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ifreq.h 2003-08-21 08:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>.
+
+@@ -25,85 +25,8 @@
+ #include <sys/ioctl.h>
+ #include "kernel-features.h"
+
+-/* Variable to signal whether SIOCGIFCONF is not available. */
+-#if __ASSUME_SIOCGIFNAME == 0 || 1
+-static int old_siocgifconf;
+-#else
+-# define old_siocgifconf 0
+-#endif
+
+-
+-static inline void
+-__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
+-{
+- int fd = sockfd;
+- struct ifconf ifc;
+- int rq_len;
+- int nifs;
+-# define RQ_IFS 4
+-
+- if (fd < 0)
+- fd = __opensock ();
+- if (fd < 0)
+- {
+- *num_ifs = 0;
+- *ifreqs = NULL;
+- return;
+- }
+-
+- ifc.ifc_buf = NULL;
+-
+- /* We may be able to get the needed buffer size directly, rather than
+- guessing. */
+- if (! old_siocgifconf)
+- {
+- ifc.ifc_buf = NULL;
+- ifc.ifc_len = 0;
+- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
+- {
+-# if __ASSUME_SIOCGIFNAME == 0
+- old_siocgifconf = 1;
+-# endif
+- rq_len = RQ_IFS * sizeof (struct ifreq);
+- }
+- else
+- rq_len = ifc.ifc_len;
+- }
+- else
+- rq_len = RQ_IFS * sizeof (struct ifreq);
+-
+- /* Read all the interfaces out of the kernel. */
+- while (1)
+- {
+- ifc.ifc_len = rq_len;
+- ifc.ifc_buf = realloc (ifc.ifc_buf, ifc.ifc_len);
+- if (ifc.ifc_buf == NULL || __ioctl (fd, SIOCGIFCONF, &ifc) < 0)
+- {
+- if (ifc.ifc_buf)
+- free (ifc.ifc_buf);
+-
+- if (fd != sockfd)
+- __close (fd);
+-
+- *num_ifs = 0;
+- *ifreqs = NULL;
+- return;
+- }
+-
+- if (!old_siocgifconf || ifc.ifc_len < rq_len)
+- break;
+-
+- rq_len *= 2;
+- }
+-
+- nifs = ifc.ifc_len / sizeof (struct ifreq);
+-
+- if (fd != sockfd)
+- __close (fd);
+-
+- *num_ifs = nifs;
+- *ifreqs = realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq));
+-}
++extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd);
+
+ static inline struct ifreq *
+ __if_nextreq (struct ifreq *ifr)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/init-first.c 2002-12-02 17:36:59.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/init-first.c 2003-08-21 08:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Initialization code run first thing by the ELF startup code. Linux version.
+- Copyright (C) 1995-1999,2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1995-1999,2000,01,02,03 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,7 +30,7 @@
+ #include <ldsodefs.h>
+
+ /* The function is called from assembly stubs the compiler can't see. */
+-static void init (int, char **, char **) __attribute__ ((unused));
++static void init (int, char **, char **) __attribute__ ((used));
+
+ /* Set nonzero if we have to be prepared for more then one libc being
+ used in the process. Safe assumption if initializer never runs. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/internal_statvfs.c 2002-09-21 01:36:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/internal_statvfs.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -17,28 +17,46 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
++#include <mntent.h>
++#include <paths.h>
++#include <stdbool.h>
++#include <stdio_ext.h>
++#include <string.h>
++#include <sys/mount.h>
++#include <sys/stat.h>
++#include <sys/statfs.h>
++#include <sys/statvfs.h>
++#include "linux_fsinfo.h"
++
++
++void
++__internal_statvfs (const char *name, struct statvfs *buf,
++ struct statfs *fsbuf, struct stat64 *st)
++{
+ /* Now fill in the fields we have information for. */
+- buf->f_bsize = fsbuf.f_bsize;
+- /* Linux does not support f_frsize, so set it to the full block size. */
+- buf->f_frsize = fsbuf.f_bsize;
+- buf->f_blocks = fsbuf.f_blocks;
+- buf->f_bfree = fsbuf.f_bfree;
+- buf->f_bavail = fsbuf.f_bavail;
+- buf->f_files = fsbuf.f_files;
+- buf->f_ffree = fsbuf.f_ffree;
+- if (sizeof (buf->f_fsid) == sizeof (fsbuf.f_fsid))
+- buf->f_fsid = (fsbuf.f_fsid.__val[0]
+- | ((unsigned long int) fsbuf.f_fsid.__val[1]
++ buf->f_bsize = fsbuf->f_bsize;
++ /* Linux has the f_frsize size only in later version of the kernel.
++ If the value is not filled in use f_bsize. */
++ buf->f_frsize = fsbuf->f_frsize ?: fsbuf->f_bsize;
++ buf->f_blocks = fsbuf->f_blocks;
++ buf->f_bfree = fsbuf->f_bfree;
++ buf->f_bavail = fsbuf->f_bavail;
++ buf->f_files = fsbuf->f_files;
++ buf->f_ffree = fsbuf->f_ffree;
++ if (sizeof (buf->f_fsid) == sizeof (fsbuf->f_fsid))
++ buf->f_fsid = (fsbuf->f_fsid.__val[0]
++ | ((unsigned long int) fsbuf->f_fsid.__val[1]
+ << (8 * (sizeof (buf->f_fsid)
+- - sizeof (fsbuf.f_fsid.__val[0])))));
++ - sizeof (fsbuf->f_fsid.__val[0])))));
+ else
+ /* We cannot help here. The statvfs element is not large enough to
+ contain both words of the statfs f_fsid field. */
+- buf->f_fsid = fsbuf.f_fsid.__val[0];
++ buf->f_fsid = fsbuf->f_fsid.__val[0];
+ #ifdef _STATVFSBUF_F_UNUSED
+ buf->__f_unused = 0;
+ #endif
+- buf->f_namemax = fsbuf.f_namelen;
++ buf->f_namemax = fsbuf->f_namelen;
+ memset (buf->__f_spare, '\0', 6 * sizeof (int));
+
+ /* What remains to do is to fill the fields f_favail and f_flag. */
+@@ -51,10 +69,40 @@
+ file. The way we can test for matching filesystem is using the
+ device number. */
+ buf->f_flag = 0;
+- if (STAT (&st) >= 0)
++ if (st != NULL)
+ {
+ struct mntent mntbuf;
+ FILE *mtab;
++ const char *fsname = NULL;
++ const char *fsname2 = NULL;
++ bool success = false;
++
++ /* Map the filesystem type we got from the statfs call to a string. */
++ switch (fsbuf->f_type)
++ {
++ case EXT2_SUPER_MAGIC:
++ fsname = "ext3";
++ fsname2 = "ext2";
++ break;
++ case DEVPTS_SUPER_MAGIC:
++ fsname= "devpts";
++ break;
++ case SHMFS_SUPER_MAGIC:
++ fsname = "tmpfs";
++ break;
++ case PROC_SUPER_MAGIC:
++ fsname = "proc";
++ break;
++ case USBDEVFS_SUPER_MAGIC:
++ fsname = "usbdevfs";
++ break;
++ case AUTOFS_SUPER_MAGIC:
++ fsname = "autofs";
++ break;
++ case NFS_SUPER_MAGIC:
++ fsname = "nfs";
++ break;
++ }
+
+ mtab = __setmntent ("/proc/mounts", "r");
+ if (mtab == NULL)
+@@ -67,13 +115,25 @@
+ /* No locking needed. */
+ (void) __fsetlocking (mtab, FSETLOCKING_BYCALLER);
+
++ again:
+ while (__getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf)))
+ {
+- struct stat64 fsst;
++ /* In a first round we look for a given mount point, if
++ we have a name. */
++ if (name != NULL && strcmp (name, mntbuf.mnt_dir) != 0)
++ continue;
++ /* We need to look at the entry only if the filesystem
++ name matches. If we have a filesystem name. */
++ else if (fsname != NULL
++ && strcmp (fsname, mntbuf.mnt_type) != 0
++ && (fsname2 == NULL
++ || strcmp (fsname2, mntbuf.mnt_type) != 0))
++ continue;
+
+ /* Find out about the device the current entry is for. */
++ struct stat64 fsst;
+ if (stat64 (mntbuf.mnt_dir, &fsst) >= 0
+- && st.st_dev == fsst.st_dev)
++ && st->st_dev == fsst.st_dev)
+ {
+ /* Bingo, we found the entry for the device FD is on.
+ Now interpret the option string. */
+@@ -99,11 +159,34 @@
+ buf->f_flag |= ST_NODIRATIME;
+
+ /* We can stop looking for more entries. */
++ success = true;
+ break;
+ }
+ }
++ /* Maybe the kernel names for the filesystems changed or the
++ statvfs call got a name which was not the mount point.
++ Check again, this time without checking for name matches
++ first. */
++ if (! success)
++ {
++ if (name != NULL)
++ /* Try without a mount point name. */
++ name = NULL;
++ else if (fsname != NULL)
++ /* Try without a filesystem name. */
++ fsname = fsname2 = NULL;
++
++ /* It is not strictly allowed to use rewind here. But
++ this code is part of the implementation so it is
++ acceptable. */
++ rewind (mtab);
++
++ goto again;
++ }
+
+ /* Close the file. */
+ __endmntent (mtab);
++
+ }
+ }
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ipc_priv.h 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ipc_priv.h 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995-1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,18 +32,11 @@
+ };
+
+
+-__BEGIN_DECLS
+-
+-/* The actual system call: all functions are multiplexed by this. */
+-extern int __syscall_ipc (int __call, int __first, int __second,
+- int __third, void *__ptr);
+-
+-__END_DECLS
+-
+-/* The codes for the functions to use the multiplexer `__syscall_ipc'. */
++/* The codes for the functions to use the ipc syscall multiplexer. */
+ #define IPCOP_semop 1
+ #define IPCOP_semget 2
+ #define IPCOP_semctl 3
++#define IPCOP_semtimedop 4
+ #define IPCOP_msgsnd 11
+ #define IPCOP_msgrcv 12
+ #define IPCOP_msgget 13
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-02-20 17:11:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-08-21 08:37:12.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* Set flags signalling availability of kernel features based on given
+ kernel version number.
+- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -127,16 +127,25 @@
+ # define __ASSUME_SETRESUID_SYSCALL 1
+ #endif
+
++#if __LINUX_KERNEL_VERSION >= 131879
++# define __ASSUME_SETRESGID_SYSCALL 1
++#endif
++
+ /* Linux 2.3.39 introduced IPC64. Except for powerpc. */
+ #if __LINUX_KERNEL_VERSION >= 131879 && !defined __powerpc__
+ # define __ASSUME_IPC64 1
+ #endif
+
+-/* mips platforms had IPC64 all along. */
++/* MIPS platforms had IPC64 all along. */
+ #if defined __mips__
+ # define __ASSUME_IPC64 1
+ #endif
+
++/* We can use the LDTs for threading with Linux 2.3.99 and newer. */
++#if __LINUX_KERNEL_VERSION >= 131939
++# define __ASSUME_LDT_WORKS 1
++#endif
++
+ /* Linux 2.4.0 on PPC introduced a correct IPC64. But PowerPC64 does not
+ support a separate 64-bit sys call, already 64-bit */
+ #if __LINUX_KERNEL_VERSION >= 132096 && defined __powerpc__ \
+@@ -144,15 +153,18 @@
+ # define __ASSUME_IPC64 1
+ #endif
+
+-/* We can use the LDTs for threading with Linux 2.3.99 and newer. */
+-#if __LINUX_KERNEL_VERSION >= 131939
+-# define __ASSUME_LDT_WORKS 1
++/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */
++#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__
++# define __ASSUME_TRUNCATE64_SYSCALL 1
++# define __ASSUME_MMAP2_SYSCALL 1
++# define __ASSUME_STAT64_SYSCALL 1
+ #endif
+
+ /* The changed st_ino field appeared in 2.4.0-test6. But we cannot
+ distinguish this version from other 2.4.0 releases. Therefore play
+- save and assume it available is for 2.4.1 and up. */
+-#if __LINUX_KERNEL_VERSION >= 132097
++ save and assume it available is for 2.4.1 and up. However, SH is lame,
++ and still does not have a 64-bit inode field. */
++#if __LINUX_KERNEL_VERSION >= 132097 && !defined __alpha__ && !defined __sh__
+ # define __ASSUME_ST_INO_64_BIT 1
+ #endif
+
+@@ -163,6 +175,12 @@
+ # define __ASSUME_FCNTL64 1
+ #endif
+
++/* The AT_CLKTCK auxiliary vector entry was introduction in the 2.4.0
++ series. */
++#if __LINUX_KERNEL_VERSION >= 132097
++# define __ASSUME_AT_CLKTCK 1
++#endif
++
+ /* Arm got fcntl64 in 2.4.4, PowerPC and SH have it also in 2.4.4 (I
+ don't know when it got introduced). But PowerPC64 does not support
+ separate FCNTL64 call, FCNTL is already 64-bit */
+@@ -216,6 +234,12 @@
+ # define __ASSUME_NEW_PRCTL_SYSCALL 1
+ #endif
+
++/* Starting with 2.4.21 the PowerPC32 clone syscall works as expected. */
++#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ \
++ && !defined __powerpc64__
++# define __ASSUME_FIXED_CLONE_SYSCALL 1
++#endif
++
+ /* Starting with 2.4.21 PowerPC64 implements the new rt_sigreturn syscall.
+ The new rt_sigreturn takes an ucontext pointer allowing rt_sigreturn
+ to be used in the set/swapcontext implementation. */
+@@ -229,8 +253,8 @@
+ # define __ASSUME_SET_THREAD_AREA_SYSCALL 1
+ #endif
+
+-/* The vfork syscall on x86 was definitely available in 2.4. */
+-#if __LINUX_KERNEL_VERSION >= 132097 && defined __i386__
++/* The vfork syscall on x86 and arm was definitely available in 2.4. */
++#if __LINUX_KERNEL_VERSION >= 132097 && (defined __i386__ || defined __arm__)
+ # define __ASSUME_VFORK_SYSCALL 1
+ #endif
+
+@@ -248,6 +272,15 @@
+ # define __ASSUME_GETDENTS64_SYSCALL 1
+ #endif
+
++/* Alpha switched to a 64-bit timeval sometime before 2.2.0. */
++#if __LINUX_KERNEL_VERSION >= 131584 && defined __alpha__
++# define __ASSUME_TIMEVAL64 1
++#endif
++
++#if defined __mips__ && defined _ABIN32 && _MIPS_SIM == _ABIN32
++# define __ASSUME_FCNTL64 1
++#endif
++
+ /* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize
+ their availability with one define. The changes were made first
+ for i386 and the have to be done separately for the other archs.
+@@ -264,3 +297,79 @@
+ # define __ASSUME_FCNTL64 1
+ # define __ASSUME_VFORK_SYSCALL 1
+ #endif
++
++/* Beginning with 2.5.63 support for realtime and monotonic clocks and
++ timers based on them is available. */
++#if __LINUX_KERNEL_VERSION >= 132415
++# define __ASSUME_POSIX_TIMERS 1
++#endif
++
++/* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize
++ their availability with one define. The changes were made first
++ for i386 and the have to be done separately for the other archs.
++ For ia64, s390*, PPC we pick 2.5.64 as the first version with support. */
++#if __LINUX_KERNEL_VERSION >= 132416 \
++ && (defined __ia64__ || defined __s390__ || defined __powerpc__)
++# define __ASSUME_CLONE_THREAD_FLAGS 1
++#endif
++
++/* With kernel 2.4.17 we always have netlink support. */
++#if __LINUX_KERNEL_VERSION >= (132096+17)
++# define __ASSUME_NETLINK_SUPPORT 1
++#endif
++
++/* For x86, support for the sysenter instruction was available in
++ 2.5.53. But the unwind information was added only in 2.5.69. */
++#if __LINUX_KERNEL_VERSION >= 132421 && defined __i386__
++# define __ASSUME_VSYSCALL 1
++#endif
++
++/* The requeue futex functionality was introduced in 2.5.70. */
++#if __LINUX_KERNEL_VERSION >= 132422
++# define __ASSUME_FUTEX_REQUEUE 1
++#endif
++
++/* The statfs64 syscalls are available in 2.5.74. */
++#if __LINUX_KERNEL_VERSION >= 132426
++# define __ASSUME_STATFS64 1
++#endif
++
++/* Starting with at least 2.5.74 the kernel passes the setuid-like exec
++ flag unconditionally up to the child. */
++#if __LINUX_KERNEL_VERSION >= 132426
++# define __ASSUME_AT_SECURE 1
++#endif
++
++/* Starting with the 2.5.75 kernel the kernel fills in the correct value
++ in the si_pid field passed as part of the siginfo_t struct to signal
++ handlers. */
++#if __LINUX_KERNEL_VERSION >= 132427
++# define __ASSUME_CORRECT_SI_PID 1
++#endif
++
++/* The tgkill syscall was instroduced for i386 in 2.5.75. For Alpha
++ it was introduced in 2.6.0-test1 which unfortunately cannot be
++ distinguished from 2.6.0. */
++#if (__LINUX_KERNEL_VERSION >= 132427 && defined __i386__) \
++ || (__LINUX_KERNEL_VERSION >= 132609 && defined __alpha__)
++# define __ASSUME_TGKILL 1
++#endif
++
++/* The utimes syscall has been available for some architectures
++ forever. For x86 it was introduced after 2.5.75. */
++#if defined __alpha__ || defined __ia64__ || defined __hppa__ \
++ || defined __sparc__ \
++ || (__LINUX_KERNEL_VERSION > 132427 && defined __i386__)
++# define __ASSUME_UTIMES 1
++#endif
++
++/* The CLONE_STOPPED flag was introduced in the 2.6.0-test1 series. */
++#if __LINUX_KERNEL_VERSION >= 132609
++# define __ASSUME_CLONE_STOPPED 1
++#endif
++
++/* The fixed version of the posix_fadvise64 syscall appeared in
++ 2.6.0-test3. At least for x86. */
++#if __LINUX_KERNEL_VERSION >= 132609 && defined __i386__
++# define __ASSUME_FADVISE64_64_SYSCALL 1
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ldsodefs.h 2002-07-20 13:30:48.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ldsodefs.h 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Run-time dynamic linker data structures for loaded ELF shared objects.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,6 +41,12 @@
+ # define HAVE_AUX_XID
+ #endif
+
++/* We can assume that the kernel always provides the AT_SECURE value
++ in the auxiliary vector from 2.5.74 or so on. */
++#if __ASSUME_AT_SECURE
++# define HAVE_AUX_SECURE
++#endif
++
+ /* Starting with one of the 2.4.0 pre-releases the Linux kernel passes
+ up the page size information. */
+ #if __ASSUME_AT_PAGESIZE
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/libc_fatal.c 2002-12-15 05:49:50.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/libc_fatal.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1993,1994,1995,1997,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1993-1995,1997,2000,2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,13 +37,15 @@
+
+ while (len > 0)
+ {
+- ssize_t count = INLINE_SYSCALL (write, 3, STDERR_FILENO, message, len);
+- if (count > 0)
++ INTERNAL_SYSCALL_DECL (err);
++ ssize_t count = INTERNAL_SYSCALL (write, err, 3, STDERR_FILENO,
++ message, len);
++ if (! INTERNAL_SYSCALL_ERROR_P (count, err))
+ {
+ message += count;
+ len -= count;
+ }
+- else if (count < 0 && errno != EINTR)
++ else if (INTERNAL_SYSCALL_ERRNO (count, err) != EINTR)
+ break;
+ }
+
+@@ -55,3 +57,4 @@
+ /* Try for ever and ever. */
+ ABORT_INSTRUCTION;
+ }
++libc_hidden_def (__libc_fatal)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/linux_fsinfo.h 2002-10-23 02:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/linux_fsinfo.h 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Constants from kernel header for various FSes.
+- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,6 +31,9 @@
+ /* Constants that identify the `affs' filesystem. */
+ #define AFFS_SUPER_MAGIC 0xadff
+
++/* Constants that identify the `autofs' filesystem. */
++#define AUTOFS_SUPER_MAGIC 0x187
++
+ /* Constants that identify the `bfs' filesystem. */
+ #define BFS_MAGIC 0x1BADFACE
+
+@@ -40,6 +43,9 @@
+ /* Constants that identify the `coherent' filesystem. */
+ #define COH_SUPER_MAGIC 0x012ff7b7
+
++/* Constant that identifies the `ramfs' filesystem. */
++#define CRAMFS_MAGIC 0x28cd3d45
++
+ /* Constant that identifies the `devfs' filesystem. */
+ #define DEVFS_SUPER_MAGIC 0x1373
+
+@@ -48,6 +54,7 @@
+
+ /* Constant that identifies the `efs' filesystem. */
+ #define EFS_SUPER_MAGIC 0x414A53
++#define EFS_MAGIC 0x072959
+
+ /* Constant that identifies the `ext2' and `ext3' filesystems. */
+ #define EXT2_SUPER_MAGIC 0xef53
+@@ -90,6 +97,9 @@
+ /* Constants that identify the `proc' filesystem. */
+ #define PROC_SUPER_MAGIC 0x9fa0
+
++/* Constant that identifies the `usbdevfs' filesystem. */
++#define USBDEVFS_SUPER_MAGIC 0x9fa2
++
+ /* Constants that identify the `qnx4' filesystem. */
+ #define QNX4_SUPER_MAGIC 0x002f
+
+@@ -122,6 +132,9 @@
+ /* Constants that identify the `xfs' filesystem. */
+ #define XFS_SUPER_MAGIC 0x58465342
+
++/* Constants that identify the `vxfs' filesystem. */
++#define VXFS_SUPER_MAGIC 0xa501fcf5
++
+ /* Maximum link counts. */
+ #define COH_LINK_MAX 10000
+ #define EXT2_LINK_MAX 32000
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/llseek.c 2002-12-15 00:38:53.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/llseek.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Long-long seek operation.
+- Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,12 +20,9 @@
+ #include <errno.h>
+ #include <sys/types.h>
+
+-#include <sysdep-cancel.h>
++#include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall__llseek (int fd, off_t offset_hi, off_t offset_lo,
+- loff_t *__unbounded result, int whence);
+-
+ /* Seek to OFFSET on FD, starting from WHENCE. */
+ extern loff_t __llseek (int fd, loff_t offset, int whence);
+
+@@ -34,20 +31,9 @@
+ {
+ loff_t retval;
+
+- if (SINGLE_THREAD_P)
+- return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
+- (off_t) (offset & 0xffffffff),
+- __ptrvalue (&retval), whence) ?: retval);
+-
+- int oldtype = LIBC_CANCEL_ASYNC ();
+-
+- int result = (loff_t) INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
+- (off_t) (offset & 0xffffffff),
+- __ptrvalue (&retval), whence);
+-
+- LIBC_CANCEL_RESET (oldtype);
+-
+- return (loff_t) result ?: retval;
++ return (loff_t) (INLINE_SYSCALL (_llseek, 5, fd, (off_t) (offset >> 32),
++ (off_t) (offset & 0xffffffff),
++ __ptrvalue (&retval), whence) ?: retval);
+ }
+ weak_alias (__llseek, llseek)
+ strong_alias (__llseek, __libc_lseek64)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat.c 2002-10-02 04:53:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* lxstat using old-style Unix lstat system call.
+- Copyright (C) 1991,1995-1998,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995-1998,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,10 +30,7 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-#include <xstatconv.c>
+-
+-extern int __syscall_lstat (const char *__unbounded,
+- struct kernel_stat *__unbounded);
++#include <xstatconv.h>
+
+ /* Get information about the file NAME in BUF. */
+ int
+@@ -52,7 +49,7 @@
+
+ result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat_conv (vers, &kbuf, buf);
++ result = __xstat_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat64.c 2002-10-11 14:58:50.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/lxstat64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* lxstat64 using old-style Unix lstat system call.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,15 +29,10 @@
+ #include "kernel-features.h"
+
+ #if __ASSUME_STAT64_SYSCALL == 0
+-# include <xstatconv.c>
++# include <xstatconv.h>
+ #endif
+
+-extern int __syscall_lstat (const char *__unbounded,
+- struct kernel_stat *__unbounded);
+-
+ #ifdef __NR_lstat64
+-extern int __syscall_lstat64 (const char *__unbounded,
+- struct stat64 *__unbounded);
+ # if __ASSUME_STAT64_SYSCALL == 0
+ /* The variable is shared between all wrappers around *stat64 calls. */
+ extern int __have_no_stat64;
+@@ -79,7 +74,7 @@
+ # endif
+ result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat64_conv (vers, &kbuf, buf);
++ result = __xstat64_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/a.out.h 2003-07-25 05:04:57.000000000 -0400
+@@ -0,0 +1,3 @@
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/mman.h 2003-02-20 15:33:25.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
+@@ -52,11 +52,13 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x2000 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/stat.h 2003-01-05 05:46:50.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/bits/stat.h 2003-08-21 08:37:13.000000000 -0400
+@@ -132,6 +132,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/chown.c 2002-08-02 17:46:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/chown.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,13 +26,7 @@
+ #include <linux/posix_types.h>
+ #include "kernel-features.h"
+
+-extern int __syscall_chown (const char *__unbounded __file,
+- __kernel_uid_t __owner, __kernel_gid_t __group);
+-
+ #ifdef __NR_chown32
+-extern int __syscall_chown32 (const char *__unbounded __file,
+- __kernel_uid32_t owner, __kernel_gid32_t group);
+-
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/semtimedop.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/semtimedop.S 2003-04-27 13:08:00.000000000 -0400
+@@ -0,0 +1,60 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Andreas Schwab <schwab@suse.de>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#define SYSOP_semtimedop 4
++
++#define SVRSP 8 /* saved register space */
++#define PARMS 4+SVRSP /* space for 3 saved regs */
++#define SEMID PARMS
++#define SOPS SEMID+4
++#define NSOPS SOPS+4
++#define TIMEOUT NSOPS+4
++
++ .text
++ENTRY (semtimedop)
++
++ /* Save registers. */
++ move.l %d2, %a1
++ move.l %d3, -(%sp)
++ move.l %d5, -(%sp)
++
++ move.l #SYSOP_semtimedop, %d1
++ move.l SEMID(%sp), %d2
++ move.l NSOPS(%sp), %d3
++ move.l SOPS(%sp), %d5
++ move.l TIMEOUT(%sp), %a0
++ move.l #SYS_ify (ipc), %d0
++
++ trap #0
++
++ /* Restore registers. */
++ move.l (%sp)+, %d5
++ move.l (%sp)+, %d3
++ move.l %a1, %d2
++
++ /* Check for error. */
++ tst.l %d0
++ jmi SYSCALL_ERROR_LABEL
++
++ /* Successful; return the syscall's value. */
++ ret
++
++PSEUDO_END (semtimedop)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/sysdep.h 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/m68k/sysdep.h 2003-04-12 11:39:50.000000000 -0400
+@@ -68,6 +68,18 @@
+ SYSCALL_ERROR_HANDLER; \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args)
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#define ret_NOERRNO ret
++
+ #ifdef PIC
+ # if RTLD_PRIVATE_ERRNO
+ # define SYSCALL_ERROR_HANDLER \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile 2002-03-28 18:41:51.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/Makefile 2003-09-19 22:37:10.000000000 -0400
+@@ -1,6 +1,4 @@
+ ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending
+ #sysdep_routines += sigsuspend
+ endif
+
+@@ -8,4 +6,46 @@
+ sysdep_routines += cachectl cacheflush sysmips _test_and_set
+
+ sysdep_headers += sys/cachectl.h sys/sysmips.h sys/tas.h
++
++no_syscall_list_h = 1
++
++# Generate the list of SYS_* macros for the system calls (__NR_* macros).
++# We generate not only SYS_<syscall>, pointing at SYS_<abi>_<syscall> if
++# it exists, but also define SYS_<abi>_<syscall> for all ABIs.
++$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h
++ $(make-target-directory)
++ { \
++ echo '/* Generated at libc build time from kernel syscall list. */';\
++ echo ''; \
++ echo '#ifndef _SYSCALL_H'; \
++ echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
++ echo '#endif'; \
++ echo ''; \
++ rm -f $(@:.d=.h).newt; \
++ $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \
++ -x c -I $(common-objdir) $(sysincludes) $< -D_LIBC -dM | \
++ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \
++ > $(@:.d=.h).newt; \
++ if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \
++ echo '#if defined _ABI64 && _MIPS_SIM == _ABI64'; \
++ sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt; \
++ echo '#elif defined _ABIN32 && _MIPS_SIM == _ABIN32'; \
++ sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt; \
++ echo '#else'; \
++ sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt; \
++ echo '#endif'; \
++ sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt; \
++ else \
++ cat $(@:.d=.h).newt; \
++ fi; \
++ rm $(@:.d=.h).newt; \
++ } > $(@:.d=.h).new
++ mv -f $(@:.d=.h).new $(@:.d=.h)
++ifneq (,$(objpfx))
++ sed $(sed-remove-objpfx) $(@:.h=.d)-t > $(@:.h=.d)-t2
++ rm -f $(@:.h=.d)-t
++ mv -f $(@:.h=.d)-t2 $(@:.h=.d)
++else
++ mv -f $(@:.h=.d)-t $(@:.h=.d)
++endif
+ endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/fcntl.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/fcntl.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* O_*, F_*, FD_* bit values for Linux.
+- Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -142,14 +143,20 @@
+ #ifndef __USE_FILE_OFFSET64
+ __off_t l_start; /* Offset where the lock begins. */
+ __off_t l_len; /* Size of the locked area; zero means until EOF. */
+- long int l_sysid; /* XXX */
++#if ! (defined _ABI64 && _MIPS_SIM == _ABI64)
++ /* The 64-bit flock structure, used by the n64 ABI, and for 64-bit
++ fcntls in o32 and n32, never has this field. */
++ long int l_sysid;
++#endif
+ #else
+ __off64_t l_start; /* Offset where the lock begins. */
+ __off64_t l_len; /* Size of the locked area; zero means until EOF. */
+ #endif
+ __pid_t l_pid; /* Process holding the lock. */
+-#ifndef __USE_FILE_OFFSET64
+- long int pad[4]; /* XXX */
++#if ! defined __USE_FILE_OFFSET64 && ! (defined _ABI64 && _MIPS_SIM == _ABI64)
++ /* The 64-bit flock structure, used by the n64 ABI, and for 64-bit
++ flock in o32 and n32, never has this field. */
++ long int pad[4];
+ #endif
+ } flock_t;
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/mman.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/MIPS version.
+- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -59,6 +59,8 @@
+ # define MAP_DENYWRITE 0x2000 /* ETXTBSY */
+ # define MAP_EXECUTABLE 0x4000 /* mark it as an executable */
+ # define MAP_LOCKED 0x8000 /* pages are locked */
++# define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
++# define MAP_NONBLOCK 0x20000 /* do not block on IO */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/shm.h 2002-12-20 05:29:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/shm.h 2003-08-21 08:37:13.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995,1996,1997,2000,2001,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -36,8 +36,7 @@
+ #define SHM_UNLOCK 12 /* unlock segment (root only) */
+
+ /* Segment low boundary address multiple. */
+-#define SHMLBA (__getpagesize ())
+-extern int __getpagesize (void) __THROW __attribute__ ((__const__));
++#define SHMLBA 0x40000
+
+
+ /* Type to count number of attaches. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigaction.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigaction.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* The proper definitions for Linux/MIPS's sigaction.
+- Copyright (C) 1993,94,95,97,98,99,2000 Free Software Foundation, Inc.
++ Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,7 +50,7 @@
+ /* Restore handler. */
+ void (*sa_restorer) (void);
+
+-#if _MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2
++#if _MIPS_SZPTR < 64
+ int sa_resv[1];
+ #endif
+ };
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h 2003-04-13 07:36:32.000000000 -0400
+@@ -0,0 +1,103 @@
++/* Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
++# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
++#endif
++
++#ifndef sigcontext_struct
++/* Kernel headers before 2.1.1 define a struct sigcontext_struct, but
++ we need sigcontext. */
++# define sigcontext_struct sigcontext
++
++/* # include <asm/sigcontext.h> */
++/* Instead of including the kernel header, that will vary depending on
++ whether the 32- or the 64-bit kernel is installed, we paste the
++ contents here. In case you're wondering about the different
++ licenses, the fact that the file is pasted, instead of included,
++ doesn't really make any difference for the program that includes
++ this header. */
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++/*
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ *
++ * Copyright (C) 1996, 1997, 2000 by Ralf Baechle
++ */
++#ifndef _ASM_SIGCONTEXT_H
++#define _ASM_SIGCONTEXT_H
++
++/*
++ * Keep this struct definition in sync with the sigcontext fragment
++ * in arch/mips/tools/offset.c
++ */
++struct sigcontext {
++ unsigned int sc_regmask; /* Unused */
++ unsigned int sc_status;
++ unsigned long long sc_pc;
++ unsigned long long sc_regs[32];
++ unsigned long long sc_fpregs[32];
++ unsigned int sc_ownedfp; /* Unused */
++ unsigned int sc_fpc_csr;
++ unsigned int sc_fpc_eir; /* Unused */
++ unsigned int sc_used_math;
++ unsigned int sc_ssflags; /* Unused */
++ unsigned long long sc_mdhi;
++ unsigned long long sc_mdlo;
++
++ unsigned int sc_cause; /* Unused */
++ unsigned int sc_badvaddr; /* Unused */
++
++ unsigned long sc_sigset[4]; /* kernel's sigset_t */
++};
++
++#endif /* _ASM_SIGCONTEXT_H */
++#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */
++/*
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ *
++ * Copyright (C) 1996, 1997, 1999 by Ralf Baechle
++ * Copyright (C) 1999 Silicon Graphics, Inc.
++ */
++#ifndef _ASM_SIGCONTEXT_H
++#define _ASM_SIGCONTEXT_H
++
++/*
++ * Keep this struct definition in sync with the sigcontext fragment
++ * in arch/mips/tools/offset.c
++ */
++struct sigcontext {
++ unsigned long long sc_regs[32];
++ unsigned long long sc_fpregs[32];
++ unsigned long long sc_mdhi;
++ unsigned long long sc_mdlo;
++ unsigned long long sc_pc;
++ unsigned int sc_status;
++ unsigned int sc_fpc_csr;
++ unsigned int sc_fpc_eir;
++ unsigned int sc_used_math;
++ unsigned int sc_cause;
++ unsigned int sc_badvaddr;
++};
++
++#endif /* _ASM_SIGCONTEXT_H */
++#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/siginfo.h 2002-12-04 19:22:19.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/siginfo.h 2003-05-24 14:06:23.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* siginfo_t, sigevent and constants. Linux/MIPS version.
+- Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -119,8 +119,10 @@
+ signals. */
+ enum
+ {
+- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
++ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+ # define SI_ASYNCNL SI_ASYNCNL
++ SI_TKILL = -6, /* Sent by tkill. */
++# define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+ # define SI_SIGIO SI_SIGIO
+ SI_MESGQ, /* Sent by real time mesq state change. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/stat.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/bits/stat.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1992,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
++/* Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,6 +34,7 @@
+ #define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
+
+
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ /* Structure describing file characteristics. */
+ struct stat
+ {
+@@ -106,6 +108,71 @@
+ long int st_pad4[14];
+ };
+ #endif
++#else
++struct stat
++ {
++ __dev_t st_dev;
++ int st_pad1[3]; /* Reserved for st_dev expansion */
++#ifndef __USE_FILE_OFFSET64
++ __ino_t st_ino;
++#else
++ __ino64_t st_ino;
++#endif
++ __mode_t st_mode;
++ __nlink_t st_nlink;
++ __uid_t st_uid;
++ __gid_t st_gid;
++ __dev_t st_rdev;
++#if !defined __USE_FILE_OFFSET64
++ unsigned int st_pad2[2]; /* Reserved for st_rdev expansion */
++ __off_t st_size;
++ int st_pad3;
++#else
++ unsigned int st_pad2[3]; /* Reserved for st_rdev expansion */
++ __off64_t st_size;
++#endif
++ __time_t st_atime;
++ int __reserved0;
++ __time_t st_mtime;
++ int __reserved1;
++ __time_t st_ctime;
++ int __reserved2;
++ __blksize_t st_blksize;
++ unsigned int st_pad4;
++#ifndef __USE_FILE_OFFSET64
++ __blkcnt_t st_blocks;
++#else
++ __blkcnt64_t st_blocks;
++#endif
++ int st_pad5[14];
++ };
++
++#ifdef __USE_LARGEFILE64
++struct stat64
++ {
++ __dev_t st_dev;
++ unsigned int st_pad1[3]; /* Reserved for st_dev expansion */
++ __ino64_t st_ino;
++ __mode_t st_mode;
++ __nlink_t st_nlink;
++ __uid_t st_uid;
++ __gid_t st_gid;
++ __dev_t st_rdev;
++ unsigned int st_pad2[3]; /* Reserved for st_rdev expansion */
++ __off64_t st_size;
++ __time_t st_atime;
++ int __reserved0;
++ __time_t st_mtime;
++ int __reserved1;
++ __time_t st_ctime;
++ int __reserved2;
++ __blksize_t st_blksize;
++ unsigned int st_pad3;
++ __blkcnt64_t st_blocks;
++ int st_pad4[14];
++};
++#endif
++#endif
+
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/clone.S 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/clone.S 2003-04-12 11:39:50.000000000 -0400
+@@ -1,6 +1,6 @@
+-/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+- Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>, 1996.
++ Contributed by Ralf Baechle <ralf@linux-mips.org>, 1996.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+@@ -21,7 +21,6 @@
+ and invokes a function in the right context after its all over. */
+
+ #include <sys/asm.h>
+-#include <asm/unistd.h>
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
+@@ -29,15 +28,17 @@
+ /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */
+
+ .text
++LOCALSZ= 1
++FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
++GPOFF= FRAMESZ-(1*SZREG)
+ NESTED(__clone,4*SZREG,sp)
+ #ifdef __PIC__
+- .set noreorder
+- .cpload $25
+- .set reorder
+- subu sp,32
+- .cprestore 16
+-#else
+- subu sp,32
++ SETUP_GP
++#endif
++ PTR_SUBU sp, FRAMESZ
++ SETUP_GP64 (GPOFF, __clone)
++#ifdef __PIC__
++ SAVE_GP (GPOFF)
+ #endif
+ #ifdef PROF
+ .set noat
+@@ -49,12 +50,12 @@
+
+ /* Sanity check arguments. */
+ li v0,EINVAL
+- beqz a0,error /* No NULL function pointers. */
+- beqz a1,error /* No NULL stack pointers. */
++ beqz a0,L(error) /* No NULL function pointers. */
++ beqz a1,L(error) /* No NULL stack pointers. */
+
+- subu a1,32 /* Reserve argument save space. */
+- sw a0,0(a1) /* Save function pointer. */
+- sw a3,4(a1) /* Save argument pointer. */
++ PTR_SUBU a1,32 /* Reserve argument save space. */
++ PTR_S a0,0(a1) /* Save function pointer. */
++ PTR_S a3,PTRSIZE(a1) /* Save argument pointer. */
+
+
+ /* Do the system call */
+@@ -62,20 +63,24 @@
+ li v0,__NR_clone
+ syscall
+
+- bnez a3,error
+- beqz v0,__thread_start
++ bnez a3,L(error)
++ beqz v0,L(thread_start)
+
+ /* Successful return from the parent */
+- addiu sp,32
++ RESTORE_GP64
++ PTR_ADDU sp, FRAMESZ
+ ret
+
+ /* Something bad happened -- no child created */
+-error:
+- addiu sp,32
++L(error):
+ #ifdef __PIC__
+- la t9,__syscall_error
++ PTR_LA t9,__syscall_error
++ RESTORE_GP64
++ PTR_ADDU sp, FRAMESZ
+ jr t9
+ #else
++ RESTORE_GP64
++ PTR_ADDU sp, FRAMESZ
+ j __syscall_error
+ #endif
+ END(__clone)
+@@ -85,20 +90,21 @@
+ debug info. */
+
+ ENTRY(__thread_start)
++L(thread_start):
+ /* cp is already loaded. */
+- .cprestore 16
++ SAVE_GP (GPOFF)
+ /* The stackframe has been created on entry of clone(). */
+ /* Restore the arg for user's function. */
+- lw t9,0(sp) /* Function pointer. */
+- lw a0,4(sp) /* Argument pointer. */
++ PTR_L t9,0(sp) /* Function pointer. */
++ PTR_L a0,PTRSIZE(sp) /* Argument pointer. */
+
+ /* Call the user's function. */
+- jalr t9
++ jal t9
+
+ /* Call _exit rather than doing it inline for breakpoint purposes. */
+ move a0,v0
+ #ifdef __PIC__
+- la t9,_exit
++ PTR_LA t9,_exit
+ jalr t9
+ #else
+ jal _exit
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure 2003-04-12 11:39:50.000000000 -0400
+@@ -0,0 +1,75 @@
++# This file is generated from configure.in by Autoconf. DO NOT EDIT!
++ # Local configure fragment for sysdeps/unix/sysv/linux/mips.
++
++case $machine in
++mips*64*)
++ rm -f asm-unistd.h
++ asm_unistd_h=$sysheaders/asm/unistd.h
++ if test ! -f $asm_unistd_h; then
++ # Try to find asm/unistd.h in compiler header search path.
++ try_asm_unistd_h=`echo '#include <asm/unistd.h>' | $CPP - |
++ sed -n '/^# 1 "\(\/[^"]*\)".*/{s,,\1,p;q;}'`
++ if test -n "$try_asm_unistd_h" &&
++ test -f "$try_asm_unistd_h"; then
++ asm_unistd_h=$try_asm_unistd_h
++ fi
++ fi
++ if test ! -f "$asm_unistd_h"; then
++ { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5
++echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;}
++ echo '#include <asm/unistd.h>' > asm-unistd.h
++ else
++ # The point of this preprocessing is to turn __NR_<syscall> into
++ # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
++ # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
++ # and <abi> is the compiler-enabled ABI.
++ cat "$asm_unistd_h" |
++ sed -e 's,__NR_,__NR_N64_,g' \
++ -e 's,__NR_N64_##,__NR_##,g' \
++ -e 's,__NR_N64_O32_,__NR_O32_,g' \
++ -e 's,__NR_N64_N32_,__NR_N32_,g' \
++ -e 's,__NR_N64_N64_,__NR_N64_,g' \
++ | awk > asm-unistd.h '
++/^#define __NR.*unused/ { print; next; }
++/^#define __NR_N64__exit __NR_N64_exit/ {
++ print "#define __NR__exit __NR_exit";
++ print "#define __NR_O32__exit __NR_O32_exit";
++ print "#define __NR_N32__exit __NR_N32_exit";
++ print; next;
++}
++/^#define __NR_O32_/ {
++ name = $2;
++ sub (/_O32_/, "_", name);
++ print;
++ print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
++ print "# define " name " " $2;
++ print "#endif";
++ next;
++}
++/^#define __NR_N32_/ {
++ name = $2;
++ sub (/_N32_/, "_", name);
++ print;
++ print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
++ print "# define " name " " $2;
++ print "#endif";
++ next;
++}
++/^#define __NR_N64_/ {
++ name = $2;
++ sub (/_N64_/, "_", name);
++ print;
++ print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
++ print "# define " name " " $2;
++ print "#endif";
++ next;
++}
++{
++ print;
++}'
++ fi ;;
++mips*)
++ rm -f asm-unistd.h
++ echo '#include <asm/unistd.h>' > asm-unistd.h
++ ;;
++esac
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/configure.in 2003-03-17 10:50:05.000000000 -0500
+@@ -0,0 +1,75 @@
++sinclude(./aclocal.m4)dnl Autoconf lossage
++GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
++# Local configure fragment for sysdeps/unix/sysv/linux/mips.
++
++case $machine in
++mips*64*)
++ rm -f asm-unistd.h
++ asm_unistd_h=$sysheaders/asm/unistd.h
++ if test ! -f $asm_unistd_h; then
++ # Try to find asm/unistd.h in compiler header search path.
++ try_asm_unistd_h=`echo '#include <asm/unistd.h>' | $CPP - |
++ sed -n '/^# 1 "\(\/[^"]*\)".*/{s,,\1,p;q;}'`
++ if test -n "$try_asm_unistd_h" &&
++ test -f "$try_asm_unistd_h"; then
++ asm_unistd_h=$try_asm_unistd_h
++ fi
++ fi
++ if test ! -f "$asm_unistd_h"; then
++ AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed])
++ echo '#include <asm/unistd.h>' > asm-unistd.h
++ else
++ # The point of this preprocessing is to turn __NR_<syscall> into
++ # __NR_N64_<syscall>, as well as to define __NR_<syscall> to
++ # __NR_<abi>_<syscall>, if __NR_<abi>_<syscall> is defined
++ # and <abi> is the compiler-enabled ABI.
++ cat "$asm_unistd_h" |
++ sed -e 's,__NR_,__NR_N64_,g' \
++ -e 's,__NR_N64_##,__NR_##,g' \
++ -e 's,__NR_N64_O32_,__NR_O32_,g' \
++ -e 's,__NR_N64_N32_,__NR_N32_,g' \
++ -e 's,__NR_N64_N64_,__NR_N64_,g' \
++ | awk > asm-unistd.h '
++/^#define __NR.*unused/ { print; next; }
++/^#define __NR_N64__exit __NR_N64_exit/ {
++ print "#define __NR__exit __NR_exit";
++ print "#define __NR_O32__exit __NR_O32_exit";
++ print "#define __NR_N32__exit __NR_N32_exit";
++ print; next;
++}
++/^#define __NR_O32_/ {
++ name = $2;
++ sub (/_O32_/, "_", name);
++ print;
++ print "#if _MIPS_SIM == _MIPS_SIM_ABI32";
++ print "# define " name " " $2;
++ print "#endif";
++ next;
++}
++/^#define __NR_N32_/ {
++ name = $2;
++ sub (/_N32_/, "_", name);
++ print;
++ print "#if defined _ABIN32 && _MIPS_SIM == _ABIN32";
++ print "# define " name " " $2;
++ print "#endif";
++ next;
++}
++/^#define __NR_N64_/ {
++ name = $2;
++ sub (/_N64_/, "_", name);
++ print;
++ print "#if defined _ABI64 && _MIPS_SIM == _ABI64";
++ print "# define " name " " $2;
++ print "#endif";
++ next;
++}
++{
++ print;
++}'
++ fi ;;
++mips*)
++ rm -f asm-unistd.h
++ echo '#include <asm/unistd.h>' > asm-unistd.h
++ ;;
++esac
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/dl-cache.h 2003-06-25 04:03:24.000000000 -0400
+@@ -0,0 +1,43 @@
++/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define add_system_dir(dir) \
++ do \
++ { \
++ size_t len = strlen (dir); \
++ char path[len + 3]; \
++ memcpy (path, dir, len + 1); \
++ if (len >= 6 \
++ && (! memcmp (path + len - 6, "/lib64", 6) \
++ || ! memcmp (path + len - 6, "/lib32", 6))) \
++ { \
++ len -= 2; \
++ path[len] = '\0'; \
++ } \
++ add_dir (path); \
++ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \
++ { \
++ memcpy (path + len, "32", 3); \
++ add_dir (path); \
++ memcpy (path + len, "64", 3); \
++ add_dir (path); \
++ } \
++ } while (0)
++
++#include_next <dl-cache.h>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ftruncate64.c 2002-09-28 16:12:57.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ftruncate64.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,11 +33,6 @@
+ extern int __have_no_truncate64;
+ #endif
+
+-/* The order of hight, low depends on endianness. */
+-extern int __syscall_ftruncate64 (int fd, int dummy, int high_length,
+- int low_length);
+-
+-
+ /* Truncate the file FD refers to to LENGTH bytes. */
+ int
+ __ftruncate64 (int fd, off64_t length)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h 2000-12-15 01:05:44.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h 2003-04-12 11:39:50.000000000 -0400
+@@ -12,7 +12,7 @@
+
+ /* Abi says here follows reserved int[2] */
+ void (*sa_restorer)(void);
+-#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
++#if (_MIPS_SZPTR < 64)
+ /*
+ * For 32 bit code we have to pad struct sigaction to get
+ * constant size for the ABI
+@@ -23,7 +23,7 @@
+
+
+ #define _KERNEL_NSIG 128
+-#define _KERNEL_NSIG_BPW 32
++#define _KERNEL_NSIG_BPW _MIPS_SZLONG
+ #define _KERNEL_NSIG_WORDS (_KERNEL_NSIG / _KERNEL_NSIG_BPW)
+
+ typedef struct {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h 2000-11-20 03:45:43.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,31 @@
+-/* Definition of `struct stat' used in the kernel.. */
++/* As tempting as it is to define XSTAT_IS_XSTAT64 for n64, the
++ userland data structures are not identical, because of different
++ padding. */
++/* Definition of `struct stat' used in the kernel. */
++#if _MIPS_SIM != _MIPS_SIM_ABI32
++struct kernel_stat
++ {
++ unsigned int st_dev;
++ unsigned int __pad1[3];
++ unsigned long long st_ino;
++ unsigned int st_mode;
++ unsigned int st_nlink;
++ int st_uid;
++ int st_gid;
++ unsigned int st_rdev;
++ unsigned int __pad2[3];
++ long long st_size;
++ unsigned int st_atime;
++ unsigned int __unused1;
++ unsigned int st_mtime;
++ unsigned int __unused2;
++ unsigned int st_ctime;
++ unsigned int __unused3;
++ unsigned int st_blksize;
++ unsigned int __pad3;
++ unsigned long long st_blocks;
++ };
++#else
+ struct kernel_stat
+ {
+ unsigned long int st_dev;
+@@ -26,3 +53,4 @@
+ unsigned int st_flags;
+ unsigned int st_gen;
+ };
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2003-03-29 03:15:29.000000000 -0500
+@@ -0,0 +1,36 @@
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H
++#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1
++
++/* There is some commonality. */
++#include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.h>
++
++/* For Linux we can use the system call table in the header file
++ /usr/include/asm/unistd.h
++ of the kernel. But these symbols do not follow the SYS_* syntax
++ so we have to redefine the `SYS_ify' macro here. */
++#undef SYS_ify
++#ifdef __STDC__
++# define SYS_ify(syscall_name) __NR_O32_##syscall_name
++#else
++# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name
++#endif
++
++#endif /* linux/mips/mips32/kern64/sysdep.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h 2003-03-29 03:15:29.000000000 -0500
+@@ -0,0 +1,282 @@
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
++#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
++
++/* There is some commonality. */
++#include <sysdeps/unix/mips/mips32/sysdep.h>
++
++/* For Linux we can use the system call table in the header file
++ /usr/include/asm/unistd.h
++ of the kernel. But these symbols do not follow the SYS_* syntax
++ so we have to redefine the `SYS_ify' macro here. */
++#undef SYS_ify
++#ifdef __STDC__
++# define SYS_ify(syscall_name) __NR_##syscall_name
++#else
++# define SYS_ify(syscall_name) __NR_/**/syscall_name
++#endif
++
++#ifdef __ASSEMBLER__
++
++/* We don't want the label for the error handler to be visible in the symbol
++ table when we define it here. */
++#ifdef __PIC__
++# define SYSCALL_ERROR_LABEL 99b
++#endif
++
++#else /* ! __ASSEMBLER__ */
++
++/* Define a macro which expands into the inline wrapper code for a system
++ call. */
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ INTERNAL_SYSCALL_DECL(err); \
++ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
++ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
++ { \
++ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
++ result_var = -1L; \
++ } \
++ result_var; })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) long err
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
++
++#define internal_syscall0(name, err, dummy...) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %2\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set reorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall1(name, err, arg1) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %3\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set reorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall2(name, err, arg1, arg2) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %4\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall3(name, err, arg1, arg2, arg3) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "lw\t$2, %6\n\t" \
++ "subu\t$29, 32\n\t" \
++ "sw\t$2, 16($29)\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ "addiu\t$29, 32\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "m" ((long)arg5) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "lw\t$2, %6\n\t" \
++ "lw\t$8, %7\n\t" \
++ "subu\t$29, 32\n\t" \
++ "sw\t$2, 16($29)\n\t" \
++ "sw\t$8, 20($29)\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ "addiu\t$29, 32\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "m" ((long)arg5), "m" ((long)arg6) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "lw\t$2, %6\n\t" \
++ "lw\t$8, %7\n\t" \
++ "lw\t$9, %8\n\t" \
++ "subu\t$29, 32\n\t" \
++ "sw\t$2, 16($29)\n\t" \
++ "sw\t$8, 20($29)\n\t" \
++ "sw\t$9, 24($29)\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ "addiu\t$29, 32\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
++
++#endif /* __ASSEMBLER__ */
++
++#endif /* linux/mips/mips32/sysdep.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/Dist 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/Dist 2003-03-17 10:57:19.000000000 -0500
+@@ -0,0 +1 @@
++ldd-rewrite.sed
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1,26 @@
++/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdeps/generic/ldconfig.h>
++
++#define SYSDEP_KNOWN_INTERPRETER_NAMES \
++ { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, \
++ { "/lib64/ld.so.1", FLAG_ELF_LIBC6 },
++#define SYSDEP_KNOWN_LIBRARY_NAMES \
++ { "libc.so.6", FLAG_ELF_LIBC6 }, \
++ { "libm.so.6", FLAG_ELF_LIBC6 },
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/ldd-rewrite.sed 2003-03-17 10:57:19.000000000 -0500
+@@ -0,0 +1 @@
++s_^\(RTLDLIST=\)\(.*lib\)\(\|32\|64\)\(/[^/]*\.so\.[0-9.]*\)[ ]*$_\1"\232\4 \264\4 \2\4"_
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/llseek.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/llseek.c 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1 @@
++/* lseek() is 64-bit capable already. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/ftruncate64.c 2003-04-05 14:57:35.000000000 -0500
+@@ -0,0 +1,28 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/types.h>
++
++#include <sysdep.h>
++
++extern int ftruncate (int fd, off64_t length);
++
++int __ftruncate64 (int fd, off64_t length) {
++ return ftruncate (fd, length);
++}
++weak_alias (__ftruncate64, ftruncate64)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2003-06-03 09:36:39.000000000 -0400
+@@ -0,0 +1,263 @@
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _LINUX_MIPS_SYSDEP_H
++#define _LINUX_MIPS_SYSDEP_H 1
++
++/* There is some commonality. */
++#include <sysdeps/unix/mips/mips64/n32/sysdep.h>
++
++/* For Linux we can use the system call table in the header file
++ /usr/include/asm/unistd.h
++ of the kernel. But these symbols do not follow the SYS_* syntax
++ so we have to redefine the `SYS_ify' macro here. */
++#undef SYS_ify
++#ifdef __STDC__
++# define SYS_ify(syscall_name) __NR_N32_##syscall_name
++#else
++# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name
++#endif
++
++
++#ifndef __ASSEMBLER__
++#if 0 /* untested */
++/* Define a macro which expands into the inline wrapper code for a system
++ call. */
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ INTERNAL_SYSCALL_DECL(err); \
++ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
++ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
++ { \
++ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
++ result_var = -1L; \
++ } \
++ result_var; })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) long err
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
++
++#define internal_syscall0(name, err, dummy...) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %2\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set reorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall1(name, err, arg1) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %3\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set reorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall2(name, err, arg1, arg2) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a1 asm("$5") = (long long) arg2; \
++ register long long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %4\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall3(name, err, arg1, arg2, arg3) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a1 asm("$5") = (long long) arg2; \
++ register long long __a2 asm("$6") = (long long) arg3; \
++ register long long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a1 asm("$5") = (long long) arg2; \
++ register long long __a2 asm("$6") = (long long) arg3; \
++ register long long __a3 asm("$7") = (long long) arg4; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a1 asm("$5") = (long long) arg2; \
++ register long long __a2 asm("$6") = (long long) arg3; \
++ register long long __a3 asm("$7") = (long long) arg4; \
++ register long long __a4 asm("$8") = (long long) arg5; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "r" (__a4) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a1 asm("$5") = (long long) arg2; \
++ register long long __a2 asm("$6") = (long long) arg3; \
++ register long long __a3 asm("$7") = (long long) arg4; \
++ register long long __a4 asm("$8") = (long long) arg5; \
++ register long long __a5 asm("$9") = (long long) arg6; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "r" (__a4), "r" (__a5) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long long __v0 asm("$2"); \
++ register long long __a0 asm("$4") = (long long) arg1; \
++ register long long __a1 asm("$5") = (long long) arg2; \
++ register long long __a2 asm("$6") = (long long) arg3; \
++ register long long __a3 asm("$7") = (long long) arg4; \
++ register long long __a4 asm("$8") = (long long) arg5; \
++ register long long __a5 asm("$9") = (long long) arg6; \
++ register long long __a6 asm("$10") = (long long) arg7; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "r" (__a4), "r" (__a5), "r" (__a6) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
++#endif /* untested */
++#endif /* __ASSEMBLER__ */
++
++#endif /* linux/mips/sysdep.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n32/truncate64.c 2003-04-05 14:57:35.000000000 -0500
+@@ -0,0 +1,30 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/types.h>
++
++#include <sysdep.h>
++#include <bp-checks.h>
++
++extern int truncate (const char *__unbounded path, int dummy,
++ off64_t length);
++
++int truncate64 (const char *__unbounded path, int dummy,
++ off64_t length) {
++ return truncate (path, dummy, length);
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1 @@
++/* glob64 is in glob.c */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S 2003-04-12 11:39:50.000000000 -0400
+@@ -0,0 +1,42 @@
++/* Copyright 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#include <sys/asm.h>
++
++/* Sign-extend the ioctl number, since the kernel wants it as a
++ sign-extended 32-bit value, but our prototype is that of a long. */
++
++ .text
++ENTRY (__ioctl)
++ li v0, __NR_ioctl
++ sll a1,a1,0
++ syscall /* Do the system call. */
++ bne a3, zero, L(error)
++ ret
++
++L(error):
++ .cpsetup t9, a0, __ioctl
++ PTR_LA t9,__syscall_error
++ .cprestore
++ jr t9
++
++PSEUDO_END (__ioctl)
++
++weak_alias (__ioctl, ioctl)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2003-06-03 09:36:39.000000000 -0400
+@@ -0,0 +1,263 @@
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _LINUX_MIPS_SYSDEP_H
++#define _LINUX_MIPS_SYSDEP_H 1
++
++/* There is some commonality. */
++#include <sysdeps/unix/mips/mips64/n64/sysdep.h>
++
++/* For Linux we can use the system call table in the header file
++ /usr/include/asm/unistd.h
++ of the kernel. But these symbols do not follow the SYS_* syntax
++ so we have to redefine the `SYS_ify' macro here. */
++#undef SYS_ify
++#ifdef __STDC__
++# define SYS_ify(syscall_name) __NR_N64_##syscall_name
++#else
++# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name
++#endif
++
++
++#ifndef __ASSEMBLER__
++#if 0 /* untested */
++/* Define a macro which expands into the inline wrapper code for a system
++ call. */
++#undef INLINE_SYSCALL
++#define INLINE_SYSCALL(name, nr, args...) \
++ ({ INTERNAL_SYSCALL_DECL(err); \
++ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
++ if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
++ { \
++ __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
++ result_var = -1L; \
++ } \
++ result_var; })
++
++#undef INTERNAL_SYSCALL_DECL
++#define INTERNAL_SYSCALL_DECL(err) long err
++
++#undef INTERNAL_SYSCALL_ERROR_P
++#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
++
++#undef INTERNAL_SYSCALL_ERRNO
++#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
++
++#define internal_syscall0(name, err, dummy...) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %2\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set reorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall1(name, err, arg1) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %3\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set reorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall2(name, err, arg1, arg2) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %4\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall3(name, err, arg1, arg2, arg3) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7"); \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "=r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ register long __a4 asm("$8") = (long) arg5; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "r" (__a4) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ register long __a4 asm("$8") = (long) arg5; \
++ register long __a5 asm("$9") = (long) arg6; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "r" (__a4), "r" (__a5) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
++({ \
++ long _sys_result; \
++ \
++ { \
++ register long __v0 asm("$2"); \
++ register long __a0 asm("$4") = (long) arg1; \
++ register long __a1 asm("$5") = (long) arg2; \
++ register long __a2 asm("$6") = (long) arg3; \
++ register long __a3 asm("$7") = (long) arg4; \
++ register long __a4 asm("$8") = (long) arg5; \
++ register long __a5 asm("$9") = (long) arg6; \
++ register long __a6 asm("$10") = (long) arg7; \
++ __asm__ volatile ( \
++ ".set\tnoreorder\n\t" \
++ "li\t$2, %5\t\t\t# " #name "\n\t" \
++ "syscall\n\t" \
++ ".set\treorder" \
++ : "=r" (__v0), "+r" (__a3) \
++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
++ "r" (__a4), "r" (__a5), "r" (__a6) \
++ : __SYSCALL_CLOBBERS); \
++ err = __a3; \
++ _sys_result = __v0; \
++ } \
++ _sys_result; \
++})
++
++#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
++#endif /* untested */
++#endif /* __ASSEMBLER__ */
++
++#endif /* linux/mips/sysdep.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/recv.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/recv.c 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/x86_64/recv.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/send.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/send.c 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/x86_64/send.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscall.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscall.S 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1,53 @@
++/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#include <sys/asm.h>
++
++/* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
++ more information about the value -4095 used below. */
++
++/* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5)
++ We need to do some arg shifting, the syscall_number will be in
++ rax. */
++
++
++ .text
++ENTRY (syscall)
++ move v0, a0 /* Syscall number -> v0 */
++ move a0, a1 /* shift arg1 - arg7. */
++ move a1, a2
++ move a2, a3
++ move a3, a4
++ move a4, a5
++ move a5, a6
++ move a6, a7
++
++ syscall /* Do the system call. */
++ bne a3, zero, L(error)
++
++ ret
++
++L(error):
++ .cpsetup t9, a0, syscall
++ PTR_LA t9,__syscall_error
++ .cprestore
++ jr t9
++
++PSEUDO_END (syscall)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -0,0 +1,20 @@
++# File name Caller Syscall name Args Strong name Weak names
++
++lseek - lseek i:iii __libc_lseek __lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64
++
++# proper socket implementations:
++recvfrom - recvfrom i:ibniBN __libc_recvfrom __recvfrom recvfrom
++sendto - sendto i:ibnibn __libc_sendto __sendto sendto
++
++# semaphore and shm system calls
++msgctl - msgctl i:iip __msgctl msgctl
++msgget - msgget i:ii __msgget msgget
++msgrcv - msgrcv i:ibnii __msgrcv msgrcv
++msgsnd - msgsnd i:ibni __msgsnd msgsnd
++shmat - shmat i:ipi __shmat shmat
++shmctl - shmctl i:iip __shmctl shmctl
++shmdt - shmdt i:s __shmdt shmdt
++shmget - shmget i:iii __shmget shmget
++semop - semop i:ipi __semop semop
++semget - semget i:iii __semget semget
++semctl - semctl i:iiii __semctl semctl
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/umount.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/mips64/umount.c 2003-03-17 11:20:44.000000000 -0500
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/hppa/umount.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread.c 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -41,10 +41,6 @@
+ static ssize_t __emulate_pread (int fd, void *buf, size_t count,
+ off_t offset) internal_function;
+ # endif
+-extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
+- int dummy, off_t offset_hi, off_t offset_lo);
+-
+-
+
+ ssize_t
+ __libc_pread (fd, buf, count, offset)
+@@ -55,26 +51,37 @@
+ {
+ ssize_t result;
+
++#if (defined _ABI64 && _MIPS_SIM != _ABI64)
++ assert (sizeof (offset) == 4);
++#endif
++
+ if (SINGLE_THREAD_P)
+ {
+- /* First try the syscall. */
+- assert (sizeof (offset) == 4);
+- result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
+- __LONG_LONG_PAIR (offset >> 31, offset));
++ /* First try the syscall. */
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count,
++ offset);
++#else
++ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
++ __LONG_LONG_PAIR (offset >> 31, offset));
++#endif
+ # if __ASSUME_PREAD_SYSCALL == 0
+- if (result == -1 && errno == ENOSYS)
+- /* No system call available. Use the emulation. */
+- result = __emulate_pread (fd, buf, count, offset);
++ if (result == -1 && errno == ENOSYS)
++ /* No system call available. Use the emulation. */
++ result = __emulate_pread (fd, buf, count, offset);
+ # endif
+- return result;
++ return result;
+ }
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ /* First try the syscall. */
+- assert (sizeof (offset) == 4);
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, offset);
++#else
+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
+ __LONG_LONG_PAIR (offset >> 31, offset));
++#endif
+ # if __ASSUME_PREAD_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use the emulation. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread64.c 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pread64.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -41,11 +41,6 @@
+ off64_t offset) internal_function;
+ # endif
+
+-extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
+- int dummy, off_t offset_hi, off_t offset_lo);
+-
+-
+-
+ ssize_t
+ __libc_pread64 (fd, buf, count, offset)
+ int fd;
+@@ -59,9 +54,14 @@
+ if (SINGLE_THREAD_P)
+ {
+ /* First try the syscall. */
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count,
++ offset);
++#else
+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
++#endif
+ # if __ASSUME_PREAD_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use the emulation. */
+@@ -73,9 +73,13 @@
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ /* First try the syscall. */
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pread, 4, fd, CHECK_N (buf, count), count, offset);
++#else
+ result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count, 0,
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
++#endif
+ # if __ASSUME_PREAD_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use the emulation. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/profil-counter.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/profil-counter.h 2003-04-13 07:36:32.000000000 -0400
+@@ -0,0 +1,2 @@
++/* We can use the ix86 version. */
++#include <sysdeps/unix/sysv/linux/i386/profil-counter.h>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ptrace.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ptrace.c 2003-09-19 22:37:10.000000000 -0400
+@@ -0,0 +1,109 @@
++/* Copyright (C) 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <sys/types.h>
++#include <sys/ptrace.h>
++#include <sys/user.h>
++#include <stdarg.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++#include <bp-checks.h>
++
++#if defined _ABIN32 && _MIPS_SIM == _ABIN32
++__extension__ typedef long long int reg_type;
++#else
++typedef long int reg_type;
++#endif
++
++reg_type
++ptrace (enum __ptrace_request request, ...)
++{
++ reg_type res, ret;
++ va_list ap;
++ pid_t pid;
++ void *addr;
++ reg_type data;
++
++ va_start (ap, request);
++ pid = va_arg (ap, pid_t);
++ addr = va_arg (ap, void *);
++ data = va_arg (ap, reg_type);
++ va_end (ap);
++
++ if (request > 0 && request < 4)
++ data = &ret;
++
++#if __BOUNDED_POINTERS__
++ switch (request)
++ {
++ case PTRACE_PEEKTEXT:
++ case PTRACE_PEEKDATA:
++ case PTRACE_PEEKUSER:
++ case PTRACE_POKETEXT:
++ case PTRACE_POKEDATA:
++ case PTRACE_POKEUSER:
++ (void) CHECK_1 ((int *) addr);
++ (void) CHECK_1 ((int *) data);
++ break;
++
++ case PTRACE_GETREGS:
++ case PTRACE_SETREGS:
++ /* We don't know the size of data, so the best we can do is ensure
++ that `data' is valid for at least one word. */
++ (void) CHECK_1 ((int *) data);
++ break;
++
++ case PTRACE_GETFPREGS:
++ case PTRACE_SETFPREGS:
++ /* We don't know the size of data, so the best we can do is ensure
++ that `data' is valid for at least one word. */
++ (void) CHECK_1 ((int *) data);
++ break;
++
++ case PTRACE_GETFPXREGS:
++ case PTRACE_SETFPXREGS:
++ /* We don't know the size of data, so the best we can do is ensure
++ that `data' is valid for at least one word. */
++ (void) CHECK_1 ((int *) data);
++ break;
++
++ case PTRACE_TRACEME:
++ case PTRACE_CONT:
++ case PTRACE_KILL:
++ case PTRACE_SINGLESTEP:
++ case PTRACE_ATTACH:
++ case PTRACE_DETACH:
++ case PTRACE_SYSCALL:
++ /* Neither `data' nor `addr' needs any checks. */
++ break;
++ };
++#endif
++
++ res = INLINE_SYSCALL (ptrace, 4, request, pid,
++ __ptrvalue (addr), __ptrvalue (data));
++ if (res >= 0 && request > 0 && request < 4)
++ {
++ __set_errno (0);
++ return ret;
++ }
++
++ return res;
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite.c 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -37,9 +37,6 @@
+
+ #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
+
+-extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
+- int dummy, off_t offset_hi, off_t offset_lo);
+-
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
+ off_t offset) internal_function;
+@@ -54,27 +51,37 @@
+ {
+ ssize_t result;
+
++#if (defined _ABI64 && _MIPS_SIM != _ABI64)
++ assert (sizeof (offset) == 4);
++#endif
++
+ if (SINGLE_THREAD_P)
+ {
+ /* First try the syscall. */
+- assert (sizeof (offset) == 4);
+- result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
+- __LONG_LONG_PAIR (offset >> 31, offset));
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count,
++ offset);
++#else
++ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
++ __LONG_LONG_PAIR (offset >> 31, offset));
++#endif
+ # if __ASSUME_PWRITE_SYSCALL == 0
+- if (result == -1 && errno == ENOSYS)
+- /* No system call available. Use the emulation. */
+- result = __emulate_pwrite (fd, buf, count, offset);
++ if (result == -1 && errno == ENOSYS)
++ /* No system call available. Use the emulation. */
++ result = __emulate_pwrite (fd, buf, count, offset);
+ # endif
+-
+ return result;
+ }
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ /* First try the syscall. */
+- assert (sizeof (offset) == 4);
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, offset);
++#else
+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
+- __LONG_LONG_PAIR (offset >> 31, offset));
++ __LONG_LONG_PAIR (offset >> 31, offset));
++#endif
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use the emulation. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite64.c 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/pwrite64.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.org>, 1998.
+
+@@ -36,9 +36,6 @@
+
+ #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
+
+-extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
+- int dummy, off_t offset_hi, off_t offset_lo);
+-
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count,
+ off64_t offset) internal_function;
+@@ -56,9 +53,14 @@
+ if (SINGLE_THREAD_P)
+ {
+ /* First try the syscall. */
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count,
++ offset);
++#else
+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
++#endif
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use the emulation. */
+@@ -71,9 +73,13 @@
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ /* First try the syscall. */
++#if (defined _ABIN32 && _MIPS_SIM == _ABIN32) || (defined _ABI64 && _MIPS_SIM == _ABI64)
++ result = INLINE_SYSCALL (pwrite, 4, fd, CHECK_N (buf, count), count, offset);
++#else
+ result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count, 0,
+ __LONG_LONG_PAIR ((off_t) (offset >> 32),
+ (off_t) (offset & 0xffffffff)));
++#endif
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use the emulation. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/readelflib.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/readelflib.c 2003-03-14 02:52:05.000000000 -0500
+@@ -0,0 +1,71 @@
++/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Alexandre Oliva <aoliva@redhat.com>
++ Based on work ../x86_64/readelflib.c,
++ contributed by Andreas Jaeger <aj@suse.de>, 1999 and
++ Jakub Jelinek <jakub@redhat.com>, 1999.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++
++int process_elf32_file (const char *file_name, const char *lib, int *flag,
++ unsigned int *osversion, char **soname,
++ void *file_contents, size_t file_length);
++int process_elf64_file (const char *file_name, const char *lib, int *flag,
++ unsigned int *osversion, char **soname,
++ void *file_contents, size_t file_length);
++
++/* Returns 0 if everything is ok, != 0 in case of error. */
++int
++process_elf_file (const char *file_name, const char *lib, int *flag,
++ unsigned int *osversion, char **soname, void *file_contents,
++ size_t file_length)
++{
++ ElfW(Ehdr) *elf_header = (ElfW(Ehdr) *) file_contents;
++ int ret;
++
++ if (elf_header->e_ident [EI_CLASS] == ELFCLASS32)
++ {
++ ret = process_elf32_file (file_name, lib, flag, osversion, soname,
++ file_contents, file_length);
++
++ /* n32 libraries are always libc.so.6+. */
++ if (ret && (elf_header->e_flags & EF_MIPS_ABI2) != 0)
++ *flag = FLAG_MIPS64_LIBN32|FLAG_ELF_LIBC6;
++ }
++ else
++ {
++ ret = process_elf64_file (file_name, lib, flag, osversion, soname,
++ file_contents, file_length);
++ /* n64 libraries are always libc.so.6+. */
++ if (!ret)
++ *flag = FLAG_MIPS64_LIBN64|FLAG_ELF_LIBC6;
++ }
++
++ return ret;
++}
++
++#undef __ELF_NATIVE_CLASS
++#undef process_elf_file
++#define process_elf_file process_elf32_file
++#define __ELF_NATIVE_CLASS 32
++#include "sysdeps/generic/readelflib.c"
++
++#undef __ELF_NATIVE_CLASS
++#undef process_elf_file
++#define process_elf_file process_elf64_file
++#define __ELF_NATIVE_CLASS 64
++#include "sysdeps/generic/readelflib.c"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigaction.c 2003-01-02 18:26:04.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigaction.c 2003-09-19 22:37:10.000000000 -0400
+@@ -35,12 +35,17 @@
+ functions which have RT equivalents. This is the definition. */
+ int __libc_missing_rt_sigs;
+
+-extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded,
+- struct old_kernel_sigaction *__unbounded);
+ #endif
+-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
+- struct kernel_sigaction *__unbounded, size_t);
+
++#if _MIPS_SIM != _MIPS_SIM_ABI32
++
++# ifdef __NR_rt_sigreturn
++static void restore_rt (void) asm ("__restore_rt");
++# endif
++# ifdef __NR_sigreturn
++static void restore (void) asm ("__restore");
++# endif
++#endif
+
+ /* If ACT is not NULL, change the action for SIG to *ACT.
+ If OACT is not NULL, put the old action for SIG in *OACT. */
+@@ -74,7 +79,11 @@
+ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kernel_sigset_t));
+ kact.sa_flags = act->sa_flags;
+ # ifdef HAVE_SA_RESTORER
++# if _MIPS_SIM == _MIPS_SIM_ABI32
+ kact.sa_restorer = act->sa_restorer;
++# else
++ kact.sa_restorer = &restore_rt;
++# endif
+ # endif
+ }
+
+@@ -128,7 +137,11 @@
+ oact->sa_mask.__val[0] = k_osigact.sa_mask;
+ oact->sa_flags = k_osigact.sa_flags;
+ # ifdef HAVE_SA_RESTORER
++# if _MIPS_SIM == _MIPS_SIM_ABI32
+ oact->sa_restorer = k_osigact.sa_restorer;
++# else
++ oact->sa_restorer = &restore;
++# endif
+ # endif
+ }
+ return result;
+@@ -141,3 +154,31 @@
+ libc_hidden_weak (__sigaction)
+ weak_alias (__libc_sigaction, sigaction)
+ #endif
++
++/* NOTE: Please think twice before making any changes to the bits of
++ code below. GDB needs some intimate knowledge about it to
++ recognize them as signal trampolines, and make backtraces through
++ signal handlers work right. Important are both the names
++ (__restore_rt) and the exact instruction sequence.
++ If you ever feel the need to make any changes, please notify the
++ appropriate GDB maintainer. */
++
++#define RESTORE(name, syscall) RESTORE2 (name, syscall)
++#define RESTORE2(name, syscall) \
++asm \
++ ( \
++ ".align 4\n" \
++ "__" #name ":\n" \
++ " li $2, " #syscall "\n" \
++ " syscall\n" \
++ );
++
++/* The return code for realtime-signals. */
++#if _MIPS_SIM != _MIPS_SIM_ABI32
++# ifdef __NR_rt_sigreturn
++RESTORE (restore_rt, __NR_rt_sigreturn)
++# endif
++# ifdef __NR_sigreturn
++RESTORE (restore, __NR_sigreturn)
++# endif
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h 2003-04-24 20:06:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 2000.
+
+@@ -18,6 +18,8 @@
+ 02111-1307 USA. */
+
+
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++
+ #define SIGCONTEXT unsigned long _code, struct sigcontext *
+ #define SIGCONTEXT_EXTRA_ARGS _code,
+ #define GET_PC(ctx) ((void *) ctx->sc_pc)
+@@ -25,3 +27,15 @@
+ #define GET_STACK(ctx) ((void *) ctx->sc_regs[29])
+ #define CALL_SIGHANDLER(handler, signo, ctx) \
+ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
++
++#else
++
++#define SIGCONTEXT unsigned long _code, ucontext_t *
++#define SIGCONTEXT_EXTRA_ARGS _code,
++#define GET_PC(ctx) ((void *) ctx->uc_mcontext.pc)
++#define GET_FRAME(ctx) ((void *) ctx->uc_mcontext.gregs[30])
++#define GET_STACK(ctx) ((void *) ctx->uc_mcontext.gregs[29])
++#define CALL_SIGHANDLER(handler, signo, ctx) \
++ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/procfs.h 2002-02-08 20:19:07.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/procfs.h 2003-03-18 16:46:10.000000000 -0500
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -32,7 +33,11 @@
+ #define ELF_NGREG 45
+ #define ELF_NFPREG 33
+
++#if defined _ABIN32 && _MIPS_SIM == _ABIN32
++__extension__ typedef unsigned long long elf_greg_t;
++#else
+ typedef unsigned long elf_greg_t;
++#endif
+ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+ typedef double elf_fpreg_t;
+@@ -59,8 +64,13 @@
+ {
+ struct elf_siginfo pr_info; /* Info associated with signal. */
+ short int pr_cursig; /* Current signal. */
++#if defined _ABIN32 && _MIPS_SIM == _ABIN32
++ __extension__ unsigned long long int pr_sigpend;
++ __extension__ unsigned long long int pr_sighold;
++#else
+ unsigned long int pr_sigpend; /* Set of pending signals. */
+ unsigned long int pr_sighold; /* Set of held signals. */
++#endif
+ __pid_t pr_pid;
+ __pid_t pr_ppid;
+ __pid_t pr_pgrp;
+@@ -82,7 +92,11 @@
+ char pr_sname; /* Char for pr_state. */
+ char pr_zomb; /* Zombie. */
+ char pr_nice; /* Nice val. */
++#if defined _ABIN32 && _MIPS_SIM == _ABIN32
++ __extension__ unsigned long long int pr_flag;
++#else
+ unsigned long int pr_flag; /* Flags. */
++#endif
+ long pr_uid;
+ long pr_gid;
+ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ptrace.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ptrace.h 2003-03-17 10:48:52.000000000 -0500
+@@ -0,0 +1,135 @@
++/* `ptrace' debugger support interface. Linux version.
++ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_PTRACE_H
++#define _SYS_PTRACE_H 1
++
++#include <features.h>
++
++__BEGIN_DECLS
++
++/* Type of the REQUEST argument to `ptrace.' */
++enum __ptrace_request
++{
++ /* Indicate that the process making this request should be traced.
++ All signals received by this process can be intercepted by its
++ parent, and its parent can use the other `ptrace' requests. */
++ PTRACE_TRACEME = 0,
++#define PT_TRACE_ME PTRACE_TRACEME
++
++ /* Return the word in the process's text space at address ADDR. */
++ PTRACE_PEEKTEXT = 1,
++#define PT_READ_I PTRACE_PEEKTEXT
++
++ /* Return the word in the process's data space at address ADDR. */
++ PTRACE_PEEKDATA = 2,
++#define PT_READ_D PTRACE_PEEKDATA
++
++ /* Return the word in the process's user area at offset ADDR. */
++ PTRACE_PEEKUSER = 3,
++#define PT_READ_U PTRACE_PEEKUSER
++
++ /* Write the word DATA into the process's text space at address ADDR. */
++ PTRACE_POKETEXT = 4,
++#define PT_WRITE_I PTRACE_POKETEXT
++
++ /* Write the word DATA into the process's data space at address ADDR. */
++ PTRACE_POKEDATA = 5,
++#define PT_WRITE_D PTRACE_POKEDATA
++
++ /* Write the word DATA into the process's user area at offset ADDR. */
++ PTRACE_POKEUSER = 6,
++#define PT_WRITE_U PTRACE_POKEUSER
++
++ /* Continue the process. */
++ PTRACE_CONT = 7,
++#define PT_CONTINUE PTRACE_CONT
++
++ /* Kill the process. */
++ PTRACE_KILL = 8,
++#define PT_KILL PTRACE_KILL
++
++ /* Single step the process.
++ This is not supported on all machines. */
++ PTRACE_SINGLESTEP = 9,
++#define PT_STEP PTRACE_SINGLESTEP
++
++ /* Get all general purpose registers used by a processes.
++ This is not supported on all machines. */
++ PTRACE_GETREGS = 12,
++#define PT_GETREGS PTRACE_GETREGS
++
++ /* Set all general purpose registers used by a processes.
++ This is not supported on all machines. */
++ PTRACE_SETREGS = 13,
++#define PT_SETREGS PTRACE_SETREGS
++
++ /* Get all floating point registers used by a processes.
++ This is not supported on all machines. */
++ PTRACE_GETFPREGS = 14,
++#define PT_GETFPREGS PTRACE_GETFPREGS
++
++ /* Set all floating point registers used by a processes.
++ This is not supported on all machines. */
++ PTRACE_SETFPREGS = 15,
++#define PT_SETFPREGS PTRACE_SETFPREGS
++
++ /* Attach to a process that is already running. */
++ PTRACE_ATTACH = 16,
++#define PT_ATTACH PTRACE_ATTACH
++
++ /* Detach from a process attached to with PTRACE_ATTACH. */
++ PTRACE_DETACH = 17,
++#define PT_DETACH PTRACE_DETACH
++
++ /* Get all extended floating point registers used by a processes.
++ This is not supported on all machines. */
++ PTRACE_GETFPXREGS = 18,
++#define PT_GETFPXREGS PTRACE_GETFPXREGS
++
++ /* Set all extended floating point registers used by a processes.
++ This is not supported on all machines. */
++ PTRACE_SETFPXREGS = 19,
++#define PT_SETFPXREGS PTRACE_SETFPXREGS
++
++ /* Continue and stop at the next (return from) syscall. */
++ PTRACE_SYSCALL = 24
++#define PT_SYSCALL PTRACE_SYSCALL
++};
++
++/* Perform process tracing functions. REQUEST is one of the values
++ above, and determines the action to be taken.
++ For all requests except PTRACE_TRACEME, PID specifies the process to be
++ traced.
++
++ PID and the other arguments described above for the various requests should
++ appear (those that are used for the particular request) as:
++ pid_t PID, void *ADDR, int DATA, void *ADDR2
++ after REQUEST. */
++#if defined _ABIN32 && _MIPS_SIM == _ABIN32
++__extension__ extern long long int ptrace
++ (enum __ptrace_request __request, ...) __THROW;
++#else
++extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
++#endif
++
++__END_DECLS
++
++#endif /* _SYS_PTRACE_H */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h 2003-03-17 10:50:05.000000000 -0500
+@@ -0,0 +1,42 @@
++/* Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYSCALL_H
++#define _SYSCALL_H 1
++
++/* This file should list the numbers of the system the system knows.
++ But instead of duplicating this we use the information available
++ from the kernel sources. */
++#ifdef _LIBC
++/* Since the kernel doesn't define macro names in a way usable for
++ glibc, we preprocess this header, and use it during the glibc build
++ process. */
++# include <asm-unistd.h>
++#else
++# include <asm/unistd.h>
++#endif
++
++#ifndef _LIBC
++/* The Linux kernel header file defines macros `__NR_<name>', but some
++ programs expect the traditional form `SYS_<name>'. So in building libc
++ we scan the kernel's list and produce <bits/syscall.h> with macros for
++ all the `SYS_' names. */
++# include <bits/syscall.h>
++#endif
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/tas.h 2002-07-15 20:52:17.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/tas.h 2003-03-15 15:02:21.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Maciej W. Rozycki <macro@ds2.pg.gda.pl>, 2000.
+
+@@ -41,7 +41,9 @@
+ ("/* Inline test and set */\n"
+ "1:\n\t"
+ ".set push\n\t"
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+ ".set mips2\n\t"
++#endif
+ "ll %0,%3\n\t"
+ "move %1,%4\n\t"
+ "beq %0,%4,2f\n\t"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h 2003-05-12 12:13:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,43 +29,72 @@
+ #include <bits/sigcontext.h>
+
+
+-/* Type for general register. */
+-typedef unsigned long int greg_t;
++/* Type for general register. Even in o32 we assume 64-bit registers,
++ like the kernel. */
++__extension__ typedef unsigned long long int greg_t;
+
+ /* Number of general registers. */
+-#define NGREG 37
+-#define NFPREG 33
++#define NGREG 32
++#define NFPREG 32
+
+ /* Container for all general registers. */
+-/* gregset_t must be an array. The below declared array corresponds to:
+-typedef struct gregset {
+- greg_t g_regs[32];
+- greg_t g_hi;
+- greg_t g_lo;
+- greg_t g_pad[3];
+-} gregset_t; */
+ typedef greg_t gregset_t[NGREG];
+
+ /* Container for all FPU registers. */
+ typedef struct fpregset {
+ union {
+- double fp_dregs[32];
++ double fp_dregs[NFPREG];
+ struct {
+ float _fp_fregs;
+ unsigned int _fp_pad;
+- } fp_fregs[32];
++ } fp_fregs[NFPREG];
+ } fp_r;
+- unsigned int fp_csr;
+- unsigned int fp_pad;
+ } fpregset_t;
+
+
+ /* Context to describe whole processor state. */
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++/* Earlier versions of glibc for mips had an entirely different
++ definition of mcontext_t, that didn't even resemble the
++ corresponding kernel data structure. Since all legitimate uses of
++ ucontext_t in glibc mustn't have accessed anything beyond
++ uc_mcontext and, even then, taking a pointer to it, casting it to
++ sigcontext_t, and accessing it as such, which is what it has always
++ been, this can still be rectified. Fortunately, makecontext,
++ [gs]etcontext et all have never been implemented. */
+ typedef struct
+ {
++ unsigned int regmask;
++ unsigned int status;
++ greg_t pc;
+ gregset_t gregs;
+ fpregset_t fpregs;
++ unsigned int fp_owned;
++ unsigned int fpc_csr;
++ unsigned int fpc_eir;
++ unsigned int used_math;
++ unsigned int ssflags;
++ greg_t mdhi;
++ greg_t mdlo;
++ unsigned int cause;
++ unsigned int badvaddr;
+ } mcontext_t;
++#else
++typedef struct
++ {
++ gregset_t gregs;
++ fpregset_t fpregs;
++ greg_t mdhi;
++ greg_t mdlo;
++ greg_t pc;
++ unsigned int status;
++ unsigned int fpc_csr;
++ unsigned int fpc_eir;
++ unsigned int used_math;
++ unsigned int cause;
++ unsigned int badvaddr;
++ } mcontext_t;
++#endif
+
+ /* Userlevel context. */
+ typedef struct ucontext
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/user.h 2002-02-08 11:21:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/user.h 2003-04-24 20:06:01.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -23,7 +23,154 @@
+ too much into it. Don't use it for anything other than GDB unless
+ you know what you are doing. */
+
+-#include <asm/reg.h>
++/* #include <asm/reg.h> */
++/* Instead of including the kernel header, that will vary depending on
++ whether the 32- or the 64-bit kernel is installed, we paste its
++ contents here. Note that the fact that the file is inline here,
++ instead of included separately, doesn't change in any way the
++ licensing status of a program that includes user.h. Since this is
++ for gdb alone, and gdb is GPLed, no surprises here. */
++#if _MIPS_SIM == _MIPS_SIM_ABI32
++/*
++ * Various register offset definitions for debuggers, core file
++ * examiners and whatnot.
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ *
++ * Copyright (C) 1995, 1999 by Ralf Baechle
++ */
++#ifndef __ASM_MIPS_REG_H
++#define __ASM_MIPS_REG_H
++
++/*
++ * This defines/structures correspond to the register layout on stack -
++ * if the order here is changed, it needs to be updated in
++ * include/asm-mips/stackframe.h
++ */
++#define EF_REG0 6
++#define EF_REG1 7
++#define EF_REG2 8
++#define EF_REG3 9
++#define EF_REG4 10
++#define EF_REG5 11
++#define EF_REG6 12
++#define EF_REG7 13
++#define EF_REG8 14
++#define EF_REG9 15
++#define EF_REG10 16
++#define EF_REG11 17
++#define EF_REG12 18
++#define EF_REG13 19
++#define EF_REG14 20
++#define EF_REG15 21
++#define EF_REG16 22
++#define EF_REG17 23
++#define EF_REG18 24
++#define EF_REG19 25
++#define EF_REG20 26
++#define EF_REG21 27
++#define EF_REG22 28
++#define EF_REG23 29
++#define EF_REG24 30
++#define EF_REG25 31
++/*
++ * k0/k1 unsaved
++ */
++#define EF_REG28 34
++#define EF_REG29 35
++#define EF_REG30 36
++#define EF_REG31 37
++
++/*
++ * Saved special registers
++ */
++#define EF_LO 38
++#define EF_HI 39
++
++#define EF_CP0_EPC 40
++#define EF_CP0_BADVADDR 41
++#define EF_CP0_STATUS 42
++#define EF_CP0_CAUSE 43
++
++#define EF_SIZE 180 /* size in bytes */
++
++#endif /* __ASM_MIPS_REG_H */
++
++#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */
++
++/*
++ * Various register offset definitions for debuggers, core file
++ * examiners and whatnot.
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ *
++ * Copyright (C) 1995, 1999 Ralf Baechle
++ * Copyright (C) 1995, 1999 Silicon Graphics
++ */
++#ifndef _ASM_REG_H
++#define _ASM_REG_H
++
++/*
++ * This defines/structures correspond to the register layout on stack -
++ * if the order here is changed, it needs to be updated in
++ * include/asm-mips/stackframe.h
++ */
++#define EF_REG0 0
++#define EF_REG1 1
++#define EF_REG2 2
++#define EF_REG3 3
++#define EF_REG4 4
++#define EF_REG5 5
++#define EF_REG6 6
++#define EF_REG7 7
++#define EF_REG8 8
++#define EF_REG9 9
++#define EF_REG10 10
++#define EF_REG11 11
++#define EF_REG12 12
++#define EF_REG13 13
++#define EF_REG14 14
++#define EF_REG15 15
++#define EF_REG16 16
++#define EF_REG17 17
++#define EF_REG18 18
++#define EF_REG19 19
++#define EF_REG20 20
++#define EF_REG21 21
++#define EF_REG22 22
++#define EF_REG23 23
++#define EF_REG24 24
++#define EF_REG25 25
++/*
++ * k0/k1 unsaved
++ */
++#define EF_REG28 28
++#define EF_REG29 29
++#define EF_REG30 30
++#define EF_REG31 31
++
++/*
++ * Saved special registers
++ */
++#define EF_LO 32
++#define EF_HI 33
++
++#define EF_CP0_EPC 34
++#define EF_CP0_BADVADDR 35
++#define EF_CP0_STATUS 36
++#define EF_CP0_CAUSE 37
++
++#define EF_SIZE 304 /* size in bytes */
++
++#endif /* _ASM_REG_H */
++
++#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
++
++#if _MIPS_SIM == _MIPS_SIM_ABI32
+
+ struct user
+ {
+@@ -40,6 +187,24 @@
+ char u_comm[32]; /* user command name */
+ };
+
++#else
++
++struct user {
++ __extension__ unsigned long regs[EF_SIZE/8+64]; /* integer and fp regs */
++ __extension__ unsigned long u_tsize; /* text size (pages) */
++ __extension__ unsigned long u_dsize; /* data size (pages) */
++ __extension__ unsigned long u_ssize; /* stack size (pages) */
++ __extension__ unsigned long long start_code; /* text starting address */
++ __extension__ unsigned long long start_data; /* data starting address */
++ __extension__ unsigned long long start_stack; /* stack starting address */
++ __extension__ long long signal; /* signal causing core dump */
++ __extension__ unsigned long long u_ar0; /* help gdb find registers */
++ __extension__ unsigned long long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#endif
++
+ #define PAGE_SHIFT 12
+ #define PAGE_SIZE (1UL << PAGE_SHIFT)
+ #define PAGE_MASK (~(PAGE_SIZE-1))
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list 2003-01-30 22:39:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -8,8 +8,6 @@
+ cacheflush - cacheflush i:pii _flush_cache cacheflush
+ sysmips - sysmips i:iiii __sysmips sysmips
+
+-s_sigsuspend sigsuspend sigsuspend i:p __syscall_sigsuspend
+-
+ #
+ # Socket functions; Linux/MIPS doesn't use the socketcall(2) wrapper;
+ # it's provided for compatibility, though.
+@@ -31,51 +29,3 @@
+ shutdown - shutdown i:ii __shutdown shutdown
+ socket - socket i:iii __socket socket
+ socketpair - socketpair i:iiif __socketpair socketpair
+-
+-#
+-# These are defined locally because the caller is also defined in this dir.
+-#
+-s_llseek llseek _llseek i:iiipi __syscall__llseek
+-s_sigaction sigaction sigaction i:ipp __syscall_sigaction
+-s_ustat ustat ustat i:ip __syscall_ustat
+-sys_mknod xmknod mknod i:sii __syscall_mknod
+-
+-# System calls with wrappers.
+-rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
+-rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
+-rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask
+-rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
+-rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
+-rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
+-s_execve EXTRA execve i:spp __syscall_execve
+-s_exit _exit exit i:i __syscall_exit
+-s_fcntl fcntl fcntl i:iiF __syscall_fcntl
+-s_fcntl64 fcntl64 fcntl64 i:iiF __syscall_fcntl64
+-s_fstat64 fxstat64 fstat64 i:ip __syscall_fstat64
+-s_ftruncate64 ftruncate64 ftruncate64 i:iiii __syscall_ftruncate64
+-s_getcwd getcwd getcwd i:pi __syscall_getcwd
+-s_getdents getdents getdents i:ipi __syscall_getdents
+-s_getdents64 getdents getdents64 i:ipi __syscall_getdents64
+-s_getpriority getpriority getpriority i:ii __syscall_getpriority
+-s_ipc msgget ipc i:iiiip __syscall_ipc
+-s_lstat64 lxstat64 lstat64 i:sp __syscall_lstat64
+-s_mmap2 mmap64 mmap2 b:aniiii __syscall_mmap2
+-s_poll poll poll i:pii __syscall_poll
+-s_pread64 pread64 pread i:ibniii __syscall_pread
+-s_ptrace ptrace ptrace i:iipp __syscall_ptrace
+-s_pwrite64 pwrite64 pwrite i:ibniii __syscall_pwrite
+-s_readahead EXTRA readahead i:iiii __syscall_readahead
+-s_reboot reboot reboot i:iii __syscall_reboot
+-s_setrlimit setrlimit setrlimit i:ip __syscall_setrlimit
+-s_sigpending sigpending sigpending i:p __syscall_sigpending
+-s_sigprocmask sigprocmask sigprocmask i:ipp __syscall_sigprocmask
+-s_stat64 xstat64 stat64 i:sp __syscall_stat64
+-s_truncate64 truncate64 truncate64 i:siii __syscall_truncate64
+-
+-# Todo: we can pass 6 args in registers, no need for the wrapper
+-sys_sysctl sysctl _sysctl i:p __syscall__sysctl
+-sys_fstat fxstat fstat i:ip __syscall_fstat
+-sys_lstat lxstat lstat i:sp __syscall_lstat
+-sys_readv readv readv i:ipi __syscall_readv
+-sys_stat xstat stat i:sp __syscall_stat
+-sys_writev writev writev i:ipi __syscall_writev
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sysdep.h 2003-01-27 13:55:20.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sysdep.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,282 +0,0 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _LINUX_MIPS_SYSDEP_H
+-#define _LINUX_MIPS_SYSDEP_H 1
+-
+-/* There is some commonality. */
+-#include <sysdeps/unix/mips/sysdep.h>
+-
+-/* For Linux we can use the system call table in the header file
+- /usr/include/asm/unistd.h
+- of the kernel. But these symbols do not follow the SYS_* syntax
+- so we have to redefine the `SYS_ify' macro here. */
+-#undef SYS_ify
+-#ifdef __STDC__
+-# define SYS_ify(syscall_name) __NR_##syscall_name
+-#else
+-# define SYS_ify(syscall_name) __NR_/**/syscall_name
+-#endif
+-
+-#ifdef __ASSEMBLER__
+-
+-/* We don't want the label for the error handler to be visible in the symbol
+- table when we define it here. */
+-#ifdef __PIC__
+-# define SYSCALL_ERROR_LABEL 99b
+-#endif
+-
+-#else /* ! __ASSEMBLER__ */
+-
+-/* Define a macro which expands into the inline wrapper code for a system
+- call. */
+-#undef INLINE_SYSCALL
+-#define INLINE_SYSCALL(name, nr, args...) \
+- ({ INTERNAL_SYSCALL_DECL(err); \
+- long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
+- if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
+- { \
+- __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
+- result_var = -1L; \
+- } \
+- result_var; })
+-
+-#undef INTERNAL_SYSCALL_DECL
+-#define INTERNAL_SYSCALL_DECL(err) long err
+-
+-#undef INTERNAL_SYSCALL_ERROR_P
+-#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
+-
+-#undef INTERNAL_SYSCALL_ERRNO
+-#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
+-
+-#undef INTERNAL_SYSCALL
+-#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
+-
+-#define internal_syscall0(name, err, dummy...) \
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a3 asm("$7"); \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "li\t$2, %2\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- ".set reorder" \
+- : "=r" (__v0), "=r" (__a3) \
+- : "i" (SYS_ify(name)) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall1(name, err, arg1) \
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a3 asm("$7"); \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "li\t$2, %3\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- ".set reorder" \
+- : "=r" (__v0), "=r" (__a3) \
+- : "r" (__a0), "i" (SYS_ify(name)) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall2(name, err, arg1, arg2) \
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a1 asm("$5") = (long) arg2; \
+- register long __a3 asm("$7"); \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "li\t$2, %4\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- ".set\treorder" \
+- : "=r" (__v0), "=r" (__a3) \
+- : "r" (__a0), "r" (__a1), "i" (SYS_ify(name)) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall3(name, err, arg1, arg2, arg3) \
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a1 asm("$5") = (long) arg2; \
+- register long __a2 asm("$6") = (long) arg3; \
+- register long __a3 asm("$7"); \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "li\t$2, %5\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- ".set\treorder" \
+- : "=r" (__v0), "=r" (__a3) \
+- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall4(name, err, arg1, arg2, arg3, arg4) \
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a1 asm("$5") = (long) arg2; \
+- register long __a2 asm("$6") = (long) arg3; \
+- register long __a3 asm("$7") = (long) arg4; \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "li\t$2, %5\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- ".set\treorder" \
+- : "=r" (__v0), "+r" (__a3) \
+- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5) \
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a1 asm("$5") = (long) arg2; \
+- register long __a2 asm("$6") = (long) arg3; \
+- register long __a3 asm("$7") = (long) arg4; \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "lw\t$2, %6\n\t" \
+- "subu\t$29, 32\n\t" \
+- "sw\t$2, 16($29)\n\t" \
+- "li\t$2, %5\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- "addiu\t$29, 32\n\t" \
+- ".set\treorder" \
+- : "=r" (__v0), "+r" (__a3) \
+- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
+- "m" ((long)arg5) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a1 asm("$5") = (long) arg2; \
+- register long __a2 asm("$6") = (long) arg3; \
+- register long __a3 asm("$7") = (long) arg4; \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "lw\t$2, %6\n\t" \
+- "lw\t$8, %7\n\t" \
+- "subu\t$29, 32\n\t" \
+- "sw\t$2, 16($29)\n\t" \
+- "sw\t$8, 20($29)\n\t" \
+- "li\t$2, %5\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- "addiu\t$29, 32\n\t" \
+- ".set\treorder" \
+- : "=r" (__v0), "+r" (__a3) \
+- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
+- "m" ((long)arg5), "m" ((long)arg6) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
+-({ \
+- long _sys_result; \
+- \
+- { \
+- register long __v0 asm("$2"); \
+- register long __a0 asm("$4") = (long) arg1; \
+- register long __a1 asm("$5") = (long) arg2; \
+- register long __a2 asm("$6") = (long) arg3; \
+- register long __a3 asm("$7") = (long) arg4; \
+- __asm__ volatile ( \
+- ".set\tnoreorder\n\t" \
+- "lw\t$2, %6\n\t" \
+- "lw\t$8, %7\n\t" \
+- "lw\t$9, %8\n\t" \
+- "subu\t$29, 32\n\t" \
+- "sw\t$2, 16($29)\n\t" \
+- "sw\t$8, 20($29)\n\t" \
+- "sw\t$9, 24($29)\n\t" \
+- "li\t$2, %5\t\t\t# " #name "\n\t" \
+- "syscall\n\t" \
+- "addiu\t$29, 32\n\t" \
+- ".set\treorder" \
+- : "=r" (__v0), "+r" (__a3) \
+- : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)), \
+- "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7) \
+- : __SYSCALL_CLOBBERS); \
+- err = __a3; \
+- _sys_result = __v0; \
+- } \
+- _sys_result; \
+-})
+-
+-#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
+-
+-#endif /* __ASSEMBLER__ */
+-
+-#endif /* linux/mips/sysdep.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/truncate64.c 2002-09-28 16:12:57.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/truncate64.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,11 +34,6 @@
+ int __have_no_truncate64;
+ #endif
+
+-/* The order of hight, low depends on endianness. */
+-extern int __syscall_truncate64 (const char *__unbounded path, int dummy,
+- int high_length, int low_length);
+-
+-
+ /* Truncate the file FD refers to to LENGTH bytes. */
+ int
+ truncate64 (const char *path, off64_t length)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ustat.c 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/ustat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -25,8 +25,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_ustat (unsigned long dev, struct ustat *__unbounded ubuf);
+-
+ int
+ ustat (dev_t dev, struct ustat *ubuf)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xmknod.c 2002-08-04 04:22:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xmknod.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* xmknod call using old-style Unix mknod system call.
+- Copyright (C) 1991,93,95,96,97,98,00,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,8 +27,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_mknod (const char *__unbounded, unsigned long, unsigned int);
+-
+ /* Create a device file named PATH, with permission and special bits MODE
+ and device number DEV (which can be constructed from major and minor
+ device numbers with the `makedev' macro above). */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xstatconv.c 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/xstatconv.c 2003-08-21 08:37:13.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Convert between the kernel's `struct stat' format, and libc's.
+- Copyright (C) 1991,1995,1996,1997,1998,2000 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,11 +17,22 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
++#include <sys/stat.h>
++#include <kernel_stat.h>
++
++#ifdef STAT_IS_KERNEL_STAT
++
++/* Dummy. */
++struct kernel_stat;
++
++#else
++
+ #include <string.h>
+
+
+-static inline int
+-xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
++int
++__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
+ {
+ switch (vers)
+ {
+@@ -70,8 +81,8 @@
+ return 0;
+ }
+
+-static inline int
+-xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
++int
++__xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
+ {
+ #ifdef XSTAT_IS_XSTAT64
+ return xstat_conv (vers, kbuf, ubuf);
+@@ -118,3 +129,5 @@
+ return 0;
+ #endif
+ }
++
++#endif /* ! STAT_IS_KERNEL_STAT */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/mmap64.c 2002-11-09 18:24:14.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/mmap64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -28,9 +28,6 @@
+ #include "kernel-features.h"
+
+ #ifdef __NR_mmap2
+-/* We have the system call that takes page number instead of byte address. */
+-extern void *__unbounded __syscall_mmap2 (void *__unbounded, size_t,
+- int, int, int, off_t);
+
+ /* This is always 12, even on architectures where PAGE_SHIFT != 12. */
+ # ifndef MMAP2_PAGE_SHIFT
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/net/if_arp.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/net/if_arp.h 2003-08-21 08:37:13.000000000 -0400
+@@ -83,6 +83,9 @@
+ #define ARPHRD_DLCI 15 /* Frame Relay DLCI. */
+ #define ARPHRD_ATM 19 /* ATM. */
+ #define ARPHRD_METRICOM 23 /* Metricom STRIP (new IANA id). */
++#define ARPHRD_IEEE1394 24 /* IEEE 1394 IPv4 - RFC 2734. */
++#define ARPHRD_EUI64 27 /* EUI-64. */
++#define ARPHRD_INFINIBAND 32 /* InfiniBand. */
+
+ /* Dummy types for non ARP hardware */
+ #define ARPHRD_SLIP 256
+@@ -120,7 +123,7 @@
+ #define ARPHRD_FCPP 784 /* Point to point fibrechanel. */
+ #define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */
+ #define ARPHRD_FCPL 786 /* Fibrechanel public loop. */
+-#define ARPHRD_FCPFABRIC 787 /* Fibrechanel fabric. */
++#define ARPHRD_FCFABRIC 787 /* Fibrechanel fabric. */
+ #define ARPHRD_IEEE802_TR 800 /* Magic type ident for TR. */
+ #define ARPHRD_IEEE80211 801 /* IEEE 802.11. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/netinet/igmp.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/netinet/igmp.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,89 +0,0 @@
+-/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _NETINET_IGMP_H
+-#define _NETINET_IGMP_H 1
+-
+-#include <sys/cdefs.h>
+-#include <sys/types.h>
+-
+-#include <asm/types.h>
+-#include <linux/igmp.h>
+-
+-#ifdef __USE_BSD
+-
+-#include <netinet/in.h>
+-
+-__BEGIN_DECLS
+-
+-/*
+- * Copyright (c) 1988 Stephen Deering.
+- * Copyright (c) 1992, 1993
+- * The Regents of the University of California. All rights reserved.
+- *
+- * This code is derived from software contributed to Berkeley by
+- * Stephen Deering of Stanford University.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- * notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- * notice, this list of conditions and the following disclaimer in the
+- * documentation and/or other materials provided with the distribution.
+- * 4. Neither the name of the University nor the names of its contributors
+- * may be used to endorse or promote products derived from this software
+- * without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+- * SUCH DAMAGE.
+- *
+- * @(#)igmp.h 8.1 (Berkeley) 6/10/93
+- * $FreeBSD$
+- */
+-
+-struct igmp {
+- u_int8_t igmp_type; /* IGMP type */
+- u_int8_t igmp_code; /* routing code */
+- u_int16_t igmp_cksum; /* checksum */
+- struct in_addr igmp_group; /* group address */
+-};
+-
+-/*
+- * Message types, including version number.
+- */
+-#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */
+-#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */
+-#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */
+-#define IGMP_V2_LEAVE_GROUP 0x17 /* Leave-group message */
+-
+-__END_DECLS
+-
+-#endif
+-
+-#endif /* netinet/igmp.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/not-cancel.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/not-cancel.h 2003-09-19 22:37:08.000000000 -0400
+@@ -0,0 +1,60 @@
++/* Uncancelable versions of cancelable interfaces. Linux version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++/* Uncancelable open. */
++#define open_not_cancel(name, flags, mode) \
++ INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
++#define open_not_cancel_2(name, flags) \
++ INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
++
++/* Uncancelable close. */
++#define close_not_cancel(fd) \
++ INLINE_SYSCALL (close, 1, fd)
++#define close_not_cancel_no_status(fd) \
++ (void) ({ INTERNAL_SYSCALL_DECL (err); \
++ INTERNAL_SYSCALL (close, err, 1, (fd)); })
++
++/* Uncancelable read. */
++#define read_not_cancel(fd, buf, n) \
++ INLINE_SYSCALL (read, 3, (fd), (buf), (n))
++
++/* Uncancelable write. */
++#define write_not_cancel(fd, buf, n) \
++ INLINE_SYSCALL (write, 3, (fd), (buf), (n))
++
++/* Uncancelable writev. */
++#define writev_not_cancel_no_status(fd, iov, n) \
++ (void) ({ INTERNAL_SYSCALL_DECL (err); \
++ INTERNAL_SYSCALL (writev, err, 3, (fd), (iov), (n)); })
++
++/* Uncancelable fcntl. */
++#define fcntl_not_cancel(fd, cmd, val) \
++ __fcntl_nocancel (fd, cmd, val)
++
++/* Uncancelable waitpid. */
++#ifdef __NR_waitpid
++# define waitpid_not_cancel(pid, stat_loc, options) \
++ INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options)
++#else
++# define waitpid_not_cancel(pid, stat_loc, options) \
++ INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL)
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.c 2002-10-23 02:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Get file-specific information about a file. Linux version.
+- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995,1996,1998-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,7 +17,10 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <unistd.h>
++#include <errno.h>
+ #include "pathconf.h"
++#include "linux_fsinfo.h"
+
+ static long int posix_pathconf (const char *file, int name);
+
+@@ -35,10 +38,144 @@
+ switch (name)
+ {
+ case _PC_LINK_MAX:
+- return statfs_link_max (__statfs (file, &fsbuf), &fsbuf);
++ return __statfs_link_max (__statfs (file, &fsbuf), &fsbuf);
++
+ case _PC_FILESIZEBITS:
+- return statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf);
++ return __statfs_filesize_max (__statfs (file, &fsbuf), &fsbuf);
++
++ case _PC_2_SYMLINKS:
++ return __statfs_symlinks (__statfs (file, &fsbuf), &fsbuf);
++
+ default:
+ return posix_pathconf (file, name);
+ }
+ }
++
++
++/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
++long int
++__statfs_link_max (int result, const struct statfs *fsbuf)
++{
++ if (result < 0)
++ {
++ if (errno == ENOSYS)
++ /* Not possible, return the default value. */
++ return LINUX_LINK_MAX;
++
++ /* Some error occured. */
++ return -1;
++ }
++
++ switch (fsbuf->f_type)
++ {
++ case EXT2_SUPER_MAGIC:
++ return EXT2_LINK_MAX;
++
++ case MINIX_SUPER_MAGIC:
++ case MINIX_SUPER_MAGIC2:
++ return MINIX_LINK_MAX;
++
++ case MINIX2_SUPER_MAGIC:
++ case MINIX2_SUPER_MAGIC2:
++ return MINIX2_LINK_MAX;
++
++ case XENIX_SUPER_MAGIC:
++ return XENIX_LINK_MAX;
++
++ case SYSV4_SUPER_MAGIC:
++ case SYSV2_SUPER_MAGIC:
++ return SYSV_LINK_MAX;
++
++ case COH_SUPER_MAGIC:
++ return COH_LINK_MAX;
++
++ case UFS_MAGIC:
++ case UFS_CIGAM:
++ return UFS_LINK_MAX;
++
++ case REISERFS_SUPER_MAGIC:
++ return REISERFS_LINK_MAX;
++
++ case XFS_SUPER_MAGIC:
++ return XFS_LINK_MAX;
++
++ default:
++ return LINUX_LINK_MAX;
++ }
++}
++
++
++/* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */
++long int
++__statfs_filesize_max (int result, const struct statfs *fsbuf)
++{
++ if (result < 0)
++ {
++ if (errno == ENOSYS)
++ /* Not possible, return the default value. */
++ return 32;
++
++ /* Some error occured. */
++ return -1;
++ }
++
++ switch (fsbuf->f_type)
++ {
++ case EXT2_SUPER_MAGIC:
++ case UFS_MAGIC:
++ case UFS_CIGAM:
++ case REISERFS_SUPER_MAGIC:
++ case XFS_SUPER_MAGIC:
++ case SMB_SUPER_MAGIC:
++ case NTFS_SUPER_MAGIC:
++ case UDF_SUPER_MAGIC:
++ case JFS_SUPER_MAGIC:
++ case VXFS_SUPER_MAGIC:
++ return 64;
++
++ case MSDOS_SUPER_MAGIC:
++ case JFFS_SUPER_MAGIC:
++ case JFFS2_SUPER_MAGIC:
++ case NCP_SUPER_MAGIC:
++ case ROMFS_SUPER_MAGIC:
++ return 32;
++
++ default:
++ return 32;
++ }
++}
++
++
++/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
++long int
++__statfs_symlinks (int result, const struct statfs *fsbuf)
++{
++ if (result < 0)
++ {
++ if (errno == ENOSYS)
++ /* Not possible, return the default value. */
++ return 1;
++
++ /* Some error occured. */
++ return -1;
++ }
++
++ switch (fsbuf->f_type)
++ {
++ case ADFS_SUPER_MAGIC:
++ case BFS_MAGIC:
++ case CRAMFS_MAGIC:
++ case DEVPTS_SUPER_MAGIC:
++ case EFS_SUPER_MAGIC:
++ case EFS_MAGIC:
++ case MSDOS_SUPER_MAGIC:
++ case NTFS_SUPER_MAGIC:
++ case QNX4_SUPER_MAGIC:
++ case ROMFS_SUPER_MAGIC:
++ /* No symlink support. */
++ return 0;
++
++ default:
++ return 1;
++ }
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.h 2002-10-23 02:21:19.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/pathconf.h 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Common parts of Linux implementation of pathconf and fpathconf.
+- Copyright (C) 1991,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995,1996,1998-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,100 +17,18 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <unistd.h>
+ #include <errno.h>
++#include <unistd.h>
+ #include <sys/statfs.h>
+-#include "linux_fsinfo.h"
++
+
+ /* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
++extern long int __statfs_link_max (int result, const struct statfs *fsbuf);
+
+-static inline long int
+-statfs_link_max (int result, const struct statfs *fsbuf)
+-{
+- if (result < 0)
+- {
+- if (errno == ENOSYS)
+- /* Not possible, return the default value. */
+- return LINUX_LINK_MAX;
+-
+- /* Some error occured. */
+- return -1;
+- }
+-
+- switch (fsbuf->f_type)
+- {
+- case EXT2_SUPER_MAGIC:
+- return EXT2_LINK_MAX;
+-
+- case MINIX_SUPER_MAGIC:
+- case MINIX_SUPER_MAGIC2:
+- return MINIX_LINK_MAX;
+-
+- case MINIX2_SUPER_MAGIC:
+- case MINIX2_SUPER_MAGIC2:
+- return MINIX2_LINK_MAX;
+-
+- case XENIX_SUPER_MAGIC:
+- return XENIX_LINK_MAX;
+-
+- case SYSV4_SUPER_MAGIC:
+- case SYSV2_SUPER_MAGIC:
+- return SYSV_LINK_MAX;
+-
+- case COH_SUPER_MAGIC:
+- return COH_LINK_MAX;
+-
+- case UFS_MAGIC:
+- case UFS_CIGAM:
+- return UFS_LINK_MAX;
+-
+- case REISERFS_SUPER_MAGIC:
+- return REISERFS_LINK_MAX;
+-
+- case XFS_SUPER_MAGIC:
+- return XFS_LINK_MAX;
+-
+- default:
+- return LINUX_LINK_MAX;
+- }
+-}
+
+ /* Used like: return statfs_filesize_max (__statfs (name, &buf), &buf); */
++extern long int __statfs_filesize_max (int result, const struct statfs *fsbuf);
+
+-static inline long int
+-statfs_filesize_max (int result, const struct statfs *fsbuf)
+-{
+- if (result < 0)
+- {
+- if (errno == ENOSYS)
+- /* Not possible, return the default value. */
+- return 32;
+-
+- /* Some error occured. */
+- return -1;
+- }
+-
+- switch (fsbuf->f_type)
+- {
+- case EXT2_SUPER_MAGIC:
+- case UFS_MAGIC:
+- case UFS_CIGAM:
+- case REISERFS_SUPER_MAGIC:
+- case XFS_SUPER_MAGIC:
+- case SMB_SUPER_MAGIC:
+- case NTFS_SUPER_MAGIC:
+- case UDF_SUPER_MAGIC:
+- case JFS_SUPER_MAGIC:
+- return 64;
+-
+- case MSDOS_SUPER_MAGIC:
+- case JFFS_SUPER_MAGIC:
+- case JFFS2_SUPER_MAGIC:
+- case NCP_SUPER_MAGIC:
+- case ROMFS_SUPER_MAGIC:
+- return 32;
+-
+- default:
+- return 32;
+- }
+-}
++
++/* Used like: return statfs_link_max (__statfs (name, &buf), &buf); */
++extern long int __statfs_symlinks (int result, const struct statfs *fsbuf);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/poll.c 2002-12-15 01:01:46.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/poll.c 2003-09-19 22:37:08.000000000 -0400
+@@ -28,9 +28,6 @@
+
+ #if defined __NR_poll || __ASSUME_POLL_SYSCALL > 0
+
+-extern int __syscall_poll (struct pollfd *__unbounded fds,
+- unsigned int nfds, int timeout);
+-
+ # if __ASSUME_POLL_SYSCALL == 0
+ static int __emulate_poll (struct pollfd *fds, nfds_t nfds,
+ int timeout) internal_function;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise.c 2003-02-05 15:56:07.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise.c 2003-08-21 08:37:12.000000000 -0400
+@@ -24,13 +24,17 @@
+ respect to the file associated with FD. */
+
+ int
+-posix_fadvise (int fd, __off_t offset, size_t len, int advise)
++posix_fadvise (int fd, off_t offset, off_t len, int advise)
+ {
+ #ifdef __NR_fadvise64
+- return INLINE_SYSCALL (fadvise64, 5, fd,
+- __LONG_LONG_PAIR (offset >> 31, offset), len, advise);
++ INTERNAL_SYSCALL_DECL (err);
++ int ret = INTERNAL_SYSCALL (fadvise64, err, 5, fd,
++ __LONG_LONG_PAIR (offset >> 31, offset), len,
++ advise);
++ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
++ return INTERNAL_SYSCALL_ERRNO (ret, err);
++ return 0;
+ #else
+- __set_errno (ENOSYS);
+- return -1;
++ return ENOSYS;
+ #endif
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise64.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/posix_fadvise64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -0,0 +1,81 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <fcntl.h>
++#include <sysdep.h>
++#include <kernel-features.h>
++
++int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
++int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
++
++/* Advice the system about the expected behaviour of the application with
++ respect to the file associated with FD. */
++
++int
++__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
++{
++#ifdef __NR_fadvise64_64
++ INTERNAL_SYSCALL_DECL (err);
++ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
++ __LONG_LONG_PAIR ((long) (offset >> 32),
++ (long) offset),
++ __LONG_LONG_PAIR ((long) (len >> 32),
++ (long) len),
++ advise);
++ if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
++ return 0;
++# ifndef __ASSUME_FADVISE64_64_SYSCALL
++ if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
++# endif
++ return INTERNAL_SYSCALL_ERRNO (ret, err);
++#endif
++#ifndef __ASSUME_FADVISE64_64_SYSCALL
++# ifdef __NR_fadvise64
++ if (len != (off_t) len)
++ return EOVERFLOW;
++
++ INTERNAL_SYSCALL_DECL (err2);
++ int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd,
++ __LONG_LONG_PAIR ((long) (offset >> 32),
++ (long) offset),
++ (off_t) len, advise);
++ if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
++ return 0;
++ return INTERNAL_SYSCALL_ERRNO (ret2, err2);
++# else
++ return ENOSYS;
++# endif
++#endif
++}
++
++#include <shlib-compat.h>
++
++#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
++
++int
++__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
++{
++ return __posix_fadvise64_l64 (fd, offset, len, advise);
++}
++
++versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
++compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
++#else
++strong_alias (__posix_fadvise64_l64, posix_fadvise64);
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/Makefile 2002-10-17 13:06:07.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/Makefile 2003-09-19 22:37:10.000000000 -0400
+@@ -1,6 +1 @@
+ 64bit-predefine = __powerpc64__
+-
+-ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending
+-endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2003-02-28 19:07:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2003-03-15 15:02:21.000000000 -0500
+@@ -45,7 +45,6 @@
+ # define O_DIRECT 0400000 /* Direct disk access. */
+ # define O_DIRECTORY 040000 /* Must be a directory. */
+ # define O_NOFOLLOW 0100000 /* Do not follow links. */
+-# define O_DIRECT 0400000 /* Direct disk access. */
+ #endif
+
+ #ifdef __USE_LARGEFILE64
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/PowerPC version.
+- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,11 +52,13 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x0080 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x0040 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x00080 /* Lock the mapping. */
++# define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/stat.h 2003-01-12 03:09:45.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/stat.h 2003-08-21 08:37:17.000000000 -0400
+@@ -235,6 +235,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/termios.h 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/bits/termios.h 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1999, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1999,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -40,6 +40,8 @@
+ cc_t c_cc[NCCS]; /* control characters */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
++#define _HAVE_STRUCT_TERMIOS_C_ISPEED 1
++#define _HAVE_STRUCT_TERMIOS_C_OSPEED 1
+ };
+
+ /* c_cc characters */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/chown.c 2002-11-05 03:13:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/chown.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* chown() compatibility.
+- Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,9 +31,6 @@
+ This file emulates chown() under the old kernels.
+ */
+
+-extern int __syscall_chown (const char *__file __unbounded,
+- uid_t __owner, gid_t __group);
+-
+ int
+ __chown (const char *file, uid_t owner, gid_t group)
+ {
+@@ -42,7 +39,7 @@
+ char link[PATH_MAX+2];
+ char path[2*PATH_MAX+4];
+ int loopct;
+- int filelen;
++ size_t filelen;
+ static int libc_old_chown = 0 /* -1=old linux, 1=new linux, 0=unknown */;
+
+ if (libc_old_chown == 1)
+@@ -82,7 +79,7 @@
+ ENAMETOOLONG before this, usually. */
+ for (loopct = 0; loopct < 128; loopct++)
+ {
+- int linklen;
++ size_t linklen;
+
+ if (err >= PATH_MAX+1)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-cache.h 2003-06-25 04:03:30.000000000 -0400
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2002-08-23 15:47:00.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c 2003-03-18 16:46:10.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Operating system support for run-time dynamic linker. Linux/PPC version.
+- Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,27 +25,18 @@
+ extern int __cache_line_size;
+ weak_extern (__cache_line_size)
+
+-#define DL_PLATFORM_INIT __aux_init_cache(_dl_auxv)
+-
+ /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
+ verify that the static extern __cache_line_size is defined by checking
+- for not NULL. If it is defined then assign the cache block size
++ for not NULL. If it is defined then assign the cache block size
+ value to __cache_line_size. */
+-static inline void
+-__aux_init_cache (ElfW(auxv_t) *av)
+-{
+- for (; av->a_type != AT_NULL; ++av)
+- switch (av->a_type)
+- {
+- case AT_DCACHEBSIZE:
+- {
+- int *cls = & __cache_line_size;
+- if (cls != NULL)
+- *cls = av->a_un.a_val;
+- }
+- break;
+- }
+-}
++#define DL_PLATFORM_AUXV \
++ case AT_DCACHEBSIZE: \
++ { \
++ int *cls = & __cache_line_size; \
++ if (cls != NULL) \
++ *cls = av->a_un.a_val; \
++ } \
++ break;
+
+ #ifndef __ASSUME_STD_AUXV
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/ioctl.c 2002-11-05 03:13:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/ioctl.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,8 +25,6 @@
+ /* The user-visible size of struct termios has changed. Catch ioctl calls
+ using the new-style struct termios, and translate them to old-style. */
+
+-extern int __syscall_ioctl (int fd, unsigned long int request, ...);
+-
+ int
+ __ioctl (int fd, unsigned long int request, ...)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions 2002-08-23 15:47:00.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions 2003-09-19 22:37:10.000000000 -0400
+@@ -20,4 +20,7 @@
+ # s*
+ scandir64;
+ }
++ GLIBC_2.3.3 {
++ posix_fadvise64; posix_fallocate64;
++ }
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S 2002-08-03 22:20:06.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S 2003-08-21 08:37:17.000000000 -0400
+@@ -20,6 +20,7 @@
+ #include <sysdep.h>
+ #define _ERRNO_H 1
+ #include <bits/errno.h>
++#include <kernel-features.h>
+ #include <bp-sym.h>
+ #include <bp-asm.h>
+
+@@ -28,7 +29,8 @@
+ all the freaky stuff we have to do to make the call useful. */
+
+ /* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
+- int flags [r5], void *arg [r6]); */
++ int flags [r5], void *arg [r6], void *parent_tid [r7],
++ void *tls [r8], void *child_tid [r9]); */
+
+ ENTRY (BP_SYM (__clone))
+ /* GKM FIXME: add bounds checks, where sensible. */
+@@ -43,7 +45,11 @@
+
+ /* Set up stack frame for parent. */
+ stwu r1,-32(r1)
++#ifndef __ASSUME_FIXED_CLONE_SYSCALL
+ stmw r29,16(r1)
++#else
++ stmw r30,16(r1)
++#endif
+
+ /* Set up stack frame for child. */
+ clrrwi r4,r4,4
+@@ -51,14 +57,21 @@
+ stwu r0,-16(r4)
+
+ /* Save fn, args, stack across syscall. */
+- mr r29,r3 /* Function in r29. */
+- mr r30,r4 /* Stack pointer in r30. */
++ mr r30,r3 /* Function in r30. */
++#ifndef __ASSUME_FIXED_CLONE_SYSCALL
++ mr r29,r4 /* Stack pointer in r29. */
++#endif
+ mr r31,r6 /* Argument in r31. */
+
+ /* 'flags' argument is first parameter to clone syscall. (The other
+ argument is the stack pointer, already in r4.) */
+ mr r3,r5
+
++ /* Move the parent_tid, child_tid and tls arguments. */
++ mr r5,r7
++ mr r6,r8
++ mr r7,r9
++
+ /* Do the call. */
+ DO_CALL(SYS_ify(clone))
+
+@@ -67,13 +80,16 @@
+ crandc cr1*4+eq,cr1*4+eq,cr0*4+so
+ bne- cr1,L(parent) /* The '-' is to minimise the race. */
+
++#ifndef __ASSUME_FIXED_CLONE_SYSCALL
+ /* On at least mklinux DR3a5, clone() doesn't actually change
+ the stack pointer. I'm pretty sure this is a bug, because
+ it adds a race condition if a signal is sent to a thread
+ just after it is created (in the previous three instructions). */
+- mr r1,r30
++ mr r1,r29
++#endif
++
+ /* Call procedure. */
+- mtctr r29
++ mtctr r30
+ mr r3,r31
+ bctrl
+ /* Call _exit with result from procedure. */
+@@ -81,7 +97,11 @@
+
+ L(parent):
+ /* Parent. Restore registers & return. */
++#ifndef __ASSUME_FIXED_CLONE_SYSCALL
+ lmw r29,16(r1)
++#else
++ lmw r30,16(r1)
++#endif
+ addi r1,r1,32
+ bnslr+
+ b JUMPTARGET(__syscall_error)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 2003-06-17 23:36:23.000000000 -0400
+@@ -0,0 +1,126 @@
++/* Save current context.
++ Copyright (C) 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++ENTRY(__getcontext)
++ stw r0,_UC_GREGS+(PT_R0*4)(r3)
++ stw r1,_UC_GREGS+(PT_R1*4)(r3)
++ mflr r0
++ stwu r1,-16(r1)
++ stw r0,20(r1)
++ stw r0,_UC_GREGS+(PT_LNK*4)(r3)
++ stw r0,_UC_GREGS+(PT_NIP*4)(r3)
++ stw r2,_UC_GREGS+(PT_R2*4)(r3)
++ stw r4,_UC_GREGS+(PT_R4*4)(r3)
++ stw r5,_UC_GREGS+(PT_R5*4)(r3)
++ stw r6,_UC_GREGS+(PT_R6*4)(r3)
++ stw r7,_UC_GREGS+(PT_R7*4)(r3)
++ stw r8,_UC_GREGS+(PT_R8*4)(r3)
++ stw r9,_UC_GREGS+(PT_R9*4)(r3)
++ stw r10,_UC_GREGS+(PT_R10*4)(r3)
++ stw r11,_UC_GREGS+(PT_R11*4)(r3)
++ stw r12,_UC_GREGS+(PT_R12*4)(r3)
++ stw r13,_UC_GREGS+(PT_R13*4)(r3)
++ stw r14,_UC_GREGS+(PT_R14*4)(r3)
++ stw r15,_UC_GREGS+(PT_R15*4)(r3)
++ stw r16,_UC_GREGS+(PT_R16*4)(r3)
++ stw r17,_UC_GREGS+(PT_R17*4)(r3)
++ stw r18,_UC_GREGS+(PT_R18*4)(r3)
++ stw r19,_UC_GREGS+(PT_R19*4)(r3)
++ stw r20,_UC_GREGS+(PT_R20*4)(r3)
++ stw r21,_UC_GREGS+(PT_R21*4)(r3)
++ stw r22,_UC_GREGS+(PT_R22*4)(r3)
++ stw r23,_UC_GREGS+(PT_R23*4)(r3)
++ stw r24,_UC_GREGS+(PT_R24*4)(r3)
++ stw r25,_UC_GREGS+(PT_R25*4)(r3)
++ stw r26,_UC_GREGS+(PT_R26*4)(r3)
++ stw r27,_UC_GREGS+(PT_R27*4)(r3)
++ stw r28,_UC_GREGS+(PT_R28*4)(r3)
++ stw r29,_UC_GREGS+(PT_R29*4)(r3)
++ stw r30,_UC_GREGS+(PT_R30*4)(r3)
++ stw r31,_UC_GREGS+(PT_R31*4)(r3)
++ mfctr r0
++ stw r0,_UC_GREGS+(PT_CTR*4)(r3)
++ mfxer r0
++ stw r0,_UC_GREGS+(PT_XER*4)(r3)
++ mfcr r0
++ stw r0,_UC_GREGS+(PT_CCR*4)(r3)
++
++ /* Set the return value of getcontext to "success". R3 is the only
++ register whose value is not preserved in the saved context. */
++ li r0,0
++ stw r0,_UC_GREGS+(PT_R3*4)(r3)
++
++ /* Zero fill fields that can't be set in user state. */
++ stw r0,_UC_GREGS+(PT_MSR*4)(r3)
++ stw r0,_UC_GREGS+(PT_MQ*4)(r3)
++
++ /* Save the floating-point registers */
++ stfd fp0,_UC_FREGS+(0*8)(r3)
++ stfd fp1,_UC_FREGS+(1*8)(r3)
++ stfd fp2,_UC_FREGS+(2*8)(r3)
++ stfd fp3,_UC_FREGS+(3*8)(r3)
++ stfd fp4,_UC_FREGS+(4*8)(r3)
++ stfd fp5,_UC_FREGS+(5*8)(r3)
++ stfd fp6,_UC_FREGS+(6*8)(r3)
++ stfd fp7,_UC_FREGS+(7*8)(r3)
++ stfd fp8,_UC_FREGS+(8*8)(r3)
++ stfd fp9,_UC_FREGS+(9*8)(r3)
++ stfd fp10,_UC_FREGS+(10*8)(r3)
++ stfd fp11,_UC_FREGS+(11*8)(r3)
++ stfd fp12,_UC_FREGS+(12*8)(r3)
++ stfd fp13,_UC_FREGS+(13*8)(r3)
++ stfd fp14,_UC_FREGS+(14*8)(r3)
++ stfd fp15,_UC_FREGS+(15*8)(r3)
++ stfd fp16,_UC_FREGS+(16*8)(r3)
++ stfd fp17,_UC_FREGS+(17*8)(r3)
++ stfd fp18,_UC_FREGS+(18*8)(r3)
++ stfd fp19,_UC_FREGS+(19*8)(r3)
++ stfd fp20,_UC_FREGS+(20*8)(r3)
++ stfd fp21,_UC_FREGS+(21*8)(r3)
++ stfd fp22,_UC_FREGS+(22*8)(r3)
++ stfd fp23,_UC_FREGS+(23*8)(r3)
++ stfd fp24,_UC_FREGS+(24*8)(r3)
++ stfd fp25,_UC_FREGS+(25*8)(r3)
++ stfd fp26,_UC_FREGS+(26*8)(r3)
++ stfd fp27,_UC_FREGS+(27*8)(r3)
++ stfd fp28,_UC_FREGS+(28*8)(r3)
++ stfd fp29,_UC_FREGS+(29*8)(r3)
++ mffs fp0
++ stfd fp30,_UC_FREGS+(30*8)(r3)
++ stfd fp31,_UC_FREGS+(31*8)(r3)
++ stfd fp0,_UC_FREGS+(32*8)(r3)
++
++ addi r5,r3,_UC_SIGMASK
++ li r4,0
++ li r3,SIG_BLOCK
++ bl JUMPTARGET(sigprocmask)
++
++ lwz r0,20(r1)
++ addi r1,r1,16
++ mtlr r0
++ blr
++PSEUDO_END(__getcontext)
++
++weak_alias(__getcontext, getcontext)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2003-06-17 23:36:38.000000000 -0400
+@@ -0,0 +1,105 @@
++/* Set up a context to call a function.
++ Copyright (C) 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++ENTRY(__makecontext)
++ /* Set up the first 7 args to the function in its registers */
++ stw r6,_UC_GREGS+(PT_R3*4)(r3)
++ stw r7,_UC_GREGS+(PT_R4*4)(r3)
++ stw r8,_UC_GREGS+(PT_R5*4)(r3)
++ stw r9,_UC_GREGS+(PT_R6*4)(r3)
++ stw r10,_UC_GREGS+(PT_R7*4)(r3)
++ lwz r8,8(r1)
++ lwz r9,12(r1)
++ stw r8,_UC_GREGS+(PT_R8*4)(r3)
++ stw r9,_UC_GREGS+(PT_R9*4)(r3)
++
++ /* Set the NIP to the start of the function */
++ stw r4,_UC_GREGS+(PT_NIP*4)(r3)
++
++ /* Set the function's r31 to ucp->uc_link for the exitcode below. */
++ lwz r7,_UC_LINK(r3)
++ stw r7,_UC_GREGS+(PT_R31*4)(r3)
++
++ /* Set the function's LR to point to the exitcode below. */
++#ifdef PIC
++ mflr r0
++ bl 1f
++1: mflr r6
++ addi r6,r6,L(exitcode)-1b
++ mtlr r0
++#else
++ lis r6,L(exitcode)@ha
++ addi r6,r6,L(exitcode)@l
++#endif
++ stw r6,_UC_GREGS+(PT_LNK*4)(r3)
++
++ /*
++ * Set up the stack frame for the function.
++ * If we have more than 5 args to the function (8 args to makecontext),
++ * there will be some arguments on the stack which have to end up
++ * in registers. If there are more than 8 args to the function,
++ * we have to copy (argc - 8) args from our stack to the functions'
++ * stack (and allow space for them in the frame).
++ */
++ lwz r4,_UC_STACK_SP(r3)
++ lwz r8,_UC_STACK_SIZE(r3)
++ add r4,r4,r8
++ rlwinm r4,r4,0,0,27 /* round down to 16-byte boundary */
++ addi r7,r4,-16 /* stack frame for fn's caller */
++ cmpwi r5,8
++ blt 2f /* less than 8 args is easy */
++ lwz r10,16(r1)
++ stw r10,_UC_GREGS+(PT_R10*4)(r3)
++ beq 2f /* if exactly 8 args */
++ subi r9,r5,3
++ subi r5,r5,8
++ rlwinm r9,r9,2,0,27
++ subf r7,r9,r4
++ mtctr r5 /* copy the 9th and following args */
++ addi r6,r1,16
++ addi r8,r7,4
++3: lwzu r10,4(r6)
++ stwu r10,4(r8)
++ bdnz 3b
++2: stw r7,_UC_GREGS+(PT_R1*4)(r3)
++ li r6,0
++ stw r6,0(r7)
++
++ blr
++
++/*
++ * If the function returns, it comes here. We put ucp->uc_link in
++ * r31, which is a callee-saved register. We have to continue with
++ * the context that r31 points to, or exit if it is 0.
++ */
++L(exitcode):
++ mr. r3,r31
++ beq 4f
++ bl JUMPTARGET(__setcontext)
++4: bl HIDDEN_JUMPTARGET(exit)
++ b 4b
++
++END(__makecontext)
++weak_alias(__makecontext, makecontext)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise.c 2003-09-01 20:39:23.000000000 -0400
+@@ -0,0 +1,40 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <fcntl.h>
++#include <sysdep.h>
++
++/* Advice the system about the expected behaviour of the application with
++ respect to the file associated with FD. */
++
++int
++posix_fadvise (int fd, off_t offset, off_t len, int advise)
++{
++#ifdef __NR_fadvise64
++ INTERNAL_SYSCALL_DECL (err);
++ int ret = INTERNAL_SYSCALL (fadvise64, err, 6, fd, 0,
++ __LONG_LONG_PAIR (offset >> 31, offset), len,
++ advise);
++ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
++ return INTERNAL_SYSCALL_ERRNO (ret, err);
++ return 0;
++#else
++ return ENOSYS;
++#endif
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/posix_fadvise64.c 2003-09-01 20:39:37.000000000 -0400
+@@ -0,0 +1,77 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <fcntl.h>
++#include <sysdep.h>
++#include <kernel-features.h>
++
++int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
++int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
++
++/* Advice the system about the expected behaviour of the application with
++ respect to the file associated with FD. */
++
++int
++__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
++{
++#ifdef __NR_fadvise64_64
++ INTERNAL_SYSCALL_DECL (err);
++ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advise,
++ __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
++ __LONG_LONG_PAIR ((long)(len >> 32), (long)len));
++ if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
++ return 0;
++# ifndef __ASSUME_FADVISE64_64_SYSCALL
++ if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
++# endif
++ return INTERNAL_SYSCALL_ERRNO (ret, err);
++#endif
++#ifndef __ASSUME_FADVISE64_64_SYSCALL
++# ifdef __NR_fadvise64
++ if (len != (off_t) len)
++ return EOVERFLOW;
++
++ INTERNAL_SYSCALL_DECL (err2);
++ int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 6, fd, 0,
++ __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
++ (off_t) len, advise);
++ if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
++ return 0;
++ return INTERNAL_SYSCALL_ERRNO (ret2, err2);
++# else
++ return ENOSYS;
++# endif
++#endif
++}
++
++#include <shlib-compat.h>
++
++#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
++
++int
++__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
++{
++ return __posix_fadvise64_l64 (fd, offset, len, advise);
++}
++
++versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
++compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
++#else
++strong_alias (__posix_fadvise64_l64, posix_fadvise64);
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S 2003-06-17 23:36:57.000000000 -0400
+@@ -0,0 +1,149 @@
++/* Jump to a new context.
++ Copyright (C) 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++ENTRY(__setcontext)
++ mflr r0
++ stwu r1,-16(r1)
++ stw r0,20(r1)
++ stw r31,12(r1)
++ mr r31,r3
++
++ /*
++ * If this ucontext refers to the point where we were interrupted
++ * by a signal, we have to use the rt_sigreturn system call to
++ * return to the context so we get both LR and CTR restored.
++ *
++ * Otherwise, the context we are restoring is either just after
++ * a procedure call (getcontext/swapcontext) or at the beginning
++ * of a procedure call (makecontext), so we don't need to restore
++ * r0, xer, ctr. We don't restore r2 since it will be used as
++ * the TLS pointer.
++ */
++ lwz r0,_UC_GREGS+(PT_MSR*4)(r31)
++ cmpwi r0,0
++ bne L(do_sigret)
++
++ /* Restore the signal mask */
++ li r5,0
++ addi r4,r3,_UC_SIGMASK
++ li r3,SIG_SETMASK
++ bl JUMPTARGET(sigprocmask)
++ cmpwi r3,0
++ bne L(error_exit)
++
++ /* Restore the floating-point registers */
++ lfd fp31,_UC_FREGS+(32*8)(r31)
++ lfd fp0,_UC_FREGS+(0*8)(r31)
++ mtfsf 0xff,fp31
++ lfd fp1,_UC_FREGS+(1*8)(r31)
++ lfd fp2,_UC_FREGS+(2*8)(r31)
++ lfd fp3,_UC_FREGS+(3*8)(r31)
++ lfd fp4,_UC_FREGS+(4*8)(r31)
++ lfd fp5,_UC_FREGS+(5*8)(r31)
++ lfd fp6,_UC_FREGS+(6*8)(r31)
++ lfd fp7,_UC_FREGS+(7*8)(r31)
++ lfd fp8,_UC_FREGS+(8*8)(r31)
++ lfd fp9,_UC_FREGS+(9*8)(r31)
++ lfd fp10,_UC_FREGS+(10*8)(r31)
++ lfd fp11,_UC_FREGS+(11*8)(r31)
++ lfd fp12,_UC_FREGS+(12*8)(r31)
++ lfd fp13,_UC_FREGS+(13*8)(r31)
++ lfd fp14,_UC_FREGS+(14*8)(r31)
++ lfd fp15,_UC_FREGS+(15*8)(r31)
++ lfd fp16,_UC_FREGS+(16*8)(r31)
++ lfd fp17,_UC_FREGS+(17*8)(r31)
++ lfd fp18,_UC_FREGS+(18*8)(r31)
++ lfd fp19,_UC_FREGS+(19*8)(r31)
++ lfd fp20,_UC_FREGS+(20*8)(r31)
++ lfd fp21,_UC_FREGS+(21*8)(r31)
++ lfd fp22,_UC_FREGS+(22*8)(r31)
++ lfd fp23,_UC_FREGS+(23*8)(r31)
++ lfd fp24,_UC_FREGS+(24*8)(r31)
++ lfd fp25,_UC_FREGS+(25*8)(r31)
++ lfd fp26,_UC_FREGS+(26*8)(r31)
++ lfd fp27,_UC_FREGS+(27*8)(r31)
++ lfd fp28,_UC_FREGS+(28*8)(r31)
++ lfd fp29,_UC_FREGS+(29*8)(r31)
++ lfd fp30,_UC_FREGS+(30*8)(r31)
++ lfd fp31,_UC_FREGS+(31*8)(r31)
++
++ /* Restore LR and CCR, and set CTR to the NIP value */
++ lwz r3,_UC_GREGS+(PT_LNK*4)(r31)
++ lwz r4,_UC_GREGS+(PT_NIP*4)(r31)
++ lwz r5,_UC_GREGS+(PT_CCR*4)(r31)
++ mtlr r3
++ mtctr r4
++ mtcr r5
++
++ /* Restore the general registers */
++ lwz r1,_UC_GREGS+(PT_R1*4)(r31)
++ lwz r3,_UC_GREGS+(PT_R3*4)(r31)
++ lwz r4,_UC_GREGS+(PT_R4*4)(r31)
++ lwz r5,_UC_GREGS+(PT_R5*4)(r31)
++ lwz r6,_UC_GREGS+(PT_R6*4)(r31)
++ lwz r7,_UC_GREGS+(PT_R7*4)(r31)
++ lwz r8,_UC_GREGS+(PT_R8*4)(r31)
++ lwz r9,_UC_GREGS+(PT_R9*4)(r31)
++ lwz r10,_UC_GREGS+(PT_R10*4)(r31)
++ lwz r11,_UC_GREGS+(PT_R11*4)(r31)
++ lwz r12,_UC_GREGS+(PT_R12*4)(r31)
++ lwz r13,_UC_GREGS+(PT_R13*4)(r31)
++ lwz r14,_UC_GREGS+(PT_R14*4)(r31)
++ lwz r15,_UC_GREGS+(PT_R15*4)(r31)
++ lwz r16,_UC_GREGS+(PT_R16*4)(r31)
++ lwz r17,_UC_GREGS+(PT_R17*4)(r31)
++ lwz r18,_UC_GREGS+(PT_R18*4)(r31)
++ lwz r19,_UC_GREGS+(PT_R19*4)(r31)
++ lwz r20,_UC_GREGS+(PT_R20*4)(r31)
++ lwz r21,_UC_GREGS+(PT_R21*4)(r31)
++ lwz r22,_UC_GREGS+(PT_R22*4)(r31)
++ lwz r23,_UC_GREGS+(PT_R23*4)(r31)
++ lwz r24,_UC_GREGS+(PT_R24*4)(r31)
++ lwz r25,_UC_GREGS+(PT_R25*4)(r31)
++ lwz r26,_UC_GREGS+(PT_R26*4)(r31)
++ lwz r27,_UC_GREGS+(PT_R27*4)(r31)
++ lwz r28,_UC_GREGS+(PT_R28*4)(r31)
++ lwz r29,_UC_GREGS+(PT_R29*4)(r31)
++ lwz r30,_UC_GREGS+(PT_R30*4)(r31)
++ lwz r31,_UC_GREGS+(PT_R31*4)(r31)
++
++ bctr
++
++L(error_exit):
++ lwz r31,12(r1)
++ lwz r0,20(r1)
++ addi r1,r1,16
++ mtlr r0
++ blr
++
++L(do_sigret):
++ addi r1,r3,-0xd0
++ li r0,SYS_ify(rt_sigreturn)
++ sc
++ /* NOTREACHED */
++
++PSEUDO_END(__setcontext)
++
++weak_alias(__setcontext, setcontext)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2003-01-06 19:20:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S 2003-08-21 08:37:17.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1996, 1997, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -47,7 +47,9 @@
+
+ .text
+ ENTRY(__socket)
++ cfi_startproc
+ stwu r1,-48(r1)
++ cfi_adjust_cfa_offset(48)
+ #if NARGS >= 1
+ stw r3,stackblock(r1)
+ #endif
+@@ -91,6 +93,7 @@
+ .Lsocket_cancel:
+ mflr r9
+ stw r9,52(r1)
++ cfi_offset (lr, 4)
+ CENABLE
+ stw r3,16(r1)
+ li r3,P(SOCKOP_,socket)
+@@ -109,6 +112,7 @@
+ addi r1,r1,48
+ PSEUDO_RET
+ #endif
++ cfi_endproc
+
+ PSEUDO_END (__socket)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 2003-06-17 23:37:19.000000000 -0400
+@@ -0,0 +1,233 @@
++/* Save current context and jump to a new context.
++ Copyright (C) 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++
++#define __ASSEMBLY__
++#include <asm/ptrace.h>
++#include "ucontext_i.h"
++
++ENTRY(__swapcontext)
++ /* Save the current context */
++ stw r0,_UC_GREGS+(PT_R0*4)(r3)
++ stw r1,_UC_GREGS+(PT_R1*4)(r3)
++ mflr r0
++ stwu r1,-16(r1)
++ stw r0,20(r1)
++ stw r31,12(r1)
++ stw r31,_UC_GREGS+(PT_R31*4)(r3)
++ mr r31,r4 /* new context pointer */
++ stw r0,_UC_GREGS+(PT_LNK*4)(r3)
++ stw r0,_UC_GREGS+(PT_NIP*4)(r3)
++ stw r2,_UC_GREGS+(PT_R2*4)(r3)
++ stw r4,_UC_GREGS+(PT_R4*4)(r3)
++ stw r5,_UC_GREGS+(PT_R5*4)(r3)
++ stw r6,_UC_GREGS+(PT_R6*4)(r3)
++ stw r7,_UC_GREGS+(PT_R7*4)(r3)
++ stw r8,_UC_GREGS+(PT_R8*4)(r3)
++ stw r9,_UC_GREGS+(PT_R9*4)(r3)
++ stw r10,_UC_GREGS+(PT_R10*4)(r3)
++ stw r11,_UC_GREGS+(PT_R11*4)(r3)
++ stw r12,_UC_GREGS+(PT_R12*4)(r3)
++ stw r13,_UC_GREGS+(PT_R13*4)(r3)
++ stw r14,_UC_GREGS+(PT_R14*4)(r3)
++ stw r15,_UC_GREGS+(PT_R15*4)(r3)
++ stw r16,_UC_GREGS+(PT_R16*4)(r3)
++ stw r17,_UC_GREGS+(PT_R17*4)(r3)
++ stw r18,_UC_GREGS+(PT_R18*4)(r3)
++ stw r19,_UC_GREGS+(PT_R19*4)(r3)
++ stw r20,_UC_GREGS+(PT_R20*4)(r3)
++ stw r21,_UC_GREGS+(PT_R21*4)(r3)
++ stw r22,_UC_GREGS+(PT_R22*4)(r3)
++ stw r23,_UC_GREGS+(PT_R23*4)(r3)
++ stw r24,_UC_GREGS+(PT_R24*4)(r3)
++ stw r25,_UC_GREGS+(PT_R25*4)(r3)
++ stw r26,_UC_GREGS+(PT_R26*4)(r3)
++ stw r27,_UC_GREGS+(PT_R27*4)(r3)
++ stw r28,_UC_GREGS+(PT_R28*4)(r3)
++ stw r29,_UC_GREGS+(PT_R29*4)(r3)
++ stw r30,_UC_GREGS+(PT_R30*4)(r3)
++ mfctr r0
++ stw r0,_UC_GREGS+(PT_CTR*4)(r3)
++ mfxer r0
++ stw r0,_UC_GREGS+(PT_XER*4)(r3)
++ mfcr r0
++ stw r0,_UC_GREGS+(PT_CCR*4)(r3)
++
++ /* Set the return value of swapcontext to "success". R3 is the only
++ register whose value is not preserved in the saved context. */
++ li r0,0
++ stw r0,_UC_GREGS+(PT_R3*4)(r3)
++
++ /* Zero fill fields that can't be set in user state. */
++ stw r0,_UC_GREGS+(PT_MSR*4)(r3)
++ stw r0,_UC_GREGS+(PT_MQ*4)(r3)
++
++ /* Save the floating-point registers */
++ stfd fp0,_UC_FREGS+(0*8)(r3)
++ stfd fp1,_UC_FREGS+(1*8)(r3)
++ stfd fp2,_UC_FREGS+(2*8)(r3)
++ stfd fp3,_UC_FREGS+(3*8)(r3)
++ stfd fp4,_UC_FREGS+(4*8)(r3)
++ stfd fp5,_UC_FREGS+(5*8)(r3)
++ stfd fp6,_UC_FREGS+(6*8)(r3)
++ stfd fp7,_UC_FREGS+(7*8)(r3)
++ stfd fp8,_UC_FREGS+(8*8)(r3)
++ stfd fp9,_UC_FREGS+(9*8)(r3)
++ stfd fp10,_UC_FREGS+(10*8)(r3)
++ stfd fp11,_UC_FREGS+(11*8)(r3)
++ stfd fp12,_UC_FREGS+(12*8)(r3)
++ stfd fp13,_UC_FREGS+(13*8)(r3)
++ stfd fp14,_UC_FREGS+(14*8)(r3)
++ stfd fp15,_UC_FREGS+(15*8)(r3)
++ stfd fp16,_UC_FREGS+(16*8)(r3)
++ stfd fp17,_UC_FREGS+(17*8)(r3)
++ stfd fp18,_UC_FREGS+(18*8)(r3)
++ stfd fp19,_UC_FREGS+(19*8)(r3)
++ stfd fp20,_UC_FREGS+(20*8)(r3)
++ stfd fp21,_UC_FREGS+(21*8)(r3)
++ stfd fp22,_UC_FREGS+(22*8)(r3)
++ stfd fp23,_UC_FREGS+(23*8)(r3)
++ stfd fp24,_UC_FREGS+(24*8)(r3)
++ stfd fp25,_UC_FREGS+(25*8)(r3)
++ stfd fp26,_UC_FREGS+(26*8)(r3)
++ stfd fp27,_UC_FREGS+(27*8)(r3)
++ stfd fp28,_UC_FREGS+(28*8)(r3)
++ stfd fp29,_UC_FREGS+(29*8)(r3)
++ mffs fp0
++ stfd fp30,_UC_FREGS+(30*8)(r3)
++ stfd fp31,_UC_FREGS+(31*8)(r3)
++ stfd fp0,_UC_FREGS+(32*8)(r3)
++
++ addi r5,r3,_UC_SIGMASK
++ addi r4,r4,_UC_SIGMASK
++ li r3,SIG_SETMASK
++ bl JUMPTARGET(sigprocmask)
++ cmpwi r3,0
++ bne L(error_exit)
++
++ /*
++ * If the new ucontext refers to the point where we were interrupted
++ * by a signal, we have to use the rt_sigreturn system call to
++ * return to the context so we get both LR and CTR restored.
++ *
++ * Otherwise, the context we are restoring is either just after
++ * a procedure call (getcontext/swapcontext) or at the beginning
++ * of a procedure call (makecontext), so we don't need to restore
++ * r0, xer, ctr. We don't restore r2 since it will be used as
++ * the TLS pointer.
++ */
++ lwz r0,_UC_GREGS+(PT_MSR*4)(r31)
++ cmpwi r0,0
++ bne L(do_sigret)
++
++ /* Restore the floating-point registers */
++ lfd fp31,_UC_FREGS+(32*8)(r31)
++ lfd fp0,_UC_FREGS+(0*8)(r31)
++ mtfsf 0xff,fp31
++ lfd fp1,_UC_FREGS+(1*8)(r31)
++ lfd fp2,_UC_FREGS+(2*8)(r31)
++ lfd fp3,_UC_FREGS+(3*8)(r31)
++ lfd fp4,_UC_FREGS+(4*8)(r31)
++ lfd fp5,_UC_FREGS+(5*8)(r31)
++ lfd fp6,_UC_FREGS+(6*8)(r31)
++ lfd fp7,_UC_FREGS+(7*8)(r31)
++ lfd fp8,_UC_FREGS+(8*8)(r31)
++ lfd fp9,_UC_FREGS+(9*8)(r31)
++ lfd fp10,_UC_FREGS+(10*8)(r31)
++ lfd fp11,_UC_FREGS+(11*8)(r31)
++ lfd fp12,_UC_FREGS+(12*8)(r31)
++ lfd fp13,_UC_FREGS+(13*8)(r31)
++ lfd fp14,_UC_FREGS+(14*8)(r31)
++ lfd fp15,_UC_FREGS+(15*8)(r31)
++ lfd fp16,_UC_FREGS+(16*8)(r31)
++ lfd fp17,_UC_FREGS+(17*8)(r31)
++ lfd fp18,_UC_FREGS+(18*8)(r31)
++ lfd fp19,_UC_FREGS+(19*8)(r31)
++ lfd fp20,_UC_FREGS+(20*8)(r31)
++ lfd fp21,_UC_FREGS+(21*8)(r31)
++ lfd fp22,_UC_FREGS+(22*8)(r31)
++ lfd fp23,_UC_FREGS+(23*8)(r31)
++ lfd fp24,_UC_FREGS+(24*8)(r31)
++ lfd fp25,_UC_FREGS+(25*8)(r31)
++ lfd fp26,_UC_FREGS+(26*8)(r31)
++ lfd fp27,_UC_FREGS+(27*8)(r31)
++ lfd fp28,_UC_FREGS+(28*8)(r31)
++ lfd fp29,_UC_FREGS+(29*8)(r31)
++ lfd fp30,_UC_FREGS+(30*8)(r31)
++ lfd fp31,_UC_FREGS+(31*8)(r31)
++
++ /* Restore LR and CCR, and set CTR to the NIP value */
++ lwz r3,_UC_GREGS+(PT_LNK*4)(r31)
++ lwz r4,_UC_GREGS+(PT_NIP*4)(r31)
++ lwz r5,_UC_GREGS+(PT_CCR*4)(r31)
++ mtlr r3
++ mtctr r4
++ mtcr r5
++
++ /* Restore the general registers */
++ lwz r1,_UC_GREGS+(PT_R1*4)(r31)
++ lwz r3,_UC_GREGS+(PT_R3*4)(r31)
++ lwz r4,_UC_GREGS+(PT_R4*4)(r31)
++ lwz r5,_UC_GREGS+(PT_R5*4)(r31)
++ lwz r6,_UC_GREGS+(PT_R6*4)(r31)
++ lwz r7,_UC_GREGS+(PT_R7*4)(r31)
++ lwz r8,_UC_GREGS+(PT_R8*4)(r31)
++ lwz r9,_UC_GREGS+(PT_R9*4)(r31)
++ lwz r10,_UC_GREGS+(PT_R10*4)(r31)
++ lwz r11,_UC_GREGS+(PT_R11*4)(r31)
++ lwz r12,_UC_GREGS+(PT_R12*4)(r31)
++ lwz r13,_UC_GREGS+(PT_R13*4)(r31)
++ lwz r14,_UC_GREGS+(PT_R14*4)(r31)
++ lwz r15,_UC_GREGS+(PT_R15*4)(r31)
++ lwz r16,_UC_GREGS+(PT_R16*4)(r31)
++ lwz r17,_UC_GREGS+(PT_R17*4)(r31)
++ lwz r18,_UC_GREGS+(PT_R18*4)(r31)
++ lwz r19,_UC_GREGS+(PT_R19*4)(r31)
++ lwz r20,_UC_GREGS+(PT_R20*4)(r31)
++ lwz r21,_UC_GREGS+(PT_R21*4)(r31)
++ lwz r22,_UC_GREGS+(PT_R22*4)(r31)
++ lwz r23,_UC_GREGS+(PT_R23*4)(r31)
++ lwz r24,_UC_GREGS+(PT_R24*4)(r31)
++ lwz r25,_UC_GREGS+(PT_R25*4)(r31)
++ lwz r26,_UC_GREGS+(PT_R26*4)(r31)
++ lwz r27,_UC_GREGS+(PT_R27*4)(r31)
++ lwz r28,_UC_GREGS+(PT_R28*4)(r31)
++ lwz r29,_UC_GREGS+(PT_R29*4)(r31)
++ lwz r30,_UC_GREGS+(PT_R30*4)(r31)
++ lwz r31,_UC_GREGS+(PT_R31*4)(r31)
++
++ bctr
++
++L(error_exit):
++ lwz r31,12(r1)
++ lwz r0,20(r1)
++ addi r1,r1,16
++ mtlr r0
++ blr
++
++L(do_sigret):
++ addi r1,r31,-0xd0
++ li r0,SYS_ify(rt_sigreturn)
++ sc
++ /* NOTREACHED */
++
++PSEUDO_END(__swapcontext)
++
++weak_alias(__swapcontext, swapcontext)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list 2003-01-06 19:20:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -1,11 +1,5 @@
+ # File name Caller Syscall name # args Strong name Weak names
+
+ # System calls with wrappers.
+-rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
+-rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
+-rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask
+-rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
+-rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
+-rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
+ oldgetrlimit EXTRA getrlimit i:ip __old_getrlimit getrlimit@GLIBC_2.0
+ oldsetrlimit EXTRA setrlimit i:ip __old_setrlimit setrlimit@GLIBC_2.0
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h 2003-01-12 14:30:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h 2003-05-24 14:06:23.000000000 -0400
+@@ -117,32 +117,38 @@
+ # define LOADARGS_1(name, arg1) \
+ LOADARGS_0(name, 0); \
+ extern void __illegally_sized_syscall_##name##_arg1 (void); \
+- if (sizeof (arg1) > 4) __illegally_sized_syscall_##name##_arg1 (); \
++ if (__builtin_classify_type (arg1) != 5 && sizeof (arg1) > 4) \
++ __illegally_sized_syscall_##name##_arg1 (); \
+ r3 = (long) (arg1)
+ # define LOADARGS_2(name, arg1, arg2) \
+ LOADARGS_1(name, arg1); \
+ extern void __illegally_sized_syscall_##name##_arg2 (void); \
+- if (sizeof (arg2) > 4) __illegally_sized_syscall_##name##_arg2 (); \
++ if (__builtin_classify_type (arg2) != 5 && sizeof (arg2) > 4) \
++ __illegally_sized_syscall_##name##_arg2 (); \
+ r4 = (long) (arg2)
+ # define LOADARGS_3(name, arg1, arg2, arg3) \
+ LOADARGS_2(name, arg1, arg2); \
+ extern void __illegally_sized_syscall_##name##_arg3 (void); \
+- if (sizeof (arg3) > 4) __illegally_sized_syscall_##name##_arg3 (); \
++ if (__builtin_classify_type (arg3) != 5 && sizeof (arg3) > 4) \
++ __illegally_sized_syscall_##name##_arg3 (); \
+ r5 = (long) (arg3)
+ # define LOADARGS_4(name, arg1, arg2, arg3, arg4) \
+ LOADARGS_3(name, arg1, arg2, arg3); \
+ extern void __illegally_sized_syscall_##name##_arg4 (void); \
+- if (sizeof (arg4) > 4) __illegally_sized_syscall_##name##_arg4 (); \
++ if (__builtin_classify_type (arg4) != 5 && sizeof (arg4) > 4) \
++ __illegally_sized_syscall_##name##_arg4 (); \
+ r6 = (long) (arg4)
+ # define LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5) \
+ LOADARGS_4(name, arg1, arg2, arg3, arg4); \
+ extern void __illegally_sized_syscall_##name##_arg5 (void); \
+- if (sizeof (arg5) > 4) __illegally_sized_syscall_##name##_arg5 (); \
++ if (__builtin_classify_type (arg5) != 5 && sizeof (arg5) > 4) \
++ __illegally_sized_syscall_##name##_arg5 (); \
+ r7 = (long) (arg5)
+ # define LOADARGS_6(name, arg1, arg2, arg3, arg4, arg5, arg6) \
+ LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5); \
+ extern void __illegally_sized_syscall_##name##_arg6 (void); \
+- if (sizeof (arg6) > 4) __illegally_sized_syscall_##name##_arg6 (); \
++ if (__builtin_classify_type (arg6) != 5 && sizeof (arg6) > 4) \
++ __illegally_sized_syscall_##name##_arg6 (); \
+ r8 = (long) (arg6)
+
+ # define ASM_INPUT_0 "0" (r0)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h 2003-06-17 23:37:33.000000000 -0400
+@@ -0,0 +1,30 @@
++/* Offsets and other constants needed in the *context() function
++ implementation.
++ Copyright (C) 2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define SIG_BLOCK 0
++#define SIG_SETMASK 2
++
++#define _UC_LINK 4
++#define _UC_STACK_SP 8
++#define _UC_STACK_SIZE 16
++#define _UC_SIGMASK 64
++#define _UC_GREGS 192
++#define _UC_FREGS 384
++#define _UC_VREGS 656
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2002-09-17 19:50:03.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2003-08-21 08:37:17.000000000 -0400
+@@ -24,6 +24,9 @@
+ #include <bp-asm.h>
+
+ .comm __curbrk,8,8
++ .section ".toc","aw"
++.LC__curbrk:
++ .tc __curbrk[TC],__curbrk
+ .section ".text"
+ ENTRY (BP_SYM (__brk))
+ DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em. */
+@@ -32,7 +35,7 @@
+ std r3,48(r1)
+ DO_CALL(SYS_ify(brk))
+ ld r6,48(r1)
+- ld r5,__curbrk@got(r2)
++ ld r5,.LC__curbrk@toc(r2)
+ std r3,0(r5)
+ cmpld r6,r3
+ addi r1,r1,64
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2002-09-17 19:50:03.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2003-03-15 15:02:21.000000000 -0500
+@@ -28,7 +28,8 @@
+ all the freaky stuff we have to do to make the call useful. */
+
+ /* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
+- int flags [r5], void *arg [r6]); */
++ int flags [r5], void *arg [r6], void *parent_tid [r7],
++ void *tls [r8], void *child_tid [r9]); */
+
+ ENTRY (BP_SYM (__clone))
+ /* GKM FIXME: add bounds checks, where sensible. */
+@@ -37,8 +38,8 @@
+
+ /* Check for child_stack == NULL || fn == NULL. */
+ cmpdi cr0,r4,0
+- ld r7,0(r3)
+- cmpdi cr1,r7,0
++ ld r0,0(r3)
++ cmpdi cr1,r0,0
+ cror cr0*4+eq,cr1*4+eq,cr0*4+eq
+ beq- cr0,L(badargs)
+
+@@ -61,6 +62,10 @@
+ /* 'flags' argument is first parameter to clone syscall. (The other
+ argument is the stack pointer, already in r4.) */
+ mr r3,r5
++ /* Move the parent_tid, child_tid and tls arguments. */
++ mr r5,r7
++ mr r6,r8
++ mr r7,r9
+
+ /* Do the call. */
+ DO_CALL(SYS_ify(clone))
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c 2003-02-03 16:13:55.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c 2003-04-12 11:39:50.000000000 -0400
+@@ -27,9 +27,15 @@
+ const fenv_t *
+ __fe_nomask_env (void)
+ {
+-#ifdef __ASSUME_NEW_PRCTL_SYSCALL
++#if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE
++ int result;
+ INTERNAL_SYSCALL_DECL (err);
+- INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
++ result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
++# ifndef __ASSUME_NEW_PRCTL_SYSCALL
++ if (INTERNAL_SYSCALL_ERROR_P (result, err)
++ && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL)
++ __set_errno (ENOSYS);
++# endif
+ #else
+ __set_errno (ENOSYS);
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2003-01-15 18:01:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2003-08-21 08:37:17.000000000 -0400
+@@ -51,7 +51,9 @@
+
+ .text
+ ENTRY(__socket)
++ cfi_startproc
+ stdu r1,-144(r1)
++ cfi_adjust_cfa_offset(144)
+ #if NARGS >= 1
+ std r3,stackblock(r1)
+ #endif
+@@ -95,6 +97,7 @@
+ .Lsocket_cancel:
+ mflr r9
+ std r9,144+16(r1)
++ cfi_offset (lr, 16)
+ CENABLE
+ std r3,72(r1)
+ li r3,P(SOCKOP_,socket)
+@@ -113,6 +116,7 @@
+ addi r1,r1,144
+ PSEUDO_RET
+ #endif
++ cfi_endproc
+ PSEUDO_END (__socket)
+
+ weak_alias (__socket, socket)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list 2003-02-05 16:40:43.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -1,47 +1,4 @@
+ # File name Caller Syscall name # args Strong name Weak names
+
+ # System calls with wrappers.
+-s_ioctl ioctl ioctl i:iiI __syscall_ioctl
+-s_ipc msgget ipc i:iiiip __syscall_ipc
+-s_llseek llseek _llseek i:iiipi __syscall__llseek
+-s_readahead readahead readahead i:iii __syscall_readahead
+-s_chown chown chown i:sii __syscall_chown
+-s_execve execve execve i:spp __syscall_execve
+-rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction
+-rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending
+-rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask
+-rt_sigqueueinfo - rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo
+-rt_sigsuspend - rt_sigsuspend i:pi __syscall_rt_sigsuspend
+-rt_sigtimedwait - rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait
+-s_fcntl fcntl fcntl i:iiF __syscall_fcntl
+-s_fcntl64 fcntl64 fcntl64 i:iiF __syscall_fcntl64
+-s_fstat64 fxstat64 fstat64 i:ip __syscall_fstat64
+-s_getcwd getcwd getcwd i:pi __syscall_getcwd
+-s_getdents getdents getdents i:ipi __syscall_getdents
+-s_getdents64 getdents getdents64 i:ipi __syscall_getdents64
+-s_getpmsg getpmsg getpmsg i:ipppp __syscall_getpmsg
+-s_getpriority getpriority getpriority i:ii __syscall_getpriority
+-s_getrlimit getrlimit getrlimit i:ip __syscall_getrlimit
+-s_lstat64 lxstat64 lstat64 i:sp __syscall_lstat64
+-s_mmap2 mmap64 mmap2 b:aniiii __syscall_mmap2
+-s_poll poll poll i:pii __syscall_poll
+-posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
+-s_ptrace ptrace ptrace i:iipp __syscall_ptrace
+-s_putpmsg putpmsg putpmsg i:ippii __syscall_putpmsg
+-s_reboot reboot reboot i:iii __syscall_reboot
+-s_setrlimit setrlimit setrlimit i:ip __syscall_setrlimit
+-s_sigaction sigaction sigaction i:ipp __syscall_sigaction
+-s_sigpending sigpending sigpending i:p __syscall_sigpending
+-s_sigprocmask sigprocmask sigprocmask i:ipp __syscall_sigprocmask
+-s_sigsuspend sigsuspend sigsuspend i:iii __syscall_sigsuspend
+-s_stat64 xstat64 stat64 i:sp __syscall_stat64
+-s_sysctl sysctl _sysctl i:p __syscall__sysctl
+-s_ugetrlimit getrlimit ugetrlimit i:ip __syscall_ugetrlimit
+-s_ustat ustat ustat i:ip __syscall_ustat
+-s_vfork vfork vfork i: __syscall_vfork
+-sys_fstat fxstat fstat i:ip __syscall_fstat
+-sys_lstat lxstat lstat i:sp __syscall_lstat
+-sys_mknod xmknod mknod i:pii __syscall_mknod
+-sys_readv readv readv i:ipi __syscall_readv
+-sys_stat xstat stat i:sp __syscall_stat
+-sys_writev writev writev i:ipi __syscall_writev
++posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h 2003-01-28 22:15:53.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h 2003-05-24 14:06:23.000000000 -0400
+@@ -130,32 +130,38 @@
+ #define LOADARGS_1(name, arg1) \
+ LOADARGS_0(name, 0); \
+ extern void __illegally_sized_syscall_##name##_arg1 (void); \
+- if (sizeof (arg1) > 8) __illegally_sized_syscall_##name##_arg1 (); \
++ if (__builtin_classify_type (arg1) != 5 && sizeof (arg1) > 8) \
++ __illegally_sized_syscall_##name##_arg1 (); \
+ r3 = (long) (arg1)
+ #define LOADARGS_2(name, arg1, arg2) \
+ LOADARGS_1(name, arg1); \
+ extern void __illegally_sized_syscall_##name##_arg2 (void); \
+- if (sizeof (arg2) > 8) __illegally_sized_syscall_##name##_arg2 (); \
++ if (__builtin_classify_type (arg2) != 5 && sizeof (arg2) > 8) \
++ __illegally_sized_syscall_##name##_arg2 (); \
+ r4 = (long) (arg2)
+ #define LOADARGS_3(name, arg1, arg2, arg3) \
+ LOADARGS_2(name, arg1, arg2); \
+ extern void __illegally_sized_syscall_##name##_arg3 (void); \
+- if (sizeof (arg3) > 8) __illegally_sized_syscall_##name##_arg3 (); \
++ if (__builtin_classify_type (arg3) != 5 && sizeof (arg3) > 8) \
++ __illegally_sized_syscall_##name##_arg3 (); \
+ r5 = (long) (arg3)
+ #define LOADARGS_4(name, arg1, arg2, arg3, arg4) \
+ LOADARGS_3(name, arg1, arg2, arg3); \
+ extern void __illegally_sized_syscall_##name##_arg4 (void); \
+- if (sizeof (arg4) > 8) __illegally_sized_syscall_##name##_arg4 (); \
++ if (__builtin_classify_type (arg4) != 5 && sizeof (arg4) > 8) \
++ __illegally_sized_syscall_##name##_arg4 (); \
+ r6 = (long) (arg4)
+ #define LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5) \
+ LOADARGS_4(name, arg1, arg2, arg3, arg4); \
+ extern void __illegally_sized_syscall_##name##_arg5 (void); \
+- if (sizeof (arg5) > 8) __illegally_sized_syscall_##name##_arg5 (); \
++ if (__builtin_classify_type (arg5) != 5 && sizeof (arg5) > 8) \
++ __illegally_sized_syscall_##name##_arg5 (); \
+ r7 = (long) (arg5)
+ #define LOADARGS_6(name, arg1, arg2, arg3, arg4, arg5, arg6) \
+ LOADARGS_5(name, arg1, arg2, arg3, arg4, arg5); \
+ extern void __illegally_sized_syscall_##name##_arg6 (void); \
+- if (sizeof (arg6) > 8) __illegally_sized_syscall_##name##_arg6 (); \
++ if (__builtin_classify_type (arg6) != 5 && sizeof (arg6) > 8) \
++ __illegally_sized_syscall_##name##_arg6 (); \
+ r8 = (long) (arg6)
+
+ #define ASM_INPUT_0 "0" (r0)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h 2003-01-16 19:56:42.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h 2003-08-21 08:37:17.000000000 -0400
+@@ -26,9 +26,47 @@
+ included in <signal.h>. */
+ #include <bits/sigcontext.h>
+
+-/* A machine context is exactly a sigcontext. */
++#if __WORDSIZE == 32
++
++/* Number of general registers. */
++#define NGREG 48
++
++/* Container for all general registers. */
++typedef unsigned long gregset_t[NGREG];
++
++/* Container for floating-point registers and status */
++typedef struct _libc_fpstate
++{
++ double fpregs[32];
++ double fpscr;
++ unsigned int _pad[2];
++} fpregset_t;
++
++/* Container for Altivec/VMX registers and status.
++ Needs to be aligned on a 16-byte boundary. */
++typedef struct _libc_vrstate
++{
++ unsigned int vrregs[32][4];
++ unsigned int vscr;
++ unsigned int vrsave;
++ unsigned int _pad[2];
++} vrregset_t;
++
++/* Context to describe whole processor state. */
++typedef struct
++{
++ gregset_t gregs;
++ fpregset_t fpregs;
++ vrregset_t vrregs __attribute__((__aligned__(16)));
++} mcontext_t;
++
++#else
++
++/* For 64-bit, a machine context is exactly a sigcontext. */
+ typedef struct sigcontext mcontext_t;
+
++#endif
++
+ /* Userlevel context. */
+ typedef struct ucontext
+ {
+@@ -36,12 +74,14 @@
+ struct ucontext *uc_link;
+ stack_t uc_stack;
+ #if __WORDSIZE == 32
+- mcontext_t uc_mcontext;
+- __sigset_t uc_sigmask;
+-#else
++ /* These fields are for backwards compatibility. */
++ int uc_pad[7];
++ mcontext_t *uc_regs;
++ unsigned int uc_oldsigmask[2];
++ int uc_pad2;
++#endif
+ sigset_t uc_sigmask;
+ mcontext_t uc_mcontext; /* last for extensibility */
+-#endif
+ } ucontext_t;
+
+ #endif /* sys/ucontext.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/syscalls.list 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/powerpc/syscalls.list 2003-09-02 22:55:30.000000000 -0400
+@@ -0,0 +1,3 @@
++# File name Caller Syscall name # args Strong name Weak names
++
++waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/pread.c 2002-12-15 02:04:46.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/pread.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -37,10 +37,6 @@
+
+ #if defined __NR_pread || __ASSUME_PREAD_SYSCALL > 0
+
+-/* The order of hi, lo depends on endianness. */
+-extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
+- off_t offset_hi, off_t offset_lo);
+-
+ # if __ASSUME_PREAD_SYSCALL == 0
+ static ssize_t __emulate_pread (int fd, void *buf, size_t count,
+ off_t offset) internal_function;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/pread64.c 2002-12-15 02:08:47.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/pread64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -36,9 +36,6 @@
+
+ #if defined __NR_pread || __ASSUME_PREAD_SYSCALL > 0
+
+-extern ssize_t __syscall_pread (int fd, void *__unbounded buf, size_t count,
+- off_t offset_hi, off_t offset_lo);
+-
+ # if __ASSUME_PREAD_SYSCALL == 0
+ static ssize_t __emulate_pread64 (int fd, void *buf, size_t count,
+ off64_t offset) internal_function;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/prof-freq.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/prof-freq.c 2003-07-03 13:32:19.000000000 -0400
+@@ -0,0 +1,51 @@
++/* Determine realtime clock frequency.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sys/time.h>
++#include <libc-internal.h>
++#include "kernel-features.h"
++#include <ldsodefs.h>
++
++
++int
++__profile_frequency (void)
++{
++#ifdef __ASSUME_AT_CLKTCK
++ return GL(dl_clktck);
++#else
++ if (GL(dl_clktck) != 0)
++ return GL(dl_clktck);
++
++ struct itimerval tim;
++
++ tim.it_interval.tv_sec = 0;
++ tim.it_interval.tv_usec = 1;
++ tim.it_value.tv_sec = 0;
++ tim.it_value.tv_usec = 0;
++
++ __setitimer (ITIMER_REAL, &tim, 0);
++ __setitimer (ITIMER_REAL, 0, &tim);
++
++ if (tim.it_interval.tv_usec < 2)
++ return 0;
++
++ return 1000000 / tim.it_interval.tv_usec;
++#endif
++}
++libc_hidden_def (__profile_frequency)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ptrace.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ptrace.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,9 +26,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern long int __syscall_ptrace (int, pid_t, void *__unbounded,
+- void *__unbounded);
+-
+ long int
+ ptrace (enum __ptrace_request request, ...)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite.c 2002-12-15 02:16:41.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -37,11 +37,6 @@
+
+ #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
+
+-/* The order of hi, lo depends on endianness. */
+-extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf,
+- size_t count, off_t offset_hi,
+- off_t offset_lo);
+-
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
+ off_t offset) internal_function;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite64.c 2002-12-15 02:20:14.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/pwrite64.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -36,9 +36,6 @@
+
+ #if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
+
+-extern ssize_t __syscall_pwrite (int fd, const void *__unbounded buf, size_t count,
+- off_t offset_hi, off_t offset_lo);
+-
+ # if __ASSUME_PWRITE_SYSCALL == 0
+ static ssize_t __emulate_pwrite64 (int fd, const void *buf, size_t count,
+ off64_t offset) internal_function;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/readahead.c 2002-05-30 14:37:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/readahead.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Provide kernel hint to read ahead.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,10 +26,6 @@
+
+ #ifdef __NR_readahead
+
+-extern int __syscall_readahead (int fd, off_t offset_hi, off_t offset_lo,
+- size_t count);
+-
+-
+ ssize_t
+ __readahead (int fd, loff_t offset, size_t count)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/readv.c 2002-12-15 19:57:48.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/readv.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* readv supports all Linux kernels >= 2.0.
+- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,7 +26,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern ssize_t __syscall_readv (int, __const struct iovec *__unbounded, int);
+ static ssize_t __atomic_readv_replacement (int, __const struct iovec *,
+ int) internal_function;
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/reboot.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/reboot.c 2003-09-19 22:37:08.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,8 +22,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_reboot (int magic, int magic_too, int flag);
+-
+ /* Call kernel with additional two arguments the syscall requires. */
+ int
+ reboot (int howto)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigaction.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigaction.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,28 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-
+-int
+-__syscall_rt_sigaction (int sig, const struct sigaction *act,
+- struct sigaction *oact, size_t setsize)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigpending.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigpending.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,27 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-
+-int
+-__syscall_rt_sigpending (sigset_t *set, size_t setsize)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigprocmask.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigprocmask.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,28 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-
+-int
+-__syscall_rt_sigprocmask (int how, const sigset_t *set, sigset_t *oset,
+- size_t setsize)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigqueueinfo.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigqueueinfo.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,28 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-#include <sys/types.h>
+-
+-int
+-__syscall_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t *uinfo)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigreturn.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigreturn.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,27 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-
+-int
+-__syscall_rt_sigreturn (struct sigcontext *ctx)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigsuspend.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigsuspend.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,35 +0,0 @@
+-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-#define __need_NULL
+-#include <stddef.h>
+-
+-int
+-__syscall_rt_sigsuspend (const sigset_t *set, size_t setsize)
+-{
+- if (set == NULL)
+- {
+- __set_errno (EINVAL);
+- return -1;
+- }
+-
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigtimedwait.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/rt_sigtimedwait.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,36 +0,0 @@
+-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-#define __need_NULL
+-#include <stddef.h>
+-
+-int
+-__syscall_rt_sigtimedwait (const sigset_t *set, siginfo_t *info,
+- const struct timespec *timeout, size_t setsize)
+-{
+- if (set == NULL)
+- {
+- __set_errno (EINVAL);
+- return -1;
+- }
+-
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/mman.h 2002-07-11 17:39:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/mman.h 2003-03-15 15:02:21.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/s390 version.
+- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -52,12 +52,14 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_GROWSUP 0x0200 /* Register stack-like segment */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x2000 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_GROWSUP 0x00200 /* Register stack-like segment */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/siginfo.h 2002-12-04 19:23:11.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/siginfo.h 2003-04-24 20:06:02.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* siginfo_t, sigevent and constants. S/390 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -69,8 +69,9 @@
+ /* POSIX.1b timers. */
+ struct
+ {
+- unsigned int _timer1;
+- unsigned int _timer2;
++ int si_tid; /* Timer ID. */
++ int si_overrun; /* Overrun count. */
++ sigval_t si_sigval; /* Signal value. */
+ } _timer;
+
+ /* POSIX.1b signals. */
+@@ -111,8 +112,8 @@
+ /* X/Open requires some more fields with fixed names. */
+ # define si_pid _sifields._kill.si_pid
+ # define si_uid _sifields._kill.si_uid
+-# define si_timer1 _sifields._timer._timer1
+-# define si_timer2 _sifields._timer._timer2
++# define si_timerid _sifields._timer.si_tid
++# define si_overrun _sifields._timer.si_overrun
+ # define si_status _sifields._sigchld.si_status
+ # define si_utime _sifields._sigchld.si_utime
+ # define si_stime _sifields._sigchld.si_stime
+@@ -129,8 +130,10 @@
+ signals. */
+ enum
+ {
+- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
++ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+ # define SI_ASYNCNL SI_ASYNCNL
++ SI_TKILL = -6, /* Sent by tkill. */
++# define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+ # define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+@@ -269,9 +272,6 @@
+ # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+ # endif
+
+-/* Forward declaration of the `pthread_attr_t' type. */
+-struct __pthread_attr_s;
+-
+ typedef struct sigevent
+ {
+ sigval_t sigev_value;
+@@ -301,8 +301,11 @@
+ # define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+ # define SIGEV_NONE SIGEV_NONE
+- SIGEV_THREAD /* Deliver via thread creation. */
++ SIGEV_THREAD, /* Deliver via thread creation. */
+ # define SIGEV_THREAD SIGEV_THREAD
++
++ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
++#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+ };
+
+ #endif /* have _SIGNAL_H. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/stat.h 2002-12-31 15:08:58.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/stat.h 2003-08-21 08:37:17.000000000 -0400
+@@ -224,6 +224,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2002-10-23 19:48:54.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2003-08-21 08:37:17.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -41,7 +41,8 @@
+ #endif
+ __fsid_t f_fsid;
+ int f_namelen;
+- int f_spare[6];
++ int f_frsize;
++ int f_spare[5];
+ };
+
+ #ifdef __USE_LARGEFILE64
+@@ -56,9 +57,11 @@
+ __fsfilcnt64_t f_ffree;
+ __fsid_t f_fsid;
+ int f_namelen;
+- int f_spare[6];
++ int f_frsize;
++ int f_spare[5];
+ };
+ #endif
+
+ /* Tell code we have this member. */
+ #define _STATFS_F_NAMELEN
++#define _STATFS_F_FRSIZE
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2003-09-19 22:37:10.000000000 -0400
+@@ -0,0 +1,72 @@
++/* bits/typesizes.h -- underlying types for *_t. Linux/s390 version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _BITS_TYPES_H
++# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
++#endif
++
++#ifndef _BITS_TYPESIZES_H
++#define _BITS_TYPESIZES_H 1
++
++/* See <bits/types.h> for the meaning of these macros. This file exists so
++ that <bits/types.h> need not vary across different GNU platforms. */
++
++#define __DEV_T_TYPE __UQUAD_TYPE
++#define __UID_T_TYPE __U32_TYPE
++#define __GID_T_TYPE __U32_TYPE
++#define __INO_T_TYPE __ULONGWORD_TYPE
++#define __INO64_T_TYPE __UQUAD_TYPE
++#define __MODE_T_TYPE __U32_TYPE
++#define __NLINK_T_TYPE __UWORD_TYPE
++#define __OFF_T_TYPE __SLONGWORD_TYPE
++#define __OFF64_T_TYPE __SQUAD_TYPE
++#define __PID_T_TYPE __S32_TYPE
++#define __RLIM_T_TYPE __ULONGWORD_TYPE
++#define __RLIM64_T_TYPE __UQUAD_TYPE
++#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
++#define __BLKCNT64_T_TYPE __SQUAD_TYPE
++#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
++#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
++#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
++#define __ID_T_TYPE __U32_TYPE
++#define __CLOCK_T_TYPE __SLONGWORD_TYPE
++#define __TIME_T_TYPE __SLONGWORD_TYPE
++#define __USECONDS_T_TYPE __U32_TYPE
++#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
++#define __DADDR_T_TYPE __S32_TYPE
++#define __SWBLK_T_TYPE __SLONGWORD_TYPE
++#define __KEY_T_TYPE __S32_TYPE
++#define __CLOCKID_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE void *
++#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
++#define __FSID_T_TYPE struct { int __val[2]; }
++#if defined __GNUC__ && __GNUC__ <= 2
++/* Compatibility with g++ 2.95.x. */
++#define __SSIZE_T_TYPE __SWORD_TYPE
++#else
++/* size_t is unsigned long int on s390 -m31. */
++#define __SSIZE_T_TYPE __SLONGWORD_TYPE
++#endif
++
++/* Number of descriptors that can fit in an `fd_set'. */
++#define __FD_SETSIZE 1024
++
++
++#endif /* bits/typesizes.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/dl-cache.h 2003-06-25 04:03:17.000000000 -0400
+@@ -0,0 +1 @@
++#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/Versions 2002-08-23 15:47:00.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/Versions 2003-09-19 22:37:10.000000000 -0400
+@@ -23,5 +23,7 @@
+ # v*
+ versionsort64;
+ }
++ GLIBC_2.3.3 {
++ posix_fadvise64; posix_fallocate64;
++ }
+ }
+-
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/chown.c 2003-02-20 15:05:15.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/chown.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -37,14 +37,9 @@
+ has therefore to route calls to chown to the old chown function.
+ */
+
+-extern int __syscall_chown (const char *__file,
+- __kernel_uid_t __owner, __kernel_gid_t __group);
+-
+ /* Running under Linux > 2.1.80. */
+
+ #ifdef __NR_chown32
+-extern int __syscall_chown32 (const char *__file,
+- __kernel_uid32_t owner, __kernel_gid32_t group);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/lchown.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,13 +26,7 @@
+ #include <linux/posix_types.h>
+ #include "kernel-features.h"
+
+-extern int __syscall_lchown (const char *__unbounded __file,
+- __kernel_uid_t __owner, __kernel_gid_t __group);
+-
+ # ifdef __NR_lchown32
+-extern int __syscall_lchown32 (const char *__unbounded __file,
+- __kernel_uid32_t __owner,
+- __kernel_gid32_t __group);
+ # if __ASSUME_32BITUIDS == 0
+ /* This variable is shared with all files that need to check for 32bit
+ uids. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/socket.S 2003-01-05 00:04:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/socket.S 2003-08-21 08:37:17.000000000 -0400
+@@ -47,12 +47,24 @@
+
+ .globl __socket
+ ENTRY(__socket)
++ cfi_startproc
+
+ /* Save registers and setup stack. */
+ stm %r6,%r15,24(%r15) /* save registers */
++ cfi_offset (%r15, -36)
++ cfi_offset (%r14, -40)
++ cfi_offset (%r13, -44)
++ cfi_offset (%r12, -48)
++ cfi_offset (%r11, -52)
++ cfi_offset (%r10, -56)
++ cfi_offset (%r9, -60)
++ cfi_offset (%r8, -64)
++ cfi_offset (%r7, -68)
++ cfi_offset (%r6, -72)
+ lr %r1,%r15
+ l %r0,4(0,%r15) /* load eos */
+ ahi %r15,-120 /* buy stack space */
++ cfi_adjust_cfa_offset (120)
+ st %r1,0(0,%r15) /* store back chain */
+ st %r0,4(0,%r15) /* store eos */
+
+@@ -124,6 +136,7 @@
+ 2: .long CENABLE-1b
+ 3: .long CDISABLE-1b
+ #endif
++ cfi_endproc
+
+ SYSCALL_ERROR_HANDLER
+ END (__socket)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S 2001-07-07 15:21:35.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/syscall.S 2003-03-15 15:02:21.000000000 -0500
+@@ -37,15 +37,19 @@
+ lr %r4,%r5 /* third parameter */
+ lr %r5,%r6 /* fourth parameter */
+ l %r6,192(%r15) /* fifth parameter */
+- basr %r7,0
+-.L0: ex %r1,.L1-.L0(%r7) /* lsb of R1 is subsituted as SVC number */
+
+- l %r15,0(0,%r15) /* load back chain */
+- lm %r6,15,24(%r15) /* load registers */
++ basr %r7,0
++0: cl %r1,4f-0b(%r7) /* svc number < 256? */
++ jl 2f
++1: svc 0
++ j 3f
++2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
++3: l %r15,0(%r15) /* load back chain */
++ lm %r6,15,24(%r15) /* load registers */
+
+ lhi %r0,-4095
+ clr %r2,%r0 /* check R2 for error */
+ jnl SYSCALL_ERROR_LABEL
+ br %r14 /* return to caller */
+-.L1: .word 0x0A00 /* opcode for SVC 0 */
++4: .long 256
+ PSEUDO_END (syscall)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 2003-01-28 05:20:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h 2003-08-21 08:37:17.000000000 -0400
+@@ -59,6 +59,27 @@
+ SYSCALL_ERROR_HANDLER; \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args)
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#undef PSEUDO_ERRVAL
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args); \
++ lcr %r2,%r2
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
+ #ifndef PIC
+ # define SYSCALL_ERROR_LABEL 0f
+ # define SYSCALL_ERROR_HANDLER \
+@@ -133,11 +154,22 @@
+ */
+
+ #define DO_CALL(syscall, args) \
+- svc SYS_ify (syscall)
++ .if SYS_ify (syscall) < 256; \
++ svc SYS_ify (syscall); \
++ .else; \
++ lhi %r1,SYS_ify (syscall); \
++ svc 0; \
++ .endif
+
+ #define ret \
+ br 14
+
++#define ret_NOERRNO \
++ br 14
++
++#define ret_ERRVAL \
++ br 14
++
+ #endif /* __ASSEMBLER__ */
+
+ #undef INLINE_SYSCALL
+@@ -154,8 +186,8 @@
+ #undef INTERNAL_SYSCALL_DECL
+ #define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+
+-#undef INTERNAL_SYSCALL
+-#define INTERNAL_SYSCALL(name, err, nr, args...) \
++#undef INTERNAL_SYSCALL_DIRECT
++#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
+ ({ \
+ DECLARGS_##nr(args) \
+ register int _ret asm("2"); \
+@@ -166,6 +198,25 @@
+ : "memory" ); \
+ _ret; })
+
++#undef INTERNAL_SYSCALL_SVC0
++#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
++ ({ \
++ DECLARGS_##nr(args) \
++ register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
++ register int _ret asm("2"); \
++ asm volatile ( \
++ "svc 0\n\t" \
++ : "=d" (_ret) \
++ : "d" (_nr), "i" (__NR_##name) ASMFMT_##nr \
++ : "memory" ); \
++ _ret; })
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) \
++ (((__NR_##name) < 256) ? \
++ INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
++ INTERNAL_SYSCALL_SVC0(name, err,nr, args))
++
+ #undef INTERNAL_SYSCALL_ERROR_P
+ #define INTERNAL_SYSCALL_ERROR_P(val, err) \
+ ((unsigned int) (val) >= 0xfffff001u)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c 2002-08-13 10:29:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/fxstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* fxstat using old-style Unix fstat system call. 64 bit S/390 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,8 +28,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_fstat (int, struct stat *);
+-
+ /* Get information about the file FD in BUF. */
+ int
+ __fxstat (int vers, int fd, struct stat *buf)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h 2003-06-12 12:15:15.000000000 -0400
+@@ -0,0 +1,21 @@
++/* Definition of `struct stat' used in the kernel.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define STAT_IS_KERNEL_STAT 1
++#define XSTAT_IS_XSTAT64 1
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c 2002-08-13 10:29:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/lxstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* lxstat using old-style Unix fstat system call. 64 bit S/390 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,8 +28,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_lstat (const char *, struct stat *);
+-
+ /* Get information about the file FD in BUF. */
+ int
+ __lxstat (int vers, const char *name, struct stat *buf)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c 2003-01-02 18:26:05.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c 2003-09-19 22:37:10.000000000 -0400
+@@ -26,9 +26,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_rt_sigaction (int, const struct sigaction *,
+- struct sigaction *, size_t);
+-
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. This is the definition. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c 2001-07-07 15:21:36.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,9 +26,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_rt_sigpending (sigset_t *, size_t);
+-
+-
+ /* Change the set of blocked signals to SET,
+ wait until a signal arrives, and restore the set of blocked signals. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c 2001-07-07 15:21:36.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,9 +26,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_rt_sigprocmask (int, const sigset_t *,
+- sigset_t *, size_t);
+-
+ /* Get and/or change the set of blocked signals. */
+ int
+ __sigprocmask (how, set, oset)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c 2003-01-05 00:04:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sigsuspend.c 2003-09-19 22:37:10.000000000 -0400
+@@ -23,9 +23,6 @@
+ #include <sysdep-cancel.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_rt_sigsuspend (const sigset_t *, size_t);
+-
+-
+ /* Change the set of blocked signals to SET,
+ wait until a signal arrives, and restore the set of blocked signals. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/socket.S 2003-01-28 05:20:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/socket.S 2003-08-21 08:37:17.000000000 -0400
+@@ -47,12 +47,24 @@
+
+ .globl __socket
+ ENTRY(__socket)
++ cfi_startproc
+
+ /* Save registers and setup stack. */
+ stmg %r6,%r15,48(%r15) /* Save registers. */
++ cfi_offset (%r15,-40)
++ cfi_offset (%r14,-48)
++ cfi_offset (%r13,-56)
++ cfi_offset (%r12,-64)
++ cfi_offset (%r11,-72)
++ cfi_offset (%r10,-80)
++ cfi_offset (%r9,-88)
++ cfi_offset (%r8,-96)
++ cfi_offset (%r7,-104)
++ cfi_offset (%r6,-112)
+ lgr %r1,%r15
+ lg %r0,8(%r15) /* Load eos. */
+ ahi %r15,-208 /* Buy stack space. */
++ cfi_adjust_cfa_offset (208)
+ stg %r1,0(%r15) /* Store back chain. */
+ stg %r0,8(%r15) /* Store eos. */
+
+@@ -118,6 +130,8 @@
+ j 4b
+ #endif
+
++ cfi_endproc
++
+ PSEUDO_END (__socket)
+
+ #ifndef NO_WEAK_ALIAS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S 2003-01-28 05:20:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S 2003-03-15 15:02:21.000000000 -0500
+@@ -37,16 +37,20 @@
+ lgr %r4,%r5 /* Third parameter. */
+ lgr %r5,%r6 /* Fourth parameter. */
+ lg %r6,320(%r15) /* Fifth parameter. */
+- basr %r7,0
+-.L0: ex %r1,.L1-.L0(%r7) /* Lsb of R1 is subsituted as SVC number. */
+
+- lg %r15,0(%r15) /* Load back chain. */
++ basr %r7,0
++0: clg %r1,4f-0b(%r7) /* svc number < 256? */
++ jl 2f
++1: svc 0
++ j 3f
++2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
++3: lg %r15,0(%r15) /* load back chain */
+ lmg %r6,15,48(%r15) /* Load registers. */
+
+ lghi %r0,-4095
+ clgr %r2,%r0 /* Check R2 for error. */
+ jgnl SYSCALL_ERROR_LABEL
+ br %r14 /* Return to caller. */
+-.L1: .word 0x0A00 /* Opcode for SVC 0. */
++4: .quad 256
+ PSEUDO_END (syscall)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list 2003-02-05 16:42:21.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list 2003-09-19 22:37:10.000000000 -0400
+@@ -2,15 +2,15 @@
+
+ llseek EXTRA lseek C:3 __libc_lseek __lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
+ lseek llseek -
+-pread - pread C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
+-pwrite - pwrite C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
++pread - pread64 C:4 __libc_pread __libc_pread64 __pread pread __pread64 pread64
++pwrite - pwrite64 C:4 __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+ fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64
+ statfs - statfs i:sp __statfs statfs statfs64
+ getpeername - getpeername i:ipp __getpeername getpeername
+ ftruncate - ftruncate 2 __ftruncate ftruncate ftruncate64 __ftruncate64
+ truncate - truncate 2 truncate truncate64
+ getrlimit - getrlimit 2 __getrlimit getrlimit getrlimit64
+-posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
++posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
+ setrlimit - setrlimit 2 __setrlimit setrlimit setrlimit64
+ vfork - vfork 0 __vfork vfork
+
+@@ -45,10 +45,3 @@
+ shutdown - shutdown i:ii __shutdown shutdown
+ socket - socket i:iii __socket socket
+ socketpair - socketpair i:iiif __socketpair socketpair
+-
+-rt_sigaction EXTRA rt_sigaction i:ippi __syscall_rt_sigaction rt_sigaction
+-rt_sigpending EXTRA rt_sigpending i:pi __syscall_rt_sigpending rt_sigpending
+-rt_sigprocmask EXTRA rt_sigprocmask i:ippi __syscall_rt_sigprocmask rt_sigprocmask
+-rt_sigqueueinfo EXTRA rt_sigqueueinfo i:iip __syscall_rt_sigqueueinfo rt_sigqueueinfo
+-rt_sigsuspend EXTRA rt_sigsuspend i:pi __syscall_rt_sigsuspend rt_sigsuspend
+-rt_sigtimedwait EXTRA rt_sigtimedwait i:pppi __syscall_rt_sigtimedwait rt_sigtimedwait
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 2003-01-28 05:20:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h 2003-08-21 08:37:17.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Assembler macros for 64 bit S/390.
+- Copyright (C) 2001,02 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+ This file is part of the GNU C Library.
+
+@@ -31,6 +31,18 @@
+ /* In newer 2.1 kernels __NR_syscall is missing so we define it here. */
+ #define __NR_syscall 0
+
++/*
++ * Newer kernel versions redefined __NR_pread and __NR_pwrite to
++ * __NR_pread64 and __NR_pwrite64. We use the new names but have
++ * to define them on our own for compiling against older kernels.
++ */
++#ifndef __NR_pread64
++# define __NR_pread64 __NR_pread
++#endif
++#ifndef __NR_pwrite64
++# define __NR_pwrite64 __NR_pwrite
++#endif
++
+ #undef SYS_ify
+ #define SYS_ify(syscall_name) __NR_##syscall_name
+
+@@ -60,6 +72,29 @@
+ SYSCALL_ERROR_HANDLER; \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args)
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ SYSCALL_ERROR_HANDLER; \
++ END (name)
++
++#undef PSEUDO_ERRVAL
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args); \
++ lcgr %r2,%r2
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ SYSCALL_ERROR_HANDLER; \
++ END (name)
++
+ #ifndef PIC
+ # define SYSCALL_ERROR_LABEL syscall_error
+ # define SYSCALL_ERROR_HANDLER
+@@ -122,32 +157,43 @@
+ */
+
+ #define DO_CALL(syscall, args) \
+- svc SYS_ify (syscall)
++ .if SYS_ify (syscall) < 256; \
++ svc SYS_ify (syscall); \
++ .else; \
++ lghi %r1,SYS_ify (syscall); \
++ svc 0; \
++ .endif
+
+ #define ret \
+ br 14
+
++#define ret_NOERRNO \
++ br 14
++
++#define ret_ERRVAL \
++ br 14
++
+ #endif /* __ASSEMBLER__ */
+
+ #undef INLINE_SYSCALL
+ #define INLINE_SYSCALL(name, nr, args...) \
+ ({ \
+- unsigned int _ret = INTERNAL_SYSCALL (name, , nr, args); \
++ long _ret = INTERNAL_SYSCALL (name, , nr, args); \
+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_ret, ), 0)) \
+ { \
+ __set_errno (INTERNAL_SYSCALL_ERRNO (_ret, )); \
+ _ret = -1; \
+ } \
+- (int) _ret; })
++ _ret; })
+
+ #undef INTERNAL_SYSCALL_DECL
+ #define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+
+-#undef INTERNAL_SYSCALL
+-#define INTERNAL_SYSCALL(name, err, nr, args...) \
++#undef INTERNAL_SYSCALL_DIRECT
++#define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
+ ({ \
+ DECLARGS_##nr(args) \
+- register int _ret asm("2"); \
++ register long _ret asm("2"); \
+ asm volatile ( \
+ "svc %b1\n\t" \
+ : "=d" (_ret) \
+@@ -155,9 +201,28 @@
+ : "memory" ); \
+ _ret; })
+
++#undef INTERNAL_SYSCALL_SVC0
++#define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
++ ({ \
++ DECLARGS_##nr(args) \
++ register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
++ register long _ret asm("2"); \
++ asm volatile ( \
++ "svc 0\n\t" \
++ : "=d" (_ret) \
++ : "d" (_nr), "i" (__NR_##name) ASMFMT_##nr \
++ : "memory" ); \
++ _ret; })
++
++#undef INTERNAL_SYSCALL
++#define INTERNAL_SYSCALL(name, err, nr, args...) \
++ (((__NR_##name) < 256) ? \
++ INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
++ INTERNAL_SYSCALL_SVC0(name, err,nr, args))
++
+ #undef INTERNAL_SYSCALL_ERROR_P
+ #define INTERNAL_SYSCALL_ERROR_P(val, err) \
+- ((unsigned int) (val) >= 0xfffff001u)
++ ((unsigned long) (val) >= -4095UL)
+
+ #undef INTERNAL_SYSCALL_ERRNO
+ #define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c 2002-08-13 10:29:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/s390-64/xstat.c 2003-09-19 22:37:10.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* xstat using old-style Unix stat system call. 64 bit S/390 version.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,8 +28,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_stat (const char *, struct stat *);
+-
+ /* Get information about the file NAME in BUF. */
+ int
+ __xstat (int vers, const char *name, struct stat *buf)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/semtimedop.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/semtimedop.c 2003-08-21 08:37:17.000000000 -0400
+@@ -0,0 +1,38 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <sys/sem.h>
++#include <ipc_priv.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++
++/* Perform user-defined atomical operation of array of semaphores. */
++
++int
++semtimedop (semid, sops, nsops, timeout)
++ int semid;
++ struct sembuf *sops;
++ size_t nsops;
++ const struct timespec *timeout;
++{
++ return INLINE_SYSCALL (ipc, 5, IPCOP_semtimedop,
++ semid, (int) nsops, timeout, sops);
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s390/system.c 2003-02-04 13:35:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s390/system.c 2003-05-21 15:19:07.000000000 -0400
+@@ -1 +1,34 @@
+-#include <sysdeps/unix/sysv/linux/i386/system.c>
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <kernel-features.h>
++
++/* We have to and actually can handle cancelable system(). The big
++ problem: we have to kill the child process if necessary. To do
++ this a cleanup handler has to be registered and is has to be able
++ to find the PID of the child. The main problem is to reliable have
++ the PID when needed. It is not necessary for the parent thread to
++ return. It might still be in the kernel when the cancellation
++ request comes. Therefore we have to use the clone() calls ability
++ to have the kernel write the PID into the user-level variable. */
++#ifdef __ASSUME_CLONE_THREAD_FLAGS
++# define FORK() \
++ INLINE_SYSCALL (clone, 3, 0, CLONE_PARENT_SETTID | SIGCHLD, &pid)
++#endif
++
++#include "../system.c"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s_pread64.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s_pread64.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,30 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <unistd.h>
+-
+-/* This file is used if no system call is available. */
+-ssize_t
+-__syscall_pread64 (int fd, char *buf, size_t count,
+- off_t offset_hi, off_t offset_lo)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/s_pwrite64.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/s_pwrite64.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,30 +0,0 @@
+-/* Copyright (C) 1997 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <unistd.h>
+-
+-/* This file is used if no system call is available. */
+-ssize_t
+-__syscall_pwrite64 (int fd, const char *buf, size_t count,
+- off_t offset_hi, off_t offset_lo)
+-{
+- __set_errno (ENOSYS);
+- return -1;
+-}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sched_getaffinity.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sched_getaffinity.c 2003-05-10 01:35:19.000000000 -0400
+@@ -0,0 +1,45 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <sched.h>
++#include <string.h>
++#include <sysdep.h>
++#include <sys/types.h>
++
++
++#ifdef __NR_sched_getaffinity
++int
++sched_getaffinity (pid, cpuset)
++ pid_t pid;
++ cpu_set_t *cpuset;
++{
++ int res = INLINE_SYSCALL (sched_getaffinity, 3, pid, sizeof (cpu_set_t),
++ cpuset);
++ if (res != -1)
++ {
++ /* Clean the rest of the memory the kernel didn't do. */
++ memset ((char *) cpuset + res, '\0', sizeof (cpu_set_t) - res);
++
++ res = 0;
++ }
++ return res;
++}
++#else
++# include <sysdeps/generic/sched_getaffinity.c>
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sched_setaffinity.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sched_setaffinity.c 2003-05-10 01:35:31.000000000 -0400
+@@ -0,0 +1,37 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <sched.h>
++#include <string.h>
++#include <sysdep.h>
++#include <sys/types.h>
++
++
++#ifdef __NR_sched_setaffinity
++int
++sched_setaffinity (pid, cpuset)
++ pid_t pid;
++ const cpu_set_t *cpuset;
++{
++ return INLINE_SYSCALL (sched_setaffinity, 3, pid, sizeof (cpu_set_t),
++ cpuset);
++}
++#else
++# include <sysdeps/generic/sched_setaffinity.c>
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/semctl.c 2002-05-14 23:50:33.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/semctl.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -48,6 +48,7 @@
+ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
+ unsigned short int *array; /* array for GETALL & SETALL */
+ struct seminfo *__buf; /* buffer for IPC_INFO */
++ struct __old_semid_ds *__old_buf;
+ };
+
+ #include <bp-checks.h>
+@@ -152,7 +153,7 @@
+
+ __set_errno(save_errno);
+ buf = arg.buf;
+- arg.buf = (struct semid_ds *)&old;
++ arg.__old_buf = &old;
+ if (cmd == IPC_SET)
+ {
+ old.sem_perm.uid = buf->sem_perm.uid;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/semtimedop.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/semtimedop.c 2003-05-01 17:39:55.000000000 -0400
+@@ -0,0 +1,40 @@
++/* Copyright (C) 1995, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@cygnus.com>, August 1995.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <sys/sem.h>
++#include <ipc_priv.h>
++
++#include <sysdep.h>
++#include <sys/syscall.h>
++#include <bp-checks.h>
++
++/* Perform user-defined atomical operation of array of semaphores. */
++
++int
++semtimedop (semid, sops, nsops, timeout)
++ int semid;
++ struct sembuf *sops;
++ size_t nsops;
++ const struct timespec *timeout;
++{
++ return INLINE_SYSCALL (ipc, 6, IPCOP_semtimedop,
++ semid, (int) nsops, 0, CHECK_N (sops, nsops),
++ timeout);
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/setegid.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/setegid.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,7 +21,10 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
+-#ifdef __NR_setresgid
++#include <sysdep.h>
++#include "kernel-features.h"
++
++#if defined __NR_setresgid || __ASSUME_SETRESGID_SYSCALL > 0
+
+ extern int __setresgid (gid_t rgid, gid_t egid, gid_t sgid);
+
+@@ -36,15 +39,21 @@
+ return -1;
+ }
+
++# if __ASSUME_32BITUIDS > 0 && defined __NR_setresgid32
++ return INLINE_SYSCALL (setresgid32, 3, -1, gid, -1);
++# else
+ /* First try the syscall. */
+ result = __setresgid (-1, gid, -1);
++# if __ASSUME_SETRESGID_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use emulation. This may not work
+ since `setregid' also sets the saved group ID when GID is not
+ equal to the real group ID, making it impossible to switch back. */
+ result = __setregid (-1, gid);
++# endif
+
+ return result;
++# endif
+ }
+ libc_hidden_def (setegid)
+ #else
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/seteuid.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/seteuid.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,6 +21,7 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#include <sysdep.h>
+ #include "kernel-features.h"
+
+ #if defined __NR_setresuid || __ASSUME_SETRESUID_SYSCALL > 0
+@@ -38,6 +39,9 @@
+ return -1;
+ }
+
++# if __ASSUME_32BITUIDS > 0 && defined __NR_setresuid32
++ return INLINE_SYSCALL (setresuid32, 3, -1, uid, -1);
++# else
+ /* First try the syscall. */
+ result = __setresuid (-1, uid, -1);
+ # if __ASSUME_SETRESUID_SYSCALL == 0
+@@ -49,6 +53,7 @@
+ # endif
+
+ return result;
++# endif
+ }
+ libc_hidden_def (seteuid)
+ #else
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Makefile 2002-10-14 00:04:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Makefile 2003-09-19 22:37:10.000000000 -0400
+@@ -5,8 +5,3 @@
+ ifeq ($(subdir),misc)
+ sysdep_headers += sys/io.h
+ endif
+-
+-ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending
+-endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Versions 2000-10-25 22:24:08.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/Versions 2003-09-19 22:37:10.000000000 -0400
+@@ -21,4 +21,7 @@
+ # v*
+ versionsort64;
+ }
++ GLIBC_2.3.3 {
++ posix_fadvise64; posix_fallocate64;
++ }
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/bits/atomic.h 2003-05-12 12:13:11.000000000 -0400
+@@ -0,0 +1,419 @@
++/* Atomic operations used inside libc. Linux/SH version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++/* SH kernel has implemented a gUSA ("g" User Space Atomicity) support
++ for the user space atomicity. The atomicity macros use this scheme.
++
++ Reference:
++ Niibe Yutaka, "gUSA: Simple and Efficient User Space Atomicity
++ Emulation with Little Kernel Modification", Linux Conference 2002,
++ Japan. http://lc.linux.or.jp/lc2002/papers/niibe0919h.pdf (in
++ Japanese).
++
++ B.N. Bershad, D. Redell, and J. Ellis, "Fast Mutual Exclusion for
++ Uniprocessors", Proceedings of the Fifth Architectural Support for
++ Programming Languages and Operating Systems (ASPLOS), pp. 223-233,
++ October 1992. http://www.cs.washington.edu/homes/bershad/Papers/Rcs.ps
++
++ SuperH ABI:
++ r15: -(size of atomic instruction sequence) < 0
++ r0: end point
++ r1: saved stack pointer
++*/
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __result; \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ nop\n\
++ mov r15,r1\n\
++ mov #-8,r15\n\
++ 0: mov.b @%1,%0\n\
++ cmp/eq %0,%3\n\
++ bf 1f\n\
++ mov.b %2,@%1\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
++ : "r0", "r1", "t", "memory"); \
++ __result; })
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __result; \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ nop\n\
++ mov r15,r1\n\
++ mov #-8,r15\n\
++ 0: mov.w @%1,%0\n\
++ cmp/eq %0,%3\n\
++ bf 1f\n\
++ mov.w %2,@%1\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
++ : "r0", "r1", "t", "memory"); \
++ __result; })
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ __typeof (*(mem)) __result; \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ nop\n\
++ mov r15,r1\n\
++ mov #-8,r15\n\
++ 0: mov.l @%1,%0\n\
++ cmp/eq %0,%3\n\
++ bf 1f\n\
++ mov.l %2,@%1\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result) : "r" (mem), "r" (newval), "r" (oldval) \
++ : "r0", "r1", "t", "memory"); \
++ __result; })
++
++/* XXX We do not really need 64-bit compare-and-exchange. At least
++ not in the moment. Using it would mean causing portability
++ problems since not many other 32-bit architectures have support for
++ such an operation. So don't define any code for now. */
++
++# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ (abort (), (__typeof (*mem)) 0)
++
++#define atomic_exchange_and_add(mem, value) \
++ ({ __typeof (*(mem)) __result, __tmp, __value = (value); \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.b @%2,%0\n\
++ add %0,%1\n\
++ mov.b %1,@%2\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "memory"); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.w @%2,%0\n\
++ add %0,%1\n\
++ mov.w %1,@%2\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "memory"); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.l @%2,%0\n\
++ add %0,%1\n\
++ mov.l %1,@%2\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "memory"); \
++ else \
++ { \
++ __typeof (mem) memp = (mem); \
++ do \
++ __result = *memp; \
++ while (__arch_compare_and_exchange_val_64_acq \
++ (memp, __result + __value, __result) == __result); \
++ (void) __value; \
++ } \
++ __result; })
++
++#define atomic_add(mem, value) \
++ (void) ({ __typeof (*(mem)) __tmp, __value = (value); \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.b @%1,r2\n\
++ add r2,%0\n\
++ mov.b %0,@%1\n\
++ 1: mov r1,r15"\
++ : "=&r" (__tmp) : "r" (mem), "0" (__value) \
++ : "r0", "r1", "r2", "memory"); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.w @%1,r2\n\
++ add r2,%0\n\
++ mov.w %0,@%1\n\
++ 1: mov r1,r15"\
++ : "=&r" (__tmp) : "r" (mem), "0" (__value) \
++ : "r0", "r1", "r2", "memory"); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.l @%1,r2\n\
++ add r2,%0\n\
++ mov.l %0,@%1\n\
++ 1: mov r1,r15"\
++ : "=&r" (__tmp) : "r" (mem), "0" (__value) \
++ : "r0", "r1", "r2", "memory"); \
++ else \
++ { \
++ __typeof (*(mem)) oldval; \
++ __typeof (mem) memp = (mem); \
++ do \
++ oldval = *memp; \
++ while (__arch_compare_and_exchange_val_64_acq \
++ (memp, oldval + __value, oldval) == oldval); \
++ (void) __value; \
++ } \
++ })
++
++#define atomic_add_negative(mem, value) \
++ ({ unsigned char __result; \
++ __typeof (*(mem)) __tmp, __value = (value); \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.b @%2,r2\n\
++ add r2,%1\n\
++ mov.b %1,@%2\n\
++ 1: mov r1,r15\n\
++ shal %1\n\
++ movt %0"\
++ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "r2", "t", "memory"); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.w @%2,r2\n\
++ add r2,%1\n\
++ mov.w %1,@%2\n\
++ 1: mov r1,r15\n\
++ shal %1\n\
++ movt %0"\
++ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "r2", "t", "memory"); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.l @%2,r2\n\
++ add r2,%1\n\
++ mov.l %1,@%2\n\
++ 1: mov r1,r15\n\
++ shal %1\n\
++ movt %0"\
++ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "r2", "t", "memory"); \
++ else \
++ abort (); \
++ __result; })
++
++#define atomic_add_zero(mem, value) \
++ ({ unsigned char __result; \
++ __typeof (*(mem)) __tmp, __value = (value); \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.b @%2,r2\n\
++ add r2,%1\n\
++ mov.b %1,@%2\n\
++ 1: mov r1,r15\n\
++ tst %1,%1\n\
++ movt %0"\
++ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "r2", "t", "memory"); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.w @%2,r2\n\
++ add r2,%1\n\
++ mov.w %1,@%2\n\
++ 1: mov r1,r15\n\
++ tst %1,%1\n\
++ movt %0"\
++ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "r2", "t", "memory"); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.l @%2,r2\n\
++ add r2,%1\n\
++ mov.l %1,@%2\n\
++ 1: mov r1,r15\n\
++ tst %1,%1\n\
++ movt %0"\
++ : "=r" (__result), "=&r" (__tmp) : "r" (mem), "1" (__value) \
++ : "r0", "r1", "r2", "t", "memory"); \
++ else \
++ abort (); \
++ __result; })
++
++#define atomic_increment_and_test(mem) atomic_add_zero((mem), 1)
++#define atomic_decrement_and_test(mem) atomic_add_zero((mem), -1)
++
++#define atomic_bit_set(mem, bit) \
++ (void) ({ unsigned int __mask = 1 << (bit); \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.b @%0,r2\n\
++ or %1,r2\n\
++ mov.b r2,@%0\n\
++ 1: mov r1,r15"\
++ : : "r" (mem), "r" (__mask) \
++ : "r0", "r1", "r2", "memory"); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.w @%0,r2\n\
++ or %1,r2\n\
++ mov.w r2,@%0\n\
++ 1: mov r1,r15"\
++ : : "r" (mem), "r" (__mask) \
++ : "r0", "r1", "r2", "memory"); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ mov r15,r1\n\
++ mov #-6,r15\n\
++ 0: mov.l @%0,r2\n\
++ or %1,r2\n\
++ mov.l r2,@%0\n\
++ 1: mov r1,r15"\
++ : : "r" (mem), "r" (__mask) \
++ : "r0", "r1", "r2", "memory"); \
++ else \
++ abort (); \
++ })
++
++#define atomic_bit_test_set(mem, bit) \
++ ({ unsigned int __mask = 1 << (bit); \
++ unsigned int __result = __mask; \
++ if (sizeof (*(mem)) == 1) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ nop\n\
++ mov r15,r1\n\
++ mov #-8,r15\n\
++ 0: mov.b @%2,r2\n\
++ or r2,%1\n\
++ and r2,%0\n\
++ mov.b %1,@%2\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result), "=&r" (__mask) \
++ : "r" (mem), "0" (__result), "1" (__mask) \
++ : "r0", "r1", "r2", "memory"); \
++ else if (sizeof (*(mem)) == 2) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ nop\n\
++ mov r15,r1\n\
++ mov #-8,r15\n\
++ 0: mov.w @%2,r2\n\
++ or r2,%1\n\
++ and r2,%0\n\
++ mov.w %1,@%2\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result), "=&r" (__mask) \
++ : "r" (mem), "0" (__result), "1" (__mask) \
++ : "r0", "r1", "r2", "memory"); \
++ else if (sizeof (*(mem)) == 4) \
++ __asm __volatile ("\
++ .align 2\n\
++ mova 1f,r0\n\
++ nop\n\
++ mov r15,r1\n\
++ mov #-8,r15\n\
++ 0: mov.l @%2,r2\n\
++ or r2,%1\n\
++ and r2,%0\n\
++ mov.l %1,@%2\n\
++ 1: mov r1,r15"\
++ : "=&r" (__result), "=&r" (__mask) \
++ : "r" (mem), "0" (__result), "1" (__mask) \
++ : "r0", "r1", "r2", "memory"); \
++ else \
++ abort (); \
++ __result; })
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/socket.S 2003-01-05 06:02:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/socket.S 2003-08-21 08:37:17.000000000 -0400
+@@ -94,7 +94,9 @@
+ #if defined NEED_CANCELLATION && defined CENABLE
+ .Lsocket_cancel:
+ /* Enable asynchronous cancellation. */
++ sts.l pr,@-r15
+ CENABLE
++ lds.l @r15+,pr
+
+ /* Do the system call trap. */
+ mov #+P(SOCKOP_,socket), r4
+@@ -102,9 +104,11 @@
+ mov.l .L1,r3
+ trapa #0x12
+
++ sts.l pr,@-r15
+ mov.l r0,@-r15
+ CDISABLE
+ mov.l @r15+,r0
++ lds.l @r15+,pr
+
+ /* Pop args off the stack */
+ P(POPARGS_,NARGS)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sh/sysdep.h 2003-02-07 21:29:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sh/sysdep.h 2003-09-19 22:37:10.000000000 -0400
+@@ -65,6 +65,29 @@
+ #define PSEUDO_END(name) \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name); \
++ DO_CALL (syscall_name, args)
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#define ret_NOERRNO ret
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY (name); \
++ DO_CALL (syscall_name, args);
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
++#define ret_ERRVAL ret
++
+ #ifndef PIC
+ # define SYSCALL_ERROR_HANDLER \
+ mov.l 0f,r1; \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/shm_open.c 2002-11-01 21:16:02.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/shm_open.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -181,6 +181,11 @@
+ __set_errno (save_errno);
+ }
+ }
++ else if (__builtin_expect (errno == EISDIR, 0))
++ /* It might be better to fold this error with EINVAL since
++ directory names are just another example for unsuitable shared
++ object names and the standard does not mention EISDIR. */
++ __set_errno (EINVAL);
+
+ return fd;
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/shmctl.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/shmctl.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -74,7 +74,8 @@
+ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
+ {
+ #if __ASSUME_IPC64 > 0
+- return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf));
++ return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0,
++ CHECK_1 (buf));
+ #else
+ switch (cmd) {
+ case SHM_STAT:
+@@ -85,63 +86,69 @@
+ #endif
+ break;
+ default:
+- return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, CHECK_1 (buf));
++ return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
++ CHECK_1 (buf));
+ }
+
+ {
+ int save_errno = errno, result;
+- struct __old_shmid_ds old;
++ union
++ {
++ struct __old_shmid_ds ds;
++ struct __old_shminfo info;
++ } old;
+
+ /* Unfortunately there is no way how to find out for sure whether
+ we should use old or new shmctl. */
+- result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, CHECK_1 (buf));
++ result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0,
++ CHECK_1 (buf));
+ if (result != -1 || errno != EINVAL)
+ return result;
+
+ __set_errno(save_errno);
+ if (cmd == IPC_SET)
+ {
+- old.shm_perm.uid = buf->shm_perm.uid;
+- old.shm_perm.gid = buf->shm_perm.gid;
+- old.shm_perm.mode = buf->shm_perm.mode;
+- if (old.shm_perm.uid != buf->shm_perm.uid ||
+- old.shm_perm.gid != buf->shm_perm.gid)
++ old.ds.shm_perm.uid = buf->shm_perm.uid;
++ old.ds.shm_perm.gid = buf->shm_perm.gid;
++ old.ds.shm_perm.mode = buf->shm_perm.mode;
++ if (old.ds.shm_perm.uid != buf->shm_perm.uid ||
++ old.ds.shm_perm.gid != buf->shm_perm.gid)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+ }
+- result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, __ptrvalue (&old));
++ result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0,
++ __ptrvalue (&old.ds));
+ if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT))
+ {
+ memset(buf, 0, sizeof(*buf));
+- buf->shm_perm.__key = old.shm_perm.__key;
+- buf->shm_perm.uid = old.shm_perm.uid;
+- buf->shm_perm.gid = old.shm_perm.gid;
+- buf->shm_perm.cuid = old.shm_perm.cuid;
+- buf->shm_perm.cgid = old.shm_perm.cgid;
+- buf->shm_perm.mode = old.shm_perm.mode;
+- buf->shm_perm.__seq = old.shm_perm.__seq;
+- buf->shm_atime = old.shm_atime;
+- buf->shm_dtime = old.shm_dtime;
+- buf->shm_ctime = old.shm_ctime;
+- buf->shm_segsz = old.shm_segsz;
+- buf->shm_nattch = old.shm_nattch;
+- buf->shm_cpid = old.shm_cpid;
+- buf->shm_lpid = old.shm_lpid;
++ buf->shm_perm.__key = old.ds.shm_perm.__key;
++ buf->shm_perm.uid = old.ds.shm_perm.uid;
++ buf->shm_perm.gid = old.ds.shm_perm.gid;
++ buf->shm_perm.cuid = old.ds.shm_perm.cuid;
++ buf->shm_perm.cgid = old.ds.shm_perm.cgid;
++ buf->shm_perm.mode = old.ds.shm_perm.mode;
++ buf->shm_perm.__seq = old.ds.shm_perm.__seq;
++ buf->shm_atime = old.ds.shm_atime;
++ buf->shm_dtime = old.ds.shm_dtime;
++ buf->shm_ctime = old.ds.shm_ctime;
++ buf->shm_segsz = old.ds.shm_segsz;
++ buf->shm_nattch = old.ds.shm_nattch;
++ buf->shm_cpid = old.ds.shm_cpid;
++ buf->shm_lpid = old.ds.shm_lpid;
+ }
+ #if __WORDSIZE != 32
+ else if (result != -1 && cmd == IPC_INFO)
+ {
+- struct __old_shminfo *oldi = (struct __old_shminfo *)&old;
+ struct shminfo *i = (struct shminfo *)buf;
+
+ memset(i, 0, sizeof(*i));
+- i->shmmax = oldi->shmmax;
+- i->shmmin = oldi->shmmin;
+- i->shmmni = oldi->shmmni;
+- i->shmseg = oldi->shmseg;
+- i->shmall = oldi->shmall;
++ i->shmmax = old.info.shmmax;
++ i->shmmin = old.info.shmmin;
++ i->shmmni = old.info.shmmni;
++ i->shmseg = old.info.shmseg;
++ i->shmall = old.info.shmall;
+ }
+ #endif
+ return result;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigaction.c 2003-01-02 18:26:05.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigaction.c 2003-09-19 22:37:08.000000000 -0400
+@@ -34,12 +34,7 @@
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. This is the definition. */
+ int __libc_missing_rt_sigs;
+-
+-extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded,
+- struct old_kernel_sigaction *__unbounded);
+ #endif
+-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
+- struct kernel_sigaction *__unbounded, size_t);
+
+
+ /* If ACT is not NULL, change the action for SIG to *ACT.
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/siglist.h 2002-11-01 21:16:02.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/siglist.h 2003-04-12 11:39:49.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996,1997,1998,1999,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,3 +21,5 @@
+ #include_next <siglist.h> /* Get the canonical list. */
+
+ #define OLD_SIGLIST_SIZE 32 /* For GLIBC_2.0 binary compatibility. */
++
++#define OLD2_SIGLIST_SIZE 64 /* For GLIBC_2.1 binary compatibility. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigpending.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigpending.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,9 +26,6 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_sigpending (sigset_t *__unbounded);
+-extern int __syscall_rt_sigpending (sigset_t *__unbounded, size_t);
+-
+
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. The definition is in sigaction.c. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigprocmask.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigprocmask.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,11 +27,6 @@
+ #include "kernel-features.h"
+
+
+-extern int __syscall_sigprocmask (int, const sigset_t *__unbounded,
+- sigset_t *__unbounded);
+-extern int __syscall_rt_sigprocmask (int, const sigset_t *__unbounded,
+- sigset_t *__unbounded, size_t);
+-
+ /* The variable is shared between all wrappers around signal handling
+ functions which have RT equivalents. The definition is in sigaction.c. */
+ extern int __libc_missing_rt_sigs;
+@@ -44,6 +39,19 @@
+ const sigset_t *set;
+ sigset_t *oset;
+ {
++#ifdef SIGCANCEL
++ sigset_t local_newmask;
++
++ /* The only thing we have to make sure here is that SIGCANCEL is not
++ blocked. */
++ if (set != NULL && __builtin_expect (__sigismember (set, SIGCANCEL), 0))
++ {
++ local_newmask = *set;
++ __sigdelset (&local_newmask, SIGCANCEL);
++ set = &local_newmask;
++ }
++#endif
++
+ #if __ASSUME_REALTIME_SIGNALS > 0
+ return INLINE_SYSCALL (rt_sigprocmask, 4, how, CHECK_SIGSET_NULL_OK (set),
+ CHECK_SIGSET_NULL_OK (oset), _NSIG / 8);
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigqueue.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigqueue.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,8 +24,6 @@
+ #include <sysdep.h>
+ #include <sys/syscall.h>
+
+-extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *__unbounded);
+-
+ #ifdef __NR_rt_sigqueueinfo
+ /* Return any pending signal or wait for one for the given time. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigsuspend.c 2002-12-15 04:04:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigsuspend.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,9 +27,6 @@
+
+ #include "kernel-features.h"
+
+-extern int __syscall_sigsuspend (int, unsigned long int, unsigned long int);
+-extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
+-
+
+ #if !__ASSUME_REALTIME_SIGNALS
+ /* The variable is shared between all wrappers around signal handling
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigtimedwait.c 2002-12-15 04:11:58.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigtimedwait.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -18,14 +18,44 @@
+
+ #include <errno.h>
+ #include <signal.h>
++#include <string.h>
+
+ #include <sysdep-cancel.h>
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+ #ifdef __NR_rt_sigtimedwait
+-extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded,
+- const struct timespec *__unbounded, size_t);
++
++static int
++do_sigtimedwait (const sigset_t *set, siginfo_t *info,
++ const struct timespec *timeout)
++{
++#ifdef SIGCANCEL
++ sigset_t tmpset;
++ if (set != NULL && __sigismember (set, SIGCANCEL))
++ {
++ /* Create a temporary mask without the bit for SIGCANCEL set. */
++ // We are not copying more than we have to.
++ memcpy (&tmpset, set, _NSIG / 8);
++ __sigdelset (&tmpset, SIGCANCEL);
++ set = &tmpset;
++ }
++#endif
++
++ /* XXX The size argument hopefully will have to be changed to the
++ real size of the user-level sigset_t. */
++ int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
++ CHECK_1 (info), timeout, _NSIG / 8);
++
++ /* The kernel generates a SI_TKILL code in si_code in case tkill is
++ used. tkill is transparently used in raise(). Since having
++ SI_TKILL as a code is useful in general we fold the results
++ here. */
++ if (result != -1 && info != NULL && info->si_code == SI_TKILL)
++ info->si_code = SI_USER;
++
++ return result;
++}
+
+
+ /* Return any pending signal or wait for one for the given time. */
+@@ -36,17 +66,13 @@
+ const struct timespec *timeout;
+ {
+ if (SINGLE_THREAD_P)
+- /* XXX The size argument hopefully will have to be changed to the
+- real size of the user-level sigset_t. */
+- return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
+- CHECK_1 (info), timeout, _NSIG / 8);
++ return do_sigtimedwait (set, info, timeout);
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+- int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
+- CHECK_1 (info), timeout, _NSIG / 8);
++ int result = do_sigtimedwait (set, info, timeout);
+
+ LIBC_CANCEL_RESET (oldtype);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigwait.c 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigwait.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,15 +20,13 @@
+ #include <signal.h>
+ #define __need_NULL
+ #include <stddef.h>
++#include <string.h>
+
+ #include <sysdep-cancel.h>
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+ #ifdef __NR_rt_sigtimedwait
+-extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded,
+- const struct timespec *__unbounded, size_t);
+-
+
+ /* Return any pending signal or wait for one for the given time. */
+ static int
+@@ -36,6 +34,18 @@
+ {
+ int ret;
+
++#ifdef SIGCANCEL
++ sigset_t tmpset;
++ if (set != NULL && __sigismember (set, SIGCANCEL))
++ {
++ /* Create a temporary mask without the bit for SIGCANCEL set. */
++ // We are not copying more than we have to.
++ memcpy (&tmpset, set, _NSIG / 8);
++ __sigdelset (&tmpset, SIGCANCEL);
++ set = &tmpset;
++ }
++#endif
++
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+ #ifdef INTERNAL_SYSCALL
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sigwaitinfo.c 2002-12-15 04:26:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sigwaitinfo.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -20,14 +20,43 @@
+ #include <signal.h>
+ #define __need_NULL
+ #include <stddef.h>
++#include <string.h>
+
+ #include <sysdep-cancel.h>
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+ #ifdef __NR_rt_sigtimedwait
+-extern int __syscall_rt_sigtimedwait (const sigset_t *__unbounded, siginfo_t *__unbounded,
+- const struct timespec *__unbounded, size_t);
++
++static int
++do_sigwaitinfo (const sigset_t *set, siginfo_t *info)
++{
++#ifdef SIGCANCEL
++ sigset_t tmpset;
++ if (set != NULL && __sigismember (set, SIGCANCEL))
++ {
++ /* Create a temporary mask without the bit for SIGCANCEL set. */
++ // We are not copying more than we have to.
++ memcpy (&tmpset, set, _NSIG / 8);
++ __sigdelset (&tmpset, SIGCANCEL);
++ set = &tmpset;
++ }
++#endif
++
++ /* XXX The size argument hopefully will have to be changed to the
++ real size of the user-level sigset_t. */
++ int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
++ CHECK_1 (info), NULL, _NSIG / 8);
++
++ /* The kernel generates a SI_TKILL code in si_code in case tkill is
++ used. tkill is transparently used in raise(). Since having
++ SI_TKILL as a code is useful in general we fold the results
++ here. */
++ if (result != -1 && info != NULL && info->si_code == SI_TKILL)
++ info->si_code = SI_USER;
++
++ return result;
++}
+
+
+ /* Return any pending signal or wait for one for the given time. */
+@@ -37,17 +66,13 @@
+ siginfo_t *info;
+ {
+ if (SINGLE_THREAD_P)
+- /* XXX The size argument hopefully will have to be changed to the
+- real size of the user-level sigset_t. */
+- return INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
+- CHECK_1 (info), NULL, _NSIG / 8);
++ return do_sigwaitinfo (set, info);
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+- int result = INLINE_SYSCALL (rt_sigtimedwait, 4, CHECK_SIGSET (set),
+- CHECK_1 (info), NULL, _NSIG / 8);
++ int result = do_sigwaitinfo (set, info);
+
+ LIBC_CANCEL_RESET (oldtype);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sleep.c 2002-12-15 23:26:37.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sleep.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Implementation of the POSIX sleep function using nanosleep.
+- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -22,27 +22,61 @@
+ #include <time.h>
+ #include <signal.h>
+ #include <unistd.h>
++#include <sys/param.h>
++
++
++#if 0
++static void
++cl (void *arg)
++{
++ (void) __sigprocmask (SIG_SETMASK, arg, (sigset_t *) NULL);
++}
++#endif
++
+
+ /* We are going to use the `nanosleep' syscall of the kernel. But the
+- kernel does not implement the sstupid SysV SIGCHLD vs. SIG_IGN
++ kernel does not implement the stupid SysV SIGCHLD vs. SIG_IGN
+ behaviour for this syscall. Therefore we have to emulate it here. */
+ unsigned int
+ __sleep (unsigned int seconds)
+ {
+- struct timespec ts = { .tv_sec = (long int) seconds, .tv_nsec = 0 };
++ const unsigned int max
++ = (unsigned int) (((unsigned long int) (~((time_t) 0))) >> 1);
++ struct timespec ts;
+ sigset_t set, oset;
+ unsigned int result;
+
+ /* This is not necessary but some buggy programs depend on this. */
+- if (seconds == 0)
+- return 0;
++ if (__builtin_expect (seconds == 0, 0))
++ {
++#ifdef CANCELLATION_P
++ CANCELLATION_P (THREAD_SELF);
++#endif
++ return 0;
++ }
++
++ ts.tv_sec = 0;
++ ts.tv_nsec = 0;
++ again:
++ if (sizeof (ts.tv_sec) <= sizeof (seconds))
++ {
++ /* Since SECONDS is unsigned assigning the value to .tv_sec can
++ overflow it. In this case we have to wait in steps. */
++ ts.tv_sec += MIN (seconds, max);
++ seconds -= (unsigned int) ts.tv_sec;
++ }
++ else
++ {
++ ts.tv_sec = (time_t) seconds;
++ seconds = 0;
++ }
+
+ /* Linux will wake up the system call, nanosleep, when SIGCHLD
+ arrives even if SIGCHLD is ignored. We have to deal with it
+ in libc. We block SIGCHLD first. */
+- if (__sigemptyset (&set) < 0
+- || __sigaddset (&set, SIGCHLD) < 0
+- || __sigprocmask (SIG_BLOCK, &set, &oset))
++ __sigemptyset (&set);
++ __sigaddset (&set, SIGCHLD);
++ if (__sigprocmask (SIG_BLOCK, &set, &oset))
+ return -1;
+
+ /* If SIGCHLD is already blocked, we don't have to do anything. */
+@@ -51,8 +85,8 @@
+ int saved_errno;
+ struct sigaction oact;
+
+- if (__sigemptyset (&set) < 0 || __sigaddset (&set, SIGCHLD) < 0)
+- return -1;
++ __sigemptyset (&set);
++ __sigaddset (&set, SIGCHLD);
+
+ /* We get the signal handler for SIGCHLD. */
+ if (__sigaction (SIGCHLD, (struct sigaction *) NULL, &oact) < 0)
+@@ -64,29 +98,50 @@
+ return -1;
+ }
+
++ /* Note the sleep() is a cancellation point. But since we call
++ nanosleep() which itself is a cancellation point we do not
++ have to do anything here. */
+ if (oact.sa_handler == SIG_IGN)
+ {
++ //__libc_cleanup_push (cl, &oset);
++
+ /* We should leave SIGCHLD blocked. */
+- result = __nanosleep (&ts, &ts);
++ while (1)
++ {
++ result = __nanosleep (&ts, &ts);
++
++ if (result != 0 || seconds == 0)
++ break;
++
++ if (sizeof (ts.tv_sec) <= sizeof (seconds))
++ {
++ ts.tv_sec = MIN (seconds, max);
++ seconds -= (unsigned int) ts.tv_nsec;
++ }
++ }
++
++ //__libc_cleanup_pop (0);
+
+ saved_errno = errno;
+ /* Restore the original signal mask. */
+ (void) __sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL);
+ __set_errno (saved_errno);
++
++ goto out;
+ }
+- else
+- {
+- /* We should unblock SIGCHLD. Restore the original signal mask. */
+- (void) __sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL);
+- result = __nanosleep (&ts, &ts);
+- }
++
++ /* We should unblock SIGCHLD. Restore the original signal mask. */
++ (void) __sigprocmask (SIG_SETMASK, &oset, (sigset_t *) NULL);
+ }
+- else
+- result = __nanosleep (&ts, &ts);
+
++ result = __nanosleep (&ts, &ts);
++ if (result == 0 && seconds != 0)
++ goto again;
++
++ out:
+ if (result != 0)
+ /* Round remaining time. */
+- result = (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L);
++ result = seconds + (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L);
+
+ return result;
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/a.out.h 2003-07-25 05:04:58.000000000 -0400
+@@ -0,0 +1,174 @@
++#ifndef __A_OUT_GNU_H__
++#define __A_OUT_GNU_H__
++
++#include <bits/a.out.h>
++
++#define __GNU_EXEC_MACROS__
++
++struct exec
++{
++ unsigned char a_dynamic:1; /* A __DYNAMIC is in this image. */
++ unsigned char a_toolversion:7;
++ unsigned char a_machtype;
++ unsigned short a_info;
++ unsigned int a_text; /* Length of text, in bytes. */
++ unsigned int a_data; /* Length of data, in bytes. */
++ unsigned int a_bss; /* Length of bss, in bytes. */
++ unsigned int a_syms; /* Length of symbol table, in bytes. */
++ unsigned int a_entry; /* Where program begins. */
++ unsigned int a_trsize;
++ unsigned int a_drsize;
++};
++
++enum machine_type
++{
++ M_OLDSUN2 = 0,
++ M_68010 = 1,
++ M_68020 = 2,
++ M_SPARC = 3,
++ M_386 = 100,
++ M_MIPS1 = 151,
++ M_MIPS2 = 152
++};
++
++#define N_MAGIC(exec) ((exec).a_info & 0xffff)
++#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
++#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
++#define N_SET_INFO(exec, magic, type, flags) \
++ ((exec).a_info = ((magic) & 0xffff) \
++ | (((int)(type) & 0xff) << 16) \
++ | (((flags) & 0xff) << 24))
++#define N_SET_MAGIC(exec, magic) \
++ ((exec).a_info = ((exec).a_info & 0xffff0000) | ((magic) & 0xffff))
++#define N_SET_MACHTYPE(exec, machtype) \
++ ((exec).a_info = \
++ ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
++#define N_SET_FLAGS(exec, flags) \
++ ((exec).a_info = \
++ ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
++
++/* Code indicating object file or impure executable. */
++#define OMAGIC 0407
++/* Code indicating pure executable. */
++#define NMAGIC 0410
++/* Code indicating demand-paged executable. */
++#define ZMAGIC 0413
++/* This indicates a demand-paged executable with the header in the text.
++ The first page is unmapped to help trap NULL pointer references. */
++#define QMAGIC 0314
++/* Code indicating core file. */
++#define CMAGIC 0421
++
++#define N_TRSIZE(a) ((a).a_trsize)
++#define N_DRSIZE(a) ((a).a_drsize)
++#define N_SYMSIZE(a) ((a).a_syms)
++#define N_BADMAG(x) \
++ (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \
++ && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC)
++#define _N_HDROFF(x) (1024 - sizeof (struct exec))
++#define N_TXTOFF(x) \
++ (N_MAGIC(x) == ZMAGIC ? 0 : sizeof (struct exec))
++#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
++#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
++#define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
++#define N_SYMOFF(x) \
++ (N_TXTOFF(x) + (x).a_text + (x).a_data + (x).a_trsize + (x).a_drsize)
++#define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
++
++#define SPARC_PGSIZE 0x2000
++
++/* Address of text segment in memory after it is loaded. */
++#define N_TXTADDR(x) \
++ (unsigned long)(((N_MAGIC(x) == ZMAGIC) && ((x).a_entry < SPARC_PGSIZE)) \
++ ? 0 : SPARC_PGSIZE)
++
++/* Address of data segment in memory after it is loaded. */
++#define SEGMENT_SIZE SPARC_PGSIZE
++
++#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
++#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
++
++#define N_DATADDR(x) \
++ (N_MAGIC(x)==OMAGIC \
++ ? (N_TXTADDR(x) + (x).a_text) \
++ : (unsigned long)(_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
++#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
++
++#if !defined (N_NLIST_DECLARED)
++struct nlist
++{
++ union
++ {
++ char *n_name;
++ struct nlist *n_next;
++ long n_strx;
++ } n_un;
++ unsigned char n_type;
++ char n_other;
++ short n_desc;
++ unsigned long n_value;
++};
++#endif /* no N_NLIST_DECLARED. */
++
++#define N_UNDF 0
++#define N_ABS 2
++#define N_TEXT 4
++#define N_DATA 6
++#define N_BSS 8
++#define N_FN 15
++#define N_EXT 1
++#define N_TYPE 036
++#define N_STAB 0340
++#define N_INDR 0xa
++#define N_SETA 0x14 /* Absolute set element symbol. */
++#define N_SETT 0x16 /* Text set element symbol. */
++#define N_SETD 0x18 /* Data set element symbol. */
++#define N_SETB 0x1A /* Bss set element symbol. */
++#define N_SETV 0x1C /* Pointer to set vector in data area. */
++
++#if !defined (N_RELOCATION_INFO_DECLARED)
++enum reloc_type
++{
++ RELOC_8,
++ RELOC_16,
++ RELOC_32,
++ RELOC_DISP8,
++ RELOC_DISP16,
++ RELOC_DISP32,
++ RELOC_WDISP30,
++ RELOC_WDISP22,
++ RELOC_HI22,
++ RELOC_22,
++ RELOC_13,
++ RELOC_LO10,
++ RELOC_SFA_BASE,
++ RELOC_SFA_OFF13,
++ RELOC_BASE10,
++ RELOC_BASE13,
++ RELOC_BASE22,
++ RELOC_PC10,
++ RELOC_PC22,
++ RELOC_JMP_TBL,
++ RELOC_SEGOFF16,
++ RELOC_GLOB_DAT,
++ RELOC_JMP_SLOT,
++ RELOC_RELATIVE
++};
++
++/* This structure describes a single relocation to be performed.
++ The text-relocation section of the file is a vector of these structures,
++ all of which apply to the text section.
++ Likewise, the data-relocation section applies to the data section. */
++
++struct relocation_info
++{
++ unsigned int r_address;
++ unsigned int r_index:24;
++ unsigned int r_extern:1;
++ int r_pad:2;
++ enum reloc_type r_type:5;
++ int r_addend;
++};
++#endif /* no N_RELOCATION_INFO_DECLARED. */
++
++#endif /* __A_OUT_GNU_H__ */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/a.out.h 2003-07-25 05:04:58.000000000 -0400
+@@ -0,0 +1,13 @@
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
++
++#include <bits/wordsize.h>
++
++#if __WORDSIZE == 64
++
++/* Signal to users of this header that this architecture really doesn't
++ support a.out binary format. */
++#define __NO_A_OUT_SUPPORT 1
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h 2001-07-07 15:21:36.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h 2003-09-19 22:37:10.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997,1999,2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -16,8 +16,10 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
+
+-#ifndef _SETJMP_H
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -78,3 +80,5 @@
+ ((int) (address) < (jmpbuf)[JB_SP])
+
+ #endif
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h 2002-12-04 19:22:51.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h 2003-04-24 20:06:02.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* siginfo_t, sigevent and constants. Linux/SPARC version.
+- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -69,8 +69,9 @@
+ /* POSIX.1b timers. */
+ struct
+ {
+- unsigned int _timer1;
+- unsigned int _timer2;
++ int si_tid; /* Timer ID. */
++ int si_overrun; /* Overrun count. */
++ sigval_t si_sigval; /* Signal value. */
+ } _timer;
+
+ /* POSIX.1b signals. */
+@@ -111,8 +112,8 @@
+ /* X/Open requires some more fields with fixed names. */
+ # define si_pid _sifields._kill.si_pid
+ # define si_uid _sifields._kill.si_uid
+-# define si_timer1 _sifields._timer._timer1
+-# define si_timer2 _sifields._timer._timer2
++# define si_timerid _sifields._timer.si_tid
++# define si_overrun _sifields._timer.si_overrun
+ # define si_status _sifields._sigchld.si_status
+ # define si_utime _sifields._sigchld.si_utime
+ # define si_stime _sifields._sigchld.si_stime
+@@ -129,8 +130,10 @@
+ signals. */
+ enum
+ {
+- SI_ASYNCNL = -6, /* Sent by asynch name lookup completion. */
++ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+ # define SI_ASYNCNL SI_ASYNCNL
++ SI_TKILL = -6, /* Sent by tkill. */
++# define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+ # define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+@@ -276,9 +279,6 @@
+ # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+ # endif
+
+-/* Forward declaration of the `pthread_attr_t' type. */
+-struct __pthread_attr_s;
+-
+ typedef struct sigevent
+ {
+ sigval_t sigev_value;
+@@ -308,8 +308,11 @@
+ # define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+ # define SIGEV_NONE SIGEV_NONE
+- SIGEV_THREAD /* Deliver via thread creation. */
++ SIGEV_THREAD, /* Deliver via thread creation. */
+ # define SIGEV_THREAD SIGEV_THREAD
++
++ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
++#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+ };
+
+ #endif /* have _SIGNAL_H. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/signum.h 2001-07-07 15:21:36.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/signum.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Signal number definitions. Linux/SPARC version.
+- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -70,7 +70,7 @@
+ #define SIGUSR1 30
+ #define SIGUSR2 31
+
+-#define _NSIG 64 /* Biggest signal number + 1
++#define _NSIG 65 /* Biggest signal number + 1
+ (including real-time signals). */
+
+ #define SIGRTMIN (__libc_current_sigrtmin ())
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/stat.h 2002-12-31 15:08:58.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/stat.h 2003-08-21 08:37:17.000000000 -0400
+@@ -150,6 +150,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2002-10-23 19:48:46.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2003-08-21 08:37:17.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* bits/typesizes.h -- underlying types for *_t. Linux/SPARC version.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -54,9 +54,10 @@
+ #define __SWBLK_T_TYPE __SLONGWORD_TYPE
+ #define __KEY_T_TYPE __S32_TYPE
+ #define __CLOCKID_T_TYPE __S32_TYPE
+-#define __TIMER_T_TYPE __S32_TYPE
++#define __TIMER_T_TYPE void *
+ #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+ #define __FSID_T_TYPE struct { int __val[2]; }
++#define __SSIZE_T_TYPE __SWORD_TYPE
+
+ /* Number of descriptors that can fit in an `fd_set'. */
+ #define __FD_SETSIZE 1024
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/dl-cache.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/dl-cache.h 2003-06-25 04:03:35.000000000 -0400
+@@ -0,0 +1,39 @@
++/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define add_system_dir(dir) \
++ do \
++ { \
++ size_t len = strlen (dir); \
++ char path[len + 3]; \
++ memcpy (path, dir, len + 1); \
++ if (len >= 6 && ! memcmp (path + len - 6, "/lib64", 6)) \
++ { \
++ len -= 2; \
++ path[len] = '\0'; \
++ } \
++ add_dir (path); \
++ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \
++ { \
++ memcpy (path + len, "64", 3); \
++ add_dir (path); \
++ } \
++ } while (0)
++
++#include <sysdeps/generic/dl-cache.h>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile 2002-10-14 00:04:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile 2003-09-19 22:37:11.000000000 -0400
+@@ -9,8 +9,3 @@
+ sysdep-others += lddlibc4
+ install-bin += lddlibc4
+ endif # elf
+-
+-ifeq ($(subdir),signal)
+-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
+- rt_sigqueueinfo rt_sigaction rt_sigpending
+-endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Versions 2002-08-23 15:47:01.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/Versions 2003-09-19 22:37:11.000000000 -0400
+@@ -17,4 +17,7 @@
+ # s*
+ scandir64;
+ }
++ GLIBC_2.3.3 {
++ posix_fadvise64; posix_fallocate64;
++ }
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 2001-07-07 15:21:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 2003-09-19 22:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Richard Henderson (rth@tamu.edu).
+
+@@ -23,7 +23,8 @@
+ #include <asm/errno.h>
+ #include <asm/unistd.h>
+
+-/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
++/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
++ pid_t *ptid, void *tls, pid_t *ctid); */
+
+ .text
+ .align 4
+@@ -39,6 +40,12 @@
+ orcc %i1,%g0,%o1
+ be .Lerror
+ mov %i2,%o0
++ /* ptid */
++ mov %i4,%o2
++ /* tls */
++ mov %i5,%o3
++ /* ctid */
++ ld [%fp+92],%o4
+
+ /* Do the system call */
+ set __NR_clone,%g1
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c 2002-02-01 14:00:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.c 2003-08-21 08:37:17.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Data for Linux/sparc32 version of processor capability information.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
+
+@@ -40,13 +40,14 @@
+ needed.
+ */
+
+-#ifdef PROCINFO_DECL
+-EXTERN
++#ifndef PROCINFO_CLASS
++#define PROCINFO_CLASS
+ #endif
++
+ #if !defined PROCINFO_DECL && defined SHARED
+ ._dl_sparc32_cap_flags
+ #else
+-const char _dl_sparc32_cap_flags[6][7]
++PROCINFO_CLASS const char _dl_sparc32_cap_flags[6][7]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+@@ -60,3 +61,4 @@
+ #endif
+
+ #undef PROCINFO_DECL
++#undef PROCINFO_CLASS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h 2002-02-01 14:00:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Linux/sparc32 version of processor capability information handling macros.
+- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
+
+@@ -50,7 +50,7 @@
+ };
+
+ static inline int
+-__attribute__ ((unused))
++__attribute__ ((unused, always_inline))
+ _dl_string_hwcap (const char *str)
+ {
+ int i;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c 2002-08-02 17:46:59.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize.c 2003-09-19 22:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,6 +19,7 @@
+ #include <unistd.h>
+ #include <sys/param.h>
+ #include <ldsodefs.h>
++#include <sysdep.h>
+
+ /* Return the system page size. This value will either be 4k or 8k depending
+ on whether or not we are running on Sparc v9 machine. */
+@@ -27,13 +28,14 @@
+ via the AT_PAGESZ auxiliary argument. If we are a static program, we
+ use the getpagesize system call. */
+
+-extern size_t __syscall_getpagesize(void);
+-
+ int
+ __getpagesize ()
+ {
+ if (GL(dl_pagesize) == 0)
+- GL(dl_pagesize) = __syscall_getpagesize();
++ {
++ INTERNAL_SYSCALL_DECL (err);
++ GL(dl_pagesize) = INTERNAL_SYSCALL (getpagesize, err, 0);
++ }
+ return GL(dl_pagesize);
+ }
+ libc_hidden_def (__getpagesize)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c 2002-04-26 16:33:51.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/semctl.c 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Semctl for architectures where word sized unions are passed indirectly
+- Copyright (C) 1995, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1995,1997,1998,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+@@ -49,6 +49,7 @@
+ struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
+ unsigned short int *array; /* array for GETALL & SETALL */
+ struct seminfo *__buf; /* buffer for IPC_INFO */
++ struct __old_semid_ds *__old_buf;
+ };
+
+ #include <bp-checks.h>
+@@ -168,7 +169,7 @@
+ #endif
+
+ buf = arg.buf;
+- arg.buf = (struct semid_ds *)&old;
++ arg.__old_buf = &old;
+ if (cmd == IPC_SET)
+ {
+ old.sem_perm.uid = buf->sem_perm.uid;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c 2002-08-13 10:29:44.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/setegid.c 2003-08-21 08:37:17.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -38,11 +38,13 @@
+
+ /* First try the syscall. */
+ result = __setresgid (-1, gid, -1);
++# if __ASSUME_SETRESGID_SYSCALL == 0
+ if (result == -1 && errno == ENOSYS)
+ /* No system call available. Use emulation. This may not work
+ since `setregid' also sets the saved group ID when GID is not
+ equal to the real group ID, making it impossible to switch back. */
+ result = __setregid (-1, gid);
++# endif
+
+ return result;
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c 2003-01-02 18:26:05.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c 2003-09-19 22:37:11.000000000 -0400
+@@ -23,10 +23,7 @@
+ #include <sys/signal.h>
+ #include <errno.h>
+ #include <kernel_sigaction.h>
+-
+-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
+- struct kernel_sigaction *, unsigned long,
+- size_t);
++#include <sysdep.h>
+
+ static void __rt_sigreturn_stub (void);
+ static void __sigreturn_stub (void);
+@@ -64,9 +61,8 @@
+
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+- ret = __syscall_rt_sigaction (sig, act ? &kact : 0,
+- oact ? &koact : 0,
+- stub, _NSIG / 8);
++ ret = INLINE_SYSCALL (rt_sigaction, 5, sig, act ? &kact : 0,
++ oact ? &koact : 0, stub, _NSIG / 8);
+
+ if (ret >= 0 || errno != ENOSYS)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S 2003-09-19 22:37:11.000000000 -0400
+@@ -79,7 +79,11 @@
+
+ #if defined NEED_CANCELLATION && defined CENABLE
+ .Lsocket_cancel:
++ cfi_startproc
+ save %sp, -96, %sp
++ cfi_def_cfa_register (%fp)
++ cfi_window_save
++ cfi_register (%o7, %i7)
+ CENABLE
+ nop
+ mov %o0, %l0
+@@ -93,6 +97,7 @@
+ mov %l0, %o0
+ jmpl %i7 + 8, %g0
+ restore %g0, %l1, %o0
++ cfi_endproc
+ SYSCALL_ERROR_HANDLER2
+ #endif
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list 2002-10-14 00:04:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list 2003-09-19 22:37:11.000000000 -0400
+@@ -1,27 +1,8 @@
+ # File name Caller Syscall name # args Strong name Weak names
+
+-s_getgroups getgroups getgroups 2 __syscall_getgroups
+-s_getpagesize getpagesize getpagesize 0 __syscall_getpagesize
+-s_llseek llseek _llseek 5 __syscall__llseek
+-s_setfsgid setfsgid setfsgid 1 __syscall_setfsgid
+-s_setfsuid setfsuid setfsuid 1 __syscall_setfsuid
+-s_setgid setgid setgid 1 __syscall_setgid
+-s_setgroups setgroups setgroups 2 __syscall_setgroups
+-s_setregid setregid setregid 2 __syscall_setregid
+-s_setreuid setreuid setreuid 2 __syscall_setreuid
+ setrlimit - setrlimit 2 __setrlimit setrlimit
+ getrlimit - getrlimit 2 __getrlimit getrlimit
+-s_ipc msgget ipc 5 __syscall_ipc
+-s_setuid setuid setuid 1 __syscall_setuid
+ setresuid - setresuid32 3 __setresuid setresuid
+ setresgid - setresgid32 3 __setresgid setresgid
+ getresuid - getresuid32 3 getresuid
+ getresgid - getresgid32 3 getresgid
+-
+-# System calls with wrappers.
+-rt_sigaction - rt_sigaction 4 __syscall_rt_sigaction
+-rt_sigpending - rt_sigpending 2 __syscall_rt_sigpending
+-rt_sigprocmask - rt_sigprocmask 4 __syscall_rt_sigprocmask
+-rt_sigqueueinfo - rt_sigqueueinfo 3 __syscall_rt_sigqueueinfo
+-rt_sigsuspend - rt_sigsuspend 2 __syscall_rt_sigsuspend
+-rt_sigtimedwait - rt_sigtimedwait 4 __syscall_rt_sigtimedwait
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2003-09-19 22:37:11.000000000 -0400
+@@ -25,6 +25,7 @@
+ #ifdef IS_IN_rtld
+ # include <dl-sysdep.h> /* Defines RTLD_PRIVATE_ERRNO. */
+ #endif
++#include <tls.h>
+
+ #undef SYS_ify
+ #define SYS_ify(syscall_name) __NR_##syscall_name
+@@ -35,6 +36,8 @@
+
+ /* Linux/SPARC uses a different trap number */
+ #undef PSEUDO
++#undef PSEUDO_NOERRNO
++#undef PSEUDO_ERRVAL
+ #undef ENTRY
+ #undef END
+ #undef LOC
+@@ -85,6 +88,47 @@
+ jmpl %i7+8, %g0; \
+ restore %g0, -1, %o0; \
+ .previous;
++#elif USE___THREAD
++# ifndef NOT_IN_libc
++# define SYSCALL_ERROR_ERRNO __libc_errno
++# else
++# define SYSCALL_ERROR_ERRNO errno
++# endif
++# ifdef SHARED
++# define SYSCALL_ERROR_HANDLER \
++ .section .gnu.linkonce.t.__sparc.get_pic.l7,"ax",@progbits; \
++ .globl __sparc.get_pic.l7; \
++ .hidden __sparc.get_pic.l7; \
++ .type __sparc.get_pic.l7,@function; \
++__sparc.get_pic.l7: \
++ retl; \
++ add %o7, %l7, %l7; \
++ .previous; \
++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
++ save %sp,-96,%sp; \
++ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %l1; \
++ sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \
++ call __sparc.get_pic.l7; \
++ add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; \
++ add %l1, %tie_lo10(SYSCALL_ERROR_ERRNO), %l1; \
++ ld [%l7 + %l1], %l1, %tie_ld(SYSCALL_ERROR_ERRNO); \
++ st %i0, [%g7 + %l1], %tie_add(SYSCALL_ERROR_ERRNO); \
++ jmpl %i7+8, %g0; \
++ restore %g0, -1, %o0; \
++ .previous;
++# else
++# define SYSCALL_ERROR_HANDLER \
++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
++ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %g1; \
++ sethi %hi(_GLOBAL_OFFSET_TABLE_), %g2; \
++ add %g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1; \
++ add %g2, %lo(_GLOBAL_OFFSET_TABLE_), %g2; \
++ ld [%g2 + %g1], %g1, %tie_ld(SYSCALL_ERROR_ERRNO); \
++ st %o0, [%g7 + %g1], %tie_add(SYSCALL_ERROR_ERRNO); \
++ jmpl %o7+8, %g0; \
++ mov -1, %o0; \
++ .previous;
++# endif
+ #else
+ # define SYSCALL_ERROR_HANDLER \
+ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
+@@ -108,6 +152,18 @@
+ nop; \
+ SYSCALL_ERROR_HANDLER
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY(name); \
++ LOADSYSCALL(syscall_name); \
++ ta 0x10
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY(name); \
++ LOADSYSCALL(syscall_name); \
++ ta 0x10
++
+ #else /* __ASSEMBLER__ */
+
+ #define __SYSCALL_STRING \
+@@ -125,6 +181,22 @@
+ " restore %%g0, -1, %%o0;" \
+ ".previous;"
+
++#define __CLONE_SYSCALL_STRING \
++ "ta 0x10;" \
++ "bcs 2f;" \
++ " sub %%o1, 1, %%o1;" \
++ "and %%o0, %%o1, %%o0;" \
++ "1:" \
++ ".subsection 2;" \
++ "2:" \
++ "save %%sp, -192, %%sp;" \
++ "call __errno_location;" \
++ " nop;" \
++ "st %%i0, [%%o0];" \
++ "ba 1b;" \
++ " restore %%g0, -1, %%o0;" \
++ ".previous;"
++
+ #define __INTERNAL_SYSCALL_STRING \
+ "ta 0x10;" \
+ "bcs,a 1f;" \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c 2002-02-01 14:00:17.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.c 2003-08-21 08:37:17.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Data for Linux/sparc64 version of processor capability information.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
+
+@@ -40,13 +40,14 @@
+ needed.
+ */
+
+-#ifdef PROCINFO_DECL
+-EXTERN
++#ifndef PROCINFO_CLASS
++#define PROCINFO_CLASS
+ #endif
++
+ #if !defined PROCINFO_DECL && defined SHARED
+ ._dl_sparc64_cap_flags
+ #else
+-const char _dl_sparc64_cap_flags[6][7]
++PROCINFO_CLASS const char _dl_sparc64_cap_flags[6][7]
+ #endif
+ #ifndef PROCINFO_DECL
+ = {
+@@ -60,3 +61,4 @@
+ #endif
+
+ #undef PROCINFO_DECL
++#undef PROCINFO_CLASS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c 1999-06-02 07:10:10.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c 2003-03-15 15:02:21.000000000 -0500
+@@ -1 +1 @@
+-#include <sysdeps/unix/common/pause.c>
++#include <sysdeps/posix/pause.c>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c 2001-07-07 15:21:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c 2003-09-19 22:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,9 +24,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_rt_sigpending (sigset_t *__unbounded, size_t);
+-
+-
+ /* Change the set of blocked signals to SET,
+ wait until a signal arrives, and restore the set of blocked signals. */
+ int
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c 2001-07-07 15:21:38.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c 2003-09-19 22:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,9 +24,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_rt_sigprocmask (int, const sigset_t *__unbounded,
+- sigset_t *__unbounded, size_t);
+-
+ /* Get and/or change the set of blocked signals. */
+ int
+ __sigprocmask (how, set, oset)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c 2002-12-10 15:31:58.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c 2003-04-12 11:39:50.000000000 -0400
+@@ -1,41 +1 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <errno.h>
+-#include <signal.h>
+-#include <unistd.h>
+-
+-#include <sysdep.h>
+-#include <sys/syscall.h>
+-#include <bp-checks.h>
+-
+-extern int __syscall_rt_sigsuspend (const sigset_t *__unbounded, size_t);
+-
+-/* Change the set of blocked signals to SET,
+- wait until a signal arrives, and restore the set of blocked signals. */
+-int
+-__sigsuspend (set)
+- const sigset_t *set;
+-{
+- /* XXX The size argument hopefully will have to be changed to the
+- real size of the user-level sigset_t. */
+- return INLINE_SYSCALL (rt_sigsuspend, 2, CHECK_SIGSET (set), _NSIG / 8);
+-}
+-libc_hidden_def (__sigsuspend)
+-weak_alias (__sigsuspend, sigsuspend)
+-strong_alias (__sigsuspend, __libc_sigsuspend)
++#include "../../ia64/sigsuspend.c"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list 2003-02-05 16:42:03.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list 2003-08-21 08:37:17.000000000 -0400
+@@ -13,7 +13,7 @@
+ mmap - mmap 6 __mmap mmap __mmap64 mmap64
+ readahead - readahead 3 __readahead readahead
+ sendfile - sendfile i:iipi sendfile sendfile64
+-posix_fadvise64 - fadvise64 4 posix_fadvise64 posix_fadvise
++posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
+
+ # Override select.S in parent directory:
+ select - select C:5 __select select
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 2003-01-27 15:47:54.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 2003-09-19 22:37:11.000000000 -0400
+@@ -35,6 +35,8 @@
+
+ /* Linux/SPARC uses a different trap number */
+ #undef PSEUDO
++#undef PSEUDO_NOERRNO
++#undef PSEUDO_ERRVAL
+ #undef ENTRY
+
+ #define ENTRY(name) \
+@@ -101,16 +103,38 @@
+ nop; \
+ SYSCALL_ERROR_HANDLER
+
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY(name); \
++ LOADSYSCALL(syscall_name); \
++ ta 0x6d
++
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY(name); \
++ LOADSYSCALL(syscall_name); \
++ ta 0x6d
++
+ #undef PSEUDO_END
+ #define PSEUDO_END(name) \
+ .size name,.-name
+
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ .size name,.-name
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ .size name,.-name
++
+ #undef END
+ #define END(name) \
+ .size name,.-name
+
+ /* Careful here! This "ret" define can interfere; use jmpl if unsure. */
+-#define ret retl; nop
++#define ret retl; nop
++#define ret_NOERRNO retl; nop
++#define ret_ERRVAL retl; nop
+ #define r0 %o0
+ #define r1 %o1
+ #define MOVE(x,y) mov x, y
+@@ -128,6 +152,18 @@
+ "restore %%g0, -1, %%o0;" \
+ "1:"
+
++#define __CLONE_SYSCALL_STRING \
++ "ta 0x6d;" \
++ "bcc,pt %%xcc, 1f;" \
++ " sub %%o1, 1, %%o1;" \
++ "save %%sp, -192, %%sp;" \
++ "call __errno_location;" \
++ " mov -1, %%i1;" \
++ "st %%i0,[%%o0];" \
++ "restore %%g0, -1, %%o0;" \
++ "1:" \
++ "and %%o0, %%o1, %%o0"
++
+ #define __INTERNAL_SYSCALL_STRING \
+ "ta 0x6d;" \
+ "bcs,a,pt %%xcc, 1f;" \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sys/user.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sys/user.h 2003-08-14 23:54:43.000000000 -0400
+@@ -0,0 +1,85 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_USER_H
++#define _SYS_USER_H 1
++
++struct sunos_regs
++{
++ unsigned int psr, pc, npc, y;
++ unsigned int regs[15];
++};
++
++struct sunos_fpqueue
++{
++ unsigned int *addr;
++ unsigned int inst;
++};
++
++struct sunos_fp
++{
++ union
++ {
++ unsigned int regs[32];
++ double reg_dbls[16];
++ } fregs;
++ unsigned int fsr;
++ unsigned int flags;
++ unsigned int extra;
++ unsigned int fpq_count;
++ struct sunos_fpqueue fpq[16];
++};
++
++struct sunos_fpu
++{
++ struct sunos_fp fpstatus;
++};
++
++/* The SunOS core file header layout. */
++struct user {
++ unsigned int magic;
++ unsigned int len;
++ struct sunos_regs regs;
++ struct
++ {
++ unsigned char a_dynamic :1;
++ unsigned char a_toolversion :7;
++ unsigned char a_machtype;
++ unsigned short a_info;
++ unsigned int a_text;
++ unsigned int a_data;
++ unsigned int a_bss;
++ unsigned int a_syms;
++ unsigned int a_entry;
++ unsigned int a_trsize;
++ unsigned int a_drsize;
++ } uexec;
++ int signal;
++ size_t u_tsize;
++ size_t u_dsize;
++ size_t u_ssize;
++ char u_comm[17];
++ struct sunos_fpu fpu;
++ unsigned int sigcode;
++};
++
++#define NBPG 0x2000
++#define UPAGES 1
++#define SUNOS_CORE_MAGIC 0x080456
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/syscalls.list 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/syscalls.list 2003-09-02 22:55:44.000000000 -0400
+@@ -0,0 +1,3 @@
++# File name Caller Syscall name # args Strong name Weak names
++
++waitpid - waitpid Ci:ipi __waitpid waitpid __libc_waitpid
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sysdep.h 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sysdep.h 2003-09-19 22:37:10.000000000 -0400
+@@ -128,4 +128,22 @@
+ __o0; \
+ })
+
++#define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \
++({ \
++ register long __o0 __asm__ ("o0") = (long)(arg1); \
++ register long __o1 __asm__ ("o1") = (long)(arg2); \
++ register long __o2 __asm__ ("o2") = (long)(arg3); \
++ register long __o3 __asm__ ("o3") = (long)(arg4); \
++ register long __o4 __asm__ ("o4") = (long)(arg5); \
++ register long __g1 __asm__ ("g1") = __NR_clone; \
++ __asm __volatile (__CLONE_SYSCALL_STRING : \
++ "=r" (__g1), "=r" (__o0), "=r" (__o1) : \
++ "0" (__g1), "1" (__o0), "2" (__o1), \
++ "r" (__o2), "r" (__o3), "r" (__o4) : \
++ __SYSCALL_CLOBBERS); \
++ __o0; \
++})
++
++
++
+ #endif /* _LINUX_SPARC_SYSDEP_H */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/system.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/system.c 2003-08-31 13:23:57.000000000 -0400
+@@ -0,0 +1,34 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <kernel-features.h>
++
++/* We have to and actually can handle cancelable system(). The big
++ problem: we have to kill the child process if necessary. To do
++ this a cleanup handler has to be registered and is has to be able
++ to find the PID of the child. The main problem is to reliable have
++ the PID when needed. It is not necessary for the parent thread to
++ return. It might still be in the kernel when the cancellation
++ request comes. Therefore we have to use the clone() calls ability
++ to have the kernel write the PID into the user-level variable. */
++#ifdef __ASSUME_CLONE_THREAD_FLAGS
++# define FORK() \
++ INLINE_CLONE_SYSCALL (CLONE_PARENT_SETTID | SIGCHLD, 0, &pid, NULL, NULL)
++#endif
++
++#include "../system.c"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/speed.c 2002-08-13 10:29:42.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/speed.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* `struct termios' speed frobnication functions. Linux version.
+- Copyright (C) 1991,92,93,95,96,97,98,2000,02 Free Software Foundation, Inc.
++ Copyright (C) 1991,1992,1993,1995,1996,1997,1998,2000,2002,2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -66,6 +67,9 @@
+ return -1;
+ }
+
++#ifdef _HAVE_STRUCT_TERMIOS_C_OSPEED
++ termios_p->c_ospeed = speed;
++#endif
+ termios_p->c_cflag &= ~(CBAUD | CBAUDEX);
+ termios_p->c_cflag |= speed;
+
+@@ -90,6 +94,9 @@
+ return -1;
+ }
+
++#ifdef _HAVE_STRUCT_TERMIOS_C_ISPEED
++ termios_p->c_ispeed = speed;
++#endif
+ if (speed == 0)
+ termios_p->c_iflag |= IBAUD0;
+ else
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/statfs64.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/statfs64.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Return information about the filesystem on which FILE resides.
+- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++ Copyright (C) 1996,1997,1998,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -21,11 +21,33 @@
+ #include <string.h>
+ #include <sys/statfs.h>
+ #include <stddef.h>
++#include <sysdep.h>
++
++int __no_statfs64 attribute_hidden;
+
+ /* Return information about the filesystem on which FILE resides. */
+ int
+ __statfs64 (const char *file, struct statfs64 *buf)
+ {
++#ifdef __NR_statfs64
++# if __ASSUME_STATFS64 == 0
++ if (! __no_statfs64)
++# endif
++ {
++ int result = INLINE_SYSCALL (statfs64, 3, file, sizeof (*buf), buf);
++
++# if __ASSUME_STATFS64 == 0
++ if (result == 0 || errno != ENOSYS)
++# endif
++ return result;
++
++# if __ASSUME_STATFS64 == 0
++ __no_statfs64 = 1;
++# endif
++ }
++#endif
++
++#if __ASSUME_STATFS64 == 0
+ struct statfs buf32;
+
+ if (__statfs (file, &buf32) < 0)
+@@ -40,8 +62,10 @@
+ buf->f_ffree = buf32.f_ffree;
+ buf->f_fsid = buf32.f_fsid;
+ buf->f_namelen = buf32.f_namelen;
++ buf->f_frsize = buf32.f_frsize;
+ memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
+
+ return 0;
++#endif
+ }
+ weak_alias (__statfs64, statfs64)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/statvfs.c 2002-09-21 01:36:03.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/statvfs.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -17,16 +17,14 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#include <errno.h>
+-#include <mntent.h>
+-#include <paths.h>
+-#include <stdio_ext.h>
+-#include <string.h>
+-#include <sys/mount.h>
++#include <stddef.h>
+ #include <sys/stat.h>
+ #include <sys/statfs.h>
+ #include <sys/statvfs.h>
+
++extern void __internal_statvfs (const char *name, struct statvfs *buf,
++ struct statfs *fsbuf, struct stat64 *st);
++
+
+ int
+ statvfs (const char *file, struct statvfs *buf)
+@@ -38,8 +36,9 @@
+ if (__statfs (file, &fsbuf) < 0)
+ return -1;
+
+-#define STAT(st) stat64 (file, st)
+-#include "internal_statvfs.c"
++ /* Convert the result. */
++ __internal_statvfs (file, buf, &fsbuf,
++ stat64 (file, &st) == -1 ? NULL : &st);
+
+ /* We signal success if the statfs call succeeded. */
+ return 0;
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/epoll.h 2002-12-16 18:24:21.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/epoll.h 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -19,6 +19,7 @@
+ #ifndef _SYS_EPOLL_H
+ #define _SYS_EPOLL_H 1
+
++#include <stdint.h>
+ #include <sys/types.h>
+
+
+@@ -42,8 +43,10 @@
+ #define EPOLLMSG EPOLLMSG
+ EPOLLERR = 0x008,
+ #define EPOLLERR EPOLLERR
+- EPOLLHUP = 0x010
++ EPOLLHUP = 0x010,
+ #define EPOLLHUP EPOLLHUP
++ EPOLLET = (1 << 31)
++#define EPOLLET EPOLLET
+ };
+
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/param.h 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/param.h 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -49,10 +49,16 @@
+
+ /* Macros for counting and rounding. */
+ #ifndef howmany
+-# define howmany(x, y) (((x)+((y)-1))/(y))
++# define howmany(x, y) (((x) + ((y) - 1)) / (y))
+ #endif
+-#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
+-#define powerof2(x) ((((x)-1)&(x))==0)
++#ifdef __GNUC__
++# define roundup(x, y) (__builtin_constant_p (y) && powerof2 (y) \
++ ? (((x) + (y) - 1) & ~((y) - 1)) \
++ : ((((x) + ((y) - 1)) / (y)) * (y)))
++#else
++# define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
++#endif
++#define powerof2(x) ((((x) - 1) & (x)) == 0)
+
+ /* Macros for min/max. */
+ #define MIN(a,b) (((a)<(b))?(a):(b))
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/quota.h 1999-10-18 23:05:21.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/quota.h 2002-11-16 08:57:24.000000000 -0500
+@@ -31,7 +31,7 @@
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+- * Version: $Id: quota.h,v 1.7 1999/10/19 03:05:21 drepper Exp $
++ * Version: $Id: quota.h,v 1.6 1999/06/08 21:14:28 drepper Exp $
+ */
+
+ #ifndef _SYS_QUOTA_H
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h 2002-11-06 00:43:44.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sys/sysctl.h 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1999, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1999, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,6 +26,9 @@
+ #define _LINUX_KERNEL_H 1
+ #define _LINUX_TYPES_H 1
+ #define _LINUX_LIST_H 1
++/* We do need this one for the declarations in <linux/sysctl.h>,
++ since we've elided the inclusion of <linux/kernel.h> that gets them. */
++#include <linux/compiler.h>
+ #include <linux/sysctl.h>
+
+ __BEGIN_DECLS
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/syscalls.list 2003-02-05 16:04:09.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/syscalls.list 2003-09-19 22:37:09.000000000 -0400
+@@ -14,12 +14,12 @@
+ flock - flock i:ii __flock flock
+ fork - fork i: __libc_fork __fork fork
+ get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
+-getegid - getegid i: __getegid getegid
+-geteuid - geteuid i: __geteuid geteuid
++getegid - getegid Ei: __getegid getegid
++geteuid - geteuid Ei: __geteuid geteuid
+ getpgid - getpgid i:i __getpgid getpgid
+-getpgrp - getpgrp i: getpgrp
++getpgrp - getpgrp Ei: getpgrp
+ getpmsg - getpmsg i:ipppp getpmsg
+-getppid - getppid i: __getppid getppid
++getppid - getppid Ei: __getppid getppid
+ getresuid - getresuid i:ppp getresuid
+ getresgid - getresgid i:ppp getresgid
+ getsid - getsid i:i getsid
+@@ -28,7 +28,8 @@
+ iopl - iopl i:i iopl
+ klogctl EXTRA syslog i:isi klogctl
+ lchown - lchown i:sii __lchown lchown
+-madvise - madvise i:pii posix_madvise madvise
++posix_madvise - madvise Vi:pii posix_madvise
++madvise - madvise i:pii madvise
+ mincore - mincore i:anV mincore
+ mlock - mlock i:bn mlock
+ mlockall - mlockall i:i mlockall
+@@ -43,18 +44,16 @@
+ personality init-first personality i:i __personality personality
+ pipe - pipe i:f __pipe pipe
+ pivot_root EXTRA pivot_root i:ss pivot_root
+-posix_fadvise64 - fadvise64 i:iiiii posix_advise64
+ prctl EXTRA prctl i:iiiii __prctl prctl
+ putpmsg - putpmsg i:ippii putpmsg
+ query_module EXTRA query_module i:sipip query_module
+ quotactl EXTRA quotactl i:isip quotactl
+-sched_getaffinity - sched_getaffinity i:iip sched_getaffinity
++remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages
+ sched_getp - sched_getparam i:ip __sched_getparam sched_getparam
+ sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler
+ sched_primax - sched_get_priority_max i:i __sched_get_priority_max sched_get_priority_max
+ sched_primin - sched_get_priority_min i:i __sched_get_priority_min sched_get_priority_min
+ sched_rr_gi - sched_rr_get_interval i:ip __sched_rr_get_interval sched_rr_get_interval
+-sched_setaffinity - sched_setaffinity i:iip sched_setaffinity
+ sched_setp - sched_setparam i:ip __sched_setparam sched_setparam
+ sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler
+ sched_yield - sched_yield i: __sched_yield sched_yield
+@@ -74,17 +73,16 @@
+ wait4 - wait4 i:iWiP __wait4 wait4
+
+ chown - chown i:sii __libc_chown __chown chown
+-fcntl - fcntl Ci:iiF __libc_fcntl __fcntl fcntl
+
+-setxattr EXTRA setxattr i:sspii setxattr
+-lsetxattr EXTRA lsetxattr i:sspii lsetxattr
+-fsetxattr EXTRA fsetxattr i:ispii fsetxattr
+-getxattr EXTRA getxattr i:sspi getxattr
+-lgetxattr EXTRA lgetxattr i:sspi lgetxattr
+-fgetxattr EXTRA fgetxattr i:ispi fgetxattr
+-listxattr EXTRA listxattr i:ssi listxattr
+-llistxattr EXTRA llistxattr i:ssi llistxattr
+-flistxattr EXTRA flistxattr i:isi flistxattr
+-removexattr EXTRA removexattr i:ss removexattr
+-lremovexattr EXTRA lremovexattr i:ss lremovexattr
+-fremovexattr EXTRA fremovexattr i:is fremovexattr
++setxattr - setxattr i:sspii setxattr
++lsetxattr - lsetxattr i:sspii lsetxattr
++fsetxattr - fsetxattr i:ispii fsetxattr
++getxattr - getxattr i:sspi getxattr
++lgetxattr - lgetxattr i:sspi lgetxattr
++fgetxattr - fgetxattr i:ispi fgetxattr
++listxattr - listxattr i:ssi listxattr
++llistxattr - llistxattr i:ssi llistxattr
++flistxattr - flistxattr i:isi flistxattr
++removexattr - removexattr i:ss removexattr
++lremovexattr - lremovexattr i:ss lremovexattr
++fremovexattr - fremovexattr i:is fremovexattr
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sysconf.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sysconf.c 2003-04-12 11:39:49.000000000 -0400
+@@ -0,0 +1,52 @@
++/* Get file-specific information about a file. Linux version.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sysdep.h>
++#include <time.h>
++#include <unistd.h>
++
++static long int posix_sysconf (int name);
++
++/* Define this first, so it can be inlined. */
++#define __sysconf static posix_sysconf
++#include <sysdeps/posix/sysconf.c>
++
++
++/* Get the value of the system variable NAME. */
++long int
++__sysconf (int name)
++{
++ switch (name)
++ {
++#ifdef __NR_clock_getres
++ case _SC_MONOTONIC_CLOCK:
++ /* Check using the clock_getres system call. */
++ {
++ struct timespec ts;
++ INTERNAL_SYSCALL_DECL (err);
++ int r;
++ r = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts);
++ return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : 1;
++ }
++#endif
++
++ default:
++ return posix_sysconf (name);
++ }
++}
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/sysctl.c 2002-12-15 23:26:37.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/sysctl.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Read or write system information. Linux version.
+- Copyright (C) 1996-1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1996-1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,8 +24,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall__sysctl (struct __sysctl_args *__unbounded args);
+-
+ int
+ __sysctl (int *name, int nlen, void *oldval, size_t *oldlenp,
+ void *newval, size_t newlen)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/system.c 1996-09-12 14:29:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/system.c 2003-04-24 20:06:01.000000000 -0400
+@@ -1,2 +1,77 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <sched.h>
++#include <signal.h>
++#include <sysdep.h>
++#include <unistd.h>
++#include <sys/wait.h>
++#include <bits/libc-lock.h>
++#include <kernel-features.h>
++
++/* We have to and actually can handle cancelable system(). The big
++ problem: we have to kill the child process if necessary. To do
++ this a cleanup handler has to be registered and is has to be able
++ to find the PID of the child. The main problem is to reliable have
++ the PID when needed. It is not necessary for the parent thread to
++ return. It might still be in the kernel when the cancellation
++ request comes. Therefore we have to use the clone() calls ability
++ to have the kernel write the PID into the user-level variable. */
++#if defined __ASSUME_CLONE_THREAD_FLAGS && !defined FORK
++# define FORK() \
++ INLINE_SYSCALL (clone, 3, CLONE_PARENT_SETTID | SIGCHLD, 0, &pid)
++#endif
++
++#ifdef _LIBC_REENTRANT
++static void cancel_handler (void *arg);
++
++# define CLEANUP_HANDLER \
++ __libc_cleanup_region_start (1, cancel_handler, &pid)
++
++# define CLEANUP_RESET \
++ __libc_cleanup_region_end (0)
++#endif
++
++
+ /* Linux has waitpid(), so override the generic unix version. */
+ #include <sysdeps/posix/system.c>
++
++
++#ifdef _LIBC_REENTRANT
++/* The cancellation handler. */
++static void
++cancel_handler (void *arg)
++{
++ pid_t child = *(pid_t *) arg;
++
++ INTERNAL_SYSCALL_DECL (err);
++ INTERNAL_SYSCALL (kill, err, 2, child, SIGKILL);
++
++ TEMP_FAILURE_RETRY (__waitpid (child, NULL, 0));
++
++ DO_LOCK ();
++
++ if (SUB_REF () == 0)
++ {
++ (void) __sigaction (SIGQUIT, &quit, (struct sigaction *) NULL);
++ (void) __sigaction (SIGINT, &intr, (struct sigaction *) NULL);
++ }
++
++ DO_UNLOCK ();
++}
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/tcgetattr.c 2003-02-17 14:47:06.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/tcgetattr.c 2003-09-19 22:37:09.000000000 -0400
+@@ -45,11 +45,19 @@
+ termios_p->c_cflag = k_termios.c_cflag;
+ termios_p->c_lflag = k_termios.c_lflag;
+ termios_p->c_line = k_termios.c_line;
+-#ifdef _HAVE_C_ISPEED
++#ifdef _HAVE_STRUCT_TERMIOS_C_ISPEED
++# ifdef _HAVE_C_ISPEED
+ termios_p->c_ispeed = k_termios.c_ispeed;
++# else
++ termios_p->c_ispeed = k_termios.c_cflag & (CBAUD | CBAUDEX);
++# endif
+ #endif
+-#ifdef _HAVE_C_OSPEED
++#ifdef _HAVE_STRUCT_TERMIOS_C_OSPEED
++# ifdef _HAVE_C_OSPEED
+ termios_p->c_ospeed = k_termios.c_ospeed;
++# else
++ termios_p->c_ospeed = k_termios.c_cflag & (CBAUD | CBAUDEX);
++# endif
+ #endif
+ if (sizeof (cc_t) == 1 || _POSIX_VDISABLE == 0
+ || (unsigned char) _POSIX_VDISABLE == (unsigned char) -1)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/tcsetattr.c 2003-02-20 19:09:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/tcsetattr.c 2003-09-19 22:37:09.000000000 -0400
+@@ -37,14 +37,7 @@
+ We use an unused bit in the `c_iflag' field to keep track of this
+ use of `cfsetispeed'. The value here must correspond to the one used
+ in `speed.c'. */
+-#if !defined _HAVE_C_ISPEED || !defined _HAVE_C_OSPEED
+-# define IBAUD0 020000000000
+-#else
+-/* If we have separate values for input and output speed don't bother
+- with this. Define the value as zero so the compiler sees we don't
+- have to do the AND below. */
+-# define IBAUD0 0
+-#endif
++#define IBAUD0 020000000000
+
+
+ /* Set the state of FD to *TERMIOS_P. */
+@@ -78,10 +71,10 @@
+ k_termios.c_cflag = termios_p->c_cflag;
+ k_termios.c_lflag = termios_p->c_lflag;
+ k_termios.c_line = termios_p->c_line;
+-#ifdef _HAVE_C_ISPEED
++#if defined _HAVE_C_ISPEED && defined _HAVE_STRUCT_TERMIOS_C_ISPEED
+ k_termios.c_ispeed = termios_p->c_ispeed;
+ #endif
+-#ifdef _HAVE_C_OSPEED
++#if defined _HAVE_C_OSPEED && defined _HAVE_STRUCT_TERMIOS_C_OSPEED
+ k_termios.c_ospeed = termios_p->c_ospeed;
+ #endif
+ memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0],
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/truncate64.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/truncate64.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -33,10 +33,6 @@
+ int __have_no_truncate64;
+ #endif
+
+-/* The order of hight, low depends on endianness. */
+-extern int __syscall_truncate64 (const char *__unbounded path,
+- int high_length, int low_length);
+-
+ /* Truncate the file FD refers to to LENGTH bytes. */
+ int
+ truncate64 (const char *path, off64_t length)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/usleep.c 2002-12-15 23:26:37.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/usleep.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Implementation of the BSD usleep function using nanosleep.
+- Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1996, 1997, 1999, 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+@@ -27,5 +27,8 @@
+ struct timespec ts = { .tv_sec = (long int) (useconds / 1000000),
+ .tv_nsec = (long int) (useconds % 1000000) * 1000ul };
+
++ /* Note the usleep() is a cancellation point. But since we call
++ nanosleep() which itself is a cancellation point we do not have
++ to do anything here. */
+ return __nanosleep (&ts, NULL);
+ }
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/ustat.c 2001-07-07 15:21:32.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/ustat.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -25,8 +25,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_ustat (unsigned short int, struct ustat *__unbounded);
+-
+ int
+ ustat (dev_t dev, struct ustat *ubuf)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/utimes.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/utimes.c 2003-09-19 22:37:09.000000000 -0400
+@@ -0,0 +1,60 @@
++/* Copyright (C) 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <errno.h>
++#include <stddef.h>
++#include <utime.h>
++#include <sys/time.h>
++#include <sysdep.h>
++#include "kernel-features.h"
++
++
++/* Change the access time of FILE to TVP[0] and
++ the modification time of FILE to TVP[1]. */
++int
++__utimes (const char *file, const struct timeval tvp[2])
++{
++#ifdef __NR_utimes
++ int result = INLINE_SYSCALL (utimes, 2, file, tvp);
++# ifndef __ASSUME_UTIMES
++ if (result != -1 || errno != ENOSYS)
++# endif
++ return result;
++#endif
++
++ /* The utimes() syscall does not exist or is not available in the
++ used kernel. Use utime(). For this we have to convert to the
++ data format utime() expects. */
++#ifndef __ASSUME_UTIMES
++ struct utimbuf buf;
++ struct utimbuf *times;
++
++ if (tvp != NULL)
++ {
++ times = &buf;
++ buf.actime = tvp[0].tv_sec + tvp[0].tv_usec / 1000000;
++ buf.modtime = tvp[1].tv_sec + tvp[1].tv_usec / 1000000;
++ }
++ else
++ times = NULL;
++
++ return INLINE_SYSCALL (utime, 2, file, times);
++#endif
++}
++
++weak_alias (__utimes, utimes)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/wait.c 2002-12-15 19:57:48.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/wait.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,1995,1996,1997,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -24,7 +24,7 @@
+
+ /* Wait for a child to die. When one does, put its status in *STAT_LOC
+ and return its process ID. For errors, return (pid_t) -1. */
+-__pid_t
++pid_t
+ __libc_wait (__WAIT_STATUS_DEFN stat_loc)
+ {
+ if (SINGLE_THREAD_P)
+@@ -33,8 +33,8 @@
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+- int result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
+- (struct rusage *) NULL);
++ pid_t result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
++ (struct rusage *) NULL);
+
+ LIBC_CANCEL_RESET (oldtype);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/waitpid.c 2002-12-15 19:57:48.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/waitpid.c 2003-05-24 14:06:23.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,95,96,97,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991,92,95,96,97,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -25,11 +25,21 @@
+ __libc_waitpid (__pid_t pid, int *stat_loc, int options)
+ {
+ if (SINGLE_THREAD_P)
+- return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);
++ {
++#ifdef __NR_waitpid
++ return INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options);
++#else
++ return INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);
++#endif
++ }
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
++#ifdef __NR_waitpid
++ int result = INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options);
++#else
+ int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);
++#endif
+
+ LIBC_CANCEL_RESET (oldtype);
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/writev.c 2002-12-15 04:41:03.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/writev.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* writev supports all Linux kernels >= 2.0.
+- Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,7 +26,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern ssize_t __syscall_writev (int, const struct iovec *__unbounded, int);
+ static ssize_t __atomic_writev_replacement (int, const struct iovec *,
+ int) internal_function;
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/__start_context.S 2002-08-31 04:05:17.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/__start_context.S 2003-09-19 22:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
+
+@@ -41,7 +41,7 @@
+ exit the program with the return error value (-1). */
+
+ 2: movq %rax,%rdi
+- call JUMPTARGET(exit)
++ call HIDDEN_JUMPTARGET(exit)
+ /* The 'exit' call should never return. In case it does cause
+ the process to terminate. */
+ hlt
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/a.out.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/a.out.h 2003-07-25 05:04:58.000000000 -0400
+@@ -0,0 +1,13 @@
++#ifndef __A_OUT_GNU_H__
++# error "Never use <bits/a.out.h> directly; include <a.out.h> instead."
++#endif
++
++#include <bits/wordsize.h>
++
++#if __WORDSIZE == 64
++
++/* Signal to users of this header that this architecture really doesn't
++ support a.out binary format. */
++#define __NO_A_OUT_SUPPORT 1
++
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2001-09-19 06:30:39.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/mman.h 2003-03-15 15:02:22.000000000 -0500
+@@ -1,5 +1,5 @@
+ /* Definitions for POSIX memory map interface. Linux/x86_64 version.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -53,11 +53,13 @@
+
+ /* These are Linux-specific. */
+ #ifdef __USE_MISC
+-# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
+-# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+-# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
+-# define MAP_LOCKED 0x2000 /* Lock the mapping. */
+-# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
++# define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */
++# define MAP_DENYWRITE 0x00800 /* ETXTBSY */
++# define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */
++# define MAP_LOCKED 0x02000 /* Lock the mapping. */
++# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
++# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
++# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
+ #endif
+
+ /* Flags to `msync'. */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/stat.h 2002-12-31 15:08:59.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/bits/stat.h 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,8 +22,6 @@
+
+ /* Versions of the `struct stat' data structure. */
+ #define _STAT_VER_KERNEL 0
+-#define _STAT_VER_LINUX 1
+-#define _STAT_VER _STAT_VER_LINUX
+
+ #if __WORDSIZE == 32
+ # define _STAT_VER_SVR4 2
+@@ -34,10 +32,14 @@
+ # define _MKNOD_VER_SVR4 2
+ # define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
+ #else
++# define _STAT_VER_LINUX 1
++
+ /* x86-64 versions of the `xmknod' interface. */
+ # define _MKNOD_VER_LINUX 0
+ #endif
+
++#define _STAT_VER _STAT_VER_LINUX
++
+ struct stat
+ {
+ __dev_t st_dev; /* Device. */
+@@ -169,6 +171,8 @@
+ /* Tell code we have these members. */
+ #define _STATBUF_ST_BLKSIZE
+ #define _STATBUF_ST_RDEV
++/* Nanosecond resolution time values are supported. */
++#define _STATBUF_ST_NSEC
+
+ /* Encoding of the file mode. */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/clone.S 2002-08-03 22:20:07.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/clone.S 2003-03-15 15:02:21.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001,02 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,16 +31,22 @@
+ the kernel entry is:
+ int clone (long flags, void *child_stack).
+
+- The parameters are passed in register from userland:
++ The parameters are passed in register and on the stack from userland:
+ rdi: fn
+ rsi: child_stack
+ rdx: flags
+ rcx: arg
++ r8d: TID field in parent
++ r9d: thread pointer
++%esp+8: TID field in child
+
+ The kernel expects:
+ rax: system call number
+ rdi: flags
+- rsi: child_stack */
++ rsi: child_stack
++ rdx: TID field in parent
++ r10: TID field in child
++ r8: thread pointer */
+
+
+ .text
+@@ -57,11 +63,14 @@
+ movq %rcx,8(%rsi)
+
+ /* Save the function pointer. It will be popped off in the
+- child in the ebx frobbing below. */
++ child in the ebx frobbing below. */
+ movq %rdi,0(%rsi)
+
+ /* Do the system call. */
+ movq %rdx, %rdi
++ movq %r8, %rdx
++ movq %r9, %r8
++ movq 8(%rsp), %r10
+ movq $SYS_ify(clone),%rax
+ syscall
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-cache.h 2002-04-22 07:51:40.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-cache.h 2003-08-21 08:37:18.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
+- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -22,4 +22,4 @@
+ #define _dl_cache_check_flags(flags) \
+ ((flags) == _DL_CACHE_DEFAULT_ID)
+
+-#include_next <dl-cache.h>
++#include <sysdeps/unix/sysv/linux/sparc/dl-cache.h>
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c 2003-07-22 18:06:10.000000000 -0400
+@@ -0,0 +1,5 @@
++#ifdef IS_IN_ldconfig
++#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.c>
++#else
++#include <sysdeps/generic/dl-procinfo.c>
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h 2003-07-22 18:06:23.000000000 -0400
+@@ -0,0 +1,5 @@
++#ifdef IS_IN_ldconfig
++#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
++#else
++#include <sysdeps/generic/dl-procinfo.h>
++#endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/get_clockfreq.c 2003-05-09 03:52:47.000000000 -0400
+@@ -0,0 +1 @@
++#include "../i386/get_clockfreq.c"
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2002-04-14 04:58:48.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/gettimeofday.S 2003-05-24 14:06:24.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -27,6 +27,7 @@
+ ENTRY (__gettimeofday)
+ /* Align stack. */
+ sub $0x8, %rsp
++ cfi_adjust_cfa_offset(8)
+ movq $VSYSCALL_ADDR_vgettimeofday, %rax
+ callq *%rax
+ /* Check error return. */
+@@ -35,6 +36,7 @@
+
+ L(pseudo_end):
+ add $0x8, %rsp
++ cfi_adjust_cfa_offset(-8)
+ ret
+ PSEUDO_END(__gettimeofday)
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h 2003-06-12 12:15:48.000000000 -0400
+@@ -0,0 +1,21 @@
++/* Definition of `struct stat' used in the kernel.
++ Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#define STAT_IS_KERNEL_STAT 1
++#define XSTAT_IS_XSTAT64 1
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/register-dump.h 2002-03-28 18:41:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/register-dump.h 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Dump registers.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -65,7 +65,7 @@
+ }
+
+ static void
+-register_dump (int fd, struct sigcontext *ctx)
++register_dump (int fd, struct ucontext *ctx)
+ {
+ char regs[25][16];
+ char fpregs[30][8];
+@@ -84,33 +84,33 @@
+ ++nr
+
+ /* Generate strings of register contents. */
+- hexvalue (ctx->rax, regs[0], 16);
+- hexvalue (ctx->rbx, regs[1], 16);
+- hexvalue (ctx->rcx, regs[2], 16);
+- hexvalue (ctx->rdx, regs[3], 16);
+- hexvalue (ctx->rsi, regs[4], 16);
+- hexvalue (ctx->rdi, regs[5], 16);
+- hexvalue (ctx->rbp, regs[6], 16);
+- hexvalue (ctx->r8, regs[7], 16);
+- hexvalue (ctx->r9, regs[8], 16);
+- hexvalue (ctx->r10, regs[9], 16);
+- hexvalue (ctx->r11, regs[10], 16);
+- hexvalue (ctx->r12, regs[11], 16);
+- hexvalue (ctx->r13, regs[12], 16);
+- hexvalue (ctx->r14, regs[13], 16);
+- hexvalue (ctx->r15, regs[14], 16);
+- hexvalue (ctx->rsp, regs[15], 16);
+- hexvalue (ctx->rip, regs[16], 16);
+-
+- hexvalue (ctx->eflags, regs[17], 8);
+- hexvalue (ctx->cs, regs[18], 4);
+- hexvalue (ctx->fs, regs[19], 4);
+- hexvalue (ctx->gs, regs[20], 4);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RAX], regs[0], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RBX], regs[1], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RCX], regs[2], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RDX], regs[3], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RSI], regs[4], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RDI], regs[5], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RBP], regs[6], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R8], regs[7], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R9], regs[8], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R10], regs[9], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R11], regs[10], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R12], regs[11], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R13], regs[12], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R14], regs[13], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_R15], regs[14], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RSP], regs[15], 16);
++ hexvalue (ctx->uc_mcontext.gregs[REG_RIP], regs[16], 16);
++
++ hexvalue (ctx->uc_mcontext.gregs[REG_EFL], regs[17], 8);
++ hexvalue (ctx->uc_mcontext.gregs[REG_CSGSFS] & 0xffff, regs[18], 4);
++ hexvalue ((ctx->uc_mcontext.gregs[REG_CSGSFS] >> 16) & 0xffff, regs[19], 4);
++ hexvalue ((ctx->uc_mcontext.gregs[REG_CSGSFS] >> 32) & 0xffff, regs[20], 4);
+ /* hexvalue (ctx->ss, regs[23], 4); */
+- hexvalue (ctx->trapno, regs[21], 8);
+- hexvalue (ctx->err, regs[22], 8);
+- hexvalue (ctx->oldmask, regs[23], 8);
+- hexvalue (ctx->cr2, regs[24], 8);
++ hexvalue (ctx->uc_mcontext.gregs[REG_TRAPNO], regs[21], 8);
++ hexvalue (ctx->uc_mcontext.gregs[REG_ERR], regs[22], 8);
++ hexvalue (ctx->uc_mcontext.gregs[REG_OLDMASK], regs[23], 8);
++ hexvalue (ctx->uc_mcontext.gregs[REG_CR2], regs[24], 8);
+
+ /* Generate the output. */
+ ADD_STRING ("Register dump:\n\n RAX: ");
+@@ -168,15 +168,15 @@
+ ADD_STRING (" CR2: ");
+ ADD_MEM (regs[24], 8);
+
+- if (ctx->fpstate != NULL)
++ if (ctx->uc_mcontext.fpregs != NULL)
+ {
+
+ /* Generate output for the FPU control/status registers. */
+- hexvalue (ctx->fpstate->cwd, fpregs[0], 8);
+- hexvalue (ctx->fpstate->swd, fpregs[1], 8);
+- hexvalue (ctx->fpstate->ftw, fpregs[2], 8);
+- hexvalue (ctx->fpstate->rip, fpregs[3], 8);
+- hexvalue (ctx->fpstate->rdp, fpregs[4], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->cwd, fpregs[0], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->swd, fpregs[1], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->ftw, fpregs[2], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->rip, fpregs[3], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->rdp, fpregs[4], 8);
+
+ ADD_STRING ("\n\n FPUCW: ");
+ ADD_MEM (fpregs[0], 8);
+@@ -190,54 +190,71 @@
+ ADD_MEM (fpregs[4], 8);
+
+ /* Now the real FPU registers. */
+- hexvalue (ctx->fpstate->_st[0].exponent, fpregs[5], 8);
+- hexvalue (ctx->fpstate->_st[0].significand[3] << 16
+- | ctx->fpstate->_st[0].significand[2], fpregs[6], 8);
+- hexvalue (ctx->fpstate->_st[0].significand[1] << 16
+- | ctx->fpstate->_st[0].significand[0], fpregs[7], 8);
+- hexvalue (ctx->fpstate->_st[1].exponent, fpregs[8], 8);
+- hexvalue (ctx->fpstate->_st[1].significand[3] << 16
+- | ctx->fpstate->_st[1].significand[2], fpregs[9], 8);
+- hexvalue (ctx->fpstate->_st[1].significand[1] << 16
+- | ctx->fpstate->_st[1].significand[0], fpregs[10], 8);
+- hexvalue (ctx->fpstate->_st[2].exponent, fpregs[11], 8);
+- hexvalue (ctx->fpstate->_st[2].significand[3] << 16
+- | ctx->fpstate->_st[2].significand[2], fpregs[12], 8);
+- hexvalue (ctx->fpstate->_st[2].significand[1] << 16
+- | ctx->fpstate->_st[2].significand[0], fpregs[13], 8);
+- hexvalue (ctx->fpstate->_st[3].exponent, fpregs[14], 8);
+- hexvalue (ctx->fpstate->_st[3].significand[3] << 16
+- | ctx->fpstate->_st[3].significand[2], fpregs[15], 8);
+- hexvalue (ctx->fpstate->_st[3].significand[1] << 16
+- | ctx->fpstate->_st[3].significand[0], fpregs[16], 8);
+- hexvalue (ctx->fpstate->_st[4].exponent, fpregs[17], 8);
+- hexvalue (ctx->fpstate->_st[4].significand[3] << 16
+- | ctx->fpstate->_st[4].significand[2], fpregs[18], 8);
+- hexvalue (ctx->fpstate->_st[4].significand[1] << 16
+- | ctx->fpstate->_st[4].significand[0], fpregs[19], 8);
+- hexvalue (ctx->fpstate->_st[5].exponent, fpregs[20], 8);
+- hexvalue (ctx->fpstate->_st[5].significand[3] << 16
+- | ctx->fpstate->_st[5].significand[2], fpregs[21], 8);
+- hexvalue (ctx->fpstate->_st[5].significand[1] << 16
+- | ctx->fpstate->_st[5].significand[0], fpregs[22], 8);
+- hexvalue (ctx->fpstate->_st[6].exponent, fpregs[23], 8);
+- hexvalue (ctx->fpstate->_st[6].significand[3] << 16
+- | ctx->fpstate->_st[6].significand[2], fpregs[24], 8);
+- hexvalue (ctx->fpstate->_st[6].significand[1] << 16
+- | ctx->fpstate->_st[6].significand[0], fpregs[25], 8);
+- hexvalue (ctx->fpstate->_st[7].exponent, fpregs[26], 8);
+- hexvalue (ctx->fpstate->_st[7].significand[3] << 16
+- | ctx->fpstate->_st[7].significand[2], fpregs[27], 8);
+- hexvalue (ctx->fpstate->_st[7].significand[1] << 16
+- | ctx->fpstate->_st[7].significand[0], fpregs[28], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[0].exponent, fpregs[5], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[0].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[0].significand[2], fpregs[6],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[0].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[0].significand[0], fpregs[7],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[1].exponent, fpregs[8], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[1].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[1].significand[2], fpregs[9],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[1].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[1].significand[0], fpregs[10],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[2].exponent, fpregs[11], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[2].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[2].significand[2], fpregs[12],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[2].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[2].significand[0], fpregs[13],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[3].exponent, fpregs[14], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[3].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[3].significand[2], fpregs[15],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[3].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[3].significand[0], fpregs[16],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[4].exponent, fpregs[17], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[4].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[4].significand[2], fpregs[18],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[4].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[4].significand[0], fpregs[19],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[5].exponent, fpregs[20], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[5].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[5].significand[2], fpregs[21],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[5].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[5].significand[0], fpregs[22],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[6].exponent, fpregs[23], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[6].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[6].significand[2], fpregs[24],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[6].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[6].significand[0], fpregs[25],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[7].exponent, fpregs[26], 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[7].significand[3] << 16
++ | ctx->uc_mcontext.fpregs->_st[7].significand[2], fpregs[27],
++ 8);
++ hexvalue (ctx->uc_mcontext.fpregs->_st[7].significand[1] << 16
++ | ctx->uc_mcontext.fpregs->_st[7].significand[0], fpregs[28],
++ 8);
+
+- hexvalue (ctx->fpstate->mxcsr, fpregs[29], 4);
++ hexvalue (ctx->uc_mcontext.fpregs->mxcsr, fpregs[29], 4);
+
+ for (i = 0; i < 16; i++)
+- hexvalue (ctx->fpstate->_xmm[i].element[3] << 24
+- | ctx->fpstate->_xmm[i].element[2] << 16
+- | ctx->fpstate->_xmm[i].element[1] << 8
+- | ctx->fpstate->_xmm[i].element[0], xmmregs[i], 32);
++ hexvalue (ctx->uc_mcontext.fpregs->_xmm[i].element[3] << 24
++ | ctx->uc_mcontext.fpregs->_xmm[i].element[2] << 16
++ | ctx->uc_mcontext.fpregs->_xmm[i].element[1] << 8
++ | ctx->uc_mcontext.fpregs->_xmm[i].element[0], xmmregs[i],
++ 32);
+
+
+ ADD_STRING ("\n\n ST(0) ");
+@@ -284,25 +301,25 @@
+ ADD_STRING ("\n mxcsr: ");
+ ADD_MEM (fpregs[29], 4);
+
+- ADD_STRING ("\n XMM0: ");
++ ADD_STRING ("\n XMM0: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING (" XMM1: ");
++ ADD_STRING (" XMM1: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING ("\n XMM2: ");
++ ADD_STRING ("\n XMM2: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING (" XMM3: ");
++ ADD_STRING (" XMM3: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING ("\n XMM4: ");
++ ADD_STRING ("\n XMM4: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING (" XMM5: ");
++ ADD_STRING (" XMM5: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING ("\n XMM6: ");
++ ADD_STRING ("\n XMM6: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING (" XMM7: ");
++ ADD_STRING (" XMM7: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING ("\n XMM8: ");
++ ADD_STRING ("\n XMM8: ");
+ ADD_MEM (xmmregs[0], 32);
+- ADD_STRING (" XMM9: ");
++ ADD_STRING (" XMM9: ");
+ ADD_MEM (xmmregs[0], 32);
+ ADD_STRING ("\n XMM10: ");
+ ADD_MEM (xmmregs[0], 32);
+@@ -326,4 +343,4 @@
+ }
+
+
+-#define REGISTER_DUMP register_dump (fd, &ctx)
++#define REGISTER_DUMP register_dump (fd, ctx)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigaction.c 2003-01-02 18:26:05.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigaction.c 2003-09-19 22:37:11.000000000 -0400
+@@ -36,9 +36,6 @@
+ /* We do not globally define the SA_RESTORER flag so do it here. */
+ #define SA_RESTORER 0x04000000
+
+-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded,
+- struct kernel_sigaction *__unbounded, size_t);
+-
+ /* Using the hidden attribute here does not change the code but it
+ helps to avoid warnings. */
+ #if defined HAVE_HIDDEN && defined HAVE_VISIBILITY_ATTRIBUTE \
+@@ -97,14 +94,15 @@
+ appropriate GDB maintainer. */
+
+ #define RESTORE(name, syscall) RESTORE2 (name, syscall)
+-#define RESTORE2(name, syscall) \
++# define RESTORE2(name, syscall) \
+ asm \
+ ( \
+ ".align 16\n" \
++ CFI_STARTPROC "\n" \
+ "__" #name ":\n" \
+ " movq $" #syscall ", %rax\n" \
+ " syscall\n" \
++ CFI_ENDPROC "\n" \
+ );
+-
+ /* The return code for realtime-signals. */
+ RESTORE (restore_rt, __NR_rt_sigreturn)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h 2002-11-21 14:09:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h 2003-09-19 22:37:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -16,11 +16,11 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+-#define SIGCONTEXT struct ucontext
+-#define SIGCONTEXT_EXTRA_ARGS
+-#define GET_PC(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RIP])
+-#define GET_FRAME(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RBP])
+-#define GET_STACK(ctx) ((void *) (ctx).uc_mcontext.gregs[REG_RSP])
++#define SIGCONTEXT siginfo_t *_si, struct ucontext *
++#define SIGCONTEXT_EXTRA_ARGS _si,
++#define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.gregs[REG_RIP])
++#define GET_FRAME(ctx) ((void *) (ctx)->uc_mcontext.gregs[REG_RBP])
++#define GET_STACK(ctx) ((void *) (ctx)->uc_mcontext.gregs[REG_RSP])
+
+ #define CALL_SIGHANDLER(handler, signo, ctx) \
+ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h 2001-11-21 07:21:56.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h 2003-05-12 12:13:11.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -18,6 +18,7 @@
+
+ #ifndef _SYS_DEBUGREG_H
+ #define _SYS_DEBUGREG_H 1
++#include <bits/wordsize.h>
+
+ /* Indicate the register numbers for a number of the specific
+ debug registers. Registers 0-3 contain the addresses we wish to trap on */
+@@ -73,7 +74,14 @@
+
+ /* The second byte to the control register has a few special
+ things. */
+-#define DR_CONTROL_RESERVED (0xFC00) /* Reserved */
++
++
++
++#if __WORDSIZE == 64
++# define DR_CONTROL_RESERVED (0xFFFFFFFF0000FC00UL) /* Reserved */
++#else
++# define DR_CONTROL_RESERVED (0x00FC00U) /* Reserved */
++#endif
+ #define DR_LOCAL_SLOWDOWN (0x100) /* Local slow the pipeline */
+ #define DR_GLOBAL_SLOWDOWN (0x200) /* Global slow the pipeline */
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h 2003-07-02 03:12:11.000000000 -0400
+@@ -0,0 +1,105 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _SYS_EPOLL_H
++#define _SYS_EPOLL_H 1
++
++#include <stdint.h>
++#include <sys/types.h>
++
++
++enum EPOLL_EVENTS
++ {
++ EPOLLIN = 0x001,
++#define EPOLLIN EPOLLIN
++ EPOLLPRI = 0x002,
++#define EPOLLPRI EPOLLPRI
++ EPOLLOUT = 0x004,
++#define EPOLLOUT EPOLLOUT
++ EPOLLRDNORM = 0x040,
++#define EPOLLRDNORM EPOLLRDNORM
++ EPOLLRDBAND = 0x080,
++#define EPOLLRDBAND EPOLLRDBAND
++ EPOLLWRNORM = 0x100,
++#define EPOLLWRNORM EPOLLWRNORM
++ EPOLLWRBAND = 0x200,
++#define EPOLLWRBAND EPOLLWRBAND
++ EPOLLMSG = 0x400,
++#define EPOLLMSG EPOLLMSG
++ EPOLLERR = 0x008,
++#define EPOLLERR EPOLLERR
++ EPOLLHUP = 0x010,
++#define EPOLLHUP EPOLLHUP
++ EPOLLET = (1 << 31)
++#define EPOLLET EPOLLET
++ };
++
++
++/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
++#define EPOLL_CTL_ADD 1 /* Add a file decriptor to the interface. */
++#define EPOLL_CTL_DEL 2 /* Remove a file decriptor from the interface. */
++#define EPOLL_CTL_MOD 3 /* Change file decriptor epoll_event structure. */
++
++
++typedef union epoll_data
++{
++ void *ptr;
++ int fd;
++ uint32_t u32;
++ uint64_t u64;
++} epoll_data_t;
++
++struct epoll_event
++{
++ uint32_t events; /* Epoll events */
++ epoll_data_t data; /* User data variable */
++} __attribute__ ((__packed__));
++
++
++__BEGIN_DECLS
++
++/* Creates an epoll instance. Returns an fd for the new instance.
++ The "size" parameter is a hint specifying the number of file
++ descriptors to be associated with the new instance. The fd
++ returned by epoll_create() should be closed with close(). */
++extern int epoll_create (int __size) __THROW;
++
++
++/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
++ -1 in case of error ( the "errno" variable will contain the
++ specific error code ) The "op" parameter is one of the EPOLL_CTL_*
++ constants defined above. The "fd" parameter is the target of the
++ operation. The "event" parameter describes which events the caller
++ is interested in and any associated user data. */
++extern int epoll_ctl (int __epfd, int __op, int __fd,
++ struct epoll_event *__event) __THROW;
++
++
++/* Wait for events on an epoll instance "epfd". Returns the number of
++ triggered events returned in "events" buffer. Or -1 in case of
++ error with the "errno" variable set to the specific error code. The
++ "events" parameter is a buffer that will contain triggered
++ events. The "maxevents" is the maximum number of events to be
++ returned ( usually size of "events" ). The "timeout" parameter
++ specifies the maximum wait time in milliseconds (-1 == infinite). */
++extern int epoll_wait (int __epfd, struct epoll_event *__events,
++ int __maxevents, int __timeout) __THROW;
++
++__END_DECLS
++
++#endif /* sys/epoll.h */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscall.S 2001-09-19 06:31:54.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscall.S 2003-05-24 14:06:24.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -28,7 +28,6 @@
+
+ .text
+ ENTRY (syscall)
+-
+ movq %rdi, %rax /* Syscall number -> rax. */
+ movq %rsi, %rdi /* shift arg1 - arg5. */
+ movq %rdx, %rsi
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscalls.list 2003-01-30 22:39:32.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/syscalls.list 2003-08-21 08:37:18.000000000 -0400
+@@ -4,6 +4,7 @@
+ mmap - mmap b:aniiii __mmap mmap __mmap64 mmap64
+ modify_ldt EXTRA modify_ldt i:ipi __modify_ldt modify_ldt
+ llseek EXTRA lseek Ci:iii __libc_lseek64 __llseek llseek __lseek64 lseek64
++posix_fadvise64 - fadvise64 Vi:iiii posix_fadvise64 posix_fadvise
+ pread - pread Ci:ibni __libc_pread __libc_pread64 __pread pread __pread64 pread64
+ pwrite - pwrite Ci:ibni __libc_pwrite __libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+ fstatfs - fstatfs i:ip __fstatfs fstatfs __fstatfs64 fstatfs64
+@@ -25,6 +26,7 @@
+ shmdt - shmdt i:s __shmdt shmdt
+ shmget - shmget i:iii __shmget shmget
+ semop - semop i:ipi __semop semop
++semtimedop - semtimedop i:ipip semtimedop
+ semget - semget i:iii __semget semget
+ semctl - semctl i:iiii __semctl semctl
+
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sysdep.h 2003-01-08 21:54:57.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/sysdep.h 2003-08-21 08:37:18.000000000 -0400
+@@ -46,6 +46,13 @@
+ # define __NR_pwrite __NR_pwrite64
+ #endif
+
++/* This is to help the old kernel headers where __NR_semtimedop is not
++ available. */
++#ifndef __NR_semtimedop
++# define __NR_semtimedop 220
++#endif
++
++
+ #ifdef __ASSEMBLER__
+
+ /* Linux uses a negative return value to indicate syscall errors,
+@@ -81,6 +88,31 @@
+ SYSCALL_ERROR_HANDLER \
+ END (name)
+
++#undef PSEUDO_NOERRNO
++#define PSEUDO_NOERRNO(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args)
++
++#undef PSEUDO_END_NOERRNO
++#define PSEUDO_END_NOERRNO(name) \
++ END (name)
++
++#define ret_NOERRNO ret
++
++#undef PSEUDO_ERRVAL
++#define PSEUDO_ERRVAL(name, syscall_name, args) \
++ .text; \
++ ENTRY (name) \
++ DO_CALL (syscall_name, args); \
++ negq %rax
++
++#undef PSEUDO_END_ERRVAL
++#define PSEUDO_END_ERRVAL(name) \
++ END (name)
++
++#define ret_ERRVAL ret
++
+ #ifndef PIC
+ #define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
+ #elif RTLD_PRIVATE_ERRNO
+@@ -113,11 +145,13 @@
+ 0: \
+ xorq %rdx, %rdx; \
+ subq %rax, %rdx; \
+- pushq %rdx \
++ pushq %rdx; \
++ cfi_adjust_cfa_offset(8); \
+ PUSH_ERRNO_LOCATION_RETURN; \
+ call BP_SYM (__errno_location)@PLT; \
+ POP_ERRNO_LOCATION_RETURN; \
+ popq %rdx; \
++ cfi_adjust_cfa_offset(-8); \
+ movl %edx, (%rax); \
+ orq $-1, %rax; \
+ jmp L(pseudo_end);
+@@ -134,37 +168,42 @@
+ jmp L(pseudo_end);
+ #endif /* PIC */
+
+-/* Linux/x86-64 takes system call arguments in registers:
++/* The Linux/x86-64 kernel expects the system call parameters in
++ registers according to the following table:
+
+- Register setup:
+- system call number rax
++ syscall number rax
+ arg 1 rdi
+ arg 2 rsi
+ arg 3 rdx
+- arg 4 rcx
++ arg 4 r10
+ arg 5 r8
+ arg 6 r9
+
++ The Linux kernel uses and destroys internally these registers:
+ return address from
+ syscall rcx
+ additionally clobered: r12-r15,rbx,rbp
+ eflags from syscall r11
+
+- The compiler is going to form a call by coming here, through PSEUDO, with arguments:
++ Normal function call, including calls to the system call stub
++ functions in the libc, get the first six parameters passed in
++ registers and the seventh parameter and later on the stack. The
++ register use is as follows:
++
++ system call number in the DO_CALL macro
++ arg 1 rdi
++ arg 2 rsi
++ arg 3 rdx
++ arg 4 rcx
++ arg 5 r8
++ arg 6 r9
++
++ We have to take care that the stack is aligned to 16 bytes. When
++ called the stack is not aligned since the return address has just
++ been pushed.
+
+- syscall number in the DO_CALL macro
+- arg 1 rdi
+- arg 2 rsi
+- arg 3 rdx
+- arg 4 r10
+- arg 5 r8
+- arg 6 r9
+-
+- We have to take care that the stack is alignedto 16 bytes. When
+- called the stack is not aligned since the return address has just
+- been pushed.
+
+- Syscalls of more than 6 arguments are not supported. */
++ Syscalls of more than 6 arguments are not supported. */
+
+ #undef DO_CALL
+ #define DO_CALL(syscall_name, args) \
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/time.S 2002-08-03 12:57:52.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/x86_64/time.S 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001,02 Free Software Foundation, Inc.
++/* Copyright (C) 2001,02, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,14 +30,13 @@
+ ENTRY (time)
+ /* Align stack. */
+ sub $0x8, %rsp
++ cfi_adjust_cfa_offset(8)
++
+ movq $VSYSCALL_ADDR_vtime, %rax
+ callq *%rax
+- /* Check error return. */
+- cmpl $-4095, %eax
+- jae SYSCALL_ERROR_LABEL
+
+-L(pseudo_end):
+ add $0x8, %rsp
++ cfi_adjust_cfa_offset(-8)
+ ret
+-PSEUDO_END(time)
++PSEUDO_END_NOERRNO(time)
+ libc_hidden_def (time)
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/xmknod.c 2002-08-04 04:22:58.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/xmknod.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,6 @@
+ /* xmknod call using old-style Unix mknod system call.
+- Copyright (C) 1991,93,95,96,97,98,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1993, 1995, 1996, 1997, 1998, 2000, 2002, 2003
++ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -26,9 +27,6 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-extern int __syscall_mknod (const char *__unbounded, unsigned short int,
+- unsigned short int);
+-
+ /* Create a device file named PATH, with permission and special bits MODE
+ and device number DEV (which can be constructed from major and minor
+ device numbers with the `makedev' macro above). */
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/xstat.c 2002-10-02 04:53:20.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstat.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,6 +1,5 @@
+ /* xstat using old-style Unix stat system call.
+- Copyright (C) 1991, 1995, 1996, 1997, 1998, 2000, 2002
+- Free Software Foundation, Inc.
++ Copyright (C) 1991,1995-1998,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,10 +30,7 @@
+ #include <sys/syscall.h>
+ #include <bp-checks.h>
+
+-#include <xstatconv.c>
+-
+-extern int __syscall_stat (const char *__unbounded,
+- struct kernel_stat *__unbounded);
++#include <xstatconv.h>
+
+ /* Get information about the file NAME in BUF. */
+ int
+@@ -54,7 +50,7 @@
+ result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name),
+ __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat_conv (vers, &kbuf, buf);
++ result = __xstat_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/xstat64.c 2002-10-11 14:58:50.000000000 -0400
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstat64.c 2003-09-19 22:37:09.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* xstat64 using old-style Unix stat system call.
+- Copyright (C) 1991,95,96,97,98,99,2000,01,02 Free Software Foundation, Inc.
++ Copyright (C) 1991, 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -29,15 +29,10 @@
+ #include "kernel-features.h"
+
+ #if __ASSUME_STAT64_SYSCALL == 0
+-# include <xstatconv.c>
++# include <xstatconv.h>
+ #endif
+
+-extern int __syscall_stat (const char *__unbounded,
+- struct kernel_stat *__unbounded);
+-
+ #ifdef __NR_stat64
+-extern int __syscall_stat64 (const char *__unbounded,
+- struct stat64 *__unbounded);
+ # if __ASSUME_STAT64_SYSCALL == 0
+ /* The variable is shared between all wrappers around *stat64 calls.
+ This is the definition. */
+@@ -82,7 +77,7 @@
+
+ result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
+ if (result == 0)
+- result = xstat64_conv (vers, &kbuf, buf);
++ result = __xstat64_conv (vers, &kbuf, buf);
+
+ return result;
+ #endif
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.c 2003-01-02 05:38:52.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.c 2003-08-21 08:37:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Convert between the kernel's `struct stat' format, and libc's.
+- Copyright (C) 1991,1995,1996,1997,2000,2002 Free Software Foundation, Inc.
++ Copyright (C) 1991,1995-1997,2000,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,6 +17,10 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
++#include <sys/stat.h>
++#include <kernel_stat.h>
++
+ #ifdef STAT_IS_KERNEL_STAT
+
+ /* Dummy. */
+@@ -27,8 +31,9 @@
+ #include <string.h>
+
+
+-static inline int
+-xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
++#if !defined __ASSUME_STAT64_SYSCALL || defined XSTAT_IS_XSTAT64
++int
++__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
+ {
+ switch (vers)
+ {
+@@ -97,12 +102,13 @@
+
+ return 0;
+ }
++#endif
+
+-static inline int
+-xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
++int
++__xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
+ {
+ #ifdef XSTAT_IS_XSTAT64
+- return xstat_conv (vers, kbuf, ubuf);
++ return __xstat_conv (vers, kbuf, ubuf);
+ #else
+ switch (vers)
+ {
+@@ -172,8 +178,8 @@
+ #endif
+ }
+
+-static inline int
+-xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
++int
++__xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
+ {
+ switch (vers)
+ {
+--- glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/linux/xstatconv.h 2003-06-28 04:10:46.000000000 -0400
+@@ -0,0 +1,26 @@
++/* Convert between the kernel's `struct stat' format, and libc's.
++ Copyright (C) 1991,1995-1997,2000,2002,2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include "kernel-features.h"
++
++#ifndef STAT_IS_KERNEL_STAT
++extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
++extern int __xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf);
++#endif
++extern int __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf);
+--- glibc-2.3.2/sysdeps/unix/sysv/syscalls.list 2002-12-14 19:14:18.000000000 -0500
++++ glibc-2.3.2/sysdeps/unix/sysv/syscalls.list 2003-08-21 08:37:11.000000000 -0400
+@@ -10,7 +10,7 @@
+ settimeofday - settimeofday i:PP __settimeofday settimeofday
+ signal - signal i:ii signal
+ stime - stime i:p stime
+-time - time i:P time
++time - time Ei:P time
+ times - times i:p __times times
+ ulimit - ulimit i:ii ulimit
+ utime - utime i:sP utime
+--- glibc-2.3.2/sysdeps/wordsize-32/Versions 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/wordsize-32/Versions 2003-03-03 04:45:12.000000000 -0500
+@@ -0,0 +1,7 @@
++libc {
++ GLIBC_2.3 {
++ # These were erroneously omitted for 64-bit platforms in 2.3
++ # and so we don't put them in locale/Versions.
++ strtoll_l; strtoull_l;
++ }
++}
+--- glibc-2.3.2/sysdeps/wordsize-64/Versions 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/wordsize-64/Versions 2003-03-03 04:45:12.000000000 -0500
+@@ -0,0 +1,6 @@
++libc {
++ GLIBC_2.3.3 {
++ # These were erroneously omitted for 64-bit platforms in 2.3.
++ strtoll_l; strtoull_l;
++ }
++}
+--- glibc-2.3.2/sysdeps/wordsize-64/strtol_l.c 2002-08-04 20:30:03.000000000 -0400
++++ glibc-2.3.2/sysdeps/wordsize-64/strtol_l.c 2003-03-15 15:02:22.000000000 -0500
+@@ -1,11 +1,14 @@
+ /* We have to irritate the compiler a bit. */
+ #define ____strtoll_l_internal ____strtoll_l_internal_XXX
+ #define __strtoll_l __strtoll_l_XXX
++#define strtoll_l strtoll_l_XXX
+
+ #include <sysdeps/generic/strtol_l.c>
+
+ #undef ____strtoll_l_internal
+ #undef __strtoll_l
++#undef strtoll_l
+ strong_alias (____strtol_l_internal, ____strtoll_l_internal)
+ libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal)
+ weak_alias (__strtol_l, __strtoll_l)
++weak_alias (__strtol_l, strtoll_l)
+--- glibc-2.3.2/sysdeps/wordsize-64/strtoul_l.c 2002-08-04 20:30:03.000000000 -0400
++++ glibc-2.3.2/sysdeps/wordsize-64/strtoul_l.c 2003-03-15 15:02:22.000000000 -0500
+@@ -1,11 +1,14 @@
+ /* We have to irritate the compiler a bit. */
+ #define ____strtoull_l_internal ____strtoull_l_internal_XXX
+ #define __strtoull_l __strtoull_l_XXX
++#define strtoull_l strtoull_l_XXX
+
+ #include <sysdeps/generic/strtoul_l.c>
+
+ #undef ____strtoull_l_internal
+ #undef __strtoull_l
++#undef strtoull_l
+ strong_alias (____strtoul_l_internal, ____strtoull_l_internal)
+ libc_hidden_ver (____strtoul_l_internal, ____strtoull_l_internal)
+ weak_alias (__strtoul_l, __strtoull_l)
++weak_alias (__strtoul_l, strtoull_l)
+--- glibc-2.3.2/sysdeps/x86_64/atomicity.h 2001-09-19 06:12:07.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/atomicity.h 1969-12-31 19:00:00.000000000 -0500
+@@ -1,57 +0,0 @@
+-/* Low-level functions for atomic operations. x86-64 version.
+- Copyright (C) 1997, 2000, 2001 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#ifndef _ATOMICITY_H
+-#define _ATOMICITY_H 1
+-
+-#include <inttypes.h>
+-
+-
+-static inline uint32_t
+-__attribute__ ((unused))
+-exchange_and_add (volatile uint32_t *mem, uint32_t val)
+-{
+- register uint32_t result;
+- __asm__ __volatile__ ("lock; xaddl %0,%1"
+- : "=r" (result), "=m" (*mem) : "0" (val), "1" (*mem));
+- return result;
+-}
+-
+-static inline void
+-__attribute__ ((unused))
+-atomic_add (volatile uint32_t *mem, int val)
+-{
+- __asm__ __volatile__ ("lock; addl %1,%0"
+- : "=m" (*mem) : "er" (val), "0" (*mem));
+-}
+-
+-static inline char
+-__attribute__ ((unused))
+-compare_and_swap (volatile long int *p, long int oldval, long int newval)
+-{
+- char ret;
+- long int readval;
+-
+- __asm__ __volatile__ ("lock; cmpxchgq %3, %1; sete %0"
+- : "=q" (ret), "=m" (*p), "=a" (readval)
+- : "r" (newval), "1" (*p), "a" (oldval));
+- return ret;
+-}
+-
+-#endif /* atomicity.h */
+--- glibc-2.3.2/sysdeps/x86_64/bits/atomic.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/bits/atomic.h 2003-05-12 12:13:12.000000000 -0400
+@@ -0,0 +1,321 @@
++/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdint.h>
++
++
++typedef int8_t atomic8_t;
++typedef uint8_t uatomic8_t;
++typedef int_fast8_t atomic_fast8_t;
++typedef uint_fast8_t uatomic_fast8_t;
++
++typedef int16_t atomic16_t;
++typedef uint16_t uatomic16_t;
++typedef int_fast16_t atomic_fast16_t;
++typedef uint_fast16_t uatomic_fast16_t;
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int_fast32_t atomic_fast32_t;
++typedef uint_fast32_t uatomic_fast32_t;
++
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++typedef int_fast64_t atomic_fast64_t;
++typedef uint_fast64_t uatomic_fast64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++
++#ifndef LOCK_PREFIX
++# ifdef UP
++# define LOCK_PREFIX /* nothing */
++# else
++# define LOCK_PREFIX "lock;"
++# endif
++#endif
++
++
++#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "q" (newval), "m" (*mem), "0" (oldval)); \
++ ret; })
++
++#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "r" (newval), "m" (*mem), "0" (oldval)); \
++ ret; })
++
++#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "r" (newval), "m" (*mem), "0" (oldval)); \
++ ret; })
++
++#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
++ ({ __typeof (*mem) ret; \
++ __asm __volatile (LOCK_PREFIX "cmpxchgq %q2, %1" \
++ : "=a" (ret), "=m" (*mem) \
++ : "r" ((long) (newval)), "m" (*mem), \
++ "0" ((long) (oldval))); \
++ ret; })
++
++
++/* Note that we need no lock prefix. */
++#define atomic_exchange_acq(mem, newvalue) \
++ ({ __typeof (*mem) result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile ("xchgb %b0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (newvalue), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile ("xchgw %w0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (newvalue), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile ("xchgl %0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (newvalue), "m" (*mem)); \
++ else \
++ __asm __volatile ("xchgq %q0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" ((long) (newvalue)), "m" (*mem)); \
++ result; })
++
++
++#define atomic_exchange_and_add(mem, value) \
++ ({ __typeof (*mem) result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "xaddb %b0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "xaddw %w0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "xaddl %0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" (value), "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "xaddq %q0, %1" \
++ : "=r" (result), "=m" (*mem) \
++ : "0" ((long) (value)), "m" (*mem)); \
++ result; })
++
++
++#define atomic_add(mem, value) \
++ (void) ({ if (__builtin_constant_p (value) && (value) == 1) \
++ atomic_increment (mem); \
++ else if (__builtin_constant_p (value) && (value) == 1) \
++ atomic_decrement (mem); \
++ else if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "addb %b1, %0" \
++ : "=m" (*mem) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "addw %w1, %0" \
++ : "=m" (*mem) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "addl %1, %0" \
++ : "=m" (*mem) \
++ : "ir" (value), "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "addq %q1, %0" \
++ : "=m" (*mem) \
++ : "ir" ((long) (value)), "m" (*mem)); \
++ })
++
++
++#define atomic_add_negative(mem, value) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "addb %b2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "addw %w2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "addl %2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "addq %q2, %0; sets %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" ((long) (value)), "m" (*mem)); \
++ __result; })
++
++
++#define atomic_add_zero(mem, value) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "addb %b2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "addw %w2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "addl %2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" (value), "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "addq %q2, %0; setz %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "ir" ((long) (value)), "m" (*mem)); \
++ __result; })
++
++
++#define atomic_increment(mem) \
++ (void) ({ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "incb %b0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "incw %w0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "incl %0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "incq %q0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ })
++
++
++#define atomic_increment_and_test(mem) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "incb %b0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "incw %w0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "incl %0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "incq %q0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ __result; })
++
++
++#define atomic_decrement(mem) \
++ (void) ({ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "decb %b0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "decw %w0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "decl %0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "decq %q0" \
++ : "=m" (*mem) \
++ : "m" (*mem)); \
++ })
++
++
++#define atomic_decrement_and_test(mem) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "decb %b0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "decw %w0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "decl %0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "decq %q0; sete %1" \
++ : "=m" (*mem), "=qm" (__result) \
++ : "m" (*mem)); \
++ __result; })
++
++
++#define atomic_bit_set(mem, bit) \
++ (void) ({ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "orb %b2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "ir" (1L << (bit))); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "orw %w2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "ir" (1L << (bit))); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "orl %2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "ir" (1L << (bit))); \
++ else if (__builtin_constant_p (bit) && (bit) < 32) \
++ __asm __volatile (LOCK_PREFIX "orq %2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "i" (1L << (bit))); \
++ else \
++ __asm __volatile (LOCK_PREFIX "orq %q2, %0" \
++ : "=m" (*mem) \
++ : "m" (*mem), "r" (1UL << (bit))); \
++ })
++
++
++#define atomic_bit_test_set(mem, bit) \
++ ({ unsigned char __result; \
++ if (sizeof (*mem) == 1) \
++ __asm __volatile (LOCK_PREFIX "btsb %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ else if (sizeof (*mem) == 2) \
++ __asm __volatile (LOCK_PREFIX "btsw %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ else if (sizeof (*mem) == 4) \
++ __asm __volatile (LOCK_PREFIX "btsl %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ else \
++ __asm __volatile (LOCK_PREFIX "btsq %3, %1; setc %0" \
++ : "=q" (__result), "=m" (*mem) \
++ : "m" (*mem), "ir" (bit)); \
++ __result; })
+--- glibc-2.3.2/sysdeps/x86_64/bits/byteswap.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/bits/byteswap.h 2003-08-17 02:32:00.000000000 -0400
+@@ -0,0 +1,133 @@
++/* Macros to swap the order of bytes in integer values.
++ Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
++# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
++#endif
++
++#ifndef _BITS_BYTESWAP_H
++#define _BITS_BYTESWAP_H 1
++
++#include <bits/wordsize.h>
++
++/* Swap bytes in 16 bit value. */
++#define __bswap_constant_16(x) \
++ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
++
++#if defined __GNUC__ && __GNUC__ >= 2
++# define __bswap_16(x) \
++ (__extension__ \
++ ({ register unsigned short int __v, __x = (x); \
++ if (__builtin_constant_p (__x)) \
++ __v = __bswap_constant_16 (__x); \
++ else \
++ __asm__ ("rorw $8, %w0" \
++ : "=r" (__v) \
++ : "0" (__x) \
++ : "cc"); \
++ __v; }))
++#else
++/* This is better than nothing. */
++# define __bswap_16(x) \
++ (__extension__ \
++ ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); }))
++#endif
++
++
++/* Swap bytes in 32 bit value. */
++#define __bswap_constant_32(x) \
++ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
++ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
++
++#if defined __GNUC__ && __GNUC__ >= 2
++# if __WORDSIZE == 64 || (defined __i486__ || defined __pentium__ \
++ || defined __pentiumpro__ || defined __pentium4__ \
++ || defined __k8__ || defined __athlon__ \
++ || defined __k6__)
++/* To swap the bytes in a word the i486 processors and up provide the
++ `bswap' opcode. On i386 we have to use three instructions. */
++# define __bswap_32(x) \
++ (__extension__ \
++ ({ register unsigned int __v, __x = (x); \
++ if (__builtin_constant_p (__x)) \
++ __v = __bswap_constant_32 (__x); \
++ else \
++ __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \
++ __v; }))
++# else
++# define __bswap_32(x) \
++ (__extension__ \
++ ({ register unsigned int __v, __x = (x); \
++ if (__builtin_constant_p (__x)) \
++ __v = __bswap_constant_32 (__x); \
++ else \
++ __asm__ ("rorw $8, %w0;" \
++ "rorl $16, %0;" \
++ "rorw $8, %w0" \
++ : "=r" (__v) \
++ : "0" (__x) \
++ : "cc"); \
++ __v; }))
++# endif
++#else
++# define __bswap_32(x) \
++ (__extension__ \
++ ({ register unsigned int __x = (x); __bswap_constant_32 (__x); }))
++#endif
++
++
++#if defined __GNUC__ && __GNUC__ >= 2
++/* Swap bytes in 64 bit value. */
++# define __bswap_constant_64(x) \
++ ((((x) & 0xff00000000000000ull) >> 56) \
++ | (((x) & 0x00ff000000000000ull) >> 40) \
++ | (((x) & 0x0000ff0000000000ull) >> 24) \
++ | (((x) & 0x000000ff00000000ull) >> 8) \
++ | (((x) & 0x00000000ff000000ull) << 8) \
++ | (((x) & 0x0000000000ff0000ull) << 24) \
++ | (((x) & 0x000000000000ff00ull) << 40) \
++ | (((x) & 0x00000000000000ffull) << 56))
++
++# if __WORDSIZE == 64
++# define __bswap_64(x) \
++ (__extension__ \
++ ({ register unsigned long __v, __x = (x); \
++ if (__builtin_constant_p (__x)) \
++ __v = __bswap_constant_64 (__x); \
++ else \
++ __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x)); \
++ __v; }))
++# else
++# define __bswap_64(x) \
++ (__extension__ \
++ ({ union { __extension__ unsigned long long int __ll; \
++ unsigned int __l[2]; } __w, __r; \
++ if (__builtin_constant_p (x)) \
++ __r.__ll = __bswap_constant_64 (x); \
++ else \
++ { \
++ __w.__ll = (x); \
++ __r.__l[0] = __bswap_32 (__w.__l[1]); \
++ __r.__l[1] = __bswap_32 (__w.__l[0]); \
++ } \
++ __r.__ll; }))
++# endif
++#endif
++
++#endif /* _BITS_BYTESWAP_H */
+--- glibc-2.3.2/sysdeps/x86_64/bits/setjmp.h 2002-03-11 16:08:08.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/bits/setjmp.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -17,8 +17,10 @@
+ 02111-1307 USA. */
+
+ /* Define the machine-dependent type `jmp_buf'. x86-64 version. */
++#ifndef _BITS_SETJMP_H
++#define _BITS_SETJMP_H 1
+
+-#ifndef _SETJMP_H
++#if !defined _SETJMP_H && !defined _PTHREAD_H
+ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+ #endif
+
+@@ -72,3 +74,5 @@
+ ((void *) (address) < (void *) (jmpbuf)[JB_SP])
+ # endif
+ #endif
++
++#endif /* bits/setjmp.h */
+--- glibc-2.3.2/sysdeps/x86_64/bsd-_setjmp.S 2002-12-31 14:13:28.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/bsd-_setjmp.S 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. x86-64 version.
+- Copyright (C) 1994-1997,2000,2001,2002 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -31,8 +31,8 @@
+ ENTRY (BP_SYM (_setjmp))
+ /* Set up arguments, we only need to set the second arg. */
+ xorq %rsi, %rsi
+-#ifdef PIC
+- jmp C_SYMBOL_NAME (BP_SYM (__sigsetjmp))@PLT
++#ifdef PIC
++ jmp HIDDEN_JUMPTARGET (__sigsetjmp)
+ #else
+ jmp BP_SYM (__sigsetjmp)
+ #endif
+--- glibc-2.3.2/sysdeps/x86_64/dl-machine.h 2003-02-21 14:24:27.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/dl-machine.h 2003-08-21 08:37:18.000000000 -0400
+@@ -24,6 +24,7 @@
+ #define ELF_MACHINE_NAME "x86_64"
+
+ #include <sys/param.h>
++#include <sysdep.h>
+
+ /* Return nonzero iff ELF header is compatible with the running host. */
+ static inline int __attribute__ ((unused))
+@@ -80,7 +81,7 @@
+ /* Set up the loaded object described by L so its unrelocated PLT
+ entries will jump to the on-demand fixup code in dl-runtime.c. */
+
+-static inline int __attribute__ ((unused))
++static inline int __attribute__ ((unused, always_inline))
+ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+ {
+ Elf64_Addr *got;
+@@ -136,14 +137,17 @@
+ .globl _dl_runtime_resolve\n\
+ .type _dl_runtime_resolve, @function\n\
+ .align 16\n\
++ " CFI_STARTPROC "\n\
+ _dl_runtime_resolve:\n\
+- pushq %rax # Preserve registers otherwise clobbered.\n\
+- pushq %rcx\n\
+- pushq %rdx\n\
+- pushq %rsi\n\
+- pushq %rdi\n\
+- pushq %r8\n\
+- pushq %r9\n\
++ subq $56,%rsp\n\
++ " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
++ movq %rax,(%rsp) # Preserve registers otherwise clobbered.\n\
++ movq %rcx,8(%rsp)\n\
++ movq %rdx,16(%rsp)\n\
++ movq %rsi,24(%rsp)\n\
++ movq %rdi,32(%rsp)\n\
++ movq %r8,40(%rsp)\n\
++ movq %r9,48(%rsp)\n\
+ movq 64(%rsp), %rsi # Copy args pushed by PLT in register.\n\
+ movq %rsi,%r11 # Multiply by 24\n\
+ addq %r11,%rsi\n\
+@@ -152,28 +156,33 @@
+ movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset\n\
+ call fixup # Call resolver.\n\
+ movq %rax, %r11 # Save return value\n\
+- popq %r9 # Get register content back.\n\
+- popq %r8\n\
+- popq %rdi\n\
+- popq %rsi\n\
+- popq %rdx\n\
+- popq %rcx\n\
+- popq %rax\n\
+- addq $16,%rsp # Adjust stack\n\
++ movq 48(%rsp),%r9 # Get register content back.\n\
++ movq 40(%rsp),%r8\n\
++ movq 32(%rsp),%rdi\n\
++ movq 24(%rsp),%rsi\n\
++ movq 16(%rsp),%rdx\n\
++ movq 8(%rsp),%rcx\n\
++ movq (%rsp),%rax\n\
++ addq $72,%rsp # Adjust stack(PLT did 2 pushes)\n\
++ " CFI_ADJUST_CFA_OFFSET(-72)" \n\
+ jmp *%r11 # Jump to function address.\n\
++ " CFI_ENDPROC "\n\
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
+ \n\
+ .globl _dl_runtime_profile\n\
+ .type _dl_runtime_profile, @function\n\
+ .align 16\n\
++ " CFI_STARTPROC "\n\
+ _dl_runtime_profile:\n\
+- pushq %rax # Preserve registers otherwise clobbered.\n\
+- pushq %rcx\n\
+- pushq %rdx\n\
+- pushq %rsi\n\
+- pushq %rdi\n\
+- pushq %r8\n\
+- pushq %r9\n\
++ subq $56,%rsp\n\
++ " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
++ movq %rax,(%rsp) # Preserve registers otherwise clobbered.\n\
++ movq %rcx,8(%rsp)\n\
++ movq %rdx,16(%rsp)\n\
++ movq %rsi,24(%rsp)\n\
++ movq %rdi,32(%rsp)\n\
++ movq %r8,40(%rsp)\n\
++ movq %r9,48(%rsp)\n\
+ movq 72(%rsp), %rdx # Load return address if needed\n\
+ movq 64(%rsp), %rsi # Copy args pushed by PLT in register.\n\
+ movq %rsi,%r11 # Multiply by 24\n\
+@@ -183,15 +192,17 @@
+ movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset\n\
+ call profile_fixup # Call resolver.\n\
+ movq %rax, %r11 # Save return value\n\
+- popq %r9 # Get register content back.\n\
+- popq %r8\n\
+- popq %rdi\n\
+- popq %rsi\n\
+- popq %rdx\n\
+- popq %rcx\n\
+- popq %rax\n\
+- addq $16,%rsp # Adjust stack\n\
++ movq 48(%rsp),%r9 # Get register content back.\n\
++ movq 40(%rsp),%r8\n\
++ movq 32(%rsp),%rdi\n\
++ movq 24(%rsp),%rsi\n\
++ movq 16(%rsp),%rdx\n\
++ movq 8(%rsp),%rcx\n\
++ movq (%rsp),%rax\n\
++ addq $72,%rsp # Adjust stack\n\
++ " CFI_ADJUST_CFA_OFFSET(-72)"\n\
+ jmp *%r11 # Jump to function address.\n\
++ " CFI_ENDPROC "\n\
+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
+ .previous\n\
+ ");
+@@ -203,15 +214,18 @@
+ .type _dl_runtime_resolve, @function\n\
+ .type _dl_runtime_profile, @function\n\
+ .align 16\n\
++ " CFI_STARTPROC "\n\
+ _dl_runtime_resolve:\n\
+ _dl_runtime_profile:\n\
+- pushq %rax # Preserve registers otherwise clobbered.\n\
+- pushq %rcx\n\
+- pushq %rdx\n\
+- pushq %rsi\n\
+- pushq %rdi\n\
+- pushq %r8\n\
+- pushq %r9\n\
++ subq $56,%rsp\n\
++ " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
++ movq %rax,(%rsp) # Preserve registers otherwise clobbered.\n\
++ movq %rcx,8(%rsp)\n\
++ movq %rdx,16(%rsp)\n\
++ movq %rsi,24(%rsp)\n\
++ movq %rdi,32(%rsp)\n\
++ movq %r8,40(%rsp)\n\
++ movq %r9,48(%rsp)\n\
+ movq 64(%rsp), %rsi # Copy args pushed by PLT in register.\n\
+ movq %rsi,%r11 # Multiply by 24\n\
+ addq %r11,%rsi\n\
+@@ -220,15 +234,17 @@
+ movq 56(%rsp), %rdi # %rdi: link_map, %rsi: reloc_offset\n\
+ call fixup # Call resolver.\n\
+ movq %rax, %r11 # Save return value\n\
+- popq %r9 # Get register content back.\n\
+- popq %r8\n\
+- popq %rdi\n\
+- popq %rsi\n\
+- popq %rdx\n\
+- popq %rcx\n\
+- popq %rax\n\
+- addq $16,%rsp # Adjust stack\n\
++ movq 48(%rsp),%r9 # Get register content back.\n\
++ movq 40(%rsp),%r8\n\
++ movq 32(%rsp),%rdi\n\
++ movq 24(%rsp),%rsi\n\
++ movq 16(%rsp),%rdx\n\
++ movq 8(%rsp),%rcx\n\
++ movq (%rsp),%rax\n\
++ addq $72,%rsp # Adjust stack\n\
++ " CFI_ADJUST_CFA_OFFSET(-72)"\n\
+ jmp *%r11 # Jump to function address.\n\
++ " CFI_ENDPROC "\n\
+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\
+ .previous\n\
+@@ -345,9 +361,10 @@
+
+ static inline void
+ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
+- const Elf64_Sym *sym, const struct r_found_version *version,
+- Elf64_Addr *const reloc_addr)
++ const Elf64_Sym *sym, const struct r_found_version *version,
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
+
+ #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+@@ -400,7 +417,7 @@
+ *reloc_addr = value + reloc->r_addend;
+ break;
+
+-#ifdef USE_TLS
++#if defined USE_TLS && !defined RESOLVE_CONFLICT_FIND_MAP
+ case R_X86_64_DTPMOD64:
+ # ifdef RTLD_BOOTSTRAP
+ /* During startup the dynamic linker is always the module
+@@ -459,6 +476,8 @@
+ strtab + refsym->st_name);
+ }
+ break;
++# ifndef RESOLVE_CONFLICT_FIND_MAP
++ /* Not needed for dl-conflict.c. */
+ case R_X86_64_PC32:
+ *(unsigned int *) reloc_addr = value + reloc->r_addend
+ - (Elf64_Addr) reloc_addr;
+@@ -492,9 +511,10 @@
+ rtld_progname ?: "<program name unknown>",
+ strtab + refsym->st_name);
+ }
+- memcpy (reloc_addr, (void *) value, MIN (sym->st_size,
+- refsym->st_size));
++ memcpy (reloc_addr_arg, (void *) value,
++ MIN (sym->st_size, refsym->st_size));
+ break;
++# endif
+ default:
+ _dl_reloc_bad_type (map, r_type, 0);
+ break;
+@@ -506,8 +526,9 @@
+
+ static inline void
+ elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+- Elf64_Addr *const reloc_addr)
++ void *const reloc_addr_arg)
+ {
++ Elf64_Addr *const reloc_addr = reloc_addr_arg;
+ assert (ELF64_R_TYPE (reloc->r_info) == R_X86_64_RELATIVE);
+ *reloc_addr = l_addr + reloc->r_addend;
+ }
+--- glibc-2.3.2/sysdeps/x86_64/elf/start.S 2002-12-09 22:41:56.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/elf/start.S 2003-06-03 09:36:39.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Startup code compliant to the ELF x86-64 ABI.
+- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 2001.
+
+@@ -74,6 +74,17 @@
+ which grow downwards). */
+ pushq %rsp
+
++#ifdef SHARED
++ /* Pass address of our own entry points to .fini and .init. */
++ movq __libc_csu_fini@GOTPCREL(%rip), %r8
++ movq __libc_csu_init@GOTPCREL(%rip), %rcx
++
++ movq BP_SYM (main)@GOTPCREL(%rip), %rdi
++
++ /* Call the user's main function, and exit with its value.
++ But let the libc call main. */
++ call BP_SYM (__libc_start_main)@PLT
++#else
+ /* Pass address of our own entry points to .fini and .init. */
+ movq $__libc_csu_fini, %r8
+ movq $__libc_csu_init, %rcx
+@@ -83,6 +94,7 @@
+ /* Call the user's main function, and exit with its value.
+ But let the libc call main. */
+ call BP_SYM (__libc_start_main)
++#endif
+
+ hlt /* Crash if somehow `exit' does return. */
+
+--- glibc-2.3.2/sysdeps/x86_64/fpu/bits/mathinline.h 2002-07-06 11:06:56.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/fpu/bits/mathinline.h 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Inline math functions for x86-64.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>, 2002.
+
+@@ -31,10 +31,31 @@
+
+ #if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2
+ /* GCC has builtins that can be used. */
+-# define isgreater(x, y) __builtin_isgreater (x, y)
+-# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
+-# define isless(x, y) __builtin_isless (x, y)
+-# define islessequal(x, y) __builtin_islessequal (x, y)
+-# define islessgreater(x, y) __builtin_islessgreater (x, y)
+-# define isunordered(x, y) __builtin_isunordered (x, y)
++# define isgreater(x, y) __builtin_isgreater (x, y)
++# define isgreaterequal(x, y) __builtin_isgreaterequal (x, y)
++# define isless(x, y) __builtin_isless (x, y)
++# define islessequal(x, y) __builtin_islessequal (x, y)
++# define islessgreater(x, y) __builtin_islessgreater (x, y)
++# define isunordered(x, y) __builtin_isunordered (x, y)
++
++
++/* Test for negative number. Used in the signbit() macro. */
++__MATH_INLINE int
++__signbitf (float __x) __THROW
++{
++ __extension__ union { float __f; int __i; } __u = { __f: __x };
++ return __u.__i < 0;
++}
++__MATH_INLINE int
++__signbit (double __x) __THROW
++{
++ __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
++ return __u.__i[1] < 0;
++}
++__MATH_INLINE int
++__signbitl (long double __x) __THROW
++{
++ __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
++ return (__u.__i[2] & 0x8000) != 0;
++}
+ #endif
+--- glibc-2.3.2/sysdeps/x86_64/fpu/libm-test-ulps 2002-12-06 17:25:36.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/fpu/libm-test-ulps 2003-04-12 11:39:50.000000000 -0400
+@@ -145,7 +145,7 @@
+ ldouble: 1
+
+ # ccos
+-Test "Imaginary part of: ccos (-2 - 3 i) == -4.1896256909688072301 - 9.1092278937553365979 i":
++Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ float: 1
+ ifloat: 1
+ ildouble: 1
+@@ -164,10 +164,10 @@
+ ifloat: 1
+
+ # ccosh
+-Test "Real part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ float: 1
+ ifloat: 1
+-Test "Imaginary part of: ccosh (-2 - 3 i) == -3.7245455049153225654 + 0.5118225699873846088 i":
++Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+ double: 1
+ float: 1
+ idouble: 1
+@@ -215,7 +215,7 @@
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "Imaginary part of: clog10 (-2 - 3 i) == 0.5569716761534183846 - 0.9375544629863747085 i":
++Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ double: 1
+ float: 5
+ idouble: 1
+@@ -373,10 +373,10 @@
+ ifloat: 1
+
+ # csinh
+-Test "Real part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+-Test "Imaginary part of: csinh (-2 - 3 i) == 3.5905645899857799520 - 0.5309210862485198052 i":
++Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ double: 1
+ idouble: 1
+ ildouble: 2
+@@ -399,12 +399,12 @@
+ ifloat: 1
+
+ # ctan
+-Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ double: 1
+ idouble: 1
+ ildouble: 439
+ ldouble: 439
+-Test "Imaginary part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
++Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ float: 1
+ ifloat: 1
+ ildouble: 2
+@@ -421,14 +421,14 @@
+ ldouble: 3
+
+ # ctanh
+-Test "Real part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ float: 2
+ ifloat: 2
+ ildouble: 5
+ ldouble: 5
+ double: 1
+ idouble: 1
+-Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
++Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ ildouble: 25
+ ldouble: 25
+ Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
+@@ -677,12 +677,12 @@
+ Test "lgamma (-0.5) == log(2*sqrt(pi))":
+ ildouble: 1
+ ldouble: 1
+-Test "lgamma (0.7) == 0.26086724653166651439":
++Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+ double: 1
+ float: 1
+ idouble: 1
+ ifloat: 1
+-Test "lgamma (1.2) == -0.853740900033158497197e-1":
++Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+ double: 1
+ float: 2
+ idouble: 1
+@@ -749,7 +749,7 @@
+ Test "tgamma (0.5) == sqrt (pi)":
+ float: 1
+ ifloat: 1
+-Test "tgamma (0.7) == 1.29805533264755778568":
++Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+ double: 1
+ float: 1
+ idouble: 1
+--- glibc-2.3.2/sysdeps/x86_64/fpu_control.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/fpu_control.h 2003-05-05 09:25:31.000000000 -0400
+@@ -0,0 +1,101 @@
++/* FPU control word bits. x86-64 version.
++ Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Olaf Flebbe.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#ifndef _FPU_CONTROL_H
++#define _FPU_CONTROL_H 1
++
++/* Note that this file sets on x86-64 only the x87 FPU, it does not
++ touch the SSE unit. */
++
++/* Here is the dirty part. Set up your 387 through the control word
++ * (cw) register.
++ *
++ * 15-13 12 11-10 9-8 7-6 5 4 3 2 1 0
++ * | reserved | IC | RC | PC | reserved | PM | UM | OM | ZM | DM | IM
++ *
++ * IM: Invalid operation mask
++ * DM: Denormalized operand mask
++ * ZM: Zero-divide mask
++ * OM: Overflow mask
++ * UM: Underflow mask
++ * PM: Precision (inexact result) mask
++ *
++ * Mask bit is 1 means no interrupt.
++ *
++ * PC: Precision control
++ * 11 - round to extended precision
++ * 10 - round to double precision
++ * 00 - round to single precision
++ *
++ * RC: Rounding control
++ * 00 - rounding to nearest
++ * 01 - rounding down (toward - infinity)
++ * 10 - rounding up (toward + infinity)
++ * 11 - rounding toward zero
++ *
++ * IC: Infinity control
++ * That is for 8087 and 80287 only.
++ *
++ * The hardware default is 0x037f which we use.
++ */
++
++#include <features.h>
++
++/* masking of interrupts */
++#define _FPU_MASK_IM 0x01
++#define _FPU_MASK_DM 0x02
++#define _FPU_MASK_ZM 0x04
++#define _FPU_MASK_OM 0x08
++#define _FPU_MASK_UM 0x10
++#define _FPU_MASK_PM 0x20
++
++/* precision control */
++#define _FPU_EXTENDED 0x300 /* libm requires double extended precision. */
++#define _FPU_DOUBLE 0x200
++#define _FPU_SINGLE 0x0
++
++/* rounding control */
++#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */
++#define _FPU_RC_DOWN 0x400
++#define _FPU_RC_UP 0x800
++#define _FPU_RC_ZERO 0xC00
++
++#define _FPU_RESERVED 0xF0C0 /* Reserved bits in cw */
++
++
++/* The fdlibm code requires strict IEEE double precision arithmetic,
++ and no interrupts for exceptions, rounding to nearest. */
++
++#define _FPU_DEFAULT 0x037f
++
++/* IEEE: same as above. */
++#define _FPU_IEEE 0x037f
++
++/* Type of the control word. */
++typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__)));
++
++/* Macros for accessing the hardware control word. */
++#define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw))
++#define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw))
++
++/* Default control word set at startup. */
++extern fpu_control_t __fpu_control;
++
++#endif /* fpu_control.h */
+--- glibc-2.3.2/sysdeps/x86_64/memcpy.S 2002-08-31 13:33:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/memcpy.S 2003-05-12 12:13:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Highly optimized version for x86-64.
+- Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on i586 version contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+@@ -90,3 +90,4 @@
+ ret
+
+ END (BP_SYM (memcpy))
++libc_hidden_builtin_def (memcpy)
+--- glibc-2.3.2/sysdeps/x86_64/memset.S 2002-08-31 13:42:25.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/memset.S 2003-05-12 12:13:12.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* memset/bzero -- set memory area to CH/0
+ Optimized version for x86-64.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Jaeger <aj@suse.de>.
+
+@@ -129,3 +129,6 @@
+ jmp 4b
+
+ END (memset)
++#if !BZERO_P
++libc_hidden_builtin_def (memset)
++#endif
+--- glibc-2.3.2/sysdeps/x86_64/setjmp.S 2001-09-19 06:12:08.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/setjmp.S 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* setjmp for x86-64.
+- Copyright (C) 2001 Free Software Foundation, Inc.
++ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -43,3 +43,4 @@
+ jmp BP_SYM (__sigjmp_save)
+ #endif
+ END (BP_SYM (__sigsetjmp))
++hidden_def (__sigsetjmp)
+--- glibc-2.3.2/sysdeps/x86_64/strcat.S 2002-11-13 16:42:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/strcat.S 2003-05-12 12:13:12.000000000 -0400
+@@ -257,3 +257,4 @@
+ movq %rdi, %rax /* Source is return value. */
+ retq
+ END (BP_SYM (strcat))
++libc_hidden_builtin_def (strcat)
+--- glibc-2.3.2/sysdeps/x86_64/strchr.S 2002-11-13 16:42:12.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/strchr.S 2003-05-12 12:13:12.000000000 -0400
+@@ -288,3 +288,4 @@
+ END (BP_SYM (strchr))
+
+ weak_alias (BP_SYM (strchr), BP_SYM (index))
++libc_hidden_builtin_def (strchr)
+--- glibc-2.3.2/sysdeps/x86_64/strcmp.S 2002-08-31 13:41:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/strcmp.S 2003-05-12 12:13:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Highly optimized version for x86-64.
+- Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on i686 version contributed by Ulrich Drepper
+ <drepper@cygnus.com>, 1999.
+@@ -42,3 +42,4 @@
+ cmovbl %ecx, %eax
+ ret
+ END (BP_SYM (strcmp))
++libc_hidden_builtin_def (strcmp)
+--- glibc-2.3.2/sysdeps/x86_64/strcpy.S 2002-08-31 13:41:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/strcpy.S 2003-05-12 12:13:12.000000000 -0400
+@@ -154,3 +154,6 @@
+ #endif
+ retq
+ END (BP_SYM (STRCPY))
++#ifndef USE_AS_STPCPY
++libc_hidden_builtin_def (strcpy)
++#endif
+--- glibc-2.3.2/sysdeps/x86_64/strcspn.S 2002-08-31 13:41:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/strcspn.S 2003-05-12 12:13:12.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strcspn (str, ss) -- Return the length of the initial segment of STR
+ which contains no characters from SS.
+ For AMD x86-64.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
+ Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>.
+@@ -121,3 +121,4 @@
+ #endif
+ ret
+ END (strcspn)
++libc_hidden_builtin_def (strcspn)
+--- glibc-2.3.2/sysdeps/x86_64/strlen.S 2002-08-31 13:41:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/strlen.S 2003-05-12 12:13:12.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* strlen(str) -- determine the length of the string STR.
+- Copyright (C) 2002 Free Software Foundation, Inc.
++ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Based on i486 version contributed by Ulrich Drepper <drepper@redhat.com>.
+ This file is part of the GNU C Library.
+
+@@ -136,3 +136,4 @@
+ subq %rdi, %rax /* compute difference to string start */
+ ret
+ END (strlen)
++libc_hidden_builtin_def (strlen)
+--- glibc-2.3.2/sysdeps/x86_64/strspn.S 2002-08-31 13:41:24.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/strspn.S 2003-05-12 12:13:12.000000000 -0400
+@@ -1,7 +1,7 @@
+ /* strspn (str, ss) -- Return the length of the initial segment of STR
+ which contains only characters from SS.
+ For AMD x86-64.
+- Copyright (C) 1994, 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1994-1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>.
+ Bug fixes by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>.
+@@ -111,3 +111,4 @@
+ non-valid character */
+ ret
+ END (strspn)
++libc_hidden_builtin_def (strspn)
+--- glibc-2.3.2/sysdeps/x86_64/strtok.S 2002-08-31 13:33:34.000000000 -0400
++++ glibc-2.3.2/sysdeps/x86_64/strtok.S 2003-05-24 14:06:24.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* strtok (str, delim) -- Return next DELIM separated token from STR.
+ For AMD x86-64.
+- Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Based on i686 version contributed by Ulrich Drepper
+ <drepper@cygnus.com>, 1998.
+@@ -68,6 +68,7 @@
+ table. */
+ movq %rdi, %r8 /* Save value. */
+ subq $256, %rsp /* Make space for 256 bytes. */
++ cfi_adjust_cfa_offset(256)
+ movq $32, %rcx /* 32*8 bytes = 256 bytes. */
+ movq %rsp, %rdi
+ xorq %rax, %rax /* We store 0s. */
+@@ -199,6 +200,7 @@
+ L(epilogue):
+ /* Remove the stopset table. */
+ addq $256, %rsp
++ cfi_adjust_cfa_offset(-256)
+ retq
+
+ L(returnNULL):
+--- glibc-2.3.2/sysdeps/x86_64/sysdep.h 2003-01-09 14:43:34.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/sysdep.h 2003-05-24 14:06:25.000000000 -0400
+@@ -50,18 +50,26 @@
+ ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
+ .align ALIGNARG(4); \
+ C_LABEL(name) \
++ cfi_startproc; \
+ CALL_MCOUNT
+
+ #undef END
+ #define END(name) \
+- ASM_SIZE_DIRECTIVE(name) \
++ cfi_endproc; \
++ ASM_SIZE_DIRECTIVE(name)
+
+ /* If compiled for profiling, call `mcount' at the start of each function. */
+ #ifdef PROF
+ /* The mcount code relies on a normal frame pointer being on the stack
+ to locate our caller, so push one just for its benefit. */
+-#define CALL_MCOUNT \
+- pushq %rbp; movq %rsp, %rbp; call JUMPTARGET(mcount); popq %rbp;
++#define CALL_MCOUNT \
++ pushq %rbp; \
++ cfi_adjust_cfa_offset(8); \
++ movq %rsp, %rbp; \
++ cfi_def_cfa_register(%rbp); \
++ call JUMPTARGET(mcount); \
++ popq %rbp; \
++ cfi_def_cfa(rsp,8);
+ #else
+ #define CALL_MCOUNT /* Do nothing. */
+ #endif
+--- glibc-2.3.2/sysdeps/x86_64/tst-stack-align.h 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps/x86_64/tst-stack-align.h 2003-09-17 14:15:58.000000000 -0400
+@@ -0,0 +1,47 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <stdio.h>
++#include <stdint.h>
++
++#define TEST_STACK_ALIGN() \
++ ({ \
++ /* AMD64 ABI mandates 16byte aligned stack. \
++ Unfortunately, current GCC doesn't support __int128 or __float128 \
++ types, so use aligned attribute instead. */ \
++ struct _S \
++ { \
++ int _i __attribute__((aligned (16))); \
++ int _pad[3]; \
++ } _s = { ._i = 18 }; \
++ double _d = 12.0; \
++ long double _ld = 15.0; \
++ int _ret = 0; \
++ printf ("__int128: %d %p %zu\n", _s._i, &_s, __alignof (_s)); \
++ if ((((uintptr_t) &_s) & (__alignof (_s) - 1)) != 0) \
++ _ret = 1; \
++ \
++ printf ("double: %g %p %zu\n", _d, &_d, __alignof (double)); \
++ if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0) \
++ _ret = 1; \
++ \
++ printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double)); \
++ if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0) \
++ _ret = 1; \
++ _ret; \
++ })
+--- glibc-2.3.2/sysdeps.sh 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps.sh 2003-05-14 01:15:20.000000000 -0400
+@@ -0,0 +1,395 @@
++# Compute the list of sysdep directories for this configuration.
++# This can take a while to compute.
++
++ac_prev=
++for ac_option
++do
++ # If the previous option needs an argument, assign it.
++ if test -n "$ac_prev"; then
++ eval "$ac_prev=\$ac_option"
++ ac_prev=
++ continue
++ fi
++
++ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++
++ # Accept the important Cygnus configure options, so we can diagnose typos.
++
++ case $ac_option in
++
++ -findfile | --findfile | --findfil | --findfi | --findf | --find | --fin | --fi)
++ ac_prev=findfile ;;
++ -findfile=* | --findfile=* | --findfil=* | --findfi=* | --findf=* | --find=* | --fin=* | --fi=*)
++ findfile=$ac_optarg ;;
++
++ -help | --help | --hel | --he | -h)
++ ac_init_help=long ;;
++
++ -machine | --machine | --machin | --machi | --mach | --mac | --ma)
++ ac_prev=machine ;;
++ -machine=* | --machine=* | --machin=* | --machi=* | --mach=* | --mac=* | --ma=*)
++ machine=$ac_optarg ;;
++
++ -os | --os)
++ ac_prev=os ;;
++ -os=* | --os=*)
++ os=$ac_optarg ;;
++
++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
++ ac_prev=srcdir ;;
++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sri=*)
++ srcdir=$ac_optarg ;;
++
++ *)
++ #
++ ;;
++ esac
++done
++
++if test -n "$ac_prev"; then
++ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
++ { echo "$as_me: error: missing argument to $ac_option" >&2
++ { (exit 1); exit 1; }; }
++fi
++
++if test -z "$srcdir"; then
++ srcdir=.
++fi
++
++if test -z "$os"; then
++ echo "Must specify --os, see --help for more details"
++ exit 0
++fi
++
++if test -z "$machine"; then
++ echo "Must specify --machine, see --help for more details"
++ exit 0
++fi
++
++if test "$ac_init_help" = "long"; then
++cat <<FOO
++Deal with sysdepsish stuff in the GNU C Library.
++
++Usage $0 [OPTION]...
++
++Usage:
++ -h, --help display this help and exit
++ -V, --version display version information and exit
++
++ --os=OS OS to calculate sysdeps for (gnu, linux, freebsd...)
++ --machine=MACHINE Processor to select (i686, hppa, alpha...)
++ --srcdir=SRCDIR Where to find the glibc directories
++ --findfile=FILENAME Which version of this file does this arch use
++
++Report bugs to <glibc>
++FOO
++exit 0
++fi
++
++
++# Expand the configuration machine name into a subdirectory by architecture
++# type and particular chip.
++case "$machine" in
++a29k | am29000) base_machine=a29k machine=a29k ;;
++alpha*) base_machine=alpha machine=alpha/$machine ;;
++arm*) base_machine=arm machine=arm/arm32/$machine ;;
++c3[012]) base_machine=cx0 machine=cx0/c30 ;;
++c4[04]) base_machine=cx0 machine=cx0/c40 ;;
++hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
++hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
++i[3456]86) base_machine=i386 machine=i386/$machine ;;
++ia64) base_machine=ia64 machine=ia64 ;;
++m680?0) base_machine=m68k machine=m68k/$machine ;;
++m68k) base_machine=m68k machine=m68k/m68020 ;;
++m88???) base_machine=m88k machine=m88k/$machine ;;
++m88k) base_machine=m88k machine=m88k/m88100 ;;
++mips64*) base_machine=mips64
++ case "$CC $CFLAGS $CPPFLAGS " in
++ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
++ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
++ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
++ *) mips_cc_abi=default ;;
++ esac
++ case $config_os in
++ *abin32*) mips_config_abi=n32 ;;
++ *abi64*|*abin64*) mips_config_abi=64 ;;
++ *abi32*|*abio32*) mips_config_abi=32 ;;
++ *) mips_config_abi=$mips_cc_abi ;;
++ esac
++ case $mips_config_abi in
++ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
++ n32) machine=mips/mips64/n32 ;;
++ 64) machine=mips/mips64/n64 ;;
++ 32) machine=mips/mips32/kern64 ;;
++ esac
++ machine=$machine/$config_machine
++ if test $mips_config_abi != $mips_cc_abi; then
++ # This won't make it to config.make, but we want to
++ # set this in case configure tests depend on it.
++ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
++ fi
++ ;;
++mips*) base_machine=mips machine=mips/mips32/$machine ;;
++powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
++powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
++s390) base_machine=s390 machine=s390/s390-32 ;;
++s390x) base_machine=s390 machine=s390/s390-64 ;;
++sh3*) base_machine=sh machine=sh/sh3 ;;
++sh4*) base_machine=sh machine=sh/sh4 ;;
++sparc | sparcv[67])
++ base_machine=sparc machine=sparc/sparc32 ;;
++sparcv8 | supersparc | hypersparc)
++ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
++sparcv8plus | sparcv8plusa | sparcv9)
++ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
++sparcv8plusb | sparcv9b)
++ base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
++sparc64 | ultrasparc)
++ base_machine=sparc machine=sparc/sparc64 ;;
++sparc64b | ultrasparc3)
++ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
++thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
++*) base_machine=$machine ;;
++esac
++
++case "$os" in
++# i586-linuxaout is mangled into i586-pc-linux-gnuaout
++linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
++ ;;
++gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
++ # These systems (almost) always use the ELF format.
++ elf=yes
++ ;;
++aix*)
++ # These systems are always xcoff
++ xcoff=yes
++ elf=no
++ ;;
++esac
++
++sysdep_dir=$srcdir/sysdeps
++# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
++#os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
++
++case "$os" in
++gnu*)
++ base_os=mach/hurd ;;
++netbsd* | 386bsd* | freebsd* | bsdi*)
++ base_os=unix/bsd/bsd4.4 ;;
++osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
++ base_os=unix/bsd ;;
++sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
++ base_os=unix/sysv ;;
++irix6*)
++ base_os=unix/sysv/irix6/$os ;;
++solaris[2-9]*)
++ base_os=unix/sysv/sysv4 ;;
++hpux*)
++ base_os=unix/sysv/hpux/$os ;;
++aix4.3*)
++ base_os=unix/sysv/aix/aix4.3 ;;
++none)
++ base_os=standalone ;;
++*)
++ base_os='' ;;
++esac
++
++# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
++tail=$os
++ostry=$os
++while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
++ ostry="$ostry /$o"
++ tail=$o
++done
++o=`echo $tail | sed 's/[0-9]*$//'`
++if test $o != $tail; then
++ ostry="$ostry /$o"
++fi
++# For linux-gnu, try linux-gnu, then linux.
++o=`echo $tail | sed 's/-.*$//'`
++if test $o != $tail; then
++ ostry="$ostry /$o"
++fi
++
++# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
++base=
++tail=$base_os
++while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
++ set $b
++ base="$base /$1"
++ tail="$2"
++done
++
++# For sparc/sparc32, try sparc/sparc32 and then sparc.
++mach=
++tail=$machine
++while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
++ set $m
++ # Prepend the machine's FPU directory unless --without-fp.
++ if test "$with_fp" = yes; then
++ mach="$mach /$1/fpu"
++ else
++ mach="$mach /$1/nofpu"
++ fi
++ mach="$mach /$1"
++ tail="$2"
++done
++
++# Find what sysdep directories exist.
++sysnames=
++IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++for d in $add_ons_pfx ''; do
++ for b in $base ''; do
++ for m0 in $mach ''; do
++ for v in /$vendor ''; do
++ test "$v" = / && continue
++ for o in /$ostry ''; do
++ test "$o" = / && continue
++ for m in $mach ''; do
++ if test "$m0$b$v$o$m"; then
++ try="${d}sysdeps$m0$b$v$o$m"
++ test -n "$enable_debug_configure" &&
++ echo "$0 [DEBUG]: try $try" >&2
++ if test -d $srcdir/$try; then
++ sysnames="$sysnames $try"
++ { test -n "$o" || test -n "$b"; } && os_used=t
++ { test -n "$m" || test -n "$m0"; } && machine_used=t
++ fi
++ fi
++ done
++ done
++ done
++ done
++ done
++done
++IFS="$ac_save_ifs"
++
++if test -z "$os_used" && test "$os" != none; then
++#jb AC_MSG_ERROR(Operating system $os is not supported.)
++ exit 1
++fi
++if test -z "$machine_used" && test "$machine" != none; then
++#jb AC_MSG_ERROR(The $machine is not supported.)
++ exit 1
++fi
++
++# We have now validated the configuration.
++
++
++# If using ELF, look for an `elf' subdirectory of each machine directory.
++# We prepend these rather than inserting them whereever the machine appears
++# because things specified by the machine's ELF ABI should override
++# OS-specific things, and should always be the same for any OS on the
++# machine (otherwise what's the point of an ABI?).
++if test "$elf" = yes; then
++ elf_dirs=
++ for d in $add_ons_pfx ''; do
++ for m in $mach; do
++ if test -d $srcdir/${d}sysdeps$m/elf; then
++ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
++ fi
++ done
++ done
++ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
++fi
++
++
++# Expand the list of system names into a full list of directories
++# from each element's parent name and Implies file (if present).
++set $sysnames
++names=
++while test $# -gt 0; do
++ name=$1
++ shift
++
++ case " $names " in *" $name "*)
++ # Already in the list.
++ continue
++ esac
++
++ # Report each name as we discover it, so there is no long pause in output.
++#JB echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
++#JB Don't do this anymore. Processors are fast, and noone watches
++#JB this beast build anymore.
++
++ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
++
++ case $name in
++ /*) xsrcdir= ;;
++ *) xsrcdir=$srcdir/ ;;
++ esac
++ test -n "$enable_debug_configure" &&
++ echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
++
++ if test -f $xsrcdir$name/Implies; then
++ # Collect more names from the `Implies' file (removing comments).
++ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
++ implied=
++ for x in $implied_candidate; do
++ found=no
++ if test -d $xsrcdir$name_base/$x; then
++ implied="$implied $name_base/$x";
++ found=yes
++ fi
++ for d in $add_ons_pfx ''; do
++ try="${d}sysdeps/$x"
++ case $d in
++ /*) try_srcdir= ;;
++ *) try_srcdir=$srcdir/ ;;
++ esac
++ test -n "$enable_debug_configure" &&
++ echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
++ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
++ then
++ implied="$implied $try"
++ found=yes
++ fi
++ done
++ if test $found = no; then
++#jb AC_MSG_WARN($name/Implies specifies nonexistent $x)
++ exit 1
++ fi
++ done
++ else
++ implied=
++ fi
++
++ # Add NAME to the list of names.
++ names="$names $name"
++
++ # Find the parent of NAME, using the empty string if it has none.
++ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
++
++ # Add the names implied by NAME, and NAME's parent (if it has one), to
++ # the list of names to be processed (the argument list). We prepend the
++ # implied names to the list and append the parent. We want implied
++ # directories to come before further directories inferred from the
++ # configuration components; this ensures that for sysv4, unix/common
++ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
++ # after sysv4).
++ sysnames="`echo $implied $* $parent`"
++ test -n "$sysnames" && set $sysnames
++done
++
++# Add the default directories.
++default_sysnames=sysdeps/generic
++if test "$elf" = yes; then
++ default_sysnames="sysdeps/generic/elf $default_sysnames"
++fi
++sysnames="$names $default_sysnames"
++#jb AC_SUBST(sysnames)
++# The other names were emitted during the scan.
++#jb AC_MSG_RESULT($default_sysnames)
++
++#FIXME This is the wrong way to do this
++if test -z "$findfile"; then
++ echo $sysnames
++ exit 0
++fi
++
++for x in $sysnames; do
++ if test -f "$x/$findfile"; then
++ echo "$x/$findfile"
++ exit 0
++ fi
++done
+--- glibc-2.3.2/sysdeps.sh~ 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/sysdeps.sh~ 2003-05-14 00:45:51.000000000 -0400
+@@ -0,0 +1,309 @@
++# Compute the list of sysdep directories for this configuration.
++# This can take a while to compute.
++
++# Must define:
++# srcdir
++# os
++# machine
++
++
++
++
++if test -z "$srcdir"; then
++ srcdir=.
++fi
++
++# Expand the configuration machine name into a subdirectory by architecture
++# type and particular chip.
++case "$machine" in
++a29k | am29000) base_machine=a29k machine=a29k ;;
++alpha*) base_machine=alpha machine=alpha/$machine ;;
++arm*) base_machine=arm machine=arm/arm32/$machine ;;
++c3[012]) base_machine=cx0 machine=cx0/c30 ;;
++c4[04]) base_machine=cx0 machine=cx0/c40 ;;
++hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
++hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
++i[3456]86) base_machine=i386 machine=i386/$machine ;;
++ia64) base_machine=ia64 machine=ia64 ;;
++m680?0) base_machine=m68k machine=m68k/$machine ;;
++m68k) base_machine=m68k machine=m68k/m68020 ;;
++m88???) base_machine=m88k machine=m88k/$machine ;;
++m88k) base_machine=m88k machine=m88k/m88100 ;;
++mips64*) base_machine=mips64
++ case "$CC $CFLAGS $CPPFLAGS " in
++ *" -mabi=n32 "*) mips_cc_abi=n32 ;;
++ *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
++ *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
++ *) mips_cc_abi=default ;;
++ esac
++ case $config_os in
++ *abin32*) mips_config_abi=n32 ;;
++ *abi64*|*abin64*) mips_config_abi=64 ;;
++ *abi32*|*abio32*) mips_config_abi=32 ;;
++ *) mips_config_abi=$mips_cc_abi ;;
++ esac
++ case $mips_config_abi in
++ default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
++ n32) machine=mips/mips64/n32 ;;
++ 64) machine=mips/mips64/n64 ;;
++ 32) machine=mips/mips32/kern64 ;;
++ esac
++ machine=$machine/$config_machine
++ if test $mips_config_abi != $mips_cc_abi; then
++ # This won't make it to config.make, but we want to
++ # set this in case configure tests depend on it.
++ CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
++ fi
++ ;;
++mips*) base_machine=mips machine=mips/mips32/$machine ;;
++powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
++powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
++s390) base_machine=s390 machine=s390/s390-32 ;;
++s390x) base_machine=s390 machine=s390/s390-64 ;;
++sh3*) base_machine=sh machine=sh/sh3 ;;
++sh4*) base_machine=sh machine=sh/sh4 ;;
++sparc | sparcv[67])
++ base_machine=sparc machine=sparc/sparc32 ;;
++sparcv8 | supersparc | hypersparc)
++ base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
++sparcv8plus | sparcv8plusa | sparcv9)
++ base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
++sparcv8plusb | sparcv9b)
++ base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
++sparc64 | ultrasparc)
++ base_machine=sparc machine=sparc/sparc64 ;;
++sparc64b | ultrasparc3)
++ base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
++thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
++*) base_machine=$machine ;;
++esac
++
++case "$os" in
++# i586-linuxaout is mangled into i586-pc-linux-gnuaout
++linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
++ ;;
++gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
++ # These systems (almost) always use the ELF format.
++ elf=yes
++ ;;
++aix*)
++ # These systems are always xcoff
++ xcoff=yes
++ elf=no
++ ;;
++esac
++
++sysdep_dir=$srcdir/sysdeps
++# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
++#os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
++
++case "$os" in
++gnu*)
++ base_os=mach/hurd ;;
++netbsd* | 386bsd* | freebsd* | bsdi*)
++ base_os=unix/bsd/bsd4.4 ;;
++osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
++ base_os=unix/bsd ;;
++sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
++ base_os=unix/sysv ;;
++irix6*)
++ base_os=unix/sysv/irix6/$os ;;
++solaris[2-9]*)
++ base_os=unix/sysv/sysv4 ;;
++hpux*)
++ base_os=unix/sysv/hpux/$os ;;
++aix4.3*)
++ base_os=unix/sysv/aix/aix4.3 ;;
++none)
++ base_os=standalone ;;
++*)
++ base_os='' ;;
++esac
++
++# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
++tail=$os
++ostry=$os
++while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
++ ostry="$ostry /$o"
++ tail=$o
++done
++o=`echo $tail | sed 's/[0-9]*$//'`
++if test $o != $tail; then
++ ostry="$ostry /$o"
++fi
++# For linux-gnu, try linux-gnu, then linux.
++o=`echo $tail | sed 's/-.*$//'`
++if test $o != $tail; then
++ ostry="$ostry /$o"
++fi
++
++# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
++base=
++tail=$base_os
++while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
++ set $b
++ base="$base /$1"
++ tail="$2"
++done
++
++# For sparc/sparc32, try sparc/sparc32 and then sparc.
++mach=
++tail=$machine
++while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
++ set $m
++ # Prepend the machine's FPU directory unless --without-fp.
++ if test "$with_fp" = yes; then
++ mach="$mach /$1/fpu"
++ else
++ mach="$mach /$1/nofpu"
++ fi
++ mach="$mach /$1"
++ tail="$2"
++done
++
++# Find what sysdep directories exist.
++sysnames=
++IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
++for d in $add_ons_pfx ''; do
++ for b in $base ''; do
++ for m0 in $mach ''; do
++ for v in /$vendor ''; do
++ test "$v" = / && continue
++ for o in /$ostry ''; do
++ test "$o" = / && continue
++ for m in $mach ''; do
++ if test "$m0$b$v$o$m"; then
++ try="${d}sysdeps$m0$b$v$o$m"
++ test -n "$enable_debug_configure" &&
++ echo "$0 [DEBUG]: try $try" >&2
++ if test -d $srcdir/$try; then
++ sysnames="$sysnames $try"
++ { test -n "$o" || test -n "$b"; } && os_used=t
++ { test -n "$m" || test -n "$m0"; } && machine_used=t
++ fi
++ fi
++ done
++ done
++ done
++ done
++ done
++done
++IFS="$ac_save_ifs"
++
++if test -z "$os_used" && test "$os" != none; then
++#jb AC_MSG_ERROR(Operating system $os is not supported.)
++ exit 1
++fi
++if test -z "$machine_used" && test "$machine" != none; then
++#jb AC_MSG_ERROR(The $machine is not supported.)
++ exit 1
++fi
++
++# We have now validated the configuration.
++
++
++# If using ELF, look for an `elf' subdirectory of each machine directory.
++# We prepend these rather than inserting them whereever the machine appears
++# because things specified by the machine's ELF ABI should override
++# OS-specific things, and should always be the same for any OS on the
++# machine (otherwise what's the point of an ABI?).
++if test "$elf" = yes; then
++ elf_dirs=
++ for d in $add_ons_pfx ''; do
++ for m in $mach; do
++ if test -d $srcdir/${d}sysdeps$m/elf; then
++ elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
++ fi
++ done
++ done
++ sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
++fi
++
++
++# Expand the list of system names into a full list of directories
++# from each element's parent name and Implies file (if present).
++set $sysnames
++names=
++while test $# -gt 0; do
++ name=$1
++ shift
++
++ case " $names " in *" $name "*)
++ # Already in the list.
++ continue
++ esac
++
++ # Report each name as we discover it, so there is no long pause in output.
++#JB echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
++#JB Don't do this anymore. Processors are fast, and noone watches
++#JB this beast build anymore.
++
++ name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
++
++ case $name in
++ /*) xsrcdir= ;;
++ *) xsrcdir=$srcdir/ ;;
++ esac
++ test -n "$enable_debug_configure" &&
++ echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
++
++ if test -f $xsrcdir$name/Implies; then
++ # Collect more names from the `Implies' file (removing comments).
++ implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
++ implied=
++ for x in $implied_candidate; do
++ found=no
++ if test -d $xsrcdir$name_base/$x; then
++ implied="$implied $name_base/$x";
++ found=yes
++ fi
++ for d in $add_ons_pfx ''; do
++ try="${d}sysdeps/$x"
++ case $d in
++ /*) try_srcdir= ;;
++ *) try_srcdir=$srcdir/ ;;
++ esac
++ test -n "$enable_debug_configure" &&
++ echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
++ if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
++ then
++ implied="$implied $try"
++ found=yes
++ fi
++ done
++ if test $found = no; then
++#jb AC_MSG_WARN($name/Implies specifies nonexistent $x)
++ exit 1
++ fi
++ done
++ else
++ implied=
++ fi
++
++ # Add NAME to the list of names.
++ names="$names $name"
++
++ # Find the parent of NAME, using the empty string if it has none.
++ parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
++
++ # Add the names implied by NAME, and NAME's parent (if it has one), to
++ # the list of names to be processed (the argument list). We prepend the
++ # implied names to the list and append the parent. We want implied
++ # directories to come before further directories inferred from the
++ # configuration components; this ensures that for sysv4, unix/common
++ # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
++ # after sysv4).
++ sysnames="`echo $implied $* $parent`"
++ test -n "$sysnames" && set $sysnames
++done
++
++# Add the default directories.
++default_sysnames=sysdeps/generic
++if test "$elf" = yes; then
++ default_sysnames="sysdeps/generic/elf $default_sysnames"
++fi
++sysnames="$names $default_sysnames"
++#jb AC_SUBST(sysnames)
++# The other names were emitted during the scan.
++#jb AC_MSG_RESULT($default_sysnames)
++echo $sysnames
+--- glibc-2.3.2/sysvipc/Makefile 2002-10-25 04:02:45.000000000 -0400
++++ glibc-2.3.2/sysvipc/Makefile 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1995, 1996, 1997, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1995, 1996, 1997, 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -26,7 +26,10 @@
+
+ routines := ftok \
+ msgsnd msgrcv msgget msgctl \
+- semop semget semctl \
++ semop semget semctl semtimedop \
+ shmat shmdt shmget shmctl
+
+ include ../Rules
++
++CFLAGS-msgrcv.c = -fexceptions -fasynchronous-unwind-tables
++CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables
+--- glibc-2.3.2/sysvipc/Versions 2002-12-18 17:49:52.000000000 -0500
++++ glibc-2.3.2/sysvipc/Versions 2003-04-12 11:39:50.000000000 -0400
+@@ -9,6 +9,10 @@
+ # s*
+ semctl; semget; semop; shmat; shmctl; shmdt; shmget;
+ }
++ GLIBC_2.3.3 {
++ # Non-standard function.
++ semtimedop;
++ }
+ GLIBC_PRIVATE {
+ # Cancellation point entries.
+ __libc_msgrcv; __libc_msgsnd;
+--- glibc-2.3.2/sysvipc/sys/msg.h 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/sysvipc/sys/msg.h 2003-04-24 20:06:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995,1996,1997,1999,2000,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -62,13 +62,19 @@
+ /* Get messages queue. */
+ extern int msgget (key_t __key, int __msgflg) __THROW;
+
+-/* Receive message from message queue. */
++/* Receive message from message queue.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int msgrcv (int __msqid, void *__msgp, size_t __msgsz,
+- long int __msgtyp, int __msgflg) __THROW;
++ long int __msgtyp, int __msgflg);
++
++/* Send message to message queue.
+
+-/* Send message to message queue. */
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int msgsnd (int __msqid, __const void *__msgp, size_t __msgsz,
+- int __msgflg) __THROW;
++ int __msgflg);
+
+ __END_DECLS
+
+--- glibc-2.3.2/sysvipc/sys/sem.h 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/sysvipc/sys/sem.h 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
++/* Copyright (C) 1995-1999, 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -30,6 +30,11 @@
+ /* Get system dependent definition of `struct semid_ds' and more. */
+ #include <bits/sem.h>
+
++#ifdef __USE_GNU
++# define __need_timespec
++# include <time.h>
++#endif
++
+ /* The following System V style IPC functions implement a semaphore
+ handling. The definition is found in XPG2. */
+
+@@ -53,6 +58,12 @@
+ /* Operate on semaphore. */
+ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW;
+
++#ifdef __USE_GNU
++/* Operate on semaphore with timeout. */
++extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
++ __const struct timespec *__timeout) __THROW;
++#endif
++
+ __END_DECLS
+
+ #endif /* sys/sem.h */
+--- glibc-2.3.2/termios/Makefile 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/termios/Makefile 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1991, 1992, 1993, 1995, 1997 Free Software Foundation, Inc.
++# Copyright (C) 1991,1992,1993,1995,1997,2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -28,3 +28,5 @@
+ tcdrain tcflow tcflush tcsendbrk cfmakeraw tcgetsid
+
+ include ../Rules
++
++CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables
+--- glibc-2.3.2/termios/termios.h 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/termios/termios.h 2003-04-24 20:06:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991,92,93,94,96,97,98,99 Free Software Foundation, Inc.
++/* Copyright (C) 1991,92,93,94,96,97,98,99, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -80,8 +80,11 @@
+ /* Send zero bits on FD. */
+ extern int tcsendbreak (int __fd, int __duration) __THROW;
+
+-/* Wait for pending output to be written on FD. */
+-extern int tcdrain (int __fd) __THROW;
++/* Wait for pending output to be written on FD.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
++extern int tcdrain (int __fd);
+
+ /* Flush pending data on FD.
+ Values for QUEUE_SELECTOR (TC{I,O,IO}FLUSH) are in <bits/termios.h>. */
+--- glibc-2.3.2/test-skeleton.c 2002-12-19 06:15:16.000000000 -0500
++++ glibc-2.3.2/test-skeleton.c 2003-08-21 08:36:58.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Skeleton for test programs.
+- Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+@@ -18,6 +18,7 @@
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
++#include <errno.h>
+ #include <getopt.h>
+ #include <search.h>
+ #include <signal.h>
+@@ -28,6 +29,7 @@
+ #include <sys/resource.h>
+ #include <sys/wait.h>
+ #include <sys/param.h>
++#include <time.h>
+
+ /* The test function is normally called `do_test' and it is called
+ with argc and argv as the arguments. We nevertheless provide the
+@@ -138,7 +140,20 @@
+ kill (pid, SIGKILL);
+
+ /* Wait for it to terminate. */
+- killed = waitpid (pid, &status, WNOHANG|WUNTRACED);
++ int i;
++ for (i = 0; i < 5; ++i)
++ {
++ killed = waitpid (pid, &status, WNOHANG|WUNTRACED);
++ if (killed != 0)
++ break;
++
++ /* Delay, give the system time to process the kill. If the
++ nanosleep() call return prematurely, all the better. We
++ won't restart it since this probably means the child process
++ finally died. */
++ struct timespec ts = { .tv_sec = 0, .tv_nsec = 100000000 };
++ nanosleep (&ts, NULL);
++ }
+ if (killed != 0 && killed != pid)
+ {
+ perror ("Failed to killed test process");
+@@ -155,7 +170,7 @@
+ exit (0);
+ #endif
+
+- if (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL)
++ if (killed == 0 || (WIFSIGNALED (status) && WTERMSIG (status) == SIGKILL))
+ fputs ("Timed out: killed the child process\n", stderr);
+ else if (WIFSTOPPED (status))
+ fprintf (stderr, "Timed out: the child process was %s\n",
+@@ -184,7 +199,7 @@
+ setbuf (stdout, NULL);
+ #endif
+
+- while ((opt = getopt_long (argc, argv, "", options, NULL)) != -1)
++ while ((opt = getopt_long (argc, argv, "+", options, NULL)) != -1)
+ switch (opt)
+ {
+ case '?':
+@@ -290,11 +305,11 @@
+ /* Default timeout is two seconds. */
+ # define TIMEOUT 2
+ #endif
+- alarm (TIMEOUT);
+ signal (SIGALRM, timeout_handler);
++ alarm (TIMEOUT);
+
+ /* Wait for the regular termination. */
+- termpid = waitpid (pid, &status, 0);
++ termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0));
+ if (termpid == -1)
+ {
+ printf ("Waiting for test program failed: %m\n");
+@@ -332,5 +347,16 @@
+ }
+
+ /* Simply exit with the return value of the test. */
++#ifndef EXPECTED_STATUS
+ return WEXITSTATUS (status);
++#else
++ if (WEXITSTATUS (status) != EXPECTED_STATUS)
++ {
++ fprintf (stderr, "Expected status %d, got %d\n",
++ EXPECTED_STATUS, WEXITSTATUS (status));
++ exit (1);
++ }
++
++ return 0;
++#endif
+ }
+--- glibc-2.3.2/time/Makefile 2003-01-18 23:49:30.000000000 -0500
++++ glibc-2.3.2/time/Makefile 2003-08-21 08:37:18.000000000 -0400
+@@ -44,6 +44,7 @@
+
+ CFLAGS-tzfile.c = $(tz-cflags)
+ CFLAGS-tzset.c = $(tz-cflags)
++CFLAGS-getdate.c = -fexceptions
+
+ # Don't warn about Y2k problem in strftime format string.
+ CFLAGS-test_time.c = -Wno-format
+--- glibc-2.3.2/time/getdate.c 2001-07-17 14:06:38.000000000 -0400
++++ glibc-2.3.2/time/getdate.c 2003-09-19 22:37:11.000000000 -0400
+@@ -1,5 +1,5 @@
+ /* Convert a string representation of time to a time value.
+- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
++ Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
+
+@@ -129,7 +129,7 @@
+ return 2;
+
+ /* Open the template file. */
+- fp = fopen (datemsk, "r");
++ fp = fopen (datemsk, "rc");
+ if (fp == NULL)
+ return 2;
+
+--- glibc-2.3.2/time/strftime.c 2003-01-19 13:35:06.000000000 -0500
++++ glibc-2.3.2/time/strftime.c 2003-08-21 08:37:18.000000000 -0400
+@@ -977,8 +977,8 @@
+ jump to one of these two labels. */
+
+ do_number_spacepad:
+- /* Force `_' flag unless overwritten by `0' flag. */
+- if (pad != L_('0'))
++ /* Force `_' flag unless overwritten by `0' or '-' flag. */
++ if (pad != L_('0') && pad != L_('-'))
+ pad = L_('_');
+
+ do_number:
+@@ -1144,13 +1144,17 @@
+ goto subformat;
+
+ case L_('r'):
+-#ifdef _NL_CURRENT
++#if !defined _NL_CURRENT && HAVE_STRFTIME
++ goto underlying_strftime;
++#else
++# ifdef _NL_CURRENT
+ if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
+ NLW(T_FMT_AMPM)))
+ == L_('\0'))
+-#endif
++# endif
+ subfmt = L_("%I:%M:%S %p");
+ goto subformat;
++#endif
+
+ case L_('S'):
+ if (modifier == L_('E'))
+--- glibc-2.3.2/time/sys/time.h 2002-08-27 00:52:47.000000000 -0400
++++ glibc-2.3.2/time/sys/time.h 2003-08-21 08:37:18.000000000 -0400
+@@ -1,5 +1,4 @@
+-/* Copyright (C) 1991-1994,96,97,98,99,2000,01,02
+- Free Software Foundation, Inc.
++/* Copyright (C) 1991-1994,1996-2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -145,7 +144,7 @@
+ __THROW;
+
+ /* Same as `utimes', but takes an open file descriptor instead of a name. */
+-extern int futimes (int fd, __const struct timeval __tvp[2]) __THROW;
++extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
+ #endif
+
+
+--- glibc-2.3.2/time/time.h 2002-12-30 18:53:58.000000000 -0500
++++ glibc-2.3.2/time/time.h 2003-04-24 20:06:02.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
++/* Copyright (C) 1991-1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -317,9 +317,12 @@
+
+
+ # ifdef __USE_POSIX199309
+-/* Pause execution for a number of nanoseconds. */
++/* Pause execution for a number of nanoseconds.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int nanosleep (__const struct timespec *__requested_time,
+- struct timespec *__remaining) __THROW;
++ struct timespec *__remaining);
+
+
+ /* Get resolution of clock CLOCK_ID. */
+@@ -333,10 +336,13 @@
+ __THROW;
+
+ # ifdef __USE_XOPEN2K
+-/* High-resolution sleep with the specified clock. */
++/* High-resolution sleep with the specified clock.
++
++ This function is a cancellation point and therefore not marked with
++ __THROW. */
+ extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ __const struct timespec *__req,
+- struct timespec *__rem) __THROW;
++ struct timespec *__rem);
+
+ /* Return clock ID for CPU-time clock. */
+ extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
+@@ -382,8 +388,11 @@
+ /* Parse the given string as a date specification and return a value
+ representing the value. The templates from the file identified by
+ the environment variable DATEMSK are used. In case of an error
+- `getdate_err' is set. */
+-extern struct tm *getdate (__const char *__string) __THROW;
++ `getdate_err' is set.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern struct tm *getdate (__const char *__string);
+ # endif
+
+ # ifdef __USE_GNU
+@@ -391,9 +400,14 @@
+ and the static buffer to return the result in, we provide a thread-safe
+ variant. The functionality is the same. The result is returned in
+ the buffer pointed to by RESBUFP and in case of an error the return
+- value is != 0 with the same values as given above for `getdate_err'. */
++ value is != 0 with the same values as given above for `getdate_err'.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int getdate_r (__const char *__restrict __string,
+- struct tm *__restrict __resbufp) __THROW;
++ struct tm *__restrict __resbufp);
+ # endif
+
+ __END_DECLS
+--- glibc-2.3.2/time/tst-strftime.c 2003-01-19 00:30:27.000000000 -0500
++++ glibc-2.3.2/time/tst-strftime.c 2003-05-12 12:13:12.000000000 -0400
+@@ -1,5 +1,6 @@
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <time.h>
+
+
+@@ -67,6 +68,42 @@
+ free (buf);
+ }
+
++ struct tm ttm =
++ {
++ /* Initialize the fields which are needed in the tests. */
++ .tm_mday = 1,
++ .tm_hour = 2
++ };
++ const struct
++ {
++ const char *fmt;
++ const char *exp;
++ size_t n;
++ } ftests[] =
++ {
++ { "%-e", "1", 1 },
++ { "%-k", "2", 1 },
++ { "%-l", "2", 1 },
++ };
++#define nftests (sizeof (ftests) / sizeof (ftests[0]))
++ for (cnt = 0; cnt < nftests; ++cnt)
++ {
++ char buf[100];
++ size_t r = strftime (buf, sizeof (buf), ftests[cnt].fmt, &ttm);
++ if (r != ftests[cnt].n)
++ {
++ printf ("strftime(\"%s\") returned %zu not %zu\n",
++ ftests[cnt].fmt, r, ftests[cnt].n);
++ result = 1;
++ }
++ if (strcmp (buf, ftests[cnt].exp) != 0)
++ {
++ printf ("strftime(\"%s\") produced \"%s\" not \"%s\"\n",
++ ftests[cnt].fmt, buf, ftests[cnt].exp);
++ result = 1;
++ }
++ }
++
+ return result;
+ }
+
+--- glibc-2.3.2/time/tzfile.c 2003-02-01 15:46:36.000000000 -0500
++++ glibc-2.3.2/time/tzfile.c 2003-09-19 22:37:11.000000000 -0400
+@@ -64,6 +64,7 @@
+
+ /* Decode the four bytes at PTR as a signed integer in network byte order. */
+ static inline int
++__attribute ((always_inline))
+ decode (const void *ptr)
+ {
+ if ((BYTE_ORDER == BIG_ENDIAN) && sizeof (int) == 4)
+@@ -147,14 +148,17 @@
+ file = new;
+ }
+
+- f = fopen (file, "r");
++ /* Note the file is opened with cancellation in the I/O functions
++ disabled. */
++ f = fopen (file, "rc");
+ if (f == NULL)
+ return;
+
+ /* No threads reading this stream. */
+ __fsetlocking (f, FSETLOCKING_BYCALLER);
+
+- if (fread_unlocked ((void *) &tzhead, sizeof (tzhead), 1, f) != 1)
++ if (__builtin_expect (fread_unlocked ((void *) &tzhead, sizeof (tzhead),
++ 1, f) != 1, 0))
+ goto lose;
+
+ num_transitions = (size_t) decode (tzhead.tzh_timecnt);
+@@ -193,23 +197,24 @@
+
+ if (sizeof (time_t) == 4)
+ {
+- if (fread_unlocked (transitions, 1, (4 + 1) * num_transitions, f)
+- != (4 + 1) * num_transitions)
++ if (__builtin_expect (fread_unlocked (transitions, 1,
++ (4 + 1) * num_transitions, f)
++ != (4 + 1) * num_transitions, 0))
+ goto lose;
+ }
+ else
+ {
+- if (fread_unlocked (transitions, 4, num_transitions, f)
+- != num_transitions
+- || fread_unlocked (type_idxs, 1, num_transitions, f)
+- != num_transitions)
++ if (__builtin_expect (fread_unlocked (transitions, 4, num_transitions, f)
++ != num_transitions, 0)
++ || __builtin_expect (fread_unlocked (type_idxs, 1, num_transitions,
++ f) != num_transitions, 0))
+ goto lose;
+ }
+
+ /* Check for bogus indices in the data file, so we can hereafter
+ safely use type_idxs[T] as indices into `types' and never crash. */
+ for (i = 0; i < num_transitions; ++i)
+- if (type_idxs[i] >= num_types)
++ if (__builtin_expect (type_idxs[i] >= num_types, 0))
+ goto lose;
+
+ if (BYTE_ORDER != BIG_ENDIAN || sizeof (time_t) != 4)
+@@ -227,29 +232,33 @@
+ {
+ unsigned char x[4];
+ int c;
+- if (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x))
++ if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x),
++ 0))
+ goto lose;
+ c = getc_unlocked (f);
+- if ((unsigned int) c > 1u)
++ if (__builtin_expect ((unsigned int) c > 1u, 0))
+ goto lose;
+ types[i].isdst = c;
+ c = getc_unlocked (f);
+- if ((size_t) c > chars) /* Bogus index in data file. */
++ if (__builtin_expect ((size_t) c > chars, 0))
++ /* Bogus index in data file. */
+ goto lose;
+ types[i].idx = c;
+ types[i].offset = (long int) decode (x);
+ }
+
+- if (fread_unlocked (zone_names, 1, chars, f) != chars)
++ if (__builtin_expect (fread_unlocked (zone_names, 1, chars, f) != chars, 0))
+ goto lose;
+
+ for (i = 0; i < num_leaps; ++i)
+ {
+ unsigned char x[4];
+- if (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x))
++ if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x),
++ 0))
+ goto lose;
+ leaps[i].transition = (time_t) decode (x);
+- if (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x))
++ if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x),
++ 0))
+ goto lose;
+ leaps[i].change = (long int) decode (x);
+ }
+@@ -257,7 +266,7 @@
+ for (i = 0; i < num_isstd; ++i)
+ {
+ int c = getc_unlocked (f);
+- if (c == EOF)
++ if (__builtin_expect (c == EOF, 0))
+ goto lose;
+ types[i].isstd = c != 0;
+ }
+@@ -267,7 +276,7 @@
+ for (i = 0; i < num_isgmt; ++i)
+ {
+ int c = getc_unlocked (f);
+- if (c == EOF)
++ if (__builtin_expect (c == EOF, 0))
+ goto lose;
+ types[i].isgmt = c != 0;
+ }
+--- glibc-2.3.2/timezone/antarctica 2001-06-09 16:29:18.000000000 -0400
++++ glibc-2.3.2/timezone/antarctica 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)antarctica 7.22
++# @(#)antarctica 7.23
+
+ # From Paul Eggert (1999-11-15):
+ # To keep things manageable, we list only locations occupied year-round; see
+@@ -255,6 +255,13 @@
+ # Halley is on a moving ice shelf and is periodically relocated
+ # so that it is never more than 10km from its nominal location.
+ # Rothera, Adelaide Island, -6734-6808, since 1976-12-01
++#
++# From Paul Eggert (2002-10-22)
++# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
++#
++# Zone NAME GMTOFF RULES FORMAT [UNTIL]
++Zone Antarctica/Rothera 0 - zzz 1976 Dec 1
++ -3:00 - ROTT # Rothera time
+
+ # Uruguay - year round base
+ # Artigas, King George Island, -621104-0585107
+--- glibc-2.3.2/timezone/asia 2002-10-15 12:59:28.000000000 -0400
++++ glibc-2.3.2/timezone/asia 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)asia 7.68
++# @(#)asia 7.71
+
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+@@ -29,22 +29,23 @@
+ # I invented the abbreviations marked `*' in the following table;
+ # the rest are from earlier versions of this file, or from other sources.
+ # Corrections are welcome!
+-# std dst
+-# LMT Local Mean Time
+-# 2:00 EET EEST Eastern European Time
+-# 2:00 IST IDT Israel
+-# 3:00 AST ADT Arabia*
+-# 4:00 GST Gulf*
+-# 5:30 IST India
+-# 7:00 ICT Indochina*
+-# 7:00 WIT west Indonesia
+-# 8:00 CIT central Indonesia
+-# 8:00 CST China
+-# 9:00 CJT Central Japanese Time (1896/1937)*
+-# 9:00 EIT east Indonesia
+-# 9:00 JST Japan
+-# 9:00 KST Korea
+-# 9:30 CST (Australian) Central Standard Time
++# std dst
++# LMT Local Mean Time
++# 2:00 EET EEST Eastern European Time
++# 2:00 IST IDT Israel
++# 3:00 AST ADT Arabia*
++# 3:30 IRST IRDT Iran
++# 4:00 GST Gulf*
++# 5:30 IST India
++# 7:00 ICT Indochina*
++# 7:00 WIT west Indonesia
++# 8:00 CIT central Indonesia
++# 8:00 CST China
++# 9:00 CJT Central Japanese Time (1896/1937)*
++# 9:00 EIT east Indonesia
++# 9:00 JST Japan
++# 9:00 KST Korea
++# 9:30 CST (Australian) Central Standard Time
+ #
+ # See the `europe' file for Russia and Turkey in Asia.
+
+@@ -430,89 +431,97 @@
+ 9:00 - EIT
+
+ # Iran
+-# From Paul Eggert (2000-06-12), following up a suggestion by Rich Wales:
+-# Ahmea Alavi in
+-# <a href="http://www.persia.org/Iran_Lib/Calendar/taghveem.txt">
+-# TAGHVEEM (1993-07-12)
+-# </a>
+-# writes ``Daylight saving time in Iran starts from the first day
+-# of Farvardin and ends the first day of Mehr.'' This disagrees with the SSIM:
+-#
+-# DST start DST end
+-# year SSIM Alavi SSIM Alavi
+-# 1991 05-03!= 03-21 09-20!= 09-23
+-# 1992 03-22!= 03-21 09-23 09-23
+-# 1993 03-21 03-21 09-23 09-23
+-# 1994 03-21 03-21 09-22!= 09-23
+-# 1995 03-21 03-21 09-22!= 09-23
+-# 1996 03-21!= 03-20 09-22 09-22
+-# 1997 03-22!= 03-21 09-22!= 09-23
+-# 1998 03-21 03-21 09-21!= 09-23
+-# 1999 03-22!= 03-21 09-22!= 09-23
+-# 2000 03-21!= 03-20 09-21!= 09-22
+-# 2001 03-19!= 03-21 09-19!= 09-23
+-# 2002 03-18!= 03-21 09-18!= 09-23
+-#
+-# Go with Alavi starting with 1992.
+-# I used Ed Reingold's cal-persia in GNU Emacs 19.34 to compute Persian dates.
++
++# From Roozbeh Pournader (2003-03-15):
++# This is an English translation of what I just found (originally in Persian).
++# The Gregorian dates in brackets are mine:
++#
++# Official Newspaper No. 13548-1370/6/25 [1991-09-16]
++# No. 16760/T233 H 1370/6/10 [1991-09-01]
++#
++# The Rule About Change of the Official Time of the Country
++#
++# The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
++# based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
++# of the Country's Organization for Official and Employment Affairs,
++# and referring to the law for equating the working hours of workers
++# and officers in the whole country dated 1359/4/23 [1980-07-14], and
++# for synchronizing the official times of the country, agreed that:
++#
++# The official time of the country will should move forward one hour
++# at the 24[:00] hours of the first day of Farvardin and should return
++# to its previous state at the 24[:00] hours of the 30th day of
++# Shahrivar.
++#
++# First Deputy to the President - Hassan Habibi
++#
++# From personal experience, that agrees with what has been followed
++# for at least the last 5 years. Before that, for a few years, the
++# date used was the first Thursday night of Farvardin and the last
++# Thursday night of Shahrivar, but I can't give exact dates....
++# I have also changed the abbreviations to what is considered correct
++# here in Iran, IRST for regular time and IRDT for daylight saving time.
++
++# From Paul Eggert (2003-03-15)
++# Go with Shanks before September 1991, and with Pournader thereafter.
++# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates.
+ # The Persian calendar is based on the sun, and dates after around 2050
+ # are approximate; stop after 2037 when 32-bit time_t's overflow.
+ #
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Iran 1978 1980 - Mar 21 0:00 1:00 S
+-Rule Iran 1978 only - Oct 21 0:00 0 -
+-Rule Iran 1979 only - Sep 19 0:00 0 -
+-Rule Iran 1980 only - Sep 23 0:00 0 -
+-Rule Iran 1991 only - May 3 0:00s 1:00 S
+-Rule Iran 1991 only - Sep 20 0:00s 0 -
+-Rule Iran 1992 1995 - Mar 21 0:00 1:00 S
+-Rule Iran 1992 1995 - Sep 23 0:00 0 -
+-Rule Iran 1996 only - Mar 20 0:00 1:00 S
+-Rule Iran 1996 only - Sep 22 0:00 0 -
+-Rule Iran 1997 1999 - Mar 21 0:00 1:00 S
+-Rule Iran 1997 1999 - Sep 23 0:00 0 -
+-Rule Iran 2000 only - Mar 20 0:00 1:00 S
+-Rule Iran 2000 only - Sep 22 0:00 0 -
+-Rule Iran 2001 2003 - Mar 21 0:00 1:00 S
+-Rule Iran 2001 2003 - Sep 23 0:00 0 -
+-Rule Iran 2004 only - Mar 20 0:00 1:00 S
+-Rule Iran 2004 only - Sep 22 0:00 0 -
+-Rule Iran 2005 2007 - Mar 21 0:00 1:00 S
+-Rule Iran 2005 2007 - Sep 23 0:00 0 -
+-Rule Iran 2008 only - Mar 20 0:00 1:00 S
+-Rule Iran 2008 only - Sep 22 0:00 0 -
+-Rule Iran 2009 2011 - Mar 21 0:00 1:00 S
+-Rule Iran 2009 2011 - Sep 23 0:00 0 -
+-Rule Iran 2012 only - Mar 20 0:00 1:00 S
+-Rule Iran 2012 only - Sep 22 0:00 0 -
+-Rule Iran 2013 2015 - Mar 21 0:00 1:00 S
+-Rule Iran 2013 2015 - Sep 23 0:00 0 -
+-Rule Iran 2016 only - Mar 20 0:00 1:00 S
+-Rule Iran 2016 only - Sep 22 0:00 0 -
+-Rule Iran 2017 2019 - Mar 21 0:00 1:00 S
+-Rule Iran 2017 2019 - Sep 23 0:00 0 -
+-Rule Iran 2020 only - Mar 20 0:00 1:00 S
+-Rule Iran 2020 only - Sep 22 0:00 0 -
+-Rule Iran 2021 2023 - Mar 21 0:00 1:00 S
+-Rule Iran 2021 2023 - Sep 23 0:00 0 -
+-Rule Iran 2024 2025 - Mar 20 0:00 1:00 S
+-Rule Iran 2024 2025 - Sep 22 0:00 0 -
+-Rule Iran 2026 2027 - Mar 21 0:00 1:00 S
+-Rule Iran 2026 2027 - Sep 23 0:00 0 -
+-Rule Iran 2028 2029 - Mar 20 0:00 1:00 S
+-Rule Iran 2028 2029 - Sep 22 0:00 0 -
+-Rule Iran 2030 2031 - Mar 21 0:00 1:00 S
+-Rule Iran 2030 2031 - Sep 23 0:00 0 -
+-Rule Iran 2032 2033 - Mar 20 0:00 1:00 S
+-Rule Iran 2032 2033 - Sep 22 0:00 0 -
+-Rule Iran 2034 2035 - Mar 21 0:00 1:00 S
+-Rule Iran 2034 2035 - Sep 23 0:00 0 -
+-Rule Iran 2036 2037 - Mar 20 0:00 1:00 S
+-Rule Iran 2036 2037 - Sep 22 0:00 0 -
++Rule Iran 1978 1980 - Mar 21 0:00 1:00 D
++Rule Iran 1978 only - Oct 21 0:00 0 S
++Rule Iran 1979 only - Sep 19 0:00 0 S
++Rule Iran 1980 only - Sep 23 0:00 0 S
++Rule Iran 1991 only - May 3 0:00 1:00 D
++Rule Iran 1992 1995 - Mar 22 0:00 1:00 D
++Rule Iran 1991 1995 - Sep 22 0:00 0 S
++Rule Iran 1996 only - Mar 21 0:00 1:00 D
++Rule Iran 1996 only - Sep 21 0:00 0 S
++Rule Iran 1997 1999 - Mar 22 0:00 1:00 D
++Rule Iran 1997 1999 - Sep 22 0:00 0 S
++Rule Iran 2000 only - Mar 21 0:00 1:00 D
++Rule Iran 2000 only - Sep 21 0:00 0 S
++Rule Iran 2001 2003 - Mar 22 0:00 1:00 D
++Rule Iran 2001 2003 - Sep 22 0:00 0 S
++Rule Iran 2004 only - Mar 21 0:00 1:00 D
++Rule Iran 2004 only - Sep 21 0:00 0 S
++Rule Iran 2005 2007 - Mar 22 0:00 1:00 D
++Rule Iran 2005 2007 - Sep 22 0:00 0 S
++Rule Iran 2008 only - Mar 21 0:00 1:00 D
++Rule Iran 2008 only - Sep 21 0:00 0 S
++Rule Iran 2009 2011 - Mar 22 0:00 1:00 D
++Rule Iran 2009 2011 - Sep 22 0:00 0 S
++Rule Iran 2012 only - Mar 21 0:00 1:00 D
++Rule Iran 2012 only - Sep 21 0:00 0 S
++Rule Iran 2013 2015 - Mar 22 0:00 1:00 D
++Rule Iran 2013 2015 - Sep 22 0:00 0 S
++Rule Iran 2016 only - Mar 21 0:00 1:00 D
++Rule Iran 2016 only - Sep 21 0:00 0 S
++Rule Iran 2017 2019 - Mar 22 0:00 1:00 D
++Rule Iran 2017 2019 - Sep 22 0:00 0 S
++Rule Iran 2020 only - Mar 21 0:00 1:00 D
++Rule Iran 2020 only - Sep 21 0:00 0 S
++Rule Iran 2021 2023 - Mar 22 0:00 1:00 D
++Rule Iran 2021 2023 - Sep 22 0:00 0 S
++Rule Iran 2024 2025 - Mar 21 0:00 1:00 D
++Rule Iran 2024 2025 - Sep 21 0:00 0 S
++Rule Iran 2026 2027 - Mar 22 0:00 1:00 D
++Rule Iran 2026 2027 - Sep 22 0:00 0 S
++Rule Iran 2028 2029 - Mar 21 0:00 1:00 D
++Rule Iran 2028 2029 - Sep 21 0:00 0 S
++Rule Iran 2030 2031 - Mar 22 0:00 1:00 D
++Rule Iran 2030 2031 - Sep 22 0:00 0 S
++Rule Iran 2032 2033 - Mar 21 0:00 1:00 D
++Rule Iran 2032 2033 - Sep 21 0:00 0 S
++Rule Iran 2034 2035 - Mar 22 0:00 1:00 D
++Rule Iran 2034 2035 - Sep 22 0:00 0 S
++Rule Iran 2036 2037 - Mar 21 0:00 1:00 D
++Rule Iran 2036 2037 - Sep 21 0:00 0 S
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Asia/Tehran 3:25:44 - LMT 1916
+ 3:25:44 - TMT 1946 # Tehran Mean Time
+- 3:30 - IRT 1977 Nov
++ 3:30 - IRST 1977 Nov
+ 4:00 Iran IR%sT 1979
+ 3:30 Iran IR%sT
+
+@@ -748,7 +757,7 @@
+ # bill have until July 24 to pass.
+ #
+ # (2002-07-25):
+-# Thanks go to Yitschak Goldberg from E&M for bringing this (Hebrew) article
++# Thanks go to Yitschak Goldberg from E&M for bringing this (Hebrew) article
+ # to my attention:
+ #
+ # http://www.ynet.co.il/articles/0,7340,L-2019315,00.html
+@@ -878,7 +887,7 @@
+ # - Kazakhstan did not observe DST in 1991.
+ # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+ # - Oral switched from +5:00 to +4:00 in spring 1989.
+-#
++#
+ #
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ #
+@@ -1154,9 +1163,26 @@
+ # and Sunday of April" phrase, if taken literally, means that the
+ # transition takes place at 00:00 on the first Sunday on or after 04-02.
+
++# From Paul Eggert (2003-02-09):
++# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05
++# that 2002 DST ended that day at midnight. Go with McDow for now.
++
++# From Steffen Thorsen (2003-03-14):
++# According to http://www.dawn.com/2003/03/07/top15.htm
++# there will be no DST in Pakistan this year:
++#
++# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
++# Rashid Ahmed on Thursday said the cabinet had reversed a previous
++# decision to advance clocks by one hour in summer and put them back by
++# one hour in winter with the aim of saving light hours and energy.
++#
++# The minister told a news conference that the experiment had rather
++# shown 8 per cent higher consumption of electricity.
++
++
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+-Rule Pakistan 2002 max - Apr Sun>=2 0:00 1:00 S
+-Rule Pakistan 2002 max - Oct 15 0:00 0 -
++Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
++Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Asia/Karachi 4:28:12 - LMT 1907
+ 5:30 - IST 1942 Sep
+--- glibc-2.3.2/timezone/australasia 2002-10-15 12:59:28.000000000 -0400
++++ glibc-2.3.2/timezone/australasia 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)australasia 7.67
++# @(#)australasia 7.68
+ # This file also includes Pacific islands.
+
+ # Notes are at the end of this file
+@@ -297,6 +297,17 @@
+ ###############################################################################
+
+ # New Zealand
++#
++# From Paul Eggert (2002-10-23):
++# The Department of Internal Affairs (DIA) maintains a brief history;
++# see tz-link.htm for the full reference.
++#
++# Shanks gives 1868 for the introduction of standard time; go with the
++# DIA's more-precise 1868-11-02. The DIA says that clocks were
++# advanced by half an hour in 1941; go with Shanks's more-precise
++# 1940-09-29 02:00. The DIA says that starting in 1933 DST began the
++# first Sunday in September; go with Shanks's last Sunday starting in
++# 1934.
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ # Shanks gives 1927 Nov 6 - 1928 Mar 4, 1928 Oct 14 - 1929 Mar 17,
+@@ -311,17 +322,17 @@
+ # didn't change until 1945 Apr 30; go with Shanks.
+ Rule NZ 1934 1940 - Apr lastSun 2:00 0 S
+ Rule NZ 1934 1939 - Sep lastSun 2:00 0:30 HD
+-Rule NZ 1974 only - Nov 3 2:00s 1:00 D
++Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
++Rule NZ 1975 only - Feb lastSun 2:00s 0 S
+ Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
+-Rule NZ 1989 only - Oct 8 2:00s 1:00 D
+-Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
+-Rule NZ 1975 only - Feb 23 2:00s 0 S
+ Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
++Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
++Rule NZ 1990 max - Oct Sun>=1 2:00s 1:00 D
+ Rule NZ 1990 max - Mar Sun>=15 2:00s 0 S
+ Rule Chatham 1990 max - Oct Sun>=1 2:45s 1:00 D
+ Rule Chatham 1991 max - Mar Sun>=15 2:45s 0 S
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone Pacific/Auckland 11:39:04 - LMT 1868
++Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
+ 11:30 NZ NZ%sT 1940 Sep 29 2:00
+ 12:00 NZ NZ%sT
+ Zone Pacific/Chatham 12:45 Chatham CHA%sT
+@@ -399,8 +410,8 @@
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Tonga 1999 only - Oct 7 2:00s 1:00 S
+ Rule Tonga 2000 only - Mar 19 2:00s 0 -
+-Rule Tonga 2000 max - Nov Sun>=1 2:00 1:00 S
+-Rule Tonga 2001 max - Jan lastSun 2:00 0 -
++Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S
++Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Pacific/Tongatapu 12:19:20 - LMT 1901
+ 12:20 - TOT 1941 # Tonga Time
+@@ -739,21 +750,21 @@
+ # The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
+
+ # From Rives McDow (2002-04-09):
+-# The most interesting region I have found consists of three towns on the
+-# southern coast of Australia, population 10 at last report, along with
+-# 50,000 sheep, about 100 kilometers long and 40 kilometers into the
+-# continent. The primary town is Madura, with the other towns being
+-# Mundrabilla and Eucla. According to the sheriff of Madura, the
+-# residents got tired of having to change the time so often, as they are
+-# located in a strip overlapping the border of South Australia and Western
+-# Australia. South Australia observes daylight saving time; Western
+-# Australia does not. The two states are one and a half hours apart. The
+-# residents decided to forget about this nonsense of changing the clock so
+-# much and set the local time 20 hours and 45 minutes from the
+-# international date line, or right in the middle of the time of South
+-# Australia and Western Australia. As it only affects about 10 people and
+-# tourists staying at the Madura Motel, it has never really made as big an
+-# impact as Broken Hill. However, as tourist visiting there or anyone
++# The most interesting region I have found consists of three towns on the
++# southern coast of Australia, population 10 at last report, along with
++# 50,000 sheep, about 100 kilometers long and 40 kilometers into the
++# continent. The primary town is Madura, with the other towns being
++# Mundrabilla and Eucla. According to the sheriff of Madura, the
++# residents got tired of having to change the time so often, as they are
++# located in a strip overlapping the border of South Australia and Western
++# Australia. South Australia observes daylight saving time; Western
++# Australia does not. The two states are one and a half hours apart. The
++# residents decided to forget about this nonsense of changing the clock so
++# much and set the local time 20 hours and 45 minutes from the
++# international date line, or right in the middle of the time of South
++# Australia and Western Australia. As it only affects about 10 people and
++# tourists staying at the Madura Motel, it has never really made as big an
++# impact as Broken Hill. However, as tourist visiting there or anyone
+ # calling the local sheriff will attest, they do keep time in this way.
+ #
+ # From Paul Eggert (2002-04-09):
+@@ -1263,6 +1274,8 @@
+ # of January the standard time in the Kingdom shall be moved backward by one
+ # hour to 1:00am.
+
++# From Pulu 'Anau (2002-11-05):
++# The law was for 3 years, supposedly to get renewed. It wasn't.
+
+ ###############################################################################
+
+--- glibc-2.3.2/timezone/europe 2002-04-05 22:40:00.000000000 -0500
++++ glibc-2.3.2/timezone/europe 2003-04-12 11:39:50.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)europe 7.82
++# @(#)europe 7.83
+
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+@@ -33,20 +33,20 @@
+ # I invented the abbreviations marked `*' in the following table;
+ # the rest are from earlier versions of this file, or from other sources.
+ # Corrections are welcome!
+-# std dst
+-# LMT Local Mean Time
+-# -4:00 AST Atlantic
+-# -3:00 WGT WGST Western Greenland*
+-# -1:00 EGT EGST Eastern Greenland*
+-# 0:00 GMT BST Greenwich, British Summer
+-# 0:00 GMT IST Greenwich, Irish Summer
+-# 0:00 WET WEST Western Europe
+-# 0:19:32 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
+-# 0:20 NET NEST Netherlands (1937-1940)*
+-# 1:00 CET CEST Central Europe
+-# 1:00:14 SET Swedish (1879-1899)*
+-# 2:00 EET EEST Eastern Europe
+-# 3:00 MSK MSD Moscow
++# std dst 2dst
++# LMT Local Mean Time
++# -4:00 AST ADT Atlantic
++# -3:00 WGT WGST Western Greenland*
++# -1:00 EGT EGST Eastern Greenland*
++# 0:00 GMT BST BDST Greenwich, British Summer
++# 0:00 GMT IST Greenwich, Irish Summer
++# 0:00 WET WEST WEMT Western Europe
++# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
++# 0:20 NET NEST Netherlands (1937-1940)*
++# 1:00 CET CEST CEMT Central Europe
++# 1:00:14 SET Swedish (1879-1899)*
++# 2:00 EET EEST Eastern Europe
++# 3:00 MSK MSD Moscow
+ #
+ # A reliable and entertaining source about time zones, especially in Britain,
+ # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+@@ -558,20 +558,30 @@
+ 1:00 EU CE%sT
+
+ # Austria
++
++# From Paul Eggert (2003-02-28): Shanks gives 1918-06-16 and
++# 1945-11-18, but the Austrian Federal Office of Metrology and
++# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
++# date of 1945-04-12 with no time. For the 1980-04-06 transition
++# Shanks gives 02:00, the BEV 00:00. Go with the BEV, and guess 02:00
++# for 1945-04-12.
++
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Austria 1920 only - Apr 5 2:00s 1:00 S
+ Rule Austria 1920 only - Sep 13 2:00s 0 -
+-Rule Austria 1945 only - Apr 2 2:00s 1:00 S
+-Rule Austria 1945 only - Nov 18 2:00s 0 -
+ Rule Austria 1946 only - Apr 14 2:00s 1:00 S
+ Rule Austria 1946 1948 - Oct Sun>=1 2:00s 0 -
+ Rule Austria 1947 only - Apr 6 2:00s 1:00 S
+ Rule Austria 1948 only - Apr 18 2:00s 1:00 S
++Rule Austria 1980 only - Apr 6 0:00 1:00 S
++Rule Austria 1980 only - Sep 28 0:00 0 -
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Europe/Vienna 1:05:20 - LMT 1893 Apr
+- 1:00 C-Eur CE%sT 1918 Jun 16 3:00
+- 1:00 Austria CE%sT 1940 Apr 1 2:00
+- 1:00 C-Eur CE%sT 1945 Apr 2 2:00
++ 1:00 C-Eur CE%sT 1920
++ 1:00 Austria CE%sT 1940 Apr 1 2:00s
++ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
++ 1:00 1:00 CEST 1945 Apr 12 2:00s
++ 1:00 - CET 1946
+ 1:00 Austria CE%sT 1981
+ 1:00 EU CE%sT
+
+@@ -654,7 +664,7 @@
+ 1:00 EU CE%sT
+
+ # Bosnia and Herzegovina
+-# see Yugoslavia
++# see Serbia and Montenegro
+
+ # Bulgaria
+ #
+@@ -681,7 +691,7 @@
+ 2:00 EU EE%sT
+
+ # Croatia
+-# see Yugosloavia
++# see Serbia and Montenegro
+
+ # Czech Republic
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+@@ -750,7 +760,7 @@
+ # introduced.
+
+ # From Rives McDow (2001-11-01):
+-#
++#
+ # I correspond regularly with the Dansk Polarcenter, and wrote them at
+ # the time to clarify the situation in Thule. Unfortunately, I have
+ # not heard back from them regarding my recent letter. [But I have
+@@ -991,25 +1001,29 @@
+ # From Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> (1998-09-29):
+ # The German time zone web site by the Physikalisch-Technische
+ # Bundesanstalt contains DST information back to 1916.
+-#
+-# <a href="http://www.ptb.de/english/org/4/43/432/lega.htm">
+-# Realisation of Legal Time in Germany
+-# </a>
++# [See tz-link.htm for the URL.]
++
++# From Joerg Schilling (2002-10-23):
++# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by <a
++# href="http://www.dhm.de/lemo/html/biografien/BersarinNikolai/">
++# General [Nikolai] Bersarin</a>.
++
++# From Paul Eggert (2003-03-08):
++# <a href="http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf">
++# says that Bersarin issued an order to use Moscow time on May 20.
++# However, Moscow did not observe daylight saving in 1945, so
++# this was equivalent to CEMT (GMT+3), not GMT+4.
++
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Germany 1945 only - Apr 2 2:00s 1:00 S
+-# Shanks says 05-24 2:00 to 09-24 3:00 for DDST; go with the PTB, who quotes
+-# the Archiv fuer publizist. Arbeit (Munzinger-Archiv) 652 (Zeitsystem)
+-# (1961-11-25), which gives dates only. Guess 3:00 transition times.
+-Rule Germany 1945 only - May 31 3:00 2:00 M # Midsummer
+-Rule Germany 1945 only - Sep 23 3:00 1:00 S
++Rule Germany 1945 only - May 24 2:00 2:00 M # Midsummer
++Rule Germany 1945 only - Sep 24 3:00 1:00 S
+ Rule Germany 1945 only - Nov 18 2:00s 0 -
+ Rule Germany 1946 only - Apr 14 2:00s 1:00 S
+ Rule Germany 1946 only - Oct 7 2:00s 0 -
+ Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
+ Rule Germany 1947 only - Apr 6 2:00s 1:00 S
+-# The PTB gives 3:00 CET and 3:00 CEST for the midsummer transition times;
+-# go with Shanks.
+ Rule Germany 1947 only - May 11 2:00s 2:00 M
+ Rule Germany 1947 only - Jun 29 3:00 1:00 S
+ Rule Germany 1948 only - Apr 18 2:00s 1:00 S
+@@ -1341,6 +1355,15 @@
+ # Fact File, Lithuanian State Department of Tourism
+ # </a> (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
+
++# From a user via Klaus Marten (2003-02-07):
++# As a candidate for membership of the European Union, Lithuania will
++# observe Summer Time in 2003, changing its clocks at the times laid
++# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
++# neighbour Latvia). The text of the Lithuanian government Order of
++# 7.XI.02 to this effect can be found at
++# http://www.lrvk.lt/nut/11/n1749.htm
++
++
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ Zone Europe/Vilnius 1:41:16 - LMT 1880
+ 1:24:00 - WMT 1917 # Warsaw Mean Time
+@@ -1355,7 +1378,8 @@
+ 2:00 C-Eur EE%sT 1998
+ 2:00 - EET 1998 Mar 29 1:00u
+ 1:00 EU CE%sT 1999 Oct 31 1:00u
+- 2:00 - EET
++ 2:00 - EET 2003 Jan 1
++ 2:00 EU EE%sT
+
+ # Luxembourg
+ # Whitman disagrees with most of these dates in minor ways; go with Shanks.
+@@ -1393,7 +1417,7 @@
+ 1:00 EU CE%sT
+
+ # Macedonia
+-# see Yugoslavia
++# see Serbia and Montenegro
+
+ # Malta
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+@@ -1979,11 +2003,27 @@
+ 11:00 Russia ANA%sT 1992 Jan 19 2:00s
+ 12:00 Russia ANA%sT
+
++# Serbia and Montenegro
++# Zone NAME GMTOFF RULES FORMAT [UNTIL]
++Zone Europe/Belgrade 1:22:00 - LMT 1884
++ 1:00 - CET 1941 Apr 18 23:00
++ 1:00 C-Eur CE%sT 1945 May 8 2:00s
++ 1:00 1:00 CEST 1945 Sep 16 2:00s
++# Metod Kozelj <metod.kozelj@rzs-hm.si> reports that the legal date of
++# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
++# Shanks doesn't give as much detail, so go with Kozelj.
++ 1:00 - CET 1982 Nov 27
++ 1:00 EU CE%sT
++Link Europe/Belgrade Europe/Ljubljana # Slovenia
++Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
++Link Europe/Belgrade Europe/Skopje # Macedonia
++Link Europe/Belgrade Europe/Zagreb # Croatia
++
+ # Slovakia
+ Link Europe/Prague Europe/Bratislava
+
+ # Slovenia
+-# see Yugoslavia
++# see Serbia and Montenegro
+
+ # Spain
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+@@ -2191,6 +2231,15 @@
+ Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
+
+ # Ukraine
++#
++# From Igor Karpov, who works for the Ukranian Ministry of Justice,
++# via Garrett Wollman (2003-01-27):
++# BTW, I've found the official document on this matter. It's goverment
++# regulations number 509, May 13, 1996. In my poor translation it says:
++# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
++# of March at 3am the time is changing to 4am and each last Sunday of
++# October the time at 4am is changing to 3am"
++
+ # Zone NAME GMTOFF RULES FORMAT [UNTIL]
+ # Most of Ukraine since 1970 has been like Kiev.
+ Zone Europe/Kiev 2:02:04 - LMT 1880
+@@ -2249,22 +2298,6 @@
+ 3:00 - MSK 1997 Mar lastSun 1:00u
+ 2:00 EU EE%sT
+
+-# Yugoslavia
+-# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+-Zone Europe/Belgrade 1:22:00 - LMT 1884
+- 1:00 - CET 1941 Apr 18 23:00
+- 1:00 C-Eur CE%sT 1945 May 8 2:00s
+- 1:00 1:00 CEST 1945 Sep 16 2:00s
+-# Metod Kozelj <metod.kozelj@rzs-hm.si> reports that the legal date of
+-# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
+-# Shanks doesn't give as much detail, so go with Kozelj.
+- 1:00 - CET 1982 Nov 27
+- 1:00 EU CE%sT
+-Link Europe/Belgrade Europe/Ljubljana # Slovenia
+-Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
+-Link Europe/Belgrade Europe/Skopje # Macedonia
+-Link Europe/Belgrade Europe/Zagreb # Croatia
+-
+ ###############################################################################
+
+ # One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
+--- glibc-2.3.2/timezone/iso3166.tab 2002-10-15 13:12:42.000000000 -0400
++++ glibc-2.3.2/timezone/iso3166.tab 2003-04-12 11:39:50.000000000 -0400
+@@ -2,11 +2,11 @@
+ #
+ # @(#)iso3166.tab 1.9
+ #
+-# From Paul Eggert <eggert@twinsun.com> (2002-05-28):
++# From Paul Eggert <eggert@twinsun.com> (2003-02-04):
+ #
+ # This file contains a table with the following columns:
+ # 1. ISO 3166-1 alpha-2 country code, current as of
+-# ISO 3166-1 Newsletter No. V-5 (2002-05-20). See:
++# ISO 3166-1 Newsletter No. V-7 (2003-01-14). See:
+ # <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html">
+ # ISO 3166 Maintenance agency (ISO 3166/MA)
+ # </a>.
+@@ -256,7 +256,7 @@
+ WS Samoa (Western)
+ YE Yemen
+ YT Mayotte
+-YU Yugoslavia
++YU Serbia and Montenegro
+ ZA South Africa
+ ZM Zambia
+ ZW Zimbabwe
+--- glibc-2.3.2/timezone/northamerica 2002-04-05 22:40:00.000000000 -0500
++++ glibc-2.3.2/timezone/northamerica 2003-04-12 11:39:51.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)northamerica 7.61
++# @(#)northamerica 7.62
+ # also includes Central America and the Caribbean
+
+ # This data is by no means authoritative; if you think you know better,
+@@ -88,6 +88,23 @@
+ # of surrender, all of whom interrupting the bells of Big Ben in
+ # London which were to precede Mr. Attlee's speech.
+
++# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout. From
++# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
++#
++# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
++# Any announcement from Asia would reach St. John's New York newsroom on a
++# wire service teletype machine, which had prescribed signals for major news.
++# Associated Press, for example, would ring five bells before spewing out
++# typed copy of an important story, and 10 bells for news "of transcendental
++# importance."
++#
++# On Aug. 14, stalling while talking steadily into the NBC networks' open
++# microphone, St. John heard five bells and waited only to hear a sixth bell,
++# before announcing confidently: "Ladies and gentlemen, World War II is over.
++# The Japanese have agreed to our surrender terms."
++#
++# He had scored a 20-second scoop on other broadcasters.
++
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
+ Rule US 1918 1919 - Oct lastSun 2:00 0 S
+@@ -189,10 +206,11 @@
+ # US eastern time, represented by New York
+
+ # Connecticut, Delaware, District of Columbia, most of Florida,
+-# Georgia, far southeastern Indiana, eastern Kentucky, Maine,
+-# Maryland, Massachusetts, New Hampshire, New Jersey, New York, North
+-# Carolina, Ohio, Pennsylvania, Rhode Island, South Carolina, eastern
+-# Tennessee, Vermont, Virginia, West Virginia
++# Georgia, southeast Indiana (Clark, Dearborn, Floyd, Harrison, and
++# Ohio counties), eastern Kentucky, Maine, Maryland, Massachusetts,
++# New Hampshire, New Jersey, New York, North Carolina, Ohio,
++# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
++# Vermont, Virginia, West Virginia
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+ Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
+@@ -211,10 +229,11 @@
+ # US central time, represented by Chicago
+
+ # Alabama, Arkansas, Florida panhandle, Illinois, western Indiana
+-# corners, Iowa, most of Kansas, western Kentucky, Louisiana,
+-# Minnesota, Mississippi, Missouri, eastern Nebraska, eastern North
+-# Dakota, Oklahoma, eastern South Dakota, western Tennessee, most of
+-# Texas, Wisconsin
++# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
++# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
++# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
++# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
++# western Tennessee, most of Texas, Wisconsin
+
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+ Rule Chicago 1920 only - Jun 13 2:00 1:00 D
+@@ -357,12 +376,32 @@
+ # Now we turn to US areas that have diverged from the consensus since 1970.
+
+ # Arizona mostly uses MST.
++
++# From Paul Eggert (2002-10-20):
++#
++# The information in the rest of this paragraph is derived from the
++# <a href="http://www.dlapr.lib.az.us/links/daylight.htm">
++# Daylight Saving Time web page (2002-01-23)</a> maintained by the
++# Arizona State Library, Archives and Public Records.
++# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
++# time, but by federal law railroads, airlines, bus lines, military
++# personnel, and some engaged in interstate commerce continued to
++# observe war (i.e., daylight saving) time. The 1944-03-17 Phoenix
++# Gazette says that was the date the law changed, and that 04-01 was
++# the date the state's clocks would change. In 1945 the State of
++# Arizona used standard time all year, again with exceptions only as
++# mandated by federal law. Arizona observed DST in 1967, but Arizona
++# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
++#
++# Shanks says the 1944 experiment came to an end on 1944-03-17.
++# Go with the Arizona State Library instead.
++
+ Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 12:00
+ -7:00 US M%sT 1944 Jan 1 00:01
+- -7:00 - MST 1944 Mar 17 00:01
++ -7:00 - MST 1944 Apr 1 00:01
+ -7:00 US M%sT 1944 Oct 1 00:01
+ -7:00 - MST 1967
+- -7:00 US M%sT 1968
++ -7:00 US M%sT 1968 Mar 21
+ -7:00 - MST
+ # From Arthur David Olson (1988-02-13):
+ # A writer from the Inter Tribal Council of Arizona, Inc.,
+@@ -522,7 +561,7 @@
+ # <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22">
+ # Federal Register 65, 160 (2000-08-17), page 50154-50158.
+ # </a>
+-#
++#
+ Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:00
+ -6:00 US C%sT 1946
+ -6:00 - CST 1968
+--- glibc-2.3.2/timezone/southamerica 2002-10-15 13:03:12.000000000 -0400
++++ glibc-2.3.2/timezone/southamerica 2003-04-12 11:39:51.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)southamerica 7.45
++# @(#)southamerica 7.46
+
+ # This data is by no means authoritative; if you think you know better,
+ # go ahead and edit the file (and please send any changes to
+@@ -584,6 +584,10 @@
+ # Go with this article in preference to Shanks's 1969 date for modern DST.
+ # Assume this rule has been used since DST was introduced in the islands.
+
++# From Paul Eggert (2002-10-24):
++# <http://www.shoa.cl/shoa/faqhoraoficial.htm> gives many details that
++# disagree with the following table, but we haven't had time to compare them.
++
+ # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+ Rule Chile 1918 only - Sep 1 0:00 1:00 S
+ Rule Chile 1919 only - Jul 2 0:00 0 -
+--- glibc-2.3.2/timezone/zic.c 2002-04-05 22:38:45.000000000 -0500
++++ glibc-2.3.2/timezone/zic.c 2003-08-21 08:37:18.000000000 -0400
+@@ -2152,12 +2152,13 @@
+ }
+ if (dayoff < 0 && !TYPE_SIGNED(time_t))
+ return min_time;
++ if (dayoff < min_time / SECSPERDAY)
++ return min_time;
++ if (dayoff > max_time / SECSPERDAY)
++ return max_time;
+ t = (time_t) dayoff * SECSPERDAY;
+- /*
+- ** Cheap overflow check.
+- */
+- if (t / SECSPERDAY != dayoff)
+- return (dayoff > 0) ? max_time : min_time;
++ if (t > 0 && max_time - t < rp->r_tod)
++ return max_time;
+ return tadd(t, rp->r_tod);
+ }
+
+--- glibc-2.3.2/timezone/zone.tab 2002-10-15 13:00:59.000000000 -0400
++++ glibc-2.3.2/timezone/zone.tab 2003-04-12 11:39:51.000000000 -0400
+@@ -1,4 +1,4 @@
+-# @(#)zone.tab 1.27
++# @(#)zone.tab 1.28
+ #
+ # TZ zone descriptions
+ #
+@@ -33,6 +33,7 @@
+ AO -0848+01314 Africa/Luanda
+ AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
+ AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
++AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
+ AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
+ AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
+ AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
+--- glibc-2.3.2/tls.make.c 2002-11-14 22:36:55.000000000 -0500
++++ glibc-2.3.2/tls.make.c 2003-04-12 11:39:42.000000000 -0400
+@@ -2,6 +2,12 @@
+
+ #include <tls.h>
+
++#if USE_TLS
++@@@ use-tls = yes @@@
++#else
++@@@ use-tls = no @@@
++#endif
++
+ #if USE___THREAD
+ @@@ use-thread = yes @@@
+ #else
+--- glibc-2.3.2/wcsmbs/Makefile 2002-08-29 00:02:52.000000000 -0400
++++ glibc-2.3.2/wcsmbs/Makefile 2003-08-21 08:37:18.000000000 -0400
+@@ -1,4 +1,4 @@
+-# Copyright (C) 1995-2000, 2002 Free Software Foundation, Inc.
++# Copyright (C) 1995-2000, 2002, 2003 Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -40,7 +40,7 @@
+ wcsmbsload mbsrtowcs_l
+
+ tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
+- tst-wcrtomb
++ tst-wcrtomb tst-wcpncpy
+
+ include ../Rules
+
+--- glibc-2.3.2/wcsmbs/tst-wcpncpy.c 1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.3.2/wcsmbs/tst-wcpncpy.c 2003-07-22 15:23:43.000000000 -0400
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2003 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2003.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <wchar.h>
++
++
++int
++main (void)
++{
++ const wchar_t src[] = L"0";
++ wchar_t dest[10];
++ wmemset (dest, L'\0', 10);
++ wcpncpy (dest, src, 2);
++ return wcscmp (dest, src) != 0;
++}
+--- glibc-2.3.2/wcsmbs/wchar.h 2002-08-28 03:56:15.000000000 -0400
++++ glibc-2.3.2/wcsmbs/wchar.h 2003-08-21 08:37:19.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1995-99,2000,01,02 Free Software Foundation, Inc.
++/* Copyright (C) 1995-2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+@@ -59,8 +59,13 @@
+ # define _WINT_T
+ typedef unsigned int wint_t;
+ #else
+-# ifdef __USE_GNU
+-__USING_NAMESPACE_STD(wint_t)
++/* Work around problems with the <stddef.h> file which doesn't put
++ wint_t in the std namespace. */
++# if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES \
++ && defined __WINT_TYPE__
++__BEGIN_NAMESPACE_STD
++typedef __WINT_TYPE__ wint_t;
++__END_NAMESPACE_STD
+ # endif
+ #endif
+
+@@ -577,27 +582,39 @@
+ extern int fwide (__FILE *__fp, int __mode) __THROW;
+
+
+-/* Write formatted output to STREAM. */
++/* Write formatted output to STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int fwprintf (__FILE *__restrict __stream,
+ __const wchar_t *__restrict __format, ...)
+- __THROW /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
+-/* Write formatted output to stdout. */
++ /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
++/* Write formatted output to stdout.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int wprintf (__const wchar_t *__restrict __format, ...)
+- __THROW /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
++ /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
+ /* Write formatted output of at most N characters to S. */
+ extern int swprintf (wchar_t *__restrict __s, size_t __n,
+ __const wchar_t *__restrict __format, ...)
+ __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
+
+-/* Write formatted output to S from argument list ARG. */
++/* Write formatted output to S from argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vfwprintf (__FILE *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg)
+- __THROW /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
+-/* Write formatted output to stdout from argument list ARG. */
++ /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
++/* Write formatted output to stdout from argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vwprintf (__const wchar_t *__restrict __format,
+ __gnuc_va_list __arg)
+- __THROW /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
++ /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
+ /* Write formatted output of at most N character to S from argument
+ list ARG. */
+ extern int vswprintf (wchar_t *__restrict __s, size_t __n,
+@@ -606,13 +623,19 @@
+ __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
+
+
+-/* Read formatted input from STREAM. */
++/* Read formatted input from STREAM.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int fwscanf (__FILE *__restrict __stream,
+ __const wchar_t *__restrict __format, ...)
+- __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
+-/* Read formatted input from stdin. */
++ /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
++/* Read formatted input from stdin.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int wscanf (__const wchar_t *__restrict __format, ...)
+- __THROW /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
++ /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
+ /* Read formatted input from S. */
+ extern int swscanf (__const wchar_t *__restrict __s,
+ __const wchar_t *__restrict __format, ...)
+@@ -624,15 +647,21 @@
+ #ifdef __USE_ISOC99
+ __BEGIN_NAMESPACE_C99
+
+-/* Read formatted input from S into argument list ARG. */
++/* Read formatted input from S into argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vfwscanf (__FILE *__restrict __s,
+ __const wchar_t *__restrict __format,
+ __gnuc_va_list __arg)
+- __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
+-/* Read formatted input from stdin into argument list ARG. */
++ /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
++/* Read formatted input from stdin into argument list ARG.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
+ extern int vwscanf (__const wchar_t *__restrict __format,
+ __gnuc_va_list __arg)
+- __THROW /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
++ /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
+ /* Read formatted input from S into argument list ARG. */
+ extern int vswscanf (__const wchar_t *__restrict __s,
+ __const wchar_t *__restrict __format,
+@@ -644,62 +673,113 @@
+
+
+ __BEGIN_NAMESPACE_C99
+-/* Read a character from STREAM. */
+-extern wint_t fgetwc (__FILE *__stream) __THROW;
+-extern wint_t getwc (__FILE *__stream) __THROW;
++/* Read a character from STREAM.
++
++ These functions are possible cancellation points and therefore not
++ marked with __THROW. */
++extern wint_t fgetwc (__FILE *__stream);
++extern wint_t getwc (__FILE *__stream);
++
++/* Read a character from stdin.
++
++ This function is a possible cancellation point and therefore not
++ marked with __THROW. */
++extern wint_t getwchar (void);
++
+
+-/* Read a character from stdin. */
+-extern wint_t getwchar (void) __THROW;
++/* Write a character to STREAM.
+
++ These functions are possible cancellation points and therefore not
++ marked with __THROW. */
++extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
++extern wint_t putwc (wchar_t __wc, __FILE *__stream);
+
+-/* Write a character to STREAM. */
+-extern wint_t fputwc (wchar_t __wc, __FILE *__stream) __THROW;
+-extern wint_t putwc (wchar_t __wc, __FILE *__stream) __THROW;
++/* Write a character to stdout.
+
+-/* Write a character to stdout. */
+-extern wint_t putwchar (wchar_t __wc) __THROW;
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern wint_t putwchar (wchar_t __wc);
+
+
+ /* Get a newline-terminated wide character string of finite length
+- from STREAM. */
++ from STREAM.
++
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
+- __FILE *__restrict __stream) __THROW;
++ __FILE *__restrict __stream);
++
++/* Write a string to STREAM.
+
+-/* Write a string to STREAM. */
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
+ extern int fputws (__const wchar_t *__restrict __ws,
+- __FILE *__restrict __stream) __THROW;
++ __FILE *__restrict __stream);
++
+
++/* Push a character back onto the input buffer of STREAM.
+
+-/* Push a character back onto the input buffer of STREAM. */
+-extern wint_t ungetwc (wint_t __wc, __FILE *__stream) __THROW;
++ This function is a possible cancellation points and therefore not
++ marked with __THROW. */
++extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
+ __END_NAMESPACE_C99
+
+
+ #ifdef __USE_GNU
+ /* These are defined to be equivalent to the `char' functions defined
+- in POSIX.1:1996. */
+-extern wint_t getwc_unlocked (__FILE *__stream) __THROW;
+-extern wint_t getwchar_unlocked (void) __THROW;
++ in POSIX.1:1996.
+
+-/* This is the wide character version of a GNU extension. */
+-extern wint_t fgetwc_unlocked (__FILE *__stream) __THROW;
+-
+-/* Faster version when locking is not necessary. */
+-extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream) __THROW;
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
++extern wint_t getwc_unlocked (__FILE *__stream);
++extern wint_t getwchar_unlocked (void);
++
++/* This is the wide character version of a GNU extension.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern wint_t fgetwc_unlocked (__FILE *__stream);
++
++/* Faster version when locking is not necessary.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
++extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream);
+
+ /* These are defined to be equivalent to the `char' functions defined
+- in POSIX.1:1996. */
+-extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream) __THROW;
+-extern wint_t putwchar_unlocked (wchar_t __wc) __THROW;
+-
++ in POSIX.1:1996.
+
+-/* This function does the same as `fgetws' but does not lock the stream. */
++ These functions are not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation they are cancellation points and
++ therefore not marked with __THROW. */
++extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream);
++extern wint_t putwchar_unlocked (wchar_t __wc);
++
++
++/* This function does the same as `fgetws' but does not lock the stream.
++
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n,
+- __FILE *__restrict __stream) __THROW;
++ __FILE *__restrict __stream);
++
++/* This function does the same as `fputws' but does not lock the stream.
+
+-/* This function does the same as `fputws' but does not lock the stream. */
++ This function is not part of POSIX and therefore no official
++ cancellation point. But due to similarity with an POSIX interface
++ or due to the implementation it is a cancellation point and
++ therefore not marked with __THROW. */
+ extern int fputws_unlocked (__const wchar_t *__restrict __ws,
+- __FILE *__restrict __stream) __THROW;
++ __FILE *__restrict __stream);
+ #endif
+
+
+--- glibc-2.3.2/wcsmbs/wcpncpy.c 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/wcsmbs/wcpncpy.c 2003-08-21 08:37:19.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
++/* Copyright (C) 1996, 1997, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+@@ -31,8 +31,6 @@
+ wint_t c;
+ wchar_t *const s = dest;
+
+- --dest;
+-
+ if (n >= 4)
+ {
+ size_t n4 = n >> 2;
+@@ -40,27 +38,25 @@
+ for (;;)
+ {
+ c = *src++;
+- *++dest = c;
++ *dest++ = c;
+ if (c == L'\0')
+ break;
+ c = *src++;
+- *++dest = c;
++ *dest++ = c;
+ if (c == L'\0')
+ break;
+ c = *src++;
+- *++dest = c;
++ *dest++ = c;
+ if (c == L'\0')
+ break;
+ c = *src++;
+- *++dest = c;
++ *dest++ = c;
+ if (c == L'\0')
+ break;
+ if (--n4 == 0)
+ goto last_chars;
+ }
+- n = n - (dest - s) - 1;
+- if (n == 0)
+- return dest;
++ n -= dest - s;
+ goto zero_fill;
+ }
+
+@@ -69,21 +65,22 @@
+ if (n == 0)
+ return dest;
+
+- do
++ for (;;)
+ {
+ c = *src++;
+- *++dest = c;
+- if (--n == 0)
++ --n;
++ *dest++ = c;
++ if (c == L'\0')
++ break;
++ if (n == 0)
+ return dest;
+ }
+- while (c != L'\0');
+
+ zero_fill:
+- do
+- *++dest = L'\0';
+- while (--n > 0);
++ while (n-- > 0)
++ dest[n] = L'\0';
+
+- return dest;
++ return dest - 1;
+ }
+
+ weak_alias (__wcpncpy, wcpncpy)
+--- glibc-2.3.2/wcsmbs/wcsmbs-tst1.c 2001-08-06 22:43:05.000000000 -0400
++++ glibc-2.3.2/wcsmbs/wcsmbs-tst1.c 2003-08-21 08:37:19.000000000 -0400
+@@ -32,10 +32,10 @@
+ buf[idx] = 0;
+ printf ("orig string %s\n", str);
+ printf ("string by wctomb %s\n", buf);
+- printf ("string by %%C %C", tmp[0]);
++ printf ("string by %%C %C", (wint_t) tmp[0]);
+ if (tmp[0] != L'H')
+ result = 1;
+- printf ("%C\n", tmp[1]);
++ printf ("%C\n", (wint_t) tmp[1]);
+ if (tmp[1] != L'e')
+ result = 1;
+ printf ("string by %%S %S\n", tmp);
+@@ -43,7 +43,7 @@
+ result = 1;
+ puts ("---- test 2 ------");
+ printf ("wchar string %S\n", tmp1);
+- printf ("wchar %C\n", tmp1[0]);
++ printf ("wchar %C\n", (wint_t) tmp1[0]);
+ test = wcstombs (buf, tmp1, (wcslen (tmp1) + 1) * sizeof (wchar_t));
+ printf ("size of string by wcstombs %d\n", test);
+ if (test != wcslen (tmp1))
+--- glibc-2.3.2/wcsmbs/wcsnrtombs.c 2002-09-02 15:45:55.000000000 -0400
++++ glibc-2.3.2/wcsmbs/wcsnrtombs.c 2003-08-21 08:37:19.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
+
+@@ -72,7 +72,7 @@
+ if (dst == NULL)
+ {
+ unsigned char buf[256]; /* Just an arbitrary value. */
+- const wchar_t *inbuf = *src;
++ const unsigned char *inbuf = (const unsigned char *) *src;
+ size_t dummy;
+
+ result = 0;
+@@ -83,7 +83,7 @@
+ data.__outbuf = buf;
+
+ status = DL_CALL_FCT (tomb->__fct,
+- (tomb, &data, (const unsigned char **) &inbuf,
++ (tomb, &data, &inbuf,
+ (const unsigned char *) srcend, NULL,
+ &dummy, 0, 1));
+
+--- glibc-2.3.2/wcsmbs/wcsrtombs.c 2002-09-02 15:45:55.000000000 -0400
++++ glibc-2.3.2/wcsmbs/wcsrtombs.c 2003-08-21 08:37:19.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
+
+@@ -66,7 +66,7 @@
+ mbstate_t temp_state;
+ unsigned char buf[256]; /* Just an arbitrary value. */
+ const wchar_t *srcend = *src + __wcslen (*src) + 1;
+- const wchar_t *inbuf = *src;
++ const unsigned char *inbuf = (const unsigned char *) *src;
+ size_t dummy;
+
+ temp_state = *data.__statep;
+@@ -80,7 +80,7 @@
+ data.__outbuf = buf;
+
+ status = DL_CALL_FCT (tomb->__fct,
+- (tomb, &data, (const unsigned char **) &inbuf,
++ (tomb, &data, &inbuf,
+ (const unsigned char *) srcend, NULL,
+ &dummy, 0, 1));
+
+--- glibc-2.3.2/wcsmbs/wctob.c 2002-09-02 15:45:55.000000000 -0400
++++ glibc-2.3.2/wcsmbs/wctob.c 2003-08-21 08:37:19.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
++/* Copyright (C) 1996-2000, 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
+
+@@ -58,11 +58,10 @@
+ /* Create the input string. */
+ inbuf[0] = c;
+
++ const unsigned char *argptr = (const unsigned char *) inptr;
+ status = DL_CALL_FCT (fcts->tomb->__fct,
+- (fcts->tomb, &data,
+- (const unsigned char **) &inptr,
+- (const unsigned char *) &inbuf[1],
+- NULL, &dummy, 0, 1));
++ (fcts->tomb, &data, &argptr,
++ argptr + sizeof (inbuf[0]), NULL, &dummy, 0, 1));
+
+ /* The conversion failed or the output is too long. */
+ if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
+--- glibc-2.3.2/wctype/wchar-lookup.h 2001-07-07 15:21:39.000000000 -0400
++++ glibc-2.3.2/wctype/wchar-lookup.h 2003-08-21 08:37:19.000000000 -0400
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2000 Free Software Foundation, Inc.
++/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
+
+@@ -49,6 +49,7 @@
+ */
+
+ static __inline int
++__attribute ((always_inline))
+ wctype_table_lookup (const char *table, uint32_t wc)
+ {
+ uint32_t shift1 = ((const uint32_t *) table)[0];
+@@ -80,6 +81,7 @@
+ unit is a single byte, and no 5 bits are used as a word index. */
+
+ static __inline int
++__attribute ((always_inline))
+ wcwidth_table_lookup (const char *table, uint32_t wc)
+ {
+ uint32_t shift1 = ((const uint32_t *) table)[0];
+@@ -113,6 +115,7 @@
+ bits are used as a word index. */
+
+ static __inline uint32_t
++__attribute ((always_inline))
+ wctrans_table_lookup (const char *table, uint32_t wc)
+ {
+ uint32_t shift1 = ((const uint32_t *) table)[0];