--- 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 "λ�ڻ�����ĩβ�IJ������ַ���ת������"
 
-#: 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 "����IJ���"
 
-#: 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>�IJ��������ǵ����ַ�"
 
-#: 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���ֽ����еĵ�һ�������һ���ַ��ij̶ȱ�����ͬ"
+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���ֽ����еĵ�һ�������һ���ַ��ij̶ȱ�����ͬ"
 
-#: 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����û����ȷ�ij������ʽ��%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 "��Χ����ʼ����ֹ�ַ����б��������ͬ�ij���"
+
+#: 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����û����ȷ�ij������ʽ��%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����ֵ�ij��ȴ���"
 
-#: 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����ֵ�ij��ȴ���"
+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���IJ��������ǵ����ַ�"
 
-#: 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 "�������IJ���"
 
-#: 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 "���IJ���"
 
-#: 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 "��֧�ֵIJ���"
 
-#: 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 "�������ӵIJ�������"
 
 #. 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 "�Ժ�̨���̵IJ��ʵ�����"
+
+#. 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 "�Ժ�̨���̵IJ��ʵ�����"
+#: 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 "���IJ���"
+#: 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 "��Ч�ij������ʽ"
+#: 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 "����˵㲻֧�ֵIJ���"
 
-#: 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 "�������IJ���"
+#: 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 "��֧�ֵIJ���"
+#: 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 "����˵㲻֧�ֵIJ���"
+#: 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 "��Ч�ij������ʽ"
 
-#: 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 "�������ӵIJ�������"
+#: 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 "δ֪�IJ���ϵͳ"
+#: 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>�IJ��������ǵ����ַ�"
+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���IJ��������ǵ����ַ�"
+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 "����IJ���"
+#: 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 "��δע��ij��� %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 "δ֪�IJ���ϵͳ"
+
+#: 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 "��Χ����ʼ����ֹ�ַ����б��������ͬ�ij���"
+#: 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];