--- 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 (®ex, "xyabez", 6, "", 0, 1, 9, NULL, 10); + match[0] = re_search_2 (®ex, "xyabez", 6, "", 0, 1, 5, NULL, 6); match[1] = re_search_2 (®ex, NULL, 0, "abc", 3, 0, 3, NULL, 3); - match[2] = re_search_2 (®ex, "xya", 3, "bd", 2, 2, 6, NULL, 8); + match[2] = re_search_2 (®ex, "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), ®s[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), ®s[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, ®s[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, ®); 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, ®); + 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, ®); + 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, ®); fs->regs.reg[reg].how = REG_UNSAVED; break; case DW_CFA_undefined: case DW_CFA_same_value: + insn_ptr = read_uleb128 (insn_ptr, ®); + 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, ®); + insn_ptr = read_uleb128 (insn_ptr, ®2); 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, ®); 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, ®); + 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, ®); + 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 = ¶m->requestlist[cnt]->waiting; + while (*listp != NULL && *listp != ¶m->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];